[bibutils] 01/01: Importing bibutils_5.0.orig.tar.gz

David Bremner bremner at debian.org
Sun Aug 11 12:36:26 UTC 2013


This is an automated email from the git hooks/post-receive script.

bremner pushed a commit to annotated tag upstream/5.0
in repository bibutils.

commit f4a3f01204f6431cec51a1c3497183c11f2db011
Author: David Bremner <bremner at debian.org>
Date:   Sat Aug 10 14:16:00 2013 +0200

    Importing bibutils_5.0.orig.tar.gz
---
 ChangeLog             |  200 +-
 Makefile              |   46 -
 Makefile_start        |   94 +-
 bibutils.dbk          |   90 +-
 bin/Makefile          |   97 -
 bin/Makefile.dynamic  |   16 +-
 bin/Makefile.static   |   22 +-
 bin/args.c            |   68 +-
 bin/args.h            |   15 +-
 bin/bib2xml.c         |    4 +-
 bin/biblatex2xml.c    |    4 +-
 bin/bibprog.c         |    4 +-
 bin/bibprog.h         |    4 +-
 bin/copac2xml.c       |    4 +-
 bin/ebi2xml.c         |    4 +-
 bin/end2xml.c         |    4 +-
 bin/endx2xml.c        |    4 +-
 bin/isi2xml.c         |    4 +-
 bin/med2xml.c         |    4 +-
 bin/modsclean.c       |    4 +
 bin/ris2xml.c         |    4 +-
 bin/tomods.c          |   25 +-
 bin/tomods.h          |   13 +-
 bin/wordbib2xml.c     |    4 +-
 bin/xml2ads.c         |   20 +-
 bin/xml2bib.c         |   40 +-
 bin/xml2end.c         |   15 +-
 bin/xml2isi.c         |   16 +-
 bin/xml2ris.c         |   16 +-
 bin/xml2wordbib.c     |   19 +-
 configure             |  452 +-
 lib/Makefile          |   47 -
 lib/Makefile.dynamic  |   86 +-
 lib/Makefile.static   |   82 +-
 lib/adsout.c          |  346 +-
 lib/adsout.h          |    6 +-
 lib/adsout_journals.c |  556 +-
 lib/bibcore.c         |  499 +-
 lib/bibl.c            |   63 +-
 lib/bibl.h            |    8 +-
 lib/biblatexin.c      |  771 +-
 lib/biblatexin.h      |    6 +-
 lib/bibtexin.c        |  667 +-
 lib/bibtexin.h        |    6 +-
 lib/bibtexout.c       |  109 +-
 lib/bibtexout.h       |    4 +-
 lib/bibtextypes.c     |  338 +-
 lib/bibutils.c        |    4 +-
 lib/bibutils.h        |   17 +-
 lib/bltypes.c         | 1174 +-
 lib/charsets.c        |55440 ++++++++++++++++++++++++++++++-------------------
 lib/charsets.h        |   28 +-
 lib/copacin.c         |  173 +-
 lib/copacin.h         |    6 +-
 lib/copactypes.c      |    5 +-
 lib/doi.c             |   68 +-
 lib/doi.h             |    5 +-
 lib/ebiin.c           |   14 +-
 lib/ebiin.h           |    5 +-
 lib/endin.c           |  178 +-
 lib/endin.h           |    6 +-
 lib/endout.c          |  310 +-
 lib/endout.h          |    4 +-
 lib/endtypes.c        |   37 +-
 lib/endxmlin.c        |   69 +-
 lib/endxmlin.h        |    4 +-
 lib/entities.c        |   27 +-
 lib/entities.h        |    6 +-
 lib/entities.txt      |  461 -
 lib/fields.c          |  620 +-
 lib/fields.h          |   76 +-
 lib/gb18030.h         |    4 +-
 lib/intlist.c         |  250 +
 lib/intlist.h         |   40 +
 lib/is_ws.c           |    4 +-
 lib/is_ws.h           |    4 +-
 lib/isiin.c           |  108 +-
 lib/isiin.h           |    6 +-
 lib/isiout.c          |  339 +-
 lib/isiout.h          |    4 +-
 lib/isitypes.c        |   31 +-
 lib/iso639_2.c        |  645 +
 lib/iso639_2.h        |   10 +
 lib/latex.c           |  259 +-
 lib/latex.h           |    4 +-
 lib/list.c            |  362 +-
 lib/list.h            |   59 +-
 lib/marc.c            |    8 +
 lib/marc.h            |    4 +-
 lib/medin.c           |   38 +-
 lib/medin.h           |    5 +-
 lib/modsin.c          |  214 +-
 lib/modsin.h          |    5 +-
 lib/modsout.c         |  670 +-
 lib/modsout.h         |    4 +-
 lib/modstypes.c       |    8 +
 lib/modstypes.h       |    4 +-
 lib/mycvout.c         |   10 +-
 lib/name.c            |  686 +-
 lib/name.h            |   15 +-
 lib/newstr.c          |  298 +-
 lib/newstr.h          |   31 +-
 lib/newstr_conv.c     |   82 +-
 lib/newstr_conv.h     |   15 +-
 lib/reftypes.c        |   20 +-
 lib/reftypes.h        |   51 +-
 lib/risin.c           |  204 +-
 lib/risin.h           |    6 +-
 lib/risout.c          |  515 +-
 lib/risout.h          |    4 +-
 lib/ristypes.c        | 2341 ++-
 lib/rules.h           |   49 -
 lib/serialno.c        |   12 +-
 lib/serialno.h        |    6 +-
 lib/strsearch.c       |    8 +-
 lib/strsearch.h       |    5 +-
 lib/title.c           |   30 +-
 lib/title.h           |    6 +-
 lib/tmp1              |   17 -
 lib/unicode.c         |  333 +
 lib/unicode.h         |   22 +
 lib/utf8.c            |   16 +-
 lib/utf8.h            |    6 +-
 lib/vplist.c          |  216 +
 lib/vplist.h          |   68 +
 lib/wordin.c          |  356 +-
 lib/wordin.h          |    5 +-
 lib/wordout.c         |  223 +-
 lib/wordout.h         |    4 +-
 lib/xml.c             |    4 +-
 lib/xml.h             |    4 +-
 lib/xml_encoding.c    |   13 +-
 lib/xml_encoding.h    |    4 +-
 makedeb.csh           |   91 -
 makedeb.sh            |  105 +
 maketgz.csh           |   27 -
 maketgz.sh            |   28 +
 readme.txt            |    2 +-
 test/Makefile         |   25 +-
 test/Makefile.dynamic |   40 +
 test/Makefile.static  |   35 +
 test/entities_test.o  |  Bin 0 -> 4528 bytes
 todos.txt             |    4 -
 143 files changed, 45850 insertions(+), 26928 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index 2dad0fe..9d62c3a 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,6 +1,200 @@
 
 BIBUTILS
 
+5.0
+05/27/13
+
+USER VISIBLE CHANGES
++ Make default character set unicode
++ Enable -o --output-encoding for the xxx2xml converters
+
+BUILD
++ Ensure binary directory target exists (reported by Thomas Fischer)
++ Tell cp to preserve symbolic links when copying dynamic library (reported by Thomas Fischer)
++ Remove bashisms from sh script (reported by JeffH)
+
+BIBLATEXIN
++ Handle 'shorttitle' tag (reported by Nick Bart)
++ Make asis/corp file work again (reported by JeffH)
++ Map 'pubstate' tag to note type="publication status" similar to http://ufdc.ufl.edu/help/pubstatus (suggested by Nick Bart)
++ Handle 'series' tag in @report (reported by Nick Bart)
++ Map 'series' in @article to partName of journal title (reported by Nick Bart)
++ Write 'annotation' as special type of note (reported by Nick Bart)
+
+BIBTEXIN
++ Make asis/corp file work again (reported by JeffH)
+
+RISOUT
++ Ensure that BT fields are written for conference publications (reported by Matthias Stevens)
++ Ensure that ED fields are used for editors of conference publications (reported by Matthias Stevens)
+
+MODS
++ Fix inappropriate "language" tags under languageOfCataloging (reported by Nick Bart)
+
+NAME MANGLING
++ Improve handling of prefixes to given names, e.g. "van der" in "van der Sande"
+
+4.17
+01/24/13
+
+BUILD
++ Large changes to build process; more changes for MINGW32/Cygwin
++ Remove attempt to build powerpc-supporting binaries for MacOSX
+
+GLOBAL
++ Attempt to include iso639-2b codes for languages when possible
++ Make output consistent with MODS version 3.4 by adding language/languageTerm (reported by Nick Bart)
++ Fix accidental duplication of roles in MODS output (reported by Nick Bart)
+
+BIBLATEXIN
++ Map 'hyphenation' to recordInfo/languageOfCataloging (reported by Nick Bart)
++ Map biblatex 'version' to edition (reported by Nick Bart)
++ Fix series fields in @inbook (reported by Nick Bart)
++ Fix issues with @periodical (reported by Nick Bart)
++ Handle entrysubtypes for @article (reported by Nick Bart)
++ Handle origdate (reported by Nick Bart)
++ Fix corporate editors (reported by Nick Bart)
++ Process report 'isrn' field (reported by Nick Bart)
+
+MEDIN
++ Handle iso639-2b language input and output as full language name
+
+4.16
+01/09/13
+
+BUILD
++ Add version to GPL for Fedora/Redhat
++ Add recognition of x86_64 MacOSX as Intel Macintoshes to configure
++ Add recognition of OpenBSD to configure
++ Add recognition of MINGW32 architecture to configure
++ Remove explicit use of 'make' in Makefiles and use $(MAKE) instead
++ Switch to sh version of configure script (thanks to Adrian Devries)
++ Switch to sh version of maketgz script (thanks to Adrian Devries)
++ Switch to sh version of makedeb script
+
+GLOBAL
++ Improve propagation of memory errors in libraries to calling programs
++ Update help messages
++ Rewrite name parsing/mangling code
++ Do cast for ctype.h functions to handle MINGW32 architecture (reported by Adrian Devries)
+
+ADSOUT
++ Fix bug where partial matches for journal titles identified journals
++ Add Windows-specific format string for MINGW32 architecture (reported by Adrian Devries)
++ Update list of journal abbreviations
+
+BIBTEXIN
++ Fix bug where spaces following an escaped quotation mark (as with the -nl, no latex, flag) are lost (reported by Raoul Blankertz)
++ Fix bug where pages had to be completely numeric (reported by Nick Bart)
++ Import series information for @Techreport
++ Rewrite name parsing
++ Improve recognition of urls put in inappropriate fields
++ Improve handling of tilde/sticky space
++ Add latex recognition of alternative ways to express the (Polish) capital and lowercase slashed L
++ Improve recognition of URL identifiers in note fields
++ Map 'howpublished' to publisher (reported by Nick Bart)
+
+BIBLATEXIN
++ Add 'date' field to every reference type, regardless if it's in the reference documentation or not (reported by Nick Bart)
++ Fix bug where pages had to be completely numeric (reported by Nick Bart)
++ Add support for 'institution' and 'type' for report references (reported by Nick Bart)
++ Add strings support (reported by Nick Bart)
++ Handle editor types, including bibtex-chicago variants (reported by Nick Bart)
++ Map 'introduction', 'foreward', 'afterward' to "author of introduction/foreward/afterward" (reported by Nick Bart)
++ Ignore 'school' in biblatexin reference if 'institution' is available like biblatex(reported by Nick Bart)
++ Improve biblatex thesis type recognition
++ Rewrite name parsing
++ Improve handlning of tilde/sticky space
++ Map 'howpublished' to publisher (reported by Nick Bart)
++ Handle 'titleaddon' field (reported by Nick Bart)
++ Output number field differently for type report (reported by Nick Bart)
+
+BIBTEXOUT
++ Output series information for @Techreport
++ Output all keywords in single entry as semi-colon deliminated list
+
+COPACIN
++ Fix pre-name mangling that prevents recognition by asis/corporation lists
+
+ENDIN
++ Add better support for series information
+
+ENDOUT
++ Add better support for series information
+
+MODSIN
++ Add support for common MARC role codes (role abbreviations)
+
+RISIN
++ Add recognition of map type
++ Improve support for series information (reported by Mattheis Steffens)
+
+RISOUT
++ Add recognition of map type (reported by Mattheis Steffens)
++ Fix bug in date output (reported by Mattheis Steffens)
++ Improve support for series information (reported by Mattheis Steffens)
+
+4.15
+9/26/12
+
+BIBTEXIN
++ @article 'number' -> MODS 'issue'
++ @conference = @inproceedings
++ 'organization' -> publisher if publisher not available, otherwise output
+  as <name><namePart>xx</namePart><role><roleTerm>organizer of meeting</roleTerm></role></name>
+
+BIBLATEXIN
++ Add missing month parsing
+
+4.14
+9/04/12
+
+BIBTEXIN
++ Split individual keywords in the keywords field separated by semi-colons
+
+RISIN
++ Handle URL schemes from L1 and L4 fields (reported by Martin Kucej)
+
+RISOUT
++ PY outputs only year, DA outputs year/month/day combination (reported by Nelson Hart)
++ L1 and L4 fields need to be URL's (reported by Martin Kucej)
+
+WORD2007OUT
++ Replace b:PeriodicalName with b:PeriodicalTitle
+
+4.13
+8/28/12
+
+BUILD
++ Fix build problem with test subdirectory (patch by David Bremner)
++ Avoid hard-coded dynamic library to help out Debian (path by David Bremner)
++ Add patch to bibutils.dbk (patch by David Bremner)
+
+CHARSETS
++ Add more latex character <-> Unicode conversions
+
+FIELDS
++ Update internals, add vplist component, and convert to new interface
+
+BIBTEXIN
++ Fix chapter in @inbook, @inproceedings, and @incollection from overwriting
+  the title of the section being cited (reported by Brian Keese)
++ Cleanly handle "illegal" @inbook entries that have both "title" and "booktitle"
+  fields and really want to be @incollection entries (reported by Brian Keese)
++ Remove mbox commands from input
+
+RISIN
++ Add recognition of more RIS fields (reported by Nelson Hart)
+
+RISOUT
++ Use 'AB' instead of 'N2' tag for abstracts (reported by Nelson Hart)
++ Use 'DO' tag instead of building a complete URL for DOI's (reported by Nelson Hart)
++ Use 'ET' tag for edition output (reported by Nelson Hart)
++ Use 'LA' tag for language
++ Add recognition of non-official genres "book chapter" and "journal article"
+  (reported by Nelson Hart)
+
+
 4.12
 10/10/10
 
@@ -29,7 +223,7 @@ BUILD
 
 TEST
 + Fix some signedness issues (bit rot) in the test programs (from Mandriva
-  packager, Stéphane Téletchéa
+  packager, Stéphane Téletchéa)
 
 XML2BIB
 + Add command-line option  -at or --abbreviatedtitles to force xml2bib to
@@ -222,11 +416,11 @@ XML2BIB
 
 XML2END
 + Add export of DOI as %U http://dx.doi.org/.... Thanks to Mattheis
-  Stevens for the report
+  Steffens for the report
 
 XML2RIS
 + Add export of DOI as UR  - http://dx.doi.org/....  Thanks to Mattheis
-  Stevens for the report
+  Steffens for the report
 
 XML2WORD
 + Add support for more types of sources.
diff --git a/Makefile b/Makefile
deleted file mode 100644
index cb04b02..0000000
--- a/Makefile
+++ /dev/null
@@ -1,46 +0,0 @@
-POSTFIX="_amd64"
-CC = CC="cc -Wall"
-RANLIB=RANLIB="ranlib"
-INSTALLDIR=/usr/local/bin
-LIBINSTALLDIR=/usr/local/lib
-
-VERSION=4.12
-DATE=10/10/10
-
-PROGRAMS=bib2xml ris2xml end2xml endx2xml med2xml isi2xml copac2xml \
-	biblatex2xml ebi2xml wordbib2xml \
-	xml2ads xml2bib xml2end xml2isi xml2ris xml2wordbib modsclean
-
-all : FORCE
-	cd lib; make -k $(CC) -k $(RANLIB); cd ..
-	cd bin; make -k $(CC) -k VERSION="$(VERSION)" -k DATE="$(DATE)"; cd ..
-
-clean: FORCE
-	cd lib     ; make clean ; cd ..
-	cd bin     ; make clean ; cd ..
-	cd test    ; make clean ; cd ..
-
-realclean: FORCE
-	cd lib     ; make realclean ; cd ..
-	cd bin     ; make realclean ; cd ..
-	cd test    ; make realclean ; cd ..
-	rm -rf update lib/bibutils.pc
-
-test: all FORCE
-	cd lib    ; make test; cd ..
-	cd bin    ; make test; cd ..
-
-install: all FORCE
-	cd lib ; make -k LIBINSTALLDIR=$(LIBINSTALLDIR) install; cd ..
-	sed 's/VERSION/${VERSION}/g' packageconfig_start > lib/bibutils.pc
-	@for p in ${PROGRAMS}; \
-		do ( cp bin/$$p ${INSTALLDIR}/$$p ); \
-	done
-
-package: all FORCE
-	csh -f maketgz.csh ${VERSION} ${POSTFIX}
-
-deb: all FORCE
-	csh -f makedeb.csh ${VERSION} ${POSTFIX}
-
-FORCE:
diff --git a/Makefile_start b/Makefile_start
index 6af80f6..3aad1ab 100644
--- a/Makefile_start
+++ b/Makefile_start
@@ -1,46 +1,88 @@
-POSTFIX=REPLACE_POSTFIX
-CC = REPLACE_CC
-RANLIB=REPLACE_RANLIB
-INSTALLDIR=REPLACE_INSTALLDIR
-LIBINSTALLDIR=REPLACE_LIBINSTALLDIR
+CC            = REPLACE_CC
+EXEEXT        = REPLACE_EXEEXT
+LIBTARGET     = REPLACE_LIBTARGET
+LIBEXT        = REPLACE_LIBEXT
+CFLAGS        = REPLACE_CFLAGS
+CLIBFLAGS     = REPLACE_CLIBFLAGS
+RANLIB        = REPLACE_RANLIB
+POSTFIX       = REPLACE_POSTFIX
+INSTALLDIR    = REPLACE_INSTALLDIR
+LIBINSTALLDIR = REPLACE_LIBINSTALLDIR
 
-VERSION=4.12
-DATE=10/10/10
+MAJORVERSION  = 5
+MINORVERSION  = 0
+VERSION       = $(MAJORVERSION).$(MINORVERSION)
+DATE          = 2013-05-27
 
-PROGRAMS=bib2xml ris2xml end2xml endx2xml med2xml isi2xml copac2xml \
-	biblatex2xml ebi2xml wordbib2xml \
-	xml2ads xml2bib xml2end xml2isi xml2ris xml2wordbib modsclean
+PROGRAMS      = bib2xml \
+                biblatex2xml \
+                copac2xml \
+                ebi2xml \
+                end2xml \
+                endx2xml \
+                isi2xml \
+                med2xml \
+                ris2xml \
+                wordbib2xml \
+                xml2ads \
+                xml2bib \
+                xml2end \
+                xml2isi \
+                xml2ris \
+                xml2wordbib \
+                modsclean
 
 all : FORCE
-	cd lib; make -k $(CC) -k $(RANLIB); cd ..
-	cd bin; make -k $(CC) -k VERSION="$(VERSION)" -k DATE="$(DATE)"; cd ..
+	$(MAKE) -C lib -k \
+                CC=$(CC) \
+                CFLAGSIN="$(CLIBFLAGS) $(DISTRO_CFLAGS)"\
+                LIBTARGETIN=$(LIBTARGET) \
+                MAJORVERSION=$(MAJORVERSION) \
+                MINORVERSION=$(MINORVERSION) \
+                RANLIB=$(RANLIB)
+	$(MAKE) -C bin -k \
+                CC=$(CC) \
+                CFLAGSIN="$(CFLAGS) $(DISTRO_CFLAGS)"\
+                EXEEXT=$(EXEEXT) \
+                VERSION="$(VERSION)" \
+                DATE="$(DATE)" \
+                PROGSIN="$(PROGRAMS)"
 
 clean: FORCE
-	cd lib     ; make clean ; cd ..
-	cd bin     ; make clean ; cd ..
-	cd test    ; make clean ; cd ..
+	$(MAKE) -C lib clean
+	$(MAKE) -C bin clean
+	$(MAKE) -C test clean
 
 realclean: FORCE
-	cd lib     ; make realclean ; cd ..
-	cd bin     ; make realclean ; cd ..
-	cd test    ; make realclean ; cd ..
+	$(MAKE) -C lib realclean
+	$(MAKE) -C bin PROGSIN="$(PROGRAMS)" realclean
+	$(MAKE) -C test realclean
 	rm -rf update lib/bibutils.pc
 
 test: all FORCE
-	cd lib    ; make test; cd ..
-	cd bin    ; make test; cd ..
+	$(MAKE) -C lib
+	$(MAKE) -C bin test
+	$(MAKE) -C test \
+                CFLAGSIN="$(CFLAGS) $(DISTRO_CFLAGS)"\
+                test
 
 install: all FORCE
-	cd lib ; make -k LIBINSTALLDIR=$(LIBINSTALLDIR) install; cd ..
+	$(MAKE) -C lib \
+                MAJORVERSION=$(MAJORVERSION) \
+                MINORVERSION=$(MINORVERSION) \
+                LIBINSTALLDIR=$(LIBINSTALLDIR) \
+                install
+	$(MAKE) -C bin \
+                EXEEXT=$(EXEEXT) \
+                PROGSIN="$(PROGRAMS)" \
+                INSTALLDIR=$(INSTALLDIR) \
+                install
 	sed 's/VERSION/${VERSION}/g' packageconfig_start > lib/bibutils.pc
-	@for p in ${PROGRAMS}; \
-		do ( cp bin/$$p ${INSTALLDIR}/$$p ); \
-	done
 
 package: all FORCE
-	csh -f maketgz.csh ${VERSION} ${POSTFIX}
+	sh -f maketgz.sh $(VERSION) $(POSTFIX) $(LIBTARGET) $(EXEEXT)
 
 deb: all FORCE
-	csh -f makedeb.csh ${VERSION} ${POSTFIX}
+	sh -f makedeb.sh $(VERSION) $(POSTFIX)
 
 FORCE:
diff --git a/bibutils.dbk b/bibutils.dbk
index 3c3ea89..5a0c224 100644
--- a/bibutils.dbk
+++ b/bibutils.dbk
@@ -6,11 +6,11 @@
   <!ENTITY dhfirstname "<firstname>David</firstname>">
   <!ENTITY dhsurname   "<surname>Bremner</surname>">
   <!-- Please adjust the date whenever revising the manpage. -->
-  <!ENTITY dhdate      "<date>February 10, 2008</date>">
+  <!ENTITY dhdate      "<date>December 10, 2010</date>">
   <!-- SECTION should be 1-8, maybe w/ subsection other parameters are
        allowed: see man(7), man(1). -->
   <!ENTITY dhsection   "<manvolnum>1</manvolnum>">
-  <!ENTITY dhemail     "<email>bremner at unb.ca</email>">
+  <!ENTITY dhemail     "<email>bremner at debian.org</email>">
   <!ENTITY dhusername  "David Bremner">
   <!ENTITY dhucpackage "<refentrytitle>BIBUTILS</refentrytitle>">
   <!ENTITY dhpackage   "bibutils">
@@ -18,14 +18,14 @@
   <!ENTITY debian      "<productname>Debian</productname>">
   <!ENTITY gnu         "<acronym>GNU</acronym>">
   <!ENTITY gpl         "&gnu; <acronym>GPL</acronym>">
-  <!ENTITY version	"3.40">
+  <!ENTITY version	"5.0">
 
   ]>
 <refentry>
   <refentryinfo>
     <address>&dhemail;</address>
     <copyright>
-      <year>2008</year>
+      <year>2010</year>
       <holder>&dhusername; (Manual)</holder>
     </copyright>
     <copyright>
@@ -109,6 +109,12 @@
       </seglistitem>
       <seglistitem>
         <seg>
+          <xref linkend="biblatex2xml" />
+        </seg>
+        <seg>convert biblatex to MODS</seg>
+      </seglistitem>
+      <seglistitem>
+        <seg>
           <xref linkend="copac2xml" />
         </seg>
         <seg>convert 
@@ -116,6 +122,12 @@
         references to MODS</seg>
       </seglistitem>
       <seglistitem>
+       <seg>
+         <xref linkend="ebi2xml" />
+       </seg>
+       <seg>convert EBI XML to MODS</seg>
+      </seglistitem>
+      <seglistitem>
         <seg>
           <xref linkend="end2xml" />
         </seg>
@@ -146,6 +158,12 @@
         </seg>
         <seg>convert RIS format to MODS</seg>
       </seglistitem>
+      <seglistitem>
+        <seg>
+          <xref linkend="wordbib2xml" />
+        </seg>
+        <seg>convert Word2007 bibliography XML to MODS</seg>
+      </seglistitem>
       </segmentedlist>
       </refsect2>
     <refsect2>
@@ -197,7 +215,29 @@
 	  as -u, but don't include a
 	  byte order mark 
 	</seg>
-    </seglistitem>
+      </seglistitem>
+      <seglistitem>
+        <seg>-x</seg>
+        <seg>--xml-entities</seg>
+        <seg>
+          encode unicode characters as XML entities (opposite of -u)
+        </seg>
+      </seglistitem>
+      <seglistitem>
+        <seg>-nl</seg>
+        <seg>--no-latex</seg>
+        <seg>
+          do not convert latex-style character combinations
+        </seg>
+      </seglistitem>
+      <seglistitem>
+        <seg>-s</seg>
+        <seg>--single-refperfile</seg>
+        <seg>
+          one reference per output file
+        </seg>
+      </seglistitem>
+
     <seglistitem>
       <seg>-d</seg>
       <seg>--drop-key</seg><seg> don't put citation key in the
@@ -213,6 +253,18 @@
       </seg>
     </seglistitem>
     <seglistitem>
+      <seg>-a</seg>
+      <seg>--asis</seg><seg> with argument specifying a
+        file containing a list of names to be treated verbatim
+      </seg>
+    </seglistitem>
+    <seglistitem>
+      <seg>-nt</seg>
+      <seg>--nosplit-title</seg><seg>
+      don't split titles into TITLE/SUBTITLE pairs
+      </seg>
+    </seglistitem>
+    <seglistitem>
       <seg></seg><seg>--verbose</seg>
       <seg> verbose	output </seg>
     </seglistitem>
@@ -235,6 +287,15 @@
       standard input.</para>
       <programlisting>bib2xml bibtex_file.bib > output_file.xml</programlisting>
     </refsect2>
+    <refsect2 id="biblatex2xml" xreflabel="biblatex2xml">
+      <title>biblatex2xml</title>
+      <para>
+      <emphasis role="bold">biblatex2xml</emphasis> converts a biblatex
+      (not to be confused with bibtex) formatted reference file to an
+      MODS XML-intermediate bibliography file.
+      </para>
+      <programlisting>biblatex2xml biblatex_file.bib > outputfile.xml</programlisting>
+    </refsect2>
     <refsect2 id="copac2xml" xreflabel="copac2xml">
       <title>copac2xml</title>
       <para>
@@ -260,6 +321,12 @@
       <emphasis role="bold">bib2xml</emphasis>.</para>
       <programlisting>end2xml endnote_file.end > output_file.xml</programlisting>
     </refsect2>
+    <refsect2 id="ebi2xml" xreflabel="ebi2xml">
+      <title>ebi2xml</title>
+      <para>
+      <emphasis role="bold">ebi2xml</emphasis> converts a EBI XML
+      file to a MODS XML-intermediate bibliography file.</para>
+    </refsect2>
     <refsect2 id="endx2xml" xreflabel="endx2xml">
       <title>endx2xml</title>
       <para>
@@ -292,6 +359,13 @@
       <emphasis role="bold">bib2xml</emphasis></para>
       <programlisting>ris2xml ris_file.ris >	output_file.xml</programlisting>
     </refsect2>
+    <refsect2 id="wordbib2xml" xreflabel="wordbib2xml">
+      <title>wordbib2xml</title>
+      <para>
+      <emphasis role="bold">wordbib2xml</emphasis> convert a 
+      Word2007-formatted reference file to an XML-intermediate
+      bibliogrpahy file.</para>
+    </refsect2>
     </refsect1>
     <refsect1>
       <title>Converting from MODS</title>
@@ -364,6 +438,10 @@
 	    put one reference per file
             name by the reference number</seg>
 	</seglistitem>
+        <seglistitem>
+           <seg>-nb</seg><seg>--no-bom</seg><seg>
+        do not write Byte Order Mark if writing UTF8</seg>
+        </seglistitem>
 	</segmentedlist>
       </refsect2>
     <refsect2 id="xml2bib" xreflabel="xml2bib">
@@ -615,7 +693,7 @@ enhancers",
 	change, then I'd like to see what you're adding or
 	fixing.)</para>
       <para>
-	<ulink url="http://www.scripps.edu/~cdputnam/" >
+	<ulink url="http://www.sourceforge.net/p/bibutils/home/Bibutils">
 	Chris Putnam, Ludwig Institute for Cancer Research
 	</ulink>
       </para>
diff --git a/bin/Makefile b/bin/Makefile
deleted file mode 100644
index e1a82c0..0000000
--- a/bin/Makefile
+++ /dev/null
@@ -1,97 +0,0 @@
-#
-# bibutils converters MAKEFILE
-#
-
-CFLAGS     = -I ../lib
-LIBDIR     = -L../lib
-
-TOMODS     = bibprog.o tomods.o args.o ../lib/modsout.o
-
-BIBTEXIN   = bib2xml.o ../lib/bibtexin.o ../lib/bibtextypes.o
-BIBLATEXIN = biblatex2xml.o ../lib/biblatexin.o ../lib/bltypes.o
-COPACIN    = copac2xml.o ../lib/copacin.o ../lib/copactypes.o
-EBIIN      = ebi2xml.o ../lib/ebiin.o
-ENDIN      = end2xml.o ../lib/endin.o ../lib/endtypes.o
-ENDXIN     = endx2xml.o ../lib/endxmlin.o ../lib/endin.o ../lib/endtypes.o
-ISIIN      = isi2xml.o ../lib/isiin.o ../lib/isitypes.o
-MEDIN      = med2xml.o ../lib/medin.o
-MODSCLEAN  = modsclean.o ../lib/modsin.o
-RISIN      = ris2xml.o ../lib/risin.o ../lib/ristypes.o
-WORDIN     = wordbib2xml.o ../lib/wordin.o
-
-FROMMODS   = bibprog.o args.o ../lib/modsin.o
-
-ADSOUT     = xml2ads.o ../lib/adsout.o
-BIBTEXOUT  = xml2bib.o ../lib/bibtexout.o
-ENDOUT     = xml2end.o ../lib/endout.o
-ISIOUT     = xml2isi.o ../lib/isiout.o
-RISOUT     = xml2ris.o ../lib/risout.o
-WORDOUT    = xml2wordbib.o ../lib/wordout.o
-
-PROGS      = bib2xml biblatex2xml copac2xml end2xml endx2xml isi2xml med2xml \
-             ris2xml ebi2xml wordbib2xml \
-             xml2ads xml2bib xml2end xml2isi xml2ris xml2wordbib modsclean
-
-all: $(PROGS)
-
-args.o : args.c
-	$(CC) $^ -DCURR_VERSION="\"$(VERSION)\"" -DCURR_DATE="\"$(DATE)\"" $(CFLAGS) -c -o $@
-
-bib2xml : $(TOMODS) $(BIBTEXIN) ../lib/libbibcore.a
-	$(CC) $(LDFLAGS) $^ $(LOADLIBES) $(LDLIBS) -o $@
-
-biblatex2xml : $(TOMODS) $(BIBLATEXIN) ../lib/libbibcore.a
-	$(CC) $(LDFLAGS) $^ $(LOADLIBES) $(LDLIBS) -o $@
-
-copac2xml : $(TOMODS) $(COPACIN) ../lib/libbibcore.a
-	$(CC) $(LDFLAGS) $^ $(LOADLIBES) $(LDLIBS) -o $@
-
-ebi2xml : $(TOMODS) $(EBIIN) ../lib/libbibcore.a
-	$(CC) $(LDFLAGS) $^ $(LOADLIBES) $(LDLIBS) -o $@
-
-end2xml : $(TOMODS) $(ENDIN) ../lib/libbibcore.a
-	$(CC) $(LDFLAGS) $^ $(LOADLIBES) $(LDLIBS) -o $@
-
-endx2xml : $(TOMODS) $(ENDXIN) ../lib/libbibcore.a
-	$(CC) $(LDFLAGS) $^ $(LOADLIBES) $(LDLIBS) -o $@
-
-isi2xml : $(TOMODS) $(ISIIN) ../lib/libbibcore.a
-	$(CC) $(LDFLAGS) $^ $(LOADLIBES) $(LDLIBS) -o $@
-
-med2xml : $(TOMODS) $(MEDIN) ../lib/libbibcore.a
-	$(CC) $(LDFLAGS) $^ $(LOADLIBES) $(LDLIBS) -o $@
-
-ris2xml : $(TOMODS) $(RISIN) ../lib/libbibcore.a
-	$(CC) $(LDFLAGS) $^ $(LOADLIBES) $(LDLIBS) -o $@
-
-wordbib2xml : $(TOMODS) $(WORDIN) ../lib/libbibcore.a
-	$(CC) $(LDFLAGS) $^ $(LOADLIBES) $(LDLIBS) -o $@
-
-xml2ads : $(FROMMODS) $(ADSOUT) ../lib/libbibcore.a
-	$(CC) $(LDFLAGS) $^ $(LOADLIBES) $(LDLIBS) -o $@
-
-xml2bib : $(FROMMODS) $(BIBTEXOUT) ../lib/libbibcore.a
-	$(CC) $(LDFLAGS) $^ $(LOADLIBES) $(LDLIBS) -o $@
-
-xml2end : $(FROMMODS) $(ENDOUT) ../lib/libbibcore.a
-	$(CC) $(LDFLAGS) $^ $(LOADLIBES) $(LDLIBS) -o $@
-
-xml2isi : $(FROMMODS) $(ISIOUT) ../lib/libbibcore.a
-	$(CC) $(LDFLAGS) $^ $(LOADLIBES) $(LDLIBS) -o $@
-
-xml2ris : $(FROMMODS) $(RISOUT) ../lib/libbibcore.a
-	$(CC) $(LDFLAGS) $^ $(LOADLIBES) $(LDLIBS) -o $@
-
-xml2wordbib : $(FROMMODS) $(WORDOUT) ../lib/libbibcore.a
-	$(CC) $(LDFLAGS) $^ $(LOADLIBES) $(LDLIBS) -o $@
-
-modsclean : $(TOMODS) $(MODSCLEAN) ../lib/libbibcore.a
-	$(CC) $(LDFLAGS) $^ $(LOADLIBES) $(LDLIBS) -o $@
-
-test:
-
-clean:
-	rm -f *.o core 
-
-realclean:
-	rm -f *.o core $(PROGS)
diff --git a/bin/Makefile.dynamic b/bin/Makefile.dynamic
index aab21b0..c38fdcf 100644
--- a/bin/Makefile.dynamic
+++ b/bin/Makefile.dynamic
@@ -4,7 +4,7 @@
 # dynamic linkage version
 #
 
-CFLAGS     = -I ../lib
+CFLAGS     = -I ../lib $(CFLAGSIN)
 LDFLAGS    = -L ../lib
 LDLIBS     = -lbibutils
 
@@ -93,8 +93,18 @@ modsclean : $(TOMODS) $(MODSCLEAN)
 
 test:
 
+install:
+	mkdir -p $(INSTALLDIR)
+	@for p in $(PROGS); \
+		do ( cp $$p$(EXEEXT) $(INSTALLDIR)/ ); \
+	done
+
 clean:
-	rm -f *.o core 
+	rm -f *.o core
 
 realclean:
-	rm -f *.o core $(PROGS)
+	rm -f *.o core
+	@for p in $(PROGS); \
+		do ( rm -f $$p$(EXEEXT) ); \
+	done
+
diff --git a/bin/Makefile.static b/bin/Makefile.static
index e1a82c0..3be44ac 100644
--- a/bin/Makefile.static
+++ b/bin/Makefile.static
@@ -2,10 +2,9 @@
 # bibutils converters MAKEFILE
 #
 
-CFLAGS     = -I ../lib
-LIBDIR     = -L../lib
+CFLAGS     = -I ../lib $(CFLAGSIN)
 
-TOMODS     = bibprog.o tomods.o args.o ../lib/modsout.o
+TOMODS     = args.o bibprog.o tomods.o ../lib/modsout.o
 
 BIBTEXIN   = bib2xml.o ../lib/bibtexin.o ../lib/bibtextypes.o
 BIBLATEXIN = biblatex2xml.o ../lib/biblatexin.o ../lib/bltypes.o
@@ -28,14 +27,12 @@ ISIOUT     = xml2isi.o ../lib/isiout.o
 RISOUT     = xml2ris.o ../lib/risout.o
 WORDOUT    = xml2wordbib.o ../lib/wordout.o
 
-PROGS      = bib2xml biblatex2xml copac2xml end2xml endx2xml isi2xml med2xml \
-             ris2xml ebi2xml wordbib2xml \
-             xml2ads xml2bib xml2end xml2isi xml2ris xml2wordbib modsclean
+PROGS      = $(PROGSIN)
 
 all: $(PROGS)
 
 args.o : args.c
-	$(CC) $^ -DCURR_VERSION="\"$(VERSION)\"" -DCURR_DATE="\"$(DATE)\"" $(CFLAGS) -c -o $@
+	$(CC) $(CFLAGS) -DCURR_VERSION="\"$(VERSION)\"" -DCURR_DATE="\"$(DATE)\"" -c -o $@ $^
 
 bib2xml : $(TOMODS) $(BIBTEXIN) ../lib/libbibcore.a
 	$(CC) $(LDFLAGS) $^ $(LOADLIBES) $(LDLIBS) -o $@
@@ -90,8 +87,17 @@ modsclean : $(TOMODS) $(MODSCLEAN) ../lib/libbibcore.a
 
 test:
 
+install:
+	mkdir -p $(INSTALLDIR)
+	@for p in $(PROGS); \
+                do ( cp $$p$(EXEEXT) $(INSTALLDIR)/ ); \
+        done
+
 clean:
 	rm -f *.o core 
 
 realclean:
-	rm -f *.o core $(PROGS)
+	rm -f *.o core
+	@for p in $(PROGS); \
+                do ( rm -f $$p$(EXEEXT) ); \
+        done
diff --git a/bin/args.c b/bin/args.c
index e21575a..99ed350 100644
--- a/bin/args.c
+++ b/bin/args.c
@@ -1,14 +1,14 @@
 /*
  * args.c
  *
- * Copyright (c) 2004-2010
+ * Copyright (c) 2004-2013
  *
- * Program and source code released under the GPL
+ * Source code released under the GPL version 2
  *
  */
 #include <stdio.h>
 #include <stdlib.h>
-#include "newstr_conv.h"
+#include "charsets.h"
 #include "bibutils.h"
 #include "args.h"
 
@@ -30,7 +30,25 @@ args_match( char *check, char *shortarg, char *longarg )
 	return 0;
 }
 
-void
+static int
+args_charset( char *charset_name, int *charset, unsigned char *utf8 )
+{
+	if ( !strcasecmp( charset_name, "unicode" ) || 
+	     !strcasecmp( charset_name, "utf8" ) ) {
+		*charset = BIBL_CHARSET_UNICODE;
+		*utf8 = 1;
+	} else if ( !strcasecmp( charset_name, "gb18030" ) ) {
+		*charset = BIBL_CHARSET_GB18030;
+		*utf8 = 0;
+	} else {
+		*charset = charset_find( charset_name );
+		*utf8 = 0;
+	}
+	if ( *charset == BIBL_CHARSET_UNKNOWN ) return 0;
+	else return 1;
+}
+
+static void
 args_encoding( int argc, char *argv[], int i, int *charset, 
 	unsigned char *utf8, char *progname, int inout )
 {
@@ -43,57 +61,45 @@ args_encoding( int argc, char *argv[], int i, int *charset,
 		fprintf( stderr, "UNICODE UTF-8: unicode OR utf8\n" );
 		fprintf( stderr, "CHINESE: gb18030\n" );
 		fprintf( stderr, "OTHERS:\n" );
-		list_charsets( stderr );
-		fprintf( stderr, "SPECIFY AS: -o CHARSETNAME\n" );
+		charset_list_all( stderr );
+		fprintf( stderr, "SPECIFY AS: -i CHARSETNAME or -o CHARSETNAME\n" );
 		exit( EXIT_FAILURE );
 	} else {
 		if ( !args_charset( argv[i+1], charset, utf8 ) ) {
 			fprintf( stderr, "%s: character encoding lookup "
 					"failed.\n", progname );
-			list_charsets( stderr );
+			charset_list_all( stderr );
 		}
 	}
 }
 
-int
-args_charset( char *charset_name, int *charset, unsigned char *utf8 )
-{
-	if ( !strcasecmp( charset_name, "unicode" ) || 
-	     !strcasecmp( charset_name, "utf8" ) ) {
-		*charset = BIBL_CHARSET_UNICODE;
-		*utf8 = 1;
-	} else if ( !strcasecmp( charset_name, "gb18030" ) ) {
-		*charset = BIBL_CHARSET_GB18030;
-		*utf8 = 0;
-	} else {
-		*charset = get_charset( charset_name );
-		*utf8 = 0;
-	}
-	if ( *charset == BIBL_CHARSET_UNKNOWN ) return 0;
-	else return 1;
-}
-
 /* Must process charset info first so switches are order independent */
 void
-process_charsets( int *argc, char *argv[], param *p,
-	int use_input, int use_output )
+process_charsets( int *argc, char *argv[], param *p )
 {
 	int i, j, subtract;
 	i = 1;
 	while ( i<*argc ) {
 		subtract = 0;
-		if ( use_input && args_match( argv[i], "-i", "--input-encoding" ) ) {
+		if ( args_match( argv[i], "-i", "--input-encoding" ) ) {
 			args_encoding( *argc, argv, i, &(p->charsetin), 
 					&(p->utf8in), p->progname, 0 );
+			if ( p->charsetin!=BIBL_CHARSET_UNICODE )
+				p->utf8in = 0;
 			p->charsetin_src = BIBL_SRC_USER;
 			subtract = 2;
-		} else if ( use_output && args_match( argv[i], "-o", "--output-encoding" ) ) {
+		} else if ( args_match( argv[i], "-o", "--output-encoding" ) ) {
 			args_encoding( *argc, argv, i, &(p->charsetout),
 					&(p->utf8out), p->progname, 1 );
-			if ( p->charsetout==BIBL_CHARSET_UNICODE )
+			if ( p->charsetout==BIBL_CHARSET_UNICODE ) {
+				p->utf8out = 1;
 				p->utf8bom = 1;
-			if ( p->charsetout==BIBL_CHARSET_GB18030 )
+			} else if ( p->charsetout==BIBL_CHARSET_GB18030 ) {
 				p->latexout = 0;
+			} else {
+				p->utf8out = 0;
+				p->utf8bom = 0;
+			}
 			p->charsetout_src = BIBL_SRC_USER;
 			subtract = 2;
 		}
diff --git a/bin/args.h b/bin/args.h
index 8a4f1bb..d887c98 100644
--- a/bin/args.h
+++ b/bin/args.h
@@ -1,13 +1,16 @@
+/*
+ * args.h
+ *
+ * Copyright (c) Chris Putnam 2012-2013
+ *
+ * Program and source code released under the GPL version 2
+ *
+ */
 #ifndef ARGS_H
 #define ARGS_H
 
 extern void args_tellversion( char *progname );
 extern int args_match( char *check, char *shortarg, char *longarg );
-extern void args_encoding( int argc, char *argv[], int i, int *charset,
-        unsigned char *utf8, char *progname, int inout );
-extern int args_charset( char *charset_name, int *charset, 
-	unsigned char *utf8 );
-extern void process_charsets( int *argc, char *argv[], param *p,
-	int use_input, int use_output );
+extern void process_charsets( int *argc, char *argv[], param *p );
 
 #endif
diff --git a/bin/bib2xml.c b/bin/bib2xml.c
index af0ba19..2eaf034 100644
--- a/bin/bib2xml.c
+++ b/bin/bib2xml.c
@@ -1,9 +1,9 @@
 /*
  * bib2xml.c
  *
- * Copyright (c) Chris Putnam 2003-2010
+ * Copyright (c) Chris Putnam 2003-2013
  *
- * Program and source code released under the GPL
+ * Program and source code released under the GPL version 2
  *
  */
 #include <stdio.h>
diff --git a/bin/biblatex2xml.c b/bin/biblatex2xml.c
index 5e31147..6747263 100644
--- a/bin/biblatex2xml.c
+++ b/bin/biblatex2xml.c
@@ -1,9 +1,9 @@
 /*
  * biblatex2xml.c
  *
- * Copyright (c) Chris Putnam 2003-2010
+ * Copyright (c) Chris Putnam 2003-2013
  *
- * Program and source code released under the GPL
+ * Program and source code released under the GPL version 2
  *
  */
 #include <stdio.h>
diff --git a/bin/bibprog.c b/bin/bibprog.c
index 4310f7b..d0c8489 100644
--- a/bin/bibprog.c
+++ b/bin/bibprog.c
@@ -1,9 +1,9 @@
 /*
  * bibprog.c
  *
- * Copyright (c) 2004-2010
+ * Copyright (c) Chris Putnam 2004-2013
  *
- * Program and source code released under the GPL
+ * Source code released under the GPL version 2
  *
  */
 #include <stdio.h>
diff --git a/bin/bibprog.h b/bin/bibprog.h
index 2b6037a..a5e8955 100644
--- a/bin/bibprog.h
+++ b/bin/bibprog.h
@@ -1,9 +1,9 @@
 /*
  * bibprogs.h
  *
- * Copyright (c) 2008
+ * Copyright (c) Chris Putnam 2008-2013
  *
- * Program and source code released under the GPL
+ * Program and source code released under the GPL version 2
  *
  */
 #ifndef BIBPROGS_H
diff --git a/bin/copac2xml.c b/bin/copac2xml.c
index 3da69cc..2157811 100644
--- a/bin/copac2xml.c
+++ b/bin/copac2xml.c
@@ -1,9 +1,9 @@
 /*
  * copac2xml.c
  *
- * Copyright (c) Chris Putnam 2004-2010
+ * Copyright (c) Chris Putnam 2004-2013
  *
- * Program and source code released under the GPL
+ * Program and source code released under the GPL version 2
  *
  */
 #include <stdio.h>
diff --git a/bin/ebi2xml.c b/bin/ebi2xml.c
index 4e831ed..ec9221e 100644
--- a/bin/ebi2xml.c
+++ b/bin/ebi2xml.c
@@ -1,9 +1,9 @@
 /*
  * ebi2xml.c
  * 
- * Copyright (c) Chris Putnam 2004-2010
+ * Copyright (c) Chris Putnam 2004-2013
  *
- * Source code and program released under the GPL
+ * Program and source code released under the GPL version 2
  *
  */
 #include <stdio.h>
diff --git a/bin/end2xml.c b/bin/end2xml.c
index 17de3a8..e143317 100644
--- a/bin/end2xml.c
+++ b/bin/end2xml.c
@@ -1,9 +1,9 @@
 /*
  * end2xml.c
  *
- * Copyright (c) Chris Putnam 2003-2010
+ * Copyright (c) Chris Putnam 2003-2013
  *
- * Program and source code released under the GPL
+ * Program and source code released under the GPL version 2
  *
  */
 #include <stdio.h>
diff --git a/bin/endx2xml.c b/bin/endx2xml.c
index 45f8334..7ad38f4 100644
--- a/bin/endx2xml.c
+++ b/bin/endx2xml.c
@@ -1,9 +1,9 @@
 /*
  * endx2xml.c
  * 
- * Copyright (c) Chris Putnam 2006-2010
+ * Copyright (c) Chris Putnam 2006-2013
  *
- * Source code and program released under the GPL
+ * Program and source code released under the GPL version 2
  *
  */
 #include <stdio.h>
diff --git a/bin/isi2xml.c b/bin/isi2xml.c
index 32637d1..f6423f4 100644
--- a/bin/isi2xml.c
+++ b/bin/isi2xml.c
@@ -1,9 +1,9 @@
 /*
  * isi2xml.c
  *
- * Copyright (c) Chris Putnam 2004-2010
+ * Copyright (c) Chris Putnam 2004-2013
  *
- * Program and source code released under the GPL
+ * Program and source code released under the GPL version 2
  *
  */
 #include <stdio.h>
diff --git a/bin/med2xml.c b/bin/med2xml.c
index f64e071..df1d9f1 100644
--- a/bin/med2xml.c
+++ b/bin/med2xml.c
@@ -1,9 +1,9 @@
 /*
  * med2xml.c
  * 
- * Copyright (c) Chris Putnam 2004-2010
+ * Copyright (c) Chris Putnam 2004-2013
  *
- * Source code and program released under the GPL
+ * Program and source code released under the GPL version 2
  *
  */
 #include <stdio.h>
diff --git a/bin/modsclean.c b/bin/modsclean.c
index 6596689..5866f08 100644
--- a/bin/modsclean.c
+++ b/bin/modsclean.c
@@ -1,6 +1,10 @@
 /*
  * modsclean.c
  *
+ * Copyright (c) Chris Putnam 2004-2013
+ *
+ * Program and source code released under the GPL version 2
+ *
  */
 #include <stdio.h>
 #include <stdlib.h>
diff --git a/bin/ris2xml.c b/bin/ris2xml.c
index c4268c7..cbcbe65 100644
--- a/bin/ris2xml.c
+++ b/bin/ris2xml.c
@@ -1,9 +1,9 @@
 /*
  * ris2xml.c
  *
- * Copyright (c) Chris Putnam 2003-2010
+ * Copyright (c) Chris Putnam 2003-2013
  *
- * Program and source code released under the GPL
+ * Program and source code released under the GPL version 2
  *
  */
 #include <stdio.h>
diff --git a/bin/tomods.c b/bin/tomods.c
index 690ec3c..53fafa8 100644
--- a/bin/tomods.c
+++ b/bin/tomods.c
@@ -1,9 +1,9 @@
 /*
  * tomods.c
  *
- * Copyright (c) 2004-2010
+ * Copyright (c) Chris Putnam 2004-2013
  *
- * Program and source code released under the GPL
+ * Source code released under the GPL version 2
  *
  */
 #include <stdio.h>
@@ -27,23 +27,24 @@ args_tomods_help( char *progname, char *help1, char *help2 )
         fprintf(stderr,"  %s can be replaced with file list or "
 			"omitted to use as a filter\n\n", help2 );
 
-	fprintf(stderr,"  -i, --input-encoding      map character encoding\n");
-	fprintf(stderr,"  -u, --unicode-characters  DEFAULT: directly write unicode (and not xml entities)\n");
-	fprintf(stderr,"  -x, --xml-characters      write xml entities and not direclty unicode\n");
+	fprintf(stderr,"  -h, --help                display this help\n");
+	fprintf(stderr,"  -v, --version             display version\n");
+	fprintf(stderr,"  -a, --add-refcount        add \"_#\", where # is reference count to reference\n");
+	fprintf(stderr,"  -s, --single-refperfile   one reference per output file\n");
+	fprintf(stderr,"  -i, --input-encoding      input character encoding\n");
+	fprintf(stderr,"  -o, --output-encoding     output character encoding\n");
+	fprintf(stderr,"  -u, --unicode-characters  DEFAULT: write unicode (not xml entities)\n");
 	fprintf(stderr,"  -un,--unicode-no-bom      as -u, but don't write byte order mark\n");
+	fprintf(stderr,"  -x, --xml-entities        write xml entities and not direclty unicode\n");
 	fprintf(stderr,"  -nl,--no-latex            do not convert latex-style character combinations\n");
-	fprintf(stderr,"  -s, --single-refperfile   one reference per output file\n");
 	fprintf(stderr,"  -d, --drop-key            don't put key in MODS ID field\n");
 	fprintf(stderr,"  -c, --corporation-file    specify file of corporation names\n");
-	fprintf(stderr,"  -a, --asis                specify file of names that shouldn't be mangled\n");
+	fprintf(stderr,"  -as, --asis               specify file of names that shouldn't be mangled\n");
 	fprintf(stderr,"  -nt, --nosplit-title      don't split titles into TITLE/SUBTITLE pairs\n");
-	fprintf(stderr,"  -h, --help                display this help\n");
-	fprintf(stderr,"  -v, --version             display version\n");
 	fprintf(stderr,"  --verbose                 report all warnings\n");
 	fprintf(stderr,"  --debug                   very verbose output\n\n");
 
-	fprintf(stderr,"http://www.scripps.edu/~cdputnam/software/bibutils "
-			"for more details\n\n");
+	fprintf(stderr,"http://sourceforge.net/p/bibutils/home/Bibutils for more details\n\n");
 }
 
 static void
@@ -62,7 +63,7 @@ tomods_processargs( int *argc, char *argv[], param *p,
 	char *help1, char *help2 )
 {
 	int i, j, subtract;
-	process_charsets( argc, argv, p, 1, 0 );
+	process_charsets( argc, argv, p );
 	i = 0;
 	while ( i<*argc ) {
 		subtract = 0;
diff --git a/bin/tomods.h b/bin/tomods.h
index 1a6b282..1ea458c 100644
--- a/bin/tomods.h
+++ b/bin/tomods.h
@@ -1,11 +1,14 @@
+/*
+ * tomods.h
+ *
+ * Copyright (c) Chris Putnam 2012-2013
+ *
+ * Source code released under the GPL version 2
+ *
+ */
 #ifndef TOMODS_H
 #define TOMODS_H
 
-#if 0
-extern void tomods( int argc, char *argv[], int readmode, int writemode,
-		char *progname, char *help1, char *help2 );
-#endif
-
 extern void tomods_processargs( int *argc, char *argv[], param *p,
         char *help1, char *help2 );
 
diff --git a/bin/wordbib2xml.c b/bin/wordbib2xml.c
index b77d476..8c69056 100644
--- a/bin/wordbib2xml.c
+++ b/bin/wordbib2xml.c
@@ -1,9 +1,9 @@
 /*
  * wordbib2xml.c
  * 
- * Copyright (c) Chris Putnam 2009-2010
+ * Copyright (c) Chris Putnam 2009-2013
  *
- * Source code and program released under the GPL
+ * Program and source code released under the GPL version 2
  *
  */
 #include <stdio.h>
diff --git a/bin/xml2ads.c b/bin/xml2ads.c
index 9cd4862..866a131 100644
--- a/bin/xml2ads.c
+++ b/bin/xml2ads.c
@@ -1,9 +1,9 @@
 /*
  * xml2ads.c
  *
- * Copyright (c) Chris Putnam 2007-2010
+ * Copyright (c) Chris Putnam 2007-2013
  *
- * Program and source code released under the GPL
+ * Program and source code released under the GPL version 2
  *
  */
 #include <stdio.h>
@@ -24,14 +24,14 @@ help( char *progname )
 
 	fprintf(stderr,"usage: %s xml_file > adsabs_file\n\n",progname);
         fprintf(stderr,"  xml_file can be replaced with file list or omitted to use as a filter\n\n");
-	fprintf(stderr,"  -nb, --no-bom  do not write Byte Order Mark in UTF8 output\n");
-	fprintf(stderr,"  -s, --single-refperfile one reference per output file\n");
-	fprintf(stderr,"  -h, --help     display this help\n");
-	fprintf(stderr,"  --verbose      for verbose output\n");
-	fprintf(stderr,"  --debug        for debug output\n");
-	fprintf(stderr,"  -v, --version  display version\n\n");
+	fprintf(stderr,"  -h, --help               display this help\n");
+	fprintf(stderr,"  -v, --version            display version\n");
+	fprintf(stderr,"  -nb, --no-bom            do not write Byte Order Mark in UTF8 output\n");
+	fprintf(stderr,"  -s, --single-refperfile  one reference per output file\n");
+	fprintf(stderr,"  --verbose                for verbose output\n");
+	fprintf(stderr,"  --debug                  for debug output\n");
 
-	fprintf(stderr,"http://www.scripps.edu/~cdputnam/software/bibutils for more details\n\n");
+	fprintf(stderr,"\nhttp://sourceforge.net/p/bibutils/home/Bibutils for more details\n\n");
 }
 
 void
@@ -77,7 +77,7 @@ main( int argc, char *argv[] )
 	param p;
 	modsin_initparams( &p, progname );
 	adsout_initparams( &p, progname );
-	process_charsets( &argc, argv, &p, 1, 1 );
+	process_charsets( &argc, argv, &p );
 	process_args( &argc, argv, &p );
 	bibprog( argc, argv, &p );
 	bibl_freeparams( &p );
diff --git a/bin/xml2bib.c b/bin/xml2bib.c
index 3bc4830..125d1d6 100644
--- a/bin/xml2bib.c
+++ b/bin/xml2bib.c
@@ -1,9 +1,9 @@
 /*
  * xml2bib.c
  *
- * Copyright (c) Chris Putnam 2003-2010
+ * Copyright (c) Chris Putnam 2003-2013
  *
- * Program and source code released under the GPL
+ * Program and source code released under the GPL version 2
  *
  */
 #include <stdio.h>
@@ -26,25 +26,29 @@ help( char *progname )
 	fprintf(stderr,"usage: %s xml_file > bibtex_file\n\n",progname);
         fprintf(stderr,"  xml_file can be replaced with file list or omitted to use as a filter\n\n");
 
-	fprintf(stderr,"  -h, --help         display this help\n");
-	fprintf(stderr,"  -v, --version      display version\n");
+	fprintf(stderr,"  -h,  --help               display this help\n");
+	fprintf(stderr,"  -v,  --version            display version\n");
 	fprintf(stderr,"  -at, --abbreviatedtitles  use abbreviated titles, if available\n");
-	fprintf(stderr,"  -fc, --finalcomma  add final comman to bibtex output\n");
-	fprintf(stderr,"  -sd, --singledash  use only one dash '-' instead of two '--' for page range\n" );
-	fprintf(stderr,"  -b, -brackets      use brackets, not quotation marks surrounding data\n");
-	fprintf(stderr,"  -w, --whitespace   use beautifying whitespace to output\n");
-	fprintf(stderr,"  -sk, --strictkey   use only alphanumeric characters for bibtex key\n");
-	fprintf(stderr,"                     (overly strict, but may be useful for other bibtex readers\n");
-	fprintf(stderr,"  -nl, --no-latex    do not use latex encodings, but put characters in directly\n");
-	fprintf(stderr,"  -nb, --no-bom      do not write Byte Order Mark in UTF8 output\n");
-	fprintf(stderr,"  -s, --single-refperfile\n");
-	fprintf(stderr,"                     one reference per output file\n");
-	fprintf(stderr,"  --verbose          for verbose\n" );
-	fprintf(stderr,"  --debug            for debug output\n" );
+	fprintf(stderr,"  -fc, --finalcomma         add final comman to bibtex output\n");
+	fprintf(stderr,"  -sd, --singledash         use one dash '-', not two '--', in page ranges\n" );
+	fprintf(stderr,"  -b,  --brackets           use brackets, not quotation marks surrounding data\n");
+	fprintf(stderr,"  -w,  --whitespace         use beautifying whitespace to output\n");
+	fprintf(stderr,"  -sk, --strictkey          use only alphanumeric characters for bibtex key\n");
+	fprintf(stderr,"                            (overly strict, but useful for other programs)\n");
+	fprintf(stderr,"  -nl, --no-latex           no latex encodings; put characters in directly\n");
+	fprintf(stderr,"  -nb, --no-bom             do not write Byte Order Mark in UTF8 output\n");
+	fprintf(stderr,"  -U,  --uppercase          write bibtex tags/types in upper case\n" );
+	fprintf(stderr,"  -s,  --single-refperfile  one reference per output file\n");
+	fprintf(stderr,"  -i, --input-encoding      interpret input file with requested character set\n" );
+	fprintf(stderr,"                            (use argument for current list)\n");
+	fprintf(stderr,"  -o, --output-encoding     write output file with requested character set\n" );
+	fprintf(stderr,"                            (use argument for current list)\n");
+	fprintf(stderr,"  --verbose                 for verbose\n" );
+	fprintf(stderr,"  --debug                   for debug output\n" );
 	fprintf(stderr,"\n");
 
 	fprintf(stderr,"Citation codes generated from <REFNUM> tag.   See \n");
-	fprintf(stderr,"http://www.scripps.edu/~cdputnam/software/bibutils for more details\n\n");
+	fprintf(stderr,"http://sourceforge.net/p/bibutils/home/Bibutils for more details\n\n");
 }
 
 void
@@ -117,7 +121,7 @@ main( int argc, char *argv[] )
 	param p;
 	modsin_initparams( &p, progname );
 	bibtexout_initparams( &p, progname );
-	process_charsets( &argc, argv, &p, 1, 1 );
+	process_charsets( &argc, argv, &p );
 	process_args( &argc, argv, &p );
 	bibprog( argc, argv, &p );
 	bibl_freeparams( &p );
diff --git a/bin/xml2end.c b/bin/xml2end.c
index a37bd7a..c95c3bf 100644
--- a/bin/xml2end.c
+++ b/bin/xml2end.c
@@ -1,9 +1,9 @@
 /*
  * xml2end.c
  *
- * Copyright (c) Chris Putnam 2004-2010
+ * Copyright (c) Chris Putnam 2004-2013
  *
- * Program and source code released under the GPL
+ * Program and source code released under the GPL version 2
  *
  */
 #include <stdio.h>
@@ -25,14 +25,17 @@ help( char *progname )
 	fprintf(stderr,"usage: %s xml_file > endnote_file\n\n",progname);
         fprintf(stderr,"  xml_file can be replaced with file list or omitted to use as a filter\n\n");
 
+	fprintf(stderr,"  -h, --help     display this help\n");
+	fprintf(stderr,"  -v, --version  display version\n\n");
 	fprintf(stderr,"  -nb, --no-bom   do not write Byte Order Mark in UTF8 output\n");
 	fprintf(stderr,"  -s, --single-refperfile one reference per output file\n");
-	fprintf(stderr,"  -h, --help     display this help\n");
+	fprintf(stderr,"  -i, --input-encoding interpret input file with requested character set (use\n" );
+	fprintf(stderr,"                       argument for current list)\n");
+	fprintf(stderr,"  -o, --output-encoding interprest output file with requested character set\n" );
 	fprintf(stderr,"  --verbose      for verbose output\n");
 	fprintf(stderr,"  --debug        for debug output\n");
-	fprintf(stderr,"  -v, --version  display version\n\n");
 
-	fprintf(stderr,"http://www.scripps.edu/~cdputnam/software/bibutils for more details\n\n");
+	fprintf(stderr,"http://sourceforge.net/p/bibutils/home/Bibutils for more details\n\n");
 }
 
 void
@@ -78,7 +81,7 @@ main( int argc, char *argv[] )
 	param p;
 	modsin_initparams( &p, progname );
 	endout_initparams( &p, progname );
-	process_charsets( &argc, argv, &p, 1, 1 );
+	process_charsets( &argc, argv, &p );
 	process_args( &argc, argv, &p );
 	bibprog( argc, argv, &p );
 	bibl_freeparams( &p );
diff --git a/bin/xml2isi.c b/bin/xml2isi.c
index 70fe97c..2a87754 100644
--- a/bin/xml2isi.c
+++ b/bin/xml2isi.c
@@ -1,9 +1,9 @@
 /*
  * xml2isi.c
  *
- * Copyright (c) Chris Putnam 2007-2010
+ * Copyright (c) Chris Putnam 2007-2013
  *
- * Program and source code released under the GPL
+ * Program and source code released under the GPL version 2
  *
  */
 #include <stdio.h>
@@ -25,14 +25,18 @@ help( char *progname )
 	fprintf(stderr,"usage: %s xml_file > isi_file\n\n",progname);
         fprintf(stderr,"  xml_file can be replaced with file list or omitted to use as a filter\n\n");
 
+	fprintf(stderr,"  -h, --help     display this help\n");
+	fprintf(stderr,"  -v, --version  display version\n\n");
 	fprintf(stderr,"  -nb, --no-bom  do not write Byte Order Mark in UTF8 output\n");
 	fprintf(stderr,"  -s, --single-refperfile one reference per output file\n");
-	fprintf(stderr,"  -h, --help     display this help\n");
+	fprintf(stderr,"  -i, --input-encoding  interpret input file with requested character set\n" );
+	fprintf(stderr,"                       (use w/o argument for current list)\n" );
+	fprintf(stderr,"  -o, --output-encoding write output file with requested character set\n" );
+	fprintf(stderr,"                       (use w/o argument for current list)\n" );
 	fprintf(stderr,"  --verbose      for verbose output\n");
 	fprintf(stderr,"  --debug        for debug output\n");
-	fprintf(stderr,"  -v, --version  display version\n\n");
 
-	fprintf(stderr,"http://www.scripps.edu/~cdputnam/software/bibutils for more details\n\n");
+	fprintf(stderr,"http://sourceforge.net/p/bibutils/home/Bibutils for more details\n\n");
 }
 
 void
@@ -78,7 +82,7 @@ main(int argc, char *argv[])
 	param p;
 	modsin_initparams( &p, progname );
 	isiout_initparams( &p, progname );
-	process_charsets( &argc, argv, &p, 1, 1 );
+	process_charsets( &argc, argv, &p );
 	process_args( &argc, argv, &p );
 	bibprog( argc, argv, &p );
 	bibl_freeparams( &p );
diff --git a/bin/xml2ris.c b/bin/xml2ris.c
index 58dc94f..6442f0f 100644
--- a/bin/xml2ris.c
+++ b/bin/xml2ris.c
@@ -1,9 +1,9 @@
 /*
  * xml2ris.c
  *
- * Copyright (c) Chris Putnam 2003-2010
+ * Copyright (c) Chris Putnam 2003-2013
  *
- * Program and source code released under the GPL
+ * Program and source code released under the GPL version 2
  *
  */
 #include <stdio.h>
@@ -25,15 +25,19 @@ help( char *progname )
 	fprintf(stderr,"usage: %s xml_file > ris_file\n\n",progname);
         fprintf(stderr,"  xml_file can be replaced with file list or omitted to use as a filter\n\n");
 
+	fprintf(stderr,"  -h, --help     display this help\n");
+	fprintf(stderr,"  -v, --version  display version\n\n");
 	fprintf(stderr,"  -nb, --no-bom  do not write Byte Order Mark in UTF8 output\n");
 	fprintf(stderr,"  -s, --single-refperfile one reference per output file\n");
-	fprintf(stderr,"  -h, --help     display this help\n");
+	fprintf(stderr,"  -i, --input-encoding  interpret the input with specified character set\n" );
+	fprintf(stderr,"                        (use w/o argument for current list)\n" );
+	fprintf(stderr,"  -o, --output-encoding write the output with specified character set\n" );
+	fprintf(stderr,"                        (use w/o argument for current list)\n" );
 	fprintf(stderr,"  --verbose      for verbose output\n");
 	fprintf(stderr,"  --debug        for debug output\n");
-	fprintf(stderr,"  -v, --version  display version\n\n");
 
 	fprintf(stderr,"Citation codes (ID  - ) generated from <REFNUM> tag.   See \n");
-	fprintf(stderr,"http://www.scripps.edu/~cdputnam/software/bibutils for more details\n\n");
+	fprintf(stderr,"http://sourceforge.net/p/bibutils/home/Bibutils for more details\n\n");
 }
 
 void
@@ -79,7 +83,7 @@ main(int argc, char *argv[])
 	param p;
 	modsin_initparams( &p, progname );
 	risout_initparams( &p, progname );
-	process_charsets( &argc, argv, &p, 1, 1 );
+	process_charsets( &argc, argv, &p );
 	process_args( &argc, argv, &p );
 	bibprog( argc, argv, &p );
 	bibl_freeparams( &p );
diff --git a/bin/xml2wordbib.c b/bin/xml2wordbib.c
index d1158cd..7646ea2 100644
--- a/bin/xml2wordbib.c
+++ b/bin/xml2wordbib.c
@@ -1,9 +1,9 @@
 /*
  * xml2wordbib.c
  *
- * Copyright (c) Chris Putnam 2007-2010
+ * Copyright (c) Chris Putnam 2007-2013
  *
- * Program and source code released under the GPL
+ * Program and source code released under the GPL version 2
  *
  */
 #include <stdio.h>
@@ -24,13 +24,16 @@ help( char *progname )
 
         fprintf( stderr, "usage: %s xml_file > word_file\n\n", progname );
         fprintf( stderr, "  xml_file can be replaced with file list or omitted to use as a filter\n\n" );
-        fprintf( stderr, "  -h, --help     display this help\n" );
+        fprintf( stderr, "  -h, --help              display this help\n" );
+        fprintf( stderr, "  -v, --version           display version\n\n" );
+	fprintf( stderr, "  -nb, --no-bom           do not write Byte Order Mark if writing UTF8\n" );
 	fprintf( stderr, "  -s, --single-refperfile one reference per output file\n");
-        fprintf( stderr, "  --verbose      for verbose output\n" );
-        fprintf( stderr, "  --debug        for debug output\n" );
-        fprintf( stderr, "  -v, --version  display version\n\n" );
+	fprintf( stderr, "  -i, --input-encoding    interpret input file as using requested character set\n");
+	fprintf( stderr, "                          (use w/o argument for current list)\n" );
+        fprintf( stderr, "  --verbose               for verbose output\n" );
+        fprintf( stderr, "  --debug                 for debug output\n" );
 
-        fprintf( stderr, "http://www.scripps.edu/~cdputnam/software/bibutils for more details\n\n" );
+        fprintf( stderr, "http://sourceforge.net/p/bibutils/home/Bibutils for more details\n\n" );
 }
 
 void
@@ -77,7 +80,7 @@ main( int argc, char *argv[] )
 	param p;
 	modsin_initparams( &p, progname );
 	wordout_initparams( &p, progname );
-	process_charsets( &argc, argv, &p, 1, 1 );
+	process_charsets( &argc, argv, &p );
 	process_args( &argc, argv, &p );
 	bibprog( argc, argv, &p );
 	bibl_freeparams( &p );
diff --git a/configure b/configure
index 0911424..71ccf62 100755
--- a/configure
+++ b/configure
@@ -1,160 +1,348 @@
-#!/bin/csh -f
+#!/bin/sh
 
-set INPUT_FILE = Makefile_start
-set OUTPUT_FILE = Makefile
-
-set LIBTYPE = static
-set INSTALLDIR = /usr/local/bin
-set LIBINSTALLDIR = /usr/local/lib
+#
+# Defaults
+#
+INPUT_FILE=Makefile_start
+OUTPUT_FILE=Makefile
+LIBTYPE=static
+INSTALLDIR=/usr/local/bin
+LIBINSTALLDIR=/usr/local/lib
 
-while ( ${#argv} > 0 )
-	if ( $1 == "--install-dir" ) then
-		if ( ${#argv} < 2 ) then
+#
+# Process command line arguments
+#
+while [ $# -gt 0 ] ; do
+	if [ "$1" = "--install-dir" ] ; then
+		if [ $# -lt 2 ] ; then
 			echo "--install-dir requires a directory"
 			exit
 		else
 			shift
-			set INSTALLDIR = $1
+			INSTALLDIR="$1"
 			shift
-		endif
-	else if ( $1 == "--install-lib" ) then
-		if ( ${#argv} < 2 ) then
+		fi
+	elif [ "$1" = "--install-lib" ] ; then
+		if [ $# -lt 2 ] ; then
 			echo "--install-lib requires a directory"
 			exit
 		else
 			shift
-			set LIBINSTALLDIR = $1
+			LIBINSTALLDIR="$1"
 			shift
-		endif
-	else if ( $1 == "--dynamic" ) then
-		set LIBTYPE = dynamic
+		fi
+	elif [ "$1" = "--dynamic" ] ; then
+		LIBTYPE="dynamic"
 		shift
-	else if ( $1 == "--static" ) then
-		set LIBTYPE = static
+	elif [ "$1" = "--static" ] ; then
+		LIBTYPE="static"
 		shift
 	else
 		echo "Unidentified argument $1"
 		exit
-	endif
-end
+	fi
+done
 
-if ( "$LIBTYPE" == "dynamic" ) then
-	cp lib/Makefile.dynamic lib/Makefile
-	cp bin/Makefile.dynamic bin/Makefile
+#
+# Use the correct makefiles for dynamic/static option
+#
+if [ "$LIBTYPE" = "dynamic" ] ; then
+	cp lib/Makefile.dynamic  lib/Makefile
+	cp bin/Makefile.dynamic  bin/Makefile
+	cp test/Makefile.dynamic test/Makefile
 else
-	cp lib/Makefile.static lib/Makefile
-	cp bin/Makefile.static bin/Makefile
-endif
-
-set type = "Unknown"
-set universal_binary = "FALSE"
-set UNAME = `uname -a`
-if ( ` echo $UNAME | grep Linux | wc | awk '{print $1;}' ` == 1 ) then
-	if ( ` echo $UNAME | grep 'i[3456]86' | wc | awk '{print $1};'` == 1 ) then
-		set type = "Linux_x86"
-	else if ( ` echo $UNAME | grep 'x86_64' | wc | awk '{print $1};'` == 1 ) then
-		set type = "Linux_x86_64"
-	else
-		set type = "Linux_Unknown"
-	endif
-endif
-if ( ` echo $UNAME | grep Darwin | wc | awk '{print $1;}' ` == 1 ) then
-	set type = "MacOSX_Unknown"
-	if ( ` echo $UNAME | grep -E 'powerpc|Power Macintosh' | wc | awk '{print $1};'` == 1 ) then
-		set type = "MacOSX_ppc"
-	endif
-	if ( ` echo $UNAME | grep 'i386' | wc | awk '{print $1}'` == 1 ) then
-		set type = "MacOSX_intel"
-	endif
-endif
-if ( ` echo $UNAME | grep SunOS | wc | awk '{print $1;}' ` == 1 ) then
-	set type = "SunOS5"
-endif
-if ( ` echo $UNAME | grep IRIX | wc | awk '{print $1;}' ` == 1 ) then
-	set type = "IRIX"
-endif
-if ( ` echo $UNAME | grep NetBSD | wc | awk '{print $1;}' ` == 1 ) then
-	set type = "NetBSD"
-endif
-if ( ` echo $UNAME | grep FreeBSD | wc | awk '{print $1;}' ` == 1 ) then
-	set type = "FreeBSD"
-endif
-if ( ` echo $UNAME | grep Cygwin | wc | awk '{print $1;}' ` == 1 ) then
-	set type = "Cygwin"
-endif
+	cp lib/Makefile.static  lib/Makefile
+	cp bin/Makefile.static  bin/Makefile
+	cp test/Makefile.static test/Makefile
+fi
 
 #
-# Support universal binaries for MacOSX's (gcc version 4 and higher)
+# Determine architecture and architecture-dependent values
 #
-# restrict to intel Mac's only because ppc Mac's I have access to
-# just don't have the i386 libraries...
-#
-#if ( $type == "MacOSX_ppc" || $type == "MacOSX_intel" ) then
-if ( $type == "MacOSX_intel" ) then
-	gcc -v >& tmp.$$
-	set gcc_version = ` grep version tmp.$$ | awk '{print $3;}' `
-	set gcc_major = ` echo $gcc_version | awk -v FS="." '{print $1;}' `
-	if ( $gcc_major > 3 ) then
-		set universal_binary = "TRUE"
-	endif
-	/bin/rm -f tmp.$$
-endif
+type="Unknown"
+universal_binary="FALSE"
+UNAME=$(uname -a)
+
+if [ $( echo $UNAME | grep Linux | wc | awk '{print $1;}' ) -eq 1 ] ; then
+	if [ $( echo $UNAME | grep 'i[3456]86' | wc | awk '{print $1};') -eq 1 ] ; then
+		type="Linux_x86"
+	elif [ $( echo $UNAME | grep 'x86_64' | wc | awk '{print $1};') -eq 1 ] ; then
+		type="Linux_x86_64"
+	else
+		type="Linux_Unknown"
+	fi
+fi
+if [ $( echo $UNAME | grep Darwin | wc | awk '{print $1;}' ) -eq 1 ] ; then
+	type="MacOSX_Unknown"
+	if [ $( echo $UNAME | grep -E 'powerpc|Power Macintosh' | wc | awk '{print $1};') -eq 1 ] ; then
+		type="MacOSX_ppc"
+	fi
+	if [ $( echo $UNAME | grep 'i386' | wc | awk '{print $1}') -eq 1 ] ; then
+		type="MacOSX_i386"
+	fi
+	if [ $( echo $UNAME | grep 'x86_64' | wc | awk '{print $1}') -eq 1 ] ; then
+		type="MacOSX_x86_64"
+	fi
+fi
+if [ $( echo $UNAME | grep SunOS | wc | awk '{print $1;}' ) -eq 1 ] ; then
+	type="SunOS5"
+fi
+if [ $( echo $UNAME | grep IRIX | wc | awk '{print $1;}' ) -eq 1 ] ; then
+	type="IRIX"
+fi
+if [ $( echo $UNAME | grep NetBSD | wc | awk '{print $1;}' ) -eq 1 ] ; then
+	type="NetBSD"
+fi
+if [ $( echo $UNAME | grep FreeBSD | wc | awk '{print $1;}' ) -eq 1 ] ; then
+	type="FreeBSD"
+fi
+if [ $( echo $UNAME | grep OpenBSD | wc | awk '{print $1;}' ) -eq 1 ] ; then
+	type="OpenBSD"
+fi
+if [ $( echo $UNAME | grep Cygwin | wc | awk '{print $1;}' ) -eq 1 ] ; then
+	type="Cygwin"
+fi
+if [ $( echo $UNAME | grep Msys | wc | awk '{print $1;}' ) -eq 1 ] ; then
+	type="MinGW"
+fi
 
-if ( $type == "Linux_x86" ) then
-	set CC = '"cc -Wall"'
-	set RANLIB = '"ranlib"'
-	set POSTFIX = '"_i386"'
-else if ( $type == "Linux_x86_64" ) then
-	set CC = '"cc -Wall"'
-	set RANLIB = '"ranlib"'
-	set POSTFIX = '"_amd64"'
-else if ( $type == "Linux_Unknown" ) then
-	set CC = '"cc -Wall"'
-	set RANLIB = '"ranlib"'
-	set POSTFIX = '""'
-else if ( $type == "MacOSX_ppc" && $universal_binary == "TRUE" ) then
-	set CC = '"cc -arch i386 -arch ppc -Wall"'
-	set RANLIB = '"ranlib -s"'
-	set POSTFIX = '"_osx_universal"'
-else if ( $type == "MacOSX_intel" && $universal_binary == "TRUE" ) then
-	set CC = '"cc -arch i386 -arch ppc -Wall"'
-	set RANLIB = '"ranlib -s"'
-	set POSTFIX = '"_osx_universal"'
-else if ( $type == "MacOSX_ppc" || $type == "MacOSX_intel" || \
-                $type == "MacOSX_Unknown" ) then
-	set CC = '"cc -Wall"'
-	set RANLIB = '"ranlib -s"'
-	set POSTFIX = '"_osx"'
-else if ( $type == "SunOS5" ) then
-	set CC = '"gcc -Wall"'
-	set RANLIB = '"echo Skipping ranlib"'
-	set POSTFIX = '"_sunos5"'
-else if ( $type == "IRIX" ) then
-	set CC = '"gcc -Wall"'
-	set RANLIB = '"echo Skipping ranlib"'
-	echo POSTFIX = '"_irix"'
-else if ( $type == "NetBSD" ) then
-	set CC = '"cc -Wall"'
-	set RANLIB = '"ranlib"'
-	set POSTFIX = '"_netbsd"'
-else if ( $type == "FreeBSD" ) then
-	set CC = '"cc -Wall"'
-	set RANLIB = '"ranlib"'
-	set POSTFIX = '"_freebsd"'
-else if ( $type == "Cygwin" ) then
-	set CC = '"cc -Wall"'
-	set RANLIB = '"echo Skipping ranlib"'
-	set POSTFIX = '"_cygwin"'
+if [ "$type" = "Linux_x86" ] ; then
+	CC='cc'
+	CFLAGS='-Wall'
+	if [ "$LIBTYPE" = "dynamic" ] ; then
+		CLIBFLAGS='-Wall -fPIC'
+	else
+		CLIBFLAGS='-Wall'
+	fi
+	EXEEXT=''
+	LIBBASE='libbibutils'
+	STATICLIBEXT='.a'
+	DYNAMICLIBEXT='.so'
+	RANLIB='ranlib'
+	POSTFIX='_i386'
+elif [ "$type" = "Linux_x86_64" ] ; then
+	CC='cc'
+	CFLAGS='-Wall'
+	if [ "$LIBTYPE" = "dynamic" ] ; then
+		CLIBFLAGS='-Wall -fPIC'
+	else
+		CLIBFLAGS='-Wall'
+	fi
+	EXEEXT=''
+	LIBBASE='libbibutils'
+	STATICLIBEXT='.a'
+	DYNAMICLIBEXT='.so'
+	RANLIB='ranlib'
+	POSTFIX='_amd64'
+elif [ "$type" = "Linux_Unknown" ] ; then
+	CC='cc'
+	CFLAGS='-Wall'
+	if [ "$LIBTYPE" = "dynamic" ] ; then
+		CLIBFLAGS='-Wall -fPIC'
+	else
+		CLIBFLAGS='-Wall'
+	fi
+	EXEEXT=''
+	LIBBASE='libbibutils'
+	STATICLIBEXT='.a'
+	DYNAMICLIBEXT='.so'
+	RANLIB='ranlib'
+	POSTFIX=''
+elif [ "$type" = "MacOSX_ppc" ] ; then
+	CC='cc'
+	CFLAGS='-Wall'
+	if [ "$LIBTYPE" = "dynamic" ] ; then
+		CLIBFLAGS='-Wall -fPIC'
+	else
+		CLIBFLAGS='-Wall'
+	fi
+	EXEEXT=''
+	LIBBASE='libbibutils'
+	STATICLIBEXT='.a'
+	DYNAMICLIBEXT='.so'
+	RANLIB='ranlib -s'
+	POSTFIX='_osx_ppc'
+elif [ "$type" = "MacOSX_i386" ] ; then
+	CC='cc'
+	CFLAGS='-Wall'
+	if [ "$LIBTYPE" = "dynamic" ] ; then
+		CLIBFLAGS='-Wall -fPIC'
+	else
+		CLIBFLAGS='-Wall'
+	fi
+	EXEEXT=''
+	LIBBASE='libbibutils'
+	STATICLIBEXT='.a'
+	DYNAMICLIBEXT='.so'
+	RANLIB='ranlib -s'
+	POSTFIX='_osx_i386'
+elif [ "$type" = "MacOSX_x86_64" ] ; then
+	CC='cc'
+	CFLAGS='-Wall'
+	if [ "$LIBTYPE" = "dynamic" ] ; then
+		CLIBFLAGS='-Wall -fPIC'
+	else
+		CLIBFLAGS='-Wall'
+	fi
+	EXEEXT=''
+	LIBBASE='libbibutils'
+	STATICLIBEXT='.a'
+	DYNAMICLIBEXT='.so'
+	RANLIB='ranlib -s'
+	POSTFIX='_osx_x86_64'
+elif [ "$type" = "MacOSX_Unknown" ] ; then
+	CC='cc'
+	CFLAGS='-Wall'
+	if [ "$LIBTYPE" = "dynamic" ] ; then
+		CLIBFLAGS='-Wall -fPIC'
+	else
+		CLIBFLAGS='-Wall'
+	fi
+	EXEEXT=''
+	LIBBASE='libbibutils'
+	STATICLIBEXT='.a'
+	DYNAMICLIBEXT='.so'
+	RANLIB='ranlib -s'
+	POSTFIX='_osx'
+elif [ "$type" = "SunOS5" ] ; then
+	CC='gcc'
+	CFLAGS='-Wall'
+	if [ "$LIBTYPE" = "dynamic" ] ; then
+		CLIBFLAGS='-Wall -fPIC'
+	else
+		CLIBFLAGS='-Wall'
+	fi
+	EXEEXT=''
+	LIBBASE='libbibutils'
+	STATICLIBEXT='.a'
+	DYNAMICLIBEXT='.so'
+	RANLIB='echo Skipping ranlib'
+	POSTFIX='_sunos5'
+elif [ "$type" = "IRIX" ] ; then
+	CC='gcc'
+	CFLAGS='-Wall'
+	if [ "$LIBTYPE" = "dynamic" ] ; then
+		CLIBFLAGS='-Wall -fPIC'
+	else
+		CLIBFLAGS='-Wall'
+	fi
+	EXEEXT=''
+	LIBBASE='libbibutils'
+	STATICLIBEXT='.a'
+	DYNAMICLIBEXT='.so'
+	RANLIB='echo Skipping ranlib'
+	POSTFIX='_irix'
+elif [ "$type" = "NetBSD" ] ; then
+	CC='gcc'
+	CFLAGS='-Wall'
+	if [ "$LIBTYPE" = "dynamic" ] ; then
+		CLIBFLAGS='-Wall -fPIC'
+	else
+		CLIBFLAGS='-Wall'
+	fi
+	EXEEXT=''
+	LIBBASE='libbibutils'
+	STATICLIBEXT='.a'
+	DYNAMICLIBEXT='.so'
+	RANLIB='ranlib'
+	POSTFIX='_netbsd'
+elif [ "$type" = "FreeBSD" ] ; then
+	CC='gcc'
+	CFLAGS='-Wall'
+	if [ "$LIBTYPE" = "dynamic" ] ; then
+		CLIBFLAGS='-Wall -fPIC'
+	else
+		CLIBFLAGS='-Wall'
+	fi
+	EXEEXT=''
+	LIBBASE='libbibutils'
+	STATICLIBEXT='.a'
+	DYNAMICLIBEXT='.so'
+	RANLIB='ranlib'
+	POSTFIX='_freebsd'
+elif [ "$type" = "OpenBSD" ] ; then
+	CC='gcc'
+	CFLAGS='-Wall'
+	if [ "$LIBTYPE" = "dynamic" ] ; then
+		CLIBFLAGS='-Wall -fPIC'
+	else
+		CLIBFLAGS='-Wall'
+	fi
+	EXEEXT=''
+	LIBBASE='libbibutils'
+	STATICLIBEXT='.a'
+	DYNAMICLIBEXT='.so'
+	RANLIB='ranlib'
+	POSTFIX='_openbsd'
+elif [ "$type" = "Cygwin" ] ; then
+	CC='cc'
+	CFLAGS='-Wall'
+	CLIBFLAGS='-Wall'
+	EXEEXT='.exe'
+	LIBBASE='bibutils'
+	STATICLIBEXT='.a'
+	DYNAMICLIBEXT='.dll'
+	RANLIB='echo Skipping ranlib'
+	POSTFIX='_cygwin'
+	LIBINSTALLDIR=${INSTALLDIR}
+elif [ "$type" = "MinGW" ] ; then
+	CC='gcc'
+	CFLAGS='-Wall'
+	CLIBFLAGS='-Wall'
+	EXEEXT='.exe'
+	LIBBASE='bibutils'
+	STATICLIBEXT='.a'
+	DYNAMICLIBEXT='.dll'
+	RANLIB='echo Skipping ranlib'
+	POSTFIX='_mingw'
+	LIBINSTALLDIR=${INSTALLDIR}
 else
 	# Unknown operating system
-	set CC = '"cc"'
-	set RANLIB = '"echo Skipping ranlib"'
-	set POSTFIX = '""'
-endif
+	CC='cc'
+	CFLAGS=''
+	CLIBFLAGS=''
+	if [ "$LIBTYPE" = "dynamic" ] ; then
+		CLIBFLAGS='-Wall -fPIC'
+	else
+		CLIBFLAGS='-Wall'
+	fi
+	EXEEXT=''
+	LIBBASE='libbibutils'
+	STATICLIBEXT='.a'
+	DYNAMICLIBEXT='.so'
+	RANLIB='echo Skipping ranlib'
+	POSTFIX=''
+fi
+
+#
+# Set up for dynamic or static libraries
+#
+if [ "$LIBTYPE" = "dynamic" ] ; then
+	cp lib/Makefile.dynamic  lib/Makefile
+	cp bin/Makefile.dynamic  bin/Makefile
+	cp test/Makefile.dynamic test/Makefile
+	LIBEXT=${DYNAMICLIBEXT}
+else
+	cp lib/Makefile.static  lib/Makefile
+	cp bin/Makefile.static  bin/Makefile
+	cp test/Makefile.static test/Makefile
+	LIBEXT=${STATICLIBEXT}
+fi
+
+
+#
+# Generate the upper-level Makefile
+#
+LIBTARGET=${LIBBASE}${LIBEXT}
 
 cat $INPUT_FILE | \
-sed "s/REPLACE_CC/CC=${CC}/" | \
-sed "s/REPLACE_RANLIB/RANLIB=${RANLIB}/" | \
+sed "s/REPLACE_CC/${CC}/" | \
+sed "s/REPLACE_CFLAGS/${CFLAGS}/" | \
+sed "s/REPLACE_CLIBFLAGS/${CLIBFLAGS}/" | \
+sed "s/REPLACE_EXEEXT/${EXEEXT}/" | \
+sed "s/REPLACE_LIBTARGET/${LIBTARGET}/" | \
+sed "s/REPLACE_LIBEXT/${LIBEXT}/" | \
+sed "s/REPLACE_RANLIB/${RANLIB}/" | \
 sed "s|REPLACE_INSTALLDIR|${INSTALLDIR}|" | \
 sed "s|REPLACE_LIBINSTALLDIR|${LIBINSTALLDIR}|" | \
 sed "s/REPLACE_POSTFIX/${POSTFIX}/" > $OUTPUT_FILE
@@ -180,7 +368,7 @@ echo
 echo " - Set library installation directory with: --install-lib DIR"
 echo
 echo
-if ( $OUTPUT_FILE == "Makefile" ) then
+if [ $OUTPUT_FILE = "Makefile" ] ; then
   echo "To compile,                  type: make"
   echo "To install,                  type: make install"
   echo "To make tgz package,         type: make package"
@@ -196,6 +384,6 @@ else
   echo
   echo "To clean up temporary files, type: make -f $OUTPUT_FILE clean"
   echo "To clean up all files,       type: make -f $OUTPUT_FILE realclean"
-endif
+fi
 echo
 echo
diff --git a/lib/Makefile b/lib/Makefile
deleted file mode 100644
index 812b831..0000000
--- a/lib/Makefile
+++ /dev/null
@@ -1,47 +0,0 @@
-#CC = gcc -Wall 
-RANLIB = echo
-
-SIMPLE_OBJS   = is_ws.o strsearch.o charsets.o
-
-NEWSTR_OBJS   = newstr.o newstr_conv.o entities.o latex.o utf8.o gb18030.o
-
-CONTAIN_OBJS  = fields.o list.o xml.o xml_encoding.o
-
-BIBL_OBJS     = name.o title.o doi.o bibl.o serialno.o marc.o reftypes.o bibl.o
-
-INPUT_OBJS    = bibtexin.o bibtextypes.o \
-		biblatexin.o bltypes.o \
-		copacin.o copactypes.o \
-		endin.o endtypes.o \
-		endxmlin.o \
-		isiin.o isitypes.o \
-		medin.o \
-		modsin.o modstypes.o marc.o \
-		risin.o ristypes.o \
-		ebiin.o wordin.o
-
-OUTPUT_OBJS   = bibtexout.o endout.o isiout.o modsout.o risout.o wordout.o \
-		adsout.o
-
-BIBCORE_OBJS = $(SIMPLE_OBJS) $(NEWSTR_OBJS) $(CONTAIN_OBJS) $(BIBL_OBJS) \
-               bibcore.o
-
-BIBUTILS_OBJS = $(INPUT_OBJS) $(OUTPUT_OBJS) bibutils.o
-
-all: libbibcore.a libbibutils.a
-
-libbibcore.a: $(BIBCORE_OBJS)
-	ar -cr $@ $^
-	$(RANLIB) $@
-
-libbibutils.a: $(BIBUTILS_OBJS)
-	ar -cr $@ $^
-	$(RANLIB) $@
-
-clean: 
-	/bin/rm -f *.o core
-
-realclean:
-	/bin/rm -f *.o *.a core
-
-test:
diff --git a/lib/Makefile.dynamic b/lib/Makefile.dynamic
index 04a4624..f1b61d9 100644
--- a/lib/Makefile.dynamic
+++ b/lib/Makefile.dynamic
@@ -1,12 +1,33 @@
-#CC = gcc -Wall 
-
-SIMPLE_OBJS   = is_ws.o strsearch.o charsets.o
-
-NEWSTR_OBJS   = newstr.o newstr_conv.o entities.o latex.o utf8.o gb18030.o
-
-CONTAIN_OBJS  = fields.o list.o xml.o xml_encoding.o
-
-BIBL_OBJS     = name.o title.o doi.o bibl.o serialno.o marc.o reftypes.o bibl.o
+CFLAGS    = $(CFLAGSIN)
+LIBTARGET = $(LIBTARGETIN)
+
+SIMPLE_OBJS   = charsets.o \
+                is_ws.o \
+                strsearch.o
+
+NEWSTR_OBJS   = entities.o \
+                gb18030.o \
+                latex.o \
+                newstr.o \
+                newstr_conv.o \
+                unicode.o \
+                utf8.o
+
+CONTAIN_OBJS  = fields.o \
+                intlist.o \
+                list.o \
+                vplist.o \
+                xml.o \
+                xml_encoding.o
+
+BIBL_OBJS     = bibl.o \
+                doi.o \
+                iso639_2.o \
+                marc.o \
+                name.o \
+                reftypes.o \
+                serialno.o \
+                title.o
 
 INPUT_OBJS    = bibtexin.o bibtextypes.o \
 		biblatexin.o bltypes.o \
@@ -19,35 +40,52 @@ INPUT_OBJS    = bibtexin.o bibtextypes.o \
 		risin.o ristypes.o \
 		ebiin.o wordin.o
 
-OUTPUT_OBJS   = bibtexout.o endout.o isiout.o modsout.o risout.o wordout.o \
-		adsout.o
+OUTPUT_OBJS   = adsout.o \
+                bibtexout.o \
+                endout.o \
+                isiout.o \
+                modsout.o \
+                risout.o \
+                wordout.o
 
-BIBCORE_OBJS = $(SIMPLE_OBJS) $(NEWSTR_OBJS) $(CONTAIN_OBJS) $(BIBL_OBJS) \
-               bibcore.o
+BIBCORE_OBJS  = $(SIMPLE_OBJS) \
+                $(NEWSTR_OBJS) \
+                $(CONTAIN_OBJS) \
+                $(BIBL_OBJS) \
+                bibcore.o
 
-BIBUTILS_OBJS = $(INPUT_OBJS) $(OUTPUT_OBJS) bibutils.o
+BIBUTILS_OBJS = $(INPUT_OBJS) \
+                $(OUTPUT_OBJS) \
+                bibutils.o
 
+SONAME=libbibutils.so.$(MAJORVERSION)
+SOMINOR=$(MINORVERSION)
+SOFULL=$(SONAME).$(SOMINOR)
 
-all: libbibutils.so
+all: $(LIBTARGET)
 
 .c.o:
-	$(CC) -fPIC -c $(CFLAGS) -o $@ $<
+	$(CC) $(CFLAGS) -c -o $@ $<
 
 libbibutils.so: $(BIBCORE_OBJS) $(BIBUTILS_OBJS)
-	$(CC) -shared -Wl,-soname,libbibutils.so.4 -o libbibutils.so.4.12 $^
-	ln -s libbibutils.so.4.12 libbibutils.so.4
-	ln -s libbibutils.so.4.12 libbibutils.so
+	$(CC) -shared -Wl,-soname,$(SONAME) -o $(SOFULL) $^
+	ln -sf $(SOFULL) $(SONAME)
+	ln -sf $(SOFULL) libbibutils.so
+
+bibutils.dll: $(BIBCORE_OBJS) $(BIBUTILS_OBJS)
+	$(CC) -shared -Wl,-soname,$(SONAME) -o $@ $^
+	cp $@ ../bin
+	cp $@ ../test
 
 install:
 	echo INSTALLING LIBRARIES TO $(LIBINSTALLDIR)
-	cp libbibutils.so.4.12 $(LIBINSTALLDIR)
-	ln -sf $(LIBINSTALLDIR)/libbibutils.so.4.12 $(LIBINSTALLDIR)/libbibutils.so
-	ln -sf $(LIBINSTALLDIR)/libbibutils.so.4.12 $(LIBINSTALLDIR)/libbibutils.so.4
+	mkdir -p $(LIBINSTALLDIR)
+	cp -P $(SOFULL) $(SONAME) $(LIBTARGET) $(LIBINSTALLDIR)
 
 clean: 
-	/bin/rm -f *.o core
+	rm -f *.o core
 
 realclean:
-	/bin/rm -f *.o *.so *.so.4 *.so.4.12 core
+	rm -f *.o *.a *.so $(SONAME) $(SOFULL) core
 
 test:
diff --git a/lib/Makefile.static b/lib/Makefile.static
index 812b831..dc64d07 100644
--- a/lib/Makefile.static
+++ b/lib/Makefile.static
@@ -1,32 +1,70 @@
-#CC = gcc -Wall 
-RANLIB = echo
+CFLAGS = $(CFLAGSIN)
 
-SIMPLE_OBJS   = is_ws.o strsearch.o charsets.o
+SIMPLE_OBJS   = charsets.o \
+                is_ws.o \
+                strsearch.o
 
-NEWSTR_OBJS   = newstr.o newstr_conv.o entities.o latex.o utf8.o gb18030.o
+NEWSTR_OBJS   = entities.o \
+                gb18030.o \
+                latex.o \
+                newstr.o \
+                newstr_conv.o \
+                unicode.o \
+                utf8.o
 
-CONTAIN_OBJS  = fields.o list.o xml.o xml_encoding.o
+CONTAIN_OBJS  = fields.o \
+                intlist.o \
+                list.o \
+                vplist.o \
+                xml.o \
+                xml_encoding.o
 
-BIBL_OBJS     = name.o title.o doi.o bibl.o serialno.o marc.o reftypes.o bibl.o
+BIBL_OBJS     = bibl.o \
+                doi.o \
+                iso639_2.o \
+                marc.o \
+                name.o \
+                reftypes.o \
+                serialno.o \
+                title.o
 
-INPUT_OBJS    = bibtexin.o bibtextypes.o \
-		biblatexin.o bltypes.o \
-		copacin.o copactypes.o \
-		endin.o endtypes.o \
+INPUT_OBJS    = bibtexin.o \
+                bibtextypes.o \
+		biblatexin.o \
+                bltypes.o \
+		copacin.o \
+                copactypes.o \
+                ebiin.o \
+		endin.o \
+                endtypes.o \
 		endxmlin.o \
-		isiin.o isitypes.o \
+		isiin.o \
+                isitypes.o \
+                marc.o \
 		medin.o \
-		modsin.o modstypes.o marc.o \
-		risin.o ristypes.o \
-		ebiin.o wordin.o
+		modsin.o \
+                modstypes.o \
+		risin.o \
+                ristypes.o \
+		wordin.o
 
-OUTPUT_OBJS   = bibtexout.o endout.o isiout.o modsout.o risout.o wordout.o \
-		adsout.o
+OUTPUT_OBJS   = adsout.o \
+                bibtexout.o \
+                endout.o \
+                isiout.o \
+                modsout.o \
+                risout.o \
+                wordout.o
 
-BIBCORE_OBJS = $(SIMPLE_OBJS) $(NEWSTR_OBJS) $(CONTAIN_OBJS) $(BIBL_OBJS) \
-               bibcore.o
+BIBCORE_OBJS  = $(SIMPLE_OBJS) \
+                $(NEWSTR_OBJS) \
+                $(CONTAIN_OBJS) \
+                $(BIBL_OBJS) \
+                bibcore.o
 
-BIBUTILS_OBJS = $(INPUT_OBJS) $(OUTPUT_OBJS) bibutils.o
+BIBUTILS_OBJS = $(INPUT_OBJS) \
+                $(OUTPUT_OBJS) \
+                bibutils.o
 
 all: libbibcore.a libbibutils.a
 
@@ -39,9 +77,11 @@ libbibutils.a: $(BIBUTILS_OBJS)
 	$(RANLIB) $@
 
 clean: 
-	/bin/rm -f *.o core
+	rm -f *.o core
 
 realclean:
-	/bin/rm -f *.o *.a core
+	rm -f *.o *.a core
+
+install:
 
 test:
diff --git a/lib/adsout.c b/lib/adsout.c
index 06801ab..ef9552a 100644
--- a/lib/adsout.c
+++ b/lib/adsout.c
@@ -1,20 +1,22 @@
 /*
  * adsout.c
  *
- * Copyright (c) Richard Mathar 2007-2010
- * Copyright (c) Chris Putnam 2007-2010
+ * Copyright (c) Richard Mathar 2007-2013
+ * Copyright (c) Chris Putnam 2007-2013
  *
- * Program and source code released under the GPL
+ * Program and source code released under the GPL version 2
  *
  */
 #include <stdio.h>
 #include <stdlib.h>
+#include <stdint.h>
 #include <string.h>
 #include <ctype.h>
 #include "utf8.h"
 #include "newstr.h"
 #include "strsearch.h"
 #include "fields.h"
+#include "name.h"
 #include "adsout.h"
 
 void
@@ -25,14 +27,18 @@ adsout_initparams( param *p, const char *progname )
 	p->charsetout       = BIBL_CHARSET_DEFAULT;
 	p->charsetout_src   = BIBL_SRC_DEFAULT;
 	p->latexout         = 0;
-	p->utf8out          = 0;
-	p->utf8bom          = 0;
+	p->utf8out          = BIBL_CHARSET_UTF8_DEFAULT;
+	p->utf8bom          = BIBL_CHARSET_BOM_DEFAULT;
 	p->xmlout           = 0;
 	p->nosplittitle     = 0;
 	p->verbose          = 0;
 	p->addcount         = 0;
 	p->singlerefperfile = 0;
 
+	if ( p->charsetout == BIBL_CHARSET_UNICODE ) {
+		p->utf8out = p->utf8bom = 1;
+	}
+
 	p->headerf = adsout_writeheader;
 	p->footerf = NULL;
 	p->writef  = adsout_write;
@@ -95,7 +101,7 @@ get_type( fields *info )
 	char *tag, *data;
 	int i, j, type = TYPE_UNKNOWN;
 
-	for ( i=0; i<info->nfields; ++i ) {
+	for ( i=0; i<info->n; ++i ) {
 		tag = info->tag[i].data;
 		if ( strcasecmp( tag, "GENRE" )!=0 &&
 		     strcasecmp( tag, "NGENRE" )!=0 ) continue;
@@ -123,7 +129,7 @@ get_type( fields *info )
 		}
 	}
 	if ( type==TYPE_UNKNOWN ) {
-		for ( i=0; i<info->nfields; ++i ) {
+		for ( i=0; i<info->n; ++i ) {
 			if ( strcasecmp( info->tag[i].data, "RESOURCE" ) )
 				continue;
 			data = info->data[i].data;
@@ -142,44 +148,44 @@ get_type( fields *info )
 }
 
 static void
-output_title( FILE *fp, fields *info, char * full, char *sub, char *endtag, int level )
+output_title( FILE *fp, fields *f, char *full, char *sub, char *adstag, int level )
 {
-	int n1 = fields_find( info, full, level );
-	int n2 = fields_find( info, sub, level );
-	int sn = fields_find( info, "PAGESTART", -1 );
-	int en = fields_find( info, "PAGEEND", -1 );
-	int ar = fields_find( info, "ARTICLENUMBER", -1 );
-	if ( n1!=-1 ) {
-		fprintf( fp, "%s %s", endtag, info->data[n1].data );
-		fields_setused( info, n1 );
-		if ( n2!=-1 ) {
-			if ( info->data[n1].data[info->data[n1].len]!='?' )
+	newstr *fulltitle, *subtitle, *vol, *iss, *sn, *en, *ar;
+
+	fulltitle = fields_findv( f, level, FIELDS_STRP, full );
+	subtitle  = fields_findv( f, level, FIELDS_STRP, sub );
+
+	if ( fulltitle && fulltitle->len ) {
+
+		fprintf( fp, "%s %s", adstag, fulltitle->data );
+		if ( subtitle && subtitle->len ) {
+			if ( fulltitle->data[ fulltitle->len - 1 ] != '?' )
 				fprintf( fp, ": " );
 			else fprintf( fp, " " );
-			fprintf( fp, "%s", info->data[n2].data );
-			fields_setused( info, n2 );
+			fprintf( fp, "%s", subtitle->data );
 		}
 
-		n1 = fields_find( info, "VOLUME", -1 );
-		if ( n1!=-1 )
-			fprintf( fp, ", vol. %s", info->data[n1].data );
-		n1 = fields_find( info, "ISSUE", -1 );
-		if ( n1 == -1 )
-			n1 = fields_find( info, "NUMBER", -1 );
-		if ( n1!=-1 )
-			fprintf( fp, ", no. %s", info->data[n1].data );
-
-		if ( sn!=-1 ) {
-			if ( en != -1)
-				fprintf( fp, ", pp.");
+		vol = fields_findv( f, LEVEL_ANY, FIELDS_STRP, "VOLUME" );
+		if ( vol && vol->len ) fprintf( fp, ", vol. %s", vol->data );
+
+		iss = fields_findv_firstof( f, LEVEL_ANY, FIELDS_STRP, "ISSUE",
+			"NUMBER", NULL );
+		if ( iss && iss->len ) fprintf( fp, ", no. %s", iss->data );
+
+		sn = fields_findv( f, LEVEL_ANY, FIELDS_STRP, "PAGESTART" );
+		en = fields_findv( f, LEVEL_ANY, FIELDS_STRP, "PAGEEND" );
+		ar = fields_findv( f, LEVEL_ANY, FIELDS_STRP, "ARTICLENUMBER" );
+		if ( sn && sn->len ) {
+			if ( en && en->len )
+				fprintf( fp, ", pp." );
 			else
-				fprintf( fp, ", p.");
-			fprintf( fp, " %s", info->data[sn].data);
-		} else if ( ar!=-1 ) {
-			fprintf( fp, " p. %s", info->data[ar].data );
+				fprintf( fp, ", p." );
+			fprintf( fp, " %s", sn->data );
+		} else if ( ar && ar->len ) {
+			fprintf( fp, ", p. %s", ar->data );
 		}
-		if ( en!=-1 ) {
-			fprintf( fp, "-%s", info->data[en].data );
+		if ( en && en->len ) {
+			fprintf( fp, "-%s", en->data );
 		}
 
 		fprintf( fp, "\n" );
@@ -187,62 +193,35 @@ output_title( FILE *fp, fields *info, char * full, char *sub, char *endtag, int
 }
 
 static void
-output_person( FILE *fp, char *p )
-{
-	int nseps = 0, nch;
-	while ( *p ) {
-		nch = 0;
-		if ( nseps==1 ) fprintf( fp, "," );
-		if ( nseps ) fprintf( fp, " " );
-		while ( *p && *p!='|' ) {
-			fprintf( fp, "%c", *p++ );
-			nch++;
-		}
-		if ( *p=='|' ) p++;
-		if ( nseps!=0 && nch==1 ) fprintf( fp, "." );
-		nseps++;
-	}
-}
-
-static void
-output_people( FILE *fp, fields *info, char *tag, char *entag, int level )
+output_people( FILE *fp, fields *f, char *tag1, char *tag2, char *tag3, char *adstag, int level )
 {
-	int i, cnt=0;
-	for ( i=0; i<info->nfields; ++i ) {
-		if ( level!=-1 && info->level[i]!=level ) continue;
-		if ( !strcasecmp( info->tag[i].data, tag ) ) {
-			if ( cnt ) fprintf( fp, "; " );
-			else fprintf( fp, "%s ", entag );
-			output_person( fp, info->data[i].data );
-			cnt++;
-		}
+	newstr oneperson;
+	vplist a;
+	int i;
+	newstr_init( &oneperson );
+	vplist_init( &a );
+	fields_findv_eachof( f, level, FIELDS_CHRP, &a, tag1, tag2, tag3, NULL );
+	extern void  fields_findv_eachof( fields *f, int level, int mode, vplist *a, ... );
+	for ( i=0; i<a.n; ++i ) {
+		if ( i==0 ) fprintf( fp, "%s ", adstag );
+		else fprintf( fp, "; " );
+		name_build_withcomma( &oneperson, (char *) vplist_get( &a, i) );
+		fprintf( fp, "%s", oneperson.data );
 	}
-	if ( cnt ) fprintf( fp, "\n" );
+	if ( a.n ) fprintf( fp, "\n" );
+	vplist_free( &a );
+	newstr_free( &oneperson );
 }
 
 static void
-output_pages( FILE *fp, fields *info )
+output_pages( FILE *fp, fields *f )
 {
-	int sn = fields_find( info, "PAGESTART", -1 );
-	int en = fields_find( info, "PAGEEND", -1 );
-	int ar = fields_find( info, "ARTICLENUMBER", -1 );
-	if ( sn!=-1 ) {
-		fprintf( fp, "%%P %s\n", info->data[sn].data);
-	} else if ( ar!=-1 ) {
-		fprintf( fp, "%%P %s\n", info->data[ar].data );
-	}
-	if ( en!=-1 ) {
-		fprintf( fp, "%%L %s\n", info->data[en].data );
-	}
-}
-
-static int
-get_year( fields *info, int level )
-{
-	int year = fields_find( info, "YEAR", level );
-	if ( year==-1 )
-		year = fields_find( info, "PARTYEAR", level );
-	return year;
+	newstr *sn = fields_findv( f, LEVEL_ANY, FIELDS_STRP, "PAGESTART" );
+	newstr *en = fields_findv( f, LEVEL_ANY, FIELDS_STRP, "PAGEEND" );
+	newstr *ar = fields_findv( f, LEVEL_ANY, FIELDS_STRP, "ARTICLENUMBER" );
+	if ( sn && sn->len!=0 ) fprintf( fp, "%%P %s\n", sn->data );
+	else if ( ar && ar->len!=0 ) fprintf( fp, "%%P %s\n", ar->data );
+	if ( en && en->len!=0 ) fprintf( fp, "%%L %s\n", en->data );
 }
 
 static int
@@ -251,7 +230,7 @@ mont2mont( const char *m )
 	static char *monNames[]= { "jan", "feb", "mar", "apr", "may", 
 			"jun", "jul", "aug", "sep", "oct", "nov", "dec" };
 	int i;
-	if ( isdigit( m[0] ) ) return atoi( m );
+	if ( isdigit( (unsigned char)m[0] ) ) return atoi( m );
         else {
 		for ( i=0; i<12; i++ ) {
 			if ( !strncasecmp( m, monNames[i], 3 ) ) return i+1;
@@ -261,24 +240,23 @@ mont2mont( const char *m )
 }
 
 static int
-get_month( fields *info, int level )
+get_month( fields *f, int level )
 {
-	int n;
-	n = fields_find( info, "MONTH", level );
-	if ( n==-1 ) n = fields_find( info, "PARTMONTH", level );
-	if ( n==-1 ) return 0;
-	else return mont2mont( info->data[n].data ); 
+	newstr *month = fields_findv_firstof( f, level, FIELDS_STRP,
+			"MONTH", "PARTMONTH", NULL );
+	if ( month && month->len ) return mont2mont( month->data );
+	else return 0;
 }
 
 static void
-output_date( FILE *fp, fields *info, char *entag, int level )
+output_date( FILE *fp, fields *f, char *adstag, int level )
 {
-	int year, month;
-	year = get_year( info, level );
-	if ( year!=-1 ) {
-		month = get_month( info, level );
-		fprintf( fp, "%s %02d/%s\n", entag, month, 
-			info->data[year].data );
+	newstr *year = fields_findv_firstof( f, level, FIELDS_STRP,
+		"YEAR", "PARTYEAR", NULL );
+	int month;
+	if ( year && year->len ) {
+		month = get_month( f, level );
+		fprintf( fp, "%s %02d/%s\n", adstag, month, year->data );
 	}
 }
 
@@ -289,7 +267,11 @@ output_4digit_value( char *pos, long long n )
 {
 	char buf[6];
 	n = n % 10000; /* truncate to 0->9999, will fit in buf[6] */
+#ifdef WIN32
+	sprintf( buf, "%I64d", n );
+#else
 	sprintf( buf, "%lld", n );
+#endif
 	if ( n < 10 )        strncpy( pos+3, buf, 1 );
 	else if ( n < 100 )  strncpy( pos+2, buf, 2 );
 	else if ( n < 1000 ) strncpy( pos+1, buf, 3 );
@@ -297,35 +279,31 @@ output_4digit_value( char *pos, long long n )
 }
 
 static char
-get_firstinitial( fields *info )
+get_firstinitial( fields *f )
 {
-	int n = fields_find( info, "AUTHOR", 0 );
-	if ( n==-1 ) n = fields_find( info, "AUTHOR", -1 );
-	if ( n!=-1 ) return info->data[n].data[0];
-	else return '\0';
-}
+	char *name;
+	int n;
 
-static int
-min( int a, int b )
-{
-	if ( a < b ) return a;
-	else return b;
+	n = fields_find( f, "AUTHOR", LEVEL_MAIN );
+	if ( n==-1 ) n = fields_find( f, "AUTHOR", LEVEL_ANY );
+
+	if ( n!=-1 ) {
+		name = fields_value( f, n, FIELDS_CHRP );
+		return name[0];
+	} else return '\0';
 }
 
 static int
-get_journalabbr( fields *info )
+get_journalabbr( fields *f )
 {
 	char *jrnl;
-	int ljrnl, ltmp, len, n, j;
+	int n, j;
 
-	n = fields_find( info, "TITLE", LEVEL_HOST );
+	n = fields_find( f, "TITLE", LEVEL_HOST );
 	if ( n!=-1 ) {
-		jrnl = info->data[n].data;
-		ljrnl = strlen( jrnl );
+		jrnl = fields_value( f, n, FIELDS_CHRP );
 		for ( j=0; j<njournals; j++ ) {
-			ltmp = strlen( journals[j]+6 );
-			len = min( ljrnl, ltmp );
-			if ( !strncasecmp( jrnl, journals[j]+6, len ) )
+			if ( !strcasecmp( jrnl, journals[j]+6 ) )
 				return j;
 		}
 	}
@@ -333,32 +311,38 @@ get_journalabbr( fields *info )
 }
 
 static void
-output_Rtag( FILE *fp, fields *info, char * entag, int type )
+output_Rtag( FILE *fp, fields *f, char *adstag, int type )
 {
 	char out[20], ch;
-	int n;
+	int n, i;
 	long long page;
 
 	strcpy( out, "..................." );
 
 	/** YYYY */
-	n = fields_find( info, "YEAR", -1 );
-	if ( n==-1 ) n = fields_find( info, "PARTYEAR", -1 );
-	if ( n!=-1 ) output_4digit_value( out, atoi( info->data[n].data ) );
+	n = fields_find( f, "YEAR", LEVEL_ANY );
+	if ( n==-1 ) n = fields_find( f, "PARTYEAR", LEVEL_ANY );
+	if ( n!=-1 ) output_4digit_value( out, atoi( fields_value( f, n, FIELDS_CHRP ) ) );
 
 	/** JJJJ */
-	n = get_journalabbr( info );
-	if ( n!=-1 ) strncpy( out+4, journals[n], 5 );
+	n = get_journalabbr( f );
+	if ( n!=-1 ) {
+		i = 0;
+		while ( i<5 && journals[n][i]!=' ' && journals[n][i]!='\t' ) {
+			out[4+i] = journals[n][i];
+			i++;
+		}
+	}
 
 	/** VVVV */
-	n = fields_find( info, "VOLUME", -1 );
-	if ( n!=-1 ) output_4digit_value( out+9, atoi( info->data[n].data ) );
+	n = fields_find( f, "VOLUME", LEVEL_ANY );
+	if ( n!=-1 ) output_4digit_value( out+9, atoi( fields_value( f, n, FIELDS_CHRP ) ) );
 
 	/** MPPPP */
-	n = fields_find( info, "PAGESTART", -1 );
-	if ( n==-1 ) n = fields_find( info, "ARTICLENUMBER", -1 );
+	n = fields_find( f, "PAGESTART", LEVEL_ANY );
+	if ( n==-1 ) n = fields_find( f, "ARTICLENUMBER", LEVEL_ANY );
 	if ( n!=-1 ) {
-		page = atoll( info->data[n].data );
+		page = atoll( fields_value( f, n, FIELDS_CHRP ) );
 		output_4digit_value( out+14, page );
 		if ( page>=10000 ) {
 			ch = 'a' + (page/10000);
@@ -367,82 +351,76 @@ output_Rtag( FILE *fp, fields *info, char * entag, int type )
 	}
 
 	/** A */
-        ch = toupper( get_firstinitial( info ) );
+        ch = toupper( (unsigned char) get_firstinitial( f ) );
 	if ( ch!='\0' ) out[18] = ch;
 
-	fprintf( fp, "%s %s\n", entag, out );
+	fprintf( fp, "%s %s\n", adstag, out );
 }
 
 static void
-output_easyall( FILE *fp, fields *info, char *tag, char *entag, int level )
+output_easyall( FILE *fp, fields *f, char *tag, char *adstag, int level )
 {
+	vplist a;
 	int i;
-	for ( i=0; i<info->nfields; ++i ) {
-		if ( level!=-1 && info->level[i]!=level ) continue;
-		if ( !strcmp( info->tag[i].data, tag ) )
-			fprintf( fp, "%s %s\n", entag, info->data[i].data );
-	}
+	vplist_init( &a );
+	fields_findv_each( f, level, FIELDS_CHRP, &a, tag );
+	for ( i=0; i<a.n; ++i )
+		fprintf( fp, "%s %s\n", adstag, (char *) vplist_get( &a, i ) );
+	vplist_free( &a );
 }
 
 static void
-output_easy( FILE *fp, fields *info, char *tag, char *entag, int level )
+output_easy( FILE *fp, fields *f, char *tag, char *adstag, int level )
 {
-	int n = fields_find( info, tag, level );
-	if ( n!=-1 )
-		fprintf( fp, "%s %s\n", entag, info->data[n].data );
+	char *value = fields_findv( f, level, FIELDS_CHRP, tag );
+	if ( value && value[0]!='\0' ) fprintf( fp, "%s %s\n", adstag, value );
 }
 
 static void
-output_keys( FILE *fp, fields *info, char *tag, char *entag, int level )
+output_keys( FILE *fp, fields *f, char *tag, char *adstag, int level )
 {
-	int i, n, nkeys = 0;
-	n = fields_find( info, tag, level );
-	if ( n!=-1 ) {
-		fprintf( fp, "%s ", entag );
-		for ( i=0; i<info->nfields; ++i ) {
-			if ( level!=-1 && info->level[i]!=level ) continue;
-			if ( !strcmp( info->tag[i].data, tag ) ) {
-				if ( nkeys ) fprintf( fp, ", " );
-				fprintf( fp, "%s", info->data[i].data );
-				nkeys++;
-			}
-		}
-		fprintf( fp, "\n" );
+	vplist a;
+	int i;
+	vplist_init( &a );
+	fields_findv_each( f, level, FIELDS_CHRP, &a, tag );
+	for ( i=0; i<a.n; ++i ) {
+		if ( i==0 ) fprintf( fp, "%s ", adstag );
+		else fprintf( fp, ", " );
+		fprintf( fp, "%s", (char *) vplist_get( &a, i ) );
 	}
+	if ( a.n ) fprintf( fp, "\n" );
+	vplist_free( &a );
 }
 
 void
-adsout_write( fields *info, FILE *fp, param *p, unsigned long refnum )
+adsout_write( fields *f, FILE *fp, param *p, unsigned long refnum )
 {
 	int type;
-	fields_clearused( info );
-	type = get_type( info );
+	fields_clearused( f );
+	type = get_type( f );
 
-	output_people( fp, info, "AUTHOR", "%A", 0 );
-	output_easyall( fp, info, "AUTHOR:ASIS", "%A", 0 );
-	output_easyall( fp, info, "AUTHOR:CORP", "%A", 0 );
-	output_people( fp, info, "EDITOR", "%E", -1 );
-	output_easyall( fp, info, "EDITOR:ASIS", "%E", -1 );
-	output_easyall( fp, info, "EDITOR:CORP", "%E", -1 );
-	output_easy( fp, info, "TITLE", "%T", -1 );
+	output_people(  fp, f, "AUTHOR", "AUTHOR:ASIS", "AUTHOR:CORP", "%A", LEVEL_MAIN );
+	output_people(  fp, f, "EDITOR", "EDITOR:ASIS", "EDITOR:CORP", "%E", LEVEL_ANY );
+	output_easy(    fp, f, "TITLE",       "%T", LEVEL_ANY );
 
 	if ( type==TYPE_ARTICLE || type==TYPE_MAGARTICLE )
-		output_title( fp, info, "TITLE", "SUBTITLE", "%J", 1 );
-
-	output_date( fp, info, "%D", -1 );
-	output_easy( fp, info, "VOLUME", "%V", -1 );
-	output_easy( fp, info, "ISSUE", "%N", -1 );
-	output_easy( fp, info, "NUMBER", "%N", -1 );
-	output_easy( fp, info, "LANGUAGE", "%M", -1 );
-	output_easyall( fp, info, "NOTES", "%X", -1 );
-	output_easy( fp, info, "ABSTRACT", "%B", -1 );
-	output_keys( fp, info, "KEYWORD", "%K", -1 );
-	output_easyall( fp, info, "URL", "%U", -1 ); 
-	output_easyall( fp, info, "FILEATTACH", "%U", -1 ); 
-	output_pages( fp, info );
-	output_easyall( fp, info, "DOI", "%Y", -1 );
+		output_title( fp, f, "TITLE", "SUBTITLE", "%J", LEVEL_HOST );
+
+	output_date(    fp, f,               "%D", LEVEL_ANY );
+	output_easy(    fp, f, "VOLUME",     "%V", LEVEL_ANY );
+	output_easy(    fp, f, "ISSUE",      "%N", LEVEL_ANY );
+	output_easy(    fp, f, "NUMBER",     "%N", LEVEL_ANY );
+	output_easy(    fp, f, "LANGUAGE",   "%M", LEVEL_ANY );
+	output_easyall( fp, f, "NOTES",      "%X", LEVEL_ANY );
+	output_easy(    fp, f, "ABSTRACT",   "%B", LEVEL_ANY );
+	output_keys(    fp, f, "KEYWORD",    "%K", LEVEL_ANY );
+	output_easyall( fp, f, "URL",        "%U", LEVEL_ANY ); 
+	output_easyall( fp, f, "FILEATTACH", "%U", LEVEL_ANY ); 
+	output_easyall( fp, f, "FIGATTACH",  "%U", LEVEL_ANY ); 
+	output_pages( fp, f );
+	output_easyall( fp, f, "DOI",        "%Y", LEVEL_ANY );
         fprintf( fp, "%%W PHY\n%%G AUTHOR\n" );
-	output_Rtag( fp, info, "%R", type );
+	output_Rtag( fp, f, "%R", type );
 	fprintf( fp, "\n" );
 	fflush( fp );
 }
diff --git a/lib/adsout.h b/lib/adsout.h
index 305deaa..70c08bc 100644
--- a/lib/adsout.h
+++ b/lib/adsout.h
@@ -1,10 +1,10 @@
 /*
  * adsout.h
  *
- * Copyright (c) Richard Mathar 2007-10
- * Copyright (c) Chris Putnam 2007-10
+ * Copyright (c) Richard Mathar 2007-2013
+ * Copyright (c) Chris Putnam 2007-2013
  *
- * Program and source code released under the GPL
+ * Source code released under the GPL version 2
  *
  */
 #ifndef ADSOUT_H
diff --git a/lib/adsout_journals.c b/lib/adsout_journals.c
index 4c04cab..4d2eafb 100644
--- a/lib/adsout_journals.c
+++ b/lib/adsout_journals.c
@@ -6,15 +6,17 @@
  *
  */
 static const char *journals[] = {
+"TDR.. 3D Research",
 "AASHS AAS Hist. Ser.",
+"AASPB AAS Photo Bulletin",
 "AAN.. AAVSO Alert Notice",
 "AAVSC AAVSO Circular",
 "AAVSN AAVSO Newsletter",
-"AbaOB Abastumanskaia Astrofizicheskaia Observatoriia Biulleten",
+"AAVSB AAVSO Solar Bulletin",
+"AbaOB Abastumanskaia Astrofizicheskaia Observatoriia Byulleten",
 "AbbOO Abbadia Observatory Observations",
 "AADDR Abhandlungen Akad. Wiss. DDR",
 "AAGot Abhandlungen Akad. Wiss. Göttingen",
-"AbhHS Abhandlungen aus der Hamburger Sternwarte",
 "ABWG. Abh. Braunschweigische Wissenschaftliche Ges.",
 "AbhP. Abh. der Preuß. Akademie der Wissenschaften Jahrg",
 "AbhKP Abh. Konigl. Preuss. Akad. Wissenschaften Jahre 1906,92, Berlin,1907",
@@ -22,9 +24,9 @@ static const char *journals[] = {
 "AbApA Abstract and Applied Analysis",
 "ASFAS Academia Scientiarum Fennica Annales Series Physica",
 "AOIJ. Academic Open Internet Journal",
-"CRASB Academie des Science Paris Comptes Rendus Serie B Sciences Physiques",
 "CR2.. Academie des Sciences Comptes Rendus Serie Mecanique Physique Chimie Sciences de la Terre et de l Univers",
 "CRAS. Academie des Sciences Paris Comptes Rendus",
+"CRASB Academie des Sciences Paris Comptes Rendus Serie B Sciences Physiques",
 "CRASG Academie des Sciences Paris Comptes Rendus Serie Generale La Vie des Sciences",
 "CRASP Academie des Sciences Paris Comptes Rendus Serie Physique Astrophysique",
 "CRASM Academie des Sciences Paris Comptes Rendus Serie Sciences Mathematiques",
@@ -63,6 +65,7 @@ static const char *journals[] = {
 "AcCrA Acta Crystallographica Section A",
 "AcCrB Acta Crystallographica Section B",
 "AcCrC Acta Crystallographica Section C",
+"AcCrD Acta Crystallographica Section D",
 "AcElc Acta Electrochimica",
 "AcEle Acta Electronica",
 "AcElS Acta Electronica Sinica",
@@ -77,7 +80,8 @@ static const char *journals[] = {
 "AcMat Acta Materialia",
 "AcMa. Acta Mathematica",
 "AcMaH Acta Mathematica Hungarica",
-"AcMaS Acta Math. Sinica",
+"AcMaS Acta Mathematica Sinica",
+"AcMSw Acta Mathematica Sweden",
 "AcMec Acta Mechanica",
 "AcMSn Acta Mechanica Sinica",
 "AcMSS Acta Mechanica Solida Sinica",
@@ -90,6 +94,7 @@ static const char *journals[] = {
 "AcO.. Acta Oecologica",
 "AcOpS Acta Optica Sinica",
 "AcOrS Acta Orthopaedica Scandinavica",
+"AcPSi Acta Photonica Sinica",
 "AcPhy Acta Physica",
 "APASH Acta Physica Academiae Scientiarum Hungaricae",
 "AcPhA Acta Physica Austriaca",
@@ -97,17 +102,21 @@ static const char *journals[] = {
 "AcPhC Acta Physica et Chemica",
 "AcPhH Acta Physica Hungarica",
 "APHHI Acta Physica Hungarica Heavy Ion Physics",
+"APHQE Acta Physica Hungarica Quantum Electronics",
+"AcPP. Acta Physica Polonica",
 "AcPPA Acta Physica Polonica A",
 "AcPPB Acta Physica Polonica B",
 "AcPSn Acta Physica Sinica",
 "AcPSl Acta Physica Slovaca",
 "AcPhS Acta Physiologica Scandinavica",
+"AcPol Acta Polytechnica",
 "AcPSc Acta Polytechnica Scandinavica Applied Physics Series",
 "AcPSP Acta Polytechnica Scandinavica Physics",
 "AcSSn Acta Seismologica Sinica",
 "ASSF. Acta Societatis Scientarum Fennicae",
 "ASSFA Acta Societatis Scientarum Fennicae Series A",
 "AcTec Acta Technica",
+"AcUni Acta Universitaria",
 "AcMPh Acta Universitatis Caroliae. Mathematica et Physica",
 "AcMPS Acta Universitatis Caroliae. Mathematica et Physica Supplement",
 "APEC. Active and Passive Electronic Components",
@@ -128,6 +137,7 @@ static const char *journals[] = {
 "AdAeS Advances in Aeronautical Sciences",
 "AdApM Advances in Applied Mathematics",
 "AdAst Advances in Astronomy",
+"AASP. Advances in Astronomy and Space Physics",
 "AdAtS Advances in Atmospheric Sciences",
 "AdAMP Advances in Atomic and Molecular Physics",
 "AAMOP Advances in Atomic Molecular and Optical Physics",
@@ -135,11 +145,12 @@ static const char *journals[] = {
 "AdBio Advances in Biophysics",
 "AdCP. Advances in Cardiovascular Physics",
 "AdChP Advances in Chemical Physics",
+"AdCIS Advances in Colloid and Interface Science",
 "AdCoM Advances in Computational Mathematics",
 "AdCMP Advances in Condensed Matter Physics",
 "AdEPS Advances in Earth and Planetary Sciences",
 "AdEOA Advances in Earth Oriented Applications and Space Technology",
-"AdEEP Advances in Electronics and Electron Physics",
+"AEEP. Advances in Electronics and Electron Physics",
 "AEEPS Advances in Electronics and Electron Physics Supplement",
 "AdExG Advances in Exploration Geophysics",
 "AdGDP Advances in Geophysical Data Processing",
@@ -149,6 +160,10 @@ static const char *journals[] = {
 "AdG.. Advances in Geosciences",
 "AdHEP Advances in High Energy Physics",
 "ADIEP Advances in Imaging and Electron Physics",
+"AdMRe Advances in Magnetic Resonance",
+"AdMPC Advances in Materials Physics and Chemistry",
+"AdMS. Advances in Materials Science",
+"AdMSE Advances in Materials Science and Engineering",
 "AdMaP Advances in Mathematical Physics",
 "AdMat Advances in Mathematics",
 "AdMPS Advances in Mechanics and Physics of Surfaces",
@@ -166,11 +181,14 @@ static const char *journals[] = {
 "AdSR. Advances in Science and Research",
 "AdSSP Advances in Solid State Physics",
 "AdSpR Advances in Space Research",
-"AAnSc Advances in the Astronautical Sciences",
+"AdAnS Advances in the Astronautical Sciences",
+"AdTAM Advances in Theoretical and Applied Mechanics",
 "AdTMP Advances in Theoretical and Mathematical Physics",
+"AdThP Advances in Theoretical Physics",
 "AdWR. Advances in Water Resources",
 "AAMS. Adv. Appl. Mech. Suppl.",
 "ATTM. AEG Telefunken Technische Mitteilungen",
+"AeoRe Aeolian Research",
 "Aekv. Aerodinamika kanalov i ventiliatorov",
 "AeRaG Aerodinamika Razrezhennykh Gazov",
 "AerTe Aerojet Technology",
@@ -181,7 +199,7 @@ static const char *journals[] = {
 "AerST Aerosol Science Technology",
 "AeAm. Aerospace America",
 "AeCh. Aerospace China",
-"AeCM. Aerospace Composites Materials",
+"AeCM. Aerospace Composites and Materials",
 "AeDy. Aerospace Dynamics",
 "AeEn. Aerospace Engineering",
 "AeMat Aerospace Materials",
@@ -198,6 +216,7 @@ static const char *journals[] = {
 "AIChE AIChE Journal",
 "EDAM. AI EDAM",
 "AIHAJ AIHA Journal",
+"AIPA. AIP Advances",
 "AirSp Air and Space",
 "AirE. Aircraft Engineering",
 "AirCo Air et Cosmos",
@@ -241,6 +260,7 @@ static const char *journals[] = {
 "AkZh. Akusticheskii Zhurnal",
 "AkTek Akustika i Ul trazvukovaia Tekhnika",
 "AAIzN Alma Ata Izdatel Nauka",
+"ALMAN ALMA Newsletter",
 "AlFr. Alta Frequenza",
 "AFRE. Alta Frequenza Rivista di Elettronica",
 "Ambio Ambio",
@@ -262,7 +282,9 @@ static const char *journals[] = {
 "AmSci American Scientist",
 "ASME. American Society of Mechanical Engineers",
 "AnCoi Anais do Observatorio Astronomico da Universidade de Coimbra",
+"AnFis Anales de Fisica",
 "AICSP Analog Integrated Circuits and Signal Processing",
+"AnMP. Analysis and Mathematical Physics",
 "AnBio Analytical Biochemistry",
 "AnaCh Analytical Chemistry",
 "AnaIn Analytical Instrumentation",
@@ -281,12 +303,16 @@ static const char *journals[] = {
 "AnMet Annalen Meteorologie",
 "AnLei Annalen van de Sterrewacht te Leiden",
 "AnAp. Annales d'Astrophysique",
+"AnCPh Annales de Chimie et de Physique",
 "AnG.. Annales de Geophysique",
 "AFLB. Annales de la Fondation Louis de Broglie",
 "ASSB. Annales de la Societe Scietifique de Bruxelles",
 "AnIHP Annales de L'Institut Henri Poincare Section Physique Theorique",
 "AnTou Annales de l'Observatoire Astron. et Meteo. de Toulouse",
+"AnAIK Annales de l'Observatoire astronomique de l'Université imériale de Kharkow",
 "AOTok Annales de l'Observatoire astronomique de Tokyo",
+"AnZoC Annales de l'Observatoire astronomique de Zô-sè (Chine)",
+"AnAPM Annales de l'Observatoire d'astronomie physique de Paris, Section d'astrophysique, à Meudon",
 "AnBes Annales de l'Observatoire de Besancon",
 "AnBor Annales de l'Observatoire de Bordeaux",
 "AnNic Annales de l'Observatoire de Nice",
@@ -309,6 +335,8 @@ static const char *journals[] = {
 "AnGeB Annales Geophysicae Series B Terrestrial and Planetary Physics",
 "AnHP. Annales Henri Poincaré",
 "AnTec Annales Tectonicae",
+"AUGGM Annales UMCS, Geographia, Geologia, Mineralogia et Petrographia",
+"AUSPh Annales UMCS, Sectio AAA: PHYSICA",
 "AnApS Annals of Applied Statistics",
 "AGp.. Annals of Geophysics",
 "AnGla Annals of Glaciology",
@@ -328,19 +356,24 @@ static const char *journals[] = {
 "AnDea Annals of the Dearborn Observatory",
 "AnDud Annals of the Dudley Observatory",
 "AnISM Annals of the Institute of Statistical Mathematics",
+"AIQSY Annals of the IQSY",
 "AnIPS Annals of the Israel Physical Society",
 "AnLow Annals of the Lowell Observatory",
 "NYASA Annals of the New York Academy of Sciences",
 "AnLL. Annals of the Observatory of Lucien Libert",
 "AnLun Annals of the Observatory of Lund",
+"AnLuS Annals of the Observatory of Lund Supplement",
 "AnOLL Annals of the Private Observatory of Lucien Libert",
 "AnEdi Annals of the Royal Observatory, Edinburgh",
+"AnSPC Annals of the Solar Physics Observatory Cambridge England",
 "AnTok Annals of the Tokyo Astronomical Observatory",
+"AnUCP Annals of the University of Craiova Physics AUC",
 "AnRev Ann Rev",
 "AnBSJ Annual Bulletin of the Societe Jersiaise",
-"YalAR Annual report of the Astronomer of the Winchester Observatory of Yale College",
+"YalAR Annual Report of the Astronomer of the Winchester Observatory of Yale College",
 "ARKod Annual Report of the Kodaikanal Observatory",
 "MMAAR Annual Report of the Maria Mitchell Association",
+"ARAOJ Annual Report of the National Astronomical Observatory of Japan",
 "AnRSI Annual Report of the Smithsonian Institution",
 "WinAR Annual Report of the Windsor Observatory, New South Wales",
 "ARAC. Annual Review of Analytical Chemistry",
@@ -348,6 +381,7 @@ static const char *journals[] = {
 "AREPS Annual Review of Earth and Planetary Sciences",
 "AnRE. Annual Review of Energy",
 "AnRFM Annual Review of Fluid Mechanics",
+"ARIST Annual Review of Information Science and Technology",
 "ARMS. Annual Review of Marine Science",
 "AnRMS Annual Review of Materials Science",
 "ARNPS Annual Review of Nuclear and Particle Science",
@@ -363,6 +397,7 @@ static const char *journals[] = {
 "ApAN. Apatity Akademiia Nauk SSSR",
 "ApKF. Apatity Kol skii Filial AN SSSR",
 "Apei. Apeiron",
+"ApMat Aplikace Matematiky, Applied Mathematics",
 "AppAn Applicable Analysis",
 "ApMa. Applications of Mathematics",
 "ApAc. Applied Acoustics",
@@ -373,14 +408,17 @@ static const char *journals[] = {
 "ApEnM Applied Environmental Microbiology",
 "ApGeo Applied Geophysics",
 "ApMF. Applied Mathematical Finance",
-"ApMat Applied Mathematics",
+"AMat. Applied Mathematics",
+"ApMM. Applied Mathematics and Mechanics",
 "ApMaC Applied Mathematics Computation",
 "ApMaL Applied Mathematics Letters",
 "ApMaM Applied Mathematics Mechanics English Edition",
 "ApMaO Applied Mathematics Optimization",
+"AMM.. Applied Mechanics and Materials",
 "ApMRv Applied Mechanics Reviews",
 "ApMic Applied Microbiology",
 "ApMT. Applied Microgravity Technology",
+"ApNan Applied Nanoscience",
 "ApNM. Applied Numerical Mathematics",
 "ApOpt Applied Optics",
 "ApPhy Applied Physics",
@@ -390,30 +428,40 @@ static const char *journals[] = {
 "ApPhC Applied Physics Communications",
 "APExp Applied Physics Express",
 "ApPhL Applied Physics Letters",
+"ApPhR Applied Physics Research",
 "ApScR Applied Scientific Research",
+"ApSRA Applied Scientific Research Section A",
+"ApSRB Applied Scientific Research Section B",
 "ApSpe Applied Spectroscopy",
 "ApSRv Applied Spectroscopy Reviews",
 "ApSup Applied Superconductivity",
 "ApSS. Applied Surface Science",
+"ApWS. Applied Water Science",
 "APS.. APS Meeting Abstracts",
 "ACMFE Aquatic Conservation: Marine and Freshwater Ecosystems",
 "AJSE. Arabian Journal of Science Engineering",
 "Arch. Archaeoastronomy",
 "ArchS Archaeoastronomy Supplement",
 "Archa Archaeometry",
+"ASBTV Archenhold-Sternwarte Berlin-Treptow, Vortrage Schr.",
 "ArApM Archive Applied Mechanics",
 "AHES. Archive for History of Exact Sciences",
 "ArRMA Archive for Rational Mechanics and Analysis",
 "ArElU Archiv Elektronik und Uebertragungstechnik",
+"AAM.. Archive of Applied Mechanics",
+"ArApM Archive of Applied Mechanics",
 "ArBB. Archive of Biochemistry and Biophysics",
 "ArAco Archives Acoustics",
 "ArS.. Archives des Sciences",
+"ArSPN Archives des Sciences Physiques et Naturelles",
 "AMGBA Archives for Meteorology Geophysics and Bioclimatology Series A Meteorology and Atmopsheric Physics",
 "AMGBB Archives for Meteorology Geophysics and Bioclimatology Series B Theoretical and Applied Climatology",
 "AIPBB Archives Internationales de Physiologie de Biochimie et de Biophysique",
-"ArMAM Archives Mechanics Archiwum Mechaniki Stosowanej",
+"ArNSc Archives Neerlandaises des Sciences Exactes et Naturelles",
+"ArMaN Archiv for Mathematik og Naturvidenskab",
 "AMGBK Archiv Meteorologie Geophysik und Bioklimatologie Serie B Klimatologie und Umweltmeteorologie Strahlungsforschung",
 "AMGBS Archiv Meteorologie Geophysik und Bioklimatologie Serie Meteorologie und Geophysik",
+"ArMeS Archiv of Mechanics, Archiwum Mechaniki Stosowanej",
 "ArCom Archivum Combustionis",
 "ArAku Archiwum Akustyki",
 "ArAuT Archiwum Automatyki i Telemechaniki",
@@ -427,12 +475,22 @@ static const char *journals[] = {
 "ArM.. Arkiv for Matematik",
 "ArMAF Arkiv for Matematik, Astronomi och Fysik",
 "ArmOL Armagh Observatory Leaflet",
+"ArJPh Armenian Journal of Physics",
 "ArtSa Artificial Satellites",
+"astro ArXiv Astrophysics e-prints",
 "cs... ArXiv Computer Science e-prints",
 "arXiv ArXiv e-prints",
-"gr.qc ArXiv General Relativity and Quantum Cosmology e-prints",
+"gr.qc ArXiv General Relativity and Quantum Cosmology eprints",
+"hepex ArXiv High Energy Physics - Experiment e-prints",
+"hepla ArXiv High Energy Physics - Lattice e-prints",
+"hepph ArXiv High Energy Physics - Phenomenology e-prints",
+"hepth ArXiv High Energy Physics - Theory e-prints",
+"mathp ArXiv Mathematical Physics e-prints",
 "math. ArXiv Mathematics e-prints",
 "nlin. ArXiv Nonlinear Sciences e-prints",
+"nucle ArXiv Nuclear Experiment e-prints",
+"nuclt ArXiv Nuclear Theory e-prints",
+"physicArXiv Physics e-prints",
 "ASHRA ASHRAE Journal",
 "AsJPh Asian Journal of Physics",
 "Aslib Aslib Proceedings: new information perspectives",
@@ -440,7 +498,7 @@ static const char *journals[] = {
 "ATJDS ASME Transactions Journal of Dynamic Systems and Measurement Control B",
 "ATJEl ASME Transactions Journal of Electronic Packaging",
 "ATJEG ASME Transactions Journal of Engineering Gas Turbines and Power",
-"ATJEn ASME Transactions Journal of Engineering Power",
+"ATJEP ASME Transactions Journal of Engineering Power",
 "ATJFE ASME Transactions Journal of Fluids Engineering",
 "ATJHT ASME Transactions Journal of Heat Transfer",
 "ATJLT ASME Transactions Journal of Lubrication Technology",
@@ -467,6 +525,8 @@ static const char *journals[] = {
 "Asnau Astronautik",
 "AUBas Astron. Inst. Univ. Basel",
 "Anews ASTRON Newsletter",
+"AsUAI Astronomia. La rivista dell' Unione Astrofili Italiani",
+"Astnm Astronomia UAI",
 "USNOM Astronomical and Meteorological Observations made at the U.S. Naval Observatory",
 "ACiCh Astronomical Circular",
 "ACMan Astronomical Contributions from the University of Manchester",
@@ -478,35 +538,37 @@ static const char *journals[] = {
 "ANote Astronomical Notes University of Gothenburg Sweden Section of Astronomy",
 "USNOA Astronomical Observations made at the U.S. Naval Observatory",
 "UCLAP Astronomical Papers University of California Los Angeles",
-"AReg. Astronomical register",
+"AReg. Astronomical Register",
 "ASSA. Astronomical Society of South Africa, Cape Centre",
 "AVest Astronomicheskii Vestnik",
 "AVISS Astronomicheskii Vestnik Issledovaniia Solnechnoi Sistemy",
 "AZh.. Astronomicheskii Zhurnal",
 "ATsir Astronomicheskij Tsirkulyar",
 "KazOB Astronomicheskoj Observatorii Kazan Byulleten",
+"AsSch Astronomie in der Schule",
 "AAAN. Astronomische Abhandlungen als Erganzungshefte zu den Astronomische Nachrichten",
 "AAHam Astronomische Abhandlungen der Hamburger Sternwarte",
 "ABMun Astronomische Beobachtungen angestellt auf der K. Sternwarte zu Bogenhausen bei Muenchen",
 "ABSBe Astronomische Beobachtungen auf der Koniglichen Sternwarte zu Berlin",
 "ABKie Astronomische Beobachtungen auf der Sternwarte der Koeniglichen Christian-Albrechts-Universitaet zu Kiel",
-"MiZur Astronomische Mitteilungen der Eiden�ssischen Sternwarte Zurich",
+"MiZur Astronomische Mitteilungen der Eidgenössischen Sternwarte Zurich",
 "MiBre Astronomische Mitteilungen der Koeniglichen Universitaets-Sternwarte zu Breslau",
 "MiGoe Astronomische Mitteilungen der Universitaets-Sternwarte zu Goettingen",
 "AN... Astronomische Nachrichten",
 "ANS.. Astronomische Nachrichten Supplement",
+"MitSZ Astronomischen Mitteilungen Eidgen. Sternwarte Zurich",
 "AJB.. Astronomischer Jahresbericht",
 "MiARI Astronomisches Rechen-Institut Heidelberg Mitteilungen Serie A",
 "MiARB Astronomisches Rechen-Institut Heidelberg Mitteilungen Serie B",
 "ATi.. Astronomisk Tidsskrift",
 "Ast.. Astronomy",
 "Astro Astronomy",
-"AstAp Astronomy and Astro-Physics",
+"AstAp Astronomy and Astro-Physics (formerly The Sidereal Messenger)",
 "ADIL. Astronomy Data Image Library",
 "AEdRv Astronomy Education Review",
 "AExpr Astronomy Express",
 "AstL. Astronomy Letters",
-"AstNw Astronomy Now",
+"AsNow Astronomy Now",
 "AstQ. Astronomy Quarterly",
 "ARep. Astronomy Reports",
 "AASPP Astrononomy and Astrophysics Series",
@@ -517,13 +579,16 @@ static const char *journals[] = {
 "ApNr. Astrophysica Norvegica",
 "Ap... Astrophysics",
 "ASPRv Astrophysics and Space Physics Reviews",
+"ApSSP Astrophysics and Space Science Proceedings",
 "ASTRA Astrophysics and Space Sciences Transactions",
 "ApSSS Astrophysics and Space Science Supplement",
-"astro.ArXiv Astrophysics e-prints",
 "MKAtl Astrophysics monographs University of Chicago Press",
 "ArBei Astrophysics Reports Publications of the Beijing Astronomical Observatory",
+"ApT.. Astrophysics Today",
 "AstPo Astropolitics",
 "AsAna Asymptotic Analysis",
+"BLabR AT&amp",
+"AJSEd Atlas Journal of Science Education",
 "AtlVS Atlas Poiskovykh Kart Peremennykh Zvezd",
 "Atmos Atmosphere",
 "AtO.. Atmosphere Ocean",
@@ -537,12 +602,15 @@ static const char *journals[] = {
 "AtSc. Atmospheric Science",
 "AtScL Atmospheric Science Letters",
 "AtmTe Atmospheric Technology",
+"atnfp ATNF Proposal",
+"Atom. Atom",
 "AD... Atomic Data",
 "ADNDT Atomic Data and Nuclear Data Tables",
 "AtERv Atomic Energy Review",
 "AMOP. Atomic Molecular and Optical Physics",
 "AtPhy Atomic Physics",
 "AtST. Atomisation Spray Technology",
+"AtKe. Atomkernenergie",
 "AtEn. Atomnaia Energiia",
 "AVET. Atomno Vodorodnaia Energetika i Tekhnologiia",
 "ATR.. ATR Australian Telecommunication Research",
@@ -551,7 +619,8 @@ static const char *journals[] = {
 "AAST. Atti Accad. Sco. Torino I",
 "ATTTJ AT T Technical Journal",
 "AurPh Auroral physics",
-"AuJAR Aust. J. Agric. Res.",
+"AuJAR Australian Journal of Agricultural Research",
+"AuJA. Australian Journal of Astronomy",
 "AuJCE Australian Journal of Chemical Education",
 "AJCh. Australian Journal of Chemistry",
 "AuJES Australian Journal of Earth Sciences",
@@ -573,6 +642,7 @@ static const char *journals[] = {
 "Avtme Avtometriia",
 "BBUSS Babes Bolyai Universitas Studia Series Mathematica",
 "BBUSM Babes Bolyai Universitas Studia Series Physica",
+"BaPhL Balkan Physics Letters",
 "BaltA Baltic Astronomy",
 "BamKV Bamberg Kleine Veroeffentlichungen der Remeis-Sternwarte",
 "BAVRu BAV Rundbrief",
@@ -587,7 +657,6 @@ static const char *journals[] = {
 "BeiGe Beitraege zur Geophysik",
 "BeiMP Beitraege zur Mineralogie und Petrographie",
 "BROGS Belgian Royal Observatory Communications Series Geophysics Series",
-"BLabR Bell Laboratories Record",
 "BKAD. Beobachtungen der Kaiserlichen Universitaets-Sternwarte Dorpat",
 "BKUJ. Beobachtungen der Kaiserlichen Universitaets-Sternwarte Jurjew",
 "BESBe Beobachtungs-Ergebnisse der Koniglichen Sternwarte zu Berlin",
@@ -631,9 +700,11 @@ static const char *journals[] = {
 "BioSc BioScience",
 "BiotL Biotechnology Letters",
 "BOTor Biuletyn Obserwatoium Astronomicznego Uniwersytetu M. Kopernika w Toruniu",
+"BITad Biulletini of the Astronomical Institute Akademiia Nauk Tadzhikskoi",
 "BIAst Bjull. Inst. Astrofizikii",
 "BlazD BLAZAR Data",
 "BAAA. Boletin de la Asociacion Argentina de Astronomia La Plata Argentina",
+"BAOM. Boletin de la Astronomico Observatorio de Madrid",
 "BIMAF Boletin del Instituto de Matematica Astronomica y Fisica Universidad Nacional de Cordoba Argentina",
 "BITon Boletin del Instituto de Tonantzintla",
 "BOTT. Boletin de los Observatorios Tonantzintla y Tacubaya",
@@ -641,6 +712,7 @@ static const char *journals[] = {
 "BlDok Bolgarska Akademiia Nauk Doklady",
 "BSVit Bolletino della Societa dei Variabilisti Italiani",
 "BoSAI Bollettino della Societa Astronomica Italiana",
+"BGSA. Bollettino Geod. Scienzi Affini",
 "BonD. Bonner Durchmusterung",
 "BoLMe Boundary-Layer Meteorology",
 "Brain Brain",
@@ -673,11 +745,13 @@ static const char *journals[] = {
 "BuAsR Bulletin Astronomique, Revue Generale des Travaux Astronomiques",
 "BuAsI Bulletin Astronomique, Serie I",
 "BuChr Bulletin Chronometrique (Besancon)",
+"BCSAB Bulletin Cl. Science Academy Royal de Belgique",
 "BCrAO Bulletin Crimean Astrophysical Observatory",
 "BAPSS Bulletin de l'Academie Polonaise des Sciences Series des Sciences Mathematiques Astronomiques et Physiques",
 "BARB. Bulletin de l'Academie Royale de Belgique",
 "BSAF. Bulletin de la Societe Astronomique de France",
 "BSAFR Bulletin de la Societe Astronomique de France et Revue Mensuelle d'Astronomie, de Meteorologie et de Physique du Globe",
+"BSAL. Bulletin de la Societe Astronomique de Liege",
 "BSBA. Bulletin de la Societe Belge d'Astronomie",
 "BSRSL Bulletin de la Societe Royale des Sciences de Liege",
 "AFOEV Bulletin de l'Association Francaise d'Observateurs d'Etoiles Variables",
@@ -685,11 +759,13 @@ static const char *journals[] = {
 "BOBeo Bulletin de l'Observatoire Astronomique de Belgrade",
 "BuLyo Bulletin de l'Observatoire de Lyon",
 "BBSAG Bulletin der Bedeckungsveraenderlichen-Beobachter der Schweizerischen Astronomischen Gesellschaft",
+"BIEBe Bulletin d'Information d'Etoiles Be",
 "BIM.. Bulletin d'Information des Marees Terrestres",
 "BIBGI Bulletin d'Information du Bureau Gravimetrique International",
 "BICDS Bulletin d'Information du Centre de Donnees Stellaires",
 "BCFHT Bulletin d'information du telescope Canada-France-Hawaii",
 "BGeod Bulletin Geodesique",
+"BGNS. Bulletin Geodesique, Nouvelle Series",
 "BuBIH Bulletin Horaire du Bureau International de l'Heure",
 "BOPul Bulletin (Izvestiya) de l'Observatoire Central a Poulkovo",
 "BuMat Bulletin Mathematique",
@@ -699,6 +775,8 @@ static const char *journals[] = {
 "BPAS. Bulletin of Pure and Applied Science (Physics)",
 "BAAPG Bulletin of the American Association of Petroleum Geologists",
 "BAVSO Bulletin of the American Association of Variable Stars Observers",
+"BAAS. Bulletin of the American Astronomical Society",
+"BAMaS Bulletin of the American Mathematical Society",
 "BAMS. Bulletin of the American Meteorological Society",
 "BAPS. Bulletin of the American Physical Society",
 "BAICz Bulletin of the Astronomical Institutes of Czechoslovakia",
@@ -709,12 +787,17 @@ static const char *journals[] = {
 "BASBr Bulletin of the Astronomical Society of Brazil",
 "BASI. Bulletin of the Astronomical Society of India",
 "BCAIC Bulletin of the Central Astronomical Institute of Czechoslovakia",
+"BuGSA Bulletin of the Geological Society of America",
+"BIMIA Bulletin of the Institute of Mathematics and Its Applications",
 "BuIPS Bulletin of the Israel Physical Society",
 "BKobO Bulletin of the Kobe Marine Observatory Kobe Japan",
+"BLPI. Bulletin of the Lebedev Physics Institute",
 "BuLMS Bulletin of the London Mathematical Society",
 "BRASP Bulletin of the Russian Academy of Science, Phys.",
 "BSAst Bulletin of the Section of Astronomy",
 "BSAE. Bulletin of the Soviet Antarctic Expedition",
+"BuONC Bulletin of the Special Astrophysical Observatory, Northern Caucasus",
+"BSAO. Bulletin of the Special Astrophysics Observatory",
 "BTasO Bulletin of the Tashkent Observatory",
 "BTok. Bulletin of the Tokyo Astronomical Observatory",
 "BToIT Bulletin of the Tokyo Institute of Technology",
@@ -724,14 +807,18 @@ static const char *journals[] = {
 "BVol. Bulletin of Volcanology",
 "BCNRS Bulletin Signaletique - Centre National de la Recherche Scientifique",
 "BSAO. Bull. Special Astrophys. Obs.",
+"BIHCD Bureau Internationale Heure, Paris, Circulaire",
 "BDus. Byulleten' Instituta Astrofiziki Dushanbe Akademiya Nauk Tadzhikskoj SSR",
 "BITA. Byulleten' Instituta Teoreticheskoj Astronomii (Leningrad)",
 "BStaO Byulleten' Stalinabadskoj Astronomicheskoj Observatorii Akademiya Nauk Tadzhikskoj SSR",
 "ByuRe Byurakan Astrophysical Observatory Armenia USSR Reprints",
 "ByuPr Byurakanskaya Astrofizicheskaya Observatoriya Preprint",
+"CahPh Cahiers de Physique",
 "CAS.. Cambridge Astrophysics Series",
 "CCA.. Cambridge Contemporary Astrophysics",
 "CamRe Cambridge Observatories Reprints",
+"CMPNC Cambridge Monographs on Particle Physics, Nuclear Physics and Cosmology",
+"CMPPh Cambridge Monographs on Plasma Physics",
 "CSLPT Cambridge Studies in Low Temperature Physics",
 "CTMPC Cambridge Topics in Mineral Physics and Chemistry",
 "BCNRC Canada National Research Council Division Mechanical Engineering National Aeronautical Establishment Quarterly Bulletin",
@@ -747,8 +834,10 @@ static const char *journals[] = {
 "CJECE Canadian Journal of Electrical Computer Engineering",
 "CJMat Canadian Journal of Mathematics",
 "CaJPh Canadian Journal of Physics",
+"CaJPS Canadian Journal of Physics Supplement",
 "CaJRS Canadian Journal of Remote Sensing",
 "CJRA. Canadian Journal of Research Section A",
+"CJSMT Canadian Journal of Science Mathematics and Technology Education",
 "CaJSS Canadian Journal of Soil Science",
 "CaRes Cancer Research",
 "CPhD. Cape Photographic Durchmusterung",
@@ -772,10 +861,13 @@ static const char *journals[] = {
 "CfAPr Center for Astrophysics Cambridge Mass Preprint Series",
 "CBET. Central Bureau Electronic Telegrams",
 "CEAB. Central European Astrophysical Bulletin",
+"CEJE. Central European Journal of Engineering",
+"CEJG. Central European Journal of Geosciences",
 "CEJPh Central European Journal of Physics",
 "CPH.. Centre de Physique des Houches",
 "CCpFS Ceskoslovensky Casopis pro Fyziku Sekce",
 "CFDAA CFD Advances Applications",
+"CKH.. Chagyo Kenkyu Hokoku (Tea Research Journal)",
 "ChNew Chandra News",
 "Chaos Chaos",
 "CSF.. Chaos Solitons and Fractals",
@@ -797,6 +889,7 @@ static const char *journals[] = {
 "CPCar Chemistry and Physics of Carbon",
 "CPLip Chemistry and Physics of Lipids",
 "ChUDA Chile Universidad Departamento de Astronomia Publicaciones",
+"ChOE. China Ocean Engineering",
 "ChRST China Rept Sci Technol JPRS CST",
 "ChA.. Chinese Astronomy",
 "ChIEJ Chinese Institute of Engineers Journal",
@@ -809,6 +902,7 @@ static const char *journals[] = {
 "ChJL. Chinese Journal of Lasers",
 "ChJLB Chinese Journal of Lasers B",
 "CJLTP Chinese Journal of Low Temperature Physics",
+"ChJME Chinese Journal of Mechanical Engineering",
 "ChJNP Chinese Journal of Nuclear Physics",
 "ChJOL Chinese Journal of Oceanology and Limnology",
 "ChJPh Chinese Journal of Physics",
@@ -829,6 +923,7 @@ static const char *journals[] = {
 "CITM. Chubu Institute Technology Memoirs",
 "CIDA. CIDA",
 "CTE.. Ciencias de la Tierra y del Espacio",
+"CiInf Circ. Inf.",
 "CiSSV Circolare Interna della Sezione Stelle Variabili dell'Unione Astrofili Italiani",
 "CSSP. Circuits Systems and Signal Processing",
 "CirW. Circuit World",
@@ -840,6 +935,7 @@ static const char *journals[] = {
 "CQGrS Classical and Quantum Gravity Supplement",
 "CRMMP Classical Reviews in Mathematics and Mathematical Physics",
 "CTPhy Classical Theoretical Physics",
+"CCM.. Clays and Clay Minerals",
 "ClDy. Climate Dynamics",
 "CliPa Climate of the Past",
 "CliPD Climate of the Past Discussions",
@@ -856,11 +952,15 @@ static const char *journals[] = {
 "CoFl. Combustion and Flame",
 "CST.. Combustion Science and Technology",
 "CTM.. Combustion Theory Modelling",
+"CNSMP Comet News Service, McDonnell Planetarium",
 "CPMCM Commentationes Physico-Mathematicae et Chemico-Medicae",
 "ComMP Comments in Modern Physics",
 "ComAp Comments on Astrophysics",
 "CoASP Comments on Astrophysics and Space Physics",
 "CoAMP Comments on Atomic and Molecular Physics",
+"CoCMP Comments on Condensed Matter Physics",
+"CoNPP Comments on Nuclear and Particle Physics",
+"CoPPC Comments on Plasma Physics and Controlled Fusion",
 "ComSp Commercial Space",
 "CoKon Commmunications of the Konkoly Observatory Hungary",
 "CAPJ. Communication Astronomy with the Public Journal",
@@ -907,14 +1007,16 @@ static const char *journals[] = {
 "CRABS Comptes Rendus de l'Academie Bulgare des Sciences",
 "CRASE Comptes Rendus de l'Académie des Sciences - Series IIA - Earth and Planetary Science",
 "CRGeo Comptes Rendus Geoscience",
+"CRMat Comptes Rendus Mathematique",
 "CRMec Comptes Rendus Mecanique",
 "CRPhy Comptes Rendus Physique",
 "CAMP. Computational and Applied Mathematical Physics",
+"ComMS Computational Materials Science",
 "CMMPh Computational Mathematics and Mathematical Physics",
 "CompM Computational Mechanics",
 "COA.. Computational Optimization and Applications",
 "CSMA. Computational Structural Mechanics and Applications",
-"Comp. Computer",
+"Compr Computer",
 "CAD.. Computer-Aided Design",
 "CGIP. Computer Graphics Image Processing",
 "CMAME Computer Methods in Applied Mechanics and Engineering",
@@ -935,7 +1037,8 @@ static const char *journals[] = {
 "ComSE Computing Systems in Engineering",
 "COMTR COMSAT Technical Review",
 "CoCoi Comunicacoes do Observatonio Astronomico da Universidade de Coimbra",
-"cond.mArXiv Condensed Matter e-prints",
+"CoMRA Concepts in Magnetic Resonances A",
+"CoMRB Concepts in Magnetic Resonances B",
 "CMPhy Condensed Matter Physics",
 "CGDAM Conformal Geometry and Dynamics of the American Mathematical Society",
 "CDT.. Connaissance des Temps",
@@ -965,10 +1068,9 @@ static const char *journals[] = {
 "CoMcD Contributions from the McDonald Observatory University of Texas Fort Davis",
 "CMWCI Contributions from the Mount Wilson Observatory / Carnegie Institution of Washington",
 "CoPri Contributions from the Princeton University Observatory",
-"CoAth Contributions from the Research and Computing Center Academy of Sciences of Athens Series I Astronomy",
 "CoRut Contributions from the Rutherford Observatory of Columbia University New York",
 "CoWas Contributions from the Washburn Observatory of the University of Wisconsin",
-"CoWro Contributions from the Wroclaw Astronomical Observatory",
+"CoAth Contributions from the Wroclaw Astronomical Observatory",
 "CoLic Contributions of Lick Observatory",
 "CLic2 Contributions of Lick Observatory, Series II",
 "CoPer Contributions of Perkins Observatory",
@@ -982,6 +1084,7 @@ static const char *journals[] = {
 "CoWat Contributions of the University of Waterloo Observatory",
 "CoVVO Contributions of the Van Vleck Observatory",
 "ConAP Contributions to Atmospheric Physics/Beitraege zur Physik Atmosphaere",
+"CoGG. Contributions to Geophysics and Geodesy",
 "CoMP. Contributions to Mineralogy and Petrology",
 "CoPP. Contributions to Plasma Physics",
 "CoUCL Contributions Universite Catholique de Louvain",
@@ -991,19 +1094,23 @@ static const char *journals[] = {
 "CopRe Copenhagen University Observatory Reprints",
 "CorRe Coral Reefs",
 "CorD. Cordoba Durchmusterung",
+"CAGHS Correspondance Astronomique, Geographique, Hydrographique et statistique",
+"CosEl Cosmic Electrodynamics",
 "CosRe Cosmic Research",
-"CosSe Cosmic Search Summer",
+"CosSe Cosmic Search",
 "CTP.. Course of Theoretical Physics",
 "CRB.. C.R. Acad. Sci. Ser. B1",
 "CraRe Cracow Observatory Reprints",
 "CRSSM Critical Reviews in Solid State &amp",
 "Cryo. Cryogenics",
 "CryRp Crystallography Reports",
+"CSSE. Cultural Studies of Science Education",
 "CuCo. Culture and Cosmos",
 "CAP.. Current Applied Physics",
 "CCPCE Current Contents Physical Chemical and Earth Sciences",
 "CEyeR Current Eye Research",
 "CNan. Current Nanoscience",
+"COSSM Current Opinion in Solid State and Materials Science",
 "CSci. Current Science",
 "CySys Cybernetics and Systems",
 "CzJPh Czechoslovak Journal of Physics",
@@ -1027,12 +1134,13 @@ static const char *journals[] = {
 "DSSN. Delta Scuti Star Newsletter",
 "Sterb Der Sternenbote Monatsschrift fuer Oesterreichs Amateur-astronomen",
 "DGKBA Deutsche Geodaetische Kommission Bayer. Akad. Wiss.",
+"DGKBB Deutsche Geodaetische Kommission Bayer. Akad. Wiss. B",
 "DGKGN Deutsche Geodaetische Kommission Gravity Network West Germany DSGN Data Adjustment",
 "DeHyZ Deutsche Hydrographische Zeitschrift",
 "DPhyG Deutsche Physikalische Gesellschaft",
 "DSEG. Developments in Solid Earth Geophysics",
 "DFVLR DFVLR",
-"DRM.. Diamond And Related Materials",
+"DRM.. Diamond and Related Materials",
 "Stern Die Sterne",
 "Welt. Die Weltall",
 "DnU.. Differentsial nye Uravneniia",
@@ -1053,12 +1161,15 @@ static const char *journals[] = {
 "DLRNa DLR Nachrichten",
 "DOCi. Documentation des Observateurs Circulaire",
 "DOIAP Documentation des Observateurs Institut d'Astrophysique de Paris",
+"DoANT Doklady Akademiia Nauk TadzhSSR",
 "DokAN Doklady Akad Nauk Minerologia USSR",
+"DoBan Doklady Bolgarskoi Akademiia Nauk",
 "DokES Doklady Earth Sciences",
 "DokPC Doklady Physical Chemistry",
 "DAOAR Dominion Astrophysical Observatory Annual Report",
 "DorPo Dornier Post",
 "DSO.. Double Star Observer",
+"DSSC. Double Star Section Circulars",
 "DudOR Dudley Observatory Reports",
 "PODE. Dun Echt Observatory Publications",
 "DunOP Dunsink Observatory Publications",
@@ -1087,8 +1198,8 @@ static const char *journals[] = {
 "EERSA East Europe Rept Sci Affairs JPRS",
 "EBCi. Eclipsing Binaries Circulars",
 "EcGH. Eclogae geologae Helvetii",
-"EGHel Eclogae Geologicae Helvetiae",
 "Ecogr Ecography",
+"EcGou Ecole de Goutelas",
 "Earth eEarth",
 "EartD eEarth Discussions",
 "ETATF Eesti NSV Teaduste Akadeemia Toimetised Fuusika Matemaatika",
@@ -1102,6 +1213,7 @@ static const char *journals[] = {
 "EJSEd Electronic Journal of Science Education",
 "EJSta Electronic Journal of Statistics",
 "EJTP. Electronic Journal of Theoretical Physics",
+"EML.. Electronic Materials Letters",
 "ElPro Electronic Progress",
 "JElCo Electronics Communications of Japan",
 "ElL.. Electronics Letters",
@@ -1109,6 +1221,7 @@ static const char *journals[] = {
 "EOSD. Electro Optical Systems Design",
 "ElLC. Electrotechnical Laboratory Circulars",
 "ElLR. Electrotechnical Laboratory Researches",
+"ElW.. Electrowaerme International",
 "ElBah Elektrische Bahnen",
 "Elem. Elektromekhanika",
 "Elek. Elektronika",
@@ -1117,18 +1230,21 @@ static const char *journals[] = {
 "ETRE. Elektrosviaz Telecommunications Radio Engineering Telecommunications",
 "EVest Elektrotehniski Vestnik",
 "OED.. El Observador de Estrellas Dobles",
+"ElUn. El Universo",
 "EMCT. EMC Technology",
 "EBBT. Emerging Biochemical and Biophysical Techniques",
 "EAA.. Encyclopedia of Astronomy and Astrophysics",
 "Endvr Endeavour",
 "Energ Energetika",
 "EnAt. Energia es Atomtechnika",
+"EnUK. Energy",
 "EnC.. Energy Conversion",
 "ECM.. Energy Conversion Management",
 "EnS.. Energy Sources",
 "EnTR. Energy Technology Review",
 "EnUK. Energy UK",
 "EngAn Engineering Analysis",
+"EnSci Engineering and Science",
 "EngCo Engineering Computations",
 "EnFM. Engineering Fracture Mechanics",
 "EnOp. Engineering Optimization",
@@ -1149,6 +1265,7 @@ static const char *journals[] = {
 "ETWQ. Environmental Toxicology and Water Quality",
 "Env.. Environmentrics",
 "EOSTr EOS Transactions",
+"EL... EPL (Europhysics Letters)",
 "EPRIJ EPRI Journal",
 "AnErg Ergaenzungshefte zu den Astronomischen Nachrichten",
 "ErNW. Ergebnisse der exakten Naturwissenschaften",
@@ -1156,12 +1273,14 @@ static const char *journals[] = {
 "Ergo. Ergonomics",
 "ESABu ESA Bulletin",
 "ESAHR ESA History Study Reports",
+"EIUEN ESA IUE Newsletter",
 "ESAJ. ESA Journal",
 "ESASM ESA Scientific &amp",
 "ESAST ESA Scientific Technical Review",
 "ESATM ESA Training Manual",
 "EssPh Essays in Physics",
 "ECSS. Estuarine Coastal and Shelf Science",
+"EUCAS EUCASS Proceedings Series",
 "EurSS Eurasian Soil Science",
 "EJASP EURASIP Journal on Applied Signal Processing",
 "EBioJ European Biophysics Journal",
@@ -1180,6 +1299,8 @@ static const char *journals[] = {
 "EPJCS European Physical Journal C Supplement",
 "EPJD. European Physical Journal D",
 "EPJE. European Physical Journal E",
+"EPJH. European Physical Journal H",
+"EPJP. European Physical Journal Plus",
 "EPJST European Physical Journal Special Topics",
 "EuRv. European Review",
 "ESN.. European Science Notes",
@@ -1203,6 +1324,7 @@ static const char *journals[] = {
 "ExG.. Exploration Geophysics",
 "Extr. Extraction",
 "PMtv. Facultad de Humanidades y Ciencias Universidad de la Republica Montevideo",
+"FaDi. Faraday Discussions",
 "FaTr. Faraday Transactions",
 "FFEMS Fatigue and Fracture of Engineering Materials and Structures",
 "FerNo Fermilab Note",
@@ -1226,6 +1348,7 @@ static const char *journals[] = {
 "FizMS Fizika Mnogochastichnykh Sistem",
 "FizNT Fizika Nizkikh Temperatur",
 "FizPl Fizika Plazmy",
+"FizSz Fizika Sz.",
 "FizTT Fizika Tverdogo Tela",
 "FizZS Fizika Zhidkogo Sostoianiia",
 "FizAt Fiziki Atmosfery",
@@ -1246,13 +1369,18 @@ static const char *journals[] = {
 "FoGeo Fotointerpretacja w Geografii",
 "FoPh. Foundations of Physics",
 "FoPhL Foundations of Physics Letters",
+"Fract Fractals",
 "Freq. Frequenz",
-"FrPhy Frontiers in Physics",
+"FrES. Frontiers of Earth Science",
+"FrMS. Frontiers of Materials Science",
+"FrME. Frontiers of Mechanical Engineering",
+"FrPhy Frontiers of Physics",
 "FrPhC Frontiers of Physics in China",
 "IzFru Frunze Izdatel Ilim",
 "FSTJ. Fujitsu Scientific Technical Journal",
 "FST.. Fullerene Science and Technology",
 "FAAp. Functional Analysis and Its Applications",
+"FML.. Functional Materials Letters",
 "FACM. Functiones et Approximatio Commentarii Mathematici",
 "FInfo Fundamenta Informaticae",
 "FANP. Fundamental and Applied Nuclear Physics Series",
@@ -1261,18 +1389,20 @@ static const char *journals[] = {
 "FTP.. Fundamental Theories of Physics",
 "Futur Future Spring",
 "GCNew Galactic Center Newsletter",
+"galxp GALEX Proposal",
 "GalEl Galilean Electrodynamics",
 "GEB.. Games and Economic Behavior",
 "GGMit Gauss-Gesellschaft e.V. Göttingen, Mitteilungen",
 "GVPOO Gauthier-Villars Paris Observatory Observations",
 "GazA. Gazette Astronomique",
+"GazAM Gazette Astronomique Memoires",
 "GazT. Gazodinamika i Teploobmen",
 "GCNR. GCN Report",
 "GECJR GEC Journal Research",
 "Gelio Geliotekhnika",
 "Gemin GEMINI Newsletter Royal Greenwich Observatory",
 "GHA.. General History of Astronomy",
-"GPB.. General Physiology AND Biophysics",
+"GPB.. General Physiology and Biophysics",
 "GReGr General Relativity and Gravitation",
 "Gen.. Genetica",
 "GeoIn Geocarto International",
@@ -1282,8 +1412,10 @@ static const char *journals[] = {
 "GeocI Geochemistry International",
 "GeCoA Geochimica et Cosmochimica Acta",
 "GeCAS Geochimica et Cosmochimica Acta Supplement",
+"GeCar Geodesy and Cartography",
 "GeAer Geodeziia i Aerofotos",
 "GeKar Geodeziia i Kartografiia",
+"GKA.. Geodeziia i Kartografiia Aehrofotosemka, L'vov",
 "GeKaA Geodeziia Kartografiia i Aerofotos",
 "GeoK. Geodezja i Kartografia",
 "GeoAc Geodinamica Acta",
@@ -1293,14 +1425,19 @@ static const char *journals[] = {
 "GeoZh Geofizicheskii Zhurnal",
 "GeoAA Geografiska Annaler, Series A: Physical Geography",
 "GeoAB Geografiska Annaler, Series B: Human Geography",
+"GeIss Geoinformation Issues",
 "Geokh Geokhimiia",
+"GCarp Geologica Carpathica",
 "GeolJ Geological Journal",
 "GeoM. Geological Magazine",
 "GeoSJ Geological Society Journal",
 "GSAMB Geological Society of America Bulletin",
 "GSAMm Geological Society of America Memoir",
 "GSASP Geological Society of America Special Papers",
+"GSLSP Geological Society of London Special Publications",
+"Geolo Geologija",
 "GeoRu Geologische Rundschau",
+"Geolg Geologos",
 "Geo.. Geology",
 "GeoOD Geology of Ore Deposits",
 "GeoIs Geomagnitnye Issledovaniia",
@@ -1333,6 +1470,7 @@ static const char *journals[] = {
 "TrGRC Geothermal Resources Council Transactions",
 "Geoth Geothermics",
 "Geot. Geotimes",
+"Gerb. Gerbertvs, International Academic Publication on History of Medieval Science",
 "GBzG. Gerlands Beitraege zur Geophysik",
 "GUL.. Geschichte und Lichtwechsel der Veraenderlichen Sterne (Potsdam)",
 "GATAN Gesellschaft Aerosolforschung Tagung ueber Aerosole Naturwissenschaft Medizin und Technik Messtechnik und technische Anwendung",
@@ -1344,6 +1482,7 @@ static const char *journals[] = {
 "GiGi. Gidroprivod i Gidropnevmoavtomatika",
 "GiSan Gigiena i Sanitariia",
 "GTPZ. Gigiena Truda i Professional nye Zabolevaniia",
+"GAst. Giornale di Astronomia",
 "GlMaJ Glasgow Mathematical Journal",
 "GPC.. Global and Planetary Change",
 "GBioC Global Biogeochemical Cycles",
@@ -1354,11 +1493,14 @@ static const char *journals[] = {
 "GrCoS Gravitation and Cosmology Supplement",
 "GrTOn Gravitatsiia i Teoriia Otnositel nosti",
 "GCN.. GRB Coordinates Network",
+"GGMM. Greenhouse Gas Measurement &amp",
 "GriO. Griffith Observer",
 "GrAeH Grumman Aerospace Horizons",
 "Grund Grundwasser",
 "GICi. Gruppo Italiano RV Tauri Circolare",
 "HalRe Hale Observatories Reprints",
+"HadJ. Hadronic Journal",
+"HadJS Hadronic Journal Supplement",
 "BSD.. Hamburger Sternwarte Bergedorf",
 "HamS. Hamburger Sternwarte Sonderdrucke",
 "LS... Hamburger Sternw. Warner &amp",
@@ -1388,15 +1530,12 @@ static const char *journals[] = {
 "HMR.. Helgoland Marine Research",
 "AcHCh Helvetica Chimica Acta",
 "AcHPh Helvetica Physica Acta",
+"AcHPS Helvetica Physica Acta Supplementum",
 "HelOB Helwan Institute of Astronomy and Geophysics Bulletins",
 "HemD. Hemel en Dampkring",
 "HECh. High Energy Chemistry",
 "HEDP. High Energy Density Physics",
 "HEPNP High Energy Physics and Nuclear Physics",
-"hep.exArXiv High Energy Physics - Experiment e-prints",
-"hep.laArXiv High Energy Physics - Lattice e-prints",
-"hep.phArXiv High Energy Physics - Phenomenology e-prints",
-"hep.thArXiv High Energy Physics - Theory e-prints",
 "HiA.. Highlights of Astronomy",
 "HPP.. High Performance Polymers",
 "HPR.. High Pressure Research",
@@ -1406,6 +1545,7 @@ static const char *journals[] = {
 "HARSB Histoire de l'Academie Royale des Sciences et des Belles-Lettres de Berlin",
 "HSPBS Historical Studies in the Physical and Biological Sciences",
 "HGeo. History of Geophysics",
+"HGSS. History of Geo- and Space Sciences",
 "HisSc History of Science",
 "HUFEB Hokkaido University Faculty Engineering Bulletin",
 "HUFEM Hokkaido University Faculty Engineering Memoirs",
@@ -1432,8 +1572,10 @@ static const char *journals[] = {
 "IAUDS IAU Commission on Double Stars",
 "IAUIn IAU Commission on Instruments",
 "IAUGA IAU General Assembly",
+"IAUIB IAU Information Bulletin",
 "IAUSS IAU Special Session",
-"IBMJ. IBM Journal Research Development",
+"WFINw IAU Working Group on Wide-Field Imaging, Newsletter",
+"IBMJ. IBM Journal of Research and Development",
 "ICAOB ICAO Bulletin",
 "Icar. Icarus",
 "IAESM IEEE Aerospace Electronic Systems Magazine",
@@ -1442,6 +1584,7 @@ static const char *journals[] = {
 "IASSP IEEE ASSP Magazine",
 "ICiSM IEEE Circuits Systems Magazine",
 "IComM IEEE Communications Magazine",
+"ICSEn IEEE Computational Science and Engineering",
 "ICGA. IEEE Computer Graphics Applications",
 "ICSM. IEEE Computer Systems Magazine",
 "IDTC. IEEE Design Test Computers",
@@ -1452,11 +1595,13 @@ static const char *journals[] = {
 "IJOE. IEEE Journal of Oceanic Engineering",
 "IJQE. IEEE Journal of Quantum Electronics",
 "IJRA. IEEE Journal of Robotics Automation",
+"ISTSP IEEE Journal of Selected Topics in Signal Processing",
 "IJSSC IEEE Journal of Solid-State Circuits",
 "IJSAC IEEE Journal on Selected Areas in Communications",
 "ILCSM IEEE LCS Magazine",
 "ILTS. IEEE LTS",
 "IMGWL IEEE Microwave and Guided Wave Letters",
+"IMMag IEEE Microwave Magazine",
 "IEEEN IEEE Network",
 "IPTL. IEEE Photonics Technology Letters",
 "IEEEP IEEE Proceedings",
@@ -1526,7 +1671,6 @@ static const char *journals[] = {
 "IPCSV IEE Proceedings: Communications Speech and Vision",
 "IPCTA IEE Proceedings D: Control Theory Applications",
 "IPCDT IEE Proceedings E: Computers and Digital Techniques",
-"IPCRP IEE Proceedings F: Communications and Radar Processing",
 "IPCRS IEE Proceedings F: Communications Radar and Signal Processing",
 "IPRSP IEE Proceedings F: Radar and Signal Processing",
 "IPMAP IEE Proceedings H: Microwaves Antennas and Propagation",
@@ -1536,12 +1680,14 @@ static const char *journals[] = {
 "IPSSE IEE Proceedings: Solid-State Electron Devices",
 "IEERv IEE Reviews",
 "IEIEE IEICE Electronics Express",
+"ESSFR IEICE ESS Fundamentals Review",
 "IEITC IEICE Transactions on Communications",
 "IEITE IEICE Transactions on Electronics",
 "IEITF IEICE Transactions on Fundamentals of Electronics Communications and Computer Sciences",
 "IEITI IEICE Transactions on Information and Systems",
 "ITN.. IERS Technical Note",
 "IESJ. IES Journal",
+"IHWN. IHW Newsletter",
 "JApMa IMA Journal of Applied Mathematics",
 "IJNA. IMA Journal of Numerical Analysis",
 "IVMA. IMA Volumes in Mathematics and its Applications",
@@ -1555,7 +1701,6 @@ static const char *journals[] = {
 "IMEPI IME Proceedings. Part I: Journal of Systems and Control Engineering",
 "IMEPK IME Proceedings. Part K: Journal of Multibody Dynamics",
 "ICSE. Impact of Computing in Science and Engineering",
-"IASAP Indian Academy of Science Aryabhata Proj",
 "InEPS Indian Academy of Sciences Proceedings: Earth and Planetary Sciences",
 "InMS. Indian Academy of Sciences Proceedings Mathematical Sciences",
 "InASP Indian Academy of Sciences Proceedings Section",
@@ -1564,7 +1709,6 @@ static const char *journals[] = {
 "IIApN Indian Institute of Astrophysics Newsletter",
 "InISJ Indian Institute of Science Journal",
 "InISA Indian Institute of Science Journal of Aeronomical Society of India",
-"InSST Indian Institute of Science Space Science Technology Applications: An Overview",
 "ITJSE Indian Institute of Technology Journal on Section Engineering Technology",
 "InJAE Indian Journal of Aerospace Engineering Division",
 "InJBB Indian Journal of Biochemistry and Biophysics",
@@ -1575,14 +1719,15 @@ static const char *journals[] = {
 "InJP. Indian Journal of Physics and Proceedings of the Indian Assocatiation for the Cultivation of Science",
 "InJPA Indian Journal of Physics Section A",
 "InJPB Indian Journal of Physics Section B",
-"InJPS Indian Journal of Physics Section B B",
 "IJPAM Indian Journal of Pure and Applied Mathematics",
 "IJPAP Indian Journal of Pure and Applied Physics",
 "IJRSP Indian Journal of Radio and Space Physics",
+"InJHS Indian Journal of the History of Science",
 "InJTP Indian Journal of Theoretical Physics",
 "INSAP Indian National Science Academy Proceedings Supplement",
 "IDAQP Infinite Dimensional Analysis, Quantum Probability and Related Topics",
 "IBSH. Informational Bulletin of the Southern Hemisphere",
+"IBUAA Informational Bulletin of the Ukrainian Astronomical Association",
 "InCo. Information and Computation",
 "IBVS. Information Bulletin on Variable Stars",
 "InfCo Information Control",
@@ -1602,6 +1747,7 @@ static const char *journals[] = {
 "JIECE Institute of Electronics Communication Engineers of Japan Transactions Section E English",
 "IPASA Institute of Physics Academia Sinica Annual Report",
 "ISASS Institute of Space and Astronautical Science Report",
+"ITABO Institute of Theoretical Astrophysics, Blindern-Oslo",
 "OslR. Institute of Theoretical Astrophysics Blindern Oslo Reports",
 "IEAEE Institution Engineers Australia Electrical Engineering Transactions",
 "IEEP. Institution of Electrical Engineers Proceedings",
@@ -1610,11 +1756,10 @@ static const char *journals[] = {
 "IAFET Instituto de Astronomia y Fisica del Espacio Buenos Aires",
 "MerRe Instituto Venezolano de Astronomia Merida Venezuela",
 "IRMBP Institut Royal Meteorologique de Belgique Publications Serie",
-"ITAB. Institut Teoreticheskoi Astronomii Biulleten",
+"ITAB. Institut Teoreticheskoi Astronomii Byulleten",
 "TrITA Institut Teoreticheskoi Astronomii Trudy",
 "IET.. Instruments and Experimental Techniques",
 "InLoP Instytut Lotnictwa Prace",
-"InMP. Instytut Maszyn Przeplywowych",
 "InMPP Instytut Maszyn Przeplywowych Prace",
 "IntaC Inta Conie",
 "ITSF. Integral Transforms and Special Functions",
@@ -1626,11 +1771,13 @@ static const char *journals[] = {
 "IFB.. Interfaces and Free Boundaries",
 "IPAUC INTERKOSMOS Prague Astronomicky Ustav Ceskoslovenske Akademie Ved",
 "IANT. International Advances in Nondestructive Testing",
+"IntAg International Agrophysics",
 "IAPPP International Amateur-Professional Photoelectric Photometry Communications",
+"IAM.. International Applied Mechanics",
 "IAUC. International Astronomical Union Circular",
 "ICQ.. International Comet Quarterly",
 "ICHMT International Communications in Heat and Mass Transfer",
-"IrPh. International Conference Infrared Physics Zurich Switzerland",
+"IrPH. International Conference Infrared Physics Zurich Switzerland",
 "ICML. International Conference on Machine Learning",
 "IER.. Internationale Elektronische Rundschau",
 "InGeo International Geophysics Series",
@@ -1640,11 +1787,15 @@ static const char *journals[] = {
 "IJNMF International Journal for Numerical Methods in Fluids",
 "IJRPC International Journal for Radiation Physics and Chemistry",
 "IJACS International Journal of Adaptive Control and Signal Processing",
-"IJAA. International Journal of Adhesion Adhesives",
+"IJAdA International Journal of Adhesion Adhesives",
+"IJASS International Journal of Aeronautical and Space Sciences",
 "IJAEM International Journal of Analytical and Experimental Modal Analysis",
 "IJAEO International Journal of Applied Earth Observation and Geoinformation",
-"IJApE International Journal of Applied Electromagnetics and Mechanics",
+"IJApE International Journal of Electromagnetics and Mechanics",
+"IJAIS International Journal of Applied Information Systems",
+"IJAM. International Journal of Applied Mechanics",
 "IJAsB International Journal of Astrobiology",
+"IJAA. International Journal of Astronomy and Astrophysics",
 "IJAP. International Journal of Aviation Psychology",
 "IJBC. International Journal of Bifurcation and Chaos",
 "IJBB. International Journal of Bioclimatology Biometeorology",
@@ -1652,11 +1803,14 @@ static const char *journals[] = {
 "IJCli International Journal of Climatology",
 "IJCES International Journal of Computational Engineering Science",
 "IJCFD International Journal of Computational Fluid Dynamics",
+"IJCMS International Journal of Computational Materials Science and Engineering",
 "IJCA. International Journal of Computer Applications",
-"IJCMS International Journal of Computer Mathematics Section B",
+"IJCAT International Journal of Computer Applications and Technology",
+"IJCMB International Journal of Computer Mathematics Section B",
 "IJCV. International Journal of Computer Vision",
 "IJC.. International Journal of Control",
 "IJDM. International Journal of Damage Mechanics",
+"IJDE. International Journal of Digital Earth",
 "IJDF. International Journal of Dynamics of Fluids",
 "IJEaS International Journal of Earth Sciences",
 "IJE.. International Journal of Electronics",
@@ -1679,6 +1833,7 @@ static const char *journals[] = {
 "IJHM. International Journal of Hybrid Microelectronics Fall",
 "IJHE. International Journal of Hydrogen Energy",
 "IJHy. International Journal of Hyperthermia",
+"IJIDF International Journal of Image and Data Fusion",
 "IJIG. International Journal of Image and Graphics",
 "IJIST International Journal of Imaging Systems Technology",
 "IJIE. International Journal of Impact Engineering",
@@ -1696,6 +1851,7 @@ static const char *journals[] = {
 "IJMPA International Journal of Modern Physics A",
 "IJMPB International Journal of Modern Physics B",
 "IJMPC International Journal of Modern Physics C",
+"IJMPS International Journal of Modern Physics Conference Series",
 "IJMPD International Journal of Modern Physics D",
 "IJMPE International Journal of Modern Physics E",
 "IJMF. International Journal of Multiphase Flow",
@@ -1720,6 +1876,7 @@ static const char *journals[] = {
 "IJRS. International Journal of Remote Sensing",
 "IJRR. International Journal of Robotics Research",
 "IJSC. International Journal of Satellite Communications",
+"IJSME International Journal of Science and Mathematics Education",
 "IJSEd International Journal of Science Education",
 "IJSE. International Journal of Solar Energy",
 "IJSS. International Journal of Solids and Structures",
@@ -1731,6 +1888,7 @@ static const char *journals[] = {
 "IJTJE International Journal of Turbo Jet Engines",
 "IMRv. International Materials Reviews",
 "IMeRv International Metals Reviews",
+"IREdu International Review of Education",
 "IRH.. International Review of Hydrobiology",
 "IRNP. International Review of Nuclear Physics",
 "IRPC. International Reviews in Physical Chemistry",
@@ -1738,13 +1896,16 @@ static const char *journals[] = {
 "IUGG. International Union of Geodesy and Geophysics General Assembly",
 "IPNPR Interplanetary Network Progress Report",
 "IMPA. Interscience Monographs in Physics and Astronomy",
+"ITPA. Interscience Tracts on Physics and Astronomy",
 "InMat Inventiones Mathematicae",
 "InvPr Inverse Problems",
 "IGeo. Investigations in Geophysics",
 "InFiZ Inzhenerno Fizicheskii Zhurnal",
 "IonIs Ionosfernye Issledovaniia",
 "Iono. Ionosphere",
+"Ippa. Ipparchos",
 "IrJST Iranian Journal of Science Technology",
+"IRETE IRE Transactions on Education",
 "IrAJ. Irish Astronomical Journal",
 "IrAJS Irish Astronomical Journal Supplement",
 "ISAP. ISA Proceedings",
@@ -1754,8 +1915,11 @@ static const char *journals[] = {
 "IPBS. Isotopes in the Physical and Biomedical Sciences",
 "IsJT. Israel Journal of Technology",
 "IsSRT Israel Space Research and Technology Information Bulletin",
+"ISRAA ISRN Astronomy and Astrophysics",
 "ISCJS ISRO Satellite Centre Journal of Spacecraft Technology",
-"IssZK Issledovanie Zemli iz Kosmosa",
+"ISSIR ISSI Scientific Reports Series",
+"ISSIR ISSI Scientific Reports Series",
+"IssZK Issledovanie Zemli Fiz Kosmosa",
 "IGAFS Issledovaniia Geomagnetizmu Aeronomii i Fizike Solntsa",
 "IsMTD Issledovaniia Mekhanike i Teploobmenu Dvukhfaznykh Sred",
 "IssUP Issledovaniia Uprugosti i Plastichnosti",
@@ -1777,12 +1941,16 @@ static const char *journals[] = {
 "ITUTJ ITU Telecommunication Journal",
 "IUEEN IUE ESA Newsletter",
 "IUENN IUE NASA Newsletter",
+"IzTad Izvestiia Akademiia Nauk TadzhSSR",
 "IzSF. Izvestiia Akademii Nauk Seriya Fizicheskaya",
 "IzGla Izvestiia Glavnoi rossiiskoi astronomicheskoi observatorii",
+"IzVGA Izvestiia vuzov. Geodeziia Aehrofotosemka",
+"IzVF. Izvestiia Vysshaia Uchebn. Zaved., Fizika",
+"IzVUZ Izvestiia Vysshaia Uchebn. Zaved., Radiofizika",
 "IzAsh Izvestiya Akademii Nauk Turkmenskoj SSR Ashkhabad",
 "IzArm Izvestiya Akademiya Nauk Armyanskoi",
 "IzAlm Izvestiya Astrofizicheskogo Instituta Alma-Ata",
-"IzKaz Izvestiya Astronomicheskoj Engel'gardt obskoj Observatorii Kazan",
+"IzEhn Izvestiya Astronomicheskoj Engel'gardt obskoj Observatorii Kazan",
 "IzAOP Izvestiya Atmospheric and Oceanic Physics",
 "IzKie Izvestiya Glavnoj Astronomicheskoj Observatorii Kiev",
 "IzPul Izvestiya Glavnoj Astronomicheskoj Observatorii v Pulkove",
@@ -1801,6 +1969,7 @@ static const char *journals[] = {
 "JJAPR Japanese Journal of Applied Physics Regular Papers Short Notes and Review Papers",
 "JJAPS Japanese Journal of Applied Physics Supplement",
 "JaJAG Japanese Journal of Astronomy and Geophysics",
+"JMMPS Japanese Magazine of Mineralogical and Petrological Sciences",
 "JaIMJ Japan Institute of Metals Journal",
 "JSASS Japan Society of Aeronautical Space Sciences",
 "JSAST Japan Society of Aeronautical Space Sciences Transactions",
@@ -1811,6 +1980,7 @@ static const char *journals[] = {
 "JSPS. Japan Society of Promotion Science",
 "JSMAJ JASMA Japan Society of Microgravity Application Journal",
 "JMeOp Jemna Mechanika Optika",
+"JenRu Jenaer Rundschau",
 "JenRv Jena Review",
 "JBAn. Jodrell Bank Annals",
 "JBASP Jodrell Bank Ann Ser Pt",
@@ -1826,16 +1996,19 @@ static const char *journals[] = {
 "JMecT Journal de Mecanique Theorique et Appliquee",
 "JMTAS Journal de Mecanique Theorique et Appliquee Supplement",
 "JPhys Journal de Physique",
+"JPhyC Journal de Physique Colloque",
 "JPR.. Journal de Physique et le Radium",
 "JPhy1 Journal de Physique I",
 "JPhy2 Journal de Physique II",
 "JPhy3 Journal de Physique III",
 "JPhy4 Journal de Physique IV",
 "JPhyL Journal de Physique Lettres",
+"JPhTA Journal de Physique Theorique et Apliquee",
 "JReAt Journal de Recherches Atmospheriques",
 "JAF.. Journal des Astronomes Francais",
 "JO... Journal des Observateurs",
 "JOp.. Journal d'Optique",
+"JTP.. Journal for Technology of Plasticity",
 "JHA.. Journal for the History of Astronomy",
 "JHAS. Journal for the History of Astronomy Supplement",
 "JRAM. Journal fur die reine und angewandte Mathematik",
@@ -1843,6 +2016,7 @@ static const char *journals[] = {
 "JNIRE Journal NIRE",
 "JAE.. Journal of Acoustic Emission",
 "JAMDS Journal of Advanced Mechanical Design, Systems, and Manufacturing",
+"JAMES Journal of Advances in Modeling Earth Systems",
 "JAerS Journal of Aerosol Science",
 "JAerE Journal of Aerospace Engineering",
 "JAerP Journal of Aerospace Power",
@@ -1858,6 +2032,8 @@ static const char *journals[] = {
 "JApCr Journal of Applied Crystallography",
 "JApEl Journal of Applied Electrochemistry",
 "JAG.. Journal of Applied Geophysics",
+"JApMM Journal of Applied Mathematics and Mechanics",
+"JAM.. Journal of Applied Mechanics",
 "JAMTP Journal of Applied Mechanics and Technical Physics",
 "JApMw Journal of Applied Metalworking",
 "JApMe Journal of Applied Meteorology",
@@ -1874,6 +2050,7 @@ static const char *journals[] = {
 "JAESc Journal of Asian Earth Sciences",
 "JAD.. Journal of Astronomical Data",
 "JAHH. Journal of Astronomical History and Heritage",
+"JAI.. Journal of Astronomical Instrumentation",
 "JAsPh Journal of Astronomy and Physics (Turkey)",
 "JASS. Journal of Astronomy and Space Sciences",
 "JApA. Journal of Astrophysics and Astronomy",
@@ -1897,7 +2074,7 @@ static const char *journals[] = {
 "JBNMR Journal of Biomolecular NMR",
 "JBBC. Journal of Biophysical and Biochemical Cytology",
 "JBiop Journal of Biophysics",
-"JBiBi Journal of Biophysique et de Biomecanique",
+"JBiBi Journal of Biophysique et Biomecanique",
 "JBMN. Journal of Biophysique et Medecine Nucleaire",
 "JBMR. Journal of Bone and Mineral Research",
 "JBR.. Journal of Breath Research",
@@ -1910,18 +2087,21 @@ static const char *journals[] = {
 "JCli. Journal of Climate",
 "JCAM. Journal of Climate and Applied Meteorology",
 "JClim Journal of Climatology",
-"JClM. Journal of Clinical Microbiology",
+"JCS.. Journal of Clinical Microbiology",
 "JClP. Journal of Clinical Pharmacology",
 "JCS.. Journal of Cluster Science",
 "JCScT Journal of College Science Teaching",
 "JCIS. Journal of Colloid and Interface Science",
+"JCoSc Journal of Colloid Science",
 "JCTA. Journal of Combinatorial Theory, Series A",
 "JCTB. Journal of Combinatorial Theory, Series B",
 "JCom. Journal of Communications",
+"CoNet Journal of Communications and Networks",
 "JComp Journal of Complexity",
 "JCoMa Journal of Composite Materials",
 "JCTR. Journal of Composites and Technology Research",
 "JCA.. Journal of Computational Acoustics",
+"JTCN. Journal of Computational and Theoretical Nanoscience",
 "JCoAM Journal of Computational and Applied Mathematics",
 "JCoB. Journal of Computational Biology",
 "JCoCh Journal of Computational Chemistry",
@@ -1929,9 +2109,11 @@ static const char *journals[] = {
 "JCoN. Journal of Computational Neuroscience",
 "JCoPh Journal of Computational Physics",
 "JCST. Journal of Computational Science and Technology",
-"JCAMD Journal of Computer-Aided Materials Design",
+"JCMD. Journal of Computer-Aided Materials Design",
+"JCAMD Journal of Computer-Aided Molecular Design",
 "JCoSS Journal of Computer and System Sciences",
 "JCHyd Journal of Contaminant Hydrology",
+"JConP Journal of Contemporary Physics (Armenian Academy of Sciences)",
 "JCos. Journal of Cosmology",
 "JCAP. Journal of Cosmology and Astro-Particle Physics",
 "JCrGr Journal of Crystal Growth",
@@ -1947,15 +2129,19 @@ static const char *journals[] = {
 "JESS. Journal of Earth System Science",
 "JElas Journal of Elasticity",
 "JEEEA Journal of Electrical and Electronics Engineering Australia",
+"JEE.. Journal of Electrical Engineering",
 "JElec Journal of Electroceramics",
+"JEAA. Journal of Electromagnetic Analysis and Application",
 "JEWA. Journal of Electromagnetic Waves and Applications",
 "JECS. Journal of Electronic Circuits and Systems",
 "JEI.. Journal of Electronic Imaging",
 "JEMat Journal of Electronic Materials",
 "JEPub Journal of Electronic Publishing",
+"JECTC Journal of Electronics Cooling and Thermal Control",
 "JElM. Journal of Electronics Manufacturing",
 "JEMT. Journal of Electron Microscopy Technique",
 "JESRP Journal of Electron Spectroscopy and Related Phenomena",
+"JESEd Journal of Elementary Science Education",
 "JEner Journal of Energy",
 "JEAS. Journal of Engineering and Applied Sciences",
 "JEnMa Journal of Engineering and Mathematics",
@@ -1981,6 +2167,7 @@ static const char *journals[] = {
 "JGeod Journal of Geodesy",
 "JGeo. Journal of Geodynamics",
 "JGS.. Journal of Geographical Systems",
+"JGIS. Journal of Geographic Information System",
 "JG... Journal of Geology",
 "JGG.. Journal of Geomagnetism and Geoelectricity",
 "JGGS. Journal of Geomagnetism and Geoelectricity Supplement",
@@ -2000,6 +2187,7 @@ static const char *journals[] = {
 "JGlac Journal of Glaciology",
 "JGO.. Journal of Global Optimization",
 "JGrPh Journal of Gravitational Physics",
+"JGHyd Journal of Groundwater Hydrology",
 "JGuC. Journal of Guidance Control",
 "JGCD. Journal of Guidance Control Dynamics",
 "JHeu. Journal of Heuristics",
@@ -2012,15 +2200,34 @@ static const char *journals[] = {
 "JHyMe Journal of Hydrometeorology",
 "JHyn. Journal of Hydronautics",
 "JIST. Journal of Imaging Science and Technology",
-"JInfo Journal of Infometrics",
+"JIPM. Journal of Information Processing and Management",
+"JInfo Journal of Informetrics",
 "JIMW. Journal of Infrared and Millimeter Waves",
 "JInst Journal of Instrumentation",
 "JIntS Journal of Integer Sequences",
 "JIEq. Journal of Integral Equations",
 "JIRS. Journal of Intelligent and Robotic Systems",
 "JIMSS Journal of Intelligent Material Systems and Structures",
+"JIEx. Journal of Ion Exchange",
+"JJAEE Journal of Japan Association for Earthquake Engineering",
 "JJAHS Journal of Japanese Association of Hydrological Sciences",
 "JJSEE Journal of Japanese Society for Engineering Education",
+"JSCSE Journal of Japan Society of Civil Engineers, Ser. A1 (Structural Engineering &amp",
+"JSCAM Journal of Japan Society of Civil Engineers, Ser. A2 (Applied Mechanics (AM))",
+"JSCHE Journal of Japan Society of Civil Engineers, Ser. B1 (Hydraulic Engineering)",
+"JSCGE Journal of Japan Society of Civil Engineers, Ser. C (Geosphere Engineering)",
+"JSCAI Journal of Japan Society of Civil Engineers, Ser. D1 (Architecture of Infrastructure and Environment)",
+"JSCHS Journal of Japan Society of Civil Engineers, Ser. D2 (Historical Studies in Civil Engineering)",
+"JSCIP Journal of Japan Society of Civil Engineers, Ser. D3 (Infrastructure Planning and Management)",
+"JSCPE Journal of Japan Society of Civil Engineers, Ser. E1 (Pavement Engineering)",
+"JSCMC Journal of Japan Society of Civil Engineers, Ser. E2 (Materials and Concrete Structures)",
+"JSCTE Journal of Japan Society of Civil Engineers, Ser. F1 (Tunnel Engineering)",
+"JSCUS Journal of Japan Society of Civil Engineers, Ser. F2 (Underground Space Research)",
+"JSCCE Journal of Japan Society of Civil Engineers, Ser. F3 (Civil Engineering Informatics)",
+"JSCCM Journal of Japan Society of Civil Engineers, Ser. F4 (Construction and Management)",
+"JSCPP Journal of Japan Society of Civil Engineers, Ser. F5 (Professional Practices in Civil Engineering)",
+"JSCSP Journal of Japan Society of Civil Engineers, Ser. F6 (Safety Problem)",
+"JSCER Journal of Japan Society of Civil Engineers, Ser. G (Environmental Research)",
 "JKTR. Journal of Knot Theory and its Ramifications",
 "JKAS. Journal of Korean Astronomical Society",
 "JKASS Journal of Korean Astronomical Society Supplement",
@@ -2034,10 +2241,9 @@ static const char *journals[] = {
 "JLum. Journal of Luminescence",
 "JMSB. Journal of Macromolecular Science, Part B: Physics",
 "JMSC. Journal of Macromolecular Science, Part C: Reviews in Macromolecular Chemistry and Physics",
-"JMmSP Journal of Macromolecular Science Physics",
-"JMmSR Journal of Macromolecular Science Reviews in Macromolecular Chemistry and Physics",
 "JMagR Journal of Magnetic Resonance",
 "JMMM. Journal of Magnetism and Magnetic Materials",
+"JMR.. Journal of Marine Research",
 "JMSA. Journal of Marine Science and Application",
 "JMS.. Journal of Marine Systems",
 "JMarA Journal of Maritime Archaeology",
@@ -2052,6 +2258,7 @@ static const char *journals[] = {
 "JMSMM Journal of Materials Science: Materials in Medicine",
 "JMSP. Journal of Materials Synthesis and Processing",
 "JMAA. Journal of Mathematical Analysis and Applications",
+"JMCS. Journal of Mathematical and Computational Science",
 "JMPS. Journal of Mathematical and Physical Sciences",
 "JMaCh Journal of Mathematical Chemistry",
 "JMFM. Journal of Mathematical Fluid Mechanics",
@@ -2060,6 +2267,7 @@ static const char *journals[] = {
 "JMPsy Journal of Mathematical Psychology",
 "JMaSc Journal of Mathematical Sciences",
 "JMSo. Journal of Mathematical Sociology",
+"JMaMe Journal of Mathematics and Mechanics",
 "JMaPh Journal of Mathematics and Physics",
 "JMecE Journal of Mechanical and Engineering Science",
 "JMBM. Journal of Mechanical Behavior and Materials",
@@ -2070,6 +2278,7 @@ static const char *journals[] = {
 "JMemS Journal of Microelectromechanical Systems",
 "JMiMi Journal of Micromechanics and Microengineering",
 "JMic. Journal of Microscopy",
+"JMPeS Journal of Mineralogical and Petrological Sciences",
 "JMOp. Journal of Modern Optics",
 "JMPh. Journal of Modern Physics",
 "JMBio Journal of Molecular Biology",
@@ -2133,13 +2342,15 @@ static const char *journals[] = {
 "JPhsg Journal of Physiology",
 "JPFR. Journal of Plasma and Fusion Research",
 "JPlPh Journal of Plasma Physics",
+"JPoSc Journal of Polymer Science",
 "JPoSA Journal of Polymer Science A Polymer Chemistry",
 "JPoSB Journal of Polymer Science B Polymer Physics",
+"JPoSL Journal of Polymer Science: Polymer Letters Edition",
 "JPMat Journal of Porous Materials",
 "JPES. Journal of Power and Energy Systems",
 "JPS.. Journal of Power Sources",
 "JPAS. Journal of Practical Applications in Space",
-"JPP.. Journal of Propulsion Power",
+"JPP.. Journal of Propulsion and Power",
 "JPT.. Journal of Propulsion Technology",
 "JPrCh Journal of Protein Chemistry",
 "JPApS Journal of Pure Applied Sciences",
@@ -2152,8 +2363,12 @@ static const char *journals[] = {
 "JRSp. Journal of Raman Spectroscopy",
 "JRPC. Journal of Reinforced Plastics and Composites",
 "JRes. Journal of Research",
+"JRPhy Journal of Research in Physics",
 "JRScT Journal of Research in Science Teaching",
+"JRIST Journal of Research Institute of Science and Technology, College of Science and Technology, Nihon University",
 "JRNBS Journal of Research of the National Bureau of Standards",
+"JRNBA Journal of Research of the National Bureau of Standards A Physica and Chemsitry",
+"JRNBB Journal of Research of the National Bureau of Standards B Mathematical Sciences",
 "JRTEd Journal of Research on Technology in Education",
 "JResB Journal of Research Section B Mathematical Sciences B",
 "JRheo Journal of Rheology",
@@ -2181,11 +2396,11 @@ static const char *journals[] = {
 "JSpRo Journal of Spacecraft and Rockets",
 "JSpT. Journal of Spacecraft Technology",
 "JSpEn Journal of Space Engineering",
+"JSWSC Journal of Space Weather and Space Climate",
 "JSCS. Journal of Statistical Computation and Simulation",
 "JSMTE Journal of Statistical Mechanics: Theory and Experiment",
 "JSP.. Journal of Statistical Physics",
 "JStA. Journal of Strain Analysis and Engineering Design",
-"JSAED Journal of Strain Analysis for Engineering Design",
 "JSG.. Journal of Structural Geology",
 "JSM.. Journal of Structural Mechanics",
 "JSup. Journal of Superconductivity",
@@ -2200,27 +2415,32 @@ static const char *journals[] = {
 "JAMS. Journal of the American Mathematical Society",
 "JASIS Journal of the American Society for Information Science and Technology",
 "JASCE Journal of the American Society of Civil Engineers",
+"JAWRA Journal of the American Water Resources Association",
 "JALPO Journal of the Association of Lunar and Planetary Observers, the Strolling Astronomer",
 "JAnSc Journal of the Astronautical Sciences",
 "JASEg Journal of the Astronomical Society of Egypt",
+"JASSA Journal of the Astronomical Society of Southern Africa",
 "JASV. Journal of the Astronomical Society of Victoria Melbourne",
 "JASWA Journal of the Astronomical Society of Western Australia",
-"JAWRA Journal of the Astronomical Society of Western Australia",
 "JBAA. Journal of the British Astronomical Association",
 "JBAS. Journal of the British Astronomical Society",
 "JBIS. Journal of the British Interplanetary Society",
 "JCSS. Journal of the Chinese Silicate Society",
 "JElS. Journal of the Electrochemical Society",
 "FrInJ Journal of The Franklin Institute",
+"JGSJ. Journal of the Geodetic Society of Japan",
 "JIISB Journal of the Indian Institute of Science Section B Physical and Chemical Series",
 "JIEEJ Journal of The Institute of Electrical Engineers of Japan",
 "JIMIA Journal of the Institute of Mathematics and Its Applications",
+"JIPNT Journal of the Institute of Positioning, Navigation and Timing of Japan",
 "JIETE Journal of the Institution of Electronics and Telecommunication Engineers",
+"JJSMS Journal of the Japan Society for Marine Surveys and Technology",
 "JLMS. Journal of the London Mathematical Society",
 "JORS. Journal of the Operational Research Society",
 "JOSA. Journal of the Optical Society of America (1917-1983)",
 "JOSAA Journal of the Optical Society of America A",
 "JOSAB Journal of the Optical Society of America B Optical Physics",
+"JTAM. Journal of Theoretical and Applied Mechanics",
 "JTBio Journal of Theoretical Biology",
 "JPSJ. Journal of the Physical Society of Japan",
 "JPSJS Journal of the Physical Society of Japan Supplement",
@@ -2238,12 +2458,15 @@ static const char *journals[] = {
 "JRCSE Journal of the Royal College of Surgeons of Edinburgh",
 "JRSSD Journal of the Royal Statistical Society: Series D (The Statistician)",
 "JSRP. Journal of the Society for Radiological Protection",
+"JSPST Journal of The Society of Photographic Science and Technology of Japan",
 "JSARA Journal of the Southeastern Association for Research in Astronomy",
-"JVSJ. Journal of the Vacuum Society of Japan",
+"JSD.. Journal of the Structural Division, American Society of Civil Engineers",
+"JVSJ  Journal of the Vacuum Society of Japan",
 "JWasA Journal of the Washington Academy of Sciences",
 "JTF.. Journal of Time and Frequency",
 "JTurb Journal of Turbulence",
 "JVST. Journal of Vacuum Science Technology",
+"JVSTA Journal of Vacuum Science Technology A: Vacuum Surfaces and Films",
 "JVSTB Journal of Vacuum Science Technology B: Microelectronics and Nanometer Structures",
 "JVC.. Journal of Vibration and Control",
 "JVE.. Journal of Vibration Engineering",
@@ -2260,6 +2483,7 @@ static const char *journals[] = {
 "JSMET JSME Transactions",
 "KKR.. Kagaku Kogaku Ronbunshu",
 "MmKMO Kakioka Magnetic Observatory Memoirs",
+"KEIJ. Kansei Engineering International Journal",
 "GroR. Kapteyn Astronomical Laboratory Groningen Reports",
 "KIzKU Kazan Izdatel Kazanskogo Universiteta",
 "MeeRe Kenneth Mees Observatory Reprints",
@@ -2284,6 +2508,7 @@ static const char *journals[] = {
 "KFNTS Kinematika i Fizika Nebesnykh Tel Supplement",
 "KiCat Kinetics and Catalysis",
 "KIzS. Kishinev Izdatel Shtiintsa",
+"KPNON Kitt Peak National Observatory Newsletter",
 "KVeBB Kleine Veroeffentlichungen der Universitaetssternwarte zu Berlin Babelsberg",
 "KlBer Kleinheubacher Berichte",
 "KodOB Kodaikanal Observatory Bulletins",
@@ -2314,6 +2539,7 @@ static const char *journals[] = {
 "LHBl. La Houille Blanche",
 "Meteo La Meteorologie",
 "LDD.. Land Degradation &amp",
+"LanB. Landolt Börnstein",
 "Langm Langmuir",
 "LaJ.. Lapidary Journal",
 "Rech. La Recherche",
@@ -2363,7 +2589,9 @@ static const char *journals[] = {
 "LeLen Leningrad Lenizdat",
 "LGUPM Leningradskii Gosudarstvennyi Universitet Problemy Matematicheskoi Fiziki",
 "VeLen Leningradskii Universitet Vestnik Matematika Mekhanika Astronomiia",
+"LeRad Le Radium",
 "Leo.. Leonardo",
+"LFTR. LEST Foundation, Technical Report",
 "LHMT. Letters Heat Mass Transfer",
 "LAES. Letters in Applied and Engineering Sciences",
 "LMaPh Letters in Mathematical Physics",
@@ -2380,10 +2608,12 @@ static const char *journals[] = {
 "LOEle L'Onde Electrique",
 "LowOB Lowell Observatory Bulletin",
 "LTP.. Low Temperature Physics",
+"LPIBu LPI Bulletin",
 "LPICo LPI Contributions",
 "LubEn Lubrication Engineering",
 "LR... Luft und Raumfahrt",
 "LuRaQ Luft und Raumfahrt Quarter",
+"LPSC. Lunar and Planetary Science Conference Proceedings",
 "LCEC. Luxembourg Commission European Communities",
 "LIVS. Lvov Izdatel Vishcha Shkola",
 "LvoTs L'vovskij Ordena Lenina Gosudarstvennyj Universitet Tsirkulyar",
@@ -2396,6 +2626,7 @@ static const char *journals[] = {
 "MagFE Magnetic Fusion Energy",
 "MRMed Magnetic Resonance in Medicine",
 "MRMPB Magnetic Resonance Materials in Physics Biology and Medicine",
+"MRRev Magnetic Resonance Review",
 "MHD.. Magnetohydrodynamics",
 "MagGi Magnitnaia Gidrodinamika",
 "MagIs Magnitosfernye Issledovaniia",
@@ -2404,10 +2635,11 @@ static const char *journals[] = {
 "Lapa. Majalah LAPAN",
 "MWGBI Mannheim West Germany Bibliographisches Institut AG",
 "MaTeJ ManTech Journal",
+"MGeo. Manuscr. Geod.",
 "ManGe Manuscripta Geodaetica",
 "MarRv Marconi Review",
 "MarGe Marine Geodesy",
-"MarGR Marine Geophysical Researches",
+"MarGR Marine Geophysical Research",
 "MarPG Marine Petroleum Geology",
 "Mars. Mars",
 "Mashi Mashinostroenie",
@@ -2423,14 +2655,19 @@ static const char *journals[] = {
 "Mate. Materials",
 "MMP.. Materials and Manufacturing Processes",
 "MCP.. Materials Chemistry and Physics",
+"MaHT. Materials at High Temperatures",
 "MatEv Materials Evaluation",
 "MatL. Materials Letters",
 "MaRBu Materials Research Bulletin",
 "MRSSP Materials Research Society Symposia Proceedings",
 "MSEng Materials Science and Engineering",
+"MSEnA Materials Science and Engineering A",
+"MSEnB Materials Science and Engineering B",
+"MSEnC Materials Science and Engineering C",
 "MSEnR Materials Science and Engineering R Reports",
 "MSTec Materials Science and Technology",
 "MSF.. Materials Science Forum",
+"MatSP Materials Science Poland",
 "MatST Materials Science Technology",
 "MatTr Materials Transactions JIM",
 "MatTe Materiaux et Techniques",
@@ -2444,22 +2681,29 @@ static const char *journals[] = {
 "M3AS. Mathematical Models and Methods in Applied Sciences",
 "MPAG. Mathematical Physics, Analysis and Geometry",
 "MPAM. Mathematical Physics and Applied Mathematics",
-"math.pArXiv Mathematical Physics e-prints",
+"MaPEJ Mathematical Physics Electronic Journal",
 "MaPhS Mathematical Physics Studies",
 "MaPr. Mathematical Proceedings",
 "MPCPS Mathematical Proceedings of the Cambridge Philosophical Society",
+"MatPr Mathematical Programming",
 "MatRv Mathematical Reviews",
 "MMS.. Mathematics and Mechanics of Solids",
+"MEdRJ Mathematics Education Research Journal",
 "MaCom Mathematics of Computation",
 "Mat.. Mathematika",
+"MatAn Mathematische Annalen",
+"MatNa Mathematische Nachrichten",
+"MatZe Mathematische Zeitschrift",
 "MitAe Max Planck Institut Aeronomie Mitteilungen",
+"MPARp Max Planck Institut fur Astrophysik Report",
 "Meas. Measurements",
 "MeScT Measurement Science and Technology",
+"MeScR Measurement Science Review",
 "Mecc. Meccanica",
 "MecEn Mechanical Engineering",
 "MSSP. Mechanical Systems and Signal Processing",
 "MPDS. Mechanics and Physics of Discrete Systems",
-"MCMS. Mechanics of Composite Materials &amp",
+"MCMS. Mechanics of Composite Materials",
 "MSM.. Mechanics of Structures and Machines",
 "MTDM. Mechanics of Time-Dependent Materials",
 "MeReC Mechanics Research Communications",
@@ -2491,8 +2735,8 @@ static const char *journals[] = {
 "MSAIS Memorie della Societa Astronomica Italiana Supplementi",
 "MmSSI Memorie della Societa Degli Spettroscopisti Italiani",
 "MmSS. Memorie della Societa Degli Spettroscopisti Italiani, serie 2",
+"MmSGI Memorie della Societa Geologica Italiana",
 "MmNap Memorie del R. Osservatorio di Capodimonte in Napoli",
-"ska..mSKA memos",
 "MeCom Mendeleev Communications",
 "Mercu Mercury",
 "MeAut Meres es Automatika",
@@ -2501,7 +2745,6 @@ static const char *journals[] = {
 "MTObM Metallovedenie i Termicheskaia Obrabotka Metallov",
 "MMTA. Metallurgical and Materials Transactions A",
 "MMTB. Metallurgical and Materials Transactions B",
-"MT... Metallurgical Transactions",
 "MTA.. Metallurgical Transactions A",
 "MTB.. Metallurgical Transactions B",
 "MTPMM Metallurgical Transactions Physical Metallurgy Materials Science",
@@ -2525,6 +2768,7 @@ static const char *journals[] = {
 "MAP.. Meteorology and Atmospheric Physics",
 "MetAP Meteorology Atmospheric Physics",
 "MetHy Meteorology Hydrology JPRS",
+"MeRR. Meteor. rasprostr. radiovoln, Kazan",
 "MVMP. Methoden und Verfahren der Mathematischen Physik",
 "MCME. Methods: A Companion to Methods in Enzymology",
 "MApAn Methods and Applications of Analysis",
@@ -2554,6 +2798,7 @@ static const char *journals[] = {
 "MiElC Military Electronics Countermeasures",
 "MiLa. Mind and Language",
 "MinDe Mineralium Deposita",
+"Miner Mineralogia",
 "MinM. Mineralogical Magazine",
 "MinPe Mineralogy and Petrology",
 "MinPh Mineral Physics",
@@ -2583,10 +2828,13 @@ static const char *journals[] = {
 "MiTue Mitteilungen des Astronomischen Instituts der Universitaet Tuebingen",
 "MiMue Mitteilungen des Astronomischen Instituts des Universitaet Munster",
 "MiPot Mitteilungen des Astrophysikalischen Observatoriums Potsdam",
+"MiGIR Mitteilungen Geod. Institut Rheinischen Friedrich-Wilhelms-Universitaets. Bonn",
 "MSMSE Modelling Simul. Mater. Sci. Eng.",
 "MAG.. Modern Approaches in Geophysics",
 "ModGe Modern Geology",
+"ModIn Modern Instrumentation",
 "MIMPE Modern Instrumentation and Measurements in Physics and Engineering",
+"ModPh Modern Physics",
 "MPLA. Modern Physics Letters A",
 "MPLB. Modern Physics Letters B",
 "MJPS. Moldavian Journal of the Physical Sciences",
@@ -2598,6 +2846,8 @@ static const char *journals[] = {
 "MoPhR Molecular Physics Reports",
 "MoSim Molecular Simulation",
 "MCBEH Monatliche Correspondenz zur Beforderung der Erd- und Himmels-kunde",
+"WisBB Monatsber. Deutsch. Akad Wissenschaftliche Berlin",
+"MEEP. Monographs on Environment, Earth and Planets",
 "MNSSJ Monthly notes of the Astronomical Society of South Africa",
 "MNSSA Monthly Notes of the Astronomical Society of South Africa",
 "MNRAS Monthly Notices of the Royal Astronomical Society",
@@ -2664,10 +2914,12 @@ static const char *journals[] = {
 "MtWAR Mount Wilson and Palomar Observatory Annual Report",
 "MtWRe Mount Wilson and Palomar Observatory Reprints",
 "MWOAR Mount Wilson Observatory Annual Report",
+"MPERp MPE Report",
 "MRSBu MRS Bulletin",
 "MUSS. Muenchen Universitaets Schriften Serie",
 "MROVG Munich R Oldenbourg Verlag GmbH",
 "NISZ. Nabliudeniia Iskusstvennykh Sputnikov Zemli",
+"NINT. Nablyud. Iskusstvennykh Nebesnykh Tel",
 "NAZ.. Nachrichtenblatt der Astronomischen Zentralstelle Heidelberg",
 "NVS.. Nachrichtenblatt der Vereinigung der Sternfreunde",
 "NacEl Nachrichten Elektronik",
@@ -2675,6 +2927,7 @@ static const char *journals[] = {
 "NacZe Nachrichtentechnische Zeitschrift",
 "NOGB. Nachr. Olbers-Ges. Bremen",
 "NUFEM Nagoya University Faculty Engineering Memoirs",
+"NURIA Nagoya University Research Institute of Atmospherics Proceedings",
 "NUSEM Nagoya University School Engineering Memoirs",
 "NaAIJ Nanjing Aeronautical Institute Journal",
 "NUAAJ Nanjing University Aeronautics and Astronautics Journal",
@@ -2689,24 +2942,32 @@ static const char *journals[] = {
 "NASSP NASA Special Publication",
 "STIA. NASA STI/Recon Technical Report A",
 "STIN. NASA STI/Recon Technical Report N",
+"NASTM NASA Technical Memo",
 "NBSSP National Bureau of Standards Special Publication",
 "NBSTN National Bureau of Standards Technical Note",
 "NaGe. National Geographic",
 "NISTJ National Institute of Standards and Technology Journal of Research",
 "PolRe National Institute Polar Research Memoirs",
 "BAth. National Observatory of Athens Greece Bulletin of the Astronomical Institute",
+"NRAON National Radio Astronomy Observatory Newsletter",
 "NRAOR National Radio Astronomy Observatory Reprints",
+"NRAOW National Radio Astronomy Observatory Workshop",
 "NUDTJ National University Defense Technology Journal",
 "NHESS Natural Hazards and Earth System Sciences",
 "NatH. Natural History",
+"NatSc Natural Science",
 "Natur Nature",
+"NatBi Nature Biotechnology",
 "NatCh Nature Chemistry",
+"NatCC Nature Climate Change",
+"NatCo Nature Communications",
 "NatGe Nature Geoscience",
 "NatMa Nature Materials",
 "NatNa Nature Nanotechnology",
 "NaPho Nature Photonics",
 "NPhS. Nature Physical Science",
 "NatPh Nature Physics",
+"NatSR Nature Scientific Reports",
 "NW... Naturwissenschaften",
 "NInfo Nauchnye Informatsii",
 "NRRv. Naval Research Reviews",
@@ -2723,7 +2984,7 @@ static const char *journals[] = {
 "NeuL. Neuroscience Letters",
 "NPNDS Neutron Physics and Nuclear Data in Science and Technology",
 "NewA. New Astronomy",
-"NewAR New Astronomy Review",
+"NewAR New Astronomy Reviews",
 "NJCh. New Journal of Chemistry",
 "NJPh. New Journal of Physics",
 "NewSc New Scientist",
@@ -2732,10 +2993,11 @@ static const char *journals[] = {
 "NTN.. New Technology News",
 "NZJGG New Zealand Journal Geology and Geophysics",
 "NZJS. New Zealand Journal of Science",
+"NKG.. Nihon Kessho Gakkaishi",
 "NOHIC Nizamiah JAPAL Rangapur Observatories Hyderabad India Contributions",
 "NizRe Nizamiah Observatory Reprints",
 "NCE.. Noise Control Engineering Journal",
-"NDTE. Nondestructive Testing and Evaluation",
+"NTE.. Nondestructive Testing and Evaluation",
 "NDTI. Nondestructive Testing and Evaluation International",
 "NTCo. Nondestructive Testing Communications",
 "NPPSB Nonequilibrium Problems in the Physical Sciences and Biology",
@@ -2744,21 +3006,25 @@ static const char *journals[] = {
 "NlOpt Nonlinear Optics",
 "NPGeo Nonlinear Processes in Geophysics",
 "NSAP. Nonlinear, Statistical and Applied Physics",
+"NTA.. Nonlinear Theory and Its Applications, IEICE",
 "NATi. Nordisk Astronomisk Tidsskrift",
-"SApMM North Holland Series Applied Mathematics Mechanics",
+"SApMM North Holland Series Applied Mathematical Mechanics",
 "NHCWP North Hollywood Calif Western Periodicals Co",
 "NPUJ. Northwestern Polytechnical University Journal",
 "NoDef Not Defined",
+"NoPar Notes et Informations",
 "NROpt Nouvelle Revue d'Optique",
 "NROA. Nouvelle Revue d'Optique Appliquee",
 "UGC.. Nova Acta Regiae Soc. Sci. Upsaliensis Ser. V",
+"NTvA. Novaya tekhn. v astron.",
 "NoIGG Novosibirsk Institut Geologii i Geofiziki SO AN SSSR",
 "NovIG Novosibirsk Institut Gidrodinamiki SO AN SSSR Dinamika Sploshnoi Sredy",
 "NoIzN Novosibirsk Izdatel Nauka",
+"NSSDC NSSDC Publication",
 "NTTRv NTT Review",
 "NDS.. Nuclear Data Sheets",
+"NDT.. Nuclear Data Tables",
 "NuEnD Nuclear Engineering and Design",
-"nucl.eArXiv Nuclear Experiment e-prints",
 "NucFu Nuclear Fusion",
 "NucFS Nuclear Fusion Special Supplement",
 "NuGeo Nuclear Geophysics",
@@ -2773,7 +3039,6 @@ static const char *journals[] = {
 "NSE.. Nuclear Science Engineering",
 "NucTe Nuclear Technology",
 "NucTF Nuclear Technology Fusion",
-"nucl.tArXiv Nuclear Theory e-prints",
 "NAR.. Nucleic Acids Research",
 "NuAlg Numerical Algorithms",
 "NFAO. Numerical Functional Analysis and Optimization",
@@ -2788,12 +3053,12 @@ static const char *journals[] = {
 "NCimL Nuovo Cimento Lettere",
 "NCimR Nuovo Cimento Rivista Serie",
 "NCimS Nuovo Cimento Serie",
+"OCSC. OAA Compututer Section Circular",
 "OSUC. Observationes Astronomicas Insitutas in Specula Universitatis Caesareae Dorpatensis",
 "OVS.. Observation of Variable Stars",
 "Obser Observation pi",
 "OAORP Observations astronomiques faites a l'Observatoire royal de Paris",
 "USNOO Observations made at the U.S. Naval Observatory",
-"USNOY Observations made at the U.S. Naval Observatory during the Year",
 "OOVRO Observations Owens Valley Radio Observatory",
 "Bes1K Observatoire de Besancon",
 "OBN1K Observatoire de Besancon - CNES",
@@ -2812,6 +3077,7 @@ static const char *journals[] = {
 "ObVyS Obzory Vysokotemperaturnoi Sverkhprovodimosti",
 "ONRAS Occasional Notes of the Royal Astronomical Society",
 "ORROE Occasional Reports of the Royal Observatory Edinburgh",
+"OccN. Occultation Newsletter, International Occultation Timing Association (IOTA)",
 "OcDyn Ocean Dynamics",
 "OcEng Ocean Engineering",
 "OcMod Ocean Modelling",
@@ -2833,6 +3099,12 @@ static const char *journals[] = {
 "OCzAS Ondrejov Czechoslovakia Czechoslovak Academy Sciences CAS Astronomical Institute Publications",
 "ONERA ONERA TP",
 "OEJV. Open European Journal on Variable Stars",
+"OJA.. Open Journal of Acoustics",
+"OJAS. Open Journal of Applied Sciences",
+"OJBp. Open Journal of Biophysics",
+"OJFD. Open Journal of Fluid Dynamics",
+"OJGeo Open Journal of Geology",
+"OJMic Open Journal of Microphysics",
 "OLear Open Learning",
 "OSID. Open Systems and Information Dynamics",
 "AcOpt Optica Acta",
@@ -2847,6 +3119,7 @@ static const char *journals[] = {
 "OSAJI Optical Society of America Journal Optics and Image Science",
 "OptPN Optics &amp",
 "OptLE Optics and Lasers in Engineering",
+"OPJ.. Optics and Photonics Journal",
 "OptSp Optics and Spectroscopy",
 "OptCo Optics Communications",
 "OExpr Optics Express",
@@ -2865,6 +3138,7 @@ static const char *journals[] = {
 "OrGeo Organic Geochemistry",
 "OrLi. Origins of Life",
 "OLEB. Origins of Life and Evolution of the Biosphere",
+"Ori.. Orione",
 "Orion Orion: Zeitschrift für Amateur-Astronomie",
 "IGS.. Orlando FL Academic Press Inc International Geophysics Series",
 "OrNav Ortung und Navigation",
@@ -2880,6 +3154,7 @@ static const char *journals[] = {
 "TriP. Osservatorio Astronomico di Trieste Pubblicazioni",
 "TreP. Osservatorio Privato Specola Ariel Treviso Italia Pubblicazione",
 "MmArc Osservazioni e memorie dell'Osservatorio astrofisico di Arcetri",
+"MmArS Osservazioni e memorie dell'Osservatorio astrofisico di Arcetri - Appendici",
 "OsCar Osteoarthritis and Cartilage",
 "OtObI Otbor i Obrabotka Informatsii",
 "OtPI. Otbor i Peredacha Informatsii",
@@ -2893,9 +3168,11 @@ static const char *journals[] = {
 "PMetR Papers in Meteorological Research",
 "PPh.. Papers in Physics",
 "PMG.. Papers Meteorology Geophysics",
+"PGC.. Papers on Global Change IGBP",
 "ParC. Parallel Computing",
 "Paras Parasitology",
 "ParAc Particle Accelerators",
+"PPhI. Particle Physics Insights",
 "PaReL Pattern Recognition Letters",
 "PerMS Perceptual Motor Skills",
 "PZ... Peremennye Zvezdy",
@@ -2905,6 +3182,7 @@ static const char *journals[] = {
 "PPME. Periodica Polytechnica Mechanical Engineering",
 "PPTE. Periodica Polytechnica Transportation Engineering",
 "PerCo Perkins Observatory Contributions",
+"PMO.. Perth Meridien Observations",
 "PTMJ. Phase Transitions: A Multinational Journal",
 "PhDT. Ph.D. Thesis",
 "PhiJR Philips Journal Research",
@@ -2914,6 +3192,7 @@ static const char *journals[] = {
 "PMagL Philosophical Magazine Letters",
 "PMagA Philosophical Magazine, Part A",
 "PMagB Philosophical Magazine, Part B",
+"PFP.. Philosophy and Foundations of Physics",
 "Phoen Phoenix Mitteilungsblatt fuer Veraenderlichenbeobachter",
 "PcPb. Photochemistry and Photobiology",
 "Pg... Photogrammetria",
@@ -2921,9 +3200,11 @@ static const char *journals[] = {
 "PgERS Photogrammetric Engineering and Remote Sensing",
 "PhInt Photo Interpretation",
 "PhNan Photonics and Nanostructures",
+"PhSen Photonic Sensors",
 "PhoSp Photonics Spectra",
 "PsynR Photosynthesis Research",
 "Psyn. Photosynthetica",
+"PhyOJ Physcs Online Journal",
 "Phy.. Physica",
 "PhyA. Physica A Statistical Mechanics and its Applications",
 "PhyBC Physica B+C",
@@ -2950,6 +3231,7 @@ static const char *journals[] = {
 "PhRvI Physical Review Series I",
 "PhRvS Physical Review Special Topics Accelerators and Beams",
 "PRSTP Physical Review Special Topics Physics Education",
+"PhRvX Physical Review X",
 "PSD.. Physical Sciences Data",
 "PSCEC Physical Sciences Series of the Commission of European Communities",
 "PhyNr Physica Norvegica",
@@ -2963,6 +3245,7 @@ static const char *journals[] = {
 "PhySS Physica Status Solids",
 "PhyL. Physic Letters",
 "PhChH PhysicoChemical Hydrodynamics",
+"Physi Physics",
 "PCS.. Physics and Chemistry in Space",
 "PhChE Physics and Chemistry of Earth",
 "PCL.. Physics and Chemistry of Liquids",
@@ -2982,12 +3265,12 @@ static const char *journals[] = {
 "PhB.. Physics Bulletin",
 "DokPh Physics - Doklady",
 "PhyEd Physics Education",
-"physicArXiv Physics e-prints",
 "PhyEs Physics Essays",
 "PCHEI Physics in Collision: High-Energy ee/ep/pp Interactions",
 "PMB.. Physics in Medicine and Biology",
 "PhP.. Physics in Perspective",
 "PhTec Physics in Technology",
+"PhyIn Physics International",
 "PhLF. Physics Laser Fusion",
 "PhL.. Physics Letters",
 "PhLA. Physics Letters A",
@@ -3011,12 +3294,14 @@ static const char *journals[] = {
 "PEPI. Physics of the Earth and Planetary Interiors",
 "PhSS. Physics of the Solid State",
 "PTF.. Physics of Thin Films",
+"PWP.. Physics of Wave Phenomena",
 "PhR.. Physics Reports",
 "PRI.. Physics Research International",
 "PhT.. Physics Today",
 "PhyU. Physics Uspekhi",
 "PhyW. Physics World",
 "PCTM. Physikalisch-Chemische Trenn- und Messmethoden",
+"PhyBl Physikalische Blötter",
 "PhyG. Physikalische Gesellschaft",
 "PhyGZ Physikalische Gesellschaft Zürich",
 "PhyZ. Physikalische Zeitschrift",
@@ -3030,6 +3315,7 @@ static const char *journals[] = {
 "PZhTF Pis ma Zhurnal Tekhnischeskoi Fiziki",
 "PlAst Planetary Astronomy",
 "PlR.. Planetary Report",
+"PlSci Planetary Science",
 "PSRD. Planetary Science Research Discoveries",
 "PCPhy Plant and Cell Physiology",
 "PFR.. Plasma and Fusion Research",
@@ -3053,13 +3339,17 @@ static const char *journals[] = {
 "PMCPB PMC Physics B",
 "PMCPC PMC Physics C",
 "PMTF. PMTF Zhurnal Prikladnoi Mekhaniki i Tekhnicheskoi Fiziki",
+"nraop National Radio Astronomy Observatory Press Release",
 "PnGid Pnevmatika i Gidravlika",
+"noaop NOAO Proposal",
+"PolSc Polar Science",
 "PolSi Poliarnye Siianiia",
 "PSSNN Poliarnye Siianiia i Svechenie Nochnogo Neba",
 "PASAM Polish Academy of Science Arch Mech",
 "PASAS Polish Academy of Science Artificial Satellites",
 "PASIG Polish Academy of Sciences Institute of Geophysics Publications",
 "PASTA Polish Academy of Sciences Theory Aggregation Coagulation",
+"PJMPE Polish Journal of Medical Physics And Engineering",
 "PCZNN Politechnika Czestochowska Zeszyty Naukowe Nauki Techniczne Mechanika",
 "PGZNM Politechnika Gdanska Zeszyty Naukowe Mechanika",
 "PSZNM Politechnika Slaska Zeszyty Naukowe Mechanika",
@@ -3116,25 +3406,32 @@ static const char *journals[] = {
 "PAPhS Proceedings of the American Philosophical Society",
 "PASAu Proceedings of the Astronomical Society of Australia",
 "PCAS. Proceedings of the California Academy of Sciences",
+"PCPS. Proceedings of the Cambridge Philosophical Society",
 "PEMS. Proceedings of the Edinburgh Mathematical Society",
+"PIASE Proceedings of the Indian Academy of Science, Earth and Planetary Sciences",
 "PINSA Proceedings of the Indian National Science Academy Part A",
 "PINSB Proceedings of the Indian National Science Academy Part B",
 "PIGP. Proceedings of the Institute of General Physics, Adademy of the Sciences of Russia",
+"PILOM Proceedings of the International Latitude Observatory at Mizusawa",
 "PIRE. Proceedings of the IRE",
-"PNAS. Proceedings of the National Academy of Science",
+"PNAS. Proceedings of the National Academy of Sciences",
+"PNAS. Proceedings of the National Academy of Sciences USA",
+"PNAS. Proceedings of the National Academy of Sciences of the USA",
 "PNSC. Proceedings of the National Science Council",
 "PNSBP Proceedings of the National Society of Black Physicists",
 "PPS.. Proceedings of the Physical Society",
 "PPSA. Proceedings of the Physical Society A",
 "PPSB. Proceedings of the Physical Society B",
 "PPSL. Proceedings of the Physical Society of London",
+"PRIAN Proceedings of the Research Institute of Atmospherics, Nagoya University",
 "PRIAA Proceedings of the Royal Irish Academy Section A",
 "PRNAS Proceedings of the Royal Netherlands Academy of Arts and Sciences",
-"PSEBM Proceedings of The Society for Experimental Biology and Medicine",
+"PSEBM Proceedings of the Society for Experimental Biology and Medicine",
 "PrVP. Proceedings of Vibration Problems",
 "PELIS Program: electronic library &amp",
 "PrAeS Progress in Aerospace Sciences",
 "PrAA. Progress in Astronautics and Aeronautics",
+"PrA.. Progress in Astronomy",
 "PABei Progress in Astronomy",
 "PBB.. Progress in Biochemistry and Biophysics",
 "PBBC. Progress in Biophysics and Biophysical Chemistry",
@@ -3155,11 +3452,16 @@ static const char *journals[] = {
 "PQE.. Progress in Quantum Electronics",
 "PrSS. Progress In Surface Science",
 "PTCP. Progress in Theoretical Chemistry and Physics",
+"PTEP. Progress of Theoretical and Experimental Physics",
 "PThPh Progress of Theoretical Physics",
 "PThPS Progress of Theoretical Physics Supplement",
 "ProTe Promyshlennaia Teplotekhnika",
 "PrEx. Propellants and Explosives",
 "PrExP Propellants and Explosives Pyrotechnics",
+"PMMin Proper Motion Survey, University of Minnesota",
+"rxte pRXTE Proposal",
+"sptz pSpitzer Proposal",
+"suba pSubaru Proposal",
 "PUFir Pubblicazioni della R. Universita degli studi di Firenze",
 "PSAIL Pubblicazioni della Stazione Astronomica Internazionale di Latitudine",
 "POMil Pubblicazioni dell'Osservatorio Astronomico di Milano-Merate",
@@ -3181,6 +3483,7 @@ static const char *journals[] = {
 "POBor Publications de l'Observatoire de l'Universite de Bordeaux",
 "POTou Publications de l'Observatoire de Toulouse",
 "PLAGL Publications du Laboratoire d'Astronomie et de Geodesie de l'Universite de Louvain",
+"PDHO. Publications of Debrecen Heliophysical Observatory",
 "POBol Publications of dell'Osservatorio Astronomie de Bologna",
 "PLawO Publications of Laws Observatory, University of Missouri",
 "PLicO Publications of Lick Observatory",
@@ -3194,13 +3497,14 @@ static const char *journals[] = {
 "PUAms Publications of the Astronomical Institute of the University of Amsterdam",
 "PBrn. Publications of the Astronomical Institute of the University of Borneo",
 "POHel Publications of the Astronomical Observatory Helsinki",
+"PAOS. Publications of the Astronomical Observatory of Sarajevo",
 "POMin Publications of the Astronomical Observatory University of Minnesota",
 "PASA. Publications of the Astronomical Society of Australia",
 "PASJ. Publications of the Astronomical Society of Japan",
 "PASP. Publications of the Astronomical Society of the Pacific",
 "PASPS Publications of the Astronomical Society of the Pacific Supplement",
 "PASRB Publications of the Astronomical Society Rudjer Boskovic",
-"PADEU Publications of the Astronomy Deparment of the Eotvos Lorand University",
+"PADEU Publications of the Astronomy Department of the Eotvos Lorand University",
 "PAIB. Publications of the Astronomy Institute of Bonn",
 "PAB.. Publications of The Astrophysics Branch Ottawa",
 "PBeiO Publications of the Beijing Astronomical Observatory",
@@ -3215,6 +3519,7 @@ static const char *journals[] = {
 "PFAO. Publications of the Flower Astronomical Observatory",
 "PGLO. Publications of the Goethe Link Observatory",
 "PGooO Publications of the Goodsell Observatory, Carleton College",
+"ILOMP Publications of the International Latitude Observatory at Mizusawa",
 "PIstO Publications of the Istanbul University Observatory",
 "PGro. Publications of the Kapteyn Astronomical Laboratory Groningen",
 "PKirO Publications of the Kirkwood Observatory of Indiana University",
@@ -3222,6 +3527,7 @@ static const char *journals[] = {
 "PMcCO Publications of the Leander McCormick Observatory",
 "PManO Publications of the Manila Observatory",
 "PMunO Publications of the Munich Observatory",
+"PNAOC Publications of the National Astronomical Observatories of China",
 "PNAOJ Publications of the National Astronomical Observatory of Japan",
 "POLyo Publications of the Observatoire de Lyon",
 "PGenA Publications of the Observatoire Geneve Series A",
@@ -3234,10 +3540,13 @@ static const char *journals[] = {
 "PPMtO Publications of the Purple Mountain Observatory",
 "PRCO. Publications of the Riverview College Observatory",
 "PROE. Publications of the Royal Observatory of Edinburgh",
+"PSAO. Publications of the Shaanxi Astronomical Observatory",
+"PShaO Publications of the Shaanxi Astronomy Observatory",
 "PSprO Publications of the Sproul Observatory",
 "PSSAI Publications of the Sternberg State Astronomical Institute",
 "PTarO Publications of the Tartu Astrofizica Observatory",
 "PTasO Publications of the Tashkent Astronomical Observatory",
+"PUPFA Publications of the University of Pennsylvania Flower Astronomical Observatory",
 "PUSNO Publications of the U.S. Naval Observatory Second Series",
 "PVVO. Publications of the Van Vleck Observatory",
 "PVasO Publications of the Vassar College Observatory",
@@ -3258,12 +3567,15 @@ static const char *journals[] = {
 "PApPh Pure and Applied Physics",
 "PApOp Pure Applied Optics",
 "QUnJ. Qinghua University Journal",
+"xmm.. XMM-Newton Press Release",
+"xmm.. XMM-Newton Proposal",
 "QREI. Quality Reliability Engineering International",
 "QuFin Quantitative Finance",
 "QuSOp Quantum and Semiclassical Optics",
 "QuEle Quantum Electronics",
+"QuIP. Quantum Information Processing",
 "QuOpt Quantum Optics",
-"quant.ArXiv Quantum Physics e-prints",
+"QBSA. Quarterly Bulletin on Solar Activity",
 "QJMAM Quarterly Journal of Mechanics and Applied Mathematics",
 "QJRAS Quarterly Journal of the Royal Astronomical Society",
 "QJRMS Quarterly Journal of the Royal Meteorological Society",
@@ -3281,17 +3593,17 @@ static const char *journals[] = {
 "RaPC. Radiation Physics and Chemistry",
 "RaRe. Radiation Research",
 "RaEE. Radio and Electronic Engineer",
-"Radel Radioelectronika",
+"Radel Radioehlektronika",
 "REEP. Radio Engineering and Electronic Physics",
 "RaF.. Radiofizika",
 "RaSol Radioizluchenie Solntsa",
 "RPRA. Radio Physics and Radio Astronomy",
-"RaRLJ Radio Research Laboratories Journal",
-"RaRLR Radio Research Laboratories Review",
+"RaRLJ Radio Research Laboratory, Journal",
+"RaRLR Radio Research Laboratory, Review",
 "RaSc. Radio Science",
 "RaScB Radio Science Bulletin",
 "RaScS Radio Science Supplement",
-"RaT.. Radiotekhnika",
+"RaT.. Radioteknika",
 "RaEl. Radiotekhnika i Elektronika",
 "RERE. Radiotekhnika i Elektronika Radio Engineering Electronic Physics",
 "RatK. Radiotekhnika Kharkov",
@@ -3323,6 +3635,7 @@ static const char *journals[] = {
 "RISRJ Report Ionosphere Space Research Japan",
 "HarOR Report of the Committee of the Overseers of Harvard College appointed to visit the Observatory",
 "RNAOJ Report of the National Astronomical Observatory of Japan",
+"RSPUT Report Series of the Department of Physics and Science, University of Turku",
 "YalRY Reports for the year presented by the Board of Managers of the Observatory of Yale University to the President and Fellows",
 "ROLun Reports of the Lund Observatory",
 "RpMP. Reports on Mathematical Physics",
@@ -3343,10 +3656,12 @@ static const char *journals[] = {
 "RLPhy Research Letters in Physics",
 "RMA.. Research Measurement Approach",
 "RNOST Research News &amp",
+"RPFSU Research Papers Faculty of Materials Science and Technology Slovak University of Technology",
 "RRP.. Research Reports in Physics",
 "RTP.. Research Trends in Physics",
 "RNAO. Resultados del Observatorio Nacional Argentino",
 "ROCor Resultados del Observatorio Nacional Argentino en Cordoba",
+"ResPh Results in Physics",
 "RAROC Results of Astronomical Observations made at the Royal Observatory, Cape of Good Hope",
 "RMROC Results of Meridian Observations made at the Royal Observatory, Cape of Good Hope",
 "RDR.. Review of Derivatives Research",
@@ -3364,12 +3679,14 @@ static const char *journals[] = {
 "RvMPS Reviews of Modern Physics Supplement",
 "RvOp. Reviews of Optics",
 "RvPP. Reviews of Plasma Physics",
+"RvRRL Reviews of the Radio Research Laboratory",
 "RvA.. Revista Astronomica Organo de la Asociacion Argengina Amigos de la Astronomia Buenos Aires",
 "RBrFi Revista Brasileira de Fisica",
 "RvCF. Revista Colombiana de Fisica",
 "IORP. Revista do observatorio : publicacao mensal do Imperial Observatorio do Rio de Janeiro",
 "RMxAA Revista Mexicana de Astronomia y Astrofisica",
 "RMxF. Revista Mexicana de Fisica",
+"RMxFE Revista Mexicana de Fisica E",
 "RMxFS Revista Mexicana de Fisica Supplement",
 "RvMad Revista Real Acad. Ciencias Exact. Fis. Nat. Madrid",
 "RTrTe Revista Transporturilor si Telecomunicatiilor",
@@ -3392,7 +3709,7 @@ static const char *journals[] = {
 "AcRhe Rheologica Acta",
 "RA... Ricerche Astronomiche",
 "RIzZi Riga Izdatel Zinatne",
-"Rise. Rise hvezd Popularne vedecky astronomicky casopis Praha",
+"Rise. Rise Hvezd",
 "RRA.. River Research and Applications",
 "RIG.. Rivista Italiana di Geofisica",
 "RIGSA Rivista Italiana di Geofisica e Scienze Affini",
@@ -3403,12 +3720,13 @@ static const char *journals[] = {
 "Roczn Rocznik Astronomiczny Observatorjum Krakowskiego Krakow",
 "RoAJ. Romanian Astronomical Journal",
 "RoJPh Romanian Journal of Physics",
+"RoRPh Romanian Reports in Physics",
 "RoIE. Rossiiskaia Akademiia Nauk Izvestiia Energetika",
 "RoIMZ Rossiiskaia Akademiia Nauk Izvestiia Mekhanika Zhidkosti i Gaza",
 "RoISF Rossiiskaia Akademiia Nauk Izvestiia Seriia Fizicheskaia",
 "RoDok Rossijskaya Akademiya Nauk Doklady",
 "RoIMT Rossijskaya Akademiya Nauk Izvestiya Mekhanika Tverdogo Tela",
-"IzRos Rossijskaya Akademiya Nauk Izvestiya Seriya Fizicheskaya",
+"RoIzF Rossijskaya Akademiya Nauk Izvestiya Seriya Fizicheskaya",
 "RWPWZ Rostock Wilhelm Pieck Universitaet Wissenschaftliche Zeitschrift Mathematisch Naturwissenschaftliche Reihe",
 "PVSS. Royal Astronomical Society of New Zealand Publications of Variable Star Section",
 "VSSCi Royal Astronomical Society of New Zealand Variable Star Section Circulars",
@@ -3419,7 +3737,9 @@ static const char *journals[] = {
 "ROAn. Royal Observatory Annals",
 "CapMi Royal Observatory Cape Mimeogram",
 "CoRSE Royal Society Edinburgh Communications Physical Sciences",
+"RSCT. Royal Society of Canada Transactions",
 "RSEPS Royal Society of Edinburgh Proceedings Section",
+"RSET. Royal Society of Edinburgh Transactions",
 "RSPTA Royal Society of London Philosophical Transactions Series A",
 "RSPTB Royal Society of London Philosophical Transactions Series B",
 "RSPT. Royal Society of London Philosophical Transactions Series I",
@@ -3428,8 +3748,14 @@ static const char *journals[] = {
 "RSPS. Royal Society of London Proceedings Series I",
 "RoIn. Rozprawy Inzynierskie",
 "RoIET Rozprawy Inzynierskie Engineering Transactions",
+"asc.. Space Telescope ASC Instrument Science Report",
+"nicm. Space Telescope NICMOS Instrument Science Report",
+"stis. Space Telescope STIS Instrument Science Report",
+"wfc.. Space Telescope WFC Instrument Science Report",
+"wfpc. Space Telescope WFPC2 Instrument Science Report",
 "Ruimt Ruimtevaart",
 "RuCRv Russian Chemical Reviews",
+"RuGG. Russian Geology and Geophysics",
 "RJET. Russian Journal of Engineering Thermophysics",
 "RJMP. Russian Journal of Mathematical Physics",
 "RJPC. Russian Journal Physical Chemistry",
@@ -3438,6 +3764,7 @@ static const char *journals[] = {
 "RuMaS Russian Mathematical Surveys",
 "RuMet Russian Metallurgy",
 "RuPhJ Russian Physics Journal",
+"RALR. Rutherford Appleton Laboratory Report",
 "Sadha Sadhana",
 "STVF. Samoletostroenie Tekhnika Vozdushnogo Flota",
 "SAMPJ SAMPE Journal",
@@ -3445,11 +3772,14 @@ static const char *journals[] = {
 "UISTS San Diego CA Univelt Inc Science Technology Series",
 "MaMeA Sankt Peterburgskii Universitet Vestnik Seriia Matematika Mekhanika Astronomiia",
 "SAOSR SAO Special Report",
+"asd.. Astrophysics Software Database",
+"ascl. Astrophysics Source Code Library",
 "SatCo Satellite Communications",
 "SBARM SBARMO Bulletin",
 "SbMat Sbornik: Mathematics",
 "SJMet Scandinavian Journal of Metallurgy",
 "SUVSR Scandinavian Union of Amateur Astronomers Variable Star Section",
+"ScReE Scholarly Research Exchange",
 "SNG.. Schweizerische Naturforschende Gesellschaft",
 "Sci.. Science",
 "SCSA. Science and Culture Series: Astrophysics",
@@ -3459,6 +3789,7 @@ static const char *journals[] = {
 "SCSMP Science China Series Mathematics Physics Astronomy Technological Sciences",
 "SciDi Science Dimension",
 "SciEd Science Education",
+"ScEdR Science Education Research",
 "SFCh. Science Foundation in China",
 "ScChA Science in China A: Mathematics",
 "ScChB Science in China B: Chemistry",
@@ -3474,6 +3805,7 @@ static const char *journals[] = {
 "Scis. Sciences",
 "SciB. Scientia (Bologna)",
 "SciSn Scientia Sinica",
+"SSPMA Scientia Sinica Physica, Mechanica &amp",
 "SSSMP Scientia Sinica Series Mathematical Physical Technical Sciences",
 "SciAm Scientific American",
 "SMS.. Scientific Modeling and Simulation SMNS",
@@ -3521,9 +3853,11 @@ static const char *journals[] = {
 "SIAMR SIAM Review",
 "SiMaJ Siberian Mathematical Journal",
 "SiFTZ Sibirskii Fiziko Tekhnicheskii Zhurnal",
+"JCMSI SICE Journal of Control, Measurement, and System Integration",
 "SidM. Sidereal Messenger",
 "SIDPQ SID Proceedings Quarter",
 "SiFoE Siemens Forschungs und Entwicklungsberichte",
+"SIGMA SIGMA",
 "Sig.. Signal",
 "SigPr Signal Processing",
 "Simul Simulation",
@@ -3534,6 +3868,7 @@ static const char *journals[] = {
 "SRT.. Skin Research and Technology",
 "SkyN. Sky News",
 "SlaOb Slaboproudy Obzor",
+"SJCE. Slovak Journal of Civil Engineering",
 "SBE.. Small Business Economics",
 "SMaS. Smart Material Structures",
 "Smith Smithsonian",
@@ -3547,7 +3882,7 @@ static const char *journals[] = {
 "SEEJ. Society of Environmental Engineers Journal",
 "SIAM. Society of Industrial and Applied Mathematics",
 "SIBAN Sofia Izdatel Bolgarskoi Akademii Nauk",
-"asd..sAstrophysics Software Database",
+"SMat. Soft Matter",
 "SSSAJ Soil Science Society of America Journal",
 "SoCe. Solar Cells",
 "SoEn. Solar Energy",
@@ -3569,6 +3904,7 @@ static const char *journals[] = {
 "BSolD Solnechnye Dann. Bull. Akad. Nauk SSSR",
 "SoKie Sonderdrucke der Sternwarte Kiel",
 "SoMue Sonderdrucke Universitaet Muenster Astronomisches Institut",
+"Sonne Sonne",
 "SoShe Soobshchenie Shemakhinskoj Astrofizicheskoj Observatorii",
 "SoByu Soobshcheniya Byurakanskoj Observatorii Akademiya Nauk Armyanskoj SSR Erevan",
 "SoSht Soobshcheniya Gosudarstvennogo Astronomicheskogo Instituta",
@@ -3581,13 +3917,15 @@ static const char *journals[] = {
 "SAJPh South African Journal of Physics",
 "SAJSc South African Journal of Science",
 "SouSt Southern Stars",
-"IBSAE Sovetskaia Antarkticheskaia Ekspeditsiia Informatsionnyi Biulleten",
+"IBSAE Sovetskaia Antarkticheskaia Ekspeditsiia Informatsionnyi Byulleten",
 "SovAe Soviet Aeronomii",
+"SvApM Soviet Applied Mechanics",
 "SvA.. Soviet Astronomy",
 "SvAL. Soviet Astronomy Letters",
 "JETP. Soviet Journal of Experimental and Theoretical Physics",
 "JETPL Soviet Journal of Experimental and Theoretical Physics Letters",
 "SvJNP Soviet Journal of Nuclear Physics",
+"SvJOT Soviet Journal of Optical Technology",
 "SvJPP Soviet Journal of Plasma Physics",
 "SvJQE Soviet Journal of Quantum Electronics",
 "SvPAC Soviet Physics Acoustics",
@@ -3616,8 +3954,9 @@ static const char *journals[] = {
 "SpMME Space Medicine Medical Engineering",
 "SpPol Space Policy",
 "SpPow Space Power",
-"SPRMD Space Power Resources and Manufacturing Development",
+"SPRMD Space Power - Resources, Manufacturing and  Development",
 "SpRBu Space Research Bulgaria",
+"SpReT Space Research Today",
 "SSI.. Space Science Instrumentation",
 "SSRv. Space Science Reviews",
 "SpT.. Space Technology",
@@ -3629,6 +3968,7 @@ static const char *journals[] = {
 "SpWdU Space World U",
 "SpWdW Space World W",
 "SpWdY Space World Y",
+"Spark Spark, the AAS Education Newsletter",
 "VatAR Specola Astronomica Vaticana Annual Reports",
 "AtlSV Specola Astronomica Vaticana Atlas Stellarum Variabilium",
 "VatCo Specola Astronomica Vaticana Comunicazione",
@@ -3643,6 +3983,7 @@ static const char *journals[] = {
 "SScT. Speculations in Science and Technology",
 "Spika Spika",
 "SpEng Sports Engineering",
+"SSSSc Springer Series in Surface Sciences",
 "STMP. Springer Tracts in Modern Physics",
 "SSCP. Springer Verlag Springer Series on Chemical Physics",
 "SSEp. Springer Verlag Springer Series on Electrophysics",
@@ -3677,10 +4018,12 @@ static const char *journals[] = {
 "Strai Strain",
 "SGC.. Stratigraphy and Geological Correlation",
 "Stroj Strojarstvo",
+"StAst Strolling Astronomer",
 "StrOp Structural Optimization",
 "SASn. Studia Astronomica Sinica",
 "StBio Studia Biophysica",
 "StGG. Studia Geophysica et Geodaetica",
+"StuMa Studia Mathematica",
 "SSTor Studia Societatis Scientiarum Torunensis Sectio F Astronomia",
 "StAM. Studies in Applied Mathematics",
 "SCMP. Studies in Condensed Matter Physics",
@@ -3690,6 +4033,7 @@ static const char *journals[] = {
 "StHCG Studies in High Energy Physics Cosmology and Gravitation",
 "StMaP Studies in Mathematical Physics",
 "StPTC Studies in Physical and Theoretical Chemistry",
+"SScEd Studies in Science Education",
 "StHPM Studies in the History and Philosophy of Modern Physics",
 "StHMP Studies in the History of Mathematics and the Physical Sciences",
 "Sttur Studies in turbulence",
@@ -3702,12 +4046,12 @@ static const char *journals[] = {
 "Sunwo Sunworld",
 "SuScT Superconductor Science Technology",
 "SuMi. Superlattices and Microstructures",
+"JPhSu Supplement au Journal de Physique",
 "AnMuS Supplementband zu den Annalen der Munchener Sternwarte",
 "SAnAp Supplements aux Annales d'Astrophysique",
 "SuCT. Surface and Coatings Technology",
 "SurIA Surface and Interface Analysis",
 "SRL.. Surface Review and Letters",
-"SuRvL Surface Reviews and Letters",
 "SurSc Surface Science",
 "SurSL Surface Science Letter",
 "SurSR Surface Science Reports",
@@ -3761,6 +4105,8 @@ static const char *journals[] = {
 "TepVT Teplofizika Vysokikh Temperatur",
 "TFizG Teploobmen i Fizicheskaia Gazodinamika",
 "TNEK. Teplovye Napriazheniia Elementakh Konstruktsii",
+"TeMAE Terrestrial Magnetism and Atmospheric Electricity (Journal of Geophysical Research)",
+"TeMag Terrestrial Magnetism (Journal of Geophysical Research)",
 "Tesla TESLA Electronics",
 "TTPhy Teubner Texte zur Physik",
 "TexMi Textures and Microstructures",
@@ -3769,7 +4115,10 @@ static const char *journals[] = {
 "Astr. The Astronomer",
 "ATel. The Astronomer's Telegram",
 "AJ... The Astronomical Journal",
+"AJS.. The Astronomical Journal Supplement",
+"AstRv The Astronomical Review",
 "ApJ.. The Astrophysical Journal",
+"ApJL. The Astrophysical Journal Letters",
 "ApJS. The Astrophysical Journal Supplement Series",
 "BJHS. The British Journal for the History of Science",
 "BJPS. The British Journal for the Philosophy of Science",
@@ -3781,6 +4130,7 @@ static const char *journals[] = {
 "JAS.. The Journal of Agricultural Science",
 "JChTh The Journal of Chemical Thermodynamics",
 "JFin. The Journal of Finance",
+"MatMo The Mathematical Monthly",
 "Msngr The Messenger",
 "Neuro The Neuroscientist",
 "INGN. The Newsletter of the Isaac Newton Group of Telescopes",
@@ -3793,7 +4143,7 @@ static const char *journals[] = {
 "OCPJ. The Open Chemical Physics Journal",
 "OCMPJ The Open Condensed Matter Physics Journal",
 "OGC.. The Open Geology Journal",
-"OHC.. The Open Hydrology Journal",
+"OHJ.. The Open Hydrology Journal",
 "OMEJ. The Open Mechanical Engineering Journal",
 "OMJ.. The Open Mechanics Journal",
 "OMnJ. The Open Mineralogy Journal",
@@ -3816,6 +4166,7 @@ static const char *journals[] = {
 "AcTC. Theoretica Chimica Acta",
 "ThApC Theoretical and Applied Climatology",
 "ThAFM Theoretical and Applied Fracture Mechanics",
+"TAM.. Theoretical and Applied Mechanics",
 "ThCFD Theoretical and Computational Fluid Dynamics",
 "TMP.. Theoretical and Mathematical Physics",
 "ThAst Theoretical Astrophysics",
@@ -3823,7 +4174,8 @@ static const char *journals[] = {
 "PhTea The Physics Teacher",
 "PlJ.. The Plant Journal",
 "QJMat The Quarterly Journal of Mathematics",
-"RamJ. The Ramanujan Journal",
+"QJPAM The Quarterly Journal of Pure and Applied Mathematics",
+"RamJ. The Ramaujan Journal",
 "RvES. The Review of Economic Studies",
 "ThEng Thermal Engineering",
 "TSE.. Thermal Science and Engineering",
@@ -3847,8 +4199,8 @@ static const char *journals[] = {
 "TUASB Tokyo University Institute of Space and Aeronautical Science Bulletin",
 "TUASR Tokyo University Institute of Space and Aeronautical Science Report",
 "TIOA. Tomsk Institut Optiki Atmosfery CO AN SSSR",
-"TApA. Top. Astrophys. Astron. Space Sci.",
 "TApPh Topics in Applied Physics",
+"TAASS Topics in Astrophysics, Astrononmy, and Space Science",
 "ToCat Topics in Catalysis",
 "TCPh. Topics in Current Physics",
 "TPhCh Topics in Physical Chemistry",
@@ -3862,12 +4214,17 @@ static const char *journals[] = {
 "TOYal Transactions of the Astronomical Observatory of Yale University",
 "TCaPS Transactions of the Cambridge Philosophical Society",
 "TIMC. Transactions of the Institute of Measurement and Control",
+"TISCI Transactions of the Institute of Systems, Control and Information Engineers",
 "IAUTA Transactions of the International Astronomical Union, Series A",
 "IAUTB Transactions of the International Astronomical Union, Series B",
 "TIUCS Transactions of the International Union for Cooperation in Solar Research",
 "TJSAI Transactions of the Japanese Society for Artificial Intelligence",
+"TATJ. Transactions of the Japanese Society for Artificial Intelligence, Aerospace Technology Japan",
+"TJSIE Transactions of The Japanese Society of Irrigation, Drainage and Rural Engineering",
+"TRACE Transactions of the Japan Society of Refrigerating and Air Conditioning Engineers",
 "TLHSQ Transactions of the Literary and Historical Society of Quebec",
 "TrOS. Transactions of the Optical Society",
+"TSICE Transactions of the Society of Instrument and Control Engineers",
 "TPM.. Transport in Porous Media",
 "TTSP. Transport Theory and Statistical Physics",
 "TvOC. Transvaal Observatory Circular",
@@ -3895,23 +4252,27 @@ static const char *journals[] = {
 "TrTsI TsIAM Trudy",
 "TsHUJ Tsing Hua University Journal",
 "TITas Tsirkulyar Astronomicheskogo Instituta Akademiya Nauk Uzbekskoj SSR",
+"TsLvo Tsirkulyar Astronomicheskoj Observatorii Lvov",
 "TsShe Tsirkulyar Shemakhinskoj Astrofizicheskoj Observatorii",
 "TsSta Tsirkulyar Stalinabadskoj Astronomicheskoj Observatorii",
 "TsTas Tsirkulyar Tashkentskoj Astronomicheskoj Observatorii",
+"TsVse Tsirkulyar Vses. astron.-geod. o-va",
 "TsPul Tsirkulyary Glavnoj Astronomicheskoj Observatorii i Pulkove",
 "TUAID Tuebingen Universitaet Astronomisches Institut Diplomarbeit",
 "TJJPT Tuijin Jishu Journal of Propulsion Technology",
 "TurTe Turbulentnye techeniia",
 "TJPh. Turkish Journal of Physics",
+"UkJPO Ukrainian Journal of Physical Optics",
 "UkFiZ Ukrainskii Fizicheskii Zhurnal",
 "UkMaZ Ukrainskii Matematicheskii Zhurnal",
-"UkMJ. Ukranian Mathematical Journal",
 "Ultmi Ultramicroscopy",
 "UltIm Ultrasonic Imaging",
 "Ultra Ultrasonics",
+"Umsch Umschau",
 "USOC. Unified System Orbit Computation USOC",
 "UMIB. Unione Matematica Italiana Bollettino",
 "UNPSA United Nations Programme on Space Applications",
+"UniCl Universe Classroom",
 "UNAer Universita di Napoli Aeritalia S",
 "UCAFR Universitas Comeniana Acta Facultatis Rerum Naturalium Physica",
 "UMt1K Universite de Montpellier",
@@ -3931,8 +4292,9 @@ static const char *journals[] = {
 "UppAn Uppsala Astronomical Observatory Annals",
 "UppOR Uppsala Astronomical Observatory Reports",
 "USM.. Upravliaiushchie Sistemy i Mashiny",
-"Urani Urania",
-"UrMad Urania Madrid",
+"UrBar Urania (Bracelona)",
+"Urani Urania (Krakow)",
+"UrMad Urania (Madrid)",
 "UGSJR U S Geological Survey Journal Research",
 "USNOC U.S. Naval Observatory Circulars",
 "USNOR U.S. Naval Observatory Reports",
@@ -3964,6 +4326,7 @@ static const char *journals[] = {
 "VDIZF VDI Zeitschriften Fortschritt Berichte Reihe Stroemungstechnik",
 "VSD.. Vehicle System Dynamics",
 "VKAWA Verhandelingen der Koninklijke Akademie van Wetenschappen te Amsterdam",
+"Verme Vermessungstechnik",
 "VeWFS Veroeffentlichung der Wilhelm Foerster Sterwarte",
 "ViHei Veroeffentlichungen der Badischen Landes-Sternwarte zu Heidelberg",
 "VeHei Veroeffentlichungen der Badischen Sternwarte zu Heidelberg",
@@ -3984,14 +4347,18 @@ static const char *journals[] = {
 "VeABD Veroeffentlichungen des Astronomischen Rechen-Instituts zu Berlin-Dahlem",
 "VeBon Veroeffentlichungen des Astronomisches Institute der Universitaet Bonn",
 "VeFra Veroeffentlichungen des Astronomisches Institute der Universitaet Frankfurt",
+"VeBKI Veroeffentlichungen des Bayerische Kommission Int. Erdmessung",
 "VeKAB Veroeffentlichungen des Koeniglichen Astronomischen Rechen-Instituts zu Berlin",
 "VeZPE Veroffentlichungen des Zentralinstituts Physik der Erde",
 "VMKAN Verslagen en Mededeelingen der Kon. Academie van Wetenschappen, Afd. Natuurkunde",
 "VeLdn Verslag van den staat der Sterrewacht te Leiden",
 "Vert. Vertica",
 "Vertf Vertiflite",
+"Vesmi Vesmir",
 "VKha. Vestnik Khar'kovskogo Universiteta",
+"VeKha Vestnik Khar'kov Universitet",
 "VKie. Vestnik Kievskogo Universiteta Seriya Astronomii",
+"VeLGU Vestnik LGU",
 "VeMos Vestnik Moskovskogo Universiteta Seriya 3 Fizika Astronomiya",
 "VISBD Vibration Inst Shock Vibration Digest",
 "VIAEA Vienna International Atomic Energy Agency",
@@ -4002,10 +4369,12 @@ static const char *journals[] = {
 "VilOB Vilnius Astronomijos Observatorijos Biuletenis",
 "IzVil Vilnius Izdatel Mokslas",
 "VJS.. Virginia Journal of Science",
+"VisKi Visnik Kiiv. Univ., Fiz.-Mat. Nauki, Astron",
 "ViGeo Vissha Geodeziia",
 "VA... Vistas in Astronomy",
 "VTJ.. Vitro Technical Journal",
 "yCat. VizieR Online Data Catalog",
+"yCatp VizieR Online Data Catalog",
 "VADVS VKI Advanced Design of Ventilation Systems",
 "VICFD VKI An Introduction to Computational Fluid Dynamics",
 "VIMT. VKI An Introduction to Modeling Turbulence",
@@ -4062,17 +4431,23 @@ static const char *journals[] = {
 "WtFor Weather and Forecasting",
 "WeiEn Weight Engineering",
 "WeldJ Welding Journal",
+"Werk. Werkgroepnieuws",
 "JIMO. WGN, Journal of the International Meteor Organization",
 "WilOO Williamstown Observatory Observations",
 "WiEn. Wind Energy",
 "WiEng Wind Engineering",
 "WisBT Wissenschaftliche Berichte AEG Telefunken",
 "WisZe Wissenschaftliche Zeitschrift",
+"WSAAA Workshop Series of the Asociacion Argentina de Astronomia",
 "WCRp. World Climate Report",
+"WJCMP World Journal of Condensed Matter Physics",
+"WJM.. World Journal of Mechanics",
+"WJNSE World Journal of Nano Science and Engineering",
+"WJNST World Journal of Nuclear Science and Technology",
 "WroRe Wroclaw Astronomical Observatory Reprints",
 "Wuli. Wuli",
 "YaFiz Yadernaya Fizika",
-"YalOY Yale University Observatory Reports for the year",
+"YalOY Yale University Observatory Reports for the Year",
 "YUFEM Yamaguchi University Faculty of Engineering Memoirs",
 "YUTR. Yamaguchi University Technology Reports",
 "YamC. Yamamoto Circular",
@@ -4095,7 +4470,9 @@ static const char *journals[] = {
 "ZGmS. Zeitschrift fur Geomorphologie Supplement",
 "ZGeo. Zeitschrift fur Geophysik",
 "ZGlGl Zeitschrift fur Gletscherkunde und Glazialgeologie",
-"ZKri. Zeitschrift fur Kristallographie",
+"ZK... Zeitschrift fur Kristallographie",
+"ZKMP. Zeitschrift fur Kristallographie Mineralogie und Petrographie",
+"ZKS.. Zeitschrift fur Kristallographie Supplements",
 "ZMP.. Zeitschrift für Mathematik und Physik",
 "ZMetl Zeitschrift fur Metallkunde",
 "ZeMet Zeitschrift fur Meteorologie",
@@ -4112,6 +4489,7 @@ static const char *journals[] = {
 "ZNatA Zeitschrift Naturforschung Teil A",
 "ZNatB Zeitschrift Naturforschung Teil B",
 "ZePAN Zeitschrift Physik Atomic Nuclei",
+"ZVer. Zeitschrift Vermessungswes.",
 "ZWer. Zeitschrift Werkstofftechnik",
 "ZemVs Zemlia i Vselennaia",
 "Zenit Zenit",
diff --git a/lib/bibcore.c b/lib/bibcore.c
index 09afbf4..b4fce3c 100644
--- a/lib/bibcore.c
+++ b/lib/bibcore.c
@@ -1,9 +1,9 @@
 /*
  * bibcore.c
  *
- * Copyright (c) Chris Putnam 2005-2010
+ * Copyright (c) Chris Putnam 2005-2013
  *
- * Source code released under the GPL
+ * Source code released under the GPL version 2
  *
  */
 #include <stdio.h>
@@ -12,9 +12,82 @@
 
 /* internal includes */
 #include "reftypes.h"
+#include "charsets.h"
 #include "newstr_conv.h"
 #include "is_ws.h"
 
+/* illegal modes to pass in, but use internally for consistency */
+#define BIBL_INTERNALIN   (BIBL_LASTIN+1)
+#define BIBL_INTERNALOUT  (BIBL_LASTOUT+1)
+
+#define debug_set( p ) ( p->verbose > 1 )
+#define verbose_set( p ) ( p->verbose )
+
+static void
+report_params( FILE *fp, const char *f, param *p )
+{
+	fprintf( fp, "-------------------params start for %s\n", f );
+	fprintf( fp, "\tprogname='%s'\n\n", p->progname );
+
+	fprintf( fp, "\treadformat=%d", p->readformat );
+	switch ( p->readformat ) {
+		case BIBL_INTERNALIN:   fprintf( fp, " (BIBL_INTERNALIN)\n" );   break;
+		case BIBL_MODSIN:       fprintf( fp, " (BIBL_MODSIN)\n" );       break;
+		case BIBL_BIBTEXIN:     fprintf( fp, " (BIBL_BIBTEXIN)\n" );     break;
+		case BIBL_RISIN:        fprintf( fp, " (BIBL_RISIN)\n" );        break;
+		case BIBL_ENDNOTEIN:    fprintf( fp, " (BIBL_ENDNOTEIN)\n" );    break;
+		case BIBL_COPACIN:      fprintf( fp, " (BIBL_COPACIN)\n" );      break;
+		case BIBL_ISIIN:        fprintf( fp, " (BIBL_ISIIN)\n" );        break;
+		case BIBL_MEDLINEIN:    fprintf( fp, " (BIBL_MEDLINEIN)\n" );    break;
+		case BIBL_ENDNOTEXMLIN: fprintf( fp, " (BIBL_ENDNOTEXMLIN)\n" ); break;
+		case BIBL_BIBLATEXIN:   fprintf( fp, " (BIBL_BIBLATEXIN)\n" );   break;
+		case BIBL_EBIIN:        fprintf( fp, " (BIBL_EBIIN)\n" );        break;
+		case BIBL_WORDIN:       fprintf( fp, " (BIBL_WORDIN)\n" );       break;
+		default:                fprintf( fp, " (Illegal)\n" );           break;
+	}
+	fprintf( fp, "\tcharsetin=%d\n", p->charsetin );
+/*	fprintf( fp, "\tcharsetin=%d (%s)\n", p->charsetin, get_charsetname( p->charsetin ) );*/
+	fprintf( fp, "\tcharsetin_src=%d", p->charsetin_src );
+	switch ( p->charsetin_src ) {
+		case 0:  fprintf( fp, " (BIBL_SRC_DEFAULT)\n" ); break;
+		case 1:  fprintf( fp, " (BIBL_SRC_FILE)\n" );    break;
+		case 2:  fprintf( fp, " (BIBL_SRC_USER)\n" );    break;
+		default: fprintf( fp, " (Illegal value!)\n" );   break;
+	}
+	fprintf( fp, "\tutf8in=%d\n", p->utf8in );
+	fprintf( fp, "\tlatexin=%d\n", p->latexin );
+	fprintf( fp, "\txmlin=%d\n\n", p->xmlin );
+
+	fprintf( fp, "\twriteformat=%d", p->writeformat );
+	switch ( p->writeformat ) {
+		case BIBL_INTERNALOUT:  fprintf( fp, " (BIBL_INTERNALOUT)\n" );  break;
+		case BIBL_MODSOUT:      fprintf( fp, " (BIBL_MODSOUT)\n" );      break;
+		case BIBL_BIBTEXOUT:    fprintf( fp, " (BIBL_BIBTEXOUT)\n" );    break;
+		case BIBL_RISOUT:       fprintf( fp, " (BIBL_RISOUT)\n" );       break;
+		case BIBL_ENDNOTEOUT:   fprintf( fp, " (BIBL_ENDNOTEOUT)\n" );   break;
+		case BIBL_ISIOUT:       fprintf( fp, " (BIBL_ISIOUT)\n" );       break;
+		case BIBL_WORD2007OUT:  fprintf( fp, " (BIBL_WORD2007OUT)\n" );  break;
+		case BIBL_ADSABSOUT:    fprintf( fp, " (BIBL_ADSABSOUT)\n" );    break;
+		default:                fprintf( fp, " (Illegal)\n" );           break;
+	}
+/*	fprintf( fp, "\tcharsetout=%d (%s)\n", p->charsetout, get_charsetname( p->charsetout ) );*/
+	fprintf( fp, "\tcharsetout=%d\n", p->charsetout );
+	fprintf( fp, "\tcharsetout_src=%d", p->charsetout_src );
+	switch ( p->charsetout_src ) {
+		case 0:  fprintf( fp, " (BIBL_SRC_DEFAULT)\n" ); break;
+		case 1:  fprintf( fp, " (BIBL_SRC_FILE)\n" );    break;
+		case 2:  fprintf( fp, " (BIBL_SRC_USER)\n" );    break;
+		default: fprintf( fp, " (Illegal value!)\n" );   break;
+	}
+	fprintf( fp, "\tutf8out=%d\n", p->utf8out );
+	fprintf( fp, "\tutf8bom=%d\n", p->utf8bom );
+	fprintf( fp, "\tlatexout=%d\n", p->latexout );
+	fprintf( fp, "\txmlout=%d\n", p->xmlout );
+	fprintf( fp, "-------------------params end for %s\n", f );
+
+	fflush( fp );
+}
+
 static void
 bibl_duplicateparams( param *np, param *op )
 {
@@ -71,6 +144,7 @@ bibl_setreadparams( param *np, param *op )
 	np->charsetout_src = BIBL_SRC_DEFAULT;
 	np->xmlout = 0;
 	np->latexout = 0;
+	np->writeformat = BIBL_INTERNALOUT;
 }
 
 static void
@@ -82,6 +156,7 @@ bibl_setwriteparams( param *np, param *op )
 	np->utf8in = 1;
 	np->charsetin = BIBL_CHARSET_UNICODE;
 	np->charsetin_src = BIBL_SRC_DEFAULT;
+	np->readformat = BIBL_INTERNALIN;
 }
 
 void
@@ -166,28 +241,34 @@ bibl_illegaloutmode( int mode )
 }
 
 void
-bibl_verbose2( fields *info, char *filename, long nrefs )
+bibl_verbose2( fields *f, char *filename, long nrefs )
 {
-	int i;
+	int i, n;
+	n = fields_num( f );
 	fprintf( stderr, "======== %s %ld : converted\n", filename, nrefs );
-	for ( i=0; i<info->nfields; ++i ) {
-		fprintf( stderr, "'%s'='%s' level=%d\n", info->tag[i].data,
-				info->data[i].data , info->level[i]);
+	for ( i=0; i<n; ++i ) {
+		fprintf( stderr, "'%s'='%s' level=%d\n",
+			(char*) fields_tag( f, i, FIELDS_CHRP_NOUSE ),
+			(char*) fields_value( f, i, FIELDS_CHRP_NOUSE ),
+			fields_level( f, i ) );
 	}
 	fprintf( stderr, "\n" );
 	fflush( stderr );
 }
 
 void
-bibl_verbose1( fields *info, fields *orig, char *filename, long nrefs )
+bibl_verbose1( fields *f, fields *orig, char *filename, long nrefs )
 {
-	int i;
+	int i, n;
+	n = fields_num( orig );
 	fprintf( stderr, "======== %s %ld : processed\n", filename, nrefs );
-	for ( i=0; i<orig->nfields; ++i ) {
-		fprintf( stderr, "'%s'='%s' level=%d\n", orig->tag[i].data,
-				orig->data[i].data , orig->level[i]);
+	for ( i=0; i<n; ++i ) {
+		fprintf( stderr, "'%s'='%s' level=%d\n",
+			(char*) fields_tag( orig, i, FIELDS_CHRP_NOUSE ),
+			(char*) fields_value( orig, i, FIELDS_CHRP_NOUSE ),
+			fields_level( orig, i ) );
 	}
-	if ( info ) bibl_verbose2( info, filename, nrefs );
+	if ( f ) bibl_verbose2( f, filename, nrefs );
 }
 
 void
@@ -198,50 +279,122 @@ bibl_verbose0( bibl *bin )
 		bibl_verbose2( bin->ref[i], "", i+1 );
 }
 
+/* extract_tag_value
+ *
+ * Extract the tag and the value for ALWAYS/DEFAULT
+ * entries like: "NGENRE|Masters thesis"
+ *
+ * tag = "NGENRE"
+ * value = "Masters thesis"
+ */
 static void
-process_alwaysadd( fields *info, int reftype, param *r )
-{
-        char tag[512], data[512], *p, *q;
-        int i, process, level;
-        for ( i=0; i<r->all[reftype].ntags; ++i ) {
-                process = ((r->all[reftype]).tags[i]).processingtype;
-                if ( process!=ALWAYS ) continue;
-                level   = ((r->all[reftype]).tags[i]).level;
-                p = ((r->all[reftype]).tags[i]).newstr;
-                q = tag;
-                while ( p && *p && *p!='|' ) {
-                        *q = *p;
-                        q++;
-                        p++;
-                }
-                *q = '\0';
-                q = data;
-                if ( p && *p=='|' ) p++;
-                while ( p && *p ) {
-                        *q = *p;
-                        q++;
-                        p++;
-                }
-                *q = '\0';
-                fields_add( info, tag, data, level );
-        }
+extract_tag_value( newstr *tag, newstr *value, char *p )
+{
+	newstr_empty( tag );
+	while ( p && *p && *p!='|' ) {
+		newstr_addchar( tag, *p );
+		p++;
+	}
+	if ( p && *p=='|' ) p++;
+	newstr_empty( value );
+	while ( p && *p ) {
+		newstr_addchar( value, *p );
+		p++;
+	}
+}
+
+/* process_defaultadd()
+ *
+ * Add tag/value pairs that have "DEFAULT" processing
+ * unless a tag/value pair with the same tag has already
+ * been adding during reference processing.
+ */
+static int
+process_defaultadd( fields *f, int reftype, param *r )
+{
+	int i, n, process, level, ok = 1;
+	newstr tag, value;
+	char *p;
+
+	newstrs_init( &tag, &value, NULL );
+
+	for ( i=0; i<r->all[reftype].ntags; ++i ) {
+		process = ((r->all[reftype]).tags[i]).processingtype;
+		if ( process!=DEFAULT ) continue;
+		level   = ((r->all[reftype]).tags[i]).level;
+		p       = ((r->all[reftype]).tags[i]).newstr;
+		extract_tag_value( &tag, &value, p );
+		n = fields_find( f, tag.data, level );
+		if ( n==-1 ) {
+			ok = fields_add( f, tag.data, value.data, level );
+			if ( !ok ) goto out;
+		}
+	}
+out:
+	newstrs_free( &tag, &value, NULL );
+
+	if ( ok ) return BIBL_OK;
+	else return BIBL_ERR_MEMERR;
+}
+
+/* process_alwaysadd()
+ *
+ * Add tag/value pair to reference from the ALWAYS 
+ * processing type without exception (the difference from
+ * DEFAULT processing).
+ */
+static int
+process_alwaysadd( fields *f, int reftype, param *r )
+{
+	int i, process, level, ok = 1;
+	newstr tag, value;
+	char *p;
+
+	newstrs_init( &tag, &value, NULL );
+
+	for ( i=0; i<r->all[reftype].ntags; ++i ) {
+		process = ((r->all[reftype]).tags[i]).processingtype;
+		if ( process!=ALWAYS ) continue;
+		level   = ((r->all[reftype]).tags[i]).level;
+		p = ((r->all[reftype]).tags[i]).newstr;
+		extract_tag_value( &tag, &value, p );
+		ok = fields_add( f, tag.data, value.data, level );
+		if ( !ok ) goto out;
+	}
+
+out:
+	newstrs_free( &tag, &value, NULL );
+
+	if ( ok ) return BIBL_OK;
+	else return BIBL_ERR_MEMERR;
 }
 
 static int
 read_ref( FILE *fp, bibl *bin, char *filename, param *p )
 {
+	int nrefs = 0, bufpos = 0, ok, ret=BIBL_OK, fcharset;/* = CHARSET_UNKNOWN;*/
 	newstr reference, line;
-	fields *ref;
 	char buf[256]="";
-	int nrefs = 0, bufpos = 0, fcharset;/* = CHARSET_UNKNOWN;*/
+	fields *ref;
 	newstr_init( &reference );
 	newstr_init( &line );
 	while ( p->readf( fp, buf, sizeof(buf), &bufpos, &line, &reference, &fcharset ) ) {
 		if ( reference.len==0 ) continue;
 		ref = fields_new();
-		if ( !ref ) return BIBL_ERR_MEMERR;
+		if ( !ref ) {
+			ret = BIBL_ERR_MEMERR;
+			bibl_free( bin );
+			goto out0;
+		}
 		if ( p->processf( ref, reference.data, filename, nrefs+1 )){
-			bibl_addref( bin, ref );
+			ok = bibl_addref( bin, ref );
+			if ( !ok ) {
+				ret = BIBL_ERR_MEMERR;
+				bibl_free( bin );
+				fields_free( ref );
+				free( ref );
+				goto out0;
+			}
 		} else {
 			fields_free( ref );
 			free( ref );
@@ -258,75 +411,100 @@ read_ref( FILE *fp, bibl *bin, char *filename, param *p )
 		}
 	}
 	if ( p->charsetin==CHARSET_UNICODE ) p->utf8in = 1;
+out0:
 	newstr_free( &line );
 	newstr_free( &reference );
-	return BIBL_OK;
+	return ret;
 }
 
-static void
+/* Don't manipulate latex for URL's and the like */
+static int
+bibl_notexify( char *tag )
+{
+	char *protected[] = { "DOI", "URL", "REFNUM" };
+	int i, nprotected = sizeof( protected ) / sizeof( protected[0] );
+	for ( i=0; i<nprotected; ++i )
+		if ( !strcasecmp( tag, protected[i] ) ) return 1;
+	return 0;
+}
+
+static int
+bibl_fixcharsetfields( fields *ref, param *p )
+{
+	newstr *data;
+	char *tag;
+	long i, n;
+	int ok;
+
+	n = fields_num( ref );
+
+	for ( i=0; i<n; ++i ) {
+
+		tag  = fields_tag( ref, i, FIELDS_CHRP_NOUSE );
+		data = fields_value( ref, i, FIELDS_STRP_NOUSE );
+
+		if ( bibl_notexify( tag ) ) {
+			ok = newstr_convert( data,
+				p->charsetin,  0, p->utf8in,  p->xmlin,
+				p->charsetout, 0, p->utf8out, p->xmlout );
+		} else {
+			ok = newstr_convert( data,
+				p->charsetin,  p->latexin,  p->utf8in,  p->xmlin,
+				p->charsetout, p->latexout, p->utf8out, p->xmlout );
+		}
+
+		if ( !ok ) return 0;
+	}
+
+	return 1;
+}
+
+static int
 bibl_fixcharsets( bibl *b, param *p )
 {
-	fields *ref;
-	long i, j;
-	int swap = 0;
-	int latexout = p->latexout;
-	int latexin  = p->latexin;
+	long i;
+	int ok;
 	for ( i=0; i<b->nrefs; ++i ) {
-		ref = b->ref[i];
-		for ( j=0; j<ref->nfields; ++j ) {
-			if ( latexin || latexout ) {
-				/* don't texify/detexify URL's and the like */
-				if ( !strcasecmp( ref->tag[j].data, "DOI" ) ||
-				     !strcasecmp( ref->tag[j].data, "URL" ) ||
-				     !strcasecmp( ref->tag[j].data, "REFNUM" )){
-					latexin  = 0;
-					latexout = 0;
-					swap = 1;
-				}
-			}
-			newstr_convert( &(ref->data[j]),
-				p->charsetin,  latexin,  p->utf8in,  
-				p->xmlin,
-				p->charsetout, latexout, p->utf8out, 
-				p->xmlout );
-			if ( swap ) {
-				swap = 0;
-				latexin  = p->latexin;
-				latexout = p->latexout;
-			}
-		}
+		ok = bibl_fixcharsetfields( b->ref[i], p );
+		if ( !ok ) return 0;
 	}
+	return 1;
 }
 
 static int
-build_refnum( fields *info, long nrefs )
+build_refnum( fields *f, long nrefs )
 {
+	char *year, *author, *p, num[512];
 	newstr refnum;
-	char *p, num[512];
-	int y, a;
+
 	newstr_init( &refnum );
-	y = fields_find( info, "YEAR", 0 );
-	if ( y==-1 ) y = fields_find( info, "YEAR", -1 );
-	if ( y==-1 ) y = fields_find( info, "PARTYEAR", -1 );
-	a = fields_find( info, "AUTHOR", 0 );
-	if ( a==-1 ) a = fields_find( info, "AUTHOR", -1 );
-	if ( a==-1 ) a = fields_find( info, "AUTHOR:CORP", -1 );
-	if ( a==-1 ) a = fields_find( info, "AUTHOR:ASIS", -1 );
-	if ( a!=-1 && y!=-1 ) {
-		p = info->data[a].data;
-		while ( p && *p && *p!='|' )
+
+	year = fields_findv( f, LEVEL_MAIN, FIELDS_CHRP_NOUSE, "YEAR" );
+	if ( !year )
+		year = fields_findv_firstof( f, LEVEL_ANY, FIELDS_CHRP_NOUSE,
+			"YEAR", "PARTYEAR", NULL );
+
+	author = fields_findv( f, LEVEL_MAIN, FIELDS_CHRP_NOUSE, "AUTHOR" );
+	if ( !author )
+		author = fields_findv_firstof( f, LEVEL_ANY, FIELDS_CHRP_NOUSE,
+			"AUTHOR", "AUTHOR:CORP", "AUTHOR:ASIS", NULL );
+
+	if ( year && author ) {
+		p = author;
+		while ( *p && *p!='|' )
 			newstr_addchar( &refnum, *p++ );
-		p = info->data[y].data;
-		while ( p && *p && *p!=' ' && *p!='\t' )
+		p = year;
+		while ( *p && *p!=' ' && *p!='\t' )
 			newstr_addchar( &refnum, *p++ );
 	} else {
 		sprintf( num, "%ld", nrefs );
-		newstr_strcpy( &refnum, "ref" );
-		newstr_strcat( &refnum, num );
+		newstr_mergestrs( &refnum, "ref", num, NULL );
 	}
-	fields_add( info, "REFNUM", refnum.data, 0 );
+
+	fields_add( f, "REFNUM", refnum.data, 0 );
 	newstr_free( &refnum );
-	return fields_find( info, "REFNUM", 0 );
+
+	return fields_find( f, "REFNUM", 0 );
 }
 
 static void
@@ -348,36 +526,36 @@ bibl_checkrefid( bibl *b, param *p )
 }
 
 static int
-generate_citekey( fields *info, int nref )
+generate_citekey( fields *f, int nref )
 {
 	newstr citekey;
 	int n1, n2;
 	char *p, buf[100];
 	newstr_init( &citekey );
-	n1 = fields_find( info, "AUTHOR", 0 );
-	if ( n1==-1 ) n1 = fields_find( info, "AUTHOR", -1 );
-	n2 = fields_find( info, "YEAR", 0 );
-	if ( n2==-1 ) n2 = fields_find( info, "YEAR", -1 );
-	if ( n2==-1 ) n2 = fields_find( info, "PARTYEAR", 0 );
-	if ( n2==-1 ) n2 = fields_find( info, "PARTYEAR", -1 );
+	n1 = fields_find( f, "AUTHOR", 0 );
+	if ( n1==-1 ) n1 = fields_find( f, "AUTHOR", -1 );
+	n2 = fields_find( f, "YEAR", 0 );
+	if ( n2==-1 ) n2 = fields_find( f, "YEAR", -1 );
+	if ( n2==-1 ) n2 = fields_find( f, "PARTYEAR", 0 );
+	if ( n2==-1 ) n2 = fields_find( f, "PARTYEAR", -1 );
 	if ( n1!=-1 && n2!=-1 ) {
-		p = info->data[n1].data;
+		p = f->data[n1].data;
 		while ( p && *p && *p!='|' ) {
 			if ( !is_ws( *p ) ) newstr_addchar( &citekey, *p ); 
 			p++;
 		}
-		p = info->data[n2].data;
+		p = f->data[n2].data;
 		while ( p && *p ) {
 			if ( !is_ws( *p ) ) newstr_addchar( &citekey, *p );
 			p++;
 		}
-		fields_add( info, "REFNUM", citekey.data, 0 );
+		fields_add( f, "REFNUM", citekey.data, 0 );
 	} else {
 		sprintf( buf, "ref%d\n", nref );
 		newstr_strcpy( &citekey, buf );
 	}
 	newstr_free( &citekey );
-	return fields_find( info, "REFNUM", -1 );
+	return fields_find( f, "REFNUM", -1 );
 }
 
 static void
@@ -415,14 +593,14 @@ resolve_citekeys( bibl *b, list *citekeys, int *dup )
 static void
 get_citekeys( bibl *b, list *citekeys )
 {
-	fields *info;
+	fields *f;
 	int i, n;
 	for ( i=0; i<b->nrefs; ++i ) {
-		info = b->ref[i];
-		n = fields_find( info, "REFNUM", -1 );
-		if ( n==-1 ) n = generate_citekey( info, i );
-		if ( n!=-1 && info->data[n].data )
-			list_add( citekeys, info->data[n].data );
+		f = b->ref[i];
+		n = fields_find( f, "REFNUM", -1 );
+		if ( n==-1 ) n = generate_citekey( f, i );
+		if ( n!=-1 && f->data[n].data )
+			list_add( citekeys, f->data[n].data );
 		else
 			list_add( citekeys, "" );
 	}
@@ -461,24 +639,33 @@ uniqueify_citekeys( bibl *b )
 	list_free( &citekeys );
 }
 
+static void
+clean_ref( bibl *bin, param *p )
+{
+	if ( p->cleanf ) p->cleanf( bin, p );
+}
+
 static int 
 convert_ref( bibl *bin, char *fname, bibl *bout, param *p )
 {
 	fields *rin, *rout;
+	int reftype = 0, ok;
 	long i;
-	int reftype;
-	if ( p->cleanf ) p->cleanf( bin, p );
+
 	for ( i=0; i<bin->nrefs; ++i ) {
 		rin = bin->ref[i];
 		rout = fields_new();
 		if ( !rout ) return BIBL_ERR_MEMERR;
 		if ( p->typef ) 
 			reftype = p->typef( rin, fname, i+1, p, p->all, p->nall );
-		else reftype = 0;
-		if ( p->all ) process_alwaysadd( rout, reftype, p );
-		p->convertf( rin, rout, reftype, p, p->all, p->nall );
-		if ( p->verbose ) 
-			bibl_verbose1( rout, rin, fname, i+1 );
+		ok = p->convertf( rin, rout, reftype, p, p->all, p->nall );
+		if ( ok!=BIBL_OK ) return ok;
+		if ( p->all ) {
+			ok = process_alwaysadd( rout, reftype, p );
+			if ( ok!=BIBL_OK ) return ok;
+			ok = process_defaultadd( rout, reftype, p );
+			if ( ok!=BIBL_OK ) return ok;
+		}
 		bibl_addref( bout, rout );
 	}
 	uniqueify_citekeys( bout );
@@ -488,6 +675,7 @@ convert_ref( bibl *bin, char *fname, bibl *bout, param *p )
 int
 bibl_read( bibl *b, FILE *fp, char *filename, param *p )
 {
+	int ret, ok;
 	param lp;
 	bibl bin;
 
@@ -498,17 +686,58 @@ bibl_read( bibl *b, FILE *fp, char *filename, param *p )
 
 	bibl_setreadparams( &lp, p );
 	bibl_init( &bin );
-	read_ref( fp, &bin, filename, &lp );
-	if ( !lp.output_raw || ( lp.output_raw & BIBL_RAW_WITHCHARCONVERT ) )
-		bibl_fixcharsets( &bin, &lp );
-	if ( !lp.output_raw )
-		convert_ref( &bin, filename, b, &lp );
-	else {
-		if ( p->verbose > 1 ) bibl_verbose0( &bin );
-		bibl_copy( b, &bin );
+
+	ret = read_ref( fp, &bin, filename, &lp );
+	if ( ret!=BIBL_OK ) return ret;
+
+	if ( debug_set( p ) ) {
+		fflush( stdout );
+		report_params( stderr, "bibl_read", &lp );
+		fprintf( stderr, "-------------------raw_input start for bibl_read\n");
+		bibl_verbose0( &bin );
+		fprintf( stderr, "-------------------raw_input end for bibl_read\n" );
+		fflush( stderr );
+	}
+
+	if ( !lp.output_raw || ( lp.output_raw & BIBL_RAW_WITHCHARCONVERT ) ) {
+		ok = bibl_fixcharsets( &bin, &lp );
+		if ( !ok ) return BIBL_ERR_MEMERR;
+		if ( debug_set( p ) ) {
+			fprintf( stderr, "-------------------post_fixcharsets start for bibl_read\n");
+			bibl_verbose0( &bin );
+			fprintf( stderr, "-------------------post_fixcharsets end for bibl_read\n" );
+			fflush( stderr );
+		}
+	}
+	if ( !lp.output_raw ) {
+		clean_ref( &bin, &lp );
+		if ( debug_set( p ) ) {
+			fprintf( stderr, "-------------------post_clean_ref start for bibl_read\n");
+			bibl_verbose0( &bin );
+			fprintf( stderr, "-------------------post_clean_ref end for bibl_read\n" );
+			fflush( stderr );
+		}
+		ok = convert_ref( &bin, filename, b, &lp );
+		if ( ok!=BIBL_OK ) return ok;
+		if ( debug_set( p ) ) {
+			fprintf( stderr, "-------------------post_convert_ref start for bibl_read\n");
+			bibl_verbose0( &bin );
+			fprintf( stderr, "-------------------post_convert_ref end for bibl_read\n" );
+			fflush( stderr );
+		}
+	} else {
+		if ( debug_set( p ) ) {
+			fprintf( stderr, "-------------------here1 start for bibl_read\n");
+			bibl_verbose0( &bin );
+			fprintf( stderr, "-------------------here1 end for bibl_read\n" );
+			fflush( stderr );
+		}
+		ok = bibl_copy( b, &bin );
+		if ( !ok ) return BIBL_ERR_MEMERR;
 	}
 	if ( !lp.output_raw || ( lp.output_raw & BIBL_RAW_WITHMAKEREFID ) )
 		bibl_checkrefid( b, &lp );
+
 	bibl_free( &bin );
 
 	return BIBL_OK;
@@ -522,10 +751,13 @@ singlerefname( fields *reffields, long nref, int mode )
 	FILE *fp;
 	long count;
 	int  found;
-	if ( mode==BIBL_BIBTEXOUT ) strcpy( suffix, "bib" );
-	else if ( mode==BIBL_RISOUT ) strcpy( suffix, "ris" );
-	else if ( mode==BIBL_ENDNOTEOUT ) strcpy( suffix, "end" );
-	else if ( mode==BIBL_ADSABSOUT ) strcpy( suffix, "ads" );
+	if      ( mode==BIBL_ADSABSOUT )     strcpy( suffix, "ads" );
+	else if ( mode==BIBL_BIBTEXOUT )     strcpy( suffix, "bib" );
+	else if ( mode==BIBL_ENDNOTEOUT )    strcpy( suffix, "end" );
+	else if ( mode==BIBL_ISIOUT )        strcpy( suffix, "isi" );
+	else if ( mode==BIBL_MODSOUT )       strcpy( suffix, "xml" );
+	else if ( mode==BIBL_RISOUT )        strcpy( suffix, "ris" );
+	else if ( mode==BIBL_WORD2007OUT )   strcpy( suffix, "xml" );
 	found = fields_find( reffields, "REFNUM", 0 );
 	/* find new filename based on reference */
 	if ( found!=-1 ) {
@@ -572,6 +804,7 @@ int
 bibl_write( bibl *b, FILE *fp, param *p )
 {
 	param lp;
+	int ok;
 
 	if ( !b ) return BIBL_ERR_BADINPUT;
 	if ( !p ) return BIBL_ERR_BADINPUT;
@@ -579,8 +812,14 @@ bibl_write( bibl *b, FILE *fp, param *p )
 	if ( !fp && ( !p || !p->singlerefperfile ) ) return BIBL_ERR_BADINPUT;
 
 	bibl_setwriteparams( &lp, p );
-	bibl_fixcharsets( b, &lp );
-	output_bibl( fp, b, &lp );
+
+	ok = bibl_fixcharsets( b, &lp );
+	if ( !ok ) return BIBL_ERR_MEMERR;
+
+	if ( debug_set( p ) ) report_params( stderr, "bibl_write", &lp );
+
+	ok = output_bibl( fp, b, &lp );
+	if ( !ok ) return BIBL_ERR_MEMERR;
 
 	return BIBL_OK;
 }
diff --git a/lib/bibl.c b/lib/bibl.c
index 042a77e..3b3183c 100644
--- a/lib/bibl.c
+++ b/lib/bibl.c
@@ -1,9 +1,9 @@
 /*
  * bibl.c
  *
- * Copyright (c) Chris Putnam 2005-2010
+ * Copyright (c) Chris Putnam 2005-2013
  *
- * Source code released under the GPL
+ * Source code released under the GPL version 2
  *
  */
 #include <stdio.h>
@@ -17,7 +17,7 @@ bibl_init( bibl *b )
 	b->ref = NULL;
 }
 
-static void
+static int
 bibl_malloc( bibl * b )
 {
 	int alloc = 50;
@@ -25,13 +25,14 @@ bibl_malloc( bibl * b )
 	b->ref = ( fields ** ) malloc( sizeof( fields* ) * alloc );
 	if ( b->ref ) {
 		b->maxrefs = alloc;
+		return 1;
 	} else {
-		fprintf( stderr, "bibl_malloc: allocation error\n" );
-		exit( EXIT_FAILURE );
+		fprintf( stderr, "%s: allocation error\n", __FUNCTION__ );
+		return 0;
 	}
 }
 
-static void
+static int
 bibl_realloc( bibl * b )
 {
 	int alloc = b->maxrefs * 2;
@@ -40,19 +41,24 @@ bibl_realloc( bibl * b )
 	if ( more ) {
 		b->ref = more;
 		b->maxrefs = alloc;
+		return 1;
 	} else {
-		fprintf( stderr, "bibl_realloc: allocation error\n" );
-		exit( EXIT_FAILURE );
+		fprintf( stderr, "%s: allocation error\n", __FUNCTION__ );
+		return 0;
 	}
 }
 
-void
+int
 bibl_addref( bibl *b, fields *ref )
 {
-	if ( b->maxrefs==0 ) bibl_malloc( b );
-	else if ( b->nrefs >= b->maxrefs ) bibl_realloc( b );
-	b->ref[ b->nrefs ] = ref;
-	b->nrefs++;
+	int ok = 1;
+	if ( b->maxrefs==0 ) ok = bibl_malloc( b );
+	else if ( b->nrefs >= b->maxrefs ) ok = bibl_realloc( b );
+	if ( ok ) {
+		b->ref[ b->nrefs ] = ref;
+		b->nrefs++;
+	}
+	return ok;
 }
 
 void
@@ -61,26 +67,37 @@ bibl_free( bibl *b )
 	long i;
 	for ( i=0; i<b->nrefs; ++i )
 		fields_free( b->ref[i] );
-	free( b->ref );
+	if ( b->ref ) free( b->ref );
 	b->ref = NULL;
 	b->nrefs = b->maxrefs = 0;
 }
 
-void
+/* bibl_copy()
+ *
+ * returns 1 on success, 0 on failure (memory error)
+ */
+int
 bibl_copy( bibl *bout, bibl *bin )
 {
-	fields *refin;
-	fields *refout;
-	int i, j;
+	fields *refin, *refout;
+	int i, j, n, ok, level;
+	char *tag, *value;
 	for ( i=0; i<bin->nrefs; ++i ) {
 		refin = bin->ref[i];
 		refout = fields_new();
-		for ( j=0; j<refin->nfields; ++j ) {
-			if ( refin->tag[j].data && refin->data[j].data )
-				fields_add( refout, refin->tag[j].data, 
-					refin->data[j].data, refin->level[j] );
+		n = fields_num( refin );
+		for ( j=0; j<n; ++j ) {
+			tag   = fields_tag( refin, j, FIELDS_CHRP );
+			value = fields_value( refin, j, FIELDS_CHRP );
+			level = fields_level( refin, j );
+			if ( tag && value ) {
+				ok = fields_add( refout, tag, value, level );
+				if ( !ok ) return 0;
+			}
 		}
-		bibl_addref( bout, refout );
+		ok = bibl_addref( bout, refout );
+		if ( !ok ) return 0;
 	}
+	return 1;
 }
 
diff --git a/lib/bibl.h b/lib/bibl.h
index 5a8f46c..f5b9434 100644
--- a/lib/bibl.h
+++ b/lib/bibl.h
@@ -1,7 +1,9 @@
 /*
  * bibl.h
  *
- * Copyright (c) Chris Putnam 2005-10
+ * Copyright (c) Chris Putnam 2005-2013
+ *
+ * Source code released under the GPL version 2
  *
  */
 #ifndef BIBL_H
@@ -19,9 +21,9 @@ typedef struct {
 } bibl;
 
 extern void bibl_init( bibl *b );
-extern void bibl_addref( bibl *b, fields *ref );
+extern int  bibl_addref( bibl *b, fields *ref );
 extern void bibl_free( bibl *b );
-extern void bibl_copy( bibl *bout, bibl *bin );
+extern int  bibl_copy( bibl *bout, bibl *bin );
 
 #endif
 
diff --git a/lib/biblatexin.c b/lib/biblatexin.c
index b366bb1..9d46e19 100644
--- a/lib/biblatexin.c
+++ b/lib/biblatexin.c
@@ -1,10 +1,10 @@
 /*
  * biblatexin.c
  *
- * Copyright (c) Chris Putnam 2008-2010
- * Copyright (c) Johannes Wilm 2010
+ * Copyright (c) Chris Putnam 2008-2013
+ * Copyright (c) Johannes Wilm 2010-2013
  *
- * Program and source code released under the GPL
+ * Program and source code released under the GPL version 2
  *
  */
 #include <stdio.h>
@@ -21,6 +21,9 @@
 #include "reftypes.h"
 #include "biblatexin.h"
 
+static list find    = { 0, 0, 0, NULL };
+static list replace = { 0, 0, 0, NULL };
+
 void
 biblatexin_initparams( param *p, const char *progname )
 {
@@ -99,25 +102,37 @@ biblatexin_readf( FILE *fp, char *buf, int bufsize, int *bufpos, newstr *line, n
 static char *
 biblatex_item( char *p, newstr *s )
 {
-	int nquotes = 0;
+	int surrounding_quotes = 0;
 	int nbrackets = 0;
+	int nquotes = 0;
 	while ( *p ) {
 		if ( !nquotes && !nbrackets ) {
 			if ( *p==',' || *p=='=' || *p=='}' || *p==')' )
 				goto out;
 		}
 		if ( *p=='\"' && *(p-1)!='\\' && nbrackets==0 ) {
+			if ( s->len == 0 ) surrounding_quotes = 1;
+			else {
+				if ( !surrounding_quotes ) newstr_addchar( s, *p );
+				if ( nquotes ) surrounding_quotes = 0;
+			}
 			nquotes = ( nquotes==0 );
-			newstr_addchar( s, *p );
 		} else if ( *p=='{' ) {
+			if ( nbrackets>0 || nquotes ) newstr_addchar( s, *p );
 			nbrackets++;
-			/*if ( s->len!=0 )*/ newstr_addchar( s, *p );
 		} else if ( *p=='}' ) {
 			nbrackets--;
-			/*if ( nbrackets>0 )*/ newstr_addchar( s, *p );
+			if ( nbrackets>0 || nquotes ) newstr_addchar( s, *p );
 		} else {
-			if ( s->len!=0 || ( s->len==0 && !is_ws( *p ) ) )
-				newstr_addchar( s, *p );
+			if ( !is_ws( *p ) ) newstr_addchar( s, *p );
+			else {
+				if ( s->len!=0 && *p!='\n' && *p!='\r' )
+					newstr_addchar( s, *p );
+				else if ( s->len!=0 && (*p=='\n' || *p=='\r')) {
+					newstr_addchar( s, ' ' );
+					while ( is_ws( *(p+1) ) ) p++;
+				}
+			}
 		}
 		p++;
 	}
@@ -144,11 +159,8 @@ process_biblatexline( char *p, newstr *tag, newstr *data )
 }
 
 static void
-biblatex_cleantoken( newstr *s, param *p )
+biblatex_cleantoken( newstr *s )
 {
-
-	if ( p && p->latexin==0 ) return;
-
 	/* 'textcomp' annotations */
 	newstr_findreplace( s, "\\textit", "" );
 	newstr_findreplace( s, "\\textbf", "" );
@@ -176,56 +188,35 @@ biblatex_cleantoken( newstr *s, param *p )
 	newstr_findreplace( s, "\\textunderscore", "_" );
 }
 
-static int
-biblatex_protected( newstr *data )
-{
-	if ( data->data[0]=='{' && data->data[data->len-1]=='}' ) return 1;
-	if ( data->data[0]=='\"' && data->data[data->len-1]=='\"' ) return 1;
-	return 0;
-}
-
-static void
-biblatex_removeprotection( newstr *data )
-{
-	newstr s;
-	if ( data->len<3 ) newstr_empty( data ); /* "", {} to nothing */
-	else {
-		newstr_init( &s );
-		newstr_segcpy( &s, &(data->data[1]), 
-				&(data->data[data->len-1]) );
-		newstr_newstrcpy( data, &s );
-		newstr_free( &s );
-	}
-}
-
 static void
 biblatex_split( list *tokens, newstr *s )
 {
+	int i, n = s->len, nbrackets = 0;
 	newstr currtok;
-	int nquotes = 0, nbrackets = 0;
-	int i, n = s->len;
+
 	newstr_init( &currtok );
+
 	for ( i=0; i<n; ++i ) {
-		if ( s->data[i]=='\"' ) {
-			if ( nquotes ) nquotes = 0;
-			else nquotes = 1;
-			newstr_addchar( &currtok, '\"' );
-		} else if ( s->data[i]=='{' ) {
+		if ( s->data[i]=='{' ) {
 			nbrackets++;
 			newstr_addchar( &currtok, '{' );
 		} else if ( s->data[i]=='}' ) {
 			nbrackets--;
 			newstr_addchar( &currtok, '}' );
-		} else if ( s->data[i]=='#' && !nquotes && !nbrackets ) {
+		} else if ( s->data[i]=='#' && !nbrackets ) {
 			if ( currtok.len ) list_add( tokens, currtok.data );
 			newstr_empty( &currtok );
-		} else if ( !is_ws( s->data[i] ) || nquotes || nbrackets ) {
+		} else if ( !is_ws( s->data[i] ) || nbrackets ) {
 			newstr_addchar( &currtok, s->data[i] );
+		} else if ( is_ws( s->data[i] ) ) {
+			if ( currtok.len ) list_add( tokens, currtok.data );
+			newstr_empty( &currtok );
 		}
 	}
 	if ( currtok.len ) list_add( tokens, currtok.data );
 	for ( i=0; i<tokens->n; ++i ) {
-		newstr_trimendingws( &(tokens->str[i]) );
+		newstr_trimstartingws( list_get( tokens, i ) );
+		newstr_trimendingws( list_get( tokens, i ) );
 	}
 	newstr_free( &currtok );
 }
@@ -306,11 +297,55 @@ process_cite( fields *bibin, char *p, char *filename, long nref )
 	newstrs_free( &tag, &data, NULL );
 }
 
+static void
+biblatex_addstring( char *p )
+{
+	newstr s1, s2;
+	newstrs_init( &s1, &s2, NULL );
+	p = skip_ws( p );
+	if ( *p=='(' || *p=='{' ) p++;
+	p = process_biblatexline( p, &s1, &s2 );
+	newstr_findreplace( &s2, "\\ ", " " );
+	biblatex_cleantoken( &s2 );
+	if ( s1.data ) {
+		list_add( &find, s1.data );
+		if ( s2.data ) list_add( &replace, s2.data );
+		else list_add( &replace, "" );
+	}
+	newstrs_free( &s1, &s2, NULL );
+}
+
+static int
+biblatex_usestrings( newstr *s )
+{
+	int i;
+	for ( i=0; i<find.n; ++i ) {
+		if ( !strcasecmp( s->data, (find.str[i]).data ) ) {
+			newstr_findreplace( s, (find.str[i]).data, 
+					(replace.str[i]).data );
+			return 1;
+		}
+	}
+	return 0;
+}
+
+static void
+process_string( char *p )
+{
+	while ( *p && *p!='{' && *p!='(' ) p++;
+	biblatex_addstring( p );
+}
+
 int
 biblatexin_processf( fields *bibin, char *data, char *filename, long nref )
 {
-	process_cite( bibin, data, filename, nref );
-	return 1;
+	if ( !strncasecmp( data, "@STRING", 7 ) ) {
+		process_string( data );
+		return 0;
+        } else {
+		process_cite( bibin, data, filename, nref );
+		return 1;
+	}
 }
 
 static void
@@ -332,25 +367,50 @@ biblatex_addtitleurl( fields *info, newstr *in )
 	newstr_free( &s );
 }
 
+static int
+is_name_tag( newstr *tag )
+{
+	if ( tag->len ) {
+		if ( !strcasecmp( tag->data, "author" ) ) return 1;
+		if ( !strcasecmp( tag->data, "editor" ) ) return 1;
+		if ( !strcasecmp( tag->data, "editorb" ) ) return 1;
+		if ( !strcasecmp( tag->data, "editorc" ) ) return 1;
+		if ( !strcasecmp( tag->data, "director" ) ) return 1;
+		if ( !strcasecmp( tag->data, "producer" ) ) return 1;
+		if ( !strcasecmp( tag->data, "execproducer" ) ) return 1;
+		if ( !strcasecmp( tag->data, "writer" ) ) return 1;
+		if ( !strcasecmp( tag->data, "redactor" ) ) return 1;
+		if ( !strcasecmp( tag->data, "annotator" ) ) return 1;
+		if ( !strcasecmp( tag->data, "commentator" ) ) return 1;
+		if ( !strcasecmp( tag->data, "translator" ) ) return 1;
+		if ( !strcasecmp( tag->data, "foreword" ) ) return 1;
+		if ( !strcasecmp( tag->data, "afterword" ) ) return 1;
+		if ( !strcasecmp( tag->data, "introduction" ) ) return 1;
+	}
+	return 0;
+}
+
 static void
-biblatex_cleandata( newstr *s, fields *info, param *p )
+biblatex_cleandata( newstr *tag, newstr *s, fields *info, param *p )
 {
 	list tokens;
+	newstr *tok;
 	int i;
 	if ( !s->len ) return;
 	list_init( &tokens );
 	biblatex_split( &tokens, s );
 	for ( i=0; i<tokens.n; ++i ) {
+		biblatex_usestrings( &(tokens.str[i]) );
 		if (!strncasecmp(tokens.str[i].data,"\\href{", 6)) {
 			biblatex_addtitleurl( info, &(tokens.str[i]) );
 		}
-		biblatex_cleantoken( &(tokens.str[i]), p );
+		if ( p && p->latexin && !is_name_tag( tag ) ) biblatex_cleantoken( &(tokens.str[i]) );
 	}
 	newstr_empty( s );
 	for ( i=0; i<tokens.n; ++i ) {
-		if ( biblatex_protected( &(tokens.str[i]) ) )
-			biblatex_removeprotection( &(tokens.str[i]));
-		newstr_strcat( s, tokens.str[i].data ); 
+		tok = list_get( &tokens, i );
+		if ( i>0 ) newstr_addchar( s, ' ' );
+		newstr_newstrcat( s, tok );
 	}
 	list_free( &tokens );
 }
@@ -409,7 +469,7 @@ biblatexin_crossref( bibl *bin, param *p )
 		type = bin->ref[i]->data[ntype].data;
 		fields_setused( bin->ref[i], n );
 /*		bin->ref[i]->used[n] = 1; */
-		for ( j=0; j<bin->ref[ncross]->nfields; ++j ) {
+		for ( j=0; j<bin->ref[ncross]->n; ++j ) {
 			nt = bin->ref[ncross]->tag[j].data;
 			if ( !strcasecmp( nt, "INTERNAL_TYPE" ) ) continue;
 			if ( !strcasecmp( nt, "REFNUM" ) ) continue;
@@ -430,11 +490,12 @@ static void
 biblatexin_cleanref( fields *bibin, param *p )
 {
 	newstr *t, *d;
-	int i;
-	for ( i=0; i<bibin->nfields; ++i ) {
-		t = &( bibin->tag[i] );
-		d = &( bibin->data[i] );
-		biblatex_cleandata( d, bibin, p );
+	int i, n;
+	n = fields_num( bibin );
+	for ( i=0; i<n; ++i ) {
+		t = fields_tag( bibin, i, FIELDS_STRP_NOUSE );
+		d = fields_value( bibin, i, FIELDS_STRP_NOUSE );
+		biblatex_cleandata( t, d, bibin, p );
 		if ( !strsearch( t->data, "AUTHORS" ) ) {
 			newstr_findreplace( d, "\n", " " );
 			newstr_findreplace( d, "\r", " " );
@@ -457,127 +518,196 @@ biblatexin_cleanf( bibl *bin, param *p )
 	biblatexin_crossref( bin, p );
 }
 
-/*
- * process_names( info, newtag, field, level);
+/* is_utf8_emdash()
  *
- * split names in author list separated by and's (use '|' character)
- * and add names
+ * Internally pages="A---B" will convert --- to a UTF8
+ * emdash = 0xE2 (-30) 0x80 (-128) 0x94 (-108)
  */
-static void
-process_names( fields *info, char *tag, newstr *data, int level, list *asis,
-	list *corps )
+static int
+is_utf8_emdash( char *p )
+{
+	static char emdash[3] = { -30, -128, -108 };
+	if ( strncmp( p, emdash, 3 ) ) return 0;
+	return 1;
+}
+/* is_utf8_endash()
+ *
+ * Internally pages="A--B" will convert -- to a UTF8
+ * endash = 0xE2 (-30) 0x80 (-128) 0x93 (-109)
+ */
+static int
+is_utf8_endash( char *p )
 {
-	newstr_findreplace( data, " and ", "|" );
-	name_add( info, tag, data->data, level, asis, corps );
+	static char endash[3] = { -30, -128, -109 };
+	if ( strncmp( p, endash, 3 ) ) return 0;
+	return 1;
 }
 
-static void
+static int
 process_pages( fields *info, newstr *s, int level )
 {
-	char *p, *q;
-	newstr sp, ep;
-
-	newstr_init( &sp );
-	newstr_init( &ep );
+	newstr page;
+	char *p;
+	int ok;
 
 	newstr_findreplace( s, " ", "" );
+	if ( s->len==0 ) return 1;
 
-	p = q = s->data;
-	while ( isdigit( *q ) ) q++;
-	newstr_segcpy( &sp, p, q );
-	if ( sp.len>0 )
-		fields_add( info, "PAGESTART", sp.data, level );
+	newstr_init( &page );
+	p = skip_ws( s->data );
+	while ( *p && !is_ws(*p) && *p!='-' && *p!='\r' && *p!='\n' && *p!=-30 )
+		newstr_addchar( &page, *p++ );
+	if ( page.len>0 ) {
+		ok = fields_add( info, "PAGESTART", page.data, level );
+		if ( !ok ) return 0;
+	}
 
-	p = q;
-	while ( *p && !isdigit(*p) ) p++;
-	q = p;
-	while ( isdigit( *q ) ) q++;
-	newstr_segcpy( &ep, p, q );
-	if ( ep.len>0 )
-		fields_add( info, "PAGEEND", ep.data, level );
+	while ( *p && (is_ws(*p) || *p=='-' ) ) p++;
+	if ( *p && is_utf8_emdash( p ) ) p+=3;
+	if ( *p && is_utf8_endash( p ) ) p+=3;
 
-	newstr_free(&sp);
-	newstr_free(&ep);
+	newstr_empty( &page );
+	while ( *p && !is_ws(*p) && *p!='-' && *p!='\r' && *p!='\n' )
+		newstr_addchar( &page, *p++ );
+	if ( page.len>0 ) {
+		ok = fields_add( info, "PAGEEND", page.data, level );
+		if ( !ok ) return 0;
+	}
+
+	newstr_free( &page );
+	return 1;
 }
 
-static void
+static int
 process_urlcore( fields *info, char *p, int level, char *default_tag )
 {
 	if ( !strncasecmp( p, "\\urllink", 8 ) )
-		fields_add( info, "URL", p+8, level );
+		return fields_add( info, "URL", p+8, level );
 	else if ( !strncasecmp( p, "\\url", 4 ) )
-		fields_add( info, "URL", p+4, level );
+		return fields_add( info, "URL", p+4, level );
 	else if ( !strncasecmp( p, "arXiv:", 6 ) )
-		fields_add( info, "ARXIV", p+6, level ); 
+		return fields_add( info, "ARXIV", p+6, level ); 
 	else if ( !strncasecmp( p, "http://arxiv.org/abs/", 21 ) )
-		fields_add( info, "ARXIV", p+21, level );
+		return fields_add( info, "ARXIV", p+21, level );
 	else if ( !strncasecmp( p, "http:", 5 ) )
-		fields_add( info, "URL", p, level );
-	else fields_add( info, default_tag, p, level );
+		return fields_add( info, "URL", p, level );
+	else return fields_add( info, default_tag, p, level );
 }
 
-static void
+static int
 process_url( fields *info, char *p, int level )
 {
-	process_urlcore( info, p, level, "URL" );
+	return process_urlcore( info, p, level, "URL" );
 }
 
-static void
+/* process_howpublished()
+ *
+ *    howpublished={},
+ *
+ * Normally indicates the manner in which something was
+ * published in lieu of a formal publisher, so typically
+ * 'howpublished' and 'publisher' will never be in the
+ * same reference.
+ *
+ * Occasionally, people put Diploma thesis information
+ * into this field, so check for that first.
+ */
+static int
 process_howpublished( fields *info, char *p, int level )
 {
-        /* Some users put Diploma thesis in "type" */
         if ( !strncasecmp( p, "Diplom", 6 ) )
-                fields_replace_or_add( info, "GENRE", "Diploma thesis", level );
+                return fields_replace_or_add( info, "NGENRE", "Diploma thesis", level );
         else if ( !strncasecmp( p, "Habilitation", 13 ) )
-                fields_replace_or_add( info, "GENRE", "Habilitation thesis", level );
-        else 
-		process_urlcore( info, p, level, "DESCRIPTION" );
+                return fields_replace_or_add( info, "NGENRE", "Habilitation thesis", level );
+        else
+		return fields_add( info, "PUBLISHER", p, level );
 }
 
-static void
-process_genre( fields *info, char *p, int level )
+static int
+process_thesistype( fields *info, char *p, int level )
 {
-        /* Some users put Diploma thesis in "type" */
-        if ( !strncasecmp( p, "Diplom", 6 ) )
-                fields_replace_or_add( info, "GENRE", "Diploma thesis", level );
-        else if ( !strncasecmp( p, "Habilitation", 13 ) )
-                fields_replace_or_add( info, "GENRE", "Habilitation thesis", level );
-        else 
-		fields_add( info, "GENRE", p, level );
+	/* type in the @thesis is used to distinguish Ph.D. and Master's thesis */
+	if ( !strncasecmp( p, "phdthesis", 9 ) ) {
+		return fields_replace_or_add( info, "NGENRE", "Ph.D. thesis", level );
+	} else if ( !strncasecmp( p, "mastersthesis", 13 ) || !strncasecmp( p, "masterthesis", 12 ) ) {
+		return fields_replace_or_add( info, "NGENRE", "Masters thesis", level );
+	} else if ( !strncasecmp( p, "mathesis", 8 ) ) {
+		return fields_replace_or_add( info, "NGENRE", "Masters thesis", level );
+	} else if ( !strncasecmp( p, "diploma", 7 ) ) {
+		return fields_replace_or_add( info, "NGENRE", "Diploma thesis", level );
+	} else if ( !strncasecmp( p, "habilitation", 12 ) ) {
+		return fields_replace_or_add( info, "NGENRE", "Habilitation thesis", level );
+	}
+	return 1;
 }
 
-static void
+/* biblatex drops school field if institution is present */
+static int
+process_school( fields *bibin, fields *info, char *tag, char *value, int level )
+{
+	if ( fields_find( bibin, "institution", LEVEL_ANY ) != -1 )
+		return 1;
+	else
+		return fields_add( info, tag, value, level );
+}
+
+/* biblatex drops school field if institution is present */
+static int
+process_subtype( fields *bibin, fields *info, char *tag, char *value, int level )
+{
+	int ok = 1;
+	if ( !strcasecmp( value, "magazine" ) ) {
+		ok = fields_add( info, "NGENRE", "magazine article", LEVEL_MAIN );
+		if ( !ok ) return 0;
+		ok = fields_add( info, "NGENRE", "magazine", LEVEL_HOST );
+	} else if ( !strcasecmp( value, "newspaper" ) ) {
+		ok = fields_add( info, "NGENRE", "newspaper article", LEVEL_MAIN );
+		if ( !ok ) return 0;
+		ok = fields_add( info, "GENRE", "newspaper", LEVEL_HOST );
+	}
+	return ok;
+}
+
+static int
 process_eprint( fields *bibin, fields *info, int level )
 {
-	int neprint, netype;
+	int neprint, netype, ok;
 	char *eprint = NULL, *etype = NULL;
 	neprint = fields_find( bibin, "eprint", -1 );
 	netype  = fields_find( bibin, "eprinttype", -1 );
 	if ( neprint!=-1 ) eprint = bibin->data[neprint].data;
 	if ( netype!=-1 ) etype = bibin->data[netype].data;
-fprintf(stderr,"process_eprint: neprint=%d netype=%d\n", neprint,netype );
 	if ( eprint && etype ) {
-		if ( !strncasecmp( etype, "arxiv", 5 ) )
-			fields_add( info, "ARXIV", eprint, level );
-		else if ( !strncasecmp( etype, "jstor", 5 ) )
-			fields_add( info, "JSTOR", eprint, level );
-		else if ( !strncasecmp( etype, "pubmed", 6 ) )
-			fields_add( info, "PMID", eprint, level );
-		else if ( !strncasecmp( etype, "medline", 7 ) )
-			fields_add( info, "MEDLINE", eprint, level );
-		else {
-			fields_add( info, "EPRINT", eprint, level );
-			fields_add( info, "EPRINTTYPE", etype, level );
+		if ( !strncasecmp( etype, "arxiv", 5 ) ) {
+			ok = fields_add( info, "ARXIV", eprint, level );
+			if ( !ok ) return 0;
+		} else if ( !strncasecmp( etype, "jstor", 5 ) ) {
+			ok = fields_add( info, "JSTOR", eprint, level );
+			if ( !ok ) return 0;
+		} else if ( !strncasecmp( etype, "pubmed", 6 ) ) {
+			ok = fields_add( info, "PMID", eprint, level );
+			if ( !ok ) return 0;
+		} else if ( !strncasecmp( etype, "medline", 7 ) ) {
+			ok = fields_add( info, "MEDLINE", eprint, level );
+			if ( !ok ) return 0;
+		} else {
+			ok = fields_add( info, "EPRINT", eprint, level );
+			if ( !ok ) return 0;
+			ok = fields_add( info, "EPRINTTYPE", etype, level );
+			if ( !ok ) return 0;
 		}
 		fields_setused( bibin, neprint );
 		fields_setused( bibin, netype );
 	} else if ( eprint ) {
-		fields_add( info, "EPRINT", eprint, level );
+		ok = fields_add( info, "EPRINT", eprint, level );
+		if ( !ok ) return 0;
 		fields_setused( bibin, neprint );
 	} else if ( etype ) {
-		fields_add( info, "EPRINTTYPE", etype, level );
+		ok = fields_add( info, "EPRINTTYPE", etype, level );
+		if ( !ok ) return 0;
 		fields_setused( bibin, netype );
 	}
+	return 1;
 }
 
 int
@@ -600,12 +730,15 @@ biblatexin_typef( fields *bibin, char *filename, int nrefs, param *p,
 }
 
 static void
-report( fields *info )
+report( fields *f )
 {
-	int i;
-	for ( i=0; i<info->nfields; ++i )
-		fprintf(stderr, "'%s' %d = '%s'\n",info->tag[i].data,info->level[i],
-			info->data[i].data);
+	int i, n;
+	n = fields_num( f );
+	for ( i=0; i<n; ++i )
+		fprintf(stderr, "%d '%s' = '%s'\n",
+			fields_level( f, i ),
+			(char*)fields_tag( f, i, FIELDS_CHRP_NOUSE ),
+			(char*)fields_value( f, i, FIELDS_CHRP_NOUSE ) );
 }
 
 static void
@@ -617,51 +750,365 @@ biblatexin_notag( param *p, char *tag )
 	}
 }
 
-void
+/* get_title_elements()
+ *
+ * find all of the biblatex title elements for the current level
+ *    internal "TITLE"      -> "title", "booktitle", "maintitle"
+ *    internal "SUBTITLE"   -> "subtitle", "booksubtitle", "mainsubtitle"
+ *    internal "TITLEADDON" -> "titleaddon", "booktitleaddon", "maintitleaddon"
+ *
+ * place in ttl, subttl, and ttladdon strings
+ *
+ * return 1 if an element is found, 0 if not
+ */
+static int
+get_title_elements( fields *bibin, int currlevel, int reftype, variants *all, int nall,
+	newstr *ttl, newstr *subttl, newstr *ttladdon )
+{
+	int nfields, process, level, i, n;
+	newstr *t, *d;
+	char *newtag;
+
+	newstrs_empty( ttl, subttl, ttladdon, NULL );
+
+	nfields = fields_num( bibin );
+
+	for ( i=0; i<nfields; ++i ) {
+
+		/* ...skip already used titles */
+		if ( fields_used( bibin, i ) ) continue;
+
+		/* ...skip empty elements */
+		t = fields_tag  ( bibin, i, FIELDS_STRP_NOUSE );
+		d = fields_value( bibin, i, FIELDS_STRP_NOUSE );
+		if ( d->len == 0 ) continue;
+
+		n = translate_oldtag( t->data, reftype, all, nall, &process, &level, &newtag );
+		if ( n==-1 ) continue;
+		if ( process != TITLE ) continue;
+		if ( level != currlevel ) continue;
+
+		fields_setused( bibin, i );
+
+		if ( !strcasecmp( newtag, "TITLE" ) ) {
+			if ( ttl->len ) newstr_addchar( ttl, ' ' );
+			newstr_newstrcat( ttl, d );
+		} else if ( !strcasecmp( newtag, "SUBTITLE" ) ) {
+			if ( subttl->len ) newstr_addchar( subttl, ' ' );
+			newstr_newstrcat( subttl, d );
+		} else if ( !strcasecmp( newtag, "TITLEADDON" ) ) {
+			if ( ttladdon->len ) newstr_addchar( ttladdon, ' ' );
+			newstr_newstrcat( ttladdon, d );
+		}
+	}
+
+	return ( ttl->len>0 || subttl->len > 0 || ttladdon->len > 0 );
+}
+
+/* attach_addon()
+ *
+ * Add titleaddon to the title.
+ */
+static void
+attach_addon( newstr *title, newstr *addon )
+{
+	if ( title->len ) {
+		if ( title->data[title->len-1]!='.' )
+			newstr_addchar( title, '.' );
+		newstr_addchar( title, ' ' );
+	}
+	newstr_newstrcat( title, addon );
+}
+
+static int
+process_combined_title( fields *info, newstr *ttl, newstr *subttl, newstr *ttladdon, int currlevel )
+{
+	newstr combined;
+	int ok, ret = 1;
+	newstr_init( &combined );
+	newstr_newstrcpy( &combined, ttl );
+	if ( subttl->len ) {
+		if ( combined.len && combined.data[combined.len-1]!=':' && combined.data[combined.len-1]!='?' )
+			newstr_addchar( &combined, ':' );
+		newstr_addchar( &combined, ' ' );
+		newstr_newstrcat( &combined, subttl );
+	}
+	if ( ttladdon->len ) attach_addon( &combined, ttladdon );
+	ok = fields_add( info, "TITLE", combined.data, currlevel );
+	if ( !ok ) ret = 0;
+	newstr_free( &combined );
+	return ret;
+}
+
+static int
+process_separated_title( fields *info, newstr *ttl, newstr *subttl, newstr *ttladdon, int currlevel )
+{
+	int ok;
+	if ( ttladdon->len ) {
+		if ( subttl->len ) attach_addon( subttl, ttladdon );
+		else attach_addon( ttl, ttladdon );
+	}
+	if ( ttl->len ) {
+		ok = fields_add( info, "TITLE", ttl->data, currlevel );
+		if ( !ok ) return 0;
+	}
+	if ( subttl->len ) {
+		ok = fields_add( info, "SUBTITLE", subttl->data, currlevel );
+		if ( !ok ) return 0;
+	}
+	return 1;
+}
+
+static int
+process_title_all( fields *bibin, fields *info, int reftype, param *p,
+	variants *all, int nall )
+{
+	int currlevel, ok, found, ret=1;
+	newstr ttl, subttl, ttladdon;
+	newstrs_init( &ttl, &subttl, &ttladdon, NULL );
+	for ( currlevel = 0; currlevel<LEVEL_SERIES+2; currlevel++ ) {
+		found = get_title_elements( bibin, currlevel, reftype, all, nall,
+				&ttl, &subttl, &ttladdon );
+		if ( !found ) continue;
+		if ( p->nosplittitle )
+			ok = process_combined_title( info, &ttl, &subttl, &ttladdon, currlevel );
+		else
+			ok = process_separated_title( info, &ttl, &subttl, &ttladdon, currlevel );
+		if ( !ok ) { ret = 0; goto out; }
+	}
+out:
+	newstrs_free( &ttl, &subttl, &ttladdon, NULL );
+	return ret;
+}
+
+static int
+biblatex_matches_asis_corps( fields *info, char *tag, newstr *data, int level,
+	list *asis, list *corps )
+{
+	newstr newtag;
+	int i;
+	for ( i=0; i<asis->n; ++i ) {
+		if ( !strcmp( data->data, list_getc( asis, i ) ) ) {
+			newstr_initstr( &newtag, tag );
+			newstr_strcat( &newtag, ":ASIS" );
+			fields_add( info, newtag.data, data->data, level );
+			newstr_free( &newtag );
+			return 1;
+		}
+	}
+	for ( i=0; i<corps->n; ++i ) {
+		if ( !strcmp( data->data, list_getc( corps, i ) ) ) {
+			newstr_initstr( &newtag, tag );
+			newstr_strcat( &newtag, ":CORP" );
+			fields_add( info, newtag.data, data->data, level );
+			newstr_free( &newtag );
+			return 1;
+		}
+	}
+	return 0;
+}
+
+static int
+biblatex_names( fields *info, char *tag, newstr *data, int level, list *asis, list *corps )
+{
+	int begin, end, ok, n, etal, i, ret = 1;
+	list tokens;
+
+	/* If we match the asis or corps list add and bail. */
+	if ( biblatex_matches_asis_corps( info, tag, data, level, asis, corps ) )
+		return 1;
+
+	list_init( &tokens );
+
+	biblatex_split( &tokens, data );
+	for ( i=0; i<tokens.n; ++i )
+		biblatex_cleantoken( list_get( &tokens, i ) );
+
+	etal = name_findetal( &tokens );
+
+	begin = 0;
+	n = tokens.n - etal;
+	while ( begin < n ) {
+
+		end = begin + 1;
+
+		while ( end < n && strcasecmp( list_getc( &tokens, end ), "and" ) )
+			end++;
+
+		if ( end - begin == 1 ) {
+			ok = name_addsingleelement( info, tag, list_getc( &tokens, begin ), level, 0 );
+			if ( !ok ) { ret = 0; goto out; }
+		} else {
+			ok = name_addmultielement( info, tag, &tokens, begin, end, level );
+			if ( !ok ) { ret = 0; goto out; }
+		}
+
+		begin = end + 1;
+
+		/* Handle repeated 'and' errors */
+		while ( begin < n && !strcasecmp( list_getc( &tokens, begin ), "and" ) )
+			begin++;
+
+	}
+
+	if ( etal ) {
+		ret = name_addsingleelement( info, tag, "et al.", level, 0 );
+	}
+
+out:
+	list_free( &tokens );
+	return ret;
+}
+
+/*
+ * biblatex has multiple editor fields "editor", "editora", "editorb", "editorc",
+ * each of which can be modified from a type of "EDITOR" via "editortype",
+ * "editoratype", "editorbtype", "editorctype".
+ *
+ * Defined types:
+ *     "editor"
+ *     "collaborator"
+ *     "compiler"
+ *     "redactor"
+ *
+ *     "reviser" ?
+ *     "founder" ?
+ *     "continuator" ?
+ *
+ *  bibtex-chicago
+ *
+ *     "director"
+ *     "producer"
+ *     "conductor"
+ *     "none" (for performer)
+ */
+static int
+process_editor( fields *bibin, fields *info, newstr *tag, newstr *value, int level, list *asis, list *corps )
+{
+	char *editor_fields[] = { "editor", "editora", "editorb", "editorc" };
+	char *editor_types[]  = { "editortype", "editoratype", "editorbtype", "editorctype" };
+	int i, n = 0, ntype, neditors = sizeof( editor_fields ) / sizeof( editor_fields[0] );
+	char *type, *outtag = "EDITOR";
+	for ( i=1; i<neditors; ++i )
+		if ( !strcasecmp( tag->data, editor_fields[i] ) ) n = i;
+	ntype = fields_find( bibin, editor_types[n], LEVEL_ANY );
+	if ( ntype!=-1 ) {
+		type = fields_value( bibin, ntype, FIELDS_CHRP_NOUSE );
+		if ( !strcasecmp( type, "collaborator" ) )  outtag = "COLLABORATOR";
+		else if ( !strcasecmp( type, "compiler" ) ) outtag = "COMPILER";
+		else if ( !strcasecmp( type, "redactor" ) ) outtag = "REDACTOR";
+		else if ( !strcasecmp( type, "director" ) ) outtag = "DIRECTOR";
+		else if ( !strcasecmp( type, "producer" ) ) outtag = "PRODUCER";
+		else if ( !strcasecmp( type, "none" ) )     outtag = "PERFORMER";
+	}
+	return biblatex_names( info, outtag, value, level, asis, corps );
+}
+
+int
 biblatexin_convertf( fields *bibin, fields *info, int reftype, param *p,
 		variants *all, int nall )
 {
+	int process, level, i, n, nfields, ok;
 	newstr *t, *d;
-	int process, level, i, n;
 	char *newtag;
-	for ( i=0; i<bibin->nfields; ++i ) {
+
+	nfields = fields_num( bibin );
+	for ( i=0; i<nfields; ++i ) {
 
                /* skip ones already "used" such as successful crossref */
-                if ( bibin->used[i] ) continue;
+                if ( fields_used( bibin, i ) ) continue;
 
-		/* skip ones with no data */
-		d = &( bibin->data[i] );
-		if ( d->len == 0 ) continue;
+		/* skip ones with no data or no tags (e.g. don't match ALWAYS/DEFAULT entries) */
+		t = fields_tag  ( bibin, i, FIELDS_STRP_NOUSE );
+		d = fields_value( bibin, i, FIELDS_STRP_NOUSE );
+		if ( t->len == 0 || d->len == 0 ) continue;
 
-		t = &( bibin->tag[i] );
-		n = process_findoldtag( t->data, reftype, all, nall );
+		n = translate_oldtag( t->data, reftype, all, nall, &process, &level, &newtag );
 		if ( n==-1 ) {
 			biblatexin_notag( p, t->data );
 			continue;
 		}
 
-		process = ((all[reftype]).tags[n]).processingtype;
-		if ( process == ALWAYS ) continue; /* added before */
-
-		level   = ((all[reftype]).tags[n]).level;
-		newtag  = ((all[reftype]).tags[n]).newstr;
-
-		if ( process==SIMPLE || process==TITLE )
-			fields_add( info, newtag, d->data, level );
-		else if ( process==PERSON )
-			process_names( info, newtag, d, level, &(p->asis), 
-				&(p->corps) );
-		else if ( process==PAGES )
-			process_pages( info, d, level);
-		else if ( process==HOWPUBLISHED )
-			process_howpublished( info, d->data, level );
-		else if ( process==BIBTEX_URL )
-			process_url( info, d->data, level );
-		else if ( process==BIBTEX_GENRE )
-			process_genre( info, d->data, level );
-		else if ( process==BIBTEX_EPRINT )
-			process_eprint( bibin, info, level );
+		switch ( process ) {
+
+		case SIMPLE:
+			ok = fields_add( info, newtag, d->data, level );
+			fields_setused( bibin, i );
+			break;
+
+		case PERSON:
+			ok = biblatex_names( info, newtag, d, level, &(p->asis), &(p->corps) );
+			fields_setused( bibin, i );
+			break;
+
+		case BLT_EDITOR:
+			ok = process_editor( bibin, info, t, d, level, &(p->asis), &(p->corps) );
+			fields_setused( bibin, i );
+			break;
+
+		case PAGES:
+			ok = process_pages( info, d, level);
+			fields_setused( bibin, i );
+			break;
+
+		case HOWPUBLISHED:
+			ok = process_howpublished( info, d->data, level );
+			fields_setused( bibin, i );
+			break;
+
+		case BT_URL:
+			ok = process_url( info, d->data, level );
+			fields_setused( bibin, i );
+			break;
+
+		case BT_GENRE:
+			ok = fields_add( info, "NGENRE", d->data, level );
+			fields_setused( bibin, i );
+			break;
+
+		case BT_EPRINT:
+			ok = process_eprint( bibin, info, level );
+			fields_setused( bibin, i );
+			break;
+
+		case BLT_THESIS_TYPE:
+			ok = process_thesistype( info, d->data, level );
+			fields_setused( bibin, i );
+			break;
+
+		case BLT_SCHOOL:
+			ok = process_school( bibin, info, newtag, d->data, level );
+			fields_setused( bibin, i );
+			break;
+
+		case BLT_SUBTYPE:
+			ok = process_subtype( bibin, info, newtag, d->data, level );
+			fields_setused( bibin, i );
+			break;
+
+		case BLT_SKIP:
+			ok = 1;
+			fields_setused( bibin, i );
+			break;
+
+		case TITLE:
+			ok = 1; /* delay title processing until later */
+			break;
+
+		default:
+			ok = 1;
+			break;
+
+		}
+		if ( !ok ) return BIBL_ERR_MEMERR;
+
 	}
+
+	ok = process_title_all( bibin, info, reftype, p, all, nall );
+	if ( !ok ) return BIBL_ERR_MEMERR;
+
 	if ( p->verbose ) report( info );
+
+	return BIBL_OK;
 }
 
diff --git a/lib/biblatexin.h b/lib/biblatexin.h
index 48d67fe..9c61f41 100644
--- a/lib/biblatexin.h
+++ b/lib/biblatexin.h
@@ -1,9 +1,9 @@
 /*
  * biblatexin.h
  *
- * Copyright (c) Chris Putnam 2008-2010
+ * Copyright (c) Chris Putnam 2008-2013
  *
- * Program and source code released under the GPL
+ * Source code released under the GPL version 2
  *
  */
 #ifndef BIBLATEXIN_H
@@ -16,7 +16,7 @@
 #include "bibutils.h"
 #include "reftypes.h"
 
-extern void biblatexin_convertf( fields *bibin, fields *info, int reftype, param *p, variants *all, int nall );
+extern int  biblatexin_convertf( fields *bibin, fields *info, int reftype, param *p, variants *all, int nall );
 extern int  biblatexin_processf( fields *bibin, char *data, char *filename, long nref );
 extern void biblatexin_cleanf( bibl *bin, param *p );
 extern int  biblatexin_readf( FILE *fp, char *buf, int bufsize, int *bufpos, newstr *line, newstr *reference, int *fcharset );
diff --git a/lib/bibtexin.c b/lib/bibtexin.c
index 7b13f92..63c0c7b 100644
--- a/lib/bibtexin.c
+++ b/lib/bibtexin.c
@@ -1,9 +1,9 @@
 /*
  * bibtexin.c
  *
- * Copyright (c) Chris Putnam 2003-2010
+ * Copyright (c) Chris Putnam 2003-2013
  *
- * Program and source code released under the GPL
+ * Program and source code released under the GPL version 2
  *
  */
 #include <stdio.h>
@@ -21,8 +21,8 @@
 #include "reftypes.h"
 #include "bibtexin.h"
 
-list find    = { 0, 0, 0, NULL };
-list replace = { 0, 0, 0, NULL };
+static list find    = { 0, 0, 0, NULL };
+static list replace = { 0, 0, 0, NULL };
 
 void
 bibtexin_initparams( param *p, const char *progname )
@@ -110,27 +110,28 @@ bibtexin_readf( FILE *fp, char *buf, int bufsize, int *bufpos, newstr *line, new
 static char *
 bibtex_item( char *p, newstr *s )
 {
-	int nquotes = 0;
+	int surrounding_quotes = 0;
 	int nbrackets = 0;
+	int nquotes = 0;
 	while ( *p ) {
 		if ( !nquotes && !nbrackets ) {
 			if ( *p==',' || *p=='=' || *p=='}' || *p==')' )
 				goto out;
 		}
 		if ( *p=='\"' && *(p-1)!='\\' && nbrackets==0 ) {
+			if ( s->len == 0 ) surrounding_quotes = 1;
+			else {
+				if ( !surrounding_quotes ) newstr_addchar( s, *p );
+				if ( nquotes ) surrounding_quotes = 0;
+			}
 			nquotes = ( nquotes==0 );
-			newstr_addchar( s, *p );
 		} else if ( *p=='{' ) {
+			if ( nbrackets>0 || nquotes ) newstr_addchar( s, *p );
 			nbrackets++;
-			/*if ( s->len!=0 )*/ newstr_addchar( s, *p );
 		} else if ( *p=='}' ) {
 			nbrackets--;
-			/*if ( nbrackets>0 )*/ newstr_addchar( s, *p );
+			if ( nbrackets>0 || nquotes ) newstr_addchar( s, *p );
 		} else {
-			/*
-			if ( s->len!=0 || ( s->len==0 && !is_ws( *p ) ) )
-				newstr_addchar( s, *p );
-			*/
 			if ( !is_ws( *p ) ) newstr_addchar( s, *p );
 			else {
 				if ( s->len!=0 && *p!='\n' && *p!='\r' )
@@ -166,11 +167,32 @@ process_bibtexline( char *p, newstr *tag, newstr *data )
 }
 
 static void
-bibtex_cleantoken( newstr *s, param *p )
+bibtex_process_tilde( newstr *s )
 {
+	char *p, *q;
+	int n = 0;
 
-	if ( p && p->latexin==0 ) return;
+	p = q = s->data;
+	while ( *p ) {
+		if ( *p=='~' ) {
+			*q = ' ';
+		} else if ( *p=='\\' && *(p+1)=='~' ) {
+			n++;
+			p++;
+			*q = '~';
+		} else {
+			*q = *p;
+		}
+		p++;
+		q++;
+	}
+	*q = '\0';
+	s->len -= n;
+}
 
+static void
+bibtex_cleantoken( newstr *s )
+{
 	/* 'textcomp' annotations */
 	newstr_findreplace( s, "\\textit", "" );
 	newstr_findreplace( s, "\\textbf", "" );
@@ -182,6 +204,7 @@ bibtex_cleantoken( newstr *s, param *p )
 	newstr_findreplace( s, "\\textsuperscript", "" );
 	newstr_findreplace( s, "\\emph", "" );
 	newstr_findreplace( s, "\\url", "" );
+	newstr_findreplace( s, "\\mbox", "" );
 
 	/* Other text annotations */
 	newstr_findreplace( s, "\\it ", "" );
@@ -196,6 +219,9 @@ bibtex_cleantoken( newstr *s, param *p )
 	/* 'textcomp' annotations that we don't want to substitute on output*/
 	newstr_findreplace( s, "\\textdollar", "$" );
 	newstr_findreplace( s, "\\textunderscore", "_" );
+
+	bibtex_process_tilde( s );
+
 }
 
 static void
@@ -207,7 +233,7 @@ bibtex_addstring( char *p )
 	if ( *p=='(' || *p=='{' ) p++;
 	p = process_bibtexline( p, &s1, &s2 );
 	newstr_findreplace( &s2, "\\ ", " " );
-	bibtex_cleantoken( &s2, NULL );
+	bibtex_cleantoken( &s2 );
 	if ( s1.data ) {
 		list_add( &find, s1.data );
 		if ( s2.data ) list_add( &replace, s2.data );
@@ -225,47 +251,34 @@ bibtex_protected( newstr *data )
 }
 
 static void
-bibtex_removeprotection( newstr *data )
-{
-	newstr s;
-	if ( data->len<3 ) newstr_empty( data ); /* "", {} to nothing */
-	else {
-		newstr_init( &s );
-		newstr_segcpy( &s, &(data->data[1]), 
-				&(data->data[data->len-1]) );
-		newstr_newstrcpy( data, &s );
-		newstr_free( &s );
-	}
-}
-
-static void
 bibtex_split( list *tokens, newstr *s )
 {
+	int i, n = s->len, nbrackets = 0;
 	newstr currtok;
-	int nquotes = 0, nbrackets = 0;
-	int i, n = s->len;
+
 	newstr_init( &currtok );
+
 	for ( i=0; i<n; ++i ) {
-		if ( s->data[i]=='\"' ) {
-			if ( nquotes ) nquotes = 0;
-			else nquotes = 1;
-			newstr_addchar( &currtok, '\"' );
-		} else if ( s->data[i]=='{' ) {
+		if ( s->data[i]=='{' ) {
 			nbrackets++;
 			newstr_addchar( &currtok, '{' );
 		} else if ( s->data[i]=='}' ) {
 			nbrackets--;
 			newstr_addchar( &currtok, '}' );
-		} else if ( s->data[i]=='#' && !nquotes && !nbrackets ) {
+		} else if ( s->data[i]=='#' && !nbrackets ) {
 			if ( currtok.len ) list_add( tokens, currtok.data );
 			newstr_empty( &currtok );
-		} else if ( !is_ws( s->data[i] ) || nquotes || nbrackets ) {
+		} else if ( !is_ws( s->data[i] ) || nbrackets ) {
 			newstr_addchar( &currtok, s->data[i] );
+		} else if ( is_ws( s->data[i] ) ) {
+			if ( currtok.len ) list_add( tokens, currtok.data );
+			newstr_empty( &currtok );
 		}
 	}
 	if ( currtok.len ) list_add( tokens, currtok.data );
 	for ( i=0; i<tokens->n; ++i ) {
-		newstr_trimendingws( &(tokens->str[i]) );
+		newstr_trimstartingws( list_get( tokens, i ) );
+		newstr_trimendingws( list_get( tokens, i ) );
 	}
 	newstr_free( &currtok );
 }
@@ -273,11 +286,12 @@ bibtex_split( list *tokens, newstr *s )
 static int
 bibtex_usestrings( newstr *s )
 {
+	char *p;
 	int i;
 	for ( i=0; i<find.n; ++i ) {
-		if ( !strcasecmp( s->data, (find.str[i]).data ) ) {
-			newstr_findreplace( s, (find.str[i]).data, 
-					(replace.str[i]).data );
+		p = list_getc( &find, i );
+		if ( !strcasecmp( s->data, p ) ) {
+			newstr_findreplace( s, p, list_getc( &replace, i ) );
 			return 1;
 		}
 	}
@@ -294,7 +308,8 @@ process_bibtextype( char *p, newstr *data )
 	newstr_empty( data );
 
 	if ( *p=='@' ) p++; /* skip '@' character */
-	while ( *p && *p!='{' && *p!='(' ) newstr_addchar( &tmp, *p++ );
+	while ( *p && *p!='{' && *p!='(' && !is_ws( *p ) ) newstr_addchar( &tmp, *p++ );
+	p = skip_ws( p );
 	if ( *p=='{' || *p=='(' ) p++;
 	p = skip_ws( p );
 
@@ -401,29 +416,50 @@ bibtex_addtitleurl( fields *info, newstr *in )
 	newstr_free( &s );
 }
 
+static int
+is_url_tag( newstr *tag )
+{
+	if ( tag->len ) {
+		if ( !strcasecmp( tag->data, "url" ) ) return 1;
+	}
+	return 0;
+}
+
+static int
+is_name_tag( newstr *tag )
+{
+	if ( tag->len ) {
+		if ( !strcasecmp( tag->data, "author" ) ) return 1;
+		if ( !strcasecmp( tag->data, "editor" ) ) return 1;
+	}
+	return 0;
+}
+
 static void
-bibtex_cleandata( newstr *s, fields *info, param *p )
+bibtex_cleandata( newstr *tag, newstr *s, fields *info, param *p )
 {
 	list tokens;
+	newstr *tok;
 	int i;
 	if ( !s->len ) return;
 	list_init( &tokens );
 	bibtex_split( &tokens, s );
 	for ( i=0; i<tokens.n; ++i ) {
-		if ( !bibtex_protected( &(tokens.str[i] ) ) ) {
-			bibtex_usestrings( &(tokens.str[i]) );
+		tok = list_get( &tokens, i );
+		if ( !bibtex_protected( tok ) ) {
+			bibtex_usestrings( tok );
 		} else {
-			if (!strncasecmp(tokens.str[i].data,"\\href{", 6)) {
-				bibtex_addtitleurl( info, &(tokens.str[i]) );
+			if (!strncasecmp(tok->data,"\\href{", 6)) {
+				bibtex_addtitleurl( info, tok );
 			}
-			bibtex_cleantoken( &(tokens.str[i]), p );
 		}
+		if ( p->latexin && !is_name_tag( tag ) && !is_url_tag( tag ) ) bibtex_cleantoken( tok );
 	}
 	newstr_empty( s );
 	for ( i=0; i<tokens.n; ++i ) {
-		if ( bibtex_protected( &(tokens.str[i]) ) )
-			bibtex_removeprotection( &(tokens.str[i]));
-		newstr_strcat( s, tokens.str[i].data ); 
+		tok = list_get( &tokens, i );
+		if ( i>0 ) newstr_addchar( s, ' ' );
+		newstr_newstrcat( s, tok );
 	}
 	list_free( &tokens );
 }
@@ -471,8 +507,7 @@ bibtexin_crossref( bibl *bin, param *p )
 		ntype = fields_find( bin->ref[i], "INTERNAL_TYPE", -1 );
 		type = bin->ref[i]->data[ntype].data;
 		fields_setused( bin->ref[i], n );
-/*		bin->ref[i]->used[n] = 1; */
-		for ( j=0; j<bin->ref[ncross]->nfields; ++j ) {
+		for ( j=0; j<bin->ref[ncross]->n; ++j ) {
 			nt = bin->ref[ncross]->tag[j].data;
 			if ( !strcasecmp( nt, "INTERNAL_TYPE" ) ) continue;
 			if ( !strcasecmp( nt, "REFNUM" ) ) continue;
@@ -493,21 +528,12 @@ static void
 bibtexin_cleanref( fields *bibin, param *p )
 {
 	newstr *t, *d;
-	int i;
-	for ( i=0; i<bibin->nfields; ++i ) {
-		t = &( bibin->tag[i] );
-		d = &( bibin->data[i] );
-		bibtex_cleandata( d, bibin, p );
-		if ( !strsearch( t->data, "AUTHORS" ) ) {
-			newstr_findreplace( d, "\n", " " );
-			newstr_findreplace( d, "\r", " " );
-		}
-		else if ( !strsearch( t->data, "ABSTRACT" ) ||
-		     !strsearch( t->data, "SUMMARY" ) || 
-		     !strsearch( t->data, "NOTE" ) ) {
-			newstr_findreplace( d, "\n", "" );
-			newstr_findreplace( d, "\r", "" );
-		}
+	int i, n;
+	n = fields_num( bibin );
+	for ( i=0; i<n; ++i ) {
+		t = fields_tag( bibin, i, FIELDS_STRP_NOUSE );
+		d = fields_value( bibin, i, FIELDS_STRP_NOUSE );
+		bibtex_cleandata( t, d, bibin, p );
 	}
 }
 
@@ -520,107 +546,340 @@ bibtexin_cleanf( bibl *bin, param *p )
 	bibtexin_crossref( bin, p );
 }
 
+static int
+bibtex_matches_asis_corps( fields *info, char *tag, newstr *data, int level,
+	list *asis, list *corps )
+{
+	newstr newtag;
+	int i;
+	for ( i=0; i<asis->n; ++i ) {
+		if ( !strcmp( data->data, list_getc( asis, i ) ) ) {
+			newstr_initstr( &newtag, tag );
+			newstr_strcat( &newtag, ":ASIS" );
+			fields_add( info, newtag.data, data->data, level );
+			newstr_free( &newtag );
+			return 1;
+		}
+	}
+	for ( i=0; i<corps->n; ++i ) {
+		if ( !strcmp( data->data, list_getc( corps, i ) ) ) {
+			newstr_initstr( &newtag, tag );
+			newstr_strcat( &newtag, ":CORP" );
+			fields_add( info, newtag.data, data->data, level );
+			newstr_free( &newtag );
+			return 1;
+		}
+	}
+	return 0;
+}
+
 /*
- * process_names( info, newtag, field, level);
+ * bibtex_names( info, newtag, field, level);
  *
  * split names in author list separated by and's (use '|' character)
  * and add names
  */
-static void
-process_names( fields *info, char *tag, newstr *data, int level, list *asis,
+static int
+bibtex_names( fields *info, char *tag, newstr *data, int level, list *asis,
 	list *corps )
 {
-	newstr_findreplace( data, " and ", "|" );
-	newstr_findreplace( data, "|and ", "|" );
-	name_add( info, tag, data->data, level, asis, corps );
+	int begin, end, ok, n, etal, i, ret = 1;
+	list tokens;
+
+	/* If we match the asis or corps list add and bail. */
+	if ( bibtex_matches_asis_corps( info, tag, data, level, asis, corps ) )
+		return 1;
+
+	list_init( &tokens );
+
+	bibtex_split( &tokens, data );
+	for ( i=0; i<tokens.n; ++i )
+		bibtex_cleantoken( list_get( &tokens, i ) );
+
+	etal = name_findetal( &tokens );
+
+	begin = 0;
+	n = tokens.n - etal;
+	while ( begin < n ) {
+
+		end = begin + 1;
+
+		while ( end < n && strcasecmp( list_getc( &tokens, end ), "and" ) )
+			end++;
+
+		if ( end - begin == 1 ) {
+			ok = name_addsingleelement( info, tag, list_getc( &tokens, begin ), level, 0 );
+			if ( !ok ) { ret = 0; goto out; }
+		} else {
+			ok = name_addmultielement( info, tag, &tokens, begin, end, level );
+			if ( !ok ) { ret = 0; goto out; }
+		}
+
+		begin = end + 1;
+
+		/* Handle repeated 'and' errors like: authors="G. F. Author and and B. K. Author" */
+		while ( begin < n && !strcasecmp( list_getc( &tokens, begin ), "and" ) )
+			begin++;
+	}
+
+	if ( etal ) {
+		ret = name_addsingleelement( info, tag, "et al.", level, 0 );
+	}
+
+out:
+	list_free( &tokens );
+	return ret;
+}
+
+/* is_utf8_emdash()
+ *
+ * Internally pages="A---B" will convert --- to a UTF8
+ * emdash = 0xE2 (-30) 0x80 (-128) 0x94 (-108)
+ */
+static int
+is_utf8_emdash( char *p )
+{
+	static char emdash[3] = { -30, -128, -108 };
+	if ( strncmp( p, emdash, 3 ) ) return 0;
+	return 1;
+}
+/* is_utf8_endash()
+ *
+ * Internally pages="A--B" will convert -- to a UTF8
+ * endash = 0xE2 (-30) 0x80 (-128) 0x93 (-109)
+ */
+static int
+is_utf8_endash( char *p )
+{
+	static char endash[3] = { -30, -128, -109 };
+	if ( strncmp( p, endash, 3 ) ) return 0;
+	return 1;
 }
 
-static void
+static int
 process_pages( fields *info, newstr *s, int level )
 {
-	char *p, *q;
-	newstr sp, ep;
+	newstr page;
+	char *p;
+	int ok;
 
-	newstrs_init( &sp, &ep, NULL );
 	newstr_findreplace( s, " ", "" );
+	if ( s->len==0 ) return 1;
 
-	p = q = s->data;
-	while ( isdigit( *q ) ) q++;
-	newstr_segcpy( &sp, p, q );
-	if ( sp.len>0 )
-		fields_add( info, "PAGESTART", sp.data, level );
+	newstr_init( &page );
+	p = skip_ws( s->data );
+	while ( *p && !is_ws(*p) && *p!='-' && *p!='\r' && *p!='\n' && *p!=-30 )
+		newstr_addchar( &page, *p++ );
+	if ( page.len>0 ) {
+		ok = fields_add( info, "PAGESTART", page.data, level );
+		if ( !ok ) return 0;
+	}
 
-	p = q;
-	while ( *p && !isdigit(*p) ) p++;
-	q = p;
-	while ( isdigit( *q ) ) q++;
-	newstr_segcpy( &ep, p, q );
-	if ( ep.len>0 )
-		fields_add( info, "PAGEEND", ep.data, level );
+	while ( *p && (is_ws(*p) || *p=='-' ) ) p++;
+	if ( *p && is_utf8_emdash( p ) ) p+=3;
+	if ( *p && is_utf8_endash( p ) ) p+=3;
 
-	newstrs_free( &sp, &ep, NULL );
+	newstr_empty( &page );
+	while ( *p && !is_ws(*p) && *p!='-' && *p!='\r' && *p!='\n' )
+		newstr_addchar( &page, *p++ );
+	if ( page.len>0 ) {
+		ok = fields_add( info, "PAGEEND", page.data, level );
+		if ( !ok ) return 0;
+	}
+
+	newstr_free( &page );
+	return 1;
 }
 
-static void
-process_urlcore( fields *info, char *p, int level, char *default_tag )
+static int
+process_urlcore( fields *info, newstr *d, int level, char *default_tag )
 {
+	char *p = d->data;
 	if ( !strncasecmp( p, "\\urllink", 8 ) )
-		fields_add( info, "URL", p+8, level );
+		return fields_add( info, "URL", p+8, level );
 	else if ( !strncasecmp( p, "\\url", 4 ) )
-		fields_add( info, "URL", p+4, level );
+		return fields_add( info, "URL", p+4, level );
 	else if ( !strncasecmp( p, "arXiv:", 6 ) )
-		fields_add( info, "ARXIV", p+6, level ); 
+		return fields_add( info, "ARXIV", p+6, level );
 	else if ( !strncasecmp( p, "http://arxiv.org/abs/", 21 ) )
-		fields_add( info, "ARXIV", p+21, level );
+		return fields_add( info, "ARXIV", p+21, level );
 	else if ( !strncasecmp( p, "http:", 5 ) )
-		fields_add( info, "URL", p, level );
-	else fields_add( info, default_tag, p, level );
+		return fields_add( info, "URL", p, level );
+	else return fields_add( info, default_tag, p, level );
 }
 
-static void
-process_url( fields *info, char *p, int level )
+static int
+process_url( fields *info, newstr *d, int level )
 {
-	process_urlcore( info, p, level, "URL" );
+	return process_urlcore( info, d, level, "URL" );
 }
 
-static void
-process_howpublished( fields *info, char *p, int level )
+/* Split keywords="" with semicolons.
+ * Commas are also frequently used, but will break
+ * entries like:
+ *       keywords="Microscopy, Confocal"
+ */
+static int
+process_keywords( fields *info, newstr *d, int level )
+{
+	newstr keyword;
+	char *p;
+	int ok;
+
+	if ( !d || d->len==0 ) return 1;
+
+	p = d->data;
+	newstr_init( &keyword );
+
+	while ( *p ) {
+		p = skip_ws( p );
+		while ( *p && *p!=';' ) newstr_addchar( &keyword, *p++ );
+		newstr_trimendingws( &keyword );
+		if ( keyword.len ) {
+			ok = fields_add( info, "KEYWORD", keyword.data, level );
+			if ( !ok ) return 0;
+			newstr_empty( &keyword );
+		}
+		if ( *p==';' ) p++;
+	}
+	newstr_free( &keyword );
+	return 1;
+}
+
+/* proces_howpublished()
+ *
+ *    howpublished={},
+ *
+ * Normally indicates the manner in which something was
+ * published in lieu of a formal publisher, so typically
+ * 'howpublished' and 'publisher' will never be in the
+ * same reference.
+ *
+ * Occassionally, people put Diploma thesis information
+ * into the field, so check that first.
+ */
+static int
+process_howpublished( fields *info, newstr *d, int level )
 {
-	/* Some users put Diploma thesis in howpublished */
+	char *p = d->data;
 	if ( !strncasecmp( p, "Diplom", 6 ) )
-		fields_replace_or_add( info, "GENRE", "Diploma thesis", level );
+		return fields_replace_or_add( info, "GENRE", "Diploma thesis", level );
 	else if ( !strncasecmp( p, "Habilitation", 13 ) )
-		fields_replace_or_add( info, "GENRE", "Habilitation thesis", level );
+		return fields_replace_or_add( info, "GENRE", "Habilitation thesis", level );
+	else if ( !strncasecmp( d->data, "http:", 5 ) )
+		return process_url( info, d, level );
+	else if ( !strncasecmp( d->data, "arXiv:", 6 ) )
+		return process_url( info, d, level );
 	else 
-		process_urlcore( info, p, level, "DESCRIPTION" );
+		return fields_add( info, "PUBLISHER", p, level );
 }
 
 /*
  * sentelink = {file://localhost/full/path/to/file.pdf,Sente,PDF}
  */
-static void
-process_sente( fields *info, char *p, int level )
+static int
+process_sente( fields *info, newstr *d, int level )
 {
+	int ret = 1;
 	newstr link;
+	char *p = d->data;
 	newstr_init( &link );
 	while ( *p && *p!=',' ) newstr_addchar( &link, *p++ );
-	if ( link.len ) fields_add( info, "FILEATTACH", link.data, level );
+	newstr_trimstartingws( &link );
+	newstr_trimendingws( &link );
+	if ( link.len ) ret = fields_add( info, "FILEATTACH", link.data, level );
 	newstr_free( &link );
+	return ret;
+}
+
+/*
+ * BibTeX uses 'organization' in lieu of publisher if that field is missing.
+ * Otherwise output as
+ * <name type="corporate">
+ *    <namePart>The organization</namePart>
+ *    <role>
+ *       <roleTerm authority="marcrelator" type="text">organizer of meeting</roleTerm>
+ *    </role>
+ * </name>
+ */
+static int
+process_organization( fields *bibin, fields *info, newstr *d, int level )
+{
+	int n;
+	n = fields_find( bibin, "publisher", LEVEL_ANY );
+	if ( n==-1 )
+		return fields_add( info, "PUBLISHER", d->data, level );
+	else
+		return fields_add( info, "ORGANIZER:CORP", d->data, level );
+}
+
+static int
+count_colons( char *p )
+{
+	int n = 0;
+	while ( *p ) {
+		if ( *p==':' ) n++;
+		p++;
+	}
+	return n;
+}
+
+static int
+first_colon( char *p )
+{
+	int n = 0;
+	while ( p[n] && p[n]!=':' ) n++;
+	return n;
+}
+
+static int
+last_colon( char *p )
+{
+	int n = strlen( p ) - 1;
+	while ( n>0 && p[n]!=':' ) n--;
+	return n;
 }
 
 /*
  * file={Description:/full/path/to/file.pdf:PDF}
  */
-static void
-process_file( fields *info, char *p, int level )
+static int
+process_file( fields *info, newstr *d, int level )
 {
+	char *p = d->data;
 	newstr link;
-	newstr_init( &link );
-	while ( *p && *p!=':' ) p++;
-	if ( *p==':' ) p++;
-	while ( *p && *p!=':' ) newstr_addchar( &link, *p++ );
-	if ( link.len ) fields_add( info, "FILEATTACH", link.data, level );
-	newstr_free( &link );
+	int i, n, n1, n2, ret = 1;
+
+	n = count_colons( p );
+	if ( n > 1 ) {
+		/* A DOS file can contain a colon ":C:/....pdf:PDF" */
+		/* Extract after 1st and up to last colons */
+		n1 = first_colon( p ) + 1;
+		n2 = last_colon( p );
+		newstr_init( &link );
+		for ( i=n1; i<n2; ++i ) {
+			newstr_addchar( &link, p[i] );
+		}
+		newstr_trimstartingws( &link );
+		newstr_trimendingws( &link );
+		if ( link.len ) ret = fields_add( info, "FILEATTACH", link.data, level );
+		newstr_free( &link );
+	} else {
+		/* This field isn't formatted properly, so just copy directly */
+		ret = fields_add( info, "FILEATTACH", p, level );
+	}
+	return ret;
+}
+
+static int
+process_note( fields *info, newstr *d, int level )
+{
+	if ( !strncasecmp( d->data, "http:", 5 ) ||
+	     !strncasecmp( d->data, "arXiv:", 6 ) ) {
+		return process_url( info, d, level );
+	} else {
+		return fields_add( info, "NOTES", d->data, level );
+	}
 }
 
 int
@@ -643,15 +902,6 @@ bibtexin_typef( fields *bibin, char *filename, int nrefs, param *p,
 }
 
 static void
-report( fields *info )
-{
-	int i;
-	for ( i=0; i<info->nfields; ++i )
-		fprintf(stderr, "'%s' %d = '%s'\n",info->tag[i].data,info->level[i],
-			info->data[i].data);
-}
-
-static void
 bibtexin_notag( param *p, char *tag )
 {
 	if ( p->verbose && strcmp( tag, "INTERNAL_TYPE" ) ) {
@@ -660,55 +910,146 @@ bibtexin_notag( param *p, char *tag )
 	}
 }
 
-void
+/* bibtexin_titleinbook_isbooktitle()
+ *
+ * Normally, the title field of inbook refers to the book.  The
+ * section in a @inbook reference is untitled.  If it's titled,
+ * the @incollection should be used.  For example, in:
+ *
+ * @inbook{
+ *    title="xxx"
+ * }
+ *
+ * the booktitle is "xxx".
+ *
+ * However, @inbook is frequently abused (and treated like
+ * @incollection) so that title and booktitle are present
+ * and title is now 'supposed' to refer to the section.  For example:
+ *
+ * @inbook{
+ *     title="yyy",
+ *     booktitle="xxx"
+ * }
+ *
+ * Therefore report whether or not booktitle is present as well
+ * as title in @inbook references.  If not, then make 'title'
+ * correspond to the title of the book, not the section.
+ *
+ */
+static int
+bibtexin_titleinbook_isbooktitle( char *intag, fields *bibin )
+{
+	int n;
+
+	/* ...look only at 'title="xxx"' elements */
+	if ( strcasecmp( intag, "TITLE" ) ) return 0;
+
+	/* ...look only at '@inbook' references */
+	n = fields_find( bibin, "INTERNAL_TYPE", -1 );
+	if ( n==-1 ) return 0;
+	if ( strcasecmp( fields_value( bibin, n, FIELDS_CHRP ), "INBOOK" ) ) return 0;
+
+	/* ...look to see if 'booktitle="yyy"' exists */
+	n = fields_find( bibin, "BOOKTITLE", -1 );
+	if ( n==-1 ) return 0;
+	else return 1;
+}
+static int
+bibtexin_title_process( fields *info, char *outtag, fields *bibin, newstr *t, newstr *d, int level, int nosplittitle )
+{
+	char *intag = t->data;
+	char *indata = d->data;
+	if ( bibtexin_titleinbook_isbooktitle( intag, bibin ) ) level=LEVEL_MAIN;
+	title_process( info, outtag, indata, level, nosplittitle );
+	return 1;
+}
+static int
+bibtex_simple( fields *info, char *outtag, newstr *d, int level )
+{
+	return fields_add( info, outtag, d->data, level );
+}
+
+int
 bibtexin_convertf( fields *bibin, fields *info, int reftype, param *p,
 		variants *all, int nall )
 {
+	int process, level, i, n, nfields, ok;
 	newstr *t, *d;
-	int process, level, i, n;
-	char *newtag;
-	for ( i=0; i<bibin->nfields; ++i ) {
+	char *outtag;
 
-		/* skip ones already "used" such as successful crossref */
-		if ( bibin->used[i] ) continue;
+	nfields = fields_num( bibin );
+	for ( i=0; i<nfields; ++i ) {
 
-		/* skip ones with no data */
-		d = &( bibin->data[i] );
-		if ( d->len == 0 ) continue;
+		if ( fields_used( bibin, i ) ) continue; /* e.g. successful crossref */
+		if ( fields_nodata( bibin, i ) ) continue;
 
-		t = &( bibin->tag[i] );
+		t = fields_tag( bibin, i, FIELDS_STRP );
+		if ( t->len == 0 ) continue; /* Don't consider with null tags */
 		n = process_findoldtag( t->data, reftype, all, nall );
 		if ( n==-1 ) {
 			bibtexin_notag( p, t->data );
 			continue;
 		}
 
-		/* skip ones of type ALWAYS (previously added) */
-		process = ((all[reftype]).tags[n]).processingtype;
-		if ( process == ALWAYS ) continue;
+		d = fields_value( bibin, i, FIELDS_STRP );
 
+		process = ((all[reftype]).tags[n]).processingtype;
 		level   = ((all[reftype]).tags[n]).level;
-		newtag  = ((all[reftype]).tags[n]).newstr;
-
-		if ( process==SIMPLE )
-			fields_add( info, newtag, d->data, level );
-		else if ( process==TITLE )
-			title_process( info, "TITLE", d->data, level, 
-					p->nosplittitle );
-		else if ( process==PERSON )
-			process_names( info, newtag, d, level, &(p->asis), 
-					&(p->corps) );
-		else if ( process==PAGES )
-			process_pages( info, d, level);
-		else if ( process==BIBTEX_URL )
-			process_url( info, d->data, level );
-		else if ( process==HOWPUBLISHED )
-			process_howpublished( info, d->data, level );
-		else if ( process==BIBTEX_SENTE )
-			process_sente( info, d->data, level );
-		else if ( process==BIBTEX_FILE )
-			process_file( info, d->data, level );
+		outtag  = ((all[reftype]).tags[n]).newstr;
+
+		switch( process ) {
+
+		case SIMPLE:
+			ok = bibtex_simple( info, outtag, d, level );
+			break;
+
+		case TITLE:
+			ok = bibtexin_title_process( info, "TITLE", bibin, t, d, level, p->nosplittitle );
+			break;
+
+		case PERSON:
+			ok = bibtex_names( info, outtag, d, level, &(p->asis), &(p->corps) );
+			break;
+
+		case PAGES:
+			ok = process_pages( info, d, level );
+			break;
+
+		case KEYWORD:
+			ok = process_keywords( info, d, level );
+			break;
+
+		case HOWPUBLISHED:
+			ok = process_howpublished( info, d, level );
+			break;
+
+		case LINKEDFILE:
+			ok = process_file( info, d, level );
+			break;
+
+		case BT_NOTE:
+			ok = process_note( info, d, level );
+			break;
+
+		case BT_SENTE:
+			ok = process_sente( info, d, level );
+			break;
+
+		case BT_URL:
+			ok = process_url( info, d, level );
+			break;
+
+		case BT_ORG:
+			ok = process_organization( bibin, info, d, level );
+			break;
+
+		default:
+			ok = 1;
+			break;
+		}
+
+		if ( !ok ) return BIBL_ERR_MEMERR;
 	}
-	if ( p->verbose ) report( info );
+	return BIBL_OK;
 }
 
diff --git a/lib/bibtexin.h b/lib/bibtexin.h
index b70d074..0c496ac 100644
--- a/lib/bibtexin.h
+++ b/lib/bibtexin.h
@@ -1,9 +1,9 @@
 /*
  * bibtexin.h
  *
- * Copyright (c) Chris Putnam 2003-2010
+ * Copyright (c) Chris Putnam 2003-2013
  *
- * Program and source code released under the GPL
+ * Source code released under the GPL version 2
  *
  */
 #ifndef BIBTEXIN_H
@@ -16,7 +16,7 @@
 #include "bibutils.h"
 #include "reftypes.h"
 
-extern void bibtexin_convertf( fields *bibin, fields *info, int reftype, param *p, variants *all, int nall );
+extern int  bibtexin_convertf( fields *bibin, fields *info, int reftype, param *p, variants *all, int nall );
 extern int  bibtexin_processf( fields *bibin, char *data, char *filename, long nref );
 extern void bibtexin_cleanf( bibl *bin, param *p );
 extern int  bibtexin_readf( FILE *fp, char *buf, int bufsize, int *bufpos, newstr *line, newstr *reference, int *fcharset );
diff --git a/lib/bibtexout.c b/lib/bibtexout.c
index c6212d9..71e9919 100644
--- a/lib/bibtexout.c
+++ b/lib/bibtexout.c
@@ -1,9 +1,9 @@
 /*
  * bibtexout.c
  *
- * Copyright (c) Chris Putnam 2003-2010
+ * Copyright (c) Chris Putnam 2003-2013
  *
- * Program and source code released under the GPL
+ * Program and source code released under the GPL version 2
  *
  */
 #include <stdio.h>
@@ -15,6 +15,7 @@
 #include "utf8.h"
 #include "xml.h"
 #include "fields.h"
+#include "name.h"
 #include "bibl.h"
 #include "doi.h"
 #include "bibtexout.h"
@@ -27,8 +28,8 @@ bibtexout_initparams( param *p, const char *progname )
 	p->charsetout       = BIBL_CHARSET_DEFAULT;
 	p->charsetout_src   = BIBL_SRC_DEFAULT;
 	p->latexout         = 1;
-	p->utf8out          = 0;
-	p->utf8bom          = 0;
+	p->utf8out          = BIBL_CHARSET_UTF8_DEFAULT;
+	p->utf8bom          = BIBL_CHARSET_BOM_DEFAULT;
 	p->xmlout           = 0;
 	p->nosplittitle     = 0;
 	p->verbose          = 0;
@@ -70,7 +71,7 @@ output_citekey( FILE *fp, fields *info, unsigned long refnum, int format_opts )
 		p = info->data[n].data;
 		while ( p && *p && *p!='|' ) {
 			if ( format_opts & BIBOUT_STRICTKEY ) {
-				if ( isdigit(*p) || (*p>='A' && *p<='Z') ||
+				if ( isdigit((unsigned char)*p) || (*p>='A' && *p<='Z') ||
 				     (*p>='a' && *p<='z' ) )
 					fprintf( fp, "%c", *p );
 			}
@@ -91,7 +92,7 @@ bibtexout_type( fields *info, char *filename, int refnum, param *p )
 	int type = TYPE_UNKNOWN, i, maxlevel, n, level;
 
 	/* determine bibliography type */
-	for ( i=0; i<info->nfields; ++i ) {
+	for ( i=0; i<info->n; ++i ) {
 		if ( strcasecmp( info->tag[i].data, "GENRE" ) &&
 		     strcasecmp( info->tag[i].data, "NGENRE" ) ) continue;
 		genre = info->data[i].data;
@@ -127,7 +128,7 @@ bibtexout_type( fields *info, char *filename, int refnum, param *p )
 			type = TYPE_ELECTRONIC;
 	}
 	if ( type==TYPE_UNKNOWN ) {
-		for ( i=0; i<info->nfields; ++i ) {
+		for ( i=0; i<info->n; ++i ) {
 			if ( strcasecmp( info->tag[i].data, "ISSUANCE" ) ) continue;
 			if ( !strcasecmp( info->data[i].data, "monographic" ) ) {
 				if ( info->level[i]==0 ) type = TYPE_BOOK;
@@ -191,7 +192,7 @@ output_type( FILE *fp, int type, int format_opts )
 		len = strlen( s );
 		fprintf( fp, "@" );
 		for ( i=0; i<len; ++i )
-			fprintf( fp, "%c", toupper(s[i]) );
+			fprintf( fp, "%c", toupper((unsigned char)s[i]) );
 		fprintf( fp, "{" );
 	}
 }
@@ -207,7 +208,7 @@ output_element( FILE *fp, char *tag, char *data, int format_opts )
 	else {
 		len = strlen( tag );
 		for ( i=0; i<len; ++i )
-			fprintf( fp, "%c", toupper(tag[i]) );
+			fprintf( fp, "%c", toupper((unsigned char)tag[i]) );
 	}
 	if ( format_opts & BIBOUT_WHITESPACE ) fprintf( fp, " = \t" );
 	else fprintf( fp, "=" );
@@ -258,19 +259,41 @@ output_simpleall( FILE *fp, fields *info, char *intag, char *outtag,
 		int format_opts )
 {
 	int i;
-	for ( i=0; i<info->nfields; ++i ) {
-		if ( strcasecmp( info->tag[i].data, intag ) ) continue;
-		output_and_use( fp, info, i, outtag, format_opts );
+	for ( i=0; i<info->n; ++i ) {
+		if ( fields_match_tag( info, i, intag ) )
+			output_and_use( fp, info, i, outtag, format_opts );
 	}
 }
 
 static void
+output_keywords( FILE *fp, fields *info, int format_opts )
+{
+	newstr keywords, *word;
+	vplist a;
+	int i;
+	newstr_init( &keywords );
+	vplist_init( &a );
+	fields_findv_each( info, LEVEL_ANY, FIELDS_STRP, &a, "KEYWORD" );
+	if ( a.n ) {
+		for ( i=0; i<a.n; ++i ) {
+			word = vplist_get( &a, i );
+			if ( i>0 ) newstr_strcat( &keywords, "; " );
+			newstr_newstrcat( &keywords, word );
+		}
+		output_element( fp, "keywords", keywords.data, format_opts );
+
+	}
+	newstr_free( &keywords );
+	vplist_free( &a );
+}
+
+static void
 output_fileattach( FILE *fp, fields *info, int format_opts )
 {
 	newstr data;
 	int i;
 	newstr_init( &data );
-	for ( i=0; i<info->nfields; ++i ) {
+	for ( i=0; i<info->n; ++i ) {
 		if ( strcasecmp( info->tag[i].data, "FILEATTACH" ) ) continue;
 		newstr_strcpy( &data, ":" );
 		newstr_newstrcat( &data, &(info->data[i]) );
@@ -287,68 +310,53 @@ output_fileattach( FILE *fp, fields *info, int format_opts )
 }
 
 static void
-add_person( newstr *s, char *p )
-{
-	int nseps = 0, nch;
-	while ( *p ) {
-		nch = 0;
-		if ( nseps==1 ) newstr_addchar( s, ',' );
-		if ( nseps ) newstr_addchar( s, ' ' );
-		while ( *p && *p!='|' ) {
-			newstr_addchar( s, *p++ );
-			nch++;
-		}
-		if ( *p=='|' ) p++;
-		if ( nseps!=0 && nch==1 ) newstr_addchar( s, '.' );
-		nseps++;
-	}
-}
-
-static void
 output_people( FILE *fp, fields *info, unsigned long refnum, char *tag, 
 		char *ctag, char *atag, char *bibtag, int level, 
 		int format_opts )
 {
-	newstr allpeople;
+	newstr allpeople, oneperson;
 	int i, npeople, person, corp, asis;
 
+	newstrs_init( &allpeople, &oneperson, NULL );
+
 	/* primary citation authors */
 	npeople = 0;
-	for ( i=0; i<info->nfields; ++i ) {
+	for ( i=0; i<info->n; ++i ) {
 		if ( level!=-1 && info->level[i]!=level ) continue;
 		person = ( strcasecmp( info->tag[i].data, tag ) == 0 );
 		corp   = ( strcasecmp( info->tag[i].data, ctag ) == 0 );
 		asis   = ( strcasecmp( info->tag[i].data, atag ) == 0 );
 		if ( person || corp || asis ) {
-			if ( npeople==0 ) newstr_init( &allpeople );
-			else {
+			if ( npeople>0 ) {
 				if ( format_opts & BIBOUT_WHITESPACE )
 					newstr_strcat(&allpeople,"\n\t\tand ");
 				else newstr_strcat( &allpeople, "\nand " );
 			}
 			if ( corp ) {
 				newstr_addchar( &allpeople, '{' );
-				newstr_strcat( &allpeople, info->data[i].data );
+				newstr_strcat( &allpeople, fields_value( info, i, FIELDS_CHRP ) );
 				newstr_addchar( &allpeople, '}' );
 			} else if ( asis ) {
 				newstr_addchar( &allpeople, '{' );
-				newstr_strcat( &allpeople, info->data[i].data );
+				newstr_strcat( &allpeople, fields_value( info, i, FIELDS_CHRP ) );
 				newstr_addchar( &allpeople, '}' );
-			} else add_person( &allpeople, info->data[i].data ); 
-			fields_setused( info, i );
+			} else {
+				name_build_withcomma( &oneperson, fields_value( info, i, FIELDS_CHRP ) );
+				newstr_newstrcat( &allpeople, &oneperson );
+			}
 			npeople++;
 		}
 	}
-	if ( npeople ) {
+	if ( npeople )
 		output_element( fp, bibtag, allpeople.data, format_opts );
-		newstr_free( &allpeople );
-	}
+
+	newstrs_free( &allpeople, &oneperson, NULL );
 }
 
 static void
 output_title( FILE *fp, fields *info, unsigned long refnum, char *bibtag, int level, int format_opts )
 {
-	newstr title;
+	newstr title, *mainttl, *subttl;
 	int n1 = -1, n2 = -1;
 	/* Option is for short titles of journals */
 	if ( ( format_opts & BIBOUT_SHORTTITLE ) && level==1 ) {
@@ -361,13 +369,16 @@ output_title( FILE *fp, fields *info, unsigned long refnum, char *bibtag, int le
 	}
 	if ( n1!=-1 ) {
 		newstr_init( &title );
-		newstr_newstrcpy( &title, &(info->data[n1]) );
+		mainttl = fields_value( info, n1, FIELDS_STRP );
+		newstr_newstrcpy( &title, mainttl );
 		fields_setused( info, n1 );
 		if ( n2!=-1 ) {
-			if ( info->data[n1].data[info->data[n1].len]!='?' )
+			subttl = fields_value( info, n2, FIELDS_STRP );
+			if ( mainttl->len > 0 &&
+			     mainttl->data[mainttl->len-1]!='?' )
 				newstr_strcat( &title, ": " );
 			else newstr_addchar( &title, ' ' );
-			newstr_strcat( &title, info->data[n2].data );
+			newstr_newstrcat( &title, subttl );
 			fields_setused( info, n2 );
 		}
 		output_element( fp, bibtag, title.data, format_opts );
@@ -571,8 +582,10 @@ bibtexout_write( fields *info, FILE *fp, param *p, unsigned long refnum )
 	else if ( type==TYPE_PHDTHESIS || type==TYPE_MASTERSTHESIS ) {
 		output_title( fp, info, refnum, "series", 1, p->format_opts );
 	}
-	else if ( type==TYPE_BOOK || type==TYPE_COLLECTION || type==TYPE_PROCEEDINGS )
+	else if ( type==TYPE_BOOK || type==TYPE_COLLECTION || type==TYPE_PROCEEDINGS || type==TYPE_REPORT ) {
 		output_title( fp, info, refnum, "series", 1, p->format_opts );
+		output_title( fp, info, refnum, "series", 2, p->format_opts );
+	}
 
 	output_date( fp, info, refnum, p->format_opts );
 	output_simple( fp, info, "EDITION", "edition", p->format_opts );
@@ -583,7 +596,7 @@ bibtexout_write( fields *info, FILE *fp, param *p, unsigned long refnum )
 /*	output_simple( fp, info, "ISSUE", "issue", p->format_opts );
 	output_simple( fp, info, "NUMBER", "number", p->format_opts );s*/
 	output_pages( fp, info, refnum, p->format_opts );
-	output_simpleall( fp, info, "KEYWORD", "keywords", p->format_opts );
+	output_keywords( fp, info, p->format_opts );
 	output_simple( fp, info, "CONTENTS", "contents", p->format_opts );
 	output_simple( fp, info, "ABSTRACT", "abstract", p->format_opts );
 	output_simple( fp, info, "LOCATION", "location", p->format_opts );
diff --git a/lib/bibtexout.h b/lib/bibtexout.h
index 84112fd..4ac1695 100644
--- a/lib/bibtexout.h
+++ b/lib/bibtexout.h
@@ -1,7 +1,9 @@
 /*
  * bibtexout.h
  *
- * Copyright (c) Chris Putnam 2005-2010
+ * Copyright (c) Chris Putnam 2005-2013
+ *
+ * Source code released under GPL version 2
  *
  */
 #ifndef BIBTEXOUT_H
diff --git a/lib/bibtextypes.c b/lib/bibtextypes.c
index 2b961c0..2c3560a 100644
--- a/lib/bibtextypes.c
+++ b/lib/bibtextypes.c
@@ -1,12 +1,11 @@
 /*
  * bibtypes.c
  *
- * Copyright (c) Chris Putnam 2003-2010
+ * Copyright (c) Chris Putnam 2003-2013
  *
- * Program and source code released under the GPL
+ * Program and source code released under the GPL version 2
  *
  */
-
 #include <stdio.h>
 #include "fields.h"
 #include "reftypes.h"
@@ -25,7 +24,7 @@ static lookups article[] = {
 	{ "day",          "PARTDAY",   SIMPLE, LEVEL_MAIN },
 	{ "volume",       "VOLUME",    SIMPLE, LEVEL_MAIN },
 	{ "pages",        "PAGES",     PAGES,  LEVEL_MAIN },
-	{ "number",       "NUMBER",    SIMPLE, LEVEL_MAIN },
+	{ "number",       "ISSUE",     SIMPLE, LEVEL_MAIN },
 	{ "issue",        "ISSUE",     SIMPLE, LEVEL_MAIN },
 	{ "journal",      "TITLE",     TITLE,  LEVEL_HOST },
 	{ "publisher",    "PUBLISHER", SIMPLE, LEVEL_HOST },
@@ -34,25 +33,26 @@ static lookups article[] = {
 	{ "abstract",     "ABSTRACT",  SIMPLE, LEVEL_MAIN },
 	{ "contents",     "CONTENTS",  SIMPLE, LEVEL_MAIN },
 	{ "language",     "LANGUAGE",  SIMPLE, LEVEL_MAIN },
-	{ "note",         "NOTES",     SIMPLE, LEVEL_MAIN },
+	{ "note",         "NOTES",     BT_NOTE, LEVEL_MAIN },
 	{ "annote",       "ANNOTE",    SIMPLE, LEVEL_MAIN },
 	{ "location",     "LOCATION",  SIMPLE, LEVEL_MAIN },
-	{ "ftp",          "",      BIBTEX_URL, LEVEL_MAIN },
-	{ "url",          "",      BIBTEX_URL, LEVEL_MAIN },
+	{ "ftp",          "",      BT_URL, LEVEL_MAIN },
+	{ "url",          "",      BT_URL, LEVEL_MAIN },
 	{ "pdf",          "FILEATTACH",SIMPLE, LEVEL_MAIN },
-	{ "sentelink",    "FILEATTACH",BIBTEX_SENTE, LEVEL_MAIN },
-	{ "file",         "FILEATTACH",BIBTEX_FILE,  LEVEL_MAIN },
+	{ "sentelink",    "FILEATTACH",BT_SENTE, LEVEL_MAIN },
+	{ "file",         "FILEATTACH",LINKEDFILE,   LEVEL_MAIN },
 	{ "howpublished", "",       HOWPUBLISHED, LEVEL_MAIN },
 	{ "doi",          "DOI",       SIMPLE, LEVEL_MAIN },
 	{ "key",          "BIBKEY",       SIMPLE, LEVEL_MAIN },
 	{ "refnum",       "REFNUM",    SIMPLE, LEVEL_MAIN },
 	{ "crossref",     "CROSSREF",  SIMPLE, LEVEL_MAIN },
-	{ "keywords",     "KEYWORD",   SIMPLE, LEVEL_MAIN },
-	{ " ",            "INTERNAL_TYPE|ARTICLE",           ALWAYS, LEVEL_MAIN },
-	{ " ",            "ISSUANCE|continuing",    ALWAYS, LEVEL_HOST },
-	{ " ",            "RESOURCE|text",          ALWAYS, LEVEL_MAIN },
-	{ " ",            "GENRE|periodical",       ALWAYS, LEVEL_HOST },
-	{ " ",            "GENRE|academic journal", ALWAYS, LEVEL_HOST }
+	{ "keywords",     "KEYWORD",   KEYWORD, LEVEL_MAIN },
+	{ "",             "INTERNAL_TYPE|ARTICLE",           ALWAYS, LEVEL_MAIN },
+	{ "",             "ISSUANCE|continuing",     ALWAYS, LEVEL_HOST },
+	{ "",             "RESOURCE|text",           ALWAYS, LEVEL_MAIN },
+	{ "",             "NGENRE|journal article",  ALWAYS, LEVEL_MAIN },
+	{ "",             "GENRE|periodical",        ALWAYS, LEVEL_HOST },
+	{ "",             "NGENRE|academic journal", ALWAYS, LEVEL_HOST }
 };
 
 /* Book */
@@ -64,7 +64,7 @@ static lookups book[] = {
 	{ "booktitle",    "TITLE",     TITLE,  LEVEL_MAIN },
 	{ "series",       "TITLE",     TITLE,  LEVEL_HOST },
 	{ "publisher",    "PUBLISHER", SIMPLE, LEVEL_MAIN },
-	{ "organization", "AUTHOR:CORP", SIMPLE, LEVEL_MAIN },
+	{ "organization", "ORGANIZER:CORP", BT_ORG, LEVEL_MAIN },
 	{ "address",      "ADDRESS",   SIMPLE, LEVEL_MAIN },
 	{ "editor",       "EDITOR",    PERSON, LEVEL_MAIN },
 	{ "year",         "YEAR",      SIMPLE, LEVEL_MAIN },
@@ -79,26 +79,26 @@ static lookups book[] = {
 	{ "contents",     "CONTENTS",  SIMPLE, LEVEL_MAIN },
 	{ "language",     "LANGUAGE",  SIMPLE, LEVEL_MAIN },
 	{ "location",     "LOCATION",  SIMPLE, LEVEL_MAIN },
-	{ "note",         "NOTES",     SIMPLE, LEVEL_MAIN },
+	{ "note",         "NOTES",     BT_NOTE, LEVEL_MAIN },
 	{ "annote",       "ANNOTE",    SIMPLE, LEVEL_MAIN },
 	{ "type",         "GENRE",     SIMPLE, LEVEL_MAIN },
 	{ "key",          "BIBKEY",    SIMPLE, LEVEL_MAIN },
-	{ "ftp",          "",       BIBTEX_URL, LEVEL_MAIN },
-	{ "url",          "",       BIBTEX_URL, LEVEL_MAIN },
+	{ "ftp",          "",       BT_URL, LEVEL_MAIN },
+	{ "url",          "",       BT_URL, LEVEL_MAIN },
 	{ "pdf",          "FILEATTACH",SIMPLE, LEVEL_MAIN },
-	{ "sentelink",    "FILEATTACH",BIBTEX_SENTE, LEVEL_MAIN },
-	{ "file",         "FILEATTACH",BIBTEX_FILE,  LEVEL_MAIN },
-	{ "address"       "ADDRESS",   SIMPLE, LEVEL_MAIN },
+	{ "sentelink",    "FILEATTACH",BT_SENTE, LEVEL_MAIN },
+	{ "file",         "FILEATTACH",LINKEDFILE,   LEVEL_MAIN },
+	{ "address",      "ADDRESS",   SIMPLE, LEVEL_MAIN },
 	{ "howpublished", "",       HOWPUBLISHED, LEVEL_MAIN },
 	{ "doi",          "DOI",       SIMPLE, LEVEL_MAIN },
 	{ "refnum",       "REFNUM",    SIMPLE, LEVEL_MAIN },
 	{ "crossref",     "CROSSREF",  SIMPLE, LEVEL_MAIN },
-	{ "keywords",     "KEYWORD",   SIMPLE, LEVEL_MAIN },
+	{ "keywords",     "KEYWORD",   KEYWORD, LEVEL_MAIN },
 	{ "refnum",       "REFNUM",    SIMPLE, LEVEL_MAIN },
-	{ " ",            "INTERNAL_TYPE|BOOK",     ALWAYS, LEVEL_MAIN },
-	{ " ",            "RESOURCE|text", ALWAYS, LEVEL_MAIN },
-	{ " ",            "ISSUANCE|monographic", ALWAYS, LEVEL_MAIN },
-	{ " ",            "GENRE|book",    ALWAYS, LEVEL_MAIN }
+	{ "",             "INTERNAL_TYPE|BOOK",   ALWAYS, LEVEL_MAIN },
+	{ "",             "RESOURCE|text",        ALWAYS, LEVEL_MAIN },
+	{ "",             "ISSUANCE|monographic", ALWAYS, LEVEL_MAIN },
+	{ "",             "GENRE|book",           ALWAYS, LEVEL_MAIN }
 };
 
 /* Technical reports */
@@ -108,6 +108,7 @@ static lookups report[] = {
 	{ "translator",   "TRANSLATOR",PERSON, LEVEL_MAIN },
 	{ "title",        "TITLE",        TITLE,  LEVEL_MAIN },
 	{ "booktitle",    "TITLE",        TITLE,  LEVEL_MAIN },
+	{ "series",       "TITLE",        TITLE,  LEVEL_HOST },
 	{ "editor",       "EDITOR",       PERSON, LEVEL_MAIN },
 	{ "publisher",    "PUBLISHER",    SIMPLE, LEVEL_MAIN },
 	{ "institution",  "PUBLISHER",    SIMPLE, LEVEL_MAIN },
@@ -122,23 +123,23 @@ static lookups report[] = {
 	{ "contents",     "CONTENTS",     SIMPLE, LEVEL_MAIN },
 	{ "language",     "LANGUAGE",     SIMPLE, LEVEL_MAIN },
 	{ "location",     "LOCATION",     SIMPLE, LEVEL_MAIN },
-	{ "note",         "NOTES",        SIMPLE, LEVEL_MAIN },
+	{ "note",         "NOTES",        BT_NOTE, LEVEL_MAIN },
 	{ "annote",       "ANNOTE",    SIMPLE, LEVEL_MAIN },
 	{ "key",          "BIBKEY",          SIMPLE, LEVEL_MAIN },
 	{ "doi",          "DOI",          SIMPLE, LEVEL_MAIN },
-	{ "ftp",          "",          BIBTEX_URL, LEVEL_MAIN },
-	{ "url",          "",          BIBTEX_URL, LEVEL_MAIN },
+	{ "ftp",          "",          BT_URL, LEVEL_MAIN },
+	{ "url",          "",          BT_URL, LEVEL_MAIN },
 	{ "pdf",          "FILEATTACH",SIMPLE, LEVEL_MAIN },
-	{ "sentelink",    "FILEATTACH",BIBTEX_SENTE, LEVEL_MAIN },
-	{ "file",         "FILEATTACH",BIBTEX_FILE,  LEVEL_MAIN },
+	{ "sentelink",    "FILEATTACH",BT_SENTE, LEVEL_MAIN },
+	{ "file",         "FILEATTACH",LINKEDFILE,   LEVEL_MAIN },
 	{ "howpublished", "",          HOWPUBLISHED, LEVEL_MAIN },
 	{ "refnum",    "REFNUM",          SIMPLE, LEVEL_MAIN },
 	{ "crossref",     "CROSSREF",  SIMPLE, LEVEL_MAIN },
 	{ "type",      "GENRE",            SIMPLE, LEVEL_MAIN },
-	{ "keywords",     "KEYWORD",   SIMPLE, LEVEL_MAIN },
-	{ " ",         "INTERNAL_TYPE|REPORT",     ALWAYS, LEVEL_MAIN },
-	{ " ",         "RESOURCE|text",   ALWAYS, LEVEL_MAIN },
-	{ " ",         "GENRE|report",    ALWAYS, LEVEL_MAIN }
+	{ "keywords",     "KEYWORD",   KEYWORD, LEVEL_MAIN },
+	{ "",         "INTERNAL_TYPE|REPORT", ALWAYS, LEVEL_MAIN },
+	{ "",         "RESOURCE|text",        ALWAYS, LEVEL_MAIN },
+	{ "",         "GENRE|report",         ALWAYS, LEVEL_MAIN }
 };
 
 static lookups manual[] = {
@@ -148,7 +149,7 @@ static lookups manual[] = {
 	{ "booktitle", "TITLE",     TITLE,  LEVEL_MAIN },
 	{ "editor",    "EDITOR",    PERSON, LEVEL_MAIN },
 	{ "publisher", "PUBLISHER", SIMPLE, LEVEL_MAIN },
-	{ "organization", "AUTHOR:CORP", SIMPLE, LEVEL_MAIN },
+	{ "organization", "ORGANIZER:CORP", BT_ORG, LEVEL_MAIN },
 	{ "address",   "ADDRESS",   SIMPLE, LEVEL_MAIN },
 	{ "year",      "YEAR",      SIMPLE, LEVEL_MAIN },
 	{ "month",     "MONTH",     SIMPLE, LEVEL_MAIN },
@@ -159,23 +160,23 @@ static lookups manual[] = {
 	{ "abstract",  "ABSTRACT",  SIMPLE, LEVEL_MAIN },
 	{ "contents",  "CONTENTS",  SIMPLE, LEVEL_MAIN },
 	{ "location",     "LOCATION",     SIMPLE, LEVEL_MAIN },
-	{ "note",         "NOTES",        SIMPLE, LEVEL_MAIN },
+	{ "note",         "NOTES",        BT_NOTE, LEVEL_MAIN },
 	{ "annote",       "ANNOTE",    SIMPLE, LEVEL_MAIN },
 	{ "key",          "BIBKEY",          SIMPLE, LEVEL_MAIN },
 	{ "doi",       "DOI",       SIMPLE, LEVEL_MAIN },
-	{ "ftp",       "",       BIBTEX_URL, LEVEL_MAIN },
-	{ "url",       "",       BIBTEX_URL, LEVEL_MAIN },
+	{ "ftp",       "",       BT_URL, LEVEL_MAIN },
+	{ "url",       "",       BT_URL, LEVEL_MAIN },
 	{ "pdf",          "FILEATTACH",SIMPLE, LEVEL_MAIN },
-	{ "sentelink",    "FILEATTACH",BIBTEX_SENTE, LEVEL_MAIN },
-	{ "file",         "FILEATTACH",BIBTEX_FILE,  LEVEL_MAIN },
+	{ "sentelink",    "FILEATTACH",BT_SENTE, LEVEL_MAIN },
+	{ "file",         "FILEATTACH",LINKEDFILE,   LEVEL_MAIN },
 	{ "howpublished", "",    HOWPUBLISHED, LEVEL_MAIN },
 	{ "language",     "LANGUAGE",  SIMPLE, LEVEL_MAIN },
 	{ "refnum",    "REFNUM",    SIMPLE, LEVEL_MAIN },
 	{ "crossref",     "CROSSREF",  SIMPLE, LEVEL_MAIN },
-	{ "keywords",     "KEYWORD",   SIMPLE, LEVEL_MAIN },
-	{ " ",         "INTERNAL_TYPE|REPORT",       ALWAYS, LEVEL_MAIN },
-	{ " ",         "RESOURCE|text",     ALWAYS, LEVEL_MAIN },
-	{ " ",         "GENRE|instruction", ALWAYS, LEVEL_MAIN }
+	{ "keywords",     "KEYWORD",   KEYWORD, LEVEL_MAIN },
+	{ "",         "INTERNAL_TYPE|REPORT", ALWAYS, LEVEL_MAIN },
+	{ "",         "RESOURCE|text",        ALWAYS, LEVEL_MAIN },
+	{ "",         "GENRE|instruction",    ALWAYS, LEVEL_MAIN }
 };
 
 /* Part of a book (e.g. chapter or section) */
@@ -184,7 +185,7 @@ static lookups inbook[] = {
 	{ "author",    "AUTHOR",    PERSON, LEVEL_MAIN },
 	{ "translator",   "TRANSLATOR",PERSON, LEVEL_MAIN },
 	{ "editor",    "EDITOR",    PERSON, LEVEL_HOST },
-	{ "chapter",   "TITLE",     TITLE,  LEVEL_MAIN },
+	{ "chapter",   "CHAPTER",   SIMPLE, LEVEL_MAIN },
 	{ "title",     "TITLE",     TITLE,  LEVEL_HOST },
 	{ "booktitle", "TITLE",     TITLE,  LEVEL_HOST },
 	{ "series",    "TITLE",     TITLE,  LEVEL_SERIES },
@@ -204,23 +205,24 @@ static lookups inbook[] = {
 	{ "language",     "LANGUAGE",     SIMPLE, LEVEL_MAIN },
 	{ "location",     "LOCATION",     SIMPLE, LEVEL_HOST },
 	{ "doi",       "DOI",       SIMPLE, LEVEL_MAIN },
-	{ "ftp",       "",       BIBTEX_URL, LEVEL_MAIN },
-	{ "url",       "",       BIBTEX_URL, LEVEL_MAIN },
+	{ "ftp",       "",       BT_URL, LEVEL_MAIN },
+	{ "url",       "",       BT_URL, LEVEL_MAIN },
 	{ "pdf",          "FILEATTACH",SIMPLE, LEVEL_MAIN },
-	{ "sentelink",    "FILEATTACH",BIBTEX_SENTE, LEVEL_MAIN },
-	{ "file",         "FILEATTACH",BIBTEX_FILE,  LEVEL_MAIN },
+	{ "sentelink",    "FILEATTACH",BT_SENTE, LEVEL_MAIN },
+	{ "file",         "FILEATTACH",LINKEDFILE,   LEVEL_MAIN },
 	{ "howpublished", "",    HOWPUBLISHED, LEVEL_MAIN },
 	{ "refnum",    "REFNUM",    SIMPLE, LEVEL_MAIN },
 	{ "crossref",     "CROSSREF",  SIMPLE, LEVEL_MAIN },
 	{ "type",      "GENRE",      SIMPLE, LEVEL_MAIN },
-	{ "note",         "NOTES",        SIMPLE, LEVEL_MAIN },
+	{ "note",         "NOTES",        BT_NOTE, LEVEL_MAIN },
 	{ "annote",       "ANNOTE",    SIMPLE, LEVEL_MAIN },
 	{ "key",          "BIBKEY",          SIMPLE, LEVEL_MAIN },
-	{ "keywords",     "KEYWORD",   SIMPLE, LEVEL_MAIN },
-	{ " ",         "INTERNAL_TYPE|INBOOK",   ALWAYS, LEVEL_MAIN },
-	{ " ",         "RESOURCE|text", ALWAYS, LEVEL_MAIN },
-	{ " ",         "ISSUANCE|monographic", ALWAYS, LEVEL_HOST },
-	{ " ",         "GENRE|book",    ALWAYS, LEVEL_HOST }
+	{ "keywords",     "KEYWORD",   KEYWORD, LEVEL_MAIN },
+	{ "",         "INTERNAL_TYPE|INBOOK", ALWAYS, LEVEL_MAIN },
+	{ "",         "RESOURCE|text",        ALWAYS, LEVEL_MAIN },
+	{ "",         "ISSUANCE|monographic", ALWAYS, LEVEL_HOST },
+	{ "",         "NGENRE|book chapter",  ALWAYS, LEVEL_MAIN },
+	{ "",         "GENRE|book",           ALWAYS, LEVEL_HOST }
 };
 
 /* References of papers in conference proceedings */
@@ -232,8 +234,9 @@ static lookups inproceedings[] = {
 	{ "title",     "TITLE",     TITLE,  LEVEL_MAIN },
 	{ "booktitle", "TITLE",     TITLE,  LEVEL_HOST },
 	{ "series",    "TITLE",     TITLE,  LEVEL_SERIES },
+	{ "chapter",   "CHAPTER",   SIMPLE, LEVEL_MAIN },
 	{ "publisher", "PUBLISHER", SIMPLE, LEVEL_HOST },
-	{ "organization", "AUTHOR:CORP", SIMPLE, LEVEL_HOST },
+	{ "organization", "ORGANIZER:CORP", BT_ORG, LEVEL_HOST },
 	{ "address",   "ADDRESS",   SIMPLE, LEVEL_HOST },
 	{ "year",      "PARTYEAR",  SIMPLE, LEVEL_MAIN },
 	{ "month",     "PARTMONTH", SIMPLE, LEVEL_MAIN },
@@ -249,22 +252,22 @@ static lookups inproceedings[] = {
 	{ "paper",     "PAPER",     SIMPLE, LEVEL_MAIN },
 	{ "location",     "LOCATION",     SIMPLE, LEVEL_HOST },
 	{ "doi",       "DOI",       SIMPLE, LEVEL_MAIN },
-	{ "ftp",       "",       BIBTEX_URL, LEVEL_MAIN },
-	{ "url",       "",       BIBTEX_URL, LEVEL_MAIN },
+	{ "ftp",       "",       BT_URL, LEVEL_MAIN },
+	{ "url",       "",       BT_URL, LEVEL_MAIN },
 	{ "pdf",          "FILEATTACH",SIMPLE, LEVEL_MAIN },
-	{ "sentelink",    "FILEATTACH",BIBTEX_SENTE, LEVEL_MAIN },
-	{ "file",         "FILEATTACH",BIBTEX_FILE,  LEVEL_MAIN },
+	{ "sentelink",    "FILEATTACH",BT_SENTE, LEVEL_MAIN },
+	{ "file",         "FILEATTACH",LINKEDFILE,   LEVEL_MAIN },
 	{ "type",      "GENRE",      SIMPLE, LEVEL_MAIN },
-	{ "note",         "NOTES",        SIMPLE, LEVEL_MAIN },
+	{ "note",         "NOTES",        BT_NOTE, LEVEL_MAIN },
 	{ "annote",       "ANNOTE",    SIMPLE, LEVEL_MAIN },
 	{ "key",          "BIBKEY",          SIMPLE, LEVEL_MAIN },
 	{ "howpublished", "",    HOWPUBLISHED, LEVEL_MAIN },
 	{ "refnum",    "REFNUM",    SIMPLE, LEVEL_MAIN },
 	{ "crossref",     "CROSSREF",  SIMPLE, LEVEL_MAIN },
-	{ "keywords",     "KEYWORD",   SIMPLE, LEVEL_MAIN },
-	{ " ",         "INTERNAL_TYPE|INPROCEEDINGS",  ALWAYS, LEVEL_MAIN },
-	{ " ",         "RESOURCE|text",       ALWAYS, LEVEL_MAIN },
-	{ " ",         "GENRE|conference publication",   ALWAYS, LEVEL_HOST }
+	{ "keywords",     "KEYWORD",   KEYWORD, LEVEL_MAIN },
+	{ "",         "INTERNAL_TYPE|INPROCEEDINGS",  ALWAYS, LEVEL_MAIN },
+	{ "",         "RESOURCE|text",                ALWAYS, LEVEL_MAIN },
+	{ "",         "GENRE|conference publication", ALWAYS, LEVEL_HOST }
 };
 
 /* Used for a section of a book with its own title */
@@ -274,7 +277,7 @@ static lookups incollection[] = {
 	{ "translator",   "TRANSLATOR",PERSON, LEVEL_MAIN },
 	{ "editor",    "EDITOR",    PERSON, LEVEL_HOST },
 	{ "title",     "TITLE",     TITLE,  LEVEL_MAIN },
-	{ "chapter",   "TITLE",     TITLE,  LEVEL_MAIN },
+	{ "chapter",   "CHAPTER",   SIMPLE, LEVEL_MAIN },
 	{ "booktitle", "TITLE",     TITLE,  LEVEL_HOST },
 	{ "series",    "TITLE",     TITLE,  LEVEL_SERIES },
 	{ "publisher", "PUBLISHER", SIMPLE, LEVEL_HOST },
@@ -292,24 +295,24 @@ static lookups incollection[] = {
 	{ "contents",  "CONTENTS",  SIMPLE, LEVEL_HOST },
 	{ "language",     "LANGUAGE",     SIMPLE, LEVEL_MAIN },
 	{ "type",      "GENRE",      SIMPLE, LEVEL_MAIN },
-	{ "note",         "NOTES",        SIMPLE, LEVEL_MAIN },
+	{ "note",         "NOTES",        BT_NOTE, LEVEL_MAIN },
 	{ "annote",       "ANNOTE",    SIMPLE, LEVEL_MAIN },
 	{ "key",          "BIBKEY",          SIMPLE, LEVEL_MAIN },
 	{ "doi",       "DOI",       SIMPLE, LEVEL_MAIN },
-	{ "ftp",       "",       BIBTEX_URL, LEVEL_MAIN },
-	{ "url",       "",       BIBTEX_URL, LEVEL_MAIN },
+	{ "ftp",       "",       BT_URL, LEVEL_MAIN },
+	{ "url",       "",       BT_URL, LEVEL_MAIN },
 	{ "pdf",          "FILEATTACH",SIMPLE, LEVEL_MAIN },
-	{ "sentelink",    "FILEATTACH",BIBTEX_SENTE, LEVEL_MAIN },
-	{ "file",         "FILEATTACH",BIBTEX_FILE,  LEVEL_MAIN },
+	{ "sentelink",    "FILEATTACH",BT_SENTE, LEVEL_MAIN },
+	{ "file",         "FILEATTACH",LINKEDFILE,   LEVEL_MAIN },
 	{ "location",     "LOCATION",     SIMPLE, LEVEL_HOST },
 	{ "howpublished", "",    HOWPUBLISHED, LEVEL_MAIN },
 	{ "refnum",    "REFNUM",    SIMPLE, LEVEL_MAIN },
 	{ "crossref",     "CROSSREF",  SIMPLE, LEVEL_MAIN },
-	{ "keywords",     "KEYWORD",   SIMPLE, LEVEL_MAIN },
-	{ " ",         "INTERNAL_TYPE|INCOLLECTION",   ALWAYS, LEVEL_MAIN },
-	{ " ",         "RESOURCE|text", ALWAYS, LEVEL_MAIN },
-	{ " ",         "ISSUANCE|monographic", ALWAYS, LEVEL_MAIN },
-	{ " ",         "GENRE|collection",    ALWAYS, LEVEL_HOST }
+	{ "keywords",     "KEYWORD",   KEYWORD, LEVEL_MAIN },
+	{ "",         "INTERNAL_TYPE|INCOLLECTION", ALWAYS, LEVEL_MAIN },
+	{ "",         "RESOURCE|text",              ALWAYS, LEVEL_MAIN },
+	{ "",         "ISSUANCE|monographic",       ALWAYS, LEVEL_MAIN },
+	{ "",         "GENRE|collection",           ALWAYS, LEVEL_HOST }
 };
 
 /* Proceedings */
@@ -322,7 +325,7 @@ static lookups proceedings[] = {
 	{ "booktitle", "TITLE",     TITLE,  LEVEL_MAIN },
 	{ "series",    "TITLE",     TITLE,  LEVEL_HOST },
 	{ "publisher", "PUBLISHER", SIMPLE, LEVEL_MAIN },
-	{ "organization", "AUTHOR:CORP", SIMPLE, LEVEL_MAIN },
+	{ "organization", "ORGANIZER:CORP", BT_ORG, LEVEL_MAIN },
 	{ "address",   "ADDRESS",   SIMPLE, LEVEL_MAIN },
 	{ "year",      "YEAR",      SIMPLE, LEVEL_MAIN },
 	{ "month",     "MONTH",     SIMPLE, LEVEL_MAIN },
@@ -335,23 +338,23 @@ static lookups proceedings[] = {
 	{ "abstract",  "ABSTRACT",  SIMPLE, LEVEL_MAIN },
 	{ "contents",  "CONTENTS",  SIMPLE, LEVEL_MAIN },
 	{ "doi",       "DOI",       SIMPLE, LEVEL_MAIN },
-	{ "ftp",       "",       BIBTEX_URL, LEVEL_MAIN },
-	{ "url",       "",       BIBTEX_URL, LEVEL_MAIN },
+	{ "ftp",       "",       BT_URL, LEVEL_MAIN },
+	{ "url",       "",       BT_URL, LEVEL_MAIN },
 	{ "pdf",          "FILEATTACH",SIMPLE, LEVEL_MAIN },
-	{ "sentelink",    "FILEATTACH",BIBTEX_SENTE, LEVEL_MAIN },
-	{ "file",         "FILEATTACH",BIBTEX_FILE,  LEVEL_MAIN },
+	{ "sentelink",    "FILEATTACH",BT_SENTE, LEVEL_MAIN },
+	{ "file",         "FILEATTACH",LINKEDFILE,   LEVEL_MAIN },
 	{ "language",     "LANGUAGE",     SIMPLE, LEVEL_MAIN },
 	{ "howpublished", "",    HOWPUBLISHED, LEVEL_MAIN },
 	{ "location",     "LOCATION",     SIMPLE, LEVEL_MAIN },
-	{ "note",         "NOTES",        SIMPLE, LEVEL_MAIN },
+	{ "note",         "NOTES",        BT_NOTE, LEVEL_MAIN },
 	{ "annote",       "ANNOTE",    SIMPLE, LEVEL_MAIN },
 	{ "key",          "BIBKEY",          SIMPLE, LEVEL_MAIN },
 	{ "refnum",    "REFNUM",    SIMPLE, LEVEL_MAIN },
 	{ "crossref",     "CROSSREF",  SIMPLE, LEVEL_MAIN },
-	{ "keywords",     "KEYWORD",   SIMPLE, LEVEL_MAIN },
-	{ " ",         "INTERNAL_TYPE|PROCEEDINGS",    ALWAYS, LEVEL_MAIN },
-	{ " ",         "RESOURCE|text",       ALWAYS, LEVEL_MAIN },
-	{ " ",         "GENRE|conference publication",   ALWAYS, LEVEL_MAIN }
+	{ "keywords",     "KEYWORD",   KEYWORD, LEVEL_MAIN },
+	{ "",         "INTERNAL_TYPE|PROCEEDINGS",    ALWAYS, LEVEL_MAIN },
+	{ "",         "RESOURCE|text",                ALWAYS, LEVEL_MAIN },
+	{ "",         "GENRE|conference publication", ALWAYS, LEVEL_MAIN }
 };
 
 static lookups phds[] = {
@@ -366,25 +369,25 @@ static lookups phds[] = {
 	{ "abstract",  "ABSTRACT",  SIMPLE, LEVEL_MAIN },
 	{ "contents",  "CONTENTS",  SIMPLE, LEVEL_MAIN },
 	{ "doi",       "DOI",       SIMPLE, LEVEL_MAIN },
-	{ "ftp",       "",       BIBTEX_URL, LEVEL_MAIN },
-	{ "url",       "",       BIBTEX_URL, LEVEL_MAIN },
+	{ "ftp",       "",       BT_URL, LEVEL_MAIN },
+	{ "url",       "",       BT_URL, LEVEL_MAIN },
 	{ "pdf",          "FILEATTACH",SIMPLE, LEVEL_MAIN },
-	{ "sentelink",    "FILEATTACH",BIBTEX_SENTE, LEVEL_MAIN },
-	{ "file",         "FILEATTACH",BIBTEX_FILE,  LEVEL_MAIN },
+	{ "sentelink",    "FILEATTACH",BT_SENTE, LEVEL_MAIN },
+	{ "file",         "FILEATTACH",LINKEDFILE,   LEVEL_MAIN },
 	{ "howpublished", "" ,   HOWPUBLISHED, LEVEL_MAIN },
 	{ "language",     "LANGUAGE",     SIMPLE, LEVEL_MAIN },
 	{ "location",     "LOCATION",     SIMPLE, LEVEL_MAIN },
-	{ "note",         "NOTES",        SIMPLE, LEVEL_MAIN },
+	{ "note",         "NOTES",        BT_NOTE, LEVEL_MAIN },
 	{ "annote",       "ANNOTE",    SIMPLE, LEVEL_MAIN },
 	{ "key",          "BIBKEY",          SIMPLE, LEVEL_MAIN },
 	{ "type",         "GENRE",         SIMPLE, LEVEL_MAIN },
 	{ "refnum",    "REFNUM",    SIMPLE, LEVEL_MAIN },
 	{ "crossref",     "CROSSREF",  SIMPLE, LEVEL_MAIN },
-	{ "keywords",     "KEYWORD",   SIMPLE, LEVEL_MAIN },
-	{ " ",         "INTERNAL_TYPE|THESIS",   ALWAYS, LEVEL_MAIN },
-	{ " ",         "RESOURCE|text", ALWAYS, LEVEL_MAIN },
-	{ " ",         "GENRE|thesis",  ALWAYS, LEVEL_MAIN },
-	{ " ",         "GENRE|Ph.D. thesis",  ALWAYS, LEVEL_MAIN }
+	{ "keywords",     "KEYWORD",   KEYWORD, LEVEL_MAIN },
+	{ "",         "INTERNAL_TYPE|THESIS", ALWAYS,  LEVEL_MAIN },
+	{ "",         "RESOURCE|text",        ALWAYS,  LEVEL_MAIN },
+	{ "",         "GENRE|thesis",         ALWAYS,  LEVEL_MAIN },
+	{ "",         "NGENRE|Ph.D. thesis",  DEFAULT, LEVEL_MAIN }
 };
 
 static lookups masters[] = {
@@ -399,25 +402,25 @@ static lookups masters[] = {
 	{ "abstract",  "ABSTRACT",  SIMPLE, LEVEL_MAIN },
 	{ "contents",  "CONTENTS",  SIMPLE, LEVEL_MAIN },
 	{ "doi",       "DOI",       SIMPLE, LEVEL_MAIN },
-	{ "ftp",       "",       BIBTEX_URL, LEVEL_MAIN },
-	{ "url",       "",       BIBTEX_URL, LEVEL_MAIN },
+	{ "ftp",       "",       BT_URL, LEVEL_MAIN },
+	{ "url",       "",       BT_URL, LEVEL_MAIN },
 	{ "pdf",          "FILEATTACH",SIMPLE, LEVEL_MAIN },
-	{ "sentelink",    "FILEATTACH",BIBTEX_SENTE, LEVEL_MAIN },
-	{ "file",         "FILEATTACH",BIBTEX_FILE,  LEVEL_MAIN },
+	{ "sentelink",    "FILEATTACH",BT_SENTE, LEVEL_MAIN },
+	{ "file",         "FILEATTACH",LINKEDFILE,   LEVEL_MAIN },
 	{ "language",     "LANGUAGE",     SIMPLE, LEVEL_MAIN },
 	{ "location",     "LOCATION",     SIMPLE, LEVEL_MAIN },
-	{ "note",         "NOTES",        SIMPLE, LEVEL_MAIN },
+	{ "note",         "NOTES",        BT_NOTE, LEVEL_MAIN },
 	{ "annote",       "ANNOTE",    SIMPLE, LEVEL_MAIN },
 	{ "key",          "BIBKEY",          SIMPLE, LEVEL_MAIN },
 	{ "type",         "GENRE",         SIMPLE, LEVEL_MAIN },
 	{ "howpublished", "",    HOWPUBLISHED, LEVEL_MAIN },
 	{ "refnum",    "REFNUM",    SIMPLE, LEVEL_MAIN },
 	{ "crossref",     "CROSSREF",  SIMPLE, LEVEL_MAIN },
-	{ "keywords",     "KEYWORD",   SIMPLE, LEVEL_MAIN },
-	{ " ",         "INTERNAL_TYPE|THESIS",   ALWAYS, LEVEL_MAIN },
-	{ " ",         "RESOURCE|text", ALWAYS, LEVEL_MAIN },
-	{ " ",         "GENRE|thesis",  ALWAYS, LEVEL_MAIN },
-	{ " ",         "GENRE|Masters thesis",  ALWAYS, LEVEL_MAIN }
+	{ "keywords",     "KEYWORD",   KEYWORD, LEVEL_MAIN },
+	{ "",         "INTERNAL_TYPE|THESIS",  ALWAYS,  LEVEL_MAIN },
+	{ "",         "RESOURCE|text",         ALWAYS,  LEVEL_MAIN },
+	{ "",         "GENRE|thesis",          ALWAYS,  LEVEL_MAIN },
+	{ "",         "NGENRE|Masters thesis", DEFAULT, LEVEL_MAIN }
 };
 
 /* Unpublished */
@@ -436,23 +439,23 @@ static lookups unpublished[] = {
 	{ "abstract",  "ABSTRACT",  SIMPLE, LEVEL_MAIN },
 	{ "contents",  "CONTENTS",  SIMPLE, LEVEL_MAIN },
 	{ "doi",       "DOI",       SIMPLE, LEVEL_MAIN },
-	{ "ftp",       "",       BIBTEX_URL, LEVEL_MAIN },
-	{ "url",       "",       BIBTEX_URL, LEVEL_MAIN },
+	{ "ftp",       "",       BT_URL, LEVEL_MAIN },
+	{ "url",       "",       BT_URL, LEVEL_MAIN },
 	{ "pdf",          "FILEATTACH",SIMPLE, LEVEL_MAIN },
-	{ "sentelink",    "FILEATTACH",BIBTEX_SENTE, LEVEL_MAIN },
-	{ "file",         "FILEATTACH",BIBTEX_FILE,  LEVEL_MAIN },
+	{ "sentelink",    "FILEATTACH",BT_SENTE, LEVEL_MAIN },
+	{ "file",         "FILEATTACH",LINKEDFILE,   LEVEL_MAIN },
 	{ "language",     "LANGUAGE",     SIMPLE, LEVEL_MAIN },
 	{ "howpublished", "",    HOWPUBLISHED, LEVEL_MAIN },
 	{ "location",     "LOCATION",     SIMPLE, LEVEL_MAIN },
-	{ "note",         "NOTES",        SIMPLE, LEVEL_MAIN },
+	{ "note",         "NOTES",        BT_NOTE, LEVEL_MAIN },
 	{ "annote",       "ANNOTE",    SIMPLE, LEVEL_MAIN },
 	{ "key",          "BIBKEY",          SIMPLE, LEVEL_MAIN },
 	{ "refnum",    "REFNUM",    SIMPLE, LEVEL_MAIN },
 	{ "crossref",     "CROSSREF",  SIMPLE, LEVEL_MAIN },
-	{ "keywords",     "KEYWORD",   SIMPLE, LEVEL_MAIN },
-	{ " ",         "INTERNAL_TYPE|BOOK",       ALWAYS, LEVEL_MAIN },
-	{ " ",         "RESOURCE|text",   ALWAYS, LEVEL_MAIN },
-	{ " ",         "GENRE|unpublished",      ALWAYS, LEVEL_MAIN }
+	{ "keywords",     "KEYWORD",   KEYWORD, LEVEL_MAIN },
+	{ "",         "INTERNAL_TYPE|BOOK", ALWAYS, LEVEL_MAIN },
+	{ "",         "RESOURCE|text",      ALWAYS, LEVEL_MAIN },
+	{ "",         "GENRE|unpublished",  ALWAYS, LEVEL_MAIN }
 };
 
 /*
@@ -461,7 +464,7 @@ static lookups unpublished[] = {
 static lookups standard[] = {
 	{ "author",    "AUTHOR",    PERSON, LEVEL_MAIN },
 	{ "translator",   "TRANSLATOR",PERSON, LEVEL_MAIN },
-	{ "organization", "AUTHOR:CORP", SIMPLE, LEVEL_MAIN },
+	{ "organization", "ORGANIZER:CORP", BT_ORG, LEVEL_MAIN },
 	{ "institution", "AUTHOR:CORP", SIMPLE, LEVEL_MAIN },
 	{ "title",     "TITLE",     TITLE,  LEVEL_MAIN },
 	{ "booktitle", "TITLE",     TITLE,  LEVEL_MAIN },
@@ -476,11 +479,11 @@ static lookups standard[] = {
 	{ "abstract",  "ABSTRACT",  SIMPLE, LEVEL_MAIN },
 	{ "contents",  "CONTENTS",  SIMPLE, LEVEL_MAIN },
 	{ "doi",       "DOI",       SIMPLE, LEVEL_MAIN },
-	{ "ftp",       "",      BIBTEX_URL, LEVEL_MAIN },
-	{ "url",       "",      BIBTEX_URL, LEVEL_MAIN },
+	{ "ftp",       "",      BT_URL, LEVEL_MAIN },
+	{ "url",       "",      BT_URL, LEVEL_MAIN },
 	{ "pdf",          "FILEATTACH",SIMPLE, LEVEL_MAIN },
-	{ "sentelink",    "FILEATTACH",BIBTEX_SENTE, LEVEL_MAIN },
-	{ "file",         "FILEATTACH",BIBTEX_FILE,  LEVEL_MAIN },
+	{ "sentelink",    "FILEATTACH",BT_SENTE, LEVEL_MAIN },
+	{ "file",         "FILEATTACH",LINKEDFILE,   LEVEL_MAIN },
 	{ "howpublished", "",    HOWPUBLISHED, LEVEL_MAIN },
 	{ "language",     "LANGUAGE",     SIMPLE, LEVEL_MAIN },
 	{ "refnum",    "REFNUM",    SIMPLE, LEVEL_MAIN },
@@ -488,13 +491,13 @@ static lookups standard[] = {
 	{ "number",    "NUMBER",      TITLE,  LEVEL_MAIN },
 	{ "revision",  "REVISION",    TITLE,  LEVEL_MAIN },
 	{ "location",     "LOCATION",     SIMPLE, LEVEL_MAIN },
-	{ "note",         "NOTES",        SIMPLE, LEVEL_MAIN },
+	{ "note",         "NOTES",        BT_NOTE, LEVEL_MAIN },
 	{ "annote",       "ANNOTE",    SIMPLE, LEVEL_MAIN },
 	{ "key",          "BIBKEY",          SIMPLE, LEVEL_MAIN },
-	{ "keywords",     "KEYWORD",   SIMPLE, LEVEL_MAIN },
+	{ "keywords",     "KEYWORD",   KEYWORD, LEVEL_MAIN },
 	{ "crossref",     "CROSSREF",  SIMPLE, LEVEL_MAIN },
-	{ " ",         "RESOURCE|text",   ALWAYS, LEVEL_MAIN },
-	{ " ",         "INTERNAL_TYPE|STANDARD",    ALWAYS, LEVEL_MAIN }
+	{ "",         "RESOURCE|text",          ALWAYS, LEVEL_MAIN },
+	{ "",         "INTERNAL_TYPE|STANDARD", ALWAYS, LEVEL_MAIN }
 };
 
 /*
@@ -516,21 +519,21 @@ static lookups periodical[] = {
 	{ "number",       "NUMBER",      TITLE,  LEVEL_MAIN },
 	{ "contents",     "CONTENTS",    SIMPLE, LEVEL_MAIN },
 	{ "doi",          "DOI",         SIMPLE, LEVEL_MAIN },
-	{ "ftp",          "",        BIBTEX_URL, LEVEL_MAIN },
-	{ "url",          "",        BIBTEX_URL, LEVEL_MAIN },
+	{ "ftp",          "",        BT_URL, LEVEL_MAIN },
+	{ "url",          "",        BT_URL, LEVEL_MAIN },
 	{ "pdf",          "FILEATTACH",SIMPLE, LEVEL_MAIN },
-	{ "sentelink",    "FILEATTACH",BIBTEX_SENTE, LEVEL_MAIN },
-	{ "file",         "FILEATTACH",BIBTEX_FILE,  LEVEL_MAIN },
+	{ "sentelink",    "FILEATTACH",BT_SENTE, LEVEL_MAIN },
+	{ "file",         "FILEATTACH",LINKEDFILE,   LEVEL_MAIN },
 	{ "howpublished", "",         HOWPUBLISHED, LEVEL_MAIN },
 	{ "refnum",       "REFNUM",      SIMPLE, LEVEL_MAIN },
 	{ "language",     "LANGUAGE",    SIMPLE, LEVEL_MAIN },
-	{ "note",         "NOTES",       SIMPLE, LEVEL_MAIN },
+	{ "note",         "NOTES",       BT_NOTE, LEVEL_MAIN },
 	{ "annote",       "ANNOTE",    SIMPLE, LEVEL_MAIN },
-	{ "organization", "AUTHOR:CORP", SIMPLE, LEVEL_MAIN },
+	{ "organization", "ORGANIZER:CORP", BT_ORG, LEVEL_MAIN },
 	{ "crossref",     "CROSSREF",  SIMPLE, LEVEL_MAIN },
-	{ "keywords",     "KEYWORD",   SIMPLE, LEVEL_MAIN },
-	{ " ",            "RESOURCE|text",   ALWAYS, LEVEL_MAIN },
-	{ " ",            "GENRE|periodical",ALWAYS, LEVEL_MAIN }
+	{ "keywords",     "KEYWORD",   KEYWORD, LEVEL_MAIN },
+	{ "",            "RESOURCE|text",    ALWAYS, LEVEL_MAIN },
+	{ "",            "GENRE|periodical", ALWAYS, LEVEL_MAIN }
 };
 
 /*
@@ -555,23 +558,23 @@ static lookups patent[] = {
 	{ "language",  "LANGUAGE",  SIMPLE, LEVEL_MAIN },
 	{ "location",  "LOCATION",  SIMPLE, LEVEL_MAIN },
 	{ "nationality", "NATIONALITY", SIMPLE, LEVEL_MAIN },
-	{ "note",      "NOTES",     SIMPLE, LEVEL_MAIN },
+	{ "note",      "NOTES",     BT_NOTE, LEVEL_MAIN },
 	{ "annote",       "ANNOTE",    SIMPLE, LEVEL_MAIN },
 	{ "key",       "BIBKEY",       SIMPLE, LEVEL_MAIN },
 	{ "doi",       "DOI",       SIMPLE, LEVEL_MAIN },
-	{ "ftp",       "",      BIBTEX_URL, LEVEL_MAIN },
-	{ "url",       "",      BIBTEX_URL, LEVEL_MAIN },
+	{ "ftp",       "",      BT_URL, LEVEL_MAIN },
+	{ "url",       "",      BT_URL, LEVEL_MAIN },
 	{ "pdf",          "FILEATTACH",SIMPLE, LEVEL_MAIN },
-	{ "sentelink",    "FILEATTACH",BIBTEX_SENTE, LEVEL_MAIN },
-	{ "file",         "FILEATTACH",BIBTEX_FILE,  LEVEL_MAIN },
+	{ "sentelink",    "FILEATTACH",BT_SENTE, LEVEL_MAIN },
+	{ "file",         "FILEATTACH",LINKEDFILE,   LEVEL_MAIN },
 	{ "howpublished", "",    HOWPUBLISHED, LEVEL_MAIN },
 	{ "type",       "GENRE",     SIMPLE, LEVEL_MAIN },
 	{ "refnum",    "REFNUM",    SIMPLE, LEVEL_MAIN },
 	{ "crossref",     "CROSSREF",  SIMPLE, LEVEL_MAIN },
-	{ "keywords",     "KEYWORD",   SIMPLE, LEVEL_MAIN },
-	{ " ",         "RESOURCE|text",   ALWAYS, LEVEL_MAIN },
-	{ " ",         "INTERNAL_TYPE|PATENT",    ALWAYS, LEVEL_MAIN },
-	{ " ",         "GENRE|patent",    ALWAYS, LEVEL_MAIN },
+	{ "keywords",     "KEYWORD",   KEYWORD, LEVEL_MAIN },
+	{ "",         "RESOURCE|text",        ALWAYS, LEVEL_MAIN },
+	{ "",         "INTERNAL_TYPE|PATENT", ALWAYS, LEVEL_MAIN },
+	{ "",         "GENRE|patent",         ALWAYS, LEVEL_MAIN },
 };
 
 /*
@@ -580,7 +583,7 @@ static lookups patent[] = {
 static lookups electronic[] = {
 	{ "author",    "AUTHOR",    PERSON, LEVEL_MAIN },
 	{ "translator",   "TRANSLATOR",PERSON, LEVEL_MAIN },
-	{ "organization", "AUTHOR:CORP", SIMPLE, LEVEL_MAIN },
+	{ "organization", "ORGANIZER:CORP", BT_ORG, LEVEL_MAIN },
 	{ "title",     "TITLE",     TITLE,  LEVEL_MAIN },
 	{ "booktitle", "TITLE",     TITLE,  LEVEL_MAIN },
 	{ "publisher", "PUBLISHER", SIMPLE, LEVEL_MAIN },
@@ -593,22 +596,22 @@ static lookups electronic[] = {
 	{ "volume",    "VOLUME",    SIMPLE, LEVEL_MAIN },
 	{ "contents",  "CONTENTS",  SIMPLE, LEVEL_MAIN },
 	{ "doi",       "DOI",       SIMPLE, LEVEL_MAIN },
-	{ "ftp",       "",      BIBTEX_URL, LEVEL_MAIN },
-	{ "url",       "",      BIBTEX_URL, LEVEL_MAIN },
+	{ "ftp",       "",      BT_URL, LEVEL_MAIN },
+	{ "url",       "",      BT_URL, LEVEL_MAIN },
 	{ "pdf",          "FILEATTACH",SIMPLE, LEVEL_MAIN },
-	{ "sentelink",    "FILEATTACH",BIBTEX_SENTE, LEVEL_MAIN },
-	{ "file",         "FILEATTACH",BIBTEX_FILE,  LEVEL_MAIN },
+	{ "sentelink",    "FILEATTACH",BT_SENTE, LEVEL_MAIN },
+	{ "file",         "FILEATTACH",LINKEDFILE,   LEVEL_MAIN },
 	{ "howpublished", "",    HOWPUBLISHED, LEVEL_MAIN },
 	{ "refnum",    "REFNUM",    SIMPLE, LEVEL_MAIN },
 	{ "crossref",     "CROSSREF",  SIMPLE, LEVEL_MAIN },
 	{ "location",  "LOCATION",  SIMPLE, LEVEL_MAIN },
-	{ "note",      "NOTES",     SIMPLE, LEVEL_MAIN },
+	{ "note",      "NOTES",     BT_NOTE, LEVEL_MAIN },
 	{ "annote",       "ANNOTE",    SIMPLE, LEVEL_MAIN },
 	{ "key",       "BIBKEY",       SIMPLE, LEVEL_MAIN },
 	{ "language",  "LANGUAGE",  SIMPLE, LEVEL_MAIN },
-	{ "keywords",     "KEYWORD",   SIMPLE, LEVEL_MAIN },
-        { " ",  "RESOURCE|software, multimedia",    ALWAYS, LEVEL_MAIN },
-	{ " ",         "GENRE|electronic",       ALWAYS, LEVEL_MAIN },
+	{ "keywords",     "KEYWORD",   KEYWORD, LEVEL_MAIN },
+        { "",         "RESOURCE|software, multimedia", ALWAYS, LEVEL_MAIN },
+	{ "",         "GENRE|electronic",              ALWAYS, LEVEL_MAIN },
 };
 
 static lookups misc[] = {
@@ -617,7 +620,7 @@ static lookups misc[] = {
 	{ "title",     "TITLE",     TITLE,  LEVEL_MAIN },
 	{ "booktitle", "TITLE",     TITLE,  LEVEL_MAIN },
 	{ "publisher", "PUBLISHER", SIMPLE, LEVEL_MAIN },
-	{ "organization", "AUTHOR:CORP", SIMPLE, LEVEL_MAIN },
+	{ "organization", "ORGANIZER:CORP", BT_ORG, LEVEL_MAIN },
 	{ "pages",     "PAGES",     PAGES,  LEVEL_MAIN },
 	{ "address",   "ADDRESS",   SIMPLE, LEVEL_MAIN },
 	{ "editor",    "EDITOR",    PERSON, LEVEL_MAIN },
@@ -627,21 +630,21 @@ static lookups misc[] = {
 	{ "abstract",  "ABSTRACT",  SIMPLE, LEVEL_MAIN },
 	{ "contents",  "CONTENTS",  SIMPLE, LEVEL_MAIN },
 	{ "doi",       "DOI",       SIMPLE, LEVEL_MAIN },
-	{ "ftp",       "",      BIBTEX_URL, LEVEL_MAIN },
-	{ "url",       "",      BIBTEX_URL, LEVEL_MAIN },
-	{ "pdf",          "FILEATTACH",SIMPLE, LEVEL_MAIN },
-	{ "sentelink",    "FILEATTACH",BIBTEX_SENTE, LEVEL_MAIN },
-	{ "file",         "FILEATTACH",BIBTEX_FILE,  LEVEL_MAIN },
+	{ "ftp",       "",      BT_URL, LEVEL_MAIN },
+	{ "url",       "",      BT_URL, LEVEL_MAIN },
+	{ "pdf",       "FILEATTACH",   SIMPLE, LEVEL_MAIN },
+	{ "sentelink", "FILEATTACH",BT_SENTE, LEVEL_MAIN },
+	{ "file",      "FILEATTACH",LINKEDFILE,   LEVEL_MAIN },
 	{ "howpublished", "",    HOWPUBLISHED, LEVEL_MAIN },
-	{ "refnum",    "REFNUM",    SIMPLE, LEVEL_MAIN },
-	{ "crossref",     "CROSSREF",  SIMPLE, LEVEL_MAIN },
-	{ "location",  "LOCATION",  SIMPLE, LEVEL_MAIN },
-	{ "note",      "NOTES",     SIMPLE, LEVEL_MAIN },
-	{ "annote",       "ANNOTE",    SIMPLE, LEVEL_MAIN },
+	{ "refnum",    "REFNUM",       SIMPLE, LEVEL_MAIN },
+	{ "crossref",  "CROSSREF",     SIMPLE, LEVEL_MAIN },
+	{ "location",  "LOCATION",     SIMPLE, LEVEL_MAIN },
+	{ "note",      "NOTES",        BT_NOTE, LEVEL_MAIN },
+	{ "annote",    "ANNOTE",       SIMPLE, LEVEL_MAIN },
 	{ "key",       "BIBKEY",       SIMPLE, LEVEL_MAIN },
-	{ "language",  "LANGUAGE",  SIMPLE, LEVEL_MAIN },
-	{ "keywords",  "KEYWORD",   SIMPLE, LEVEL_MAIN },
-	{ " ",         "INTERNAL_TYPE|MISC",       ALWAYS, LEVEL_MAIN },
+	{ "language",  "LANGUAGE",     SIMPLE, LEVEL_MAIN },
+	{ "keywords",  "KEYWORD",      KEYWORD, LEVEL_MAIN },
+	{ "",          "INTERNAL_TYPE|MISC",       ALWAYS, LEVEL_MAIN },
 };
 
 #define ORIG(a) ( &(a[0]) )
@@ -656,6 +659,7 @@ variants bibtex_all[] = {
 	REFTYPE( "inbook", inbook ),
 	REFTYPE( "incollection", incollection ),
 	REFTYPE( "inconference", inproceedings ),
+	REFTYPE( "conference", inproceedings ),
 	REFTYPE( "inproceedings", inproceedings ),
 	REFTYPE( "manual", manual ),
 	REFTYPE( "mastersthesis", masters ),
diff --git a/lib/bibutils.c b/lib/bibutils.c
index 8bc28d2..e46872a 100644
--- a/lib/bibutils.c
+++ b/lib/bibutils.c
@@ -1,9 +1,9 @@
 /*
  * bibutils.c
  *
- * Copyright (c) Chris Putnam 2005-2010
+ * Copyright (c) Chris Putnam 2005-2013
  *
- * Source code released under the GPL
+ * Source code released under the GPL version 2
  *
  */
 #include <stdio.h>
diff --git a/lib/bibutils.h b/lib/bibutils.h
index f248e5e..90380b9 100644
--- a/lib/bibutils.h
+++ b/lib/bibutils.h
@@ -1,7 +1,9 @@
 /*
  * bibutils.h
  *
- * Copyright (c) Chris Putnam 2005-2010
+ * Copyright (c) Chris Putnam 2005-2013
+ *
+ * Source code released under GPL version 2
  *
  */
 #ifndef BIBUTILS_H
@@ -14,6 +16,7 @@ extern "C" {
 #include <stdio.h>
 #include "bibl.h"
 #include "list.h"
+#include "charsets.h"
 
 #define BIBL_OK           (0)
 #define BIBL_ERR_BADINPUT (-1)
@@ -49,10 +52,12 @@ extern "C" {
 #define BIBL_RAW_WITHCHARCONVERT (4)
 #define BIBL_RAW_WITHMAKEREFID   (8)
 
-#define BIBL_CHARSET_UNKNOWN (-1)
-#define BIBL_CHARSET_UNICODE (-2)
-#define BIBL_CHARSET_GB18030 (-3)
-#define BIBL_CHARSET_DEFAULT (66)  /* Latin-1/ISO8859-1 */
+#define BIBL_CHARSET_UNKNOWN      CHARSET_UNKNOWN
+#define BIBL_CHARSET_UNICODE      CHARSET_UNICODE
+#define BIBL_CHARSET_GB18030      CHARSET_GB18030
+#define BIBL_CHARSET_DEFAULT      CHARSET_DEFAULT
+#define BIBL_CHARSET_UTF8_DEFAULT CHARSET_UTF8_DEFAULT
+#define BIBL_CHARSET_BOM_DEFAULT  CHARSET_BOM_DEFAULT
 
 #define BIBL_SRC_DEFAULT (0)  /* value from program default */
 #define BIBL_SRC_FILE    (1)  /* value from file, priority over default */
@@ -95,7 +100,7 @@ typedef struct param {
         int  (*processf)(fields*,char*,char*,long);
         void (*cleanf)(bibl*,struct param*);
         int  (*typef) (fields*,char*,int,struct param*,variants*,int);
-        void (*convertf)(fields*,fields*,int,struct param*,variants*,int);
+        int  (*convertf)(fields*,fields*,int,struct param*,variants*,int);
         void (*headerf)(FILE*,struct param*);
         void (*footerf)(FILE*);
         void (*writef)(fields*,FILE*,struct param*,unsigned long);
diff --git a/lib/bltypes.c b/lib/bltypes.c
index b14c7ac..763de27 100644
--- a/lib/bltypes.c
+++ b/lib/bltypes.c
@@ -1,10 +1,10 @@
 /*
  * bltypes.c
  *
- * Copyright (c) Chris Putnam 2008-2010
- * Copyright (c) Johannes Wilm 2010
+ * Copyright (c) Chris Putnam 2008-2013
+ * Copyright (c) Johannes Wilm 2010-2013
  *
- * Program and source code released under the GPL
+ * Program and source code released under the GPL version 2
  *
  */
 
@@ -18,266 +18,351 @@
  * Article in a journal, newspaper, other periodical
  */
 static lookups article[] = {
-	{ "author",          "AUTHOR",       PERSON, LEVEL_MAIN },
-	{ "editor",          "EDITOR",       PERSON, LEVEL_MAIN },
-	{ "redactor",        "REDACTOR",     PERSON, LEVEL_MAIN },
-	{ "annotator",       "ANNOTATOR",    PERSON, LEVEL_MAIN },
-	{ "commentator",     "COMMENTATOR",  PERSON, LEVEL_MAIN },
-	{ "translator",      "TRANSLATOR",   PERSON, LEVEL_MAIN },
-	{ "title",           "TITLE",        SIMPLE, LEVEL_MAIN },
-	{ "subtitle",        "SUBTITLE",     SIMPLE, LEVEL_MAIN },
-	{ "titleaddon",      "?titleaddon?", SIMPLE, LEVEL_MAIN },   /*WRONG*/
-	{ "journal",         "TITLE",        SIMPLE, LEVEL_HOST },
-	{ "journaltitle",    "TITLE",        SIMPLE, LEVEL_HOST },
-	{ "journalsubtitle", "SUBTITLE",     SIMPLE, LEVEL_HOST },
-	{ "shortjournal",    "SHORTTITLE",   SIMPLE, LEVEL_HOST },
-	{ "issuetitle",      "TITLE",        SIMPLE, LEVEL_SERIES }, /*WRONG*/
-	{ "issuesubtitle",   "SUBTITLE",     SIMPLE, LEVEL_SERIES }, /*WRONG*/
-	{ "language",        "LANGUAGE",     SIMPLE, LEVEL_MAIN },
-	{ "origlanguage",    "LANGUAGE",     SIMPLE, LEVEL_ORIG },
-	{ "origyear",        "YEAR",         SIMPLE, LEVEL_ORIG },
-	{ "origtitle",       "TITLE",        SIMPLE, LEVEL_ORIG },
-	{ "origlocation",    "LOCATION",     SIMPLE, LEVEL_ORIG },
-	{ "origpublisher",   "PUBLISHER",    SIMPLE, LEVEL_ORIG },
-	{ "series",          "TITLE",        SIMPLE, LEVEL_SERIES },
-	{ "volume",          "VOLUME",       SIMPLE, LEVEL_MAIN },
-	{ "number",          "NUMBER",       SIMPLE, LEVEL_MAIN },
-	{ "eid",             "EID",          SIMPLE, LEVEL_MAIN },
-	{ "issue",           "ISSUE",        SIMPLE, LEVEL_MAIN },
-	{ "date",            "DATE",         SIMPLE, LEVEL_MAIN },   /*WRONG*/
-	{ "day",             "PARTDAY",      SIMPLE, LEVEL_MAIN },
-	{ "month",           "PARTMONTH",    SIMPLE, LEVEL_MAIN },
-	{ "year",            "PARTYEAR",     SIMPLE, LEVEL_MAIN },
-	{ "pages",           "PAGES",        PAGES,  LEVEL_MAIN },
-	{ "version",         "VERSION",      SIMPLE, LEVEL_MAIN },
-	{ "note",            "NOTES",        SIMPLE, LEVEL_MAIN },
-	{ "annote",          "NOTES",        SIMPLE, LEVEL_MAIN },
-	{ "annotation",      "NOTES",        SIMPLE, LEVEL_MAIN },
-	{ "issn",            "ISSN",         SIMPLE, LEVEL_HOST },
-	{ "abstract",        "ABSTRACT",     SIMPLE, LEVEL_MAIN },
-	{ "addendum",        "?addendum?",   SIMPLE, LEVEL_MAIN },
-	{ "doi",             "DOI",          SIMPLE, LEVEL_MAIN },
-	{ "eprint",          "",  BIBTEX_EPRINT, LEVEL_MAIN },
-	{ "eprinttype",      "",BIBTEX_EPRINT, LEVEL_MAIN },
-	{ "url",             "",         BIBTEX_URL, LEVEL_MAIN },
-	{ "urldate",         "URLDATE",      SIMPLE, LEVEL_MAIN },
-	{ "urlday",          "?urlday?",     SIMPLE, LEVEL_MAIN }, /* WRONG */
-	{ "urlmonth",        "?urlmonth?",   SIMPLE, LEVEL_MAIN }, /* WRONG */
-	{ "urlyear",         "?urlyear?",    SIMPLE, LEVEL_MAIN }, /* WRONG */
-	{ "address",         "ADDRESS",      SIMPLE, LEVEL_MAIN },
-	{ "refnum",          "REFNUM",       SIMPLE, LEVEL_MAIN },
-	{ " ",            "INTERNAL_TYPE|ARTICLE",           ALWAYS, LEVEL_MAIN },
-	{ " ",            "ISSUANCE|continuing",    ALWAYS, LEVEL_HOST },
-	{ " ",            "RESOURCE|text",          ALWAYS, LEVEL_MAIN },
-	{ " ",            "GENRE|periodical",       ALWAYS, LEVEL_HOST }
+	{ "author",          "AUTHOR",                 PERSON,      LEVEL_MAIN   },
+	{ "editor",          "EDITOR",                 BLT_EDITOR,  LEVEL_MAIN   },
+	{ "editora",         "EDITOR",                 BLT_EDITOR,  LEVEL_MAIN   },
+	{ "editorb",         "EDITOR",                 BLT_EDITOR,  LEVEL_MAIN   },
+	{ "editorc",         "EDITOR",                 BLT_EDITOR,  LEVEL_MAIN   },
+	{ "editortype",      "",                       BLT_SKIP,    LEVEL_MAIN   },
+	{ "editoratype",     "",                       BLT_SKIP,    LEVEL_MAIN   },
+	{ "editorbtype",     "",                       BLT_SKIP,    LEVEL_MAIN   },
+	{ "editorctype",     "",                       BLT_SKIP,    LEVEL_MAIN   },
+	{ "director",        "DIRECTOR",               PERSON,      LEVEL_MAIN   },
+	{ "producer",        "PRODUCER",               PERSON,      LEVEL_MAIN   },
+	{ "execproducer",    "PRODUCER",               PERSON,      LEVEL_MAIN   },
+	{ "writer",          "AUTHOR",                 PERSON,      LEVEL_MAIN   },
+	{ "redactor",        "REDACTOR",               PERSON,      LEVEL_MAIN   },
+	{ "annotator",       "ANNOTATOR",              PERSON,      LEVEL_MAIN   },
+	{ "commentator",     "COMMENTATOR",            PERSON,      LEVEL_MAIN   },
+	{ "translator",      "TRANSLATOR",             PERSON,      LEVEL_MAIN   },
+	{ "title",           "TITLE",                  TITLE,       LEVEL_MAIN   },
+	{ "subtitle",        "SUBTITLE",               TITLE,       LEVEL_MAIN   },
+	{ "titleaddon",      "TITLEADDON",             TITLE,       LEVEL_MAIN   },
+	{ "shorttitle",      "SHORTITLE",              SIMPLE,      LEVEL_MAIN   },
+	{ "journal",         "TITLE",                  TITLE,       LEVEL_HOST   },
+	{ "journaltitle",    "TITLE",                  TITLE,       LEVEL_HOST   },
+	{ "journalsubtitle", "SUBTITLE",               TITLE,       LEVEL_HOST   },
+	{ "shortjournal",    "SHORTTITLE",             SIMPLE,      LEVEL_HOST   },
+	{ "issuetitle",      "TITLE",                  TITLE,       LEVEL_SERIES }, /*WRONG*/
+	{ "issuesubtitle",   "SUBTITLE",               TITLE,       LEVEL_SERIES }, /*WRONG*/
+	{ "language",        "LANGUAGE",               SIMPLE,      LEVEL_MAIN   },
+	{ "origlanguage",    "LANGUAGE",               SIMPLE,      LEVEL_ORIG   },
+	{ "origyear",        "YEAR",                   SIMPLE,      LEVEL_ORIG   },
+	{ "origdate",        "DATE",                   SIMPLE,      LEVEL_ORIG   },
+	{ "origtitle",       "TITLE",                  SIMPLE,      LEVEL_ORIG   },
+	{ "origlocation",    "ADDRESS",                SIMPLE,      LEVEL_ORIG   },
+	{ "origpublisher",   "PUBLISHER",              SIMPLE,      LEVEL_ORIG   },
+	{ "series",          "PARTTITLE",              SIMPLE,      LEVEL_HOST   },
+	{ "volume",          "VOLUME",                 SIMPLE,      LEVEL_MAIN   },
+	{ "number",          "NUMBER",                 SIMPLE,      LEVEL_MAIN   },
+	{ "eid",             "EID",                    SIMPLE,      LEVEL_MAIN   },
+	{ "issue",           "ISSUE",                  SIMPLE,      LEVEL_MAIN   },
+	{ "date",            "DATE",                   SIMPLE,      LEVEL_MAIN   },   /*WRONG*/
+	{ "day",             "PARTDAY",                SIMPLE,      LEVEL_MAIN   },
+	{ "month",           "PARTMONTH",              SIMPLE,      LEVEL_MAIN   },
+	{ "year",            "PARTYEAR",               SIMPLE,      LEVEL_MAIN   },
+	{ "pages",           "PAGES",                  PAGES,       LEVEL_MAIN   },
+	{ "version",         "EDITION",                SIMPLE,      LEVEL_MAIN   },
+	{ "note",            "NOTES",                  SIMPLE,      LEVEL_MAIN   },
+	{ "annote",          "ANNOTATION",             SIMPLE,      LEVEL_MAIN   },
+	{ "annotation",      "ANNOTATION",             SIMPLE,      LEVEL_MAIN   },
+	{ "issn",            "ISSN",                   SIMPLE,      LEVEL_HOST   },
+	{ "abstract",        "ABSTRACT",               SIMPLE,      LEVEL_MAIN   },
+	{ "addendum",        "ADDENDUM",               SIMPLE,      LEVEL_MAIN   },
+	{ "doi",             "DOI",                    SIMPLE,      LEVEL_MAIN   },
+	{ "pubstate",        "PUBSTATE",               SIMPLE,      LEVEL_MAIN   },
+	{ "eprint",          "",                       BT_EPRINT,   LEVEL_MAIN   },
+	{ "eprinttype",      "",                       BT_EPRINT,   LEVEL_MAIN   },
+	{ "url",             "",                       BT_URL,      LEVEL_MAIN   },
+	{ "urldate",         "URLDATE",                SIMPLE,      LEVEL_MAIN   },
+	{ "urlday",          "?urlday?",               SIMPLE,      LEVEL_MAIN   }, /* WRONG */
+	{ "urlmonth",        "?urlmonth?",             SIMPLE,      LEVEL_MAIN   }, /* WRONG */
+	{ "urlyear",         "?urlyear?",              SIMPLE,      LEVEL_MAIN   }, /* WRONG */
+	{ "address",         "ADDRESS",                SIMPLE,      LEVEL_MAIN   },
+	{ "refnum",          "REFNUM",                 SIMPLE,      LEVEL_MAIN   },
+	{ "hyphenation",     "LANGCATALOG",            SIMPLE,      LEVEL_MAIN   },
+	{ "entrysubtype",    "",                       BLT_SUBTYPE, LEVEL_MAIN   },
+	{ "",                "INTERNAL_TYPE|ARTICLE",  ALWAYS,      LEVEL_MAIN   },
+	{ "",                "ISSUANCE|continuing",    ALWAYS,      LEVEL_HOST   },
+	{ "",                "RESOURCE|text",          ALWAYS,      LEVEL_MAIN   },
+	{ "",                "NGENRE|journal article", DEFAULT,     LEVEL_MAIN   },
+	{ "",                "GENRE|periodical",       DEFAULT,     LEVEL_HOST   }
 };
 
 /* Book */
 
 static lookups book[] = {
-	{ "author",          "AUTHOR",       PERSON, LEVEL_MAIN },
-	{ "editor",          "EDITOR",       PERSON, LEVEL_MAIN },
-	{ "redactor",        "REDACTOR",     PERSON, LEVEL_MAIN },
-	{ "annotator",       "ANNOTATOR",    PERSON, LEVEL_MAIN },
-	{ "commentator",     "COMMENTATOR",  PERSON, LEVEL_MAIN },
-	{ "translator",      "TRANSLATOR",   PERSON, LEVEL_MAIN },
-	{ "introduction",    "?introduction?",SIMPLE, LEVEL_MAIN }, /*WRONG*/
-	{ "foreward",        "?foreward?",   SIMPLE, LEVEL_MAIN }, /*WRONG*/
-	{ "afterward",       "?afterward?",  SIMPLE, LEVEL_MAIN }, /*WRONG*/
-	{ "title",           "TITLE",        SIMPLE, LEVEL_MAIN },
-	{ "subtitle",        "SUBTITLE",     SIMPLE, LEVEL_MAIN },
-	{ "titleaddon",      "?titleaddon?", SIMPLE, LEVEL_MAIN },   /*WRONG*/
-	{ "maintitle",       "TITLE",        SIMPLE, LEVEL_HOST },
-	{ "mainsubtitle",    "SUBTITLE",     SIMPLE, LEVEL_HOST },
-	{ "maintitleaddon",  "?maintitleaddon?",SIMPLE, LEVEL_HOST },   /*WRONG*/
-	{ "language",        "LANGUAGE",     SIMPLE, LEVEL_MAIN },
-	{ "year",            "YEAR",         SIMPLE, LEVEL_MAIN },
-	{ "origlanguage",    "LANGUAGE",     SIMPLE, LEVEL_ORIG },
-	{ "origyear",        "YEAR",         SIMPLE, LEVEL_ORIG },
-	{ "origtitle",       "TITLE",        SIMPLE, LEVEL_ORIG },
-	{ "origlocation",    "LOCATION",     SIMPLE, LEVEL_ORIG },
-	{ "origpublisher",   "PUBLISHER",    SIMPLE, LEVEL_ORIG },
-	{ "volume",          "VOLUME",       SIMPLE, LEVEL_HOST },
-	{ "part",            "PART",         SIMPLE, LEVEL_HOST },
-	{ "edition",         "EDITION",      SIMPLE, LEVEL_MAIN },
-	{ "volumes",         "NUMVOLUMES",   SIMPLE, LEVEL_HOST },
-	{ "series",          "TITLE",        SIMPLE, LEVEL_HOST }, /* WRONG */
-	{ "number",          "NUMBER",       SIMPLE, LEVEL_MAIN },
-	{ "note",            "NOTES",        SIMPLE, LEVEL_MAIN },
-	{ "annote",          "NOTES",        SIMPLE, LEVEL_MAIN },
-	{ "annotation",      "NOTES",        SIMPLE, LEVEL_MAIN },
-	{ "publisher",       "PUBLISHER",    SIMPLE, LEVEL_MAIN },
-	{ "location",        "LOCATION",     SIMPLE, LEVEL_MAIN },
-	{ "isbn",            "ISBN",         SIMPLE, LEVEL_MAIN },
-	{ "chapter",         "CHAPTER",      SIMPLE, LEVEL_MAIN },
-	{ "pages",           "?pages?",    SIMPLE, LEVEL_MAIN }, /* WRONG */
-	{ "pagetotal",       "?pagetotal?",    SIMPLE, LEVEL_MAIN },
-	{ "addendum",        "?addendum?",    SIMPLE, LEVEL_MAIN },
-	{ "doi",             "DOI",          SIMPLE, LEVEL_MAIN },
-	{ "eprint",          "",       BIBTEX_EPRINT, LEVEL_MAIN },
-	{ "eprinttype",      "",   BIBTEX_EPRINT, LEVEL_MAIN },
-	{ "url",             "",         BIBTEX_URL, LEVEL_MAIN },
-	{ "urldate",         "URLDATE",      SIMPLE, LEVEL_MAIN },
-	{ "urlday",          "?urlday?",    SIMPLE, LEVEL_MAIN },
-	{ "urlmonth",        "?urlmonth?",    SIMPLE, LEVEL_MAIN },
-	{ "urlyear",         "?urlyear?",    SIMPLE, LEVEL_MAIN },
-	{ "address",         "ADDRESS",      SIMPLE, LEVEL_MAIN },
-	{ "refnum",          "REFNUM",       SIMPLE, LEVEL_MAIN },
-	{ " ",               "INTERNAL_TYPE|BOOK",    ALWAYS, LEVEL_MAIN },
-	{ " ",               "RESOURCE|text",ALWAYS, LEVEL_MAIN },
-	{ " ",               "ISSUANCE|monographic", ALWAYS, LEVEL_MAIN },
-	{ " ",               "GENRE|book",   ALWAYS, LEVEL_MAIN }
+	{ "author",          "AUTHOR",               PERSON,     LEVEL_MAIN },
+	{ "editor",          "EDITOR",               BLT_EDITOR, LEVEL_MAIN },
+	{ "editora",         "EDITOR",               BLT_EDITOR, LEVEL_MAIN },
+	{ "editorb",         "EDITOR",               BLT_EDITOR, LEVEL_MAIN },
+	{ "editorc",         "EDITOR",               BLT_EDITOR, LEVEL_MAIN },
+	{ "editortype",      "",                     BLT_SKIP,   LEVEL_MAIN },
+	{ "editoratype",     "",                     BLT_SKIP,   LEVEL_MAIN },
+	{ "editorbtype",     "",                     BLT_SKIP,   LEVEL_MAIN },
+	{ "editorctype",     "",                     BLT_SKIP,   LEVEL_MAIN },
+	{ "director",        "DIRECTOR",             PERSON,     LEVEL_MAIN },
+	{ "producer",        "PRODUCER",             PERSON,     LEVEL_MAIN },
+	{ "execproducer",    "PRODUCER",             PERSON,     LEVEL_MAIN },
+	{ "writer",          "AUTHOR",               PERSON,     LEVEL_MAIN },
+	{ "redactor",        "REDACTOR",             PERSON,     LEVEL_MAIN },
+	{ "annotator",       "ANNOTATOR",            PERSON,     LEVEL_MAIN },
+	{ "commentator",     "COMMENTATOR",          PERSON,     LEVEL_MAIN },
+	{ "translator",      "TRANSLATOR",           PERSON,     LEVEL_MAIN },
+	{ "introduction",    "INTROAUTHOR",          PERSON,     LEVEL_MAIN },
+	{ "foreword",        "INTROAUTHOR",          PERSON,     LEVEL_MAIN },
+	{ "afterword",       "AFTERAUTHOR",          PERSON,     LEVEL_MAIN },
+	{ "title",           "TITLE",                TITLE,      LEVEL_MAIN },
+	{ "subtitle",        "SUBTITLE",             TITLE,      LEVEL_MAIN },
+	{ "titleaddon",      "TITLEADDON",           TITLE,      LEVEL_MAIN },
+	{ "shorttitle",      "SHORTITLE",            SIMPLE,     LEVEL_MAIN  },
+	{ "maintitle",       "TITLE",                TITLE,      LEVEL_HOST },
+	{ "mainsubtitle",    "SUBTITLE",             TITLE,      LEVEL_HOST },
+	{ "maintitleaddon",  "TITLEADDON",           TITLE,      LEVEL_HOST },
+	{ "language",        "LANGUAGE",             SIMPLE,     LEVEL_MAIN },
+	{ "year",            "YEAR",                 SIMPLE,     LEVEL_MAIN },
+	{ "month",           "MONTH",                SIMPLE,     LEVEL_MAIN },
+	{ "date",            "DATE",                 SIMPLE,     LEVEL_MAIN },   /*WRONG*/
+	{ "origlanguage",    "LANGUAGE",             SIMPLE,     LEVEL_ORIG },
+	{ "origyear",        "YEAR",                 SIMPLE,     LEVEL_ORIG },
+	{ "origdate",        "DATE",                 SIMPLE,     LEVEL_ORIG },
+	{ "origtitle",       "TITLE",                SIMPLE,     LEVEL_ORIG },
+	{ "origlocation",    "ADDRESS",              SIMPLE,     LEVEL_ORIG },
+	{ "origpublisher",   "PUBLISHER",            SIMPLE,     LEVEL_ORIG },
+	{ "volume",          "VOLUME",               SIMPLE,     LEVEL_HOST },
+	{ "part",            "PART",                 SIMPLE,     LEVEL_HOST },
+	{ "edition",         "EDITION",              SIMPLE,     LEVEL_MAIN },
+	{ "volumes",         "NUMVOLUMES",           SIMPLE,     LEVEL_HOST },
+	{ "series",          "TITLE",                SIMPLE,     LEVEL_HOST }, /* WRONG */
+	{ "number",          "NUMBER",               SIMPLE,     LEVEL_MAIN },
+	{ "note",            "NOTES",                SIMPLE,     LEVEL_MAIN },
+	{ "annote",          "ANNOTATION",           SIMPLE,     LEVEL_MAIN },
+	{ "annotation",      "ANNOTATION",           SIMPLE,     LEVEL_MAIN },
+	{ "publisher",       "PUBLISHER",            SIMPLE,     LEVEL_MAIN },
+	{ "location",        "ADDRESS",              SIMPLE,     LEVEL_MAIN },
+	{ "isbn",            "ISBN",                 SIMPLE,     LEVEL_MAIN },
+	{ "chapter",         "CHAPTER",              SIMPLE,     LEVEL_MAIN },
+	{ "pages",           "?pages?",              SIMPLE,     LEVEL_MAIN }, /* WRONG */
+	{ "pagetotal",       "?pagetotal?",          SIMPLE,     LEVEL_MAIN },
+	{ "addendum",        "ADDENDUM",             SIMPLE,     LEVEL_MAIN },
+	{ "doi",             "DOI",                  SIMPLE,     LEVEL_MAIN },
+	{ "pubstate",        "PUBSTATE",             SIMPLE,     LEVEL_MAIN   },
+	{ "eprint",          "",                     BT_EPRINT,  LEVEL_MAIN },
+	{ "eprinttype",      "",                     BT_EPRINT,  LEVEL_MAIN },
+	{ "url",             "",                     BT_URL,     LEVEL_MAIN },
+	{ "urldate",         "URLDATE",              SIMPLE,     LEVEL_MAIN },
+	{ "urlday",          "?urlday?",             SIMPLE,     LEVEL_MAIN },
+	{ "urlmonth",        "?urlmonth?",           SIMPLE,     LEVEL_MAIN },
+	{ "urlyear",         "?urlyear?",            SIMPLE,     LEVEL_MAIN },
+	{ "address",         "ADDRESS",              SIMPLE,     LEVEL_MAIN },
+	{ "hyphenation",     "LANGCATALOG",            SIMPLE,      LEVEL_MAIN   },
+	{ "refnum",          "REFNUM",               SIMPLE,     LEVEL_MAIN },
+	{ "",                "INTERNAL_TYPE|BOOK",   ALWAYS,     LEVEL_MAIN },
+	{ "",                "RESOURCE|text",        ALWAYS,     LEVEL_MAIN },
+	{ "",                "ISSUANCE|monographic", ALWAYS,     LEVEL_MAIN },
+	{ "",                "GENRE|book",           ALWAYS,     LEVEL_MAIN }
 };
 
 /* Booklet */
 
 static lookups booklet[] = {
 	{ "author",          "AUTHOR",       PERSON, LEVEL_MAIN },
-	{ "editor",          "EDITOR",       PERSON, LEVEL_MAIN },
-	{ "title",           "TITLE",        SIMPLE, LEVEL_MAIN },
-	{ "subtitle",        "SUBTITLE",     SIMPLE, LEVEL_MAIN },
-	{ "titleaddon",      "?titleaddon?",        SIMPLE, LEVEL_MAIN },   /*WRONG*/
+	{ "editor",          "EDITOR",       BLT_EDITOR, LEVEL_MAIN },
+	{ "editora",         "EDITOR",       BLT_EDITOR, LEVEL_MAIN },
+	{ "editorb",         "EDITOR",       BLT_EDITOR, LEVEL_MAIN },
+	{ "editorc",         "EDITOR",       BLT_EDITOR, LEVEL_MAIN },
+	{ "editortype",      "",             BLT_SKIP,   LEVEL_MAIN },
+	{ "editoratype",     "",             BLT_SKIP,   LEVEL_MAIN },
+	{ "editorbtype",     "",             BLT_SKIP,   LEVEL_MAIN },
+	{ "editorctype",     "",             BLT_SKIP,   LEVEL_MAIN },
+	{ "director",        "DIRECTOR",     PERSON, LEVEL_MAIN },
+	{ "producer",        "PRODUCER",     PERSON, LEVEL_MAIN },
+	{ "execproducer",    "PRODUCER",     PERSON, LEVEL_MAIN },
+	{ "writer",          "AUTHOR",       PERSON, LEVEL_MAIN },
+	{ "title",           "TITLE",        TITLE,  LEVEL_MAIN },
+	{ "subtitle",        "SUBTITLE",     TITLE,  LEVEL_MAIN },
+	{ "titleaddon",      "TITLEADDON",   TITLE,  LEVEL_MAIN },
+	{ "shorttitle",      "SHORTITLE",    SIMPLE, LEVEL_MAIN },
 	{ "howpublished",    "",       HOWPUBLISHED, LEVEL_MAIN },
 	{ "year",            "YEAR",         SIMPLE, LEVEL_MAIN },
+	{ "month",           "MONTH",        SIMPLE, LEVEL_MAIN },
+	{ "date",            "DATE",         SIMPLE, LEVEL_MAIN },   /*WRONG*/
 	{ "language",        "LANGUAGE",     SIMPLE, LEVEL_MAIN },
-	{ "type",            "GENRE",  BIBTEX_GENRE, LEVEL_MAIN },
+	{ "type",            "GENRE",  BT_GENRE, LEVEL_MAIN },
 	{ "note",            "NOTES",        SIMPLE, LEVEL_MAIN },
-	{ "annote",          "NOTES",        SIMPLE, LEVEL_MAIN },
-	{ "annotation",      "NOTES",        SIMPLE, LEVEL_MAIN },
+	{ "annote",          "ANNOTATION",   SIMPLE, LEVEL_MAIN },
+	{ "annotation",      "ANNOTATION",   SIMPLE, LEVEL_MAIN },
 	{ "publisher",       "PUBLISHER",    SIMPLE, LEVEL_MAIN },
-	{ "location",        "LOCATION",     SIMPLE, LEVEL_MAIN },
+	{ "location",        "ADDRESS",      SIMPLE, LEVEL_MAIN },
 	{ "chapter",         "CHAPTER",      SIMPLE, LEVEL_MAIN },
-	{ "pages",           "?pages?",    SIMPLE, LEVEL_MAIN }, /* WRONG */
-	{ "pagetotal",       "?pagetotal?",    SIMPLE, LEVEL_MAIN },
-	{ "addendum",        "?addendum?",    SIMPLE, LEVEL_MAIN },
+	{ "pages",           "?pages?",      SIMPLE, LEVEL_MAIN }, /* WRONG */
+	{ "pagetotal",       "?pagetotal?",  SIMPLE, LEVEL_MAIN },
+	{ "addendum",        "ADDENDUM",     SIMPLE, LEVEL_MAIN },
 	{ "doi",             "DOI",          SIMPLE, LEVEL_MAIN },
-	{ "eprint",          "",       BIBTEX_EPRINT, LEVEL_MAIN },
-	{ "eprinttype",      "",   BIBTEX_EPRINT, LEVEL_MAIN },
-	{ "url",             "",         BIBTEX_URL, LEVEL_MAIN },
+	{ "pubstate",        "PUBSTATE",     SIMPLE, LEVEL_MAIN   },
+	{ "eprint",          "",       BT_EPRINT, LEVEL_MAIN },
+	{ "eprinttype",      "",   BT_EPRINT, LEVEL_MAIN },
+	{ "url",             "",         BT_URL, LEVEL_MAIN },
 	{ "urldate",         "URLDATE",      SIMPLE, LEVEL_MAIN },
 	{ "urlday",          "?urlday?",    SIMPLE, LEVEL_MAIN },
 	{ "urlmonth",        "?urlmonth?",    SIMPLE, LEVEL_MAIN },
 	{ "urlyear",         "?urlyear?",    SIMPLE, LEVEL_MAIN },
 	{ "address",         "ADDRESS",      SIMPLE, LEVEL_MAIN },
+	{ "hyphenation",     "LANGCATALOG",            SIMPLE,      LEVEL_MAIN   },
 	{ "refnum",          "REFNUM",       SIMPLE, LEVEL_MAIN },
-	{ " ",               "INTERNAL_TYPE|BOOK",    ALWAYS, LEVEL_MAIN },
-	{ " ",               "RESOURCE|text",ALWAYS, LEVEL_MAIN },
-	{ " ",               "ISSUANCE|monographic", ALWAYS, LEVEL_MAIN },
-	{ " ",               "GENRE|book",   ALWAYS, LEVEL_MAIN }
+	{ "",                "INTERNAL_TYPE|BOOK",    ALWAYS, LEVEL_MAIN },
+	{ "",                "RESOURCE|text",ALWAYS, LEVEL_MAIN },
+	{ "",                "ISSUANCE|monographic", ALWAYS, LEVEL_MAIN },
+	{ "",                "GENRE|book",   ALWAYS, LEVEL_MAIN }
 };
 
 static lookups collection[] = {
-	{ "editor",          "EDITOR",       PERSON, LEVEL_MAIN },
+	{ "editor",          "EDITOR",       BLT_EDITOR, LEVEL_MAIN },
+	{ "editora",         "EDITOR",       BLT_EDITOR, LEVEL_MAIN },
+	{ "editorb",         "EDITOR",       BLT_EDITOR, LEVEL_MAIN },
+	{ "editorc",         "EDITOR",       BLT_EDITOR, LEVEL_MAIN },
+	{ "editortype",      "",             BLT_SKIP,   LEVEL_MAIN },
+	{ "editoratype",     "",             BLT_SKIP,   LEVEL_MAIN },
+	{ "editorbtype",     "",             BLT_SKIP,   LEVEL_MAIN },
+	{ "editorctype",     "",             BLT_SKIP,   LEVEL_MAIN },
+	{ "director",        "DIRECTOR",     PERSON, LEVEL_MAIN },
+	{ "producer",        "PRODUCER",     PERSON, LEVEL_MAIN },
+	{ "execproducer",    "PRODUCER",     PERSON, LEVEL_MAIN },
+	{ "writer",          "AUTHOR",       PERSON, LEVEL_MAIN },
 	{ "redactor",        "REDACTOR",     PERSON, LEVEL_MAIN },
 	{ "annotator",       "ANNOTATOR",    PERSON, LEVEL_MAIN },
 	{ "commentator",     "COMMENTATOR",  PERSON, LEVEL_MAIN },
 	{ "translator",      "TRANSLATOR",   PERSON, LEVEL_MAIN },
 	{ "year",            "YEAR",         SIMPLE, LEVEL_MAIN },
-	{ "introduction",    "?introduction?",        SIMPLE, LEVEL_MAIN }, /*WRONG*/
-	{ "foreward",        "?foreward?",        SIMPLE, LEVEL_MAIN }, /*WRONG*/
-	{ "afterward",       "?afterward?",        SIMPLE, LEVEL_MAIN }, /*WRONG*/
-	{ "title",           "TITLE",        SIMPLE, LEVEL_MAIN },
-	{ "subtitle",        "SUBTITLE",     SIMPLE, LEVEL_MAIN },
-	{ "titleaddon",      "?titleaddon?",        SIMPLE, LEVEL_MAIN },   /*WRONG*/
-	{ "maintitle",       "TITLE",        SIMPLE, LEVEL_HOST },
-	{ "mainsubtitle",    "SUBTITLE",     SIMPLE, LEVEL_HOST },
-	{ "maintitleaddon",  "?maintitleaddon?",        SIMPLE, LEVEL_HOST },   /*WRONG*/
+	{ "month",           "MONTH",        SIMPLE, LEVEL_MAIN },
+	{ "date",            "DATE",         SIMPLE, LEVEL_MAIN },   /*WRONG*/
+	{ "introduction",    "INTROAUTHOR",  PERSON, LEVEL_MAIN },
+	{ "foreword",        "INTROAUTHOR",  PERSON, LEVEL_MAIN },
+	{ "afterword",       "AFTERAUTHOR",  PERSON, LEVEL_MAIN },
+	{ "title",           "TITLE",        TITLE,  LEVEL_MAIN },
+	{ "subtitle",        "SUBTITLE",     TITLE,  LEVEL_MAIN },
+	{ "titleaddon",      "TITLEADDON",   TITLE,  LEVEL_MAIN },
+	{ "shorttitle",      "SHORTTITLE",   SIMPLE, LEVEL_MAIN },
+	{ "maintitle",       "TITLE",        TITLE,  LEVEL_HOST },
+	{ "mainsubtitle",    "SUBTITLE",     TITLE,  LEVEL_HOST },
+	{ "maintitleaddon",  "TITLEADDON",   TITLE,  LEVEL_HOST },
 	{ "language",        "LANGUAGE",     SIMPLE, LEVEL_MAIN },
 	{ "origlanguage",    "LANGUAGE",     SIMPLE, LEVEL_ORIG },
 	{ "origyear",        "YEAR",         SIMPLE, LEVEL_ORIG },
+	{ "origdate",        "DATE",         SIMPLE, LEVEL_ORIG },
 	{ "origtitle",       "TITLE",        SIMPLE, LEVEL_ORIG },
-	{ "origlocation",    "LOCATION",     SIMPLE, LEVEL_ORIG },
+	{ "origlocation",    "ADDRESS",      SIMPLE, LEVEL_ORIG },
 	{ "origpublisher",   "PUBLISHER",    SIMPLE, LEVEL_ORIG },
 	{ "volume",          "VOLUME",       SIMPLE, LEVEL_HOST },
 	{ "part",            "PART",         SIMPLE, LEVEL_HOST },
 	{ "edition",         "EDITION",      SIMPLE, LEVEL_MAIN },
 	{ "volumes",         "NUMVOLUMES",   SIMPLE, LEVEL_HOST },
-	{ "series",          "?series?",        SIMPLE, LEVEL_HOST }, /* WRONG */
+	{ "series",          "?series?",     SIMPLE, LEVEL_HOST }, /* WRONG */
 	{ "number",          "NUMBER",       SIMPLE, LEVEL_MAIN },
 	{ "note",            "NOTES",        SIMPLE, LEVEL_MAIN },
-	{ "annote",          "NOTES",        SIMPLE, LEVEL_MAIN },
-	{ "annotation",      "NOTES",        SIMPLE, LEVEL_MAIN },
+	{ "annote",          "ANNOTATION",   SIMPLE, LEVEL_MAIN },
+	{ "annotation",      "ANNOTATION",   SIMPLE, LEVEL_MAIN },
 	{ "publisher",       "PUBLISHER",    SIMPLE, LEVEL_MAIN },
-	{ "location",        "LOCATION",     SIMPLE, LEVEL_MAIN },
+	{ "location",        "ADDRESS",      SIMPLE, LEVEL_MAIN },
 	{ "isbn",            "ISBN",         SIMPLE, LEVEL_MAIN },
 	{ "chapter",         "CHAPTER",      SIMPLE, LEVEL_MAIN },
-	{ "pages",           "?pages?",    SIMPLE, LEVEL_MAIN }, /* WRONG */
-	{ "pagetotal",       "?pagetotal?",    SIMPLE, LEVEL_MAIN },
-	{ "addendum",        "?addendum?",    SIMPLE, LEVEL_MAIN },
+	{ "pages",           "?pages?",      SIMPLE, LEVEL_MAIN }, /* WRONG */
+	{ "pagetotal",       "?pagetotal?",  SIMPLE, LEVEL_MAIN },
+	{ "addendum",        "ADDENDUM",     SIMPLE, LEVEL_MAIN },
 	{ "doi",             "DOI",          SIMPLE, LEVEL_MAIN },
-	{ "eprint",          "",       BIBTEX_EPRINT, LEVEL_MAIN },
-	{ "eprinttype",      "",   BIBTEX_EPRINT, LEVEL_MAIN },
-	{ "url",             "",         BIBTEX_URL, LEVEL_MAIN },
+	{ "pubstate",        "PUBSTATE",     SIMPLE, LEVEL_MAIN },
+	{ "eprint",          "",       BT_EPRINT, LEVEL_MAIN },
+	{ "eprinttype",      "",   BT_EPRINT, LEVEL_MAIN },
+	{ "url",             "",         BT_URL, LEVEL_MAIN },
 	{ "urldate",         "URLDATE",      SIMPLE, LEVEL_MAIN },
 	{ "urlday",          "?urlday?",    SIMPLE, LEVEL_MAIN },
 	{ "urlmonth",        "?urlmonth?",    SIMPLE, LEVEL_MAIN },
 	{ "urlyear",         "?urlyear?",    SIMPLE, LEVEL_MAIN },
 	{ "address",         "ADDRESS",      SIMPLE, LEVEL_MAIN },
+	{ "hyphenation",     "LANGCATALOG",            SIMPLE,      LEVEL_MAIN   },
 	{ "refnum",          "REFNUM",       SIMPLE, LEVEL_MAIN },
-	{ " ",               "INTERNAL_TYPE|BOOK",    ALWAYS, LEVEL_MAIN },
-	{ " ",               "RESOURCE|text",ALWAYS, LEVEL_MAIN },
-	{ " ",               "ISSUANCE|monographic", ALWAYS, LEVEL_MAIN },
-	{ " ",               "GENRE|book",   ALWAYS, LEVEL_MAIN }
+	{ "",                "INTERNAL_TYPE|BOOK",    ALWAYS, LEVEL_MAIN },
+	{ "",                "RESOURCE|text",ALWAYS, LEVEL_MAIN },
+	{ "",                "ISSUANCE|monographic", ALWAYS, LEVEL_MAIN },
+	{ "",                "GENRE|book",   ALWAYS, LEVEL_MAIN }
 };
 
 /* Part of a book (e.g. chapter or section) */
 
 static lookups inbook[] = {
 	{ "author",          "AUTHOR",       PERSON, LEVEL_MAIN },
-	{ "editor",          "EDITOR",       PERSON, LEVEL_HOST },
+	{ "editor",          "EDITOR",       BLT_EDITOR, LEVEL_HOST },
+	{ "editora",         "EDITOR",       BLT_EDITOR, LEVEL_HOST },
+	{ "editorb",         "EDITOR",       BLT_EDITOR, LEVEL_HOST },
+	{ "editorc",         "EDITOR",       BLT_EDITOR, LEVEL_HOST },
+	{ "editortype",      "",             BLT_SKIP,   LEVEL_HOST },
+	{ "editoratype",     "",             BLT_SKIP,   LEVEL_HOST },
+	{ "editorbtype",     "",             BLT_SKIP,   LEVEL_HOST },
+	{ "editorctype",     "",             BLT_SKIP,   LEVEL_HOST },
+	{ "director",        "DIRECTOR",     PERSON, LEVEL_HOST },
+	{ "producer",        "PRODUCER",     PERSON, LEVEL_HOST },
+	{ "execproducer",    "PRODUCER",     PERSON, LEVEL_HOST },
+	{ "writer",          "AUTHOR",       PERSON, LEVEL_HOST },
 	{ "redactor",        "REDACTOR",     PERSON, LEVEL_HOST },
 	{ "annotator",       "ANNOTATOR",    PERSON, LEVEL_HOST },
 	{ "commentator",     "COMMENTATOR",  PERSON, LEVEL_HOST },
 	{ "translator",      "TRANSLATOR",   PERSON, LEVEL_HOST },
 	{ "year",            "YEAR",         SIMPLE, LEVEL_MAIN },
-	{ "introduction",    "?introduction?",        SIMPLE, LEVEL_HOST }, /*WRONG*/
-	{ "foreward",        "?foreward?",        SIMPLE, LEVEL_HOST }, /*WRONG*/
-	{ "afterward",       "?afterward?",        SIMPLE, LEVEL_HOST }, /*WRONG*/
-	{ "title",           "TITLE",        SIMPLE, LEVEL_MAIN },
-	{ "subtitle",        "SUBTITLE",     SIMPLE, LEVEL_MAIN },
-	{ "titleaddon",      "?titleaddon?",        SIMPLE, LEVEL_MAIN },   /*WRONG*/
-	{ "maintitle",       "TITLE",        SIMPLE, LEVEL_MAIN },
-	{ "mainsubtitle",    "SUBTITLE",     SIMPLE, LEVEL_MAIN },
-	{ "maintitleaddon",  "?maintitleaddon?",        SIMPLE, LEVEL_MAIN },   /*WRONG*/
-	{ "booktitle",       "TITLE",        SIMPLE, LEVEL_HOST },
-	{ "booksubtitle",    "SUBTITLE",     SIMPLE, LEVEL_HOST },
-	{ "booktitleaddon",  "?booktitleaddon?",       SIMPLE, LEVEL_HOST },
+	{ "month",           "MONTH",        SIMPLE, LEVEL_MAIN },
+	{ "date",            "DATE",         SIMPLE, LEVEL_MAIN },   /*WRONG*/
+	{ "introduction",    "INTROAUTHOR",  PERSON, LEVEL_HOST },
+	{ "foreword",        "INTROAUTHOR",  PERSON, LEVEL_HOST },
+	{ "afterword",       "AFTERAUTHOR",  PERSON, LEVEL_HOST },
+	{ "title",           "TITLE",        TITLE,  LEVEL_MAIN },
+	{ "subtitle",        "SUBTITLE",     TITLE,  LEVEL_MAIN },
+	{ "titleaddon",      "TITLEADDON",   TITLE,  LEVEL_MAIN },
+	{ "shorttitle",      "SHORTTITLE",   SIMPLE, LEVEL_MAIN },
+	{ "booktitle",       "TITLE",        TITLE,  LEVEL_HOST },
+	{ "booksubtitle",    "SUBTITLE",     TITLE,  LEVEL_HOST },
+	{ "booktitleaddon",  "TITLEADDON",   TITLE,  LEVEL_HOST },
 	{ "bookauthor",      "AUTHOR",       PERSON, LEVEL_HOST },
+	{ "maintitle",       "TITLE",        TITLE,  LEVEL_SERIES },
+	{ "mainsubtitle",    "SUBTITLE",     TITLE,  LEVEL_SERIES },
+	{ "maintitleaddon",  "TITLEADDON",   TITLE,  LEVEL_SERIES },
 	{ "language",        "LANGUAGE",     SIMPLE, LEVEL_MAIN },
 	{ "origlanguage",    "LANGUAGE",     SIMPLE, LEVEL_ORIG },
 	{ "origyear",        "YEAR",         SIMPLE, LEVEL_ORIG },
+	{ "origdate",        "DATE",         SIMPLE, LEVEL_ORIG },
 	{ "origtitle",       "TITLE",        SIMPLE, LEVEL_ORIG },
-	{ "origlocation",    "LOCATION",     SIMPLE, LEVEL_ORIG },
+	{ "origlocation",    "ADDRESS",      SIMPLE, LEVEL_ORIG },
 	{ "origpublisher",   "PUBLISHER",    SIMPLE, LEVEL_ORIG },
 	{ "volume",          "VOLUME",       SIMPLE, LEVEL_MAIN },
 	{ "pages",           "PAGES",        PAGES,  LEVEL_MAIN },
 	{ "part",            "PART",         SIMPLE, LEVEL_HOST },
 	{ "edition",         "EDITION",      SIMPLE, LEVEL_MAIN },
 	{ "volumes",         "NUMVOLUMES",   SIMPLE, LEVEL_HOST },
-	{ "series",          "?series?",     SIMPLE, LEVEL_HOST }, /* WRONG */
+	{ "series",          "TITLE",        SIMPLE, LEVEL_SERIES+1 }, /* WRONG */
 	{ "number",          "NUMBER",       SIMPLE, LEVEL_MAIN },
 	{ "note",            "NOTES",        SIMPLE, LEVEL_MAIN },
-	{ "annote",          "NOTES",        SIMPLE, LEVEL_MAIN },
-	{ "annotation",      "NOTES",        SIMPLE, LEVEL_MAIN },
+	{ "annote",          "ANNOTATION",   SIMPLE, LEVEL_MAIN },
+	{ "annotation",      "ANNOTATION",   SIMPLE, LEVEL_MAIN },
 	{ "publisher",       "PUBLISHER",    SIMPLE, LEVEL_MAIN },
-	{ "location",        "LOCATION",     SIMPLE, LEVEL_MAIN },
+	{ "location",        "ADDRESS",      SIMPLE, LEVEL_MAIN },
 	{ "isbn",            "ISBN",         SIMPLE, LEVEL_HOST },
 	{ "chapter",         "CHAPTER",      SIMPLE, LEVEL_MAIN },
-	{ "addendum",        "?addendum?",   SIMPLE, LEVEL_MAIN },
+	{ "addendum",        "ADDENDUM",     SIMPLE, LEVEL_MAIN },
 	{ "doi",             "DOI",          SIMPLE, LEVEL_MAIN },
-	{ "eprint",          "",       BIBTEX_EPRINT, LEVEL_MAIN },
-	{ "eprinttype",      "",   BIBTEX_EPRINT, LEVEL_MAIN },
-	{ "url",             "",         BIBTEX_URL, LEVEL_MAIN },
+	{ "pubstate",        "PUBSTATE",     SIMPLE, LEVEL_MAIN },
+	{ "eprint",          "",       BT_EPRINT, LEVEL_MAIN },
+	{ "eprinttype",      "",   BT_EPRINT, LEVEL_MAIN },
+	{ "url",             "",         BT_URL, LEVEL_MAIN },
 	{ "urldate",         "URLDATE",      SIMPLE, LEVEL_MAIN },
 	{ "urlday",          "?urlday?",     SIMPLE, LEVEL_MAIN },
 	{ "urlmonth",        "?urlmonth?",   SIMPLE, LEVEL_MAIN },
 	{ "urlyear",         "?urlyear?",    SIMPLE, LEVEL_MAIN },
 	{ "address",         "ADDRESS",      SIMPLE, LEVEL_MAIN },
+	{ "hyphenation",     "LANGCATALOG",            SIMPLE,      LEVEL_MAIN   },
 	{ "refnum",          "REFNUM",       SIMPLE, LEVEL_MAIN },
-	{ " ",               "INTERNAL_TYPE|INBOOK",    ALWAYS, LEVEL_MAIN },
-	{ " ",               "RESOURCE|text",ALWAYS, LEVEL_MAIN },
-	{ " ",               "ISSUANCE|monographic", ALWAYS, LEVEL_HOST },
-	{ " ",               "GENRE|book",   ALWAYS, LEVEL_HOST }
+	{ "",                "INTERNAL_TYPE|INBOOK",    ALWAYS, LEVEL_MAIN },
+	{ "",                "RESOURCE|text",ALWAYS, LEVEL_MAIN },
+	{ "",                "ISSUANCE|monographic", ALWAYS, LEVEL_HOST },
+        { "",                "NGENRE|book chapter",   ALWAYS, LEVEL_MAIN },
+	{ "",                "GENRE|book",   ALWAYS, LEVEL_HOST }
 };
 
 /* incollection */
@@ -286,24 +371,37 @@ static lookups incollection[] = {
 
 	{ "author",          "AUTHOR",       PERSON, LEVEL_MAIN },
 	{ "year",            "YEAR",         SIMPLE, LEVEL_MAIN },
-	{ "title",           "TITLE",        SIMPLE, LEVEL_MAIN },
-	{ "subtitle",        "SUBTITLE",     SIMPLE, LEVEL_MAIN },
-	{ "titleaddon",      "?titleaddon?", SIMPLE, LEVEL_MAIN },   /*WRONG*/
+	{ "month",           "MONTH",        SIMPLE, LEVEL_MAIN },
+	{ "date",            "DATE",         SIMPLE, LEVEL_MAIN },   /*WRONG*/
+	{ "title",           "TITLE",        TITLE,  LEVEL_MAIN },
+	{ "subtitle",        "SUBTITLE",     TITLE,  LEVEL_MAIN },
+	{ "titleaddon",      "TITLEADDON",   TITLE,  LEVEL_MAIN },
+	{ "shorttitle",      "SHORTTITLE",   SIMPLE, LEVEL_MAIN },
 	{ "language",        "LANGUAGE",     SIMPLE, LEVEL_MAIN },
 	{ "edition",         "EDITION",      SIMPLE, LEVEL_MAIN },
 	{ "number",          "NUMBER",       SIMPLE, LEVEL_MAIN },
 	{ "note",            "NOTES",        SIMPLE, LEVEL_MAIN },
-	{ "annote",          "NOTES",        SIMPLE, LEVEL_MAIN },
-	{ "annotation",      "NOTES",        SIMPLE, LEVEL_MAIN },
-
-	{ "introduction",    "?introduction?",SIMPLE, LEVEL_HOST }, /*WRONG*/
-	{ "foreward",        "?foreward?",   SIMPLE, LEVEL_HOST }, /*WRONG*/
-	{ "afterward",       "?afterward?",  SIMPLE, LEVEL_HOST }, /*WRONG*/
+	{ "annote",          "ANNOTATION",   SIMPLE, LEVEL_MAIN },
+	{ "annotation",      "ANNOTATION",   SIMPLE, LEVEL_MAIN },
+	{ "introduction",    "INTROAUTHOR",  PERSON, LEVEL_HOST },
+	{ "foreword",        "INTROAUTHOR",  PERSON, LEVEL_HOST },
+	{ "afterword",       "AFTERAUTHOR",  PERSON, LEVEL_HOST },
 	{ "bookauthor",      "AUTHOR",       PERSON, LEVEL_HOST },
-	{ "booktitle",       "TITLE",        SIMPLE, LEVEL_HOST },
-	{ "booksubtitle",    "SUBTITLE",     SIMPLE, LEVEL_HOST },
-	{ "booktitleaddon",  "?booktitleaddon?",SIMPLE, LEVEL_HOST },
-	{ "editor",          "EDITOR",       PERSON, LEVEL_HOST },
+	{ "booktitle",       "TITLE",        TITLE,  LEVEL_HOST },
+	{ "booksubtitle",    "SUBTITLE",     TITLE,  LEVEL_HOST },
+	{ "booktitleaddon",  "TITLEADDON",   TITLE,  LEVEL_HOST },
+	{ "editor",          "EDITOR",       BLT_EDITOR, LEVEL_HOST },
+	{ "editora",         "EDITOR",       BLT_EDITOR, LEVEL_HOST },
+	{ "editorb",         "EDITOR",       BLT_EDITOR, LEVEL_HOST },
+	{ "editorc",         "EDITOR",       BLT_EDITOR, LEVEL_HOST },
+	{ "editortype",      "",             BLT_SKIP,   LEVEL_HOST },
+	{ "editoratype",     "",             BLT_SKIP,   LEVEL_HOST },
+	{ "editorbtype",     "",             BLT_SKIP,   LEVEL_HOST },
+	{ "editorctype",     "",             BLT_SKIP,   LEVEL_HOST },
+	{ "director",        "DIRECTOR",     PERSON, LEVEL_HOST },
+	{ "producer",        "PRODUCER",     PERSON, LEVEL_HOST },
+	{ "execproducer",    "PRODUCER",     PERSON, LEVEL_HOST },
+	{ "writer",          "AUTHOR",       PERSON, LEVEL_HOST },
 	{ "redactor",        "REDACTOR",     PERSON, LEVEL_HOST },
 	{ "annotator",       "ANNOTATOR",    PERSON, LEVEL_HOST },
 	{ "commentator",     "COMMENTATOR",  PERSON, LEVEL_HOST },
@@ -312,300 +410,415 @@ static lookups incollection[] = {
 	{ "part",            "PART",         SIMPLE, LEVEL_HOST },
 	{ "volumes",         "NUMVOLUMES",   SIMPLE, LEVEL_HOST },
 	
-	{ "maintitle",       "TITLE",        SIMPLE, LEVEL_HOST+1 },
-	{ "mainsubtitle",    "SUBTITLE",     SIMPLE, LEVEL_HOST+1 },
-	{ "maintitleaddon",  "?maintitleaddon?",        SIMPLE, LEVEL_HOST+1 },   /*WRONG*/
+	{ "maintitle",       "TITLE",        TITLE,  LEVEL_SERIES },
+	{ "mainsubtitle",    "SUBTITLE",     TITLE,  LEVEL_SERIES },
+	{ "maintitleaddon",  "TITLEADDON",   TITLE,  LEVEL_SERIES },
 
-	{ "series",          "TITLE",        SIMPLE, LEVEL_HOST+2 }, /* WRONG */
+	{ "series",          "TITLE",        SIMPLE, LEVEL_SERIES+1 }, /* WRONG */
 
 	{ "origlanguage",    "LANGUAGE",     SIMPLE, LEVEL_ORIG },
 	{ "origyear",        "YEAR",         SIMPLE, LEVEL_ORIG },
+	{ "origdate",        "DATE",         SIMPLE, LEVEL_ORIG },
 	{ "origtitle",       "TITLE",        SIMPLE, LEVEL_ORIG },
-	{ "origlocation",    "LOCATION",     SIMPLE, LEVEL_ORIG },
+	{ "origlocation",    "ADDRESS",      SIMPLE, LEVEL_ORIG },
 	{ "origpublisher",   "PUBLISHER",    SIMPLE, LEVEL_ORIG },
 
 	{ "publisher",       "PUBLISHER",    SIMPLE, LEVEL_HOST },
-	{ "location",        "LOCATION",     SIMPLE, LEVEL_HOST },
+	{ "location",        "ADDRESS",      SIMPLE, LEVEL_HOST },
 	{ "isbn",            "ISBN",         SIMPLE, LEVEL_MAIN },
 	{ "chapter",         "CHAPTER",      SIMPLE, LEVEL_MAIN },
 	{ "pages",           "PAGES",        PAGES,  LEVEL_MAIN }, /* WRONG */
-	{ "addendum",        "?addendum?",   SIMPLE, LEVEL_MAIN },
+	{ "addendum",        "ADDENDUM",     SIMPLE, LEVEL_MAIN },
 	{ "doi",             "DOI",          SIMPLE, LEVEL_MAIN },
-	{ "eprint",          "",       BIBTEX_EPRINT, LEVEL_MAIN },
-	{ "eprinttype",      "",   BIBTEX_EPRINT, LEVEL_MAIN },
-	{ "url",             "",         BIBTEX_URL, LEVEL_MAIN },
+	{ "pubstate",        "PUBSTATE",     SIMPLE, LEVEL_MAIN },
+	{ "eprint",          "",       BT_EPRINT, LEVEL_MAIN },
+	{ "eprinttype",      "",   BT_EPRINT, LEVEL_MAIN },
+	{ "url",             "",         BT_URL, LEVEL_MAIN },
 	{ "urldate",         "URLDATE",      SIMPLE, LEVEL_MAIN },
 	{ "urlday",          "?urlday?",     SIMPLE, LEVEL_MAIN },
 	{ "urlmonth",        "?urlmonth?",   SIMPLE, LEVEL_MAIN },
 	{ "urlyear",         "?urlyear?",    SIMPLE, LEVEL_MAIN },
 	{ "address",         "ADDRESS",      SIMPLE, LEVEL_MAIN },
+	{ "hyphenation",     "LANGCATALOG",            SIMPLE,      LEVEL_MAIN   },
 	{ "refnum",          "REFNUM",       SIMPLE, LEVEL_MAIN },
-	{ " ",               "INTERNAL_TYPE|INCOLLECTION",    ALWAYS, LEVEL_MAIN },
-	{ " ",               "RESOURCE|text",ALWAYS, LEVEL_MAIN },
-	{ " ",               "ISSUANCE|monographic", ALWAYS, LEVEL_MAIN },
-	{ " ",               "GENRE|collection",   ALWAYS, LEVEL_HOST }
+	{ "",                "INTERNAL_TYPE|INCOLLECTION",    ALWAYS, LEVEL_MAIN },
+	{ "",                "RESOURCE|text",ALWAYS, LEVEL_MAIN },
+	{ "",                "ISSUANCE|monographic", ALWAYS, LEVEL_MAIN },
+	{ "",                "GENRE|collection",   ALWAYS, LEVEL_HOST }
 };
 
 /* inproceedings */
 
 static lookups inproceedings[] = {
 	{ "author",          "AUTHOR",       PERSON, LEVEL_MAIN },
-	{ "editor",          "EDITOR",       PERSON, LEVEL_HOST },
+	{ "editor",          "EDITOR",       BLT_EDITOR, LEVEL_HOST },
+	{ "editora",         "EDITOR",       BLT_EDITOR, LEVEL_HOST },
+	{ "editorb",         "EDITOR",       BLT_EDITOR, LEVEL_HOST },
+	{ "editorc",         "EDITOR",       BLT_EDITOR, LEVEL_HOST },
+	{ "editortype",      "",             BLT_SKIP,   LEVEL_HOST },
+	{ "editoratype",     "",             BLT_SKIP,   LEVEL_HOST },
+	{ "editorbtype",     "",             BLT_SKIP,   LEVEL_HOST },
+	{ "editorctype",     "",             BLT_SKIP,   LEVEL_HOST },
+	{ "director",        "DIRECTOR",     PERSON, LEVEL_HOST },
+	{ "producer",        "PRODUCER",     PERSON, LEVEL_HOST },
+	{ "execproducer",    "PRODUCER",     PERSON, LEVEL_HOST },
+	{ "writer",          "AUTHOR",       PERSON, LEVEL_HOST },
 	{ "redactor",        "REDACTOR",     PERSON, LEVEL_HOST },
 	{ "annotator",       "ANNOTATOR",    PERSON, LEVEL_HOST },
 	{ "commentator",     "COMMENTATOR",  PERSON, LEVEL_HOST },
 	{ "translator",      "TRANSLATOR",   PERSON, LEVEL_HOST },
 	{ "eventtitle",      "EVENT:CONF",   SIMPLE, LEVEL_MAIN },
 	{ "year",            "YEAR",         SIMPLE, LEVEL_MAIN },
-	{ "introduction",    "?introduction?",SIMPLE, LEVEL_HOST }, /*WRONG*/
-	{ "foreward",        "?foreward?",   SIMPLE, LEVEL_HOST }, /*WRONG*/
-	{ "afterward",       "?afterward?",  SIMPLE, LEVEL_HOST }, /*WRONG*/
-	{ "title",           "TITLE",        SIMPLE, LEVEL_MAIN },
-	{ "subtitle",        "SUBTITLE",     SIMPLE, LEVEL_MAIN },
-	{ "titleaddon",      "?titleaddon?", SIMPLE, LEVEL_MAIN },   /*WRONG*/
-	{ "booktitle",       "TITLE",        SIMPLE, LEVEL_HOST },
-	{ "booksubtitle",    "SUBTITLE",     SIMPLE, LEVEL_HOST },
-	{ "booktitleaddon",  "?booktitleaddon?",       SIMPLE, LEVEL_HOST },   /*WRONG*/
-	{ "maintitle",       "TITLE",        SIMPLE, LEVEL_HOST+1 },
-	{ "mainsubtitle",    "SUBTITLE",     SIMPLE, LEVEL_HOST+1 },
-	{ "maintitleaddon",  "?maintitleaddon?",        SIMPLE, LEVEL_HOST+1 },   /*WRONG*/
+	{ "month",           "MONTH",        SIMPLE, LEVEL_MAIN },
+	{ "date",            "DATE",         SIMPLE, LEVEL_MAIN },   /*WRONG*/
+	{ "introduction",    "INTROAUTHOR",  PERSON, LEVEL_HOST },
+	{ "foreword",        "INTROAUTHOR",  PERSON, LEVEL_HOST },
+	{ "afterword",       "AFTERAUTHOR",  PERSON, LEVEL_HOST },
+	{ "title",           "TITLE",        TITLE,  LEVEL_MAIN },
+	{ "subtitle",        "SUBTITLE",     TITLE,  LEVEL_MAIN },
+	{ "titleaddon",      "TITLEADDON",   TITLE,  LEVEL_MAIN },
+	{ "shorttitle",      "SHORTTITLE",   SIMPLE, LEVEL_MAIN },
+
+	{ "booktitle",       "TITLE",        TITLE,  LEVEL_HOST },
+	{ "booksubtitle",    "SUBTITLE",     TITLE,  LEVEL_HOST },
+	{ "booktitleaddon",  "TITLEADDON",   TITLE,  LEVEL_HOST },
+
+	{ "maintitle",       "TITLE",        TITLE,  LEVEL_SERIES },
+	{ "mainsubtitle",    "SUBTITLE",     TITLE,  LEVEL_SERIES },
+	{ "maintitleaddon",  "TITLEADDON",   TITLE,  LEVEL_SERIES },
+
 	{ "series",          "TITLE",        SIMPLE, LEVEL_HOST+2 },
+
 	{ "venue",           "ADDRESS",      SIMPLE, LEVEL_MAIN },
 	{ "organization",    "ORGANIZER:CORP", SIMPLE, LEVEL_MAIN },
 	{ "language",        "LANGUAGE",     SIMPLE, LEVEL_MAIN },
 	{ "origlanguage",    "LANGUAGE",     SIMPLE, LEVEL_ORIG },
+	{ "origdate",        "DATE",         SIMPLE, LEVEL_ORIG },
+	{ "origyear",        "YEAR",         SIMPLE, LEVEL_ORIG },
+	{ "origtitle",       "TITLE",        SIMPLE, LEVEL_ORIG },
+	{ "origlocation",    "ADDRESS",      SIMPLE, LEVEL_ORIG },
+	{ "origpublisher",   "PUBLISHER",    SIMPLE, LEVEL_ORIG },
 	{ "volume",          "VOLUME",       SIMPLE, LEVEL_HOST },
 	{ "part",            "PART",         SIMPLE, LEVEL_HOST },
 	{ "edition",         "EDITION",      SIMPLE, LEVEL_MAIN },
 	{ "volumes",         "NUMVOLUMES",   SIMPLE, LEVEL_HOST },
 	{ "number",          "NUMBER",       SIMPLE, LEVEL_MAIN },
 	{ "note",            "NOTES",        SIMPLE, LEVEL_MAIN },
-	{ "annote",          "NOTES",        SIMPLE, LEVEL_MAIN },
-	{ "annotation",      "NOTES",        SIMPLE, LEVEL_MAIN },
+	{ "annote",          "ANNOTATION",   SIMPLE, LEVEL_MAIN },
+	{ "annotation",      "ANNOTATION",   SIMPLE, LEVEL_MAIN },
 	{ "publisher",       "PUBLISHER",    SIMPLE, LEVEL_HOST },
-	{ "location",        "LOCATION",     SIMPLE, LEVEL_HOST },
+	{ "location",        "ADDRESS",      SIMPLE, LEVEL_HOST },
 	{ "isbn",            "ISBN",         SIMPLE, LEVEL_MAIN },
 	{ "chapter",         "CHAPTER",      SIMPLE, LEVEL_MAIN },
 	{ "pages",           "PAGES",        PAGES,  LEVEL_MAIN }, /* WRONG */
-	{ "addendum",        "?addendnum?",  SIMPLE, LEVEL_MAIN },
+	{ "addendum",        "ADDENDUM",     SIMPLE, LEVEL_MAIN },
 	{ "doi",             "DOI",          SIMPLE, LEVEL_MAIN },
-	{ "eprint",          "",       BIBTEX_EPRINT, LEVEL_MAIN },
-	{ "eprinttype",      "",   BIBTEX_EPRINT, LEVEL_MAIN },
-	{ "url",             "",         BIBTEX_URL, LEVEL_MAIN },
+	{ "pubstate",        "PUBSTATE",     SIMPLE, LEVEL_MAIN },
+	{ "eprint",          "",       BT_EPRINT, LEVEL_MAIN },
+	{ "eprinttype",      "",   BT_EPRINT, LEVEL_MAIN },
+	{ "url",             "",         BT_URL, LEVEL_MAIN },
 	{ "urldate",         "URLDATE",      SIMPLE, LEVEL_MAIN },
 	{ "urlday",          "?urlday?",     SIMPLE, LEVEL_MAIN },
 	{ "urlmonth",        "?urlmonth?",   SIMPLE, LEVEL_MAIN },
 	{ "urlyear",         "?urlyear?",    SIMPLE, LEVEL_MAIN },
 	{ "address",         "ADDRESS",      SIMPLE, LEVEL_MAIN },
+	{ "hyphenation",     "LANGCATALOG",            SIMPLE,      LEVEL_MAIN   },
 	{ "refnum",          "REFNUM",       SIMPLE, LEVEL_MAIN },
-	{ " ",               "INTERNAL_TYPE|INPROCEEDINGS",    ALWAYS, LEVEL_MAIN },
-	{ " ",               "RESOURCE|text",ALWAYS, LEVEL_MAIN },
-	{ " ",               "ISSUANCE|monographic", ALWAYS, LEVEL_MAIN },
-	{ " ",               "GENRE|conference publication",   ALWAYS, LEVEL_HOST }
+	{ "",                "INTERNAL_TYPE|INPROCEEDINGS",    ALWAYS, LEVEL_MAIN },
+	{ "",                "RESOURCE|text",ALWAYS, LEVEL_MAIN },
+	{ "",                "ISSUANCE|monographic", ALWAYS, LEVEL_MAIN },
+	{ "",                "GENRE|conference publication",   ALWAYS, LEVEL_HOST }
 };
 
 static lookups manual[] = {
 	{ "author",          "AUTHOR",       PERSON, LEVEL_MAIN },
-	{ "editor",          "EDITOR",       PERSON, LEVEL_MAIN },
+	{ "editor",          "EDITOR",       BLT_EDITOR, LEVEL_MAIN },
+	{ "editora",         "EDITOR",       BLT_EDITOR, LEVEL_MAIN },
+	{ "editorb",         "EDITOR",       BLT_EDITOR, LEVEL_MAIN },
+	{ "editorc",         "EDITOR",       BLT_EDITOR, LEVEL_MAIN },
+	{ "editortype",      "",             BLT_SKIP,   LEVEL_MAIN },
+	{ "editoratype",     "",             BLT_SKIP,   LEVEL_MAIN },
+	{ "editorbtype",     "",             BLT_SKIP,   LEVEL_MAIN },
+	{ "editorctype",     "",             BLT_SKIP,   LEVEL_MAIN },
+	{ "director",        "DIRECTOR",     PERSON, LEVEL_MAIN },
+	{ "producer",        "PRODUCER",     PERSON, LEVEL_MAIN },
+	{ "execproducer",    "PRODUCER",     PERSON, LEVEL_MAIN },
+	{ "writer",          "AUTHOR",       PERSON, LEVEL_MAIN },
 	{ "redactor",        "REDACTOR",     PERSON, LEVEL_MAIN },
 	{ "annotator",       "ANNOTATOR",    PERSON, LEVEL_MAIN },
 	{ "commentator",     "COMMENTATOR",  PERSON, LEVEL_MAIN },
 	{ "translator",      "TRANSLATOR",   PERSON, LEVEL_MAIN },
 	{ "year",            "YEAR",         SIMPLE, LEVEL_MAIN },
-	{ "introduction",    "?????",        SIMPLE, LEVEL_MAIN }, /*WRONG*/
-	{ "foreward",        "?????",        SIMPLE, LEVEL_MAIN }, /*WRONG*/
-	{ "afterward",       "?????",        SIMPLE, LEVEL_MAIN }, /*WRONG*/
-	{ "title",           "TITLE",        SIMPLE, LEVEL_MAIN },
-	{ "subtitle",        "SUBTITLE",     SIMPLE, LEVEL_MAIN },
-	{ "titleaddon",      "?????",        SIMPLE, LEVEL_MAIN },   /*WRONG*/
+	{ "month",           "MONTH",        SIMPLE, LEVEL_MAIN },
+	{ "date",            "DATE",         SIMPLE, LEVEL_MAIN }, /*WRONG*/
+	{ "introduction",    "INTROAUTHOR",  PERSON, LEVEL_MAIN },
+	{ "foreword",        "INTROAUTHOR",  PERSON, LEVEL_MAIN },
+	{ "afterword",       "AFTERAUTHOR",  PERSON, LEVEL_MAIN },
+	{ "title",           "TITLE",        TITLE,  LEVEL_MAIN },
+	{ "subtitle",        "SUBTITLE",     TITLE,  LEVEL_MAIN },
+	{ "titleaddon",      "TITLEADDON",   TITLE,  LEVEL_MAIN },
+	{ "shorttitle",      "SHORTTITLE",   SIMPLE, LEVEL_MAIN },
 	{ "language",        "LANGUAGE",     SIMPLE, LEVEL_MAIN },
 	{ "edition",         "EDITION",      SIMPLE, LEVEL_MAIN },
-	{ "version",         "???????",      SIMPLE, LEVEL_MAIN },
-	{ "type",            "GENRE",  BIBTEX_GENRE, LEVEL_MAIN },
-	{ "series",          "?????",        SIMPLE, LEVEL_HOST }, /* WRONG */
+	{ "version",         "EDITION",      SIMPLE, LEVEL_MAIN },
+	{ "type",            "GENRE",  BT_GENRE, LEVEL_MAIN },
+	{ "series",          "TITLE",        SIMPLE, LEVEL_HOST },
 	{ "number",          "NUMBER",       SIMPLE, LEVEL_MAIN },
 	{ "note",            "NOTES",        SIMPLE, LEVEL_MAIN },
-	{ "annote",          "NOTES",        SIMPLE, LEVEL_MAIN },
-	{ "annotation",      "NOTES",        SIMPLE, LEVEL_MAIN },
+	{ "annote",          "ANNOTATION",   SIMPLE, LEVEL_MAIN },
+	{ "annotation",      "ANNOTATION",   SIMPLE, LEVEL_MAIN },
 	{ "organization",    "ORGANIZER:CORP", SIMPLE, LEVEL_MAIN },
 	{ "publisher",       "PUBLISHER",    SIMPLE, LEVEL_MAIN },
-	{ "location",        "LOCATION",     SIMPLE, LEVEL_MAIN },
+	{ "location",        "ADDRESS",      SIMPLE, LEVEL_MAIN },
 	{ "isbn",            "ISBN",         SIMPLE, LEVEL_MAIN },
 	{ "chapter",         "CHAPTER",      SIMPLE, LEVEL_MAIN },
 	{ "pages",           "?????????",    SIMPLE, LEVEL_MAIN }, /* WRONG */
 	{ "pagetotal",       "?????????",    SIMPLE, LEVEL_MAIN },
-	{ "addendum",        "?????????",    SIMPLE, LEVEL_MAIN },
+	{ "addendum",        "ADDENDUM",     SIMPLE, LEVEL_MAIN },
 	{ "doi",             "DOI",          SIMPLE, LEVEL_MAIN },
-	{ "eprint",          "",       BIBTEX_EPRINT, LEVEL_MAIN },
-	{ "eprinttype",      "",   BIBTEX_EPRINT, LEVEL_MAIN },
-	{ "url",             "",         BIBTEX_URL, LEVEL_MAIN },
+	{ "pubstate",        "PUBSTATE",     SIMPLE, LEVEL_MAIN },
+	{ "eprint",          "",       BT_EPRINT, LEVEL_MAIN },
+	{ "eprinttype",      "",   BT_EPRINT, LEVEL_MAIN },
+	{ "url",             "",         BT_URL, LEVEL_MAIN },
 	{ "urldate",         "URLDATE",      SIMPLE, LEVEL_MAIN },
 	{ "urlday",          "?????????",    SIMPLE, LEVEL_MAIN },
 	{ "urlmonth",        "?????????",    SIMPLE, LEVEL_MAIN },
 	{ "urlyear",         "?????????",    SIMPLE, LEVEL_MAIN },
 	{ "address",         "ADDRESS",      SIMPLE, LEVEL_MAIN },
+	{ "hyphenation",     "LANGCATALOG",            SIMPLE,      LEVEL_MAIN   },
 	{ "refnum",          "REFNUM",       SIMPLE, LEVEL_MAIN },
-	{ " ",               "INTERNAL_TYPE|REPORT",       ALWAYS, LEVEL_MAIN },
-	{ " ",               "RESOURCE|text",     ALWAYS, LEVEL_MAIN },
-	{ " ",               "GENRE|instruction", ALWAYS, LEVEL_MAIN }
+	{ "",                "INTERNAL_TYPE|REPORT",       ALWAYS, LEVEL_MAIN },
+	{ "",                "RESOURCE|text",     ALWAYS, LEVEL_MAIN },
+	{ "",                "GENRE|instruction", ALWAYS, LEVEL_MAIN }
 };
 
 static lookups misc[] = {
 	{ "author",          "AUTHOR",       PERSON, LEVEL_MAIN },
-	{ "editor",          "EDITOR",       PERSON, LEVEL_MAIN },
-	{ "title",           "TITLE",        SIMPLE, LEVEL_MAIN },
-	{ "subtitle",        "SUBTITLE",     SIMPLE, LEVEL_MAIN },
-	{ "titleaddon",      "?????",        SIMPLE, LEVEL_MAIN },   /*WRONG*/
+	{ "editor",          "EDITOR",       BLT_EDITOR, LEVEL_MAIN },
+	{ "editora",         "EDITOR",       BLT_EDITOR, LEVEL_MAIN },
+	{ "editorb",         "EDITOR",       BLT_EDITOR, LEVEL_MAIN },
+	{ "editorc",         "EDITOR",       BLT_EDITOR, LEVEL_MAIN },
+	{ "editortype",      "",             BLT_SKIP,   LEVEL_MAIN },
+	{ "editoratype",     "",             BLT_SKIP,   LEVEL_MAIN },
+	{ "editorbtype",     "",             BLT_SKIP,   LEVEL_MAIN },
+	{ "editorctype",     "",             BLT_SKIP,   LEVEL_MAIN },
+	{ "director",        "DIRECTOR",     PERSON, LEVEL_MAIN },
+	{ "producer",        "PRODUCER",     PERSON, LEVEL_MAIN },
+	{ "execproducer",    "PRODUCER",     PERSON, LEVEL_MAIN },
+	{ "writer",          "AUTHOR",       PERSON, LEVEL_MAIN },
+	{ "title",           "TITLE",        TITLE,  LEVEL_MAIN },
+	{ "subtitle",        "SUBTITLE",     TITLE,  LEVEL_MAIN },
+	{ "titleaddon",      "TITLEADDON",   TITLE,  LEVEL_MAIN },
+	{ "shorttitle",      "SHORTTITLE",   SIMPLE, LEVEL_MAIN },
 	{ "day",             "DAY",          SIMPLE, LEVEL_MAIN },
 	{ "month",           "MONTH",        SIMPLE, LEVEL_MAIN },
 	{ "year",            "YEAR",         SIMPLE, LEVEL_MAIN },
+	{ "date",            "DATE",         SIMPLE, LEVEL_MAIN },   /*WRONG*/
 	{ "language",        "LANGUAGE",     SIMPLE, LEVEL_MAIN },
 	{ "howpublished",    "",       HOWPUBLISHED, LEVEL_MAIN },
-	{ "version",         "???????",      SIMPLE, LEVEL_MAIN },
-	{ "type",            "GENRE",  BIBTEX_GENRE, LEVEL_MAIN },
+	{ "version",         "EDITION",      SIMPLE, LEVEL_MAIN },
+	{ "type",            "GENRE",  BT_GENRE, LEVEL_MAIN },
 	{ "note",            "NOTES",        SIMPLE, LEVEL_MAIN },
-	{ "annote",          "NOTES",        SIMPLE, LEVEL_MAIN },
-	{ "annotation",      "NOTES",        SIMPLE, LEVEL_MAIN },
+	{ "annote",          "ANNOTATION",   SIMPLE, LEVEL_MAIN },
+	{ "annotation",      "ANNOTATION",   SIMPLE, LEVEL_MAIN },
 	{ "organization",    "ORGANIZER:CORP",SIMPLE, LEVEL_MAIN },
 	{ "publisher",       "PUBLISHER",    SIMPLE, LEVEL_MAIN },
-	{ "location",        "LOCATION",     SIMPLE, LEVEL_MAIN },
-	{ "addendum",        "?????????",    SIMPLE, LEVEL_MAIN },
+	{ "location",        "ADDRESS",      SIMPLE, LEVEL_MAIN },
+	{ "addendum",        "ADDENDUM",     SIMPLE, LEVEL_MAIN },
 	{ "address",         "ADDRESS",      SIMPLE, LEVEL_MAIN },
 	{ "doi",             "DOI",          SIMPLE, LEVEL_MAIN },
-	{ "eprint",          "",       BIBTEX_EPRINT, LEVEL_MAIN },
-	{ "eprinttype",      "",   BIBTEX_EPRINT, LEVEL_MAIN },
-	{ "url",             "",         BIBTEX_URL, LEVEL_MAIN },
+	{ "pubstate",        "PUBSTATE",     SIMPLE, LEVEL_MAIN },
+	{ "eprint",          "",       BT_EPRINT, LEVEL_MAIN },
+	{ "eprinttype",      "",   BT_EPRINT, LEVEL_MAIN },
+	{ "url",             "",         BT_URL, LEVEL_MAIN },
 	{ "urldate",         "URLDATE",      SIMPLE, LEVEL_MAIN },
 	{ "urlday",          "?????????",    SIMPLE, LEVEL_MAIN },
 	{ "urlmonth",        "?????????",    SIMPLE, LEVEL_MAIN },
 	{ "urlyear",         "?????????",    SIMPLE, LEVEL_MAIN },
+	{ "hyphenation",     "LANGCATALOG",            SIMPLE,      LEVEL_MAIN   },
 	{ "refnum",          "REFNUM",       SIMPLE, LEVEL_MAIN },
-	{ " ",               "INTERNAL_TYPE|MISC",       ALWAYS, LEVEL_MAIN },
+	{ "",                "INTERNAL_TYPE|MISC",       ALWAYS, LEVEL_MAIN },
 };
 
 static lookups online[] = {
 	{ "author",          "AUTHOR",       PERSON, LEVEL_MAIN },
-	{ "editor",          "EDITOR",       PERSON, LEVEL_MAIN },
-	{ "title",           "TITLE",        SIMPLE, LEVEL_MAIN },
-	{ "subtitle",        "SUBTITLE",     SIMPLE, LEVEL_MAIN },
-	{ "titleaddon",      "?????",        SIMPLE, LEVEL_MAIN },   /*WRONG*/
+	{ "editor",          "EDITOR",       BLT_EDITOR, LEVEL_MAIN },
+	{ "editora",         "EDITOR",       BLT_EDITOR, LEVEL_MAIN },
+	{ "editorb",         "EDITOR",       BLT_EDITOR, LEVEL_MAIN },
+	{ "editorc",         "EDITOR",       BLT_EDITOR, LEVEL_MAIN },
+	{ "editortype",      "",             BLT_SKIP,   LEVEL_MAIN },
+	{ "editoratype",     "",             BLT_SKIP,   LEVEL_MAIN },
+	{ "editorbtype",     "",             BLT_SKIP,   LEVEL_MAIN },
+	{ "editorctype",     "",             BLT_SKIP,   LEVEL_MAIN },
+	{ "director",        "DIRECTOR",     PERSON, LEVEL_MAIN },
+	{ "producer",        "PRODUCER",     PERSON, LEVEL_MAIN },
+	{ "execproducer",    "PRODUCER",     PERSON, LEVEL_MAIN },
+	{ "writer",          "AUTHOR",       PERSON, LEVEL_MAIN },
+	{ "title",           "TITLE",        TITLE,  LEVEL_MAIN },
+	{ "subtitle",        "SUBTITLE",     TITLE,  LEVEL_MAIN },
+	{ "titleaddon",      "TITLEADDON",   TITLE,  LEVEL_MAIN },
+	{ "shorttitle",      "SHORTTITLE",   SIMPLE, LEVEL_MAIN },
 	{ "date",            "DATE",         SIMPLE, LEVEL_MAIN },
 	{ "day",             "DAY",          SIMPLE, LEVEL_MAIN },
 	{ "month",           "MONTH",        SIMPLE, LEVEL_MAIN },
 	{ "year",            "YEAR",         SIMPLE, LEVEL_MAIN },
 	{ "language",        "LANGUAGE",     SIMPLE, LEVEL_MAIN },
-	{ "version",         "???????",      SIMPLE, LEVEL_MAIN },
-	{ "type",            "GENRE",  BIBTEX_GENRE, LEVEL_MAIN },
+	{ "version",         "EDITION",      SIMPLE, LEVEL_MAIN },
+	{ "type",            "GENRE",  BT_GENRE, LEVEL_MAIN },
 	{ "note",            "NOTES",        SIMPLE, LEVEL_MAIN },
-	{ "annote",          "NOTES",        SIMPLE, LEVEL_MAIN },
-	{ "annotation",      "NOTES",        SIMPLE, LEVEL_MAIN },
+	{ "annote",          "ANNOTATION",   SIMPLE, LEVEL_MAIN },
+	{ "annotation",      "ANNOTATION",   SIMPLE, LEVEL_MAIN },
 	{ "organization",    "ORGANIZER:CORP",    SIMPLE, LEVEL_MAIN },
 	{ "publisher",       "PUBLISHER",    SIMPLE, LEVEL_MAIN },
-	{ "location",        "LOCATION",     SIMPLE, LEVEL_MAIN },
-	{ "addendum",        "?????????",    SIMPLE, LEVEL_MAIN },
+	{ "location",        "ADDRESS",      SIMPLE, LEVEL_MAIN },
+	{ "addendum",        "ADDENDUM",     SIMPLE, LEVEL_MAIN },
 	{ "doi",             "DOI",          SIMPLE, LEVEL_MAIN },
-	{ "eprint",          "",       BIBTEX_EPRINT, LEVEL_MAIN },
-	{ "eprinttype",      "",   BIBTEX_EPRINT, LEVEL_MAIN },
-	{ "url",             "",         BIBTEX_URL, LEVEL_MAIN },
+	{ "pubstate",        "PUBSTATE",     SIMPLE, LEVEL_MAIN },
+	{ "eprint",          "",       BT_EPRINT, LEVEL_MAIN },
+	{ "eprinttype",      "",   BT_EPRINT, LEVEL_MAIN },
+	{ "url",             "",         BT_URL, LEVEL_MAIN },
 	{ "urldate",         "URLDATE",      SIMPLE, LEVEL_MAIN },
 	{ "urlday",          "?????????",    SIMPLE, LEVEL_MAIN },
 	{ "urlmonth",        "?????????",    SIMPLE, LEVEL_MAIN },
 	{ "urlyear",         "?????????",    SIMPLE, LEVEL_MAIN },
 	{ "address",         "ADDRESS",      SIMPLE, LEVEL_MAIN },
+	{ "hyphenation",     "LANGCATALOG",            SIMPLE,      LEVEL_MAIN   },
 	{ "refnum",          "REFNUM",       SIMPLE, LEVEL_MAIN },
-        { " ",  "RESOURCE|software, multimedia",    ALWAYS, LEVEL_MAIN },
-	{ " ",         "GENRE|web page",       ALWAYS, LEVEL_MAIN },
+        { "",                "RESOURCE|software, multimedia",    ALWAYS, LEVEL_MAIN },
+	{ "",                "NGENRE|web page",       ALWAYS, LEVEL_MAIN },
 };
 
 static lookups patent[] = {
 	{ "author",          "AUTHOR",       PERSON, LEVEL_MAIN },
 	{ "holder",          "ASSIGNEE",     PERSON, LEVEL_MAIN },
-	{ "title",           "TITLE",        SIMPLE, LEVEL_MAIN },
-	{ "subtitle",        "SUBTITLE",     SIMPLE, LEVEL_MAIN },
-	{ "titleaddon",      "?????",        SIMPLE, LEVEL_MAIN },   /*WRONG*/
+	{ "title",           "TITLE",        TITLE,  LEVEL_MAIN },
+	{ "subtitle",        "SUBTITLE",     TITLE,  LEVEL_MAIN },
+	{ "titleaddon",      "TITLEADDON",   TITLE,  LEVEL_MAIN },
+	{ "shorttitle",      "SHORTTITLE",   SIMPLE, LEVEL_MAIN },
 	{ "date",            "DATE",         SIMPLE, LEVEL_MAIN },
 	{ "day",             "DAY",          SIMPLE, LEVEL_MAIN },
 	{ "month",           "MONTH",        SIMPLE, LEVEL_MAIN },
 	{ "year",            "YEAR",         SIMPLE, LEVEL_MAIN },
-	{ "version",         "???????",      SIMPLE, LEVEL_MAIN },
-	{ "type",            "GENRE",  BIBTEX_GENRE, LEVEL_MAIN },
+	{ "version",         "EDITION",      SIMPLE, LEVEL_MAIN },
+	{ "type",            "GENRE",  BT_GENRE, LEVEL_MAIN },
 	{ "note",            "NOTES",        SIMPLE, LEVEL_MAIN },
-	{ "annote",          "NOTES",        SIMPLE, LEVEL_MAIN },
-	{ "annotation",      "NOTES",        SIMPLE, LEVEL_MAIN },
+	{ "annote",          "ANNOTATION",   SIMPLE, LEVEL_MAIN },
+	{ "annotation",      "ANNOTATION",   SIMPLE, LEVEL_MAIN },
 	{ "organization",    "ORGANIZER:CORP",    SIMPLE, LEVEL_MAIN },
-	{ "location",        "LOCATION",     SIMPLE, LEVEL_MAIN },
+	{ "location",        "ADDRESS",      SIMPLE, LEVEL_MAIN },
 	{ "number",          "NUMBER",       SIMPLE, LEVEL_MAIN },
-	{ "addendum",        "?????????",    SIMPLE, LEVEL_MAIN },
-	{ "url",             "",         BIBTEX_URL, LEVEL_MAIN },
+	{ "addendum",        "ADDENDUM",     SIMPLE, LEVEL_MAIN },
+	{ "url",             "",         BT_URL, LEVEL_MAIN },
 	{ "urldate",         "URLDATE",      SIMPLE, LEVEL_MAIN },
 	{ "urlday",          "?????????",    SIMPLE, LEVEL_MAIN },
 	{ "urlmonth",        "?????????",    SIMPLE, LEVEL_MAIN },
 	{ "urlyear",         "?????????",    SIMPLE, LEVEL_MAIN },
 	{ "address",         "ADDRESS",      SIMPLE, LEVEL_MAIN },
+	{ "hyphenation",     "LANGCATALOG",            SIMPLE,      LEVEL_MAIN   },
+	{ "pubstate",        "PUBSTATE",     SIMPLE, LEVEL_MAIN },
 	{ "refnum",          "REFNUM",       SIMPLE, LEVEL_MAIN },
-	{ " ",               "RESOURCE|text",   ALWAYS, LEVEL_MAIN },
-	{ " ",               "INTERNAL_TYPE|PATENT",    ALWAYS, LEVEL_MAIN },
-	{ " ",               "GENRE|patent",    ALWAYS, LEVEL_MAIN },
+	{ "",                "RESOURCE|text",   ALWAYS, LEVEL_MAIN },
+	{ "",                "INTERNAL_TYPE|PATENT",    ALWAYS, LEVEL_MAIN },
+	{ "",                "GENRE|patent",    ALWAYS, LEVEL_MAIN },
 };
 
 /*
  * An entire issue of a periodical
+ *
+ * "The title of the periodical is given in the title field. If the issue has 
+ * its own title in addition to the main title of the periodical, it goes in 
+ * the issuetitle field. The editor is omissible..."
  */
 static lookups periodical[] = {
-	{ "editor",          "EDITOR",       PERSON, LEVEL_MAIN },
-	{ "title",           "TITLE",        SIMPLE, LEVEL_MAIN },
-	{ "subtitle",        "SUBTITLE",     SIMPLE, LEVEL_MAIN },
-	{ "titleaddon",      "?????",        SIMPLE, LEVEL_MAIN },   /*WRONG*/
-	{ "issuetitle",      "TITLE",        SIMPLE, LEVEL_SERIES }, /*WRONG*/
-	{ "issuesubtitle",   "SUBTITLE",     SIMPLE, LEVEL_SERIES }, /*WRONG*/
-	{ "series",          "TITLE",        SIMPLE, LEVEL_SERIES },
-	{ "volume",          "VOLUME",       SIMPLE, LEVEL_MAIN },
-	{ "number",          "NUMBER",       SIMPLE, LEVEL_MAIN },
-	{ "issue",           "ISSUE",        SIMPLE, LEVEL_MAIN },
-	{ "date",            "DATE",         SIMPLE, LEVEL_MAIN },   /*WRONG*/
-	{ "day",             "PARTDAY",      SIMPLE, LEVEL_MAIN },
-	{ "month",           "PARTMONTH",    SIMPLE, LEVEL_MAIN },
-	{ "year",            "PARTYEAR",     SIMPLE, LEVEL_MAIN },
-	{ "pages",           "PAGES",        PAGES,  LEVEL_MAIN },
-	{ "note",            "NOTES",        SIMPLE, LEVEL_MAIN },
-	{ "annote",          "NOTES",        SIMPLE, LEVEL_MAIN },
-	{ "annotation",      "NOTES",        SIMPLE, LEVEL_MAIN },
-	{ "issn",            "ISSN",         SIMPLE, LEVEL_HOST },
-	{ "addendum",        "?????",        SIMPLE, LEVEL_MAIN },
-	{ "doi",             "DOI",          SIMPLE, LEVEL_MAIN },
-	{ "eprint",          "",       BIBTEX_EPRINT, LEVEL_MAIN },
-	{ "eprinttype",      "",   BIBTEX_EPRINT, LEVEL_MAIN },
-	{ "url",             "",         BIBTEX_URL, LEVEL_MAIN },
-	{ "urldate",         "URLDATE",      SIMPLE, LEVEL_MAIN },
-	{ "urlday",          "?????",        SIMPLE, LEVEL_MAIN }, /* WRONG */
-	{ "urlmonth",        "?????",        SIMPLE, LEVEL_MAIN }, /* WRONG */
-	{ "urlyear",         "?????",        SIMPLE, LEVEL_MAIN }, /* WRONG */
-	{ "address",         "ADDRESS",      SIMPLE, LEVEL_MAIN },
-	{ "refnum",          "REFNUM",       SIMPLE, LEVEL_MAIN },
-	{ " ",            "ISSUANCE|continuing",    ALWAYS, LEVEL_MAIN },
-	{ " ",            "RESOURCE|text",          ALWAYS, LEVEL_MAIN },
-	{ " ",            "GENRE|periodical",       ALWAYS, LEVEL_MAIN }
+	{ "editor",          "EDITOR",              BLT_EDITOR, LEVEL_MAIN   },
+	{ "editora",         "EDITOR",              BLT_EDITOR, LEVEL_MAIN   },
+	{ "editorb",         "EDITOR",              BLT_EDITOR, LEVEL_MAIN   },
+	{ "editorc",         "EDITOR",              BLT_EDITOR, LEVEL_MAIN   },
+	{ "editortype",      "",                    BLT_SKIP,   LEVEL_MAIN   },
+	{ "editoratype",     "",                    BLT_SKIP,   LEVEL_MAIN   },
+	{ "editorbtype",     "",                    BLT_SKIP,   LEVEL_MAIN   },
+	{ "editorctype",     "",                    BLT_SKIP,   LEVEL_MAIN   },
+	{ "director",        "DIRECTOR",            PERSON,     LEVEL_MAIN   },
+	{ "producer",        "PRODUCER",            PERSON,     LEVEL_MAIN   },
+	{ "execproducer",    "PRODUCER",            PERSON,     LEVEL_MAIN   },
+	{ "writer",          "AUTHOR",              PERSON,     LEVEL_MAIN   },
+	{ "title",           "TITLE",               TITLE,      LEVEL_HOST   },
+	{ "subtitle",        "SUBTITLE",            TITLE,      LEVEL_HOST   },
+	{ "titleaddon",      "TITLEADDON",          TITLE,      LEVEL_HOST   },
+	{ "shorttitle",      "SHORTTITLE",          SIMPLE,     LEVEL_HOST   },
+	{ "issuetitle",      "TITLE",               TITLE,      LEVEL_MAIN   },
+	{ "issuesubtitle",   "SUBTITLE",            TITLE,      LEVEL_MAIN   },
+	{ "issuetitleaddon", "TITLEADDON",          TITLE,      LEVEL_MAIN   },
+	{ "series",          "TITLE",               SIMPLE,     LEVEL_SERIES },
+	{ "volume",          "VOLUME",              SIMPLE,     LEVEL_MAIN   },
+	{ "number",          "NUMBER",              SIMPLE,     LEVEL_MAIN   },
+	{ "issue",           "ISSUE",               SIMPLE,     LEVEL_MAIN   },
+	{ "date",            "DATE",                SIMPLE,     LEVEL_MAIN   },   /*WRONG*/
+	{ "day",             "PARTDAY",             SIMPLE,     LEVEL_MAIN   },
+	{ "month",           "PARTMONTH",           SIMPLE,     LEVEL_MAIN   },
+	{ "year",            "PARTYEAR",            SIMPLE,     LEVEL_MAIN   },
+	{ "pages",           "PAGES",               PAGES,      LEVEL_MAIN   },
+	{ "note",            "NOTES",               SIMPLE,     LEVEL_MAIN   },
+	{ "annote",          "ANNOTATION",          SIMPLE,     LEVEL_MAIN   },
+	{ "annotation",      "ANNOTATION",          SIMPLE,     LEVEL_MAIN   },
+	{ "issn",            "ISSN",                SIMPLE,     LEVEL_HOST   },
+	{ "addendum",        "ADDENDUM",            SIMPLE,     LEVEL_MAIN   },
+	{ "doi",             "DOI",                 SIMPLE,     LEVEL_MAIN   },
+	{ "pubstate",        "PUBSTATE",     SIMPLE, LEVEL_MAIN },
+	{ "eprint",          "",                    BT_EPRINT,  LEVEL_MAIN   },
+	{ "eprinttype",      "",                    BT_EPRINT,  LEVEL_MAIN   },
+	{ "url",             "",                    BT_URL,     LEVEL_MAIN   },
+	{ "urldate",         "URLDATE",             SIMPLE,     LEVEL_MAIN   },
+	{ "urlday",          "?????",               SIMPLE,     LEVEL_MAIN   }, /* WRONG */
+	{ "urlmonth",        "?????",               SIMPLE,     LEVEL_MAIN   }, /* WRONG */
+	{ "urlyear",         "?????",               SIMPLE,     LEVEL_MAIN   }, /* WRONG */
+	{ "address",         "ADDRESS",             SIMPLE,     LEVEL_MAIN   },
+	{ "hyphenation",     "LANGCATALOG",            SIMPLE,      LEVEL_MAIN   },
+	{ "refnum",          "REFNUM",              SIMPLE,     LEVEL_MAIN   },
+	{ "",                "ISSUANCE|continuing", ALWAYS,     LEVEL_HOST   },
+	{ "",                "RESOURCE|text",       ALWAYS,     LEVEL_MAIN   },
+	{ "",                "GENRE|issue",         ALWAYS,     LEVEL_MAIN   },
+	{ "",                "GENRE|periodical",    ALWAYS,     LEVEL_HOST   }
 };
 
 static lookups proceedings[] = {
-	{ "editor",          "EDITOR",       PERSON, LEVEL_MAIN },
+	{ "editor",          "EDITOR",       BLT_EDITOR, LEVEL_MAIN },
+	{ "editora",         "EDITOR",       BLT_EDITOR, LEVEL_MAIN },
+	{ "editorb",         "EDITOR",       BLT_EDITOR, LEVEL_MAIN },
+	{ "editorc",         "EDITOR",       BLT_EDITOR, LEVEL_MAIN },
+	{ "editortype",      "",             BLT_SKIP,   LEVEL_MAIN },
+	{ "editoratype",     "",             BLT_SKIP,   LEVEL_MAIN },
+	{ "editorbtype",     "",             BLT_SKIP,   LEVEL_MAIN },
+	{ "editorctype",     "",             BLT_SKIP,   LEVEL_MAIN },
+	{ "director",        "DIRECTOR",     PERSON, LEVEL_MAIN },
+	{ "producer",        "PRODUCER",     PERSON, LEVEL_MAIN },
+	{ "execproducer",    "PRODUCER",     PERSON, LEVEL_MAIN },
+	{ "writer",          "AUTHOR",       PERSON, LEVEL_MAIN },
 	{ "redactor",        "REDACTOR",     PERSON, LEVEL_MAIN },
 	{ "annotator",       "ANNOTATOR",    PERSON, LEVEL_MAIN },
 	{ "commentator",     "COMMENTATOR",  PERSON, LEVEL_MAIN },
 	{ "translator",      "TRANSLATOR",   PERSON, LEVEL_MAIN },
 	{ "eventtitle",      "EVENT:CONF",   SIMPLE, LEVEL_MAIN },
 	{ "year",            "YEAR",         SIMPLE, LEVEL_MAIN },
-	{ "introduction",    "?????",        SIMPLE, LEVEL_MAIN }, /*WRONG*/
-	{ "foreward",        "?????",        SIMPLE, LEVEL_MAIN }, /*WRONG*/
-	{ "afterward",       "?????",        SIMPLE, LEVEL_MAIN }, /*WRONG*/
-	{ "title",           "TITLE",        SIMPLE, LEVEL_MAIN },
-	{ "subtitle",        "SUBTITLE",     SIMPLE, LEVEL_MAIN },
-	{ "titleaddon",      "?????",        SIMPLE, LEVEL_MAIN },   /*WRONG*/
-	{ "maintitle",       "TITLE",        SIMPLE, LEVEL_HOST },
-	{ "mainsubtitle",    "SUBTITLE",     SIMPLE, LEVEL_HOST },
-	{ "maintitleaddon",  "?????",        SIMPLE, LEVEL_HOST },   /*WRONG*/
+	{ "month",           "MONTH",        SIMPLE, LEVEL_MAIN },
+	{ "date",            "DATE",         SIMPLE, LEVEL_MAIN },   /*WRONG*/
+	{ "introduction",    "INTROAUTHOR",  PERSON, LEVEL_MAIN },
+	{ "foreword",        "INTROAUTHOR",  PERSON, LEVEL_MAIN },
+	{ "afterword",       "AFTERAUTHOR",  PERSON, LEVEL_MAIN },
+	{ "title",           "TITLE",        TITLE,  LEVEL_MAIN },
+	{ "subtitle",        "SUBTITLE",     TITLE,  LEVEL_MAIN },
+	{ "titleaddon",      "TITLEADDON",   TITLE,  LEVEL_MAIN },
+	{ "shorttitle",      "SHORTTITLE",   SIMPLE, LEVEL_MAIN },
+	{ "maintitle",       "TITLE",        TITLE,  LEVEL_HOST },
+	{ "mainsubtitle",    "SUBTITLE",     TITLE,  LEVEL_HOST },
+	{ "maintitleaddon",  "TITLEADDON",   TITLE,  LEVEL_HOST },
 	{ "language",        "LANGUAGE",     SIMPLE, LEVEL_MAIN },
 	{ "origlanguage",    "LANGUAGE",     SIMPLE, LEVEL_ORIG },
+	{ "origdate",        "DATE",         SIMPLE, LEVEL_ORIG },
+	{ "origyear",        "YEAR",         SIMPLE, LEVEL_ORIG },
+	{ "origtitle",       "TITLE",        SIMPLE, LEVEL_ORIG },
+	{ "origlocation",    "ADDRESS",      SIMPLE, LEVEL_ORIG },
+	{ "origpublisher",   "PUBLISHER",    SIMPLE, LEVEL_ORIG },
 	{ "volume",          "VOLUME",       SIMPLE, LEVEL_HOST },
 	{ "part",            "PART",         SIMPLE, LEVEL_HOST },
 	{ "edition",         "EDITION",      SIMPLE, LEVEL_MAIN },
@@ -613,182 +826,207 @@ static lookups proceedings[] = {
 	{ "series",          "?????",        SIMPLE, LEVEL_HOST }, /* WRONG */
 	{ "number",          "NUMBER",       SIMPLE, LEVEL_MAIN },
 	{ "note",            "NOTES",        SIMPLE, LEVEL_MAIN },
-	{ "annote",          "NOTES",        SIMPLE, LEVEL_MAIN },
-	{ "annotation",      "NOTES",        SIMPLE, LEVEL_MAIN },
+	{ "annote",          "ANNOTATION",   SIMPLE, LEVEL_MAIN },
+	{ "annotation",      "ANNOTATION",   SIMPLE, LEVEL_MAIN },
 	{ "organization",    "ORGANIZER:CORP",SIMPLE, LEVEL_MAIN },
 	{ "publisher",       "PUBLISHER",    SIMPLE, LEVEL_MAIN },
-	{ "location",        "LOCATION",     SIMPLE, LEVEL_MAIN },
+	{ "location",        "ADDRESS",      SIMPLE, LEVEL_MAIN },
 	{ "isbn",            "ISBN",         SIMPLE, LEVEL_MAIN },
 	{ "chapter",         "CHAPTER",      SIMPLE, LEVEL_MAIN },
 	{ "pages",           "?????????",    SIMPLE, LEVEL_MAIN }, /* WRONG */
 	{ "pagetotal",       "?????????",    SIMPLE, LEVEL_MAIN },
-	{ "addendum",        "?????????",    SIMPLE, LEVEL_MAIN },
+	{ "addendum",        "ADDENDUM",     SIMPLE, LEVEL_MAIN },
 	{ "doi",             "DOI",          SIMPLE, LEVEL_MAIN },
-	{ "eprint",          "",       BIBTEX_EPRINT, LEVEL_MAIN },
-	{ "eprinttype",      "",   BIBTEX_EPRINT, LEVEL_MAIN },
-	{ "url",             "",         BIBTEX_URL, LEVEL_MAIN },
+	{ "pubstate",        "PUBSTATE",     SIMPLE, LEVEL_MAIN },
+	{ "eprint",          "",       BT_EPRINT, LEVEL_MAIN },
+	{ "eprinttype",      "",   BT_EPRINT, LEVEL_MAIN },
+	{ "url",             "",         BT_URL, LEVEL_MAIN },
 	{ "urldate",         "URLDATE",      SIMPLE, LEVEL_MAIN },
 	{ "urlday",          "?????????",    SIMPLE, LEVEL_MAIN },
 	{ "urlmonth",        "?????????",    SIMPLE, LEVEL_MAIN },
 	{ "urlyear",         "?????????",    SIMPLE, LEVEL_MAIN },
 	{ "address",         "ADDRESS",      SIMPLE, LEVEL_MAIN },
+	{ "hyphenation",     "LANGCATALOG",            SIMPLE,      LEVEL_MAIN   },
 	{ "refnum",          "REFNUM",       SIMPLE, LEVEL_MAIN },
-	{ " ",               "INTERNAL_TYPE|BOOK",    ALWAYS, LEVEL_MAIN },
-        { " ",               "RESOURCE|text",       ALWAYS, LEVEL_MAIN },
-        { " ",               "GENRE|conference publication",   ALWAYS, LEVEL_MAIN }
+	{ "",                "INTERNAL_TYPE|BOOK",    ALWAYS, LEVEL_MAIN },
+        { "",                "RESOURCE|text",       ALWAYS, LEVEL_MAIN },
+        { "",                "GENRE|conference publication",   ALWAYS, LEVEL_MAIN }
 };
 
-
-
 /* Technical reports */
 static lookups report[] = {
-	{ "author",          "AUTHOR",       PERSON, LEVEL_MAIN },
-	{ "title",           "TITLE",        SIMPLE, LEVEL_MAIN },
-	{ "subtitle",        "SUBTITLE",     SIMPLE, LEVEL_MAIN },
-	{ "titleaddon",      "?????",        SIMPLE, LEVEL_MAIN },   /*WRONG*/
-	{ "year",            "YEAR",         SIMPLE, LEVEL_MAIN },
-	{ "language",        "LANGUAGE",     SIMPLE, LEVEL_MAIN },
-	{ "number",          "NUMBER",       SIMPLE, LEVEL_MAIN },
-	{ "note",            "NOTES",        SIMPLE, LEVEL_MAIN },
-	{ "annote",          "NOTES",        SIMPLE, LEVEL_MAIN },
-	{ "annotation",      "NOTES",        SIMPLE, LEVEL_MAIN },
-	{ "version",         "?????????",    SIMPLE, LEVEL_MAIN },
-	{ "location",        "LOCATION",     SIMPLE, LEVEL_MAIN },
-	{ "isrn",            "ISRN",         SIMPLE, LEVEL_MAIN },
-	{ "chapter",         "CHAPTER",      SIMPLE, LEVEL_MAIN },
-	{ "pages",           "?????????",    SIMPLE, LEVEL_MAIN }, /* WRONG */
-	{ "pagetotal",       "?????????",    SIMPLE, LEVEL_MAIN },
-	{ "addendum",        "?????????",    SIMPLE, LEVEL_MAIN },
-	{ "doi",             "DOI",          SIMPLE, LEVEL_MAIN },
-	{ "eprint",          "",       BIBTEX_EPRINT, LEVEL_MAIN },
-	{ "eprinttype",      "",   BIBTEX_EPRINT, LEVEL_MAIN },
-	{ "url",             "",         BIBTEX_URL, LEVEL_MAIN },
-	{ "urldate",         "URLDATE",      SIMPLE, LEVEL_MAIN },
-	{ "urlday",          "?????????",    SIMPLE, LEVEL_MAIN },
-	{ "urlmonth",        "?????????",    SIMPLE, LEVEL_MAIN },
-	{ "urlyear",         "?????????",    SIMPLE, LEVEL_MAIN },
-	{ "address",         "ADDRESS",      SIMPLE, LEVEL_MAIN },
-	{ "refnum",          "REFNUM",       SIMPLE, LEVEL_MAIN },
-	{ " ",               "INTERNAL_TYPE|REPORT",     ALWAYS, LEVEL_MAIN },
-	{ " ",               "RESOURCE|text",   ALWAYS, LEVEL_MAIN },
-	{ " ",               "GENRE|report",    ALWAYS, LEVEL_MAIN }
-};
-
-static lookups thesis[] = {
-	{ "author",    "AUTHOR",             PERSON, LEVEL_MAIN },
-	{ "title",     "TITLE",              SIMPLE, LEVEL_MAIN },
-	{ "subtitle",  "SUBTITLE",           SIMPLE, LEVEL_MAIN },
-	{ "titleaddon","?????",              SIMPLE, LEVEL_MAIN },   /*WRONG*/
-	{ "year",      "YEAR",               SIMPLE, LEVEL_MAIN },
-	{ "month",     "MONTH",              SIMPLE, LEVEL_MAIN },
-	{ "day",       "DAY",                SIMPLE, LEVEL_MAIN },
-	{ "type",      "GENRE",        BIBTEX_GENRE, LEVEL_MAIN },
-	{ "institution","DEGREEGRANTOR:ASIS",SIMPLE, LEVEL_MAIN },
-	{ "school",     "DEGREEGRANTOR:ASIS",SIMPLE, LEVEL_MAIN },
-	{ "doi",        "DOI",               SIMPLE, LEVEL_MAIN },
-	{ "howpublished",    "",       HOWPUBLISHED, LEVEL_MAIN },
-	{ "url",        "",              BIBTEX_URL, LEVEL_MAIN },
-	{ "urldate",    "URLDATE",           SIMPLE, LEVEL_MAIN },
-	{ "urlday",     "?urlday?",          SIMPLE, LEVEL_MAIN },
-	{ "urlmonth",   "?urlmonth?",        SIMPLE, LEVEL_MAIN },
-	{ "urlyear",    "?urlyear?",         SIMPLE, LEVEL_MAIN },
-	{ "language",   "LANGUAGE",          SIMPLE, LEVEL_MAIN },
-	{ "location",   "LOCATION",          SIMPLE, LEVEL_MAIN },
-	{ "note",       "NOTES",             SIMPLE, LEVEL_MAIN },
-	{ "annote",     "NOTES",             SIMPLE, LEVEL_MAIN },
-	{ "annotation", "NOTES",             SIMPLE, LEVEL_MAIN },
-	{ "address",    "ADDRESS",           SIMPLE, LEVEL_MAIN },
-	{ "refnum",    "REFNUM",             SIMPLE, LEVEL_MAIN },
-	{ " ",         "INTERNAL_TYPE|THESIS",        ALWAYS, LEVEL_MAIN },
-	{ " ",         "RESOURCE|text",      ALWAYS, LEVEL_MAIN },
-	{ " ",         "GENRE|thesis",       ALWAYS, LEVEL_MAIN },
+	{ "author",      "AUTHOR",               PERSON,        LEVEL_MAIN },
+	{ "title",       "TITLE",                TITLE,         LEVEL_MAIN },
+	{ "subtitle",    "SUBTITLE",             TITLE,         LEVEL_MAIN },
+	{ "titleaddon",  "TITLEADDON",           TITLE,         LEVEL_MAIN },
+	{ "shorttitle",  "SHORTTITLE",           SIMPLE,        LEVEL_MAIN },
+	{ "series",      "TITLE",                TITLE,         LEVEL_HOST },
+	{ "type",        "GENRE",                BT_GENRE,      LEVEL_MAIN },
+	{ "institution", "SPONSOR:ASIS",         SIMPLE,        LEVEL_MAIN },
+	{ "year",        "YEAR",                 SIMPLE,        LEVEL_MAIN },
+	{ "month",       "MONTH",                SIMPLE,        LEVEL_MAIN },
+	{ "date",        "DATE",                 SIMPLE,        LEVEL_MAIN },   /*WRONG*/
+	{ "language",    "LANGUAGE",             SIMPLE,        LEVEL_MAIN },
+	{ "number",      "REPORTNUMBER",         SIMPLE,        LEVEL_MAIN },
+	{ "note",        "NOTES",                SIMPLE,        LEVEL_MAIN },
+	{ "annote",      "ANNOTATION",           SIMPLE,        LEVEL_MAIN },
+	{ "annotation",  "ANNOTATION",           SIMPLE,        LEVEL_MAIN },
+	{ "version",     "EDITION",              SIMPLE,        LEVEL_MAIN },
+	{ "location",    "ADDRESS",              SIMPLE,        LEVEL_MAIN },
+	{ "isrn",        "ISRN",                 SIMPLE,        LEVEL_MAIN },
+	{ "chapter",     "CHAPTER",              SIMPLE,        LEVEL_MAIN },
+	{ "pages",       "?????????",            SIMPLE,        LEVEL_MAIN }, /* WRONG */
+	{ "pagetotal",   "?????????",            SIMPLE,        LEVEL_MAIN },
+	{ "addendum",    "ADDENDUM",             SIMPLE,        LEVEL_MAIN },
+	{ "doi",         "DOI",                  SIMPLE,        LEVEL_MAIN },
+	{ "pubstate",    "PUBSTATE",             SIMPLE,        LEVEL_MAIN },
+	{ "eprint",      "",                     BT_EPRINT,     LEVEL_MAIN },
+	{ "eprinttype",  "",                     BT_EPRINT,     LEVEL_MAIN },
+	{ "url",         "",                     BT_URL,        LEVEL_MAIN },
+	{ "urldate",     "URLDATE",              SIMPLE,        LEVEL_MAIN },
+	{ "urlday",      "?????????",            SIMPLE,        LEVEL_MAIN },
+	{ "urlmonth",    "?????????",            SIMPLE,        LEVEL_MAIN },
+	{ "urlyear",     "?????????",            SIMPLE,        LEVEL_MAIN },
+	{ "address",     "ADDRESS",              SIMPLE,        LEVEL_MAIN },
+	{ "hyphenation", "LANGCATALOG",          SIMPLE,        LEVEL_MAIN },
+	{ "refnum",      "REFNUM",               SIMPLE,        LEVEL_MAIN },
+	{ "",            "INTERNAL_TYPE|REPORT", ALWAYS,        LEVEL_MAIN },
+	{ "",            "RESOURCE|text",        ALWAYS,        LEVEL_MAIN },
+	{ "",            "GENRE|report",         ALWAYS,        LEVEL_MAIN }
 };
 
 /* Unpublished */
 static lookups unpublished[] = {
 	{ "author",       "AUTHOR",       PERSON, LEVEL_MAIN },
-	{ "title",        "TITLE",        SIMPLE, LEVEL_MAIN },
-	{ "subtitle",     "SUBTITLE",     SIMPLE, LEVEL_MAIN },
-	{ "titleaddon",   "?????",        SIMPLE, LEVEL_MAIN },   /*WRONG*/
+	{ "title",        "TITLE",        TITLE,  LEVEL_MAIN },
+	{ "subtitle",     "SUBTITLE",     TITLE,  LEVEL_MAIN },
+	{ "titleaddon",   "TITLEADDON",   TITLE,  LEVEL_MAIN },
+	{ "shorttitle",   "SHORTTITLE",           SIMPLE,        LEVEL_MAIN },
 	{ "howpublished", "",       HOWPUBLISHED, LEVEL_MAIN },
 	{ "year",         "YEAR",         SIMPLE, LEVEL_MAIN },
 	{ "month",        "MONTH",        SIMPLE, LEVEL_MAIN },
 	{ "day",          "DAY",          SIMPLE, LEVEL_MAIN },
 	{ "date",         "DATE",         SIMPLE, LEVEL_MAIN },
-	{ "url",          "",         BIBTEX_URL, LEVEL_MAIN },
+	{ "url",          "",         BT_URL, LEVEL_MAIN },
 	{ "urlday",       "?????????",    SIMPLE, LEVEL_MAIN },
 	{ "urlmonth",     "?????????",    SIMPLE, LEVEL_MAIN },
 	{ "urlyear",      "?????????",    SIMPLE, LEVEL_MAIN },
 	{ "language",     "LANGUAGE",     SIMPLE, LEVEL_MAIN },
 	{ "note",         "NOTES",        SIMPLE, LEVEL_MAIN },
-	{ "annote",       "NOTES",        SIMPLE, LEVEL_MAIN },
-	{ "annotation",   "NOTES",        SIMPLE, LEVEL_MAIN },
-	{ "addendum",     "?????????",    SIMPLE, LEVEL_MAIN },
+	{ "annote",       "ANNOTATION",   SIMPLE, LEVEL_MAIN },
+	{ "annotation",   "ANNOTATION",   SIMPLE, LEVEL_MAIN },
+	{ "addendum",     "ADDENDUM",     SIMPLE, LEVEL_MAIN },
 	{ "address",      "ADDRESS",      SIMPLE, LEVEL_MAIN },
+	{ "hyphenation",  "LANGCATALOG",  SIMPLE, LEVEL_MAIN   },
+	{ "pubstate",     "PUBSTATE",     SIMPLE, LEVEL_MAIN },
 	{ "refnum",       "REFNUM",       SIMPLE, LEVEL_MAIN },
-	{ " ",            "INTERNAL_TYPE|BOOK",    ALWAYS, LEVEL_MAIN },
-	{ " ",            "RESOURCE|text",ALWAYS, LEVEL_MAIN },
-	{ " ",            "GENRE|unpublished",ALWAYS, LEVEL_MAIN }
+	{ "",             "INTERNAL_TYPE|BOOK",    ALWAYS, LEVEL_MAIN },
+	{ "",             "RESOURCE|text",ALWAYS, LEVEL_MAIN },
+	{ "",             "GENRE|unpublished",ALWAYS, LEVEL_MAIN }
+};
+
+static lookups thesis[] = {
+	{ "author",       "AUTHOR",               PERSON,          LEVEL_MAIN },
+	{ "title",        "TITLE",                TITLE,           LEVEL_MAIN },
+	{ "subtitle",     "SUBTITLE",             TITLE,           LEVEL_MAIN },
+	{ "titleaddon",   "TITLEADDON",           TITLE,           LEVEL_MAIN },
+	{ "shorttitle",   "SHORTTITLE",           SIMPLE,          LEVEL_MAIN },
+	{ "year",         "YEAR",                 SIMPLE,          LEVEL_MAIN },
+	{ "month",        "MONTH",                SIMPLE,          LEVEL_MAIN },
+	{ "day",          "DAY",                  SIMPLE,          LEVEL_MAIN },
+	{ "date",         "DATE",                 SIMPLE,          LEVEL_MAIN },   /*WRONG*/
+	{ "type",         "",                     BLT_THESIS_TYPE, LEVEL_MAIN },
+	{ "institution",  "DEGREEGRANTOR:ASIS",   SIMPLE,          LEVEL_MAIN },
+	{ "school",       "DEGREEGRANTOR:ASIS",   BLT_SCHOOL,      LEVEL_MAIN },
+	{ "doi",          "DOI",                  SIMPLE,          LEVEL_MAIN },
+	{ "howpublished", "",                     HOWPUBLISHED,    LEVEL_MAIN },
+	{ "url",          "",                     BT_URL,      LEVEL_MAIN },
+	{ "urldate",      "URLDATE",              SIMPLE,          LEVEL_MAIN },
+	{ "urlday",       "?urlday?",             SIMPLE,          LEVEL_MAIN },
+	{ "urlmonth",     "?urlmonth?",           SIMPLE,          LEVEL_MAIN },
+	{ "urlyear",      "?urlyear?",            SIMPLE,          LEVEL_MAIN },
+	{ "language",     "LANGUAGE",             SIMPLE,          LEVEL_MAIN },
+	{ "location",     "ADDRESS",              SIMPLE,          LEVEL_MAIN },
+	{ "note",         "NOTES",                SIMPLE,          LEVEL_MAIN },
+	{ "annote",       "ANNOTATION",           SIMPLE,          LEVEL_MAIN },
+	{ "annotation",   "ANNOTATION",           SIMPLE,          LEVEL_MAIN },
+	{ "address",      "ADDRESS",              SIMPLE,          LEVEL_MAIN },
+	{ "hyphenation",  "LANGCATALOG",          SIMPLE,          LEVEL_MAIN },
+	{ "pubstate",     "PUBSTATE",             SIMPLE,          LEVEL_MAIN },
+	{ "refnum",       "REFNUM",               SIMPLE,          LEVEL_MAIN },
+	{ "",             "INTERNAL_TYPE|THESIS", ALWAYS,          LEVEL_MAIN },
+	{ "",             "RESOURCE|text",        ALWAYS,          LEVEL_MAIN },
+	{ "",             "GENRE|thesis",         ALWAYS,          LEVEL_MAIN },
 };
 
 static lookups phdthesis[] = {
-	{ "author",     "AUTHOR",    PERSON, LEVEL_MAIN },
-	{ "title",      "TITLE",        SIMPLE, LEVEL_MAIN },
-	{ "subtitle",   "SUBTITLE",     SIMPLE, LEVEL_MAIN },
-	{ "titleaddon", "?titleadon?",  SIMPLE, LEVEL_MAIN },   /*WRONG*/
-	{ "year",       "YEAR",         SIMPLE, LEVEL_MAIN },
-	{ "month",      "MONTH",        SIMPLE, LEVEL_MAIN },
-	{ "day",        "DAY",          SIMPLE, LEVEL_MAIN },
-	{ "type",       "GENRE",  BIBTEX_GENRE, LEVEL_MAIN },
-	{ "institution","DEGREEGRANTOR:ASIS",SIMPLE, LEVEL_MAIN },
-	{ "school",     "DEGREEGRANTOR:ASIS",SIMPLE, LEVEL_MAIN },
-	{ "doi",        "DOI",         SIMPLE, LEVEL_MAIN },
-	{ "howpublished",    "",       HOWPUBLISHED, LEVEL_MAIN },
-	{ "url",        "",        BIBTEX_URL, LEVEL_MAIN },
-	{ "urldate",    "URLDATE",      SIMPLE, LEVEL_MAIN },
-	{ "urlday",     "?urlday?",     SIMPLE, LEVEL_MAIN },
-	{ "urlmonth",   "?urlmonth?",   SIMPLE, LEVEL_MAIN },
-	{ "urlyear",    "?urlyear?",    SIMPLE, LEVEL_MAIN },
-	{ "language",   "LANGUAGE",     SIMPLE, LEVEL_MAIN },
-	{ "location",   "LOCATION",     SIMPLE, LEVEL_MAIN },
-	{ "note",       "NOTES",        SIMPLE, LEVEL_MAIN },
-	{ "annote",     "NOTES",        SIMPLE, LEVEL_MAIN },
-	{ "annotation", "NOTES",        SIMPLE, LEVEL_MAIN },
-	{ "address",    "ADDRESS",      SIMPLE, LEVEL_MAIN },
-	{ "refnum",     "REFNUM",       SIMPLE, LEVEL_MAIN },
-	{ " ",          "INTERNAL_TYPE|THESIS",   ALWAYS, LEVEL_MAIN },
-	{ " ",          "RESOURCE|text", ALWAYS, LEVEL_MAIN },
-	{ " ",          "GENRE|Ph.D. thesis",  ALWAYS, LEVEL_MAIN }
+	{ "author",       "AUTHOR",               PERSON,          LEVEL_MAIN },
+	{ "title",        "TITLE",                TITLE,           LEVEL_MAIN },
+	{ "subtitle",     "SUBTITLE",             TITLE,           LEVEL_MAIN },
+	{ "titleaddon",   "TITLEADDON",           TITLE,           LEVEL_MAIN },
+	{ "shorttitle",   "SHORTTITLE",           SIMPLE,          LEVEL_MAIN },
+	{ "year",         "YEAR",                 SIMPLE,          LEVEL_MAIN },
+	{ "month",        "MONTH",                SIMPLE,          LEVEL_MAIN },
+	{ "day",          "DAY",                  SIMPLE,          LEVEL_MAIN },
+	{ "date",         "DATE",                 SIMPLE,          LEVEL_MAIN },   /*WRONG*/
+	{ "type",         "",                     BLT_THESIS_TYPE, LEVEL_MAIN },
+	{ "institution",  "DEGREEGRANTOR:ASIS",   SIMPLE,          LEVEL_MAIN },
+	{ "school",       "DEGREEGRANTOR:ASIS",   BLT_SCHOOL,      LEVEL_MAIN },
+	{ "doi",          "DOI",                  SIMPLE,          LEVEL_MAIN },
+	{ "howpublished", "",                     HOWPUBLISHED,    LEVEL_MAIN },
+	{ "url",          "",                     BT_URL,      LEVEL_MAIN },
+	{ "urldate",      "URLDATE",              SIMPLE,          LEVEL_MAIN },
+	{ "urlday",       "?urlday?",             SIMPLE,          LEVEL_MAIN },
+	{ "urlmonth",     "?urlmonth?",           SIMPLE,          LEVEL_MAIN },
+	{ "urlyear",      "?urlyear?",            SIMPLE,          LEVEL_MAIN },
+	{ "language",     "LANGUAGE",             SIMPLE,          LEVEL_MAIN },
+	{ "location",     "ADDRESS",              SIMPLE,          LEVEL_MAIN },
+	{ "note",         "NOTES",                SIMPLE,          LEVEL_MAIN },
+	{ "annote",       "ANNOTATION",           SIMPLE,          LEVEL_MAIN },
+	{ "annotation",   "ANNOTATION",           SIMPLE,          LEVEL_MAIN },
+	{ "address",      "ADDRESS",              SIMPLE,          LEVEL_MAIN },
+	{ "hyphenation",  "LANGCATALOG",          SIMPLE,          LEVEL_MAIN },
+	{ "pubstate",     "PUBSTATE",             SIMPLE,          LEVEL_MAIN },
+	{ "refnum",       "REFNUM",               SIMPLE,          LEVEL_MAIN },
+	{ "",             "INTERNAL_TYPE|THESIS", ALWAYS,          LEVEL_MAIN },
+	{ "",             "RESOURCE|text",        ALWAYS,          LEVEL_MAIN },
+	{ "",             "GENRE|thesis",         ALWAYS,          LEVEL_MAIN },
+	{ "",             "NGENRE|Ph.D. thesis",  DEFAULT,         LEVEL_MAIN },
 };
 
 static lookups mastersthesis[] = {
-	{ "author",     "AUTHOR",            PERSON, LEVEL_MAIN },
-	{ "title",      "TITLE",             SIMPLE, LEVEL_MAIN },
-	{ "subtitle",   "SUBTITLE",          SIMPLE, LEVEL_MAIN },
-	{ "titleaddon", "?titleaddon?",      SIMPLE, LEVEL_MAIN },   /*WRONG*/
-	{ "year",       "YEAR",              SIMPLE, LEVEL_MAIN },
-	{ "month",      "MONTH",             SIMPLE, LEVEL_MAIN },
-	{ "day",        "DAY",               SIMPLE, LEVEL_MAIN },
-	{ "type",       "GENRE",       BIBTEX_GENRE, LEVEL_MAIN },
-	{ "institution","DEGREEGRANTOR:ASIS",SIMPLE, LEVEL_MAIN },
-	{ "school",     "DEGREEGRANTOR:ASIS",SIMPLE, LEVEL_MAIN },
-	{ "doi",        "DOI",               SIMPLE, LEVEL_MAIN },
-	{ "howpublished",    "",       HOWPUBLISHED, LEVEL_MAIN },
-	{ "url",        "",              BIBTEX_URL, LEVEL_MAIN },
-	{ "urldate",    "URLDATE",      SIMPLE, LEVEL_MAIN },
-	{ "urlday",     "?urlday?",     SIMPLE, LEVEL_MAIN },
-	{ "urlmonth",   "?urlmonth?",   SIMPLE, LEVEL_MAIN },
-	{ "urlyear",    "?urlyear?",    SIMPLE, LEVEL_MAIN },
-	{ "language",   "LANGUAGE",     SIMPLE, LEVEL_MAIN },
-	{ "location",   "LOCATION",     SIMPLE, LEVEL_MAIN },
-	{ "note",       "NOTES",        SIMPLE, LEVEL_MAIN },
-	{ "annote",     "NOTES",        SIMPLE, LEVEL_MAIN },
-	{ "annotation", "NOTES",        SIMPLE, LEVEL_MAIN },
-	{ "address",    "ADDRESS",      SIMPLE, LEVEL_MAIN },
-	{ "refnum",     "REFNUM",       SIMPLE, LEVEL_MAIN },
-	{ " ",          "INTERNAL_TYPE|THESIS",   ALWAYS, LEVEL_MAIN },
-	{ " ",          "RESOURCE|text", ALWAYS, LEVEL_MAIN },
-	{ " ",          "GENRE|Masters thesis",  ALWAYS, LEVEL_MAIN },
+	{ "author",       "AUTHOR",                PERSON,          LEVEL_MAIN },
+	{ "title",        "TITLE",                 TITLE,           LEVEL_MAIN },
+	{ "subtitle",     "SUBTITLE",              TITLE,           LEVEL_MAIN },
+	{ "titleaddon",   "TITLEADDON",            TITLE,           LEVEL_MAIN },
+	{ "shorttitle",   "SHORTTITLE",            SIMPLE,          LEVEL_MAIN },
+	{ "year",         "YEAR",                  SIMPLE,          LEVEL_MAIN },
+	{ "month",        "MONTH",                 SIMPLE,          LEVEL_MAIN },
+	{ "day",          "DAY",                   SIMPLE,          LEVEL_MAIN },
+	{ "date",         "DATE",                  SIMPLE,          LEVEL_MAIN },   /*WRONG*/
+	{ "type",         "",                      BLT_THESIS_TYPE, LEVEL_MAIN },
+	{ "institution",  "DEGREEGRANTOR:ASIS",    SIMPLE,          LEVEL_MAIN },
+	{ "school",       "DEGREEGRANTOR:ASIS",    BLT_SCHOOL,      LEVEL_MAIN },
+	{ "doi",          "DOI",                   SIMPLE,          LEVEL_MAIN },
+	{ "howpublished", "",                      HOWPUBLISHED,    LEVEL_MAIN },
+	{ "url",          "",                      BT_URL,      LEVEL_MAIN },
+	{ "urldate",      "URLDATE",               SIMPLE,          LEVEL_MAIN },
+	{ "urlday",       "?urlday?",              SIMPLE,          LEVEL_MAIN },
+	{ "urlmonth",     "?urlmonth?",            SIMPLE,          LEVEL_MAIN },
+	{ "urlyear",      "?urlyear?",             SIMPLE,          LEVEL_MAIN },
+	{ "language",     "LANGUAGE",              SIMPLE,          LEVEL_MAIN },
+	{ "location",     "ADDRESS",               SIMPLE,          LEVEL_MAIN },
+	{ "note",         "NOTES",                 SIMPLE,          LEVEL_MAIN },
+	{ "annote",       "ANNOTATION",            SIMPLE,          LEVEL_MAIN },
+	{ "annotation",   "ANNOTATION",            SIMPLE,          LEVEL_MAIN },
+	{ "address",      "ADDRESS",               SIMPLE,          LEVEL_MAIN },
+	{ "hyphenation",  "LANGCATALOG",           SIMPLE,          LEVEL_MAIN },
+	{ "pubstate",     "PUBSTATE",              SIMPLE,          LEVEL_MAIN },
+	{ "refnum",       "REFNUM",                SIMPLE,          LEVEL_MAIN },
+	{ "",             "INTERNAL_TYPE|THESIS",  ALWAYS,          LEVEL_MAIN },
+	{ "",             "RESOURCE|text",         ALWAYS,          LEVEL_MAIN },
+	{ "",             "GENRE|thesis",          ALWAYS,          LEVEL_MAIN },
+	{ "",             "NGENRE|Masters thesis", DEFAULT,         LEVEL_MAIN },
 };
 
 #define ORIG(a) ( &(a[0]) )
diff --git a/lib/charsets.c b/lib/charsets.c
index 2d76114..b36a3db 100644
--- a/lib/charsets.c
+++ b/lib/charsets.c
@@ -1,20994 +1,34626 @@
 /*
- * charsets.h
+ * charsets.c
  *
- * Copyright (c) Chris Putnam 2003-2010
+ * Copyright (c) Chris Putnam 2003-2013
  *
- * Source code released under the GPL
+ * Source code released under the GPL version 2
  *
  */
-
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
 #include "charsets.h"
 
-charconvert adobeiso[] = {
- 0,
- 1,
- 2,
- 3,
- 4,
- 5,
- 6,
- 7,
- 8,
- 9,
- 10,
- 11,
- 12,
- 13,
- 14,
- 15,
- 16,
- 17,
- 18,
- 19,
- 20,
- 21,
- 22,
- 23,
- 24,
- 25,
- 26,
- 27,
- 28,
- 29,
- 30,
- 31,
- /* 32 */ 32,/*SPACE*/
- /* 33 */ 33,/*EXCLAMATIONMARK*/
- /* 34 */ 34,/*QUOTATIONMARK*/
- /* 35 */ 35,/*NUMBERSIGN*/
- /* 36 */ 36,/*DOLLARSIGN*/
- /* 37 */ 37,/*PERCENTSIGN*/
- /* 38 */ 38,/*AMPERSAND*/
- /* 39 */ 39,/*APOSTROPHE*/
- /* 40 */ 40,/*LEFTPARENTHESIS*/
- /* 41 */ 41,/*RIGHTPARENTHESIS*/
- /* 42 */ 42,/*ASTERISK*/
- /* 43 */ 43,/*PLUSSIGN*/
- /* 44 */ 44,/*COMMA*/
- /* 45 */ 45,/*HYPHEN-MINUS*/
- /* 46 */ 46,/*FULLSTOP*/
- /* 47 */ 47,/*SOLIDUS*/
- /* 48 */ 48,/*DIGITZERO*/
- /* 49 */ 49,/*DIGITONE*/
- /* 50 */ 50,/*DIGITTWO*/
- /* 51 */ 51,/*DIGITTHREE*/
- /* 52 */ 52,/*DIGITFOUR*/
- /* 53 */ 53,/*DIGITFIVE*/
- /* 54 */ 54,/*DIGITSIX*/
- /* 55 */ 55,/*DIGITSEVEN*/
- /* 56 */ 56,/*DIGITEIGHT*/
- /* 57 */ 57,/*DIGITNINE*/
- /* 58 */ 58,/*COLON*/
- /* 59 */ 59,/*SEMICOLON*/
- /* 60 */ 60,/*LESS-THANSIGN*/
- /* 61 */ 61,/*EQUALSSIGN*/
- /* 62 */ 62,/*GREATER-THANSIGN*/
- /* 63 */ 63,/*QUESTIONMARK*/
- /* 64 */ 64,/*COMMERCIALAT*/
- /* 65 */ 65,/*LATINCAPITALLETTERA*/
- /* 66 */ 66,/*LATINCAPITALLETTERB*/
- /* 67 */ 67,/*LATINCAPITALLETTERC*/
- /* 68 */ 68,/*LATINCAPITALLETTERD*/
- /* 69 */ 69,/*LATINCAPITALLETTERE*/
- /* 70 */ 70,/*LATINCAPITALLETTERF*/
- /* 71 */ 71,/*LATINCAPITALLETTERG*/
- /* 72 */ 72,/*LATINCAPITALLETTERH*/
- /* 73 */ 73,/*LATINCAPITALLETTERI*/
- /* 74 */ 74,/*LATINCAPITALLETTERJ*/
- /* 75 */ 75,/*LATINCAPITALLETTERK*/
- /* 76 */ 76,/*LATINCAPITALLETTERL*/
- /* 77 */ 77,/*LATINCAPITALLETTERM*/
- /* 78 */ 78,/*LATINCAPITALLETTERN*/
- /* 79 */ 79,/*LATINCAPITALLETTERO*/
- /* 80 */ 80,/*LATINCAPITALLETTERP*/
- /* 81 */ 81,/*LATINCAPITALLETTERQ*/
- /* 82 */ 82,/*LATINCAPITALLETTERR*/
- /* 83 */ 83,/*LATINCAPITALLETTERS*/
- /* 84 */ 84,/*LATINCAPITALLETTERT*/
- /* 85 */ 85,/*LATINCAPITALLETTERU*/
- /* 86 */ 86,/*LATINCAPITALLETTERV*/
- /* 87 */ 87,/*LATINCAPITALLETTERW*/
- /* 88 */ 88,/*LATINCAPITALLETTERX*/
- /* 89 */ 89,/*LATINCAPITALLETTERY*/
- /* 90 */ 90,/*LATINCAPITALLETTERZ*/
- /* 91 */ 91,/*LEFTSQUAREBRACKET*/
- /* 92 */ 92,/*REVERSESOLIDUS*/
- /* 93 */ 93,/*RIGHTSQUAREBRACKET*/
- /* 94 */ 94,/*CIRCUMFLEXACCENT*/
- /* 95 */ 95,/*LOWLINE*/
- /* 96 */ 96,/*GRAVEACCENT*/
- /* 97 */ 97,/*LATINSMALLLETTERA*/
- /* 98 */ 98,/*LATINSMALLLETTERB*/
- /* 99 */ 99,/*LATINSMALLLETTERC*/
- /* 100 */ 100,/*LATINSMALLLETTERD*/
- /* 101 */ 101,/*LATINSMALLLETTERE*/
- /* 102 */ 102,/*LATINSMALLLETTERF*/
- /* 103 */ 103,/*LATINSMALLLETTERG*/
- /* 104 */ 104,/*LATINSMALLLETTERH*/
- /* 105 */ 105,/*LATINSMALLLETTERI*/
- /* 106 */ 106,/*LATINSMALLLETTERJ*/
- /* 107 */ 107,/*LATINSMALLLETTERK*/
- /* 108 */ 108,/*LATINSMALLLETTERL*/
- /* 109 */ 109,/*LATINSMALLLETTERM*/
- /* 110 */ 110,/*LATINSMALLLETTERN*/
- /* 111 */ 111,/*LATINSMALLLETTERO*/
- /* 112 */ 112,/*LATINSMALLLETTERP*/
- /* 113 */ 113,/*LATINSMALLLETTERQ*/
- /* 114 */ 114,/*LATINSMALLLETTERR*/
- /* 115 */ 115,/*LATINSMALLLETTERS*/
- /* 116 */ 116,/*LATINSMALLLETTERT*/
- /* 117 */ 117,/*LATINSMALLLETTERU*/
- /* 118 */ 118,/*LATINSMALLLETTERV*/
- /* 119 */ 119,/*LATINSMALLLETTERW*/
- /* 120 */ 120,/*LATINSMALLLETTERX*/
- /* 121 */ 121,/*LATINSMALLLETTERY*/
- /* 122 */ 122,/*LATINSMALLLETTERZ*/
- /* 123 */ 123,/*LEFTCURLYBRACKET*/
- /* 124 */ 124,/*VERTICALLINE*/
- /* 125 */ 125,/*RIGHTCURLYBRACKET*/
- /* 126 */ 126,/*TILDE*/
- 127,
- 128,
- 129,
- 130,
- 131,
- 132,
- 133,
- 134,
- 135,
- 136,
- 137,
- 138,
- 139,
- 140,
- 141,
- 142,
- 143,
- /* 144 */ 305,/*LATINSMALLLETTERDOTLESSI*/
- /* 145 */ 768,/*COMBININGGRAVEACCENT*/
- /* 146 */ 769,/*COMBININGACUTEACCENT*/
- /* 147 */ 770,/*COMBININGCIRCUMFLEXACCENT*/
- /* 148 */ 771,/*COMBININGTILDE*/
- /* 149 */ 772,/*COMBININGMACRON*/
- /* 150 */ 774,/*COMBININGBREVE*/
- /* 151 */ 775,/*COMBININGDOTABOVE*/
- /* 152 */ 776,/*COMBININGDIAERESIS*/
- 153,
- /* 154 */ 778,/*COMBININGRINGABOVE*/
- /* 155 */ 807,/*COMBININGCEDILLA*/
- 156,
- /* 157 */ 779,/*COMBININGDOUBLEACUTEACCENT*/
- /* 158 */ 808,/*COMBININGOGONEK*/
- /* 159 */ 780,/*COMBININGCARON*/
- /* 160 */ 160,/*NO-BREAKSPACE*/
- /* 161 */ 161,/*INVERTEDEXCLAMATIONMARK*/
- /* 162 */ 162,/*CENTSIGN*/
- /* 163 */ 163,/*POUNDSIGN*/
- /* 164 */ 164,/*CURRENCYSIGN*/
- /* 165 */ 165,/*YENSIGN*/
- /* 166 */ 166,/*BROKENBAR*/
- /* 167 */ 167,/*SECTIONSIGN*/
- /* 168 */ 168,/*DIAERESIS*/
- /* 169 */ 169,/*COPYRIGHTSIGN*/
- /* 170 */ 170,/*FEMININEORDINALINDICATOR*/
- /* 171 */ 171,/*LEFT-POINTINGDOUBLEANGLEQUOTATIONMARK*/
- /* 172 */ 172,/*NOTSIGN*/
- /* 173 */ 173,/*SOFTHYPHEN*/
- /* 174 */ 174,/*REGISTEREDSIGN*/
- /* 175 */ 175,/*MACRON*/
- /* 176 */ 176,/*DEGREESIGN*/
- /* 177 */ 177,/*PLUS-MINUSSIGN*/
- /* 178 */ 178,/*SUPERSCRIPTTWO*/
- /* 179 */ 179,/*SUPERSCRIPTTHREE*/
- /* 180 */ 180,/*ACUTEACCENT*/
- /* 181 */ 181,/*MICROSIGN*/
- /* 182 */ 182,/*PILCROWSIGN*/
- /* 183 */ 183,/*MIDDLEDOT*/
- /* 184 */ 184,/*CEDILLA*/
- /* 185 */ 185,/*SUPERSCRIPTONE*/
- /* 186 */ 186,/*MASCULINEORDINALINDICATOR*/
- /* 187 */ 187,/*RIGHT-POINTINGDOUBLEANGLEQUOTATIONMARK*/
- /* 188 */ 188,/*VULGARFRACTIONONEQUARTER*/
- /* 189 */ 189,/*VULGARFRACTIONONEHALF*/
- /* 190 */ 190,/*VULGARFRACTIONTHREEQUARTERS*/
- /* 191 */ 191,/*INVERTEDQUESTIONMARK*/
- /* 192 */ 192,/*LATINCAPITALLETTERAWITHGRAVE*/
- /* 193 */ 193,/*LATINCAPITALLETTERAWITHACUTE*/
- /* 194 */ 194,/*LATINCAPITALLETTERAWITHCIRCUMFLEX*/
- /* 195 */ 195,/*LATINCAPITALLETTERAWITHTILDE*/
- /* 196 */ 196,/*LATINCAPITALLETTERAWITHDIAERESIS*/
- /* 197 */ 197,/*LATINCAPITALLETTERAWITHRINGABOVE*/
- /* 198 */ 198,/*LATINCAPITALLETTERAE*/
- /* 199 */ 199,/*LATINCAPITALLETTERCWITHCEDILLA*/
- /* 200 */ 200,/*LATINCAPITALLETTEREWITHGRAVE*/
- /* 201 */ 201,/*LATINCAPITALLETTEREWITHACUTE*/
- /* 202 */ 202,/*LATINCAPITALLETTEREWITHCIRCUMFLEX*/
- /* 203 */ 203,/*LATINCAPITALLETTEREWITHDIAERESIS*/
- /* 204 */ 204,/*LATINCAPITALLETTERIWITHGRAVE*/
- /* 205 */ 205,/*LATINCAPITALLETTERIWITHACUTE*/
- /* 206 */ 206,/*LATINCAPITALLETTERIWITHCIRCUMFLEX*/
- /* 207 */ 207,/*LATINCAPITALLETTERIWITHDIAERESIS*/
- /* 208 */ 208,/*LATINCAPITALLETTERETH*/
- /* 209 */ 209,/*LATINCAPITALLETTERNWITHTILDE*/
- /* 210 */ 210,/*LATINCAPITALLETTEROWITHGRAVE*/
- /* 211 */ 211,/*LATINCAPITALLETTEROWITHACUTE*/
- /* 212 */ 212,/*LATINCAPITALLETTEROWITHCIRCUMFLEX*/
- /* 213 */ 213,/*LATINCAPITALLETTEROWITHTILDE*/
- /* 214 */ 214,/*LATINCAPITALLETTEROWITHDIAERESIS*/
- /* 215 */ 215,/*MULTIPLICATIONSIGN*/
- /* 216 */ 216,/*LATINCAPITALLETTEROWITHSTROKE*/
- /* 217 */ 217,/*LATINCAPITALLETTERUWITHGRAVE*/
- /* 218 */ 218,/*LATINCAPITALLETTERUWITHACUTE*/
- /* 219 */ 219,/*LATINCAPITALLETTERUWITHCIRCUMFLEX*/
- /* 220 */ 220,/*LATINCAPITALLETTERUWITHDIAERESIS*/
- /* 221 */ 221,/*LATINCAPITALLETTERYWITHACUTE*/
- /* 222 */ 222,/*LATINCAPITALLETTERTHORN*/
- /* 223 */ 223,/*LATINSMALLLETTERSHARPS*/
- /* 224 */ 224,/*LATINSMALLLETTERAWITHGRAVE*/
- /* 225 */ 225,/*LATINSMALLLETTERAWITHACUTE*/
- /* 226 */ 226,/*LATINSMALLLETTERAWITHCIRCUMFLEX*/
- /* 227 */ 227,/*LATINSMALLLETTERAWITHTILDE*/
- /* 228 */ 228,/*LATINSMALLLETTERAWITHDIAERESIS*/
- /* 229 */ 229,/*LATINSMALLLETTERAWITHRINGABOVE*/
- /* 230 */ 230,/*LATINSMALLLETTERAE*/
- /* 231 */ 231,/*LATINSMALLLETTERCWITHCEDILLA*/
- /* 232 */ 232,/*LATINSMALLLETTEREWITHGRAVE*/
- /* 233 */ 233,/*LATINSMALLLETTEREWITHACUTE*/
- /* 234 */ 234,/*LATINSMALLLETTEREWITHCIRCUMFLEX*/
- /* 235 */ 235,/*LATINSMALLLETTEREWITHDIAERESIS*/
- /* 236 */ 236,/*LATINSMALLLETTERIWITHGRAVE*/
- /* 237 */ 237,/*LATINSMALLLETTERIWITHACUTE*/
- /* 238 */ 238,/*LATINSMALLLETTERIWITHCIRCUMFLEX*/
- /* 239 */ 239,/*LATINSMALLLETTERIWITHDIAERESIS*/
- /* 240 */ 240,/*LATINSMALLLETTERETH*/
- /* 241 */ 241,/*LATINSMALLLETTERNWITHTILDE*/
- /* 242 */ 242,/*LATINSMALLLETTEROWITHGRAVE*/
- /* 243 */ 243,/*LATINSMALLLETTEROWITHACUTE*/
- /* 244 */ 244,/*LATINSMALLLETTEROWITHCIRCUMFLEX*/
- /* 245 */ 245,/*LATINSMALLLETTEROWITHTILDE*/
- /* 246 */ 246,/*LATINSMALLLETTEROWITHDIAERESIS*/
- /* 247 */ 247,/*DIVISIONSIGN*/
- /* 248 */ 248,/*LATINSMALLLETTEROWITHSTROKE*/
- /* 249 */ 249,/*LATINSMALLLETTERUWITHGRAVE*/
- /* 250 */ 250,/*LATINSMALLLETTERUWITHACUTE*/
- /* 251 */ 251,/*LATINSMALLLETTERUWITHCIRCUMFLEX*/
- /* 252 */ 252,/*LATINSMALLLETTERUWITHDIAERESIS*/
- /* 253 */ 253,/*LATINSMALLLETTERYWITHACUTE*/
- /* 254 */ 254,/*LATINSMALLLETTERTHORN*/
- /* 255 */ 255/*LATINSMALLLETTERYWITHDIAERESIS*/
+#define ARRAYSIZE( a )     ( sizeof(a) / sizeof(a[0]) )
+#define ARRAYSTART( a )    ( &(a[0]) )
+#define CHARSETARRAY( a )  ARRAYSTART( a ), ARRAYSIZE( a )
+
+#define CHARSET_NALIASES ( 7 )
+
+typedef struct convert_t {
+	unsigned int index, unicode;
+} convert_t;
+
+typedef struct allcharconvert_t {
+	char cmdname[15];
+	char descriptname[200];
+	char aliases[CHARSET_NALIASES][25];
+	convert_t *table;
+	int ntable;
+} allcharconvert_t;
+
+static convert_t adobeiso[] = {
+	{ 0, 0 },
+	{ 1, 1 },
+	{ 2, 2 },
+	{ 3, 3 },
+	{ 4, 4 },
+	{ 5, 5 },
+	{ 6, 6 },
+	{ 7, 7 },
+	{ 8, 8 },
+	{ 9, 9 },
+	{ 10, 10 },
+	{ 11, 11 },
+	{ 12, 12 },
+	{ 13, 13 },
+	{ 14, 14 },
+	{ 15, 15 },
+	{ 16, 16 },
+	{ 17, 17 },
+	{ 18, 18 },
+	{ 19, 19 },
+	{ 20, 20 },
+	{ 21, 21 },
+	{ 22, 22 },
+	{ 23, 23 },
+	{ 24, 24 },
+	{ 25, 25 },
+	{ 26, 26 },
+	{ 27, 27 },
+	{ 28, 28 },
+	{ 29, 29 },
+	{ 30, 30 },
+	{ 31, 31 },
+	{ 32, 32 },
+	{ 33, 33 },
+	{ 34, 34 },
+	{ 35, 35 },
+	{ 36, 36 },
+	{ 37, 37 },
+	{ 38, 38 },
+	{ 39, 39 },
+	{ 40, 40 },
+	{ 41, 41 },
+	{ 42, 42 },
+	{ 43, 43 },
+	{ 44, 44 },
+	{ 45, 45 },
+	{ 46, 46 },
+	{ 47, 47 },
+	{ 48, 48 },
+	{ 49, 49 },
+	{ 50, 50 },
+	{ 51, 51 },
+	{ 52, 52 },
+	{ 53, 53 },
+	{ 54, 54 },
+	{ 55, 55 },
+	{ 56, 56 },
+	{ 57, 57 },
+	{ 58, 58 },
+	{ 59, 59 },
+	{ 60, 60 },
+	{ 61, 61 },
+	{ 62, 62 },
+	{ 63, 63 },
+	{ 64, 64 },
+	{ 65, 65 },
+	{ 66, 66 },
+	{ 67, 67 },
+	{ 68, 68 },
+	{ 69, 69 },
+	{ 70, 70 },
+	{ 71, 71 },
+	{ 72, 72 },
+	{ 73, 73 },
+	{ 74, 74 },
+	{ 75, 75 },
+	{ 76, 76 },
+	{ 77, 77 },
+	{ 78, 78 },
+	{ 79, 79 },
+	{ 80, 80 },
+	{ 81, 81 },
+	{ 82, 82 },
+	{ 83, 83 },
+	{ 84, 84 },
+	{ 85, 85 },
+	{ 86, 86 },
+	{ 87, 87 },
+	{ 88, 88 },
+	{ 89, 89 },
+	{ 90, 90 },
+	{ 91, 91 },
+	{ 92, 92 },
+	{ 93, 93 },
+	{ 94, 94 },
+	{ 95, 95 },
+	{ 96, 96 },
+	{ 97, 97 },
+	{ 98, 98 },
+	{ 99, 99 },
+	{ 100, 100 },
+	{ 101, 101 },
+	{ 102, 102 },
+	{ 103, 103 },
+	{ 104, 104 },
+	{ 105, 105 },
+	{ 106, 106 },
+	{ 107, 107 },
+	{ 108, 108 },
+	{ 109, 109 },
+	{ 110, 110 },
+	{ 111, 111 },
+	{ 112, 112 },
+	{ 113, 113 },
+	{ 114, 114 },
+	{ 115, 115 },
+	{ 116, 116 },
+	{ 117, 117 },
+	{ 118, 118 },
+	{ 119, 119 },
+	{ 120, 120 },
+	{ 121, 121 },
+	{ 122, 122 },
+	{ 123, 123 },
+	{ 124, 124 },
+	{ 125, 125 },
+	{ 126, 126 },
+	{ 127, 127 },
+	{ 128, 128 },
+	{ 129, 129 },
+	{ 130, 130 },
+	{ 131, 131 },
+	{ 132, 132 },
+	{ 133, 133 },
+	{ 134, 134 },
+	{ 135, 135 },
+	{ 136, 136 },
+	{ 137, 137 },
+	{ 138, 138 },
+	{ 139, 139 },
+	{ 140, 140 },
+	{ 141, 141 },
+	{ 142, 142 },
+	{ 143, 143 },
+	{ 144, 305 },
+	{ 145, 768 },
+	{ 146, 769 },
+	{ 147, 770 },
+	{ 148, 771 },
+	{ 149, 772 },
+	{ 150, 774 },
+	{ 151, 775 },
+	{ 152, 776 },
+	{ 153, 153 },
+	{ 154, 778 },
+	{ 155, 807 },
+	{ 156, 156 },
+	{ 157, 779 },
+	{ 158, 808 },
+	{ 159, 780 },
+	{ 160, 160 },
+	{ 161, 161 },
+	{ 162, 162 },
+	{ 163, 163 },
+	{ 164, 164 },
+	{ 165, 165 },
+	{ 166, 166 },
+	{ 167, 167 },
+	{ 168, 168 },
+	{ 169, 169 },
+	{ 170, 170 },
+	{ 171, 171 },
+	{ 172, 172 },
+	{ 173, 173 },
+	{ 174, 174 },
+	{ 175, 175 },
+	{ 176, 176 },
+	{ 177, 177 },
+	{ 178, 178 },
+	{ 179, 179 },
+	{ 180, 180 },
+	{ 181, 181 },
+	{ 182, 182 },
+	{ 183, 183 },
+	{ 184, 184 },
+	{ 185, 185 },
+	{ 186, 186 },
+	{ 187, 187 },
+	{ 188, 188 },
+	{ 189, 189 },
+	{ 190, 190 },
+	{ 191, 191 },
+	{ 192, 192 },
+	{ 193, 193 },
+	{ 194, 194 },
+	{ 195, 195 },
+	{ 196, 196 },
+	{ 197, 197 },
+	{ 198, 198 },
+	{ 199, 199 },
+	{ 200, 200 },
+	{ 201, 201 },
+	{ 202, 202 },
+	{ 203, 203 },
+	{ 204, 204 },
+	{ 205, 205 },
+	{ 206, 206 },
+	{ 207, 207 },
+	{ 208, 208 },
+	{ 209, 209 },
+	{ 210, 210 },
+	{ 211, 211 },
+	{ 212, 212 },
+	{ 213, 213 },
+	{ 214, 214 },
+	{ 215, 215 },
+	{ 216, 216 },
+	{ 217, 217 },
+	{ 218, 218 },
+	{ 219, 219 },
+	{ 220, 220 },
+	{ 221, 221 },
+	{ 222, 222 },
+	{ 223, 223 },
+	{ 224, 224 },
+	{ 225, 225 },
+	{ 226, 226 },
+	{ 227, 227 },
+	{ 228, 228 },
+	{ 229, 229 },
+	{ 230, 230 },
+	{ 231, 231 },
+	{ 232, 232 },
+	{ 233, 233 },
+	{ 234, 234 },
+	{ 235, 235 },
+	{ 236, 236 },
+	{ 237, 237 },
+	{ 238, 238 },
+	{ 239, 239 },
+	{ 240, 240 },
+	{ 241, 241 },
+	{ 242, 242 },
+	{ 243, 243 },
+	{ 244, 244 },
+	{ 245, 245 },
+	{ 246, 246 },
+	{ 247, 247 },
+	{ 248, 248 },
+	{ 249, 249 },
+	{ 250, 250 },
+	{ 251, 251 },
+	{ 252, 252 },
+	{ 253, 253 },
+	{ 254, 254 },
+	{ 255, 255 },
+	{ 34, 8220 },
+	{ 34, 8221 },
+	{ 39, 8216 },
+	{ 39, 8217 },
+	{ 45, 8211 },
+	{ 45, 8212 },
+	{ 32, 8194 },
+	{ 32, 8195 },
+	{ 32, 8201 },
+	{ 65, 256 },
+	{ 65, 258 },
+	{ 65, 260 },
+	{ 65, 461 },
+	{ 97, 257 },
+	{ 97, 259 },
+	{ 97, 261 },
+	{ 97, 462 },
+	{ 67, 262 },
+	{ 67, 264 },
+	{ 67, 266 },
+	{ 67, 268 },
+	{ 99, 263 },
+	{ 99, 265 },
+	{ 99, 267 },
+	{ 99, 269 },
+	{ 68, 270 },
+	{ 100, 271 },
+	{ 69, 274 },
+	{ 69, 276 },
+	{ 69, 278 },
+	{ 69, 280 },
+	{ 69, 282 },
+	{ 101, 275 },
+	{ 101, 277 },
+	{ 101, 279 },
+	{ 101, 281 },
+	{ 101, 283 },
+	{ 71, 284 },
+	{ 71, 286 },
+	{ 71, 288 },
+	{ 71, 290 },
+	{ 71, 486 },
+	{ 71, 500 },
+	{ 103, 285 },
+	{ 103, 287 },
+	{ 103, 289 },
+	{ 103, 291 },
+	{ 103, 487 },
+	{ 103, 501 },
+	{ 72, 292 },
+	{ 104, 293 },
+	{ 73, 296 },
+	{ 73, 298 },
+	{ 73, 300 },
+	{ 73, 302 },
+	{ 73, 304 },
+	{ 73, 463 },
+	{ 105, 297 },
+	{ 105, 299 },
+	{ 105, 301 },
+	{ 105, 303 },
+	{ 105, 464 },
+	{ 74, 308 },
+	{ 106, 309 },
+	{ 75, 310 },
+	{ 75, 488 },
+	{ 107, 311 },
+	{ 107, 489 },
+	{ 76, 313 },
+	{ 76, 315 },
+	{ 76, 317 },
+	{ 76, 319 },
+	{ 76, 321 },
+	{ 108, 314 },
+	{ 108, 316 },
+	{ 108, 318 },
+	{ 108, 320 },
+	{ 108, 322 },
+	{ 77, 323 },
+	{ 77, 325 },
+	{ 77, 327 },
+	{ 109, 324 },
+	{ 109, 326 },
+	{ 109, 328 },
+	{ 109, 329 },
+	{ 78, 332 },
+	{ 78, 334 },
+	{ 78, 336 },
+	{ 78, 465 },
+	{ 78, 490 },
+	{ 110, 333 },
+	{ 110, 335 },
+	{ 110, 337 },
+	{ 110, 466 },
+	{ 110, 491 },
+	{ 82, 340 },
+	{ 82, 342 },
+	{ 82, 344 },
+	{ 114, 341 },
+	{ 114, 343 },
+	{ 114, 345 },
+	{ 83, 346 },
+	{ 83, 348 },
+	{ 83, 350 },
+	{ 83, 352 },
+	{ 115, 347 },
+	{ 115, 349 },
+	{ 115, 351 },
+	{ 115, 353 },
+	{ 84, 354 },
+	{ 84, 356 },
+	{ 116, 355 },
+	{ 116, 357 },
+	{ 85, 360 },
+	{ 85, 362 },
+	{ 85, 364 },
+	{ 85, 366 },
+	{ 85, 368 },
+	{ 85, 370 },
+	{ 85, 467 },
+	{ 117, 361 },
+	{ 117, 363 },
+	{ 117, 365 },
+	{ 117, 367 },
+	{ 117, 369 },
+	{ 117, 371 },
+	{ 117, 468 },
+	{ 87, 372 },
+	{ 119, 373 },
+	{ 89, 374 },
+	{ 89, 376 },
+	{ 121, 375 },
+	{ 90, 377 },
+	{ 90, 379 },
+	{ 90, 381 },
+	{ 122, 378 },
+	{ 122, 380 },
+	{ 122, 382 },
+};
+static convert_t adobestd[] = {
+	{ 0, 0 },
+	{ 1, 1 },
+	{ 2, 2 },
+	{ 3, 3 },
+	{ 4, 4 },
+	{ 5, 5 },
+	{ 6, 6 },
+	{ 7, 7 },
+	{ 8, 8 },
+	{ 9, 9 },
+	{ 10, 10 },
+	{ 11, 11 },
+	{ 12, 12 },
+	{ 13, 13 },
+	{ 14, 14 },
+	{ 15, 15 },
+	{ 16, 16 },
+	{ 17, 17 },
+	{ 18, 18 },
+	{ 19, 19 },
+	{ 20, 20 },
+	{ 21, 21 },
+	{ 22, 22 },
+	{ 23, 23 },
+	{ 24, 24 },
+	{ 25, 25 },
+	{ 26, 26 },
+	{ 27, 27 },
+	{ 28, 28 },
+	{ 29, 29 },
+	{ 30, 30 },
+	{ 31, 31 },
+	{ 32, 32 },
+	{ 33, 33 },
+	{ 34, 34 },
+	{ 35, 35 },
+	{ 36, 36 },
+	{ 37, 37 },
+	{ 38, 38 },
+	{ 39, 39 },
+	{ 40, 40 },
+	{ 41, 41 },
+	{ 42, 42 },
+	{ 43, 43 },
+	{ 44, 44 },
+	{ 45, 45 },
+	{ 46, 46 },
+	{ 47, 47 },
+	{ 48, 48 },
+	{ 49, 49 },
+	{ 50, 50 },
+	{ 51, 51 },
+	{ 52, 52 },
+	{ 53, 53 },
+	{ 54, 54 },
+	{ 55, 55 },
+	{ 56, 56 },
+	{ 57, 57 },
+	{ 58, 58 },
+	{ 59, 59 },
+	{ 60, 60 },
+	{ 61, 61 },
+	{ 62, 62 },
+	{ 63, 63 },
+	{ 64, 64 },
+	{ 65, 65 },
+	{ 66, 66 },
+	{ 67, 67 },
+	{ 68, 68 },
+	{ 69, 69 },
+	{ 70, 70 },
+	{ 71, 71 },
+	{ 72, 72 },
+	{ 73, 73 },
+	{ 74, 74 },
+	{ 75, 75 },
+	{ 76, 76 },
+	{ 77, 77 },
+	{ 78, 78 },
+	{ 79, 79 },
+	{ 80, 80 },
+	{ 81, 81 },
+	{ 82, 82 },
+	{ 83, 83 },
+	{ 84, 84 },
+	{ 85, 85 },
+	{ 86, 86 },
+	{ 87, 87 },
+	{ 88, 88 },
+	{ 89, 89 },
+	{ 90, 90 },
+	{ 91, 91 },
+	{ 92, 92 },
+	{ 93, 93 },
+	{ 94, 94 },
+	{ 95, 95 },
+	{ 96, 96 },
+	{ 97, 97 },
+	{ 98, 98 },
+	{ 99, 99 },
+	{ 100, 100 },
+	{ 101, 101 },
+	{ 102, 102 },
+	{ 103, 103 },
+	{ 104, 104 },
+	{ 105, 105 },
+	{ 106, 106 },
+	{ 107, 107 },
+	{ 108, 108 },
+	{ 109, 109 },
+	{ 110, 110 },
+	{ 111, 111 },
+	{ 112, 112 },
+	{ 113, 113 },
+	{ 114, 114 },
+	{ 115, 115 },
+	{ 116, 116 },
+	{ 117, 117 },
+	{ 118, 118 },
+	{ 119, 119 },
+	{ 120, 120 },
+	{ 121, 121 },
+	{ 122, 122 },
+	{ 123, 123 },
+	{ 124, 124 },
+	{ 125, 125 },
+	{ 126, 126 },
+	{ 127, 127 },
+	{ 128, 128 },
+	{ 129, 129 },
+	{ 130, 130 },
+	{ 131, 131 },
+	{ 132, 132 },
+	{ 133, 133 },
+	{ 134, 134 },
+	{ 135, 135 },
+	{ 136, 136 },
+	{ 137, 137 },
+	{ 138, 138 },
+	{ 139, 139 },
+	{ 140, 140 },
+	{ 141, 141 },
+	{ 142, 142 },
+	{ 143, 143 },
+	{ 144, 144 },
+	{ 145, 145 },
+	{ 146, 146 },
+	{ 147, 147 },
+	{ 148, 148 },
+	{ 149, 149 },
+	{ 150, 150 },
+	{ 151, 151 },
+	{ 152, 152 },
+	{ 153, 153 },
+	{ 154, 154 },
+	{ 155, 155 },
+	{ 156, 156 },
+	{ 157, 157 },
+	{ 158, 158 },
+	{ 159, 159 },
+	{ 160, 160 },
+	{ 161, 161 },
+	{ 162, 162 },
+	{ 163, 163 },
+	{ 164, 8260 },
+	{ 165, 165 },
+	{ 166, 402 },
+	{ 167, 167 },
+	{ 168, 164 },
+	{ 169, 169 },
+	{ 170, 8220 },
+	{ 171, 171 },
+	{ 172, 8249 },
+	{ 173, 8250 },
+	{ 174, 64257 },
+	{ 175, 64258 },
+	{ 176, 176 },
+	{ 177, 8211 },
+	{ 178, 8224 },
+	{ 179, 8225 },
+	{ 180, 183 },
+	{ 181, 181 },
+	{ 182, 182 },
+	{ 183, 8729 },
+	{ 184, 8218 },
+	{ 185, 8222 },
+	{ 186, 8221 },
+	{ 187, 187 },
+	{ 188, 8943 },
+	{ 189, 8240 },
+	{ 190, 190 },
+	{ 191, 191 },
+	{ 192, 192 },
+	{ 193, 768 },
+	{ 194, 180 },
+	{ 195, 770 },
+	{ 196, 771 },
+	{ 197, 175 },
+	{ 198, 728 },
+	{ 199, 729 },
+	{ 200, 168 },
+	{ 201, 201 },
+	{ 202, 176 },
+	{ 203, 184 },
+	{ 204, 204 },
+	{ 205, 733 },
+	{ 206, 731 },
+	{ 207, 711 },
+	{ 208, 8212 },
+	{ 209, 209 },
+	{ 210, 210 },
+	{ 211, 211 },
+	{ 212, 212 },
+	{ 213, 213 },
+	{ 214, 214 },
+	{ 215, 215 },
+	{ 216, 216 },
+	{ 217, 217 },
+	{ 218, 218 },
+	{ 219, 219 },
+	{ 220, 220 },
+	{ 221, 221 },
+	{ 222, 222 },
+	{ 223, 223 },
+	{ 224, 224 },
+	{ 225, 198 },
+	{ 226, 226 },
+	{ 227, 170 },
+	{ 228, 228 },
+	{ 229, 229 },
+	{ 230, 230 },
+	{ 231, 231 },
+	{ 232, 321 },
+	{ 233, 216 },
+	{ 234, 338 },
+	{ 235, 186 },
+	{ 236, 236 },
+	{ 237, 237 },
+	{ 238, 238 },
+	{ 239, 239 },
+	{ 240, 240 },
+	{ 241, 230 },
+	{ 242, 242 },
+	{ 243, 243 },
+	{ 244, 244 },
+	{ 245, 305 },
+	{ 246, 246 },
+	{ 247, 247 },
+	{ 248, 322 },
+	{ 249, 248 },
+	{ 250, 339 },
+	{ 251, 223 },
+	{ 252, 252 },
+	{ 253, 253 },
+	{ 254, 254 },
+	{ 255, 255 },
+	{ 39, 8216 },
+	{ 39, 8217 },
+	{ 32, 8194 },
+	{ 32, 8195 },
+	{ 32, 8201 },
+	{ 65, 193 },
+	{ 65, 194 },
+	{ 65, 195 },
+	{ 65, 196 },
+	{ 65, 197 },
+	{ 65, 256 },
+	{ 65, 258 },
+	{ 65, 260 },
+	{ 65, 461 },
+	{ 97, 225 },
+	{ 97, 227 },
+	{ 97, 257 },
+	{ 97, 259 },
+	{ 97, 261 },
+	{ 97, 462 },
+	{ 67, 199 },
+	{ 67, 262 },
+	{ 67, 264 },
+	{ 67, 266 },
+	{ 67, 268 },
+	{ 99, 263 },
+	{ 99, 265 },
+	{ 99, 267 },
+	{ 99, 269 },
+	{ 68, 270 },
+	{ 100, 271 },
+	{ 69, 200 },
+	{ 69, 202 },
+	{ 69, 203 },
+	{ 69, 274 },
+	{ 69, 276 },
+	{ 69, 278 },
+	{ 69, 280 },
+	{ 69, 282 },
+	{ 101, 232 },
+	{ 101, 233 },
+	{ 101, 234 },
+	{ 101, 235 },
+	{ 101, 275 },
+	{ 101, 277 },
+	{ 101, 279 },
+	{ 101, 281 },
+	{ 101, 283 },
+	{ 71, 284 },
+	{ 71, 286 },
+	{ 71, 288 },
+	{ 71, 290 },
+	{ 71, 486 },
+	{ 71, 500 },
+	{ 103, 285 },
+	{ 103, 287 },
+	{ 103, 289 },
+	{ 103, 291 },
+	{ 103, 487 },
+	{ 103, 501 },
+	{ 72, 292 },
+	{ 104, 293 },
+	{ 73, 205 },
+	{ 73, 206 },
+	{ 73, 207 },
+	{ 73, 296 },
+	{ 73, 298 },
+	{ 73, 300 },
+	{ 73, 302 },
+	{ 73, 304 },
+	{ 73, 463 },
+	{ 105, 297 },
+	{ 105, 299 },
+	{ 105, 301 },
+	{ 105, 303 },
+	{ 105, 464 },
+	{ 74, 308 },
+	{ 106, 309 },
+	{ 75, 310 },
+	{ 75, 488 },
+	{ 107, 311 },
+	{ 107, 489 },
+	{ 76, 313 },
+	{ 76, 315 },
+	{ 76, 317 },
+	{ 76, 319 },
+	{ 108, 314 },
+	{ 108, 316 },
+	{ 108, 318 },
+	{ 108, 320 },
+	{ 77, 323 },
+	{ 77, 325 },
+	{ 77, 327 },
+	{ 109, 241 },
+	{ 109, 324 },
+	{ 109, 326 },
+	{ 109, 328 },
+	{ 109, 329 },
+	{ 78, 332 },
+	{ 78, 334 },
+	{ 78, 336 },
+	{ 78, 465 },
+	{ 78, 490 },
+	{ 110, 245 },
+	{ 110, 333 },
+	{ 110, 335 },
+	{ 110, 337 },
+	{ 110, 466 },
+	{ 110, 491 },
+	{ 82, 340 },
+	{ 82, 342 },
+	{ 82, 344 },
+	{ 114, 341 },
+	{ 114, 343 },
+	{ 114, 345 },
+	{ 83, 346 },
+	{ 83, 348 },
+	{ 83, 350 },
+	{ 83, 352 },
+	{ 115, 347 },
+	{ 115, 349 },
+	{ 115, 351 },
+	{ 115, 353 },
+	{ 84, 354 },
+	{ 84, 356 },
+	{ 116, 355 },
+	{ 116, 357 },
+	{ 85, 360 },
+	{ 85, 362 },
+	{ 85, 364 },
+	{ 85, 366 },
+	{ 85, 368 },
+	{ 85, 370 },
+	{ 85, 467 },
+	{ 117, 249 },
+	{ 117, 250 },
+	{ 117, 251 },
+	{ 117, 361 },
+	{ 117, 363 },
+	{ 117, 365 },
+	{ 117, 367 },
+	{ 117, 369 },
+	{ 117, 371 },
+	{ 117, 468 },
+	{ 87, 372 },
+	{ 119, 373 },
+	{ 89, 374 },
+	{ 89, 376 },
+	{ 121, 375 },
+	{ 90, 377 },
+	{ 90, 379 },
+	{ 90, 381 },
+	{ 122, 378 },
+	{ 122, 380 },
+	{ 122, 382 },
+};
+static convert_t adobesym[] = {
+	{ 0, 0 },
+	{ 1, 1 },
+	{ 2, 2 },
+	{ 3, 3 },
+	{ 4, 4 },
+	{ 5, 5 },
+	{ 6, 6 },
+	{ 7, 7 },
+	{ 8, 8 },
+	{ 9, 9 },
+	{ 10, 10 },
+	{ 11, 11 },
+	{ 12, 12 },
+	{ 13, 13 },
+	{ 14, 14 },
+	{ 15, 15 },
+	{ 16, 16 },
+	{ 17, 17 },
+	{ 18, 18 },
+	{ 19, 19 },
+	{ 20, 20 },
+	{ 21, 21 },
+	{ 22, 22 },
+	{ 23, 23 },
+	{ 24, 24 },
+	{ 25, 25 },
+	{ 26, 26 },
+	{ 27, 27 },
+	{ 28, 28 },
+	{ 29, 29 },
+	{ 30, 30 },
+	{ 31, 31 },
+	{ 32, 32 },
+	{ 33, 33 },
+	{ 34, 34 },
+	{ 35, 35 },
+	{ 36, 36 },
+	{ 37, 37 },
+	{ 38, 38 },
+	{ 39, 39 },
+	{ 40, 40 },
+	{ 41, 41 },
+	{ 42, 42 },
+	{ 43, 43 },
+	{ 44, 44 },
+	{ 45, 45 },
+	{ 46, 46 },
+	{ 47, 47 },
+	{ 48, 48 },
+	{ 49, 49 },
+	{ 50, 50 },
+	{ 51, 51 },
+	{ 52, 52 },
+	{ 53, 53 },
+	{ 54, 54 },
+	{ 55, 55 },
+	{ 56, 56 },
+	{ 57, 57 },
+	{ 58, 58 },
+	{ 59, 59 },
+	{ 60, 60 },
+	{ 61, 61 },
+	{ 62, 62 },
+	{ 63, 63 },
+	{ 64, 64 },
+	{ 65, 65 },
+	{ 66, 66 },
+	{ 67, 67 },
+	{ 68, 68 },
+	{ 69, 69 },
+	{ 70, 70 },
+	{ 71, 71 },
+	{ 72, 72 },
+	{ 73, 73 },
+	{ 74, 74 },
+	{ 75, 75 },
+	{ 76, 76 },
+	{ 77, 77 },
+	{ 78, 78 },
+	{ 79, 79 },
+	{ 80, 80 },
+	{ 81, 81 },
+	{ 82, 82 },
+	{ 83, 83 },
+	{ 84, 84 },
+	{ 85, 85 },
+	{ 86, 86 },
+	{ 87, 87 },
+	{ 88, 88 },
+	{ 89, 89 },
+	{ 90, 90 },
+	{ 91, 91 },
+	{ 92, 92 },
+	{ 93, 93 },
+	{ 94, 94 },
+	{ 95, 95 },
+	{ 96, 96 },
+	{ 97, 97 },
+	{ 98, 98 },
+	{ 99, 99 },
+	{ 100, 100 },
+	{ 101, 101 },
+	{ 102, 102 },
+	{ 103, 103 },
+	{ 104, 104 },
+	{ 105, 105 },
+	{ 106, 106 },
+	{ 107, 107 },
+	{ 108, 108 },
+	{ 109, 109 },
+	{ 110, 110 },
+	{ 111, 111 },
+	{ 112, 112 },
+	{ 113, 113 },
+	{ 114, 114 },
+	{ 115, 115 },
+	{ 116, 116 },
+	{ 117, 117 },
+	{ 118, 118 },
+	{ 119, 119 },
+	{ 120, 120 },
+	{ 121, 121 },
+	{ 122, 122 },
+	{ 123, 123 },
+	{ 124, 124 },
+	{ 125, 125 },
+	{ 126, 126 },
+	{ 127, 127 },
+	{ 128, 128 },
+	{ 129, 129 },
+	{ 130, 130 },
+	{ 131, 131 },
+	{ 132, 132 },
+	{ 133, 133 },
+	{ 134, 134 },
+	{ 135, 135 },
+	{ 136, 136 },
+	{ 137, 137 },
+	{ 138, 138 },
+	{ 139, 139 },
+	{ 140, 140 },
+	{ 141, 141 },
+	{ 142, 142 },
+	{ 143, 143 },
+	{ 144, 144 },
+	{ 145, 145 },
+	{ 146, 146 },
+	{ 147, 147 },
+	{ 148, 148 },
+	{ 149, 149 },
+	{ 150, 150 },
+	{ 151, 151 },
+	{ 152, 152 },
+	{ 153, 153 },
+	{ 154, 154 },
+	{ 155, 155 },
+	{ 156, 156 },
+	{ 157, 157 },
+	{ 158, 158 },
+	{ 159, 159 },
+	{ 160, 160 },
+	{ 161, 161 },
+	{ 162, 8242 },
+	{ 163, 8804 },
+	{ 164, 8725 },
+	{ 165, 8734 },
+	{ 166, 402 },
+	{ 167, 9827 },
+	{ 168, 9830 },
+	{ 169, 9829 },
+	{ 170, 9824 },
+	{ 171, 8596 },
+	{ 172, 8592 },
+	{ 173, 8593 },
+	{ 174, 8594 },
+	{ 175, 8595 },
+	{ 176, 176 },
+	{ 177, 177 },
+	{ 178, 8243 },
+	{ 179, 8805 },
+	{ 180, 215 },
+	{ 181, 8733 },
+	{ 182, 8706 },
+	{ 183, 8729 },
+	{ 184, 247 },
+	{ 185, 8800 },
+	{ 186, 8801 },
+	{ 187, 8776 },
+	{ 188, 8943 },
+	{ 189, 189 },
+	{ 190, 190 },
+	{ 191, 191 },
+	{ 192, 192 },
+	{ 193, 193 },
+	{ 194, 194 },
+	{ 195, 195 },
+	{ 196, 196 },
+	{ 197, 197 },
+	{ 198, 8709 },
+	{ 199, 8745 },
+	{ 200, 8746 },
+	{ 201, 8835 },
+	{ 202, 8839 },
+	{ 203, 203 },
+	{ 204, 8834 },
+	{ 205, 8838 },
+	{ 206, 8712 },
+	{ 207, 207 },
+	{ 208, 8736 },
+	{ 209, 8711 },
+	{ 210, 210 },
+	{ 211, 211 },
+	{ 212, 212 },
+	{ 213, 8719 },
+	{ 214, 8730 },
+	{ 215, 8901 },
+	{ 216, 172 },
+	{ 217, 8743 },
+	{ 218, 8744 },
+	{ 219, 8660 },
+	{ 220, 8656 },
+	{ 221, 8657 },
+	{ 222, 8658 },
+	{ 223, 8659 },
+	{ 224, 9674 },
+	{ 225, 9001 },
+	{ 226, 226 },
+	{ 227, 227 },
+	{ 228, 228 },
+	{ 229, 8721 },
+	{ 230, 230 },
+	{ 231, 231 },
+	{ 232, 232 },
+	{ 233, 233 },
+	{ 234, 234 },
+	{ 235, 235 },
+	{ 236, 236 },
+	{ 237, 237 },
+	{ 238, 238 },
+	{ 239, 239 },
+	{ 240, 240 },
+	{ 241, 9002 },
+	{ 242, 8747 },
+	{ 243, 243 },
+	{ 244, 244 },
+	{ 245, 245 },
+	{ 246, 246 },
+	{ 247, 247 },
+	{ 248, 248 },
+	{ 249, 249 },
+	{ 250, 250 },
+	{ 251, 251 },
+	{ 252, 252 },
+	{ 253, 253 },
+	{ 254, 254 },
+	{ 255, 255 },
+	{ 34, 8220 },
+	{ 34, 8221 },
+	{ 39, 8216 },
+	{ 39, 8217 },
+	{ 45, 8211 },
+	{ 45, 8212 },
+	{ 32, 8194 },
+	{ 32, 8195 },
+	{ 32, 8201 },
+	{ 65, 256 },
+	{ 65, 258 },
+	{ 65, 260 },
+	{ 65, 461 },
+	{ 97, 224 },
+	{ 97, 225 },
+	{ 97, 229 },
+	{ 97, 257 },
+	{ 97, 259 },
+	{ 97, 261 },
+	{ 97, 462 },
+	{ 67, 199 },
+	{ 67, 262 },
+	{ 67, 264 },
+	{ 67, 266 },
+	{ 67, 268 },
+	{ 99, 263 },
+	{ 99, 265 },
+	{ 99, 267 },
+	{ 99, 269 },
+	{ 68, 270 },
+	{ 100, 271 },
+	{ 69, 200 },
+	{ 69, 201 },
+	{ 69, 202 },
+	{ 69, 274 },
+	{ 69, 276 },
+	{ 69, 278 },
+	{ 69, 280 },
+	{ 69, 282 },
+	{ 101, 275 },
+	{ 101, 277 },
+	{ 101, 279 },
+	{ 101, 281 },
+	{ 101, 283 },
+	{ 71, 284 },
+	{ 71, 286 },
+	{ 71, 288 },
+	{ 71, 290 },
+	{ 71, 486 },
+	{ 71, 500 },
+	{ 103, 285 },
+	{ 103, 287 },
+	{ 103, 289 },
+	{ 103, 291 },
+	{ 103, 487 },
+	{ 103, 501 },
+	{ 72, 292 },
+	{ 104, 293 },
+	{ 73, 204 },
+	{ 73, 205 },
+	{ 73, 206 },
+	{ 73, 296 },
+	{ 73, 298 },
+	{ 73, 300 },
+	{ 73, 302 },
+	{ 73, 304 },
+	{ 73, 463 },
+	{ 105, 297 },
+	{ 105, 299 },
+	{ 105, 301 },
+	{ 105, 303 },
+	{ 105, 305 },
+	{ 105, 464 },
+	{ 74, 308 },
+	{ 106, 309 },
+	{ 75, 310 },
+	{ 75, 488 },
+	{ 107, 311 },
+	{ 107, 489 },
+	{ 76, 313 },
+	{ 76, 315 },
+	{ 76, 317 },
+	{ 76, 319 },
+	{ 76, 321 },
+	{ 108, 314 },
+	{ 108, 316 },
+	{ 108, 318 },
+	{ 108, 320 },
+	{ 108, 322 },
+	{ 77, 209 },
+	{ 77, 323 },
+	{ 77, 325 },
+	{ 77, 327 },
+	{ 109, 241 },
+	{ 109, 324 },
+	{ 109, 326 },
+	{ 109, 328 },
+	{ 109, 329 },
+	{ 78, 213 },
+	{ 78, 214 },
+	{ 78, 216 },
+	{ 78, 332 },
+	{ 78, 334 },
+	{ 78, 336 },
+	{ 78, 465 },
+	{ 78, 490 },
+	{ 110, 242 },
+	{ 110, 333 },
+	{ 110, 335 },
+	{ 110, 337 },
+	{ 110, 466 },
+	{ 110, 491 },
+	{ 82, 340 },
+	{ 82, 342 },
+	{ 82, 344 },
+	{ 114, 341 },
+	{ 114, 343 },
+	{ 114, 345 },
+	{ 83, 346 },
+	{ 83, 348 },
+	{ 83, 350 },
+	{ 83, 352 },
+	{ 115, 347 },
+	{ 115, 349 },
+	{ 115, 351 },
+	{ 115, 353 },
+	{ 84, 354 },
+	{ 84, 356 },
+	{ 116, 355 },
+	{ 116, 357 },
+	{ 85, 217 },
+	{ 85, 218 },
+	{ 85, 219 },
+	{ 85, 220 },
+	{ 85, 360 },
+	{ 85, 362 },
+	{ 85, 364 },
+	{ 85, 366 },
+	{ 85, 368 },
+	{ 85, 370 },
+	{ 85, 467 },
+	{ 117, 361 },
+	{ 117, 363 },
+	{ 117, 365 },
+	{ 117, 367 },
+	{ 117, 369 },
+	{ 117, 371 },
+	{ 117, 468 },
+	{ 87, 372 },
+	{ 119, 373 },
+	{ 89, 221 },
+	{ 89, 374 },
+	{ 89, 376 },
+	{ 121, 375 },
+	{ 90, 377 },
+	{ 90, 379 },
+	{ 90, 381 },
+	{ 122, 378 },
+	{ 122, 380 },
+	{ 122, 382 },
+};
+static convert_t applecro[] = {
+	{ 0, 0 },
+	{ 1, 1 },
+	{ 2, 2 },
+	{ 3, 3 },
+	{ 4, 4 },
+	{ 5, 5 },
+	{ 6, 6 },
+	{ 7, 7 },
+	{ 8, 8 },
+	{ 9, 9 },
+	{ 10, 10 },
+	{ 11, 11 },
+	{ 12, 12 },
+	{ 13, 13 },
+	{ 14, 14 },
+	{ 15, 15 },
+	{ 16, 16 },
+	{ 17, 17 },
+	{ 18, 18 },
+	{ 19, 19 },
+	{ 20, 20 },
+	{ 21, 21 },
+	{ 22, 22 },
+	{ 23, 23 },
+	{ 24, 24 },
+	{ 25, 25 },
+	{ 26, 26 },
+	{ 27, 27 },
+	{ 28, 28 },
+	{ 29, 29 },
+	{ 30, 30 },
+	{ 31, 31 },
+	{ 32, 32 },
+	{ 33, 33 },
+	{ 34, 34 },
+	{ 35, 35 },
+	{ 36, 36 },
+	{ 37, 37 },
+	{ 38, 38 },
+	{ 39, 39 },
+	{ 40, 40 },
+	{ 41, 41 },
+	{ 42, 42 },
+	{ 43, 43 },
+	{ 44, 44 },
+	{ 45, 45 },
+	{ 46, 46 },
+	{ 47, 47 },
+	{ 48, 48 },
+	{ 49, 49 },
+	{ 50, 50 },
+	{ 51, 51 },
+	{ 52, 52 },
+	{ 53, 53 },
+	{ 54, 54 },
+	{ 55, 55 },
+	{ 56, 56 },
+	{ 57, 57 },
+	{ 58, 58 },
+	{ 59, 59 },
+	{ 60, 60 },
+	{ 61, 61 },
+	{ 62, 62 },
+	{ 63, 63 },
+	{ 64, 64 },
+	{ 65, 65 },
+	{ 66, 66 },
+	{ 67, 67 },
+	{ 68, 68 },
+	{ 69, 69 },
+	{ 70, 70 },
+	{ 71, 71 },
+	{ 72, 72 },
+	{ 73, 73 },
+	{ 74, 74 },
+	{ 75, 75 },
+	{ 76, 76 },
+	{ 77, 77 },
+	{ 78, 78 },
+	{ 79, 79 },
+	{ 80, 80 },
+	{ 81, 81 },
+	{ 82, 82 },
+	{ 83, 83 },
+	{ 84, 84 },
+	{ 85, 85 },
+	{ 86, 86 },
+	{ 87, 87 },
+	{ 88, 88 },
+	{ 89, 89 },
+	{ 90, 90 },
+	{ 91, 91 },
+	{ 92, 92 },
+	{ 93, 93 },
+	{ 94, 94 },
+	{ 95, 95 },
+	{ 96, 96 },
+	{ 97, 97 },
+	{ 98, 98 },
+	{ 99, 99 },
+	{ 100, 100 },
+	{ 101, 101 },
+	{ 102, 102 },
+	{ 103, 103 },
+	{ 104, 104 },
+	{ 105, 105 },
+	{ 106, 106 },
+	{ 107, 107 },
+	{ 108, 108 },
+	{ 109, 109 },
+	{ 110, 110 },
+	{ 111, 111 },
+	{ 112, 112 },
+	{ 113, 113 },
+	{ 114, 114 },
+	{ 115, 115 },
+	{ 116, 116 },
+	{ 117, 117 },
+	{ 118, 118 },
+	{ 119, 119 },
+	{ 120, 120 },
+	{ 121, 121 },
+	{ 122, 122 },
+	{ 123, 123 },
+	{ 124, 124 },
+	{ 125, 125 },
+	{ 126, 126 },
+	{ 127, 127 },
+	{ 128, 196 },
+	{ 129, 197 },
+	{ 130, 199 },
+	{ 131, 201 },
+	{ 132, 209 },
+	{ 133, 214 },
+	{ 134, 220 },
+	{ 135, 225 },
+	{ 136, 224 },
+	{ 137, 226 },
+	{ 138, 228 },
+	{ 139, 227 },
+	{ 140, 229 },
+	{ 141, 231 },
+	{ 142, 233 },
+	{ 143, 232 },
+	{ 144, 234 },
+	{ 145, 235 },
+	{ 146, 237 },
+	{ 147, 236 },
+	{ 148, 238 },
+	{ 149, 239 },
+	{ 150, 241 },
+	{ 151, 243 },
+	{ 152, 242 },
+	{ 153, 244 },
+	{ 154, 246 },
+	{ 155, 245 },
+	{ 156, 250 },
+	{ 157, 249 },
+	{ 158, 251 },
+	{ 159, 252 },
+	{ 160, 8224 },
+	{ 161, 176 },
+	{ 162, 162 },
+	{ 163, 163 },
+	{ 164, 167 },
+	{ 165, 8729 },
+	{ 166, 182 },
+	{ 167, 223 },
+	{ 168, 174 },
+	{ 169, 352 },
+	{ 170, 8482 },
+	{ 171, 180 },
+	{ 172, 168 },
+	{ 173, 8800 },
+	{ 174, 381 },
+	{ 175, 216 },
+	{ 176, 8734 },
+	{ 177, 177 },
+	{ 178, 8804 },
+	{ 179, 8805 },
+	{ 180, 916 },
+	{ 181, 181 },
+	{ 182, 8706 },
+	{ 183, 8721 },
+	{ 184, 8719 },
+	{ 185, 353 },
+	{ 186, 8747 },
+	{ 187, 170 },
+	{ 188, 186 },
+	{ 189, 937 },
+	{ 190, 382 },
+	{ 191, 248 },
+	{ 192, 191 },
+	{ 193, 161 },
+	{ 194, 172 },
+	{ 195, 8730 },
+	{ 196, 402 },
+	{ 197, 8776 },
+	{ 198, 262 },
+	{ 199, 171 },
+	{ 200, 268 },
+	{ 201, 8943 },
+	{ 202, 160 },
+	{ 203, 192 },
+	{ 204, 195 },
+	{ 205, 213 },
+	{ 206, 338 },
+	{ 207, 339 },
+	{ 208, 272 },
+	{ 209, 8212 },
+	{ 210, 8220 },
+	{ 211, 8221 },
+	{ 212, 8216 },
+	{ 213, 8217 },
+	{ 214, 247 },
+	{ 215, 9674 },
+	{ 216, 65534 },
+	{ 217, 169 },
+	{ 218, 8260 },
+	{ 219, 164 },
+	{ 220, 8249 },
+	{ 221, 8250 },
+	{ 222, 198 },
+	{ 223, 187 },
+	{ 224, 8211 },
+	{ 225, 183 },
+	{ 226, 8218 },
+	{ 227, 8222 },
+	{ 228, 8240 },
+	{ 229, 194 },
+	{ 230, 263 },
+	{ 231, 193 },
+	{ 232, 269 },
+	{ 233, 200 },
+	{ 234, 205 },
+	{ 235, 206 },
+	{ 236, 207 },
+	{ 237, 204 },
+	{ 238, 211 },
+	{ 239, 212 },
+	{ 240, 273 },
+	{ 241, 210 },
+	{ 242, 218 },
+	{ 243, 219 },
+	{ 244, 217 },
+	{ 245, 305 },
+	{ 246, 770 },
+	{ 247, 771 },
+	{ 248, 175 },
+	{ 249, 960 },
+	{ 250, 203 },
+	{ 251, 730 },
+	{ 252, 184 },
+	{ 253, 202 },
+	{ 254, 230 },
+	{ 255, 711 },
+	{ 32, 8194 },
+	{ 32, 8195 },
+	{ 32, 8201 },
+	{ 65, 256 },
+	{ 65, 258 },
+	{ 65, 260 },
+	{ 65, 461 },
+	{ 97, 257 },
+	{ 97, 259 },
+	{ 97, 261 },
+	{ 97, 462 },
+	{ 67, 264 },
+	{ 67, 266 },
+	{ 99, 265 },
+	{ 99, 267 },
+	{ 68, 270 },
+	{ 100, 271 },
+	{ 69, 274 },
+	{ 69, 276 },
+	{ 69, 278 },
+	{ 69, 280 },
+	{ 69, 282 },
+	{ 101, 275 },
+	{ 101, 277 },
+	{ 101, 279 },
+	{ 101, 281 },
+	{ 101, 283 },
+	{ 71, 284 },
+	{ 71, 286 },
+	{ 71, 288 },
+	{ 71, 290 },
+	{ 71, 486 },
+	{ 71, 500 },
+	{ 103, 285 },
+	{ 103, 287 },
+	{ 103, 289 },
+	{ 103, 291 },
+	{ 103, 487 },
+	{ 103, 501 },
+	{ 72, 292 },
+	{ 104, 293 },
+	{ 73, 296 },
+	{ 73, 298 },
+	{ 73, 300 },
+	{ 73, 302 },
+	{ 73, 304 },
+	{ 73, 463 },
+	{ 105, 297 },
+	{ 105, 299 },
+	{ 105, 301 },
+	{ 105, 303 },
+	{ 105, 464 },
+	{ 74, 308 },
+	{ 106, 309 },
+	{ 75, 310 },
+	{ 75, 488 },
+	{ 107, 311 },
+	{ 107, 489 },
+	{ 76, 313 },
+	{ 76, 315 },
+	{ 76, 317 },
+	{ 76, 319 },
+	{ 76, 321 },
+	{ 108, 314 },
+	{ 108, 316 },
+	{ 108, 318 },
+	{ 108, 320 },
+	{ 108, 322 },
+	{ 77, 323 },
+	{ 77, 325 },
+	{ 77, 327 },
+	{ 109, 324 },
+	{ 109, 326 },
+	{ 109, 328 },
+	{ 109, 329 },
+	{ 78, 332 },
+	{ 78, 334 },
+	{ 78, 336 },
+	{ 78, 465 },
+	{ 78, 490 },
+	{ 110, 333 },
+	{ 110, 335 },
+	{ 110, 337 },
+	{ 110, 466 },
+	{ 110, 491 },
+	{ 82, 340 },
+	{ 82, 342 },
+	{ 82, 344 },
+	{ 114, 341 },
+	{ 114, 343 },
+	{ 114, 345 },
+	{ 83, 346 },
+	{ 83, 348 },
+	{ 83, 350 },
+	{ 115, 347 },
+	{ 115, 349 },
+	{ 115, 351 },
+	{ 84, 354 },
+	{ 84, 356 },
+	{ 116, 355 },
+	{ 116, 357 },
+	{ 85, 360 },
+	{ 85, 362 },
+	{ 85, 364 },
+	{ 85, 366 },
+	{ 85, 368 },
+	{ 85, 370 },
+	{ 85, 467 },
+	{ 117, 361 },
+	{ 117, 363 },
+	{ 117, 365 },
+	{ 117, 367 },
+	{ 117, 369 },
+	{ 117, 371 },
+	{ 117, 468 },
+	{ 87, 372 },
+	{ 119, 373 },
+	{ 89, 221 },
+	{ 89, 374 },
+	{ 89, 376 },
+	{ 121, 253 },
+	{ 121, 255 },
+	{ 121, 375 },
+	{ 90, 377 },
+	{ 90, 379 },
+	{ 122, 378 },
+	{ 122, 380 },
 };
-charconvert adobestd[] = {
- 0,
- 1,
- 2,
- 3,
- 4,
- 5,
- 6,
- 7,
- 8,
- 9,
- 10,
- 11,
- 12,
- 13,
- 14,
- 15,
- 16,
- 17,
- 18,
- 19,
- 20,
- 21,
- 22,
- 23,
- 24,
- 25,
- 26,
- 27,
- 28,
- 29,
- 30,
- 31,
- /* 32 */ 32,/*SPACE*/
- /* 33 */ 33,/*EXCLAMATIONMARK*/
- /* 34 */ 34,/*QUOTATIONMARK*/
- /* 35 */ 35,/*NUMBERSIGN*/
- /* 36 */ 36,/*DOLLARSIGN*/
- /* 37 */ 37,/*PERCENTSIGN*/
- /* 38 */ 38,/*AMPERSAND*/
- /* 39 */ 39,/*APOSTROPHE*/
- /* 40 */ 40,/*LEFTPARENTHESIS*/
- /* 41 */ 41,/*RIGHTPARENTHESIS*/
- /* 42 */ 42,/*ASTERISK*/
- /* 43 */ 43,/*PLUSSIGN*/
- /* 44 */ 44,/*COMMA*/
- /* 45 */ 45,/*HYPHEN-MINUS*/
- /* 46 */ 46,/*FULLSTOP*/
- /* 47 */ 47,/*SOLIDUS*/
- /* 48 */ 48,/*DIGITZERO*/
- /* 49 */ 49,/*DIGITONE*/
- /* 50 */ 50,/*DIGITTWO*/
- /* 51 */ 51,/*DIGITTHREE*/
- /* 52 */ 52,/*DIGITFOUR*/
- /* 53 */ 53,/*DIGITFIVE*/
- /* 54 */ 54,/*DIGITSIX*/
- /* 55 */ 55,/*DIGITSEVEN*/
- /* 56 */ 56,/*DIGITEIGHT*/
- /* 57 */ 57,/*DIGITNINE*/
- /* 58 */ 58,/*COLON*/
- /* 59 */ 59,/*SEMICOLON*/
- /* 60 */ 60,/*LESS-THANSIGN*/
- /* 61 */ 61,/*EQUALSSIGN*/
- /* 62 */ 62,/*GREATER-THANSIGN*/
- /* 63 */ 63,/*QUESTIONMARK*/
- /* 64 */ 64,/*COMMERCIALAT*/
- /* 65 */ 65,/*LATINCAPITALLETTERA*/
- /* 66 */ 66,/*LATINCAPITALLETTERB*/
- /* 67 */ 67,/*LATINCAPITALLETTERC*/
- /* 68 */ 68,/*LATINCAPITALLETTERD*/
- /* 69 */ 69,/*LATINCAPITALLETTERE*/
- /* 70 */ 70,/*LATINCAPITALLETTERF*/
- /* 71 */ 71,/*LATINCAPITALLETTERG*/
- /* 72 */ 72,/*LATINCAPITALLETTERH*/
- /* 73 */ 73,/*LATINCAPITALLETTERI*/
- /* 74 */ 74,/*LATINCAPITALLETTERJ*/
- /* 75 */ 75,/*LATINCAPITALLETTERK*/
- /* 76 */ 76,/*LATINCAPITALLETTERL*/
- /* 77 */ 77,/*LATINCAPITALLETTERM*/
- /* 78 */ 78,/*LATINCAPITALLETTERN*/
- /* 79 */ 79,/*LATINCAPITALLETTERO*/
- /* 80 */ 80,/*LATINCAPITALLETTERP*/
- /* 81 */ 81,/*LATINCAPITALLETTERQ*/
- /* 82 */ 82,/*LATINCAPITALLETTERR*/
- /* 83 */ 83,/*LATINCAPITALLETTERS*/
- /* 84 */ 84,/*LATINCAPITALLETTERT*/
- /* 85 */ 85,/*LATINCAPITALLETTERU*/
- /* 86 */ 86,/*LATINCAPITALLETTERV*/
- /* 87 */ 87,/*LATINCAPITALLETTERW*/
- /* 88 */ 88,/*LATINCAPITALLETTERX*/
- /* 89 */ 89,/*LATINCAPITALLETTERY*/
- /* 90 */ 90,/*LATINCAPITALLETTERZ*/
- /* 91 */ 91,/*LEFTSQUAREBRACKET*/
- /* 92 */ 92,/*REVERSESOLIDUS*/
- /* 93 */ 93,/*RIGHTSQUAREBRACKET*/
- /* 94 */ 94,/*CIRCUMFLEXACCENT*/
- /* 95 */ 95,/*LOWLINE*/
- /* 96 */ 96,/*GRAVEACCENT*/
- /* 97 */ 97,/*LATINSMALLLETTERA*/
- /* 98 */ 98,/*LATINSMALLLETTERB*/
- /* 99 */ 99,/*LATINSMALLLETTERC*/
- /* 100 */ 100,/*LATINSMALLLETTERD*/
- /* 101 */ 101,/*LATINSMALLLETTERE*/
- /* 102 */ 102,/*LATINSMALLLETTERF*/
- /* 103 */ 103,/*LATINSMALLLETTERG*/
- /* 104 */ 104,/*LATINSMALLLETTERH*/
- /* 105 */ 105,/*LATINSMALLLETTERI*/
- /* 106 */ 106,/*LATINSMALLLETTERJ*/
- /* 107 */ 107,/*LATINSMALLLETTERK*/
- /* 108 */ 108,/*LATINSMALLLETTERL*/
- /* 109 */ 109,/*LATINSMALLLETTERM*/
- /* 110 */ 110,/*LATINSMALLLETTERN*/
- /* 111 */ 111,/*LATINSMALLLETTERO*/
- /* 112 */ 112,/*LATINSMALLLETTERP*/
- /* 113 */ 113,/*LATINSMALLLETTERQ*/
- /* 114 */ 114,/*LATINSMALLLETTERR*/
- /* 115 */ 115,/*LATINSMALLLETTERS*/
- /* 116 */ 116,/*LATINSMALLLETTERT*/
- /* 117 */ 117,/*LATINSMALLLETTERU*/
- /* 118 */ 118,/*LATINSMALLLETTERV*/
- /* 119 */ 119,/*LATINSMALLLETTERW*/
- /* 120 */ 120,/*LATINSMALLLETTERX*/
- /* 121 */ 121,/*LATINSMALLLETTERY*/
- /* 122 */ 122,/*LATINSMALLLETTERZ*/
- /* 123 */ 123,/*LEFTCURLYBRACKET*/
- /* 124 */ 124,/*VERTICALLINE*/
- /* 125 */ 125,/*RIGHTCURLYBRACKET*/
- /* 126 */ 126,/*TILDE*/
- 127,
- 128,
- 129,
- 130,
- 131,
- 132,
- 133,
- 134,
- 135,
- 136,
- 137,
- 138,
- 139,
- 140,
- 141,
- 142,
- 143,
- 144,
- 145,
- 146,
- 147,
- 148,
- 149,
- 150,
- 151,
- 152,
- 153,
- 154,
- 155,
- 156,
- 157,
- 158,
- 159,
- 160,
- /* 161 */ 161,/*INVERTEDEXCLAMATIONMARK*/
- /* 162 */ 162,/*CENTSIGN*/
- /* 163 */ 163,/*POUNDSIGN*/
- /* 164 */ 8260,/*FRACTIONSLASH*/
- /* 165 */ 165,/*YENSIGN*/
- /* 166 */ 402,/*LATINSMALLLETTERFWITHHOOK*/
- /* 167 */ 167,/*SECTIONSIGN*/
- /* 168 */ 164,/*CURRENCYSIGN*/
- 169,
- /* 170 */ 8220,/*LEFTDOUBLEQUOTATIONMARK*/
- /* 171 */ 171,/*LEFT-POINTINGDOUBLEANGLEQUOTATIONMARK*/
- /* 172 */ 8249,/*SINGLELEFT-POINTINGANGLEQUOTATIONMARK*/
- /* 173 */ 8250,/*SINGLERIGHT-POINTINGANGLEQUOTATIONMARK*/
- /* 174 */ 64257,/*LATINSMALLLIGATUREFI*/
- /* 175 */ 64258,/*LATINSMALLLIGATUREFL*/
- 176,
- /* 177 */ 8211,/*ENDASH*/
- /* 178 */ 8224,/*DAGGER*/
- /* 179 */ 8225,/*DOUBLEDAGGER*/
- /* 180 */ 183,/*MIDDLEDOT*/
- 181,
- /* 182 */ 182,/*PILCROWSIGN*/
- /* 183 */ 8729,/*BULLETOPERATOR*/
- /* 184 */ 8218,/*SINGLELOW-9QUOTATIONMARK*/
- /* 185 */ 8222,/*DOUBLELOW-9QUOTATIONMARK*/
- /* 186 */ 8221,/*RIGHTDOUBLEQUOTATIONMARK*/
- /* 187 */ 187,/*RIGHT-POINTINGDOUBLEANGLEQUOTATIONMARK*/
- /* 188 */ 8943,/*MIDLINEHORIZONTALELLIPSIS*/
- /* 189 */ 8240,/*PERMILLESIGN*/
- 190,
- /* 191 */ 191,/*INVERTEDQUESTIONMARK*/
- 192,
- /* 193 */ 768,/*COMBININGGRAVEACCENT*/
- /* 194 */ 180,/*ACUTEACCENT*/
- /* 195 */ 770,/*COMBININGCIRCUMFLEXACCENT*/
- /* 196 */ 771,/*COMBININGTILDE*/
- /* 197 */ 175,/*MACRON*/
- /* 198 */ 728,/*BREVE*/
- /* 199 */ 729,/*DOTABOVE*/
- /* 200 */ 168,/*DIAERESIS*/
- 201,
- /* 202 */ 176,/*DEGREESIGN*/
- /* 203 */ 184,/*CEDILLA*/
- 204,
- /* 205 */ 733,/*DOUBLEACUTEACCENT*/
- /* 206 */ 731,/*OGONEK*/
- /* 207 */ 711,/*CARON*/
- /* 208 */ 8212,/*EMDASH*/
- 209,
- 210,
- 211,
- 212,
- 213,
- 214,
- 215,
- 216,
- 217,
- 218,
- 219,
- 220,
- 221,
- 222,
- 223,
- 224,
- /* 225 */ 198,/*LATINCAPITALLETTERAE*/
- 226,
- /* 227 */ 170,/*FEMININEORDINALINDICATOR*/
- 228,
- 229,
- 230,
- 231,
- /* 232 */ 321,/*LATINCAPITALLETTERLWITHSTROKE*/
- /* 233 */ 216,/*LATINCAPITALLETTEROWITHSTROKE*/
- /* 234 */ 338,/*LATINCAPITALLIGATUREOE*/
- /* 235 */ 186,/*MASCULINEORDINALINDICATOR*/
- 236,
- 237,
- 238,
- 239,
- 240,
- /* 241 */ 230,/*LATINSMALLLETTERAE*/
- 242,
- 243,
- 244,
- /* 245 */ 305,/*LATINSMALLLETTERDOTLESSI*/
- 246,
- 247,
- /* 248 */ 322,/*LATINSMALLLETTERLWITHSTROKE*/
- /* 249 */ 248,/*LATINSMALLLETTEROWITHSTROKE*/
- /* 250 */ 339,/*LATINSMALLLIGATUREOE*/
- /* 251 */ 223,/*LATINSMALLLETTERSHARPS*/
- 252,
- 253,
- 254,
- 255
+static convert_t applecyr[] = {
+	{ 0, 0 },
+	{ 1, 1 },
+	{ 2, 2 },
+	{ 3, 3 },
+	{ 4, 4 },
+	{ 5, 5 },
+	{ 6, 6 },
+	{ 7, 7 },
+	{ 8, 8 },
+	{ 9, 9 },
+	{ 10, 10 },
+	{ 11, 11 },
+	{ 12, 12 },
+	{ 13, 13 },
+	{ 14, 14 },
+	{ 15, 15 },
+	{ 16, 16 },
+	{ 17, 17 },
+	{ 18, 18 },
+	{ 19, 19 },
+	{ 20, 20 },
+	{ 21, 21 },
+	{ 22, 22 },
+	{ 23, 23 },
+	{ 24, 24 },
+	{ 25, 25 },
+	{ 26, 26 },
+	{ 27, 27 },
+	{ 28, 28 },
+	{ 29, 29 },
+	{ 30, 30 },
+	{ 31, 31 },
+	{ 32, 32 },
+	{ 33, 33 },
+	{ 34, 34 },
+	{ 35, 35 },
+	{ 36, 36 },
+	{ 37, 37 },
+	{ 38, 38 },
+	{ 39, 39 },
+	{ 40, 40 },
+	{ 41, 41 },
+	{ 42, 42 },
+	{ 43, 43 },
+	{ 44, 44 },
+	{ 45, 45 },
+	{ 46, 46 },
+	{ 47, 47 },
+	{ 48, 48 },
+	{ 49, 49 },
+	{ 50, 50 },
+	{ 51, 51 },
+	{ 52, 52 },
+	{ 53, 53 },
+	{ 54, 54 },
+	{ 55, 55 },
+	{ 56, 56 },
+	{ 57, 57 },
+	{ 58, 58 },
+	{ 59, 59 },
+	{ 60, 60 },
+	{ 61, 61 },
+	{ 62, 62 },
+	{ 63, 63 },
+	{ 64, 64 },
+	{ 65, 65 },
+	{ 66, 66 },
+	{ 67, 67 },
+	{ 68, 68 },
+	{ 69, 69 },
+	{ 70, 70 },
+	{ 71, 71 },
+	{ 72, 72 },
+	{ 73, 73 },
+	{ 74, 74 },
+	{ 75, 75 },
+	{ 76, 76 },
+	{ 77, 77 },
+	{ 78, 78 },
+	{ 79, 79 },
+	{ 80, 80 },
+	{ 81, 81 },
+	{ 82, 82 },
+	{ 83, 83 },
+	{ 84, 84 },
+	{ 85, 85 },
+	{ 86, 86 },
+	{ 87, 87 },
+	{ 88, 88 },
+	{ 89, 89 },
+	{ 90, 90 },
+	{ 91, 91 },
+	{ 92, 92 },
+	{ 93, 93 },
+	{ 94, 94 },
+	{ 95, 95 },
+	{ 96, 96 },
+	{ 97, 97 },
+	{ 98, 98 },
+	{ 99, 99 },
+	{ 100, 100 },
+	{ 101, 101 },
+	{ 102, 102 },
+	{ 103, 103 },
+	{ 104, 104 },
+	{ 105, 105 },
+	{ 106, 106 },
+	{ 107, 107 },
+	{ 108, 108 },
+	{ 109, 109 },
+	{ 110, 110 },
+	{ 111, 111 },
+	{ 112, 112 },
+	{ 113, 113 },
+	{ 114, 114 },
+	{ 115, 115 },
+	{ 116, 116 },
+	{ 117, 117 },
+	{ 118, 118 },
+	{ 119, 119 },
+	{ 120, 120 },
+	{ 121, 121 },
+	{ 122, 122 },
+	{ 123, 123 },
+	{ 124, 124 },
+	{ 125, 125 },
+	{ 126, 126 },
+	{ 127, 127 },
+	{ 128, 1040 },
+	{ 129, 1041 },
+	{ 130, 1042 },
+	{ 131, 1043 },
+	{ 132, 1044 },
+	{ 133, 1045 },
+	{ 134, 1046 },
+	{ 135, 1047 },
+	{ 136, 1048 },
+	{ 137, 1049 },
+	{ 138, 1050 },
+	{ 139, 1051 },
+	{ 140, 1052 },
+	{ 141, 1053 },
+	{ 142, 1054 },
+	{ 143, 1055 },
+	{ 144, 1056 },
+	{ 145, 1057 },
+	{ 146, 1058 },
+	{ 147, 1059 },
+	{ 148, 1060 },
+	{ 149, 1061 },
+	{ 150, 1062 },
+	{ 151, 1063 },
+	{ 152, 1064 },
+	{ 153, 1065 },
+	{ 154, 1066 },
+	{ 155, 1067 },
+	{ 156, 1068 },
+	{ 157, 1069 },
+	{ 158, 1070 },
+	{ 159, 1071 },
+	{ 160, 8224 },
+	{ 161, 176 },
+	{ 162, 162 },
+	{ 163, 163 },
+	{ 164, 167 },
+	{ 165, 8729 },
+	{ 166, 182 },
+	{ 167, 1030 },
+	{ 168, 174 },
+	{ 169, 169 },
+	{ 170, 8482 },
+	{ 171, 1026 },
+	{ 172, 1106 },
+	{ 173, 8800 },
+	{ 174, 1027 },
+	{ 175, 1107 },
+	{ 176, 8734 },
+	{ 177, 177 },
+	{ 178, 8804 },
+	{ 179, 8805 },
+	{ 180, 1110 },
+	{ 181, 181 },
+	{ 182, 8706 },
+	{ 183, 1032 },
+	{ 184, 1028 },
+	{ 185, 1108 },
+	{ 186, 1031 },
+	{ 187, 1111 },
+	{ 188, 1033 },
+	{ 189, 1113 },
+	{ 190, 1034 },
+	{ 191, 1114 },
+	{ 192, 1112 },
+	{ 193, 1029 },
+	{ 194, 172 },
+	{ 195, 8730 },
+	{ 196, 402 },
+	{ 197, 8776 },
+	{ 198, 916 },
+	{ 199, 171 },
+	{ 200, 187 },
+	{ 201, 8943 },
+	{ 202, 160 },
+	{ 203, 1035 },
+	{ 204, 1115 },
+	{ 205, 1036 },
+	{ 206, 1116 },
+	{ 207, 1109 },
+	{ 208, 8211 },
+	{ 209, 8212 },
+	{ 210, 8220 },
+	{ 211, 8221 },
+	{ 212, 8216 },
+	{ 213, 8217 },
+	{ 214, 247 },
+	{ 215, 8222 },
+	{ 216, 1038 },
+	{ 217, 1118 },
+	{ 218, 1039 },
+	{ 219, 1119 },
+	{ 220, 8470 },
+	{ 221, 1025 },
+	{ 222, 1105 },
+	{ 223, 1103 },
+	{ 224, 1072 },
+	{ 225, 1073 },
+	{ 226, 1074 },
+	{ 227, 1075 },
+	{ 228, 1076 },
+	{ 229, 1077 },
+	{ 230, 1078 },
+	{ 231, 1079 },
+	{ 232, 1080 },
+	{ 233, 1081 },
+	{ 234, 1082 },
+	{ 235, 1083 },
+	{ 236, 1084 },
+	{ 237, 1085 },
+	{ 238, 1086 },
+	{ 239, 1087 },
+	{ 240, 1088 },
+	{ 241, 1089 },
+	{ 242, 1090 },
+	{ 243, 1091 },
+	{ 244, 1092 },
+	{ 245, 1093 },
+	{ 246, 1094 },
+	{ 247, 1095 },
+	{ 248, 1096 },
+	{ 249, 1097 },
+	{ 250, 1098 },
+	{ 251, 1099 },
+	{ 252, 1100 },
+	{ 253, 1101 },
+	{ 254, 1102 },
+	{ 255, 164 },
+	{ 32, 8194 },
+	{ 32, 8195 },
+	{ 32, 8201 },
+	{ 65, 192 },
+	{ 65, 193 },
+	{ 65, 194 },
+	{ 65, 195 },
+	{ 65, 196 },
+	{ 65, 197 },
+	{ 65, 256 },
+	{ 65, 258 },
+	{ 65, 260 },
+	{ 65, 461 },
+	{ 97, 224 },
+	{ 97, 225 },
+	{ 97, 226 },
+	{ 97, 227 },
+	{ 97, 228 },
+	{ 97, 229 },
+	{ 97, 257 },
+	{ 97, 259 },
+	{ 97, 261 },
+	{ 97, 462 },
+	{ 67, 199 },
+	{ 67, 262 },
+	{ 67, 264 },
+	{ 67, 266 },
+	{ 67, 268 },
+	{ 99, 231 },
+	{ 99, 263 },
+	{ 99, 265 },
+	{ 99, 267 },
+	{ 99, 269 },
+	{ 68, 270 },
+	{ 100, 271 },
+	{ 69, 200 },
+	{ 69, 201 },
+	{ 69, 202 },
+	{ 69, 203 },
+	{ 69, 274 },
+	{ 69, 276 },
+	{ 69, 278 },
+	{ 69, 280 },
+	{ 69, 282 },
+	{ 101, 232 },
+	{ 101, 233 },
+	{ 101, 234 },
+	{ 101, 235 },
+	{ 101, 275 },
+	{ 101, 277 },
+	{ 101, 279 },
+	{ 101, 281 },
+	{ 101, 283 },
+	{ 71, 284 },
+	{ 71, 286 },
+	{ 71, 288 },
+	{ 71, 290 },
+	{ 71, 486 },
+	{ 71, 500 },
+	{ 103, 285 },
+	{ 103, 287 },
+	{ 103, 289 },
+	{ 103, 291 },
+	{ 103, 487 },
+	{ 103, 501 },
+	{ 72, 292 },
+	{ 104, 293 },
+	{ 73, 204 },
+	{ 73, 205 },
+	{ 73, 206 },
+	{ 73, 207 },
+	{ 73, 296 },
+	{ 73, 298 },
+	{ 73, 300 },
+	{ 73, 302 },
+	{ 73, 304 },
+	{ 73, 463 },
+	{ 105, 236 },
+	{ 105, 237 },
+	{ 105, 238 },
+	{ 105, 239 },
+	{ 105, 297 },
+	{ 105, 299 },
+	{ 105, 301 },
+	{ 105, 303 },
+	{ 105, 305 },
+	{ 105, 464 },
+	{ 74, 308 },
+	{ 106, 309 },
+	{ 75, 310 },
+	{ 75, 488 },
+	{ 107, 311 },
+	{ 107, 489 },
+	{ 76, 313 },
+	{ 76, 315 },
+	{ 76, 317 },
+	{ 76, 319 },
+	{ 76, 321 },
+	{ 108, 314 },
+	{ 108, 316 },
+	{ 108, 318 },
+	{ 108, 320 },
+	{ 108, 322 },
+	{ 77, 209 },
+	{ 77, 323 },
+	{ 77, 325 },
+	{ 77, 327 },
+	{ 109, 241 },
+	{ 109, 324 },
+	{ 109, 326 },
+	{ 109, 328 },
+	{ 109, 329 },
+	{ 78, 210 },
+	{ 78, 211 },
+	{ 78, 212 },
+	{ 78, 213 },
+	{ 78, 214 },
+	{ 78, 216 },
+	{ 78, 332 },
+	{ 78, 334 },
+	{ 78, 336 },
+	{ 78, 465 },
+	{ 78, 490 },
+	{ 110, 242 },
+	{ 110, 243 },
+	{ 110, 244 },
+	{ 110, 245 },
+	{ 110, 246 },
+	{ 110, 248 },
+	{ 110, 333 },
+	{ 110, 335 },
+	{ 110, 337 },
+	{ 110, 466 },
+	{ 110, 491 },
+	{ 82, 340 },
+	{ 82, 342 },
+	{ 82, 344 },
+	{ 114, 341 },
+	{ 114, 343 },
+	{ 114, 345 },
+	{ 83, 346 },
+	{ 83, 348 },
+	{ 83, 350 },
+	{ 83, 352 },
+	{ 115, 347 },
+	{ 115, 349 },
+	{ 115, 351 },
+	{ 115, 353 },
+	{ 84, 354 },
+	{ 84, 356 },
+	{ 116, 355 },
+	{ 116, 357 },
+	{ 85, 217 },
+	{ 85, 218 },
+	{ 85, 219 },
+	{ 85, 220 },
+	{ 85, 360 },
+	{ 85, 362 },
+	{ 85, 364 },
+	{ 85, 366 },
+	{ 85, 368 },
+	{ 85, 370 },
+	{ 85, 467 },
+	{ 117, 249 },
+	{ 117, 250 },
+	{ 117, 251 },
+	{ 117, 252 },
+	{ 117, 361 },
+	{ 117, 363 },
+	{ 117, 365 },
+	{ 117, 367 },
+	{ 117, 369 },
+	{ 117, 371 },
+	{ 117, 468 },
+	{ 87, 372 },
+	{ 119, 373 },
+	{ 89, 221 },
+	{ 89, 374 },
+	{ 89, 376 },
+	{ 121, 253 },
+	{ 121, 255 },
+	{ 121, 375 },
+	{ 90, 377 },
+	{ 90, 379 },
+	{ 90, 381 },
+	{ 122, 378 },
+	{ 122, 380 },
+	{ 122, 382 },
 };
-charconvert adobesym[] = {
- 0,
- 1,
- 2,
- 3,
- 4,
- 5,
- 6,
- 7,
- 8,
- 9,
- 10,
- 11,
- 12,
- 13,
- 14,
- 15,
- 16,
- 17,
- 18,
- 19,
- 20,
- 21,
- 22,
- 23,
- 24,
- 25,
- 26,
- 27,
- 28,
- 29,
- 30,
- 31,
- /* 32 */ 32,/*SPACE*/
- /* 33 */ 33,/*EXCLAMATIONMARK*/
- /* 34 */ 34,/*QUOTATIONMARK*/
- /* 35 */ 35,/*NUMBERSIGN*/
- /* 36 */ 36,/*DOLLARSIGN*/
- /* 37 */ 37,/*PERCENTSIGN*/
- /* 38 */ 38,/*AMPERSAND*/
- /* 39 */ 39,/*APOSTROPHE*/
- /* 40 */ 40,/*LEFTPARENTHESIS*/
- /* 41 */ 41,/*RIGHTPARENTHESIS*/
- /* 42 */ 42,/*ASTERISK*/
- /* 43 */ 43,/*PLUSSIGN*/
- /* 44 */ 44,/*COMMA*/
- /* 45 */ 45,/*HYPHEN-MINUS*/
- /* 46 */ 46,/*FULLSTOP*/
- /* 47 */ 47,/*SOLIDUS*/
- /* 48 */ 48,/*DIGITZERO*/
- /* 49 */ 49,/*DIGITONE*/
- /* 50 */ 50,/*DIGITTWO*/
- /* 51 */ 51,/*DIGITTHREE*/
- /* 52 */ 52,/*DIGITFOUR*/
- /* 53 */ 53,/*DIGITFIVE*/
- /* 54 */ 54,/*DIGITSIX*/
- /* 55 */ 55,/*DIGITSEVEN*/
- /* 56 */ 56,/*DIGITEIGHT*/
- /* 57 */ 57,/*DIGITNINE*/
- /* 58 */ 58,/*COLON*/
- /* 59 */ 59,/*SEMICOLON*/
- /* 60 */ 60,/*LESS-THANSIGN*/
- /* 61 */ 61,/*EQUALSSIGN*/
- /* 62 */ 62,/*GREATER-THANSIGN*/
- /* 63 */ 63,/*QUESTIONMARK*/
- /* 64 */ 64,/*COMMERCIALAT*/
- /* 65 */ 65,/*LATINCAPITALLETTERA*/
- /* 66 */ 66,/*LATINCAPITALLETTERB*/
- /* 67 */ 67,/*LATINCAPITALLETTERC*/
- /* 68 */ 68,/*LATINCAPITALLETTERD*/
- /* 69 */ 69,/*LATINCAPITALLETTERE*/
- /* 70 */ 70,/*LATINCAPITALLETTERF*/
- /* 71 */ 71,/*LATINCAPITALLETTERG*/
- /* 72 */ 72,/*LATINCAPITALLETTERH*/
- /* 73 */ 73,/*LATINCAPITALLETTERI*/
- /* 74 */ 74,/*LATINCAPITALLETTERJ*/
- /* 75 */ 75,/*LATINCAPITALLETTERK*/
- /* 76 */ 76,/*LATINCAPITALLETTERL*/
- /* 77 */ 77,/*LATINCAPITALLETTERM*/
- /* 78 */ 78,/*LATINCAPITALLETTERN*/
- /* 79 */ 79,/*LATINCAPITALLETTERO*/
- /* 80 */ 80,/*LATINCAPITALLETTERP*/
- /* 81 */ 81,/*LATINCAPITALLETTERQ*/
- /* 82 */ 82,/*LATINCAPITALLETTERR*/
- /* 83 */ 83,/*LATINCAPITALLETTERS*/
- /* 84 */ 84,/*LATINCAPITALLETTERT*/
- /* 85 */ 85,/*LATINCAPITALLETTERU*/
- /* 86 */ 86,/*LATINCAPITALLETTERV*/
- /* 87 */ 87,/*LATINCAPITALLETTERW*/
- /* 88 */ 88,/*LATINCAPITALLETTERX*/
- /* 89 */ 89,/*LATINCAPITALLETTERY*/
- /* 90 */ 90,/*LATINCAPITALLETTERZ*/
- /* 91 */ 91,/*LEFTSQUAREBRACKET*/
- /* 92 */ 92,/*REVERSESOLIDUS*/
- /* 93 */ 93,/*RIGHTSQUAREBRACKET*/
- /* 94 */ 94,/*CIRCUMFLEXACCENT*/
- /* 95 */ 95,/*LOWLINE*/
- /* 96 */ 96,/*GRAVEACCENT*/
- /* 97 */ 97,/*LATINSMALLLETTERA*/
- /* 98 */ 98,/*LATINSMALLLETTERB*/
- /* 99 */ 99,/*LATINSMALLLETTERC*/
- /* 100 */ 100,/*LATINSMALLLETTERD*/
- /* 101 */ 101,/*LATINSMALLLETTERE*/
- /* 102 */ 102,/*LATINSMALLLETTERF*/
- /* 103 */ 103,/*LATINSMALLLETTERG*/
- /* 104 */ 104,/*LATINSMALLLETTERH*/
- /* 105 */ 105,/*LATINSMALLLETTERI*/
- /* 106 */ 106,/*LATINSMALLLETTERJ*/
- /* 107 */ 107,/*LATINSMALLLETTERK*/
- /* 108 */ 108,/*LATINSMALLLETTERL*/
- /* 109 */ 109,/*LATINSMALLLETTERM*/
- /* 110 */ 110,/*LATINSMALLLETTERN*/
- /* 111 */ 111,/*LATINSMALLLETTERO*/
- /* 112 */ 112,/*LATINSMALLLETTERP*/
- /* 113 */ 113,/*LATINSMALLLETTERQ*/
- /* 114 */ 114,/*LATINSMALLLETTERR*/
- /* 115 */ 115,/*LATINSMALLLETTERS*/
- /* 116 */ 116,/*LATINSMALLLETTERT*/
- /* 117 */ 117,/*LATINSMALLLETTERU*/
- /* 118 */ 118,/*LATINSMALLLETTERV*/
- /* 119 */ 119,/*LATINSMALLLETTERW*/
- /* 120 */ 120,/*LATINSMALLLETTERX*/
- /* 121 */ 121,/*LATINSMALLLETTERY*/
- /* 122 */ 122,/*LATINSMALLLETTERZ*/
- /* 123 */ 123,/*LEFTCURLYBRACKET*/
- /* 124 */ 124,/*VERTICALLINE*/
- /* 125 */ 125,/*RIGHTCURLYBRACKET*/
- /* 126 */ 126,/*TILDE*/
- 127,
- 128,
- 129,
- 130,
- 131,
- 132,
- 133,
- 134,
- 135,
- 136,
- 137,
- 138,
- 139,
- 140,
- 141,
- 142,
- 143,
- 144,
- 145,
- 146,
- 147,
- 148,
- 149,
- 150,
- 151,
- 152,
- 153,
- 154,
- 155,
- 156,
- 157,
- 158,
- 159,
- 160,
- 161,
- /* 162 */ 8242,/*PRIME*/
- /* 163 */ 8804,/*LESS-THANOREQUALTO*/
- /* 164 */ 8725,/*DIVISIONSLASH*/
- /* 165 */ 8734,/*INFINITY*/
- /* 166 */ 402,/*LATINSMALLLETTERFWITHHOOK*/
- /* 167 */ 9827,/*BLACKCLUBSUIT*/
- /* 168 */ 9830,/*BLACKDIAMONDSUIT*/
- /* 169 */ 9829,/*BLACKHEARTSUIT*/
- /* 170 */ 9824,/*BLACKSPADESUIT*/
- /* 171 */ 8596,/*LEFTRIGHTARROW*/
- /* 172 */ 8592,/*LEFTWARDSARROW*/
- /* 173 */ 8593,/*UPWARDSARROW*/
- /* 174 */ 8594,/*RIGHTWARDSARROW*/
- /* 175 */ 8595,/*DOWNWARDSARROW*/
- /* 176 */ 176,/*DEGREESIGN*/
- /* 177 */ 177,/*PLUS-MINUSSIGN*/
- /* 178 */ 8243,/*DOUBLEPRIME*/
- /* 179 */ 8805,/*GREATER-THANOREQUALTO*/
- /* 180 */ 215,/*MULTIPLICATIONSIGN*/
- /* 181 */ 8733,/*PROPORTIONALTO*/
- /* 182 */ 8706,/*PARTIALDIFFERENTIAL*/
- /* 183 */ 8729,/*BULLETOPERATOR*/
- /* 184 */ 247,/*DIVISIONSIGN*/
- /* 185 */ 8800,/*NOTEQUALTO*/
- /* 186 */ 8801,/*IDENTICALTO*/
- /* 187 */ 8776,/*ALMOSTEQUALTO*/
- /* 188 */ 8943,/*MIDLINEHORIZONTALELLIPSIS*/
- 189,
- 190,
- 191,
- 192,
- 193,
- 194,
- 195,
- 196,
- 197,
- /* 198 */ 8709,/*EMPTYSET*/
- /* 199 */ 8745,/*INTERSECTION*/
- /* 200 */ 8746,/*UNION*/
- /* 201 */ 8835,/*SUPERSETOF*/
- /* 202 */ 8839,/*SUPERSETOFOREQUALTO*/
- 203,
- /* 204 */ 8834,/*SUBSETOF*/
- /* 205 */ 8838,/*SUBSETOFOREQUALTO*/
- /* 206 */ 8712,/*ELEMENTOF*/
- 207,
- /* 208 */ 8736,/*ANGLE*/
- /* 209 */ 8711,/*NABLA*/
- 210,
- 211,
- 212,
- /* 213 */ 8719,/*N-ARYPRODUCT*/
- /* 214 */ 8730,/*SQUAREROOT*/
- /* 215 */ 8901,/*DOTOPERATOR*/
- /* 216 */ 172,/*NOTSIGN*/
- /* 217 */ 8743,/*LOGICALAND*/
- /* 218 */ 8744,/*LOGICALOR*/
- /* 219 */ 8660,/*LEFTRIGHTDOUBLEARROW*/
- /* 220 */ 8656,/*LEFTWARDSDOUBLEARROW*/
- /* 221 */ 8657,/*UPWARDSDOUBLEARROW*/
- /* 222 */ 8658,/*RIGHTWARDSDOUBLEARROW*/
- /* 223 */ 8659,/*DOWNWARDSDOUBLEARROW*/
- /* 224 */ 9674,/*LOZENGE*/
- /* 225 */ 9001,/*LEFT-POINTINGANGLEBRACKET*/
- 226,
- 227,
- 228,
- /* 229 */ 8721,/*N-ARYSUMMATION*/
- 230,
- 231,
- 232,
- 233,
- 234,
- 235,
- 236,
- 237,
- 238,
- 239,
- 240,
- /* 241 */ 9002,/*RIGHT-POINTINGANGLEBRACKET*/
- /* 242 */ 8747,/*INTEGRAL*/
- 243,
- 244,
- 245,
- 246,
- 247,
- 248,
- 249,
- 250,
- 251,
- 252,
- 253,
- 254,
- 255
+static convert_t applegk2[] = {
+	{ 0, 0 },
+	{ 1, 1 },
+	{ 2, 2 },
+	{ 3, 3 },
+	{ 4, 4 },
+	{ 5, 5 },
+	{ 6, 6 },
+	{ 7, 7 },
+	{ 8, 8 },
+	{ 9, 9 },
+	{ 10, 10 },
+	{ 11, 11 },
+	{ 12, 12 },
+	{ 13, 13 },
+	{ 14, 14 },
+	{ 15, 15 },
+	{ 16, 16 },
+	{ 17, 17 },
+	{ 18, 18 },
+	{ 19, 19 },
+	{ 20, 20 },
+	{ 21, 21 },
+	{ 22, 22 },
+	{ 23, 23 },
+	{ 24, 24 },
+	{ 25, 25 },
+	{ 26, 26 },
+	{ 27, 27 },
+	{ 28, 28 },
+	{ 29, 29 },
+	{ 30, 30 },
+	{ 31, 31 },
+	{ 32, 32 },
+	{ 33, 33 },
+	{ 34, 34 },
+	{ 35, 35 },
+	{ 36, 36 },
+	{ 37, 37 },
+	{ 38, 38 },
+	{ 39, 39 },
+	{ 40, 40 },
+	{ 41, 41 },
+	{ 42, 42 },
+	{ 43, 43 },
+	{ 44, 44 },
+	{ 45, 45 },
+	{ 46, 46 },
+	{ 47, 47 },
+	{ 48, 48 },
+	{ 49, 49 },
+	{ 50, 50 },
+	{ 51, 51 },
+	{ 52, 52 },
+	{ 53, 53 },
+	{ 54, 54 },
+	{ 55, 55 },
+	{ 56, 56 },
+	{ 57, 57 },
+	{ 58, 58 },
+	{ 59, 59 },
+	{ 60, 60 },
+	{ 61, 61 },
+	{ 62, 62 },
+	{ 63, 63 },
+	{ 64, 64 },
+	{ 65, 65 },
+	{ 66, 66 },
+	{ 67, 67 },
+	{ 68, 68 },
+	{ 69, 69 },
+	{ 70, 70 },
+	{ 71, 71 },
+	{ 72, 72 },
+	{ 73, 73 },
+	{ 74, 74 },
+	{ 75, 75 },
+	{ 76, 76 },
+	{ 77, 77 },
+	{ 78, 78 },
+	{ 79, 79 },
+	{ 80, 80 },
+	{ 81, 81 },
+	{ 82, 82 },
+	{ 83, 83 },
+	{ 84, 84 },
+	{ 85, 85 },
+	{ 86, 86 },
+	{ 87, 87 },
+	{ 88, 88 },
+	{ 89, 89 },
+	{ 90, 90 },
+	{ 91, 91 },
+	{ 92, 92 },
+	{ 93, 93 },
+	{ 94, 94 },
+	{ 95, 95 },
+	{ 96, 96 },
+	{ 97, 97 },
+	{ 98, 98 },
+	{ 99, 99 },
+	{ 100, 100 },
+	{ 101, 101 },
+	{ 102, 102 },
+	{ 103, 103 },
+	{ 104, 104 },
+	{ 105, 105 },
+	{ 106, 106 },
+	{ 107, 107 },
+	{ 108, 108 },
+	{ 109, 109 },
+	{ 110, 110 },
+	{ 111, 111 },
+	{ 112, 112 },
+	{ 113, 113 },
+	{ 114, 114 },
+	{ 115, 115 },
+	{ 116, 116 },
+	{ 117, 117 },
+	{ 118, 118 },
+	{ 119, 119 },
+	{ 120, 120 },
+	{ 121, 121 },
+	{ 122, 122 },
+	{ 123, 123 },
+	{ 124, 124 },
+	{ 125, 125 },
+	{ 126, 126 },
+	{ 127, 127 },
+	{ 128, 196 },
+	{ 129, 913 },
+	{ 130, 914 },
+	{ 131, 915 },
+	{ 132, 916 },
+	{ 133, 214 },
+	{ 134, 220 },
+	{ 135, 917 },
+	{ 136, 224 },
+	{ 137, 226 },
+	{ 138, 228 },
+	{ 139, 918 },
+	{ 140, 919 },
+	{ 141, 231 },
+	{ 142, 233 },
+	{ 143, 232 },
+	{ 144, 234 },
+	{ 145, 235 },
+	{ 146, 163 },
+	{ 147, 8482 },
+	{ 148, 238 },
+	{ 149, 239 },
+	{ 150, 8729 },
+	{ 151, 920 },
+	{ 152, 921 },
+	{ 153, 244 },
+	{ 154, 246 },
+	{ 155, 155 },
+	{ 156, 922 },
+	{ 157, 249 },
+	{ 158, 251 },
+	{ 159, 252 },
+	{ 160, 923 },
+	{ 161, 161 },
+	{ 162, 162 },
+	{ 163, 163 },
+	{ 164, 164 },
+	{ 165, 165 },
+	{ 166, 166 },
+	{ 167, 223 },
+	{ 168, 174 },
+	{ 169, 169 },
+	{ 170, 170 },
+	{ 171, 938 },
+	{ 172, 167 },
+	{ 173, 8800 },
+	{ 174, 924 },
+	{ 175, 903 },
+	{ 176, 925 },
+	{ 177, 177 },
+	{ 178, 8804 },
+	{ 179, 8805 },
+	{ 180, 926 },
+	{ 181, 927 },
+	{ 182, 928 },
+	{ 183, 929 },
+	{ 184, 931 },
+	{ 185, 932 },
+	{ 186, 933 },
+	{ 187, 939 },
+	{ 188, 934 },
+	{ 189, 935 },
+	{ 190, 936 },
+	{ 191, 937 },
+	{ 192, 940 },
+	{ 193, 185 },
+	{ 194, 172 },
+	{ 195, 178 },
+	{ 196, 179 },
+	{ 197, 168 },
+	{ 198, 901 },
+	{ 199, 171 },
+	{ 200, 187 },
+	{ 201, 8943 },
+	{ 202, 160 },
+	{ 203, 166 },
+	{ 204, 189 },
+	{ 205, 902 },
+	{ 206, 904 },
+	{ 207, 176 },
+	{ 208, 8211 },
+	{ 209, 8212 },
+	{ 210, 8220 },
+	{ 211, 8221 },
+	{ 212, 8216 },
+	{ 213, 8217 },
+	{ 214, 900 },
+	{ 215, 905 },
+	{ 216, 906 },
+	{ 217, 908 },
+	{ 218, 910 },
+	{ 219, 941 },
+	{ 220, 942 },
+	{ 221, 943 },
+	{ 222, 972 },
+	{ 223, 911 },
+	{ 224, 973 },
+	{ 225, 945 },
+	{ 226, 946 },
+	{ 227, 968 },
+	{ 228, 948 },
+	{ 229, 949 },
+	{ 230, 966 },
+	{ 231, 947 },
+	{ 232, 951 },
+	{ 233, 953 },
+	{ 234, 958 },
+	{ 235, 954 },
+	{ 236, 955 },
+	{ 237, 956 },
+	{ 238, 957 },
+	{ 239, 959 },
+	{ 240, 960 },
+	{ 241, 974 },
+	{ 242, 961 },
+	{ 243, 963 },
+	{ 244, 964 },
+	{ 245, 952 },
+	{ 246, 969 },
+	{ 247, 962 },
+	{ 248, 967 },
+	{ 249, 965 },
+	{ 250, 950 },
+	{ 251, 970 },
+	{ 252, 971 },
+	{ 253, 912 },
+	{ 254, 944 },
+	{ 255, 8240 },
+	{ 32, 8194 },
+	{ 32, 8195 },
+	{ 32, 8201 },
+	{ 65, 192 },
+	{ 65, 193 },
+	{ 65, 194 },
+	{ 65, 195 },
+	{ 65, 197 },
+	{ 65, 256 },
+	{ 65, 258 },
+	{ 65, 260 },
+	{ 65, 461 },
+	{ 97, 225 },
+	{ 97, 227 },
+	{ 97, 229 },
+	{ 97, 257 },
+	{ 97, 259 },
+	{ 97, 261 },
+	{ 97, 462 },
+	{ 67, 199 },
+	{ 67, 262 },
+	{ 67, 264 },
+	{ 67, 266 },
+	{ 67, 268 },
+	{ 99, 263 },
+	{ 99, 265 },
+	{ 99, 267 },
+	{ 99, 269 },
+	{ 68, 270 },
+	{ 100, 271 },
+	{ 69, 200 },
+	{ 69, 201 },
+	{ 69, 202 },
+	{ 69, 203 },
+	{ 69, 274 },
+	{ 69, 276 },
+	{ 69, 278 },
+	{ 69, 280 },
+	{ 69, 282 },
+	{ 101, 275 },
+	{ 101, 277 },
+	{ 101, 279 },
+	{ 101, 281 },
+	{ 101, 283 },
+	{ 71, 284 },
+	{ 71, 286 },
+	{ 71, 288 },
+	{ 71, 290 },
+	{ 71, 486 },
+	{ 71, 500 },
+	{ 103, 285 },
+	{ 103, 287 },
+	{ 103, 289 },
+	{ 103, 291 },
+	{ 103, 487 },
+	{ 103, 501 },
+	{ 72, 292 },
+	{ 104, 293 },
+	{ 73, 204 },
+	{ 73, 205 },
+	{ 73, 206 },
+	{ 73, 207 },
+	{ 73, 296 },
+	{ 73, 298 },
+	{ 73, 300 },
+	{ 73, 302 },
+	{ 73, 304 },
+	{ 73, 463 },
+	{ 105, 236 },
+	{ 105, 237 },
+	{ 105, 297 },
+	{ 105, 299 },
+	{ 105, 301 },
+	{ 105, 303 },
+	{ 105, 305 },
+	{ 105, 464 },
+	{ 74, 308 },
+	{ 106, 309 },
+	{ 75, 310 },
+	{ 75, 488 },
+	{ 107, 311 },
+	{ 107, 489 },
+	{ 76, 313 },
+	{ 76, 315 },
+	{ 76, 317 },
+	{ 76, 319 },
+	{ 76, 321 },
+	{ 108, 314 },
+	{ 108, 316 },
+	{ 108, 318 },
+	{ 108, 320 },
+	{ 108, 322 },
+	{ 77, 209 },
+	{ 77, 323 },
+	{ 77, 325 },
+	{ 77, 327 },
+	{ 109, 241 },
+	{ 109, 324 },
+	{ 109, 326 },
+	{ 109, 328 },
+	{ 109, 329 },
+	{ 78, 210 },
+	{ 78, 211 },
+	{ 78, 212 },
+	{ 78, 213 },
+	{ 78, 216 },
+	{ 78, 332 },
+	{ 78, 334 },
+	{ 78, 336 },
+	{ 78, 465 },
+	{ 78, 490 },
+	{ 110, 242 },
+	{ 110, 243 },
+	{ 110, 245 },
+	{ 110, 248 },
+	{ 110, 333 },
+	{ 110, 335 },
+	{ 110, 337 },
+	{ 110, 466 },
+	{ 110, 491 },
+	{ 82, 340 },
+	{ 82, 342 },
+	{ 82, 344 },
+	{ 114, 341 },
+	{ 114, 343 },
+	{ 114, 345 },
+	{ 83, 346 },
+	{ 83, 348 },
+	{ 83, 350 },
+	{ 83, 352 },
+	{ 115, 347 },
+	{ 115, 349 },
+	{ 115, 351 },
+	{ 115, 353 },
+	{ 84, 354 },
+	{ 84, 356 },
+	{ 116, 355 },
+	{ 116, 357 },
+	{ 85, 217 },
+	{ 85, 218 },
+	{ 85, 219 },
+	{ 85, 360 },
+	{ 85, 362 },
+	{ 85, 364 },
+	{ 85, 366 },
+	{ 85, 368 },
+	{ 85, 370 },
+	{ 85, 467 },
+	{ 117, 250 },
+	{ 117, 361 },
+	{ 117, 363 },
+	{ 117, 365 },
+	{ 117, 367 },
+	{ 117, 369 },
+	{ 117, 371 },
+	{ 117, 468 },
+	{ 87, 372 },
+	{ 119, 373 },
+	{ 89, 221 },
+	{ 89, 374 },
+	{ 89, 376 },
+	{ 121, 253 },
+	{ 121, 255 },
+	{ 121, 375 },
+	{ 90, 377 },
+	{ 90, 379 },
+	{ 90, 381 },
+	{ 122, 378 },
+	{ 122, 380 },
+	{ 122, 382 },
 };
-charconvert applecro[] = {
- 0,
- 1,
- 2,
- 3,
- 4,
- 5,
- 6,
- 7,
- 8,
- 9,
- 10,
- 11,
- 12,
- 13,
- 14,
- 15,
- 16,
- 17,
- 18,
- 19,
- 20,
- 21,
- 22,
- 23,
- 24,
- 25,
- 26,
- 27,
- 28,
- 29,
- 30,
- 31,
- /* 32 */ 32,/*SPACE*/
- /* 33 */ 33,/*EXCLAMATIONMARK*/
- /* 34 */ 34,/*QUOTATIONMARK*/
- /* 35 */ 35,/*NUMBERSIGN*/
- /* 36 */ 36,/*DOLLARSIGN*/
- /* 37 */ 37,/*PERCENTSIGN*/
- /* 38 */ 38,/*AMPERSAND*/
- /* 39 */ 39,/*APOSTROPHE*/
- /* 40 */ 40,/*LEFTPARENTHESIS*/
- /* 41 */ 41,/*RIGHTPARENTHESIS*/
- /* 42 */ 42,/*ASTERISK*/
- /* 43 */ 43,/*PLUSSIGN*/
- /* 44 */ 44,/*COMMA*/
- /* 45 */ 45,/*HYPHEN-MINUS*/
- /* 46 */ 46,/*FULLSTOP*/
- /* 47 */ 47,/*SOLIDUS*/
- /* 48 */ 48,/*DIGITZERO*/
- /* 49 */ 49,/*DIGITONE*/
- /* 50 */ 50,/*DIGITTWO*/
- /* 51 */ 51,/*DIGITTHREE*/
- /* 52 */ 52,/*DIGITFOUR*/
- /* 53 */ 53,/*DIGITFIVE*/
- /* 54 */ 54,/*DIGITSIX*/
- /* 55 */ 55,/*DIGITSEVEN*/
- /* 56 */ 56,/*DIGITEIGHT*/
- /* 57 */ 57,/*DIGITNINE*/
- /* 58 */ 58,/*COLON*/
- /* 59 */ 59,/*SEMICOLON*/
- /* 60 */ 60,/*LESS-THANSIGN*/
- /* 61 */ 61,/*EQUALSSIGN*/
- /* 62 */ 62,/*GREATER-THANSIGN*/
- /* 63 */ 63,/*QUESTIONMARK*/
- /* 64 */ 64,/*COMMERCIALAT*/
- /* 65 */ 65,/*LATINCAPITALLETTERA*/
- /* 66 */ 66,/*LATINCAPITALLETTERB*/
- /* 67 */ 67,/*LATINCAPITALLETTERC*/
- /* 68 */ 68,/*LATINCAPITALLETTERD*/
- /* 69 */ 69,/*LATINCAPITALLETTERE*/
- /* 70 */ 70,/*LATINCAPITALLETTERF*/
- /* 71 */ 71,/*LATINCAPITALLETTERG*/
- /* 72 */ 72,/*LATINCAPITALLETTERH*/
- /* 73 */ 73,/*LATINCAPITALLETTERI*/
- /* 74 */ 74,/*LATINCAPITALLETTERJ*/
- /* 75 */ 75,/*LATINCAPITALLETTERK*/
- /* 76 */ 76,/*LATINCAPITALLETTERL*/
- /* 77 */ 77,/*LATINCAPITALLETTERM*/
- /* 78 */ 78,/*LATINCAPITALLETTERN*/
- /* 79 */ 79,/*LATINCAPITALLETTERO*/
- /* 80 */ 80,/*LATINCAPITALLETTERP*/
- /* 81 */ 81,/*LATINCAPITALLETTERQ*/
- /* 82 */ 82,/*LATINCAPITALLETTERR*/
- /* 83 */ 83,/*LATINCAPITALLETTERS*/
- /* 84 */ 84,/*LATINCAPITALLETTERT*/
- /* 85 */ 85,/*LATINCAPITALLETTERU*/
- /* 86 */ 86,/*LATINCAPITALLETTERV*/
- /* 87 */ 87,/*LATINCAPITALLETTERW*/
- /* 88 */ 88,/*LATINCAPITALLETTERX*/
- /* 89 */ 89,/*LATINCAPITALLETTERY*/
- /* 90 */ 90,/*LATINCAPITALLETTERZ*/
- /* 91 */ 91,/*LEFTSQUAREBRACKET*/
- /* 92 */ 92,/*REVERSESOLIDUS*/
- /* 93 */ 93,/*RIGHTSQUAREBRACKET*/
- /* 94 */ 94,/*CIRCUMFLEXACCENT*/
- /* 95 */ 95,/*LOWLINE*/
- /* 96 */ 96,/*GRAVEACCENT*/
- /* 97 */ 97,/*LATINSMALLLETTERA*/
- /* 98 */ 98,/*LATINSMALLLETTERB*/
- /* 99 */ 99,/*LATINSMALLLETTERC*/
- /* 100 */ 100,/*LATINSMALLLETTERD*/
- /* 101 */ 101,/*LATINSMALLLETTERE*/
- /* 102 */ 102,/*LATINSMALLLETTERF*/
- /* 103 */ 103,/*LATINSMALLLETTERG*/
- /* 104 */ 104,/*LATINSMALLLETTERH*/
- /* 105 */ 105,/*LATINSMALLLETTERI*/
- /* 106 */ 106,/*LATINSMALLLETTERJ*/
- /* 107 */ 107,/*LATINSMALLLETTERK*/
- /* 108 */ 108,/*LATINSMALLLETTERL*/
- /* 109 */ 109,/*LATINSMALLLETTERM*/
- /* 110 */ 110,/*LATINSMALLLETTERN*/
- /* 111 */ 111,/*LATINSMALLLETTERO*/
- /* 112 */ 112,/*LATINSMALLLETTERP*/
- /* 113 */ 113,/*LATINSMALLLETTERQ*/
- /* 114 */ 114,/*LATINSMALLLETTERR*/
- /* 115 */ 115,/*LATINSMALLLETTERS*/
- /* 116 */ 116,/*LATINSMALLLETTERT*/
- /* 117 */ 117,/*LATINSMALLLETTERU*/
- /* 118 */ 118,/*LATINSMALLLETTERV*/
- /* 119 */ 119,/*LATINSMALLLETTERW*/
- /* 120 */ 120,/*LATINSMALLLETTERX*/
- /* 121 */ 121,/*LATINSMALLLETTERY*/
- /* 122 */ 122,/*LATINSMALLLETTERZ*/
- /* 123 */ 123,/*LEFTCURLYBRACKET*/
- /* 124 */ 124,/*VERTICALLINE*/
- /* 125 */ 125,/*RIGHTCURLYBRACKET*/
- /* 126 */ 126,/*TILDE*/
- 127,
- /* 128 */ 196,/*LATINCAPITALLETTERAWITHDIAERESIS*/
- /* 129 */ 197,/*LATINCAPITALLETTERAWITHRINGABOVE*/
- /* 130 */ 199,/*LATINCAPITALLETTERCWITHCEDILLA*/
- /* 131 */ 201,/*LATINCAPITALLETTEREWITHACUTE*/
- /* 132 */ 209,/*LATINCAPITALLETTERNWITHTILDE*/
- /* 133 */ 214,/*LATINCAPITALLETTEROWITHDIAERESIS*/
- /* 134 */ 220,/*LATINCAPITALLETTERUWITHDIAERESIS*/
- /* 135 */ 225,/*LATINSMALLLETTERAWITHACUTE*/
- /* 136 */ 224,/*LATINSMALLLETTERAWITHGRAVE*/
- /* 137 */ 226,/*LATINSMALLLETTERAWITHCIRCUMFLEX*/
- /* 138 */ 228,/*LATINSMALLLETTERAWITHDIAERESIS*/
- /* 139 */ 227,/*LATINSMALLLETTERAWITHTILDE*/
- /* 140 */ 229,/*LATINSMALLLETTERAWITHRINGABOVE*/
- /* 141 */ 231,/*LATINSMALLLETTERCWITHCEDILLA*/
- /* 142 */ 233,/*LATINSMALLLETTEREWITHACUTE*/
- /* 143 */ 232,/*LATINSMALLLETTEREWITHGRAVE*/
- /* 144 */ 234,/*LATINSMALLLETTEREWITHCIRCUMFLEX*/
- /* 145 */ 235,/*LATINSMALLLETTEREWITHDIAERESIS*/
- /* 146 */ 237,/*LATINSMALLLETTERIWITHACUTE*/
- /* 147 */ 236,/*LATINSMALLLETTERIWITHGRAVE*/
- /* 148 */ 238,/*LATINSMALLLETTERIWITHCIRCUMFLEX*/
- /* 149 */ 239,/*LATINSMALLLETTERIWITHDIAERESIS*/
- /* 150 */ 241,/*LATINSMALLLETTERNWITHTILDE*/
- /* 151 */ 243,/*LATINSMALLLETTEROWITHACUTE*/
- /* 152 */ 242,/*LATINSMALLLETTEROWITHGRAVE*/
- /* 153 */ 244,/*LATINSMALLLETTEROWITHCIRCUMFLEX*/
- /* 154 */ 246,/*LATINSMALLLETTEROWITHDIAERESIS*/
- /* 155 */ 245,/*LATINSMALLLETTEROWITHTILDE*/
- /* 156 */ 250,/*LATINSMALLLETTERUWITHACUTE*/
- /* 157 */ 249,/*LATINSMALLLETTERUWITHGRAVE*/
- /* 158 */ 251,/*LATINSMALLLETTERUWITHCIRCUMFLEX*/
- /* 159 */ 252,/*LATINSMALLLETTERUWITHDIAERESIS*/
- /* 160 */ 8224,/*DAGGER*/
- /* 161 */ 176,/*DEGREESIGN*/
- /* 162 */ 162,/*CENTSIGN*/
- /* 163 */ 163,/*POUNDSIGN*/
- /* 164 */ 167,/*SECTIONSIGN*/
- /* 165 */ 8729,/*BULLETOPERATOR*/
- /* 166 */ 182,/*PILCROWSIGN*/
- /* 167 */ 223,/*LATINSMALLLETTERSHARPS*/
- /* 168 */ 174,/*REGISTEREDSIGN*/
- /* 169 */ 352,/*LATINCAPITALLETTERSWITHCARON*/
- /* 170 */ 8482,/*TRADEMARKSIGN*/
- /* 171 */ 180,/*ACUTEACCENT*/
- /* 172 */ 168,/*DIAERESIS*/
- /* 173 */ 8800,/*NOTEQUALTO*/
- /* 174 */ 381,/*LATINCAPITALLETTERZWITHCARON*/
- /* 175 */ 216,/*LATINCAPITALLETTEROWITHSTROKE*/
- /* 176 */ 8734,/*INFINITY*/
- /* 177 */ 177,/*PLUS-MINUSSIGN*/
- /* 178 */ 8804,/*LESS-THANOREQUALTO*/
- /* 179 */ 8805,/*GREATER-THANOREQUALTO*/
- /* 180 */ 916,/*GREEKCAPITALLETTERDELTA*/
- /* 181 */ 181,/*MICROSIGN*/
- /* 182 */ 8706,/*PARTIALDIFFERENTIAL*/
- /* 183 */ 8721,/*N-ARYSUMMATION*/
- /* 184 */ 8719,/*N-ARYPRODUCT*/
- /* 185 */ 353,/*LATINSMALLLETTERSWITHCARON*/
- /* 186 */ 8747,/*INTEGRAL*/
- /* 187 */ 170,/*FEMININEORDINALINDICATOR*/
- /* 188 */ 186,/*MASCULINEORDINALINDICATOR*/
- /* 189 */ 937,/*GREEKCAPITALLETTEROMEGA*/
- /* 190 */ 382,/*LATINSMALLLETTERZWITHCARON*/
- /* 191 */ 248,/*LATINSMALLLETTEROWITHSTROKE*/
- /* 192 */ 191,/*INVERTEDQUESTIONMARK*/
- /* 193 */ 161,/*INVERTEDEXCLAMATIONMARK*/
- /* 194 */ 172,/*NOTSIGN*/
- /* 195 */ 8730,/*SQUAREROOT*/
- /* 196 */ 402,/*LATINSMALLLETTERFWITHHOOK*/
- /* 197 */ 8776,/*ALMOSTEQUALTO*/
- /* 198 */ 262,/*LATINCAPITALLETTERCWITHACUTE*/
- /* 199 */ 171,/*LEFT-POINTINGDOUBLEANGLEQUOTATIONMARK*/
- /* 200 */ 268,/*LATINCAPITALLETTERCWITHCARON*/
- /* 201 */ 8943,/*MIDLINEHORIZONTALELLIPSIS*/
- /* 202 */ 160,/*NO-BREAKSPACE*/
- /* 203 */ 192,/*LATINCAPITALLETTERAWITHGRAVE*/
- /* 204 */ 195,/*LATINCAPITALLETTERAWITHTILDE*/
- /* 205 */ 213,/*LATINCAPITALLETTEROWITHTILDE*/
- /* 206 */ 338,/*LATINCAPITALLIGATUREOE*/
- /* 207 */ 339,/*LATINSMALLLIGATUREOE*/
- /* 208 */ 272,/*LATINCAPITALLETTERDWITHSTROKE*/
- /* 209 */ 8212,/*EMDASH*/
- /* 210 */ 8220,/*LEFTDOUBLEQUOTATIONMARK*/
- /* 211 */ 8221,/*RIGHTDOUBLEQUOTATIONMARK*/
- /* 212 */ 8216,/*LEFTSINGLEQUOTATIONMARK*/
- /* 213 */ 8217,/*RIGHTSINGLEQUOTATIONMARK*/
- /* 214 */ 247,/*DIVISIONSIGN*/
- /* 215 */ 9674,/*LOZENGE*/
- /* 216 */ 65534,/*APPLELOGO*/
- /* 217 */ 169,/*COPYRIGHTSIGN*/
- /* 218 */ 8260,/*FRACTIONSLASH*/
- /* 219 */ 164,/*CURRENCYSIGN*/
- /* 220 */ 8249,/*SINGLELEFT-POINTINGANGLEQUOTATIONMARK*/
- /* 221 */ 8250,/*SINGLERIGHT-POINTINGANGLEQUOTATIONMARK*/
- /* 222 */ 198,/*LATINCAPITALLETTERAE*/
- /* 223 */ 187,/*RIGHT-POINTINGDOUBLEANGLEQUOTATIONMARK*/
- /* 224 */ 8211,/*ENDASH*/
- /* 225 */ 183,/*MIDDLEDOT*/
- /* 226 */ 8218,/*SINGLELOW-9QUOTATIONMARK*/
- /* 227 */ 8222,/*DOUBLELOW-9QUOTATIONMARK*/
- /* 228 */ 8240,/*PERMILLESIGN*/
- /* 229 */ 194,/*LATINCAPITALLETTERAWITHCIRCUMFLEX*/
- /* 230 */ 263,/*LATINSMALLLETTERCWITHACUTE*/
- /* 231 */ 193,/*LATINCAPITALLETTERAWITHACUTE*/
- /* 232 */ 269,/*LATINSMALLLETTERCWITHCARON*/
- /* 233 */ 200,/*LATINCAPITALLETTEREWITHGRAVE*/
- /* 234 */ 205,/*LATINCAPITALLETTERIWITHACUTE*/
- /* 235 */ 206,/*LATINCAPITALLETTERIWITHCIRCUMFLEX*/
- /* 236 */ 207,/*LATINCAPITALLETTERIWITHDIAERESIS*/
- /* 237 */ 204,/*LATINCAPITALLETTERIWITHGRAVE*/
- /* 238 */ 211,/*LATINCAPITALLETTEROWITHACUTE*/
- /* 239 */ 212,/*LATINCAPITALLETTEROWITHCIRCUMFLEX*/
- /* 240 */ 273,/*LATINSMALLLETTERDWITHSTROKE*/
- /* 241 */ 210,/*LATINCAPITALLETTEROWITHGRAVE*/
- /* 242 */ 218,/*LATINCAPITALLETTERUWITHACUTE*/
- /* 243 */ 219,/*LATINCAPITALLETTERUWITHCIRCUMFLEX*/
- /* 244 */ 217,/*LATINCAPITALLETTERUWITHGRAVE*/
- /* 245 */ 305,/*LATINSMALLLETTERDOTLESSI*/
- /* 246 */ 770,/*COMBININGCIRCUMFLEXACCENT*/
- /* 247 */ 771,/*COMBININGTILDE*/
- /* 248 */ 175,/*MACRON*/
- /* 249 */ 960,/*GREEKSMALLLETTERPI*/
- /* 250 */ 203,/*LATINCAPITALLETTEREWITHDIAERESIS*/
- /* 251 */ 730,/*RINGABOVE*/
- /* 252 */ 184,/*CEDILLA*/
- /* 253 */ 202,/*LATINCAPITALLETTEREWITHCIRCUMFLEX*/
- /* 254 */ 230,/*LATINSMALLLETTERAE*/
- /* 255 */ 711/*CARON*/
+static convert_t applegrk[] = {
+	{ 0, 0 },
+	{ 1, 1 },
+	{ 2, 2 },
+	{ 3, 3 },
+	{ 4, 4 },
+	{ 5, 5 },
+	{ 6, 6 },
+	{ 7, 7 },
+	{ 8, 8 },
+	{ 9, 9 },
+	{ 10, 10 },
+	{ 11, 11 },
+	{ 12, 12 },
+	{ 13, 13 },
+	{ 14, 14 },
+	{ 15, 15 },
+	{ 16, 16 },
+	{ 17, 17 },
+	{ 18, 18 },
+	{ 19, 19 },
+	{ 20, 20 },
+	{ 21, 21 },
+	{ 22, 22 },
+	{ 23, 23 },
+	{ 24, 24 },
+	{ 25, 25 },
+	{ 26, 26 },
+	{ 27, 27 },
+	{ 28, 28 },
+	{ 29, 29 },
+	{ 30, 30 },
+	{ 31, 31 },
+	{ 32, 32 },
+	{ 33, 33 },
+	{ 34, 34 },
+	{ 35, 35 },
+	{ 36, 36 },
+	{ 37, 37 },
+	{ 38, 38 },
+	{ 39, 39 },
+	{ 40, 40 },
+	{ 41, 41 },
+	{ 42, 42 },
+	{ 43, 43 },
+	{ 44, 44 },
+	{ 45, 45 },
+	{ 46, 46 },
+	{ 47, 47 },
+	{ 48, 48 },
+	{ 49, 49 },
+	{ 50, 50 },
+	{ 51, 51 },
+	{ 52, 52 },
+	{ 53, 53 },
+	{ 54, 54 },
+	{ 55, 55 },
+	{ 56, 56 },
+	{ 57, 57 },
+	{ 58, 58 },
+	{ 59, 59 },
+	{ 60, 60 },
+	{ 61, 61 },
+	{ 62, 62 },
+	{ 63, 63 },
+	{ 64, 64 },
+	{ 65, 65 },
+	{ 66, 66 },
+	{ 67, 67 },
+	{ 68, 68 },
+	{ 69, 69 },
+	{ 70, 70 },
+	{ 71, 71 },
+	{ 72, 72 },
+	{ 73, 73 },
+	{ 74, 74 },
+	{ 75, 75 },
+	{ 76, 76 },
+	{ 77, 77 },
+	{ 78, 78 },
+	{ 79, 79 },
+	{ 80, 80 },
+	{ 81, 81 },
+	{ 82, 82 },
+	{ 83, 83 },
+	{ 84, 84 },
+	{ 85, 85 },
+	{ 86, 86 },
+	{ 87, 87 },
+	{ 88, 88 },
+	{ 89, 89 },
+	{ 90, 90 },
+	{ 91, 91 },
+	{ 92, 92 },
+	{ 93, 93 },
+	{ 94, 94 },
+	{ 95, 95 },
+	{ 96, 96 },
+	{ 97, 97 },
+	{ 98, 98 },
+	{ 99, 99 },
+	{ 100, 100 },
+	{ 101, 101 },
+	{ 102, 102 },
+	{ 103, 103 },
+	{ 104, 104 },
+	{ 105, 105 },
+	{ 106, 106 },
+	{ 107, 107 },
+	{ 108, 108 },
+	{ 109, 109 },
+	{ 110, 110 },
+	{ 111, 111 },
+	{ 112, 112 },
+	{ 113, 113 },
+	{ 114, 114 },
+	{ 115, 115 },
+	{ 116, 116 },
+	{ 117, 117 },
+	{ 118, 118 },
+	{ 119, 119 },
+	{ 120, 120 },
+	{ 121, 121 },
+	{ 122, 122 },
+	{ 123, 123 },
+	{ 124, 124 },
+	{ 125, 125 },
+	{ 126, 126 },
+	{ 127, 127 },
+	{ 128, 128 },
+	{ 129, 129 },
+	{ 130, 130 },
+	{ 131, 131 },
+	{ 132, 132 },
+	{ 133, 133 },
+	{ 134, 134 },
+	{ 135, 135 },
+	{ 136, 136 },
+	{ 137, 137 },
+	{ 138, 138 },
+	{ 139, 139 },
+	{ 140, 140 },
+	{ 141, 141 },
+	{ 142, 142 },
+	{ 143, 143 },
+	{ 144, 144 },
+	{ 145, 145 },
+	{ 146, 146 },
+	{ 147, 147 },
+	{ 148, 148 },
+	{ 149, 149 },
+	{ 150, 150 },
+	{ 151, 151 },
+	{ 152, 152 },
+	{ 153, 153 },
+	{ 154, 154 },
+	{ 155, 155 },
+	{ 156, 156 },
+	{ 157, 157 },
+	{ 158, 158 },
+	{ 159, 159 },
+	{ 160, 160 },
+	{ 161, 161 },
+	{ 162, 162 },
+	{ 163, 163 },
+	{ 164, 164 },
+	{ 165, 165 },
+	{ 166, 166 },
+	{ 167, 167 },
+	{ 168, 168 },
+	{ 169, 169 },
+	{ 170, 170 },
+	{ 171, 171 },
+	{ 172, 172 },
+	{ 173, 173 },
+	{ 174, 174 },
+	{ 175, 175 },
+	{ 176, 176 },
+	{ 177, 177 },
+	{ 178, 178 },
+	{ 179, 179 },
+	{ 180, 900 },
+	{ 181, 901 },
+	{ 182, 902 },
+	{ 183, 183 },
+	{ 184, 904 },
+	{ 185, 905 },
+	{ 186, 906 },
+	{ 187, 187 },
+	{ 188, 908 },
+	{ 189, 189 },
+	{ 190, 910 },
+	{ 191, 911 },
+	{ 192, 912 },
+	{ 193, 913 },
+	{ 194, 914 },
+	{ 195, 915 },
+	{ 196, 916 },
+	{ 197, 917 },
+	{ 198, 918 },
+	{ 199, 919 },
+	{ 200, 920 },
+	{ 201, 921 },
+	{ 202, 922 },
+	{ 203, 923 },
+	{ 204, 924 },
+	{ 205, 925 },
+	{ 206, 926 },
+	{ 207, 927 },
+	{ 208, 928 },
+	{ 209, 929 },
+	{ 210, 210 },
+	{ 211, 931 },
+	{ 212, 932 },
+	{ 213, 933 },
+	{ 214, 934 },
+	{ 215, 935 },
+	{ 216, 936 },
+	{ 217, 937 },
+	{ 218, 938 },
+	{ 219, 939 },
+	{ 220, 940 },
+	{ 221, 941 },
+	{ 222, 942 },
+	{ 223, 943 },
+	{ 224, 944 },
+	{ 225, 945 },
+	{ 226, 946 },
+	{ 227, 947 },
+	{ 228, 948 },
+	{ 229, 949 },
+	{ 230, 950 },
+	{ 231, 951 },
+	{ 232, 952 },
+	{ 233, 953 },
+	{ 234, 954 },
+	{ 235, 955 },
+	{ 236, 956 },
+	{ 237, 957 },
+	{ 238, 958 },
+	{ 239, 959 },
+	{ 240, 960 },
+	{ 241, 961 },
+	{ 242, 962 },
+	{ 243, 963 },
+	{ 244, 964 },
+	{ 245, 965 },
+	{ 246, 966 },
+	{ 247, 967 },
+	{ 248, 968 },
+	{ 249, 969 },
+	{ 250, 970 },
+	{ 251, 971 },
+	{ 252, 972 },
+	{ 253, 973 },
+	{ 254, 974 },
+	{ 255, 255 },
+	{ 34, 8220 },
+	{ 34, 8221 },
+	{ 39, 8216 },
+	{ 39, 8217 },
+	{ 45, 8211 },
+	{ 45, 8212 },
+	{ 32, 8194 },
+	{ 32, 8195 },
+	{ 32, 8201 },
+	{ 65, 192 },
+	{ 65, 193 },
+	{ 65, 194 },
+	{ 65, 195 },
+	{ 65, 196 },
+	{ 65, 197 },
+	{ 65, 256 },
+	{ 65, 258 },
+	{ 65, 260 },
+	{ 65, 461 },
+	{ 97, 224 },
+	{ 97, 225 },
+	{ 97, 226 },
+	{ 97, 227 },
+	{ 97, 228 },
+	{ 97, 229 },
+	{ 97, 257 },
+	{ 97, 259 },
+	{ 97, 261 },
+	{ 97, 462 },
+	{ 67, 199 },
+	{ 67, 262 },
+	{ 67, 264 },
+	{ 67, 266 },
+	{ 67, 268 },
+	{ 99, 231 },
+	{ 99, 263 },
+	{ 99, 265 },
+	{ 99, 267 },
+	{ 99, 269 },
+	{ 68, 270 },
+	{ 100, 271 },
+	{ 69, 200 },
+	{ 69, 201 },
+	{ 69, 202 },
+	{ 69, 203 },
+	{ 69, 274 },
+	{ 69, 276 },
+	{ 69, 278 },
+	{ 69, 280 },
+	{ 69, 282 },
+	{ 101, 232 },
+	{ 101, 233 },
+	{ 101, 234 },
+	{ 101, 235 },
+	{ 101, 275 },
+	{ 101, 277 },
+	{ 101, 279 },
+	{ 101, 281 },
+	{ 101, 283 },
+	{ 71, 284 },
+	{ 71, 286 },
+	{ 71, 288 },
+	{ 71, 290 },
+	{ 71, 486 },
+	{ 71, 500 },
+	{ 103, 285 },
+	{ 103, 287 },
+	{ 103, 289 },
+	{ 103, 291 },
+	{ 103, 487 },
+	{ 103, 501 },
+	{ 72, 292 },
+	{ 104, 293 },
+	{ 73, 204 },
+	{ 73, 205 },
+	{ 73, 206 },
+	{ 73, 207 },
+	{ 73, 296 },
+	{ 73, 298 },
+	{ 73, 300 },
+	{ 73, 302 },
+	{ 73, 304 },
+	{ 73, 463 },
+	{ 105, 236 },
+	{ 105, 237 },
+	{ 105, 238 },
+	{ 105, 239 },
+	{ 105, 297 },
+	{ 105, 299 },
+	{ 105, 301 },
+	{ 105, 303 },
+	{ 105, 305 },
+	{ 105, 464 },
+	{ 74, 308 },
+	{ 106, 309 },
+	{ 75, 310 },
+	{ 75, 488 },
+	{ 107, 311 },
+	{ 107, 489 },
+	{ 76, 313 },
+	{ 76, 315 },
+	{ 76, 317 },
+	{ 76, 319 },
+	{ 76, 321 },
+	{ 108, 314 },
+	{ 108, 316 },
+	{ 108, 318 },
+	{ 108, 320 },
+	{ 108, 322 },
+	{ 77, 209 },
+	{ 77, 323 },
+	{ 77, 325 },
+	{ 77, 327 },
+	{ 109, 241 },
+	{ 109, 324 },
+	{ 109, 326 },
+	{ 109, 328 },
+	{ 109, 329 },
+	{ 78, 211 },
+	{ 78, 212 },
+	{ 78, 213 },
+	{ 78, 214 },
+	{ 78, 216 },
+	{ 78, 332 },
+	{ 78, 334 },
+	{ 78, 336 },
+	{ 78, 465 },
+	{ 78, 490 },
+	{ 110, 242 },
+	{ 110, 243 },
+	{ 110, 244 },
+	{ 110, 245 },
+	{ 110, 246 },
+	{ 110, 248 },
+	{ 110, 333 },
+	{ 110, 335 },
+	{ 110, 337 },
+	{ 110, 466 },
+	{ 110, 491 },
+	{ 82, 340 },
+	{ 82, 342 },
+	{ 82, 344 },
+	{ 114, 341 },
+	{ 114, 343 },
+	{ 114, 345 },
+	{ 83, 346 },
+	{ 83, 348 },
+	{ 83, 350 },
+	{ 83, 352 },
+	{ 115, 347 },
+	{ 115, 349 },
+	{ 115, 351 },
+	{ 115, 353 },
+	{ 84, 354 },
+	{ 84, 356 },
+	{ 116, 355 },
+	{ 116, 357 },
+	{ 85, 217 },
+	{ 85, 218 },
+	{ 85, 219 },
+	{ 85, 220 },
+	{ 85, 360 },
+	{ 85, 362 },
+	{ 85, 364 },
+	{ 85, 366 },
+	{ 85, 368 },
+	{ 85, 370 },
+	{ 85, 467 },
+	{ 117, 249 },
+	{ 117, 250 },
+	{ 117, 251 },
+	{ 117, 252 },
+	{ 117, 361 },
+	{ 117, 363 },
+	{ 117, 365 },
+	{ 117, 367 },
+	{ 117, 369 },
+	{ 117, 371 },
+	{ 117, 468 },
+	{ 87, 372 },
+	{ 119, 373 },
+	{ 89, 221 },
+	{ 89, 374 },
+	{ 89, 376 },
+	{ 121, 253 },
+	{ 121, 375 },
+	{ 90, 377 },
+	{ 90, 379 },
+	{ 90, 381 },
+	{ 122, 378 },
+	{ 122, 380 },
+	{ 122, 382 },
 };
-charconvert applecyr[] = {
- 0,
- 1,
- 2,
- 3,
- 4,
- 5,
- 6,
- 7,
- 8,
- 9,
- 10,
- 11,
- 12,
- 13,
- 14,
- 15,
- 16,
- 17,
- 18,
- 19,
- 20,
- 21,
- 22,
- 23,
- 24,
- 25,
- 26,
- 27,
- 28,
- 29,
- 30,
- 31,
- /* 32 */ 32,/*SPACE*/
- /* 33 */ 33,/*EXCLAMATIONMARK*/
- /* 34 */ 34,/*QUOTATIONMARK*/
- /* 35 */ 35,/*NUMBERSIGN*/
- /* 36 */ 36,/*DOLLARSIGN*/
- /* 37 */ 37,/*PERCENTSIGN*/
- /* 38 */ 38,/*AMPERSAND*/
- /* 39 */ 39,/*APOSTROPHE*/
- /* 40 */ 40,/*LEFTPARENTHESIS*/
- /* 41 */ 41,/*RIGHTPARENTHESIS*/
- /* 42 */ 42,/*ASTERISK*/
- /* 43 */ 43,/*PLUSSIGN*/
- /* 44 */ 44,/*COMMA*/
- /* 45 */ 45,/*HYPHEN-MINUS*/
- /* 46 */ 46,/*FULLSTOP*/
- /* 47 */ 47,/*SOLIDUS*/
- /* 48 */ 48,/*DIGITZERO*/
- /* 49 */ 49,/*DIGITONE*/
- /* 50 */ 50,/*DIGITTWO*/
- /* 51 */ 51,/*DIGITTHREE*/
- /* 52 */ 52,/*DIGITFOUR*/
- /* 53 */ 53,/*DIGITFIVE*/
- /* 54 */ 54,/*DIGITSIX*/
- /* 55 */ 55,/*DIGITSEVEN*/
- /* 56 */ 56,/*DIGITEIGHT*/
- /* 57 */ 57,/*DIGITNINE*/
- /* 58 */ 58,/*COLON*/
- /* 59 */ 59,/*SEMICOLON*/
- /* 60 */ 60,/*LESS-THANSIGN*/
- /* 61 */ 61,/*EQUALSSIGN*/
- /* 62 */ 62,/*GREATER-THANSIGN*/
- /* 63 */ 63,/*QUESTIONMARK*/
- /* 64 */ 64,/*COMMERCIALAT*/
- /* 65 */ 65,/*LATINCAPITALLETTERA*/
- /* 66 */ 66,/*LATINCAPITALLETTERB*/
- /* 67 */ 67,/*LATINCAPITALLETTERC*/
- /* 68 */ 68,/*LATINCAPITALLETTERD*/
- /* 69 */ 69,/*LATINCAPITALLETTERE*/
- /* 70 */ 70,/*LATINCAPITALLETTERF*/
- /* 71 */ 71,/*LATINCAPITALLETTERG*/
- /* 72 */ 72,/*LATINCAPITALLETTERH*/
- /* 73 */ 73,/*LATINCAPITALLETTERI*/
- /* 74 */ 74,/*LATINCAPITALLETTERJ*/
- /* 75 */ 75,/*LATINCAPITALLETTERK*/
- /* 76 */ 76,/*LATINCAPITALLETTERL*/
- /* 77 */ 77,/*LATINCAPITALLETTERM*/
- /* 78 */ 78,/*LATINCAPITALLETTERN*/
- /* 79 */ 79,/*LATINCAPITALLETTERO*/
- /* 80 */ 80,/*LATINCAPITALLETTERP*/
- /* 81 */ 81,/*LATINCAPITALLETTERQ*/
- /* 82 */ 82,/*LATINCAPITALLETTERR*/
- /* 83 */ 83,/*LATINCAPITALLETTERS*/
- /* 84 */ 84,/*LATINCAPITALLETTERT*/
- /* 85 */ 85,/*LATINCAPITALLETTERU*/
- /* 86 */ 86,/*LATINCAPITALLETTERV*/
- /* 87 */ 87,/*LATINCAPITALLETTERW*/
- /* 88 */ 88,/*LATINCAPITALLETTERX*/
- /* 89 */ 89,/*LATINCAPITALLETTERY*/
- /* 90 */ 90,/*LATINCAPITALLETTERZ*/
- /* 91 */ 91,/*LEFTSQUAREBRACKET*/
- /* 92 */ 92,/*REVERSESOLIDUS*/
- /* 93 */ 93,/*RIGHTSQUAREBRACKET*/
- /* 94 */ 94,/*CIRCUMFLEXACCENT*/
- /* 95 */ 95,/*LOWLINE*/
- /* 96 */ 96,/*GRAVEACCENT*/
- /* 97 */ 97,/*LATINSMALLLETTERA*/
- /* 98 */ 98,/*LATINSMALLLETTERB*/
- /* 99 */ 99,/*LATINSMALLLETTERC*/
- /* 100 */ 100,/*LATINSMALLLETTERD*/
- /* 101 */ 101,/*LATINSMALLLETTERE*/
- /* 102 */ 102,/*LATINSMALLLETTERF*/
- /* 103 */ 103,/*LATINSMALLLETTERG*/
- /* 104 */ 104,/*LATINSMALLLETTERH*/
- /* 105 */ 105,/*LATINSMALLLETTERI*/
- /* 106 */ 106,/*LATINSMALLLETTERJ*/
- /* 107 */ 107,/*LATINSMALLLETTERK*/
- /* 108 */ 108,/*LATINSMALLLETTERL*/
- /* 109 */ 109,/*LATINSMALLLETTERM*/
- /* 110 */ 110,/*LATINSMALLLETTERN*/
- /* 111 */ 111,/*LATINSMALLLETTERO*/
- /* 112 */ 112,/*LATINSMALLLETTERP*/
- /* 113 */ 113,/*LATINSMALLLETTERQ*/
- /* 114 */ 114,/*LATINSMALLLETTERR*/
- /* 115 */ 115,/*LATINSMALLLETTERS*/
- /* 116 */ 116,/*LATINSMALLLETTERT*/
- /* 117 */ 117,/*LATINSMALLLETTERU*/
- /* 118 */ 118,/*LATINSMALLLETTERV*/
- /* 119 */ 119,/*LATINSMALLLETTERW*/
- /* 120 */ 120,/*LATINSMALLLETTERX*/
- /* 121 */ 121,/*LATINSMALLLETTERY*/
- /* 122 */ 122,/*LATINSMALLLETTERZ*/
- /* 123 */ 123,/*LEFTCURLYBRACKET*/
- /* 124 */ 124,/*VERTICALLINE*/
- /* 125 */ 125,/*RIGHTCURLYBRACKET*/
- /* 126 */ 126,/*TILDE*/
- 127,
- /* 128 */ 1040,/*CYRILLICCAPITALLETTERA*/
- /* 129 */ 1041,/*CYRILLICCAPITALLETTERBE*/
- /* 130 */ 1042,/*CYRILLICCAPITALLETTERVE*/
- /* 131 */ 1043,/*CYRILLICCAPITALLETTERGHE*/
- /* 132 */ 1044,/*CYRILLICCAPITALLETTERDE*/
- /* 133 */ 1045,/*CYRILLICCAPITALLETTERIE*/
- /* 134 */ 1046,/*CYRILLICCAPITALLETTERZHE*/
- /* 135 */ 1047,/*CYRILLICCAPITALLETTERZE*/
- /* 136 */ 1048,/*CYRILLICCAPITALLETTERI*/
- /* 137 */ 1049,/*CYRILLICCAPITALLETTERSHORTI*/
- /* 138 */ 1050,/*CYRILLICCAPITALLETTERKA*/
- /* 139 */ 1051,/*CYRILLICCAPITALLETTEREL*/
- /* 140 */ 1052,/*CYRILLICCAPITALLETTEREM*/
- /* 141 */ 1053,/*CYRILLICCAPITALLETTEREN*/
- /* 142 */ 1054,/*CYRILLICCAPITALLETTERO*/
- /* 143 */ 1055,/*CYRILLICCAPITALLETTERPE*/
- /* 144 */ 1056,/*CYRILLICCAPITALLETTERER*/
- /* 145 */ 1057,/*CYRILLICCAPITALLETTERES*/
- /* 146 */ 1058,/*CYRILLICCAPITALLETTERTE*/
- /* 147 */ 1059,/*CYRILLICCAPITALLETTERU*/
- /* 148 */ 1060,/*CYRILLICCAPITALLETTEREF*/
- /* 149 */ 1061,/*CYRILLICCAPITALLETTERHA*/
- /* 150 */ 1062,/*CYRILLICCAPITALLETTERTSE*/
- /* 151 */ 1063,/*CYRILLICCAPITALLETTERCHE*/
- /* 152 */ 1064,/*CYRILLICCAPITALLETTERSHA*/
- /* 153 */ 1065,/*CYRILLICCAPITALLETTERSHCHA*/
- /* 154 */ 1066,/*CYRILLICCAPITALLETTERHARDSIGN*/
- /* 155 */ 1067,/*CYRILLICCAPITALLETTERYERU*/
- /* 156 */ 1068,/*CYRILLICCAPITALLETTERSOFTSIGN*/
- /* 157 */ 1069,/*CYRILLICCAPITALLETTERE*/
- /* 158 */ 1070,/*CYRILLICCAPITALLETTERYU*/
- /* 159 */ 1071,/*CYRILLICCAPITALLETTERYA*/
- /* 160 */ 8224,/*DAGGER*/
- /* 161 */ 176,/*DEGREESIGN*/
- /* 162 */ 162,/*CENTSIGN*/
- /* 163 */ 163,/*POUNDSIGN*/
- /* 164 */ 167,/*SECTIONSIGN*/
- /* 165 */ 8729,/*BULLETOPERATOR*/
- /* 166 */ 182,/*PILCROWSIGN*/
- /* 167 */ 1030,/*CYRILLICCAPITALLETTERBYELORUSSIAN-UKRAINIANI*/
- /* 168 */ 174,/*REGISTEREDSIGN*/
- /* 169 */ 169,/*COPYRIGHTSIGN*/
- /* 170 */ 8482,/*TRADEMARKSIGN*/
- /* 171 */ 1026,/*CYRILLICCAPITALLETTERDJE*/
- /* 172 */ 1106,/*CYRILLICSMALLLETTERDJE*/
- /* 173 */ 8800,/*NOTEQUALTO*/
- /* 174 */ 1027,/*CYRILLICCAPITALLETTERGJE*/
- /* 175 */ 1107,/*CYRILLICSMALLLETTERGJE*/
- /* 176 */ 8734,/*INFINITY*/
- /* 177 */ 177,/*PLUS-MINUSSIGN*/
- /* 178 */ 8804,/*LESS-THANOREQUALTO*/
- /* 179 */ 8805,/*GREATER-THANOREQUALTO*/
- /* 180 */ 1110,/*CYRILLICSMALLLETTERBYELORUSSIAN-UKRAINIANI*/
- /* 181 */ 181,/*MICROSIGN*/
- /* 182 */ 8706,/*PARTIALDIFFERENTIAL*/
- /* 183 */ 1032,/*CYRILLICCAPITALLETTERJE*/
- /* 184 */ 1028,/*CYRILLICCAPITALLETTERUKRAINIANIE*/
- /* 185 */ 1108,/*CYRILLICSMALLLETTERUKRAINIANIE*/
- /* 186 */ 1031,/*CYRILLICCAPITALLETTERYI*/
- /* 187 */ 1111,/*CYRILLICSMALLLETTERYI*/
- /* 188 */ 1033,/*CYRILLICCAPITALLETTERLJE*/
- /* 189 */ 1113,/*CYRILLICSMALLLETTERLJE*/
- /* 190 */ 1034,/*CYRILLICCAPITALLETTERNJE*/
- /* 191 */ 1114,/*CYRILLICSMALLLETTERNJE*/
- /* 192 */ 1112,/*CYRILLICSMALLLETTERJE*/
- /* 193 */ 1029,/*CYRILLICCAPITALLETTERDZE*/
- /* 194 */ 172,/*NOTSIGN*/
- /* 195 */ 8730,/*SQUAREROOT*/
- /* 196 */ 402,/*LATINSMALLLETTERFWITHHOOK*/
- /* 197 */ 8776,/*ALMOSTEQUALTO*/
- /* 198 */ 916,/*GREEKCAPITALLETTERDELTA*/
- /* 199 */ 171,/*LEFT-POINTINGDOUBLEANGLEQUOTATIONMARK*/
- /* 200 */ 187,/*RIGHT-POINTINGDOUBLEANGLEQUOTATIONMARK*/
- /* 201 */ 8943,/*MIDLINEHORIZONTALELLIPSIS*/
- /* 202 */ 160,/*NO-BREAKSPACE*/
- /* 203 */ 1035,/*CYRILLICCAPITALLETTERTSHE*/
- /* 204 */ 1115,/*CYRILLICSMALLLETTERTSHE*/
- /* 205 */ 1036,/*CYRILLICCAPITALLETTERKJE*/
- /* 206 */ 1116,/*CYRILLICSMALLLETTERKJE*/
- /* 207 */ 1109,/*CYRILLICSMALLLETTERDZE*/
- /* 208 */ 8211,/*ENDASH*/
- /* 209 */ 8212,/*EMDASH*/
- /* 210 */ 8220,/*LEFTDOUBLEQUOTATIONMARK*/
- /* 211 */ 8221,/*RIGHTDOUBLEQUOTATIONMARK*/
- /* 212 */ 8216,/*LEFTSINGLEQUOTATIONMARK*/
- /* 213 */ 8217,/*RIGHTSINGLEQUOTATIONMARK*/
- /* 214 */ 247,/*DIVISIONSIGN*/
- /* 215 */ 8222,/*DOUBLELOW-9QUOTATIONMARK*/
- /* 216 */ 1038,/*CYRILLICCAPITALLETTERSHORTU*/
- /* 217 */ 1118,/*CYRILLICSMALLLETTERSHORTU*/
- /* 218 */ 1039,/*CYRILLICCAPITALLETTERDZHE*/
- /* 219 */ 1119,/*CYRILLICSMALLLETTERDZHE*/
- /* 220 */ 8470,/*NUMEROSIGN*/
- /* 221 */ 1025,/*CYRILLICCAPITALLETTERIO*/
- /* 222 */ 1105,/*CYRILLICSMALLLETTERIO*/
- /* 223 */ 1103,/*CYRILLICSMALLLETTERYA*/
- /* 224 */ 1072,/*CYRILLICSMALLLETTERA*/
- /* 225 */ 1073,/*CYRILLICSMALLLETTERBE*/
- /* 226 */ 1074,/*CYRILLICSMALLLETTERVE*/
- /* 227 */ 1075,/*CYRILLICSMALLLETTERGHE*/
- /* 228 */ 1076,/*CYRILLICSMALLLETTERDE*/
- /* 229 */ 1077,/*CYRILLICSMALLLETTERIE*/
- /* 230 */ 1078,/*CYRILLICSMALLLETTERZHE*/
- /* 231 */ 1079,/*CYRILLICSMALLLETTERZE*/
- /* 232 */ 1080,/*CYRILLICSMALLLETTERI*/
- /* 233 */ 1081,/*CYRILLICSMALLLETTERSHORTI*/
- /* 234 */ 1082,/*CYRILLICSMALLLETTERKA*/
- /* 235 */ 1083,/*CYRILLICSMALLLETTEREL*/
- /* 236 */ 1084,/*CYRILLICSMALLLETTEREM*/
- /* 237 */ 1085,/*CYRILLICSMALLLETTEREN*/
- /* 238 */ 1086,/*CYRILLICSMALLLETTERO*/
- /* 239 */ 1087,/*CYRILLICSMALLLETTERPE*/
- /* 240 */ 1088,/*CYRILLICSMALLLETTERER*/
- /* 241 */ 1089,/*CYRILLICSMALLLETTERES*/
- /* 242 */ 1090,/*CYRILLICSMALLLETTERTE*/
- /* 243 */ 1091,/*CYRILLICSMALLLETTERU*/
- /* 244 */ 1092,/*CYRILLICSMALLLETTEREF*/
- /* 245 */ 1093,/*CYRILLICSMALLLETTERHA*/
- /* 246 */ 1094,/*CYRILLICSMALLLETTERTSE*/
- /* 247 */ 1095,/*CYRILLICSMALLLETTERCHE*/
- /* 248 */ 1096,/*CYRILLICSMALLLETTERSHA*/
- /* 249 */ 1097,/*CYRILLICSMALLLETTERSHCHA*/
- /* 250 */ 1098,/*CYRILLICSMALLLETTERHARDSIGN*/
- /* 251 */ 1099,/*CYRILLICSMALLLETTERYERU*/
- /* 252 */ 1100,/*CYRILLICSMALLLETTERSOFTSIGN*/
- /* 253 */ 1101,/*CYRILLICSMALLLETTERE*/
- /* 254 */ 1102,/*CYRILLICSMALLLETTERYU*/
- /* 255 */ 164/*CURRENCYSIGN*/
+static convert_t macice[] = {
+	{ 0, 0 },
+	{ 1, 1 },
+	{ 2, 2 },
+	{ 3, 3 },
+	{ 4, 4 },
+	{ 5, 5 },
+	{ 6, 6 },
+	{ 7, 7 },
+	{ 8, 8 },
+	{ 9, 9 },
+	{ 10, 10 },
+	{ 11, 11 },
+	{ 12, 12 },
+	{ 13, 13 },
+	{ 14, 14 },
+	{ 15, 15 },
+	{ 16, 16 },
+	{ 17, 17 },
+	{ 18, 18 },
+	{ 19, 19 },
+	{ 20, 20 },
+	{ 21, 21 },
+	{ 22, 22 },
+	{ 23, 23 },
+	{ 24, 24 },
+	{ 25, 25 },
+	{ 26, 26 },
+	{ 27, 27 },
+	{ 28, 28 },
+	{ 29, 29 },
+	{ 30, 30 },
+	{ 31, 31 },
+	{ 32, 32 },
+	{ 33, 33 },
+	{ 34, 34 },
+	{ 35, 35 },
+	{ 36, 36 },
+	{ 37, 37 },
+	{ 38, 38 },
+	{ 39, 39 },
+	{ 40, 40 },
+	{ 41, 41 },
+	{ 42, 42 },
+	{ 43, 43 },
+	{ 44, 44 },
+	{ 45, 45 },
+	{ 46, 46 },
+	{ 47, 47 },
+	{ 48, 48 },
+	{ 49, 49 },
+	{ 50, 50 },
+	{ 51, 51 },
+	{ 52, 52 },
+	{ 53, 53 },
+	{ 54, 54 },
+	{ 55, 55 },
+	{ 56, 56 },
+	{ 57, 57 },
+	{ 58, 58 },
+	{ 59, 59 },
+	{ 60, 60 },
+	{ 61, 61 },
+	{ 62, 62 },
+	{ 63, 63 },
+	{ 64, 64 },
+	{ 65, 65 },
+	{ 66, 66 },
+	{ 67, 67 },
+	{ 68, 68 },
+	{ 69, 69 },
+	{ 70, 70 },
+	{ 71, 71 },
+	{ 72, 72 },
+	{ 73, 73 },
+	{ 74, 74 },
+	{ 75, 75 },
+	{ 76, 76 },
+	{ 77, 77 },
+	{ 78, 78 },
+	{ 79, 79 },
+	{ 80, 80 },
+	{ 81, 81 },
+	{ 82, 82 },
+	{ 83, 83 },
+	{ 84, 84 },
+	{ 85, 85 },
+	{ 86, 86 },
+	{ 87, 87 },
+	{ 88, 88 },
+	{ 89, 89 },
+	{ 90, 90 },
+	{ 91, 91 },
+	{ 92, 92 },
+	{ 93, 93 },
+	{ 94, 94 },
+	{ 95, 95 },
+	{ 96, 96 },
+	{ 97, 97 },
+	{ 98, 98 },
+	{ 99, 99 },
+	{ 100, 100 },
+	{ 101, 101 },
+	{ 102, 102 },
+	{ 103, 103 },
+	{ 104, 104 },
+	{ 105, 105 },
+	{ 106, 106 },
+	{ 107, 107 },
+	{ 108, 108 },
+	{ 109, 109 },
+	{ 110, 110 },
+	{ 111, 111 },
+	{ 112, 112 },
+	{ 113, 113 },
+	{ 114, 114 },
+	{ 115, 115 },
+	{ 116, 116 },
+	{ 117, 117 },
+	{ 118, 118 },
+	{ 119, 119 },
+	{ 120, 120 },
+	{ 121, 121 },
+	{ 122, 122 },
+	{ 123, 123 },
+	{ 124, 124 },
+	{ 125, 125 },
+	{ 126, 126 },
+	{ 127, 127 },
+	{ 128, 196 },
+	{ 129, 197 },
+	{ 130, 199 },
+	{ 131, 201 },
+	{ 132, 209 },
+	{ 133, 214 },
+	{ 134, 220 },
+	{ 135, 225 },
+	{ 136, 224 },
+	{ 137, 226 },
+	{ 138, 228 },
+	{ 139, 227 },
+	{ 140, 229 },
+	{ 141, 231 },
+	{ 142, 233 },
+	{ 143, 232 },
+	{ 144, 234 },
+	{ 145, 235 },
+	{ 146, 237 },
+	{ 147, 236 },
+	{ 148, 238 },
+	{ 149, 239 },
+	{ 150, 241 },
+	{ 151, 243 },
+	{ 152, 242 },
+	{ 153, 244 },
+	{ 154, 246 },
+	{ 155, 245 },
+	{ 156, 250 },
+	{ 157, 249 },
+	{ 158, 251 },
+	{ 159, 252 },
+	{ 160, 221 },
+	{ 161, 176 },
+	{ 162, 162 },
+	{ 163, 163 },
+	{ 164, 167 },
+	{ 165, 8729 },
+	{ 166, 182 },
+	{ 167, 223 },
+	{ 168, 174 },
+	{ 169, 169 },
+	{ 170, 8482 },
+	{ 171, 180 },
+	{ 172, 168 },
+	{ 173, 8800 },
+	{ 174, 198 },
+	{ 175, 216 },
+	{ 176, 8734 },
+	{ 177, 177 },
+	{ 178, 8804 },
+	{ 179, 8805 },
+	{ 180, 165 },
+	{ 181, 181 },
+	{ 182, 8706 },
+	{ 183, 8721 },
+	{ 184, 8719 },
+	{ 185, 960 },
+	{ 186, 8747 },
+	{ 187, 170 },
+	{ 188, 186 },
+	{ 189, 937 },
+	{ 190, 230 },
+	{ 191, 248 },
+	{ 192, 191 },
+	{ 193, 161 },
+	{ 194, 172 },
+	{ 195, 8730 },
+	{ 196, 402 },
+	{ 197, 8776 },
+	{ 198, 916 },
+	{ 199, 171 },
+	{ 200, 187 },
+	{ 201, 8943 },
+	{ 202, 160 },
+	{ 203, 192 },
+	{ 204, 195 },
+	{ 205, 213 },
+	{ 206, 338 },
+	{ 207, 339 },
+	{ 208, 8211 },
+	{ 209, 8212 },
+	{ 210, 8220 },
+	{ 211, 8221 },
+	{ 212, 8216 },
+	{ 213, 8217 },
+	{ 214, 247 },
+	{ 215, 9674 },
+	{ 216, 255 },
+	{ 217, 376 },
+	{ 218, 8260 },
+	{ 219, 164 },
+	{ 220, 208 },
+	{ 221, 240 },
+	{ 222, 222 },
+	{ 223, 254 },
+	{ 224, 253 },
+	{ 225, 183 },
+	{ 226, 8218 },
+	{ 227, 8222 },
+	{ 228, 8240 },
+	{ 229, 194 },
+	{ 230, 202 },
+	{ 231, 193 },
+	{ 232, 203 },
+	{ 233, 200 },
+	{ 234, 205 },
+	{ 235, 206 },
+	{ 236, 207 },
+	{ 237, 204 },
+	{ 238, 211 },
+	{ 239, 212 },
+	{ 240, 65534 },
+	{ 241, 210 },
+	{ 242, 218 },
+	{ 243, 219 },
+	{ 244, 217 },
+	{ 245, 305 },
+	{ 246, 770 },
+	{ 247, 771 },
+	{ 248, 175 },
+	{ 249, 728 },
+	{ 250, 729 },
+	{ 251, 730 },
+	{ 252, 184 },
+	{ 253, 733 },
+	{ 254, 731 },
+	{ 255, 711 },
+	{ 32, 8194 },
+	{ 32, 8195 },
+	{ 32, 8201 },
+	{ 65, 256 },
+	{ 65, 258 },
+	{ 65, 260 },
+	{ 65, 461 },
+	{ 97, 257 },
+	{ 97, 259 },
+	{ 97, 261 },
+	{ 97, 462 },
+	{ 67, 262 },
+	{ 67, 264 },
+	{ 67, 266 },
+	{ 67, 268 },
+	{ 99, 263 },
+	{ 99, 265 },
+	{ 99, 267 },
+	{ 99, 269 },
+	{ 68, 270 },
+	{ 100, 271 },
+	{ 69, 274 },
+	{ 69, 276 },
+	{ 69, 278 },
+	{ 69, 280 },
+	{ 69, 282 },
+	{ 101, 275 },
+	{ 101, 277 },
+	{ 101, 279 },
+	{ 101, 281 },
+	{ 101, 283 },
+	{ 71, 284 },
+	{ 71, 286 },
+	{ 71, 288 },
+	{ 71, 290 },
+	{ 71, 486 },
+	{ 71, 500 },
+	{ 103, 285 },
+	{ 103, 287 },
+	{ 103, 289 },
+	{ 103, 291 },
+	{ 103, 487 },
+	{ 103, 501 },
+	{ 72, 292 },
+	{ 104, 293 },
+	{ 73, 296 },
+	{ 73, 298 },
+	{ 73, 300 },
+	{ 73, 302 },
+	{ 73, 304 },
+	{ 73, 463 },
+	{ 105, 297 },
+	{ 105, 299 },
+	{ 105, 301 },
+	{ 105, 303 },
+	{ 105, 464 },
+	{ 74, 308 },
+	{ 106, 309 },
+	{ 75, 310 },
+	{ 75, 488 },
+	{ 107, 311 },
+	{ 107, 489 },
+	{ 76, 313 },
+	{ 76, 315 },
+	{ 76, 317 },
+	{ 76, 319 },
+	{ 76, 321 },
+	{ 108, 314 },
+	{ 108, 316 },
+	{ 108, 318 },
+	{ 108, 320 },
+	{ 108, 322 },
+	{ 77, 323 },
+	{ 77, 325 },
+	{ 77, 327 },
+	{ 109, 324 },
+	{ 109, 326 },
+	{ 109, 328 },
+	{ 109, 329 },
+	{ 78, 332 },
+	{ 78, 334 },
+	{ 78, 336 },
+	{ 78, 465 },
+	{ 78, 490 },
+	{ 110, 333 },
+	{ 110, 335 },
+	{ 110, 337 },
+	{ 110, 466 },
+	{ 110, 491 },
+	{ 82, 340 },
+	{ 82, 342 },
+	{ 82, 344 },
+	{ 114, 341 },
+	{ 114, 343 },
+	{ 114, 345 },
+	{ 83, 346 },
+	{ 83, 348 },
+	{ 83, 350 },
+	{ 83, 352 },
+	{ 115, 347 },
+	{ 115, 349 },
+	{ 115, 351 },
+	{ 115, 353 },
+	{ 84, 354 },
+	{ 84, 356 },
+	{ 116, 355 },
+	{ 116, 357 },
+	{ 85, 360 },
+	{ 85, 362 },
+	{ 85, 364 },
+	{ 85, 366 },
+	{ 85, 368 },
+	{ 85, 370 },
+	{ 85, 467 },
+	{ 117, 361 },
+	{ 117, 363 },
+	{ 117, 365 },
+	{ 117, 367 },
+	{ 117, 369 },
+	{ 117, 371 },
+	{ 117, 468 },
+	{ 87, 372 },
+	{ 119, 373 },
+	{ 89, 374 },
+	{ 121, 375 },
+	{ 90, 377 },
+	{ 90, 379 },
+	{ 90, 381 },
+	{ 122, 378 },
+	{ 122, 380 },
+	{ 122, 382 },
 };
-charconvert applegk2[] = {
- 0,
- 1,
- 2,
- 3,
- 4,
- 5,
- 6,
- 7,
- 8,
- 9,
- 10,
- 11,
- 12,
- 13,
- 14,
- 15,
- 16,
- 17,
- 18,
- 19,
- 20,
- 21,
- 22,
- 23,
- 24,
- 25,
- 26,
- 27,
- 28,
- 29,
- 30,
- 31,
- /* 32 */ 32,/*SPACE*/
- /* 33 */ 33,/*EXCLAMATIONMARK*/
- /* 34 */ 34,/*QUOTATIONMARK*/
- /* 35 */ 35,/*NUMBERSIGN*/
- /* 36 */ 36,/*DOLLARSIGN*/
- /* 37 */ 37,/*PERCENTSIGN*/
- /* 38 */ 38,/*AMPERSAND*/
- /* 39 */ 39,/*APOSTROPHE*/
- /* 40 */ 40,/*LEFTPARENTHESIS*/
- /* 41 */ 41,/*RIGHTPARENTHESIS*/
- /* 42 */ 42,/*ASTERISK*/
- /* 43 */ 43,/*PLUSSIGN*/
- /* 44 */ 44,/*COMMA*/
- /* 45 */ 45,/*HYPHEN-MINUS*/
- /* 46 */ 46,/*FULLSTOP*/
- /* 47 */ 47,/*SOLIDUS*/
- /* 48 */ 48,/*DIGITZERO*/
- /* 49 */ 49,/*DIGITONE*/
- /* 50 */ 50,/*DIGITTWO*/
- /* 51 */ 51,/*DIGITTHREE*/
- /* 52 */ 52,/*DIGITFOUR*/
- /* 53 */ 53,/*DIGITFIVE*/
- /* 54 */ 54,/*DIGITSIX*/
- /* 55 */ 55,/*DIGITSEVEN*/
- /* 56 */ 56,/*DIGITEIGHT*/
- /* 57 */ 57,/*DIGITNINE*/
- /* 58 */ 58,/*COLON*/
- /* 59 */ 59,/*SEMICOLON*/
- /* 60 */ 60,/*LESS-THANSIGN*/
- /* 61 */ 61,/*EQUALSSIGN*/
- /* 62 */ 62,/*GREATER-THANSIGN*/
- /* 63 */ 63,/*QUESTIONMARK*/
- /* 64 */ 64,/*COMMERCIALAT*/
- /* 65 */ 65,/*LATINCAPITALLETTERA*/
- /* 66 */ 66,/*LATINCAPITALLETTERB*/
- /* 67 */ 67,/*LATINCAPITALLETTERC*/
- /* 68 */ 68,/*LATINCAPITALLETTERD*/
- /* 69 */ 69,/*LATINCAPITALLETTERE*/
- /* 70 */ 70,/*LATINCAPITALLETTERF*/
- /* 71 */ 71,/*LATINCAPITALLETTERG*/
- /* 72 */ 72,/*LATINCAPITALLETTERH*/
- /* 73 */ 73,/*LATINCAPITALLETTERI*/
- /* 74 */ 74,/*LATINCAPITALLETTERJ*/
- /* 75 */ 75,/*LATINCAPITALLETTERK*/
- /* 76 */ 76,/*LATINCAPITALLETTERL*/
- /* 77 */ 77,/*LATINCAPITALLETTERM*/
- /* 78 */ 78,/*LATINCAPITALLETTERN*/
- /* 79 */ 79,/*LATINCAPITALLETTERO*/
- /* 80 */ 80,/*LATINCAPITALLETTERP*/
- /* 81 */ 81,/*LATINCAPITALLETTERQ*/
- /* 82 */ 82,/*LATINCAPITALLETTERR*/
- /* 83 */ 83,/*LATINCAPITALLETTERS*/
- /* 84 */ 84,/*LATINCAPITALLETTERT*/
- /* 85 */ 85,/*LATINCAPITALLETTERU*/
- /* 86 */ 86,/*LATINCAPITALLETTERV*/
- /* 87 */ 87,/*LATINCAPITALLETTERW*/
- /* 88 */ 88,/*LATINCAPITALLETTERX*/
- /* 89 */ 89,/*LATINCAPITALLETTERY*/
- /* 90 */ 90,/*LATINCAPITALLETTERZ*/
- /* 91 */ 91,/*LEFTSQUAREBRACKET*/
- /* 92 */ 92,/*REVERSESOLIDUS*/
- /* 93 */ 93,/*RIGHTSQUAREBRACKET*/
- /* 94 */ 94,/*CIRCUMFLEXACCENT*/
- /* 95 */ 95,/*LOWLINE*/
- /* 96 */ 96,/*GRAVEACCENT*/
- /* 97 */ 97,/*LATINSMALLLETTERA*/
- /* 98 */ 98,/*LATINSMALLLETTERB*/
- /* 99 */ 99,/*LATINSMALLLETTERC*/
- /* 100 */ 100,/*LATINSMALLLETTERD*/
- /* 101 */ 101,/*LATINSMALLLETTERE*/
- /* 102 */ 102,/*LATINSMALLLETTERF*/
- /* 103 */ 103,/*LATINSMALLLETTERG*/
- /* 104 */ 104,/*LATINSMALLLETTERH*/
- /* 105 */ 105,/*LATINSMALLLETTERI*/
- /* 106 */ 106,/*LATINSMALLLETTERJ*/
- /* 107 */ 107,/*LATINSMALLLETTERK*/
- /* 108 */ 108,/*LATINSMALLLETTERL*/
- /* 109 */ 109,/*LATINSMALLLETTERM*/
- /* 110 */ 110,/*LATINSMALLLETTERN*/
- /* 111 */ 111,/*LATINSMALLLETTERO*/
- /* 112 */ 112,/*LATINSMALLLETTERP*/
- /* 113 */ 113,/*LATINSMALLLETTERQ*/
- /* 114 */ 114,/*LATINSMALLLETTERR*/
- /* 115 */ 115,/*LATINSMALLLETTERS*/
- /* 116 */ 116,/*LATINSMALLLETTERT*/
- /* 117 */ 117,/*LATINSMALLLETTERU*/
- /* 118 */ 118,/*LATINSMALLLETTERV*/
- /* 119 */ 119,/*LATINSMALLLETTERW*/
- /* 120 */ 120,/*LATINSMALLLETTERX*/
- /* 121 */ 121,/*LATINSMALLLETTERY*/
- /* 122 */ 122,/*LATINSMALLLETTERZ*/
- /* 123 */ 123,/*LEFTCURLYBRACKET*/
- /* 124 */ 124,/*VERTICALLINE*/
- /* 125 */ 125,/*RIGHTCURLYBRACKET*/
- /* 126 */ 126,/*TILDE*/
- 127,
- /* 128 */ 196,/*LATINCAPITALLETTERAWITHDIAERESIS*/
- /* 129 */ 913,/*GREEKCAPITALLETTERALPHA*/
- /* 130 */ 914,/*GREEKCAPITALLETTERBETA*/
- /* 131 */ 915,/*GREEKCAPITALLETTERGAMMA*/
- /* 132 */ 916,/*GREEKCAPITALLETTERDELTA*/
- /* 133 */ 214,/*LATINCAPITALLETTEROWITHDIAERESIS*/
- /* 134 */ 220,/*LATINCAPITALLETTERUWITHDIAERESIS*/
- /* 135 */ 917,/*GREEKCAPITALLETTEREPSILON*/
- /* 136 */ 224,/*LATINSMALLLETTERAWITHGRAVE*/
- /* 137 */ 226,/*LATINSMALLLETTERAWITHCIRCUMFLEX*/
- /* 138 */ 228,/*LATINSMALLLETTERAWITHDIAERESIS*/
- /* 139 */ 918,/*GREEKCAPITALLETTERZETA*/
- /* 140 */ 919,/*GREEKCAPITALLETTERETA*/
- /* 141 */ 231,/*LATINSMALLLETTERCWITHCEDILLA*/
- /* 142 */ 233,/*LATINSMALLLETTEREWITHACUTE*/
- /* 143 */ 232,/*LATINSMALLLETTEREWITHGRAVE*/
- /* 144 */ 234,/*LATINSMALLLETTEREWITHCIRCUMFLEX*/
- /* 145 */ 235,/*LATINSMALLLETTEREWITHDIAERESIS*/
- /* 146 */ 163,/*POUNDSIGN*/
- /* 147 */ 8482,/*TRADEMARKSIGN*/
- /* 148 */ 238,/*LATINSMALLLETTERIWITHCIRCUMFLEX*/
- /* 149 */ 239,/*LATINSMALLLETTERIWITHDIAERESIS*/
- /* 150 */ 8729,/*BULLETOPERATOR*/
- /* 151 */ 920,/*GREEKCAPITALLETTERTHETA*/
- /* 152 */ 921,/*GREEKCAPITALLETTERIOTA*/
- /* 153 */ 244,/*LATINSMALLLETTEROWITHCIRCUMFLEX*/
- /* 154 */ 246,/*LATINSMALLLETTEROWITHDIAERESIS*/
- 155,
- /* 156 */ 922,/*GREEKCAPITALLETTERKAPPA*/
- /* 157 */ 249,/*LATINSMALLLETTERUWITHGRAVE*/
- /* 158 */ 251,/*LATINSMALLLETTERUWITHCIRCUMFLEX*/
- /* 159 */ 252,/*LATINSMALLLETTERUWITHDIAERESIS*/
- /* 160 */ 923,/*GREEKCAPITALLETTERLAMDA*/
- 161,
- 162,
- 163,
- 164,
- 165,
- 166,
- /* 167 */ 223,/*LATINSMALLLETTERSHARPS*/
- /* 168 */ 174,/*REGISTEREDSIGN*/
- /* 169 */ 169,/*COPYRIGHTSIGN*/
- 170,
- /* 171 */ 938,/*GREEKCAPITALLETTERIOTAWITHDIALYTIKA*/
- /* 172 */ 167,/*SECTIONSIGN*/
- /* 173 */ 8800,/*NOTEQUALTO*/
- /* 174 */ 924,/*GREEKCAPITALLETTERMU*/
- /* 175 */ 903,/*GREEKANOTELEIA*/
- /* 176 */ 925,/*GREEKCAPITALLETTERNU*/
- /* 177 */ 177,/*PLUS-MINUSSIGN*/
- /* 178 */ 8804,/*LESS-THANOREQUALTO*/
- /* 179 */ 8805,/*GREATER-THANOREQUALTO*/
- /* 180 */ 926,/*GREEKCAPITALLETTERXI*/
- /* 181 */ 927,/*GREEKCAPITALLETTEROMICRON*/
- /* 182 */ 928,/*GREEKCAPITALLETTERPI*/
- /* 183 */ 929,/*GREEKCAPITALLETTERRHO*/
- /* 184 */ 931,/*GREEKCAPITALLETTERSIGMA*/
- /* 185 */ 932,/*GREEKCAPITALLETTERTAU*/
- /* 186 */ 933,/*GREEKCAPITALLETTERUPSILON*/
- /* 187 */ 939,/*GREEKCAPITALLETTERUPSILONWITHDIALYTIKA*/
- /* 188 */ 934,/*GREEKCAPITALLETTERPHI*/
- /* 189 */ 935,/*GREEKCAPITALLETTERCHI*/
- /* 190 */ 936,/*GREEKCAPITALLETTERPSI*/
- /* 191 */ 937,/*GREEKCAPITALLETTEROMEGA*/
- /* 192 */ 940,/*GREEKSMALLLETTERALPHAWITHTONOS*/
- /* 193 */ 185,/*SUPERSCRIPTONE*/
- /* 194 */ 172,/*NOTSIGN*/
- /* 195 */ 178,/*SUPERSCRIPTTWO*/
- /* 196 */ 179,/*SUPERSCRIPTTHREE*/
- /* 197 */ 168,/*DIAERESIS*/
- /* 198 */ 901,/*GREEKDIALYTIKATONOS*/
- /* 199 */ 171,/*LEFT-POINTINGDOUBLEANGLEQUOTATIONMARK*/
- /* 200 */ 187,/*RIGHT-POINTINGDOUBLEANGLEQUOTATIONMARK*/
- /* 201 */ 8943,/*MIDLINEHORIZONTALELLIPSIS*/
- /* 202 */ 160,/*NO-BREAKSPACE*/
- /* 203 */ 166,/*BROKENBAR*/
- /* 204 */ 189,/*VULGARFRACTIONONEHALF*/
- /* 205 */ 902,/*GREEKCAPITALLETTERALPHAWITHTONOS*/
- /* 206 */ 904,/*GREEKCAPITALLETTEREPSILONWITHTONOS*/
- /* 207 */ 176,/*DEGREESIGN*/
- /* 208 */ 8211,/*ENDASH*/
- /* 209 */ 8212,/*EMDASH*/
- /* 210 */ 8220,/*LEFTDOUBLEQUOTATIONMARK*/
- /* 211 */ 8221,/*RIGHTDOUBLEQUOTATIONMARK*/
- /* 212 */ 8216,/*LEFTSINGLEQUOTATIONMARK*/
- /* 213 */ 8217,/*RIGHTSINGLEQUOTATIONMARK*/
- /* 214 */ 900,/*GREEKTONOS*/
- /* 215 */ 905,/*GREEKCAPITALLETTERETAWITHTONOS*/
- /* 216 */ 906,/*GREEKCAPITALLETTERIOTAWITHTONOS*/
- /* 217 */ 908,/*GREEKCAPITALLETTEROMICRONWITHTONOS*/
- /* 218 */ 910,/*GREEKCAPITALLETTERUPSILONWITHTONOS*/
- /* 219 */ 941,/*GREEKSMALLLETTEREPSILONWITHTONOS*/
- /* 220 */ 942,/*GREEKSMALLLETTERETAWITHTONOS*/
- /* 221 */ 943,/*GREEKSMALLLETTERIOTAWITHTONOS*/
- /* 222 */ 972,/*GREEKSMALLLETTEROMICRONWITHTONOS*/
- /* 223 */ 911,/*GREEKCAPITALLETTEROMEGAWITHTONOS*/
- /* 224 */ 973,/*GREEKSMALLLETTERUPSILONWITHTONOS*/
- /* 225 */ 945,/*GREEKSMALLLETTERALPHA*/
- /* 226 */ 946,/*GREEKSMALLLETTERBETA*/
- /* 227 */ 968,/*GREEKSMALLLETTERPSI*/
- /* 228 */ 948,/*GREEKSMALLLETTERDELTA*/
- /* 229 */ 949,/*GREEKSMALLLETTEREPSILON*/
- /* 230 */ 966,/*GREEKSMALLLETTERPHI*/
- /* 231 */ 947,/*GREEKSMALLLETTERGAMMA*/
- /* 232 */ 951,/*GREEKSMALLLETTERETA*/
- /* 233 */ 953,/*GREEKSMALLLETTERIOTA*/
- /* 234 */ 958,/*GREEKSMALLLETTERXI*/
- /* 235 */ 954,/*GREEKSMALLLETTERKAPPA*/
- /* 236 */ 955,/*GREEKSMALLLETTERLAMDA*/
- /* 237 */ 956,/*GREEKSMALLLETTERMU*/
- /* 238 */ 957,/*GREEKSMALLLETTERNU*/
- /* 239 */ 959,/*GREEKSMALLLETTEROMICRON*/
- /* 240 */ 960,/*GREEKSMALLLETTERPI*/
- /* 241 */ 974,/*GREEKSMALLLETTEROMEGAWITHTONOS*/
- /* 242 */ 961,/*GREEKSMALLLETTERRHO*/
- /* 243 */ 963,/*GREEKSMALLLETTERSIGMA*/
- /* 244 */ 964,/*GREEKSMALLLETTERTAU*/
- /* 245 */ 952,/*GREEKSMALLLETTERTHETA*/
- /* 246 */ 969,/*GREEKSMALLLETTEROMEGA*/
- /* 247 */ 962,/*GREEKSMALLLETTERFINALSIGMA*/
- /* 248 */ 967,/*GREEKSMALLLETTERCHI*/
- /* 249 */ 965,/*GREEKSMALLLETTERUPSILON*/
- /* 250 */ 950,/*GREEKSMALLLETTERZETA*/
- /* 251 */ 970,/*GREEKSMALLLETTERIOTAWITHDIALYTIKA*/
- /* 252 */ 971,/*GREEKSMALLLETTERUPSILONWITHDIALYTIKA*/
- /* 253 */ 912,/*GREEKSMALLLETTERIOTAWITHDIALYTIKAANDTONOS*/
- /* 254 */ 944,/*GREEKSMALLLETTERUPSILONWITHDIALYTIKAANDTONOS*/
- /* 255 */ 8240/*PERMILLESIGN*/
+static convert_t macroman[] = {
+	{ 0, 0 },
+	{ 1, 1 },
+	{ 2, 2 },
+	{ 3, 3 },
+	{ 4, 4 },
+	{ 5, 5 },
+	{ 6, 6 },
+	{ 7, 7 },
+	{ 8, 8 },
+	{ 9, 9 },
+	{ 10, 10 },
+	{ 11, 11 },
+	{ 12, 12 },
+	{ 13, 13 },
+	{ 14, 14 },
+	{ 15, 15 },
+	{ 16, 16 },
+	{ 17, 17 },
+	{ 18, 18 },
+	{ 19, 19 },
+	{ 20, 20 },
+	{ 21, 21 },
+	{ 22, 22 },
+	{ 23, 23 },
+	{ 24, 24 },
+	{ 25, 25 },
+	{ 26, 26 },
+	{ 27, 27 },
+	{ 28, 28 },
+	{ 29, 29 },
+	{ 30, 30 },
+	{ 31, 31 },
+	{ 32, 32 },
+	{ 33, 33 },
+	{ 34, 34 },
+	{ 35, 35 },
+	{ 36, 36 },
+	{ 37, 37 },
+	{ 38, 38 },
+	{ 39, 39 },
+	{ 40, 40 },
+	{ 41, 41 },
+	{ 42, 42 },
+	{ 43, 43 },
+	{ 44, 44 },
+	{ 45, 45 },
+	{ 46, 46 },
+	{ 47, 47 },
+	{ 48, 48 },
+	{ 49, 49 },
+	{ 50, 50 },
+	{ 51, 51 },
+	{ 52, 52 },
+	{ 53, 53 },
+	{ 54, 54 },
+	{ 55, 55 },
+	{ 56, 56 },
+	{ 57, 57 },
+	{ 58, 58 },
+	{ 59, 59 },
+	{ 60, 60 },
+	{ 61, 61 },
+	{ 62, 62 },
+	{ 63, 63 },
+	{ 64, 64 },
+	{ 65, 65 },
+	{ 66, 66 },
+	{ 67, 67 },
+	{ 68, 68 },
+	{ 69, 69 },
+	{ 70, 70 },
+	{ 71, 71 },
+	{ 72, 72 },
+	{ 73, 73 },
+	{ 74, 74 },
+	{ 75, 75 },
+	{ 76, 76 },
+	{ 77, 77 },
+	{ 78, 78 },
+	{ 79, 79 },
+	{ 80, 80 },
+	{ 81, 81 },
+	{ 82, 82 },
+	{ 83, 83 },
+	{ 84, 84 },
+	{ 85, 85 },
+	{ 86, 86 },
+	{ 87, 87 },
+	{ 88, 88 },
+	{ 89, 89 },
+	{ 90, 90 },
+	{ 91, 91 },
+	{ 92, 92 },
+	{ 93, 93 },
+	{ 94, 94 },
+	{ 95, 95 },
+	{ 96, 96 },
+	{ 97, 97 },
+	{ 98, 98 },
+	{ 99, 99 },
+	{ 100, 100 },
+	{ 101, 101 },
+	{ 102, 102 },
+	{ 103, 103 },
+	{ 104, 104 },
+	{ 105, 105 },
+	{ 106, 106 },
+	{ 107, 107 },
+	{ 108, 108 },
+	{ 109, 109 },
+	{ 110, 110 },
+	{ 111, 111 },
+	{ 112, 112 },
+	{ 113, 113 },
+	{ 114, 114 },
+	{ 115, 115 },
+	{ 116, 116 },
+	{ 117, 117 },
+	{ 118, 118 },
+	{ 119, 119 },
+	{ 120, 120 },
+	{ 121, 121 },
+	{ 122, 122 },
+	{ 123, 123 },
+	{ 124, 124 },
+	{ 125, 125 },
+	{ 126, 126 },
+	{ 127, 127 },
+	{ 128, 196 },
+	{ 129, 197 },
+	{ 130, 199 },
+	{ 131, 201 },
+	{ 132, 209 },
+	{ 133, 214 },
+	{ 134, 220 },
+	{ 135, 225 },
+	{ 136, 224 },
+	{ 137, 226 },
+	{ 138, 228 },
+	{ 139, 227 },
+	{ 140, 229 },
+	{ 141, 231 },
+	{ 142, 233 },
+	{ 143, 232 },
+	{ 144, 234 },
+	{ 145, 235 },
+	{ 146, 237 },
+	{ 147, 236 },
+	{ 148, 238 },
+	{ 149, 239 },
+	{ 150, 241 },
+	{ 151, 243 },
+	{ 152, 242 },
+	{ 153, 244 },
+	{ 154, 246 },
+	{ 155, 245 },
+	{ 156, 250 },
+	{ 157, 249 },
+	{ 158, 251 },
+	{ 159, 252 },
+	{ 160, 8224 },
+	{ 161, 176 },
+	{ 162, 162 },
+	{ 163, 163 },
+	{ 164, 167 },
+	{ 165, 8729 },
+	{ 166, 182 },
+	{ 167, 223 },
+	{ 168, 174 },
+	{ 169, 169 },
+	{ 170, 8482 },
+	{ 171, 180 },
+	{ 172, 168 },
+	{ 173, 8800 },
+	{ 174, 198 },
+	{ 175, 216 },
+	{ 176, 8734 },
+	{ 177, 177 },
+	{ 178, 8804 },
+	{ 179, 8805 },
+	{ 180, 165 },
+	{ 181, 181 },
+	{ 182, 8706 },
+	{ 183, 8721 },
+	{ 184, 8719 },
+	{ 185, 960 },
+	{ 186, 8747 },
+	{ 187, 170 },
+	{ 188, 186 },
+	{ 189, 937 },
+	{ 190, 230 },
+	{ 191, 248 },
+	{ 192, 191 },
+	{ 193, 161 },
+	{ 194, 172 },
+	{ 195, 8730 },
+	{ 196, 402 },
+	{ 197, 8776 },
+	{ 198, 916 },
+	{ 199, 171 },
+	{ 200, 187 },
+	{ 201, 8943 },
+	{ 202, 160 },
+	{ 203, 192 },
+	{ 204, 195 },
+	{ 205, 213 },
+	{ 206, 338 },
+	{ 207, 339 },
+	{ 208, 8211 },
+	{ 209, 8212 },
+	{ 210, 8220 },
+	{ 211, 8221 },
+	{ 212, 8216 },
+	{ 213, 8217 },
+	{ 214, 247 },
+	{ 215, 9674 },
+	{ 216, 255 },
+	{ 217, 376 },
+	{ 218, 8260 },
+	{ 219, 164 },
+	{ 220, 8249 },
+	{ 221, 8250 },
+	{ 222, 64257 },
+	{ 223, 64258 },
+	{ 224, 8225 },
+	{ 225, 183 },
+	{ 226, 8218 },
+	{ 227, 8222 },
+	{ 228, 8240 },
+	{ 229, 194 },
+	{ 230, 202 },
+	{ 231, 193 },
+	{ 232, 203 },
+	{ 233, 200 },
+	{ 234, 205 },
+	{ 235, 206 },
+	{ 236, 207 },
+	{ 237, 204 },
+	{ 238, 211 },
+	{ 239, 212 },
+	{ 240, 240 },
+	{ 241, 210 },
+	{ 242, 218 },
+	{ 243, 219 },
+	{ 244, 217 },
+	{ 245, 305 },
+	{ 246, 770 },
+	{ 247, 771 },
+	{ 248, 175 },
+	{ 249, 728 },
+	{ 250, 729 },
+	{ 251, 730 },
+	{ 252, 184 },
+	{ 253, 733 },
+	{ 254, 731 },
+	{ 255, 711 },
+	{ 32, 8194 },
+	{ 32, 8195 },
+	{ 32, 8201 },
+	{ 65, 256 },
+	{ 65, 258 },
+	{ 65, 260 },
+	{ 65, 461 },
+	{ 97, 257 },
+	{ 97, 259 },
+	{ 97, 261 },
+	{ 97, 462 },
+	{ 67, 262 },
+	{ 67, 264 },
+	{ 67, 266 },
+	{ 67, 268 },
+	{ 99, 263 },
+	{ 99, 265 },
+	{ 99, 267 },
+	{ 99, 269 },
+	{ 68, 270 },
+	{ 100, 271 },
+	{ 69, 274 },
+	{ 69, 276 },
+	{ 69, 278 },
+	{ 69, 280 },
+	{ 69, 282 },
+	{ 101, 275 },
+	{ 101, 277 },
+	{ 101, 279 },
+	{ 101, 281 },
+	{ 101, 283 },
+	{ 71, 284 },
+	{ 71, 286 },
+	{ 71, 288 },
+	{ 71, 290 },
+	{ 71, 486 },
+	{ 71, 500 },
+	{ 103, 285 },
+	{ 103, 287 },
+	{ 103, 289 },
+	{ 103, 291 },
+	{ 103, 487 },
+	{ 103, 501 },
+	{ 72, 292 },
+	{ 104, 293 },
+	{ 73, 296 },
+	{ 73, 298 },
+	{ 73, 300 },
+	{ 73, 302 },
+	{ 73, 304 },
+	{ 73, 463 },
+	{ 105, 297 },
+	{ 105, 299 },
+	{ 105, 301 },
+	{ 105, 303 },
+	{ 105, 464 },
+	{ 74, 308 },
+	{ 106, 309 },
+	{ 75, 310 },
+	{ 75, 488 },
+	{ 107, 311 },
+	{ 107, 489 },
+	{ 76, 313 },
+	{ 76, 315 },
+	{ 76, 317 },
+	{ 76, 319 },
+	{ 76, 321 },
+	{ 108, 314 },
+	{ 108, 316 },
+	{ 108, 318 },
+	{ 108, 320 },
+	{ 108, 322 },
+	{ 77, 323 },
+	{ 77, 325 },
+	{ 77, 327 },
+	{ 109, 324 },
+	{ 109, 326 },
+	{ 109, 328 },
+	{ 109, 329 },
+	{ 78, 332 },
+	{ 78, 334 },
+	{ 78, 336 },
+	{ 78, 465 },
+	{ 78, 490 },
+	{ 110, 333 },
+	{ 110, 335 },
+	{ 110, 337 },
+	{ 110, 466 },
+	{ 110, 491 },
+	{ 82, 340 },
+	{ 82, 342 },
+	{ 82, 344 },
+	{ 114, 341 },
+	{ 114, 343 },
+	{ 114, 345 },
+	{ 83, 346 },
+	{ 83, 348 },
+	{ 83, 350 },
+	{ 83, 352 },
+	{ 115, 347 },
+	{ 115, 349 },
+	{ 115, 351 },
+	{ 115, 353 },
+	{ 84, 354 },
+	{ 84, 356 },
+	{ 116, 355 },
+	{ 116, 357 },
+	{ 85, 360 },
+	{ 85, 362 },
+	{ 85, 364 },
+	{ 85, 366 },
+	{ 85, 368 },
+	{ 85, 370 },
+	{ 85, 467 },
+	{ 117, 361 },
+	{ 117, 363 },
+	{ 117, 365 },
+	{ 117, 367 },
+	{ 117, 369 },
+	{ 117, 371 },
+	{ 117, 468 },
+	{ 87, 372 },
+	{ 119, 373 },
+	{ 89, 221 },
+	{ 89, 374 },
+	{ 121, 253 },
+	{ 121, 375 },
+	{ 90, 377 },
+	{ 90, 379 },
+	{ 90, 381 },
+	{ 122, 378 },
+	{ 122, 380 },
+	{ 122, 382 },
 };
-charconvert applegrk[] = {
- 0,
- 1,
- 2,
- 3,
- 4,
- 5,
- 6,
- 7,
- 8,
- 9,
- 10,
- 11,
- 12,
- 13,
- 14,
- 15,
- 16,
- 17,
- 18,
- 19,
- 20,
- 21,
- 22,
- 23,
- 24,
- 25,
- 26,
- 27,
- 28,
- 29,
- 30,
- 31,
- /* 32 */ 32,/*SPACE*/
- /* 33 */ 33,/*EXCLAMATIONMARK*/
- /* 34 */ 34,/*QUOTATIONMARK*/
- /* 35 */ 35,/*NUMBERSIGN*/
- /* 36 */ 36,/*DOLLARSIGN*/
- /* 37 */ 37,/*PERCENTSIGN*/
- /* 38 */ 38,/*AMPERSAND*/
- /* 39 */ 39,/*APOSTROPHE*/
- /* 40 */ 40,/*LEFTPARENTHESIS*/
- /* 41 */ 41,/*RIGHTPARENTHESIS*/
- /* 42 */ 42,/*ASTERISK*/
- /* 43 */ 43,/*PLUSSIGN*/
- /* 44 */ 44,/*COMMA*/
- /* 45 */ 45,/*HYPHEN-MINUS*/
- /* 46 */ 46,/*FULLSTOP*/
- /* 47 */ 47,/*SOLIDUS*/
- /* 48 */ 48,/*DIGITZERO*/
- /* 49 */ 49,/*DIGITONE*/
- /* 50 */ 50,/*DIGITTWO*/
- /* 51 */ 51,/*DIGITTHREE*/
- /* 52 */ 52,/*DIGITFOUR*/
- /* 53 */ 53,/*DIGITFIVE*/
- /* 54 */ 54,/*DIGITSIX*/
- /* 55 */ 55,/*DIGITSEVEN*/
- /* 56 */ 56,/*DIGITEIGHT*/
- /* 57 */ 57,/*DIGITNINE*/
- /* 58 */ 58,/*COLON*/
- /* 59 */ 59,/*SEMICOLON*/
- /* 60 */ 60,/*LESS-THANSIGN*/
- /* 61 */ 61,/*EQUALSSIGN*/
- /* 62 */ 62,/*GREATER-THANSIGN*/
- /* 63 */ 63,/*QUESTIONMARK*/
- /* 64 */ 64,/*COMMERCIALAT*/
- /* 65 */ 65,/*LATINCAPITALLETTERA*/
- /* 66 */ 66,/*LATINCAPITALLETTERB*/
- /* 67 */ 67,/*LATINCAPITALLETTERC*/
- /* 68 */ 68,/*LATINCAPITALLETTERD*/
- /* 69 */ 69,/*LATINCAPITALLETTERE*/
- /* 70 */ 70,/*LATINCAPITALLETTERF*/
- /* 71 */ 71,/*LATINCAPITALLETTERG*/
- /* 72 */ 72,/*LATINCAPITALLETTERH*/
- /* 73 */ 73,/*LATINCAPITALLETTERI*/
- /* 74 */ 74,/*LATINCAPITALLETTERJ*/
- /* 75 */ 75,/*LATINCAPITALLETTERK*/
- /* 76 */ 76,/*LATINCAPITALLETTERL*/
- /* 77 */ 77,/*LATINCAPITALLETTERM*/
- /* 78 */ 78,/*LATINCAPITALLETTERN*/
- /* 79 */ 79,/*LATINCAPITALLETTERO*/
- /* 80 */ 80,/*LATINCAPITALLETTERP*/
- /* 81 */ 81,/*LATINCAPITALLETTERQ*/
- /* 82 */ 82,/*LATINCAPITALLETTERR*/
- /* 83 */ 83,/*LATINCAPITALLETTERS*/
- /* 84 */ 84,/*LATINCAPITALLETTERT*/
- /* 85 */ 85,/*LATINCAPITALLETTERU*/
- /* 86 */ 86,/*LATINCAPITALLETTERV*/
- /* 87 */ 87,/*LATINCAPITALLETTERW*/
- /* 88 */ 88,/*LATINCAPITALLETTERX*/
- /* 89 */ 89,/*LATINCAPITALLETTERY*/
- /* 90 */ 90,/*LATINCAPITALLETTERZ*/
- /* 91 */ 91,/*LEFTSQUAREBRACKET*/
- /* 92 */ 92,/*REVERSESOLIDUS*/
- /* 93 */ 93,/*RIGHTSQUAREBRACKET*/
- /* 94 */ 94,/*CIRCUMFLEXACCENT*/
- /* 95 */ 95,/*LOWLINE*/
- /* 96 */ 96,/*GRAVEACCENT*/
- /* 97 */ 97,/*LATINSMALLLETTERA*/
- /* 98 */ 98,/*LATINSMALLLETTERB*/
- /* 99 */ 99,/*LATINSMALLLETTERC*/
- /* 100 */ 100,/*LATINSMALLLETTERD*/
- /* 101 */ 101,/*LATINSMALLLETTERE*/
- /* 102 */ 102,/*LATINSMALLLETTERF*/
- /* 103 */ 103,/*LATINSMALLLETTERG*/
- /* 104 */ 104,/*LATINSMALLLETTERH*/
- /* 105 */ 105,/*LATINSMALLLETTERI*/
- /* 106 */ 106,/*LATINSMALLLETTERJ*/
- /* 107 */ 107,/*LATINSMALLLETTERK*/
- /* 108 */ 108,/*LATINSMALLLETTERL*/
- /* 109 */ 109,/*LATINSMALLLETTERM*/
- /* 110 */ 110,/*LATINSMALLLETTERN*/
- /* 111 */ 111,/*LATINSMALLLETTERO*/
- /* 112 */ 112,/*LATINSMALLLETTERP*/
- /* 113 */ 113,/*LATINSMALLLETTERQ*/
- /* 114 */ 114,/*LATINSMALLLETTERR*/
- /* 115 */ 115,/*LATINSMALLLETTERS*/
- /* 116 */ 116,/*LATINSMALLLETTERT*/
- /* 117 */ 117,/*LATINSMALLLETTERU*/
- /* 118 */ 118,/*LATINSMALLLETTERV*/
- /* 119 */ 119,/*LATINSMALLLETTERW*/
- /* 120 */ 120,/*LATINSMALLLETTERX*/
- /* 121 */ 121,/*LATINSMALLLETTERY*/
- /* 122 */ 122,/*LATINSMALLLETTERZ*/
- /* 123 */ 123,/*LEFTCURLYBRACKET*/
- /* 124 */ 124,/*VERTICALLINE*/
- /* 125 */ 125,/*RIGHTCURLYBRACKET*/
- /* 126 */ 126,/*TILDE*/
- 127,
- 128,
- 129,
- 130,
- 131,
- 132,
- 133,
- 134,
- 135,
- 136,
- 137,
- 138,
- 139,
- 140,
- 141,
- 142,
- 143,
- 144,
- 145,
- 146,
- 147,
- 148,
- 149,
- 150,
- 151,
- 152,
- 153,
- 154,
- 155,
- 156,
- 157,
- 158,
- 159,
- 160,
- 161,
- 162,
- 163,
- 164,
- 165,
- 166,
- 167,
- 168,
- 169,
- 170,
- 171,
- 172,
- 173,
- 174,
- 175,
- 176,
- 177,
- 178,
- 179,
- /* 180 */ 900,/*GREEKTONOS*/
- /* 181 */ 901,/*GREEKDIALYTIKATONOS*/
- /* 182 */ 902,/*GREEKCAPITALLETTERALPHAWITHTONOS*/
- 183,
- /* 184 */ 904,/*GREEKCAPITALLETTEREPSILONWITHTONOS*/
- /* 185 */ 905,/*GREEKCAPITALLETTERETAWITHTONOS*/
- /* 186 */ 906,/*GREEKCAPITALLETTERIOTAWITHTONOS*/
- 187,
- /* 188 */ 908,/*GREEKCAPITALLETTEROMICRONWITHTONOS*/
- 189,
- /* 190 */ 910,/*GREEKCAPITALLETTERUPSILONWITHTONOS*/
- /* 191 */ 911,/*GREEKCAPITALLETTEROMEGAWITHTONOS*/
- /* 192 */ 912,/*GREEKSMALLLETTERIOTAWITHDIALYTIKAANDTONOS*/
- /* 193 */ 913,/*GREEKCAPITALLETTERALPHA*/
- /* 194 */ 914,/*GREEKCAPITALLETTERBETA*/
- /* 195 */ 915,/*GREEKCAPITALLETTERGAMMA*/
- /* 196 */ 916,/*GREEKCAPITALLETTERDELTA*/
- /* 197 */ 917,/*GREEKCAPITALLETTEREPSILON*/
- /* 198 */ 918,/*GREEKCAPITALLETTERZETA*/
- /* 199 */ 919,/*GREEKCAPITALLETTERETA*/
- /* 200 */ 920,/*GREEKCAPITALLETTERTHETA*/
- /* 201 */ 921,/*GREEKCAPITALLETTERIOTA*/
- /* 202 */ 922,/*GREEKCAPITALLETTERKAPPA*/
- /* 203 */ 923,/*GREEKCAPITALLETTERLAMDA*/
- /* 204 */ 924,/*GREEKCAPITALLETTERMU*/
- /* 205 */ 925,/*GREEKCAPITALLETTERNU*/
- /* 206 */ 926,/*GREEKCAPITALLETTERXI*/
- /* 207 */ 927,/*GREEKCAPITALLETTEROMICRON*/
- /* 208 */ 928,/*GREEKCAPITALLETTERPI*/
- /* 209 */ 929,/*GREEKCAPITALLETTERRHO*/
- 210,
- /* 211 */ 931,/*GREEKCAPITALLETTERSIGMA*/
- /* 212 */ 932,/*GREEKCAPITALLETTERTAU*/
- /* 213 */ 933,/*GREEKCAPITALLETTERUPSILON*/
- /* 214 */ 934,/*GREEKCAPITALLETTERPHI*/
- /* 215 */ 935,/*GREEKCAPITALLETTERCHI*/
- /* 216 */ 936,/*GREEKCAPITALLETTERPSI*/
- /* 217 */ 937,/*GREEKCAPITALLETTEROMEGA*/
- /* 218 */ 938,/*GREEKCAPITALLETTERIOTAWITHDIALYTIKA*/
- /* 219 */ 939,/*GREEKCAPITALLETTERUPSILONWITHDIALYTIKA*/
- /* 220 */ 940,/*GREEKSMALLLETTERALPHAWITHTONOS*/
- /* 221 */ 941,/*GREEKSMALLLETTEREPSILONWITHTONOS*/
- /* 222 */ 942,/*GREEKSMALLLETTERETAWITHTONOS*/
- /* 223 */ 943,/*GREEKSMALLLETTERIOTAWITHTONOS*/
- /* 224 */ 944,/*GREEKSMALLLETTERUPSILONWITHDIALYTIKAANDTONOS*/
- /* 225 */ 945,/*GREEKSMALLLETTERALPHA*/
- /* 226 */ 946,/*GREEKSMALLLETTERBETA*/
- /* 227 */ 947,/*GREEKSMALLLETTERGAMMA*/
- /* 228 */ 948,/*GREEKSMALLLETTERDELTA*/
- /* 229 */ 949,/*GREEKSMALLLETTEREPSILON*/
- /* 230 */ 950,/*GREEKSMALLLETTERZETA*/
- /* 231 */ 951,/*GREEKSMALLLETTERETA*/
- /* 232 */ 952,/*GREEKSMALLLETTERTHETA*/
- /* 233 */ 953,/*GREEKSMALLLETTERIOTA*/
- /* 234 */ 954,/*GREEKSMALLLETTERKAPPA*/
- /* 235 */ 955,/*GREEKSMALLLETTERLAMDA*/
- /* 236 */ 956,/*GREEKSMALLLETTERMU*/
- /* 237 */ 957,/*GREEKSMALLLETTERNU*/
- /* 238 */ 958,/*GREEKSMALLLETTERXI*/
- /* 239 */ 959,/*GREEKSMALLLETTEROMICRON*/
- /* 240 */ 960,/*GREEKSMALLLETTERPI*/
- /* 241 */ 961,/*GREEKSMALLLETTERRHO*/
- /* 242 */ 962,/*GREEKSMALLLETTERFINALSIGMA*/
- /* 243 */ 963,/*GREEKSMALLLETTERSIGMA*/
- /* 244 */ 964,/*GREEKSMALLLETTERTAU*/
- /* 245 */ 965,/*GREEKSMALLLETTERUPSILON*/
- /* 246 */ 966,/*GREEKSMALLLETTERPHI*/
- /* 247 */ 967,/*GREEKSMALLLETTERCHI*/
- /* 248 */ 968,/*GREEKSMALLLETTERPSI*/
- /* 249 */ 969,/*GREEKSMALLLETTEROMEGA*/
- /* 250 */ 970,/*GREEKSMALLLETTERIOTAWITHDIALYTIKA*/
- /* 251 */ 971,/*GREEKSMALLLETTERUPSILONWITHDIALYTIKA*/
- /* 252 */ 972,/*GREEKSMALLLETTEROMICRONWITHTONOS*/
- /* 253 */ 973,/*GREEKSMALLLETTERUPSILONWITHTONOS*/
- /* 254 */ 974,/*GREEKSMALLLETTEROMEGAWITHTONOS*/
- 255
+static convert_t macromanian[] = {
+	{ 0, 0 },
+	{ 1, 1 },
+	{ 2, 2 },
+	{ 3, 3 },
+	{ 4, 4 },
+	{ 5, 5 },
+	{ 6, 6 },
+	{ 7, 7 },
+	{ 8, 8 },
+	{ 9, 9 },
+	{ 10, 10 },
+	{ 11, 11 },
+	{ 12, 12 },
+	{ 13, 13 },
+	{ 14, 14 },
+	{ 15, 15 },
+	{ 16, 16 },
+	{ 17, 17 },
+	{ 18, 18 },
+	{ 19, 19 },
+	{ 20, 20 },
+	{ 21, 21 },
+	{ 22, 22 },
+	{ 23, 23 },
+	{ 24, 24 },
+	{ 25, 25 },
+	{ 26, 26 },
+	{ 27, 27 },
+	{ 28, 28 },
+	{ 29, 29 },
+	{ 30, 30 },
+	{ 31, 31 },
+	{ 32, 32 },
+	{ 33, 33 },
+	{ 34, 34 },
+	{ 35, 35 },
+	{ 36, 36 },
+	{ 37, 37 },
+	{ 38, 38 },
+	{ 39, 39 },
+	{ 40, 40 },
+	{ 41, 41 },
+	{ 42, 42 },
+	{ 43, 43 },
+	{ 44, 44 },
+	{ 45, 45 },
+	{ 46, 46 },
+	{ 47, 47 },
+	{ 48, 48 },
+	{ 49, 49 },
+	{ 50, 50 },
+	{ 51, 51 },
+	{ 52, 52 },
+	{ 53, 53 },
+	{ 54, 54 },
+	{ 55, 55 },
+	{ 56, 56 },
+	{ 57, 57 },
+	{ 58, 58 },
+	{ 59, 59 },
+	{ 60, 60 },
+	{ 61, 61 },
+	{ 62, 62 },
+	{ 63, 63 },
+	{ 64, 64 },
+	{ 65, 65 },
+	{ 66, 66 },
+	{ 67, 67 },
+	{ 68, 68 },
+	{ 69, 69 },
+	{ 70, 70 },
+	{ 71, 71 },
+	{ 72, 72 },
+	{ 73, 73 },
+	{ 74, 74 },
+	{ 75, 75 },
+	{ 76, 76 },
+	{ 77, 77 },
+	{ 78, 78 },
+	{ 79, 79 },
+	{ 80, 80 },
+	{ 81, 81 },
+	{ 82, 82 },
+	{ 83, 83 },
+	{ 84, 84 },
+	{ 85, 85 },
+	{ 86, 86 },
+	{ 87, 87 },
+	{ 88, 88 },
+	{ 89, 89 },
+	{ 90, 90 },
+	{ 91, 91 },
+	{ 92, 92 },
+	{ 93, 93 },
+	{ 94, 94 },
+	{ 95, 95 },
+	{ 96, 96 },
+	{ 97, 97 },
+	{ 98, 98 },
+	{ 99, 99 },
+	{ 100, 100 },
+	{ 101, 101 },
+	{ 102, 102 },
+	{ 103, 103 },
+	{ 104, 104 },
+	{ 105, 105 },
+	{ 106, 106 },
+	{ 107, 107 },
+	{ 108, 108 },
+	{ 109, 109 },
+	{ 110, 110 },
+	{ 111, 111 },
+	{ 112, 112 },
+	{ 113, 113 },
+	{ 114, 114 },
+	{ 115, 115 },
+	{ 116, 116 },
+	{ 117, 117 },
+	{ 118, 118 },
+	{ 119, 119 },
+	{ 120, 120 },
+	{ 121, 121 },
+	{ 122, 122 },
+	{ 123, 123 },
+	{ 124, 124 },
+	{ 125, 125 },
+	{ 126, 126 },
+	{ 127, 127 },
+	{ 128, 196 },
+	{ 129, 197 },
+	{ 130, 199 },
+	{ 131, 201 },
+	{ 132, 209 },
+	{ 133, 214 },
+	{ 134, 220 },
+	{ 135, 225 },
+	{ 136, 224 },
+	{ 137, 226 },
+	{ 138, 228 },
+	{ 139, 227 },
+	{ 140, 229 },
+	{ 141, 231 },
+	{ 142, 233 },
+	{ 143, 232 },
+	{ 144, 234 },
+	{ 145, 235 },
+	{ 146, 237 },
+	{ 147, 236 },
+	{ 148, 238 },
+	{ 149, 239 },
+	{ 150, 241 },
+	{ 151, 243 },
+	{ 152, 242 },
+	{ 153, 244 },
+	{ 154, 246 },
+	{ 155, 245 },
+	{ 156, 250 },
+	{ 157, 249 },
+	{ 158, 251 },
+	{ 159, 252 },
+	{ 160, 8224 },
+	{ 161, 176 },
+	{ 162, 162 },
+	{ 163, 163 },
+	{ 164, 167 },
+	{ 165, 8729 },
+	{ 166, 182 },
+	{ 167, 223 },
+	{ 168, 174 },
+	{ 169, 169 },
+	{ 170, 8482 },
+	{ 171, 180 },
+	{ 172, 168 },
+	{ 173, 8800 },
+	{ 174, 258 },
+	{ 175, 350 },
+	{ 176, 8734 },
+	{ 177, 177 },
+	{ 178, 8804 },
+	{ 179, 8805 },
+	{ 180, 165 },
+	{ 181, 181 },
+	{ 182, 8706 },
+	{ 183, 8721 },
+	{ 184, 8719 },
+	{ 185, 960 },
+	{ 186, 8747 },
+	{ 187, 170 },
+	{ 188, 186 },
+	{ 189, 937 },
+	{ 190, 259 },
+	{ 191, 351 },
+	{ 192, 191 },
+	{ 193, 161 },
+	{ 194, 172 },
+	{ 195, 8730 },
+	{ 196, 402 },
+	{ 197, 8776 },
+	{ 198, 916 },
+	{ 199, 171 },
+	{ 200, 187 },
+	{ 201, 8943 },
+	{ 202, 160 },
+	{ 203, 192 },
+	{ 204, 195 },
+	{ 205, 213 },
+	{ 206, 338 },
+	{ 207, 339 },
+	{ 208, 8211 },
+	{ 209, 8212 },
+	{ 210, 8220 },
+	{ 211, 8221 },
+	{ 212, 8216 },
+	{ 213, 8217 },
+	{ 214, 247 },
+	{ 215, 9674 },
+	{ 216, 255 },
+	{ 217, 376 },
+	{ 218, 8260 },
+	{ 219, 164 },
+	{ 220, 8249 },
+	{ 221, 8250 },
+	{ 222, 354 },
+	{ 223, 355 },
+	{ 224, 8225 },
+	{ 225, 183 },
+	{ 226, 8218 },
+	{ 227, 8222 },
+	{ 228, 8240 },
+	{ 229, 194 },
+	{ 230, 202 },
+	{ 231, 193 },
+	{ 232, 203 },
+	{ 233, 200 },
+	{ 234, 205 },
+	{ 235, 206 },
+	{ 236, 207 },
+	{ 237, 204 },
+	{ 238, 211 },
+	{ 239, 212 },
+	{ 240, 65534 },
+	{ 241, 210 },
+	{ 242, 218 },
+	{ 243, 219 },
+	{ 244, 217 },
+	{ 245, 305 },
+	{ 246, 770 },
+	{ 247, 771 },
+	{ 248, 175 },
+	{ 249, 728 },
+	{ 250, 729 },
+	{ 251, 730 },
+	{ 252, 184 },
+	{ 253, 733 },
+	{ 254, 731 },
+	{ 255, 711 },
+	{ 32, 8194 },
+	{ 32, 8195 },
+	{ 32, 8201 },
+	{ 65, 256 },
+	{ 65, 260 },
+	{ 65, 461 },
+	{ 97, 257 },
+	{ 97, 261 },
+	{ 97, 462 },
+	{ 67, 262 },
+	{ 67, 264 },
+	{ 67, 266 },
+	{ 67, 268 },
+	{ 99, 263 },
+	{ 99, 265 },
+	{ 99, 267 },
+	{ 99, 269 },
+	{ 68, 270 },
+	{ 100, 271 },
+	{ 69, 274 },
+	{ 69, 276 },
+	{ 69, 278 },
+	{ 69, 280 },
+	{ 69, 282 },
+	{ 101, 275 },
+	{ 101, 277 },
+	{ 101, 279 },
+	{ 101, 281 },
+	{ 101, 283 },
+	{ 71, 284 },
+	{ 71, 286 },
+	{ 71, 288 },
+	{ 71, 290 },
+	{ 71, 486 },
+	{ 71, 500 },
+	{ 103, 285 },
+	{ 103, 287 },
+	{ 103, 289 },
+	{ 103, 291 },
+	{ 103, 487 },
+	{ 103, 501 },
+	{ 72, 292 },
+	{ 104, 293 },
+	{ 73, 296 },
+	{ 73, 298 },
+	{ 73, 300 },
+	{ 73, 302 },
+	{ 73, 304 },
+	{ 73, 463 },
+	{ 105, 297 },
+	{ 105, 299 },
+	{ 105, 301 },
+	{ 105, 303 },
+	{ 105, 464 },
+	{ 74, 308 },
+	{ 106, 309 },
+	{ 75, 310 },
+	{ 75, 488 },
+	{ 107, 311 },
+	{ 107, 489 },
+	{ 76, 313 },
+	{ 76, 315 },
+	{ 76, 317 },
+	{ 76, 319 },
+	{ 76, 321 },
+	{ 108, 314 },
+	{ 108, 316 },
+	{ 108, 318 },
+	{ 108, 320 },
+	{ 108, 322 },
+	{ 77, 323 },
+	{ 77, 325 },
+	{ 77, 327 },
+	{ 109, 324 },
+	{ 109, 326 },
+	{ 109, 328 },
+	{ 109, 329 },
+	{ 78, 216 },
+	{ 78, 332 },
+	{ 78, 334 },
+	{ 78, 336 },
+	{ 78, 465 },
+	{ 78, 490 },
+	{ 110, 248 },
+	{ 110, 333 },
+	{ 110, 335 },
+	{ 110, 337 },
+	{ 110, 466 },
+	{ 110, 491 },
+	{ 82, 340 },
+	{ 82, 342 },
+	{ 82, 344 },
+	{ 114, 341 },
+	{ 114, 343 },
+	{ 114, 345 },
+	{ 83, 346 },
+	{ 83, 348 },
+	{ 83, 352 },
+	{ 115, 347 },
+	{ 115, 349 },
+	{ 115, 353 },
+	{ 84, 356 },
+	{ 116, 357 },
+	{ 85, 360 },
+	{ 85, 362 },
+	{ 85, 364 },
+	{ 85, 366 },
+	{ 85, 368 },
+	{ 85, 370 },
+	{ 85, 467 },
+	{ 117, 361 },
+	{ 117, 363 },
+	{ 117, 365 },
+	{ 117, 367 },
+	{ 117, 369 },
+	{ 117, 371 },
+	{ 117, 468 },
+	{ 87, 372 },
+	{ 119, 373 },
+	{ 89, 221 },
+	{ 89, 374 },
+	{ 121, 253 },
+	{ 121, 375 },
+	{ 90, 377 },
+	{ 90, 379 },
+	{ 90, 381 },
+	{ 122, 378 },
+	{ 122, 380 },
+	{ 122, 382 },
 };
-charconvert appleice[] = {
- 0,
- 1,
- 2,
- 3,
- 4,
- 5,
- 6,
- 7,
- 8,
- 9,
- 10,
- 11,
- 12,
- 13,
- 14,
- 15,
- 16,
- 17,
- 18,
- 19,
- 20,
- 21,
- 22,
- 23,
- 24,
- 25,
- 26,
- 27,
- 28,
- 29,
- 30,
- 31,
- /* 32 */ 32,/*SPACE*/
- /* 33 */ 33,/*EXCLAMATIONMARK*/
- /* 34 */ 34,/*QUOTATIONMARK*/
- /* 35 */ 35,/*NUMBERSIGN*/
- /* 36 */ 36,/*DOLLARSIGN*/
- /* 37 */ 37,/*PERCENTSIGN*/
- /* 38 */ 38,/*AMPERSAND*/
- /* 39 */ 39,/*APOSTROPHE*/
- /* 40 */ 40,/*LEFTPARENTHESIS*/
- /* 41 */ 41,/*RIGHTPARENTHESIS*/
- /* 42 */ 42,/*ASTERISK*/
- /* 43 */ 43,/*PLUSSIGN*/
- /* 44 */ 44,/*COMMA*/
- /* 45 */ 45,/*HYPHEN-MINUS*/
- /* 46 */ 46,/*FULLSTOP*/
- /* 47 */ 47,/*SOLIDUS*/
- /* 48 */ 48,/*DIGITZERO*/
- /* 49 */ 49,/*DIGITONE*/
- /* 50 */ 50,/*DIGITTWO*/
- /* 51 */ 51,/*DIGITTHREE*/
- /* 52 */ 52,/*DIGITFOUR*/
- /* 53 */ 53,/*DIGITFIVE*/
- /* 54 */ 54,/*DIGITSIX*/
- /* 55 */ 55,/*DIGITSEVEN*/
- /* 56 */ 56,/*DIGITEIGHT*/
- /* 57 */ 57,/*DIGITNINE*/
- /* 58 */ 58,/*COLON*/
- /* 59 */ 59,/*SEMICOLON*/
- /* 60 */ 60,/*LESS-THANSIGN*/
- /* 61 */ 61,/*EQUALSSIGN*/
- /* 62 */ 62,/*GREATER-THANSIGN*/
- /* 63 */ 63,/*QUESTIONMARK*/
- /* 64 */ 64,/*COMMERCIALAT*/
- /* 65 */ 65,/*LATINCAPITALLETTERA*/
- /* 66 */ 66,/*LATINCAPITALLETTERB*/
- /* 67 */ 67,/*LATINCAPITALLETTERC*/
- /* 68 */ 68,/*LATINCAPITALLETTERD*/
- /* 69 */ 69,/*LATINCAPITALLETTERE*/
- /* 70 */ 70,/*LATINCAPITALLETTERF*/
- /* 71 */ 71,/*LATINCAPITALLETTERG*/
- /* 72 */ 72,/*LATINCAPITALLETTERH*/
- /* 73 */ 73,/*LATINCAPITALLETTERI*/
- /* 74 */ 74,/*LATINCAPITALLETTERJ*/
- /* 75 */ 75,/*LATINCAPITALLETTERK*/
- /* 76 */ 76,/*LATINCAPITALLETTERL*/
- /* 77 */ 77,/*LATINCAPITALLETTERM*/
- /* 78 */ 78,/*LATINCAPITALLETTERN*/
- /* 79 */ 79,/*LATINCAPITALLETTERO*/
- /* 80 */ 80,/*LATINCAPITALLETTERP*/
- /* 81 */ 81,/*LATINCAPITALLETTERQ*/
- /* 82 */ 82,/*LATINCAPITALLETTERR*/
- /* 83 */ 83,/*LATINCAPITALLETTERS*/
- /* 84 */ 84,/*LATINCAPITALLETTERT*/
- /* 85 */ 85,/*LATINCAPITALLETTERU*/
- /* 86 */ 86,/*LATINCAPITALLETTERV*/
- /* 87 */ 87,/*LATINCAPITALLETTERW*/
- /* 88 */ 88,/*LATINCAPITALLETTERX*/
- /* 89 */ 89,/*LATINCAPITALLETTERY*/
- /* 90 */ 90,/*LATINCAPITALLETTERZ*/
- /* 91 */ 91,/*LEFTSQUAREBRACKET*/
- /* 92 */ 92,/*REVERSESOLIDUS*/
- /* 93 */ 93,/*RIGHTSQUAREBRACKET*/
- /* 94 */ 94,/*CIRCUMFLEXACCENT*/
- /* 95 */ 95,/*LOWLINE*/
- /* 96 */ 96,/*GRAVEACCENT*/
- /* 97 */ 97,/*LATINSMALLLETTERA*/
- /* 98 */ 98,/*LATINSMALLLETTERB*/
- /* 99 */ 99,/*LATINSMALLLETTERC*/
- /* 100 */ 100,/*LATINSMALLLETTERD*/
- /* 101 */ 101,/*LATINSMALLLETTERE*/
- /* 102 */ 102,/*LATINSMALLLETTERF*/
- /* 103 */ 103,/*LATINSMALLLETTERG*/
- /* 104 */ 104,/*LATINSMALLLETTERH*/
- /* 105 */ 105,/*LATINSMALLLETTERI*/
- /* 106 */ 106,/*LATINSMALLLETTERJ*/
- /* 107 */ 107,/*LATINSMALLLETTERK*/
- /* 108 */ 108,/*LATINSMALLLETTERL*/
- /* 109 */ 109,/*LATINSMALLLETTERM*/
- /* 110 */ 110,/*LATINSMALLLETTERN*/
- /* 111 */ 111,/*LATINSMALLLETTERO*/
- /* 112 */ 112,/*LATINSMALLLETTERP*/
- /* 113 */ 113,/*LATINSMALLLETTERQ*/
- /* 114 */ 114,/*LATINSMALLLETTERR*/
- /* 115 */ 115,/*LATINSMALLLETTERS*/
- /* 116 */ 116,/*LATINSMALLLETTERT*/
- /* 117 */ 117,/*LATINSMALLLETTERU*/
- /* 118 */ 118,/*LATINSMALLLETTERV*/
- /* 119 */ 119,/*LATINSMALLLETTERW*/
- /* 120 */ 120,/*LATINSMALLLETTERX*/
- /* 121 */ 121,/*LATINSMALLLETTERY*/
- /* 122 */ 122,/*LATINSMALLLETTERZ*/
- /* 123 */ 123,/*LEFTCURLYBRACKET*/
- /* 124 */ 124,/*VERTICALLINE*/
- /* 125 */ 125,/*RIGHTCURLYBRACKET*/
- /* 126 */ 126,/*TILDE*/
- 127,
- /* 128 */ 196,/*LATINCAPITALLETTERAWITHDIAERESIS*/
- /* 129 */ 197,/*LATINCAPITALLETTERAWITHRINGABOVE*/
- /* 130 */ 199,/*LATINCAPITALLETTERCWITHCEDILLA*/
- /* 131 */ 201,/*LATINCAPITALLETTEREWITHACUTE*/
- /* 132 */ 209,/*LATINCAPITALLETTERNWITHTILDE*/
- /* 133 */ 214,/*LATINCAPITALLETTEROWITHDIAERESIS*/
- /* 134 */ 220,/*LATINCAPITALLETTERUWITHDIAERESIS*/
- /* 135 */ 225,/*LATINSMALLLETTERAWITHACUTE*/
- /* 136 */ 224,/*LATINSMALLLETTERAWITHGRAVE*/
- /* 137 */ 226,/*LATINSMALLLETTERAWITHCIRCUMFLEX*/
- /* 138 */ 228,/*LATINSMALLLETTERAWITHDIAERESIS*/
- /* 139 */ 227,/*LATINSMALLLETTERAWITHTILDE*/
- /* 140 */ 229,/*LATINSMALLLETTERAWITHRINGABOVE*/
- /* 141 */ 231,/*LATINSMALLLETTERCWITHCEDILLA*/
- /* 142 */ 233,/*LATINSMALLLETTEREWITHACUTE*/
- /* 143 */ 232,/*LATINSMALLLETTEREWITHGRAVE*/
- /* 144 */ 234,/*LATINSMALLLETTEREWITHCIRCUMFLEX*/
- /* 145 */ 235,/*LATINSMALLLETTEREWITHDIAERESIS*/
- /* 146 */ 237,/*LATINSMALLLETTERIWITHACUTE*/
- /* 147 */ 236,/*LATINSMALLLETTERIWITHGRAVE*/
- /* 148 */ 238,/*LATINSMALLLETTERIWITHCIRCUMFLEX*/
- /* 149 */ 239,/*LATINSMALLLETTERIWITHDIAERESIS*/
- /* 150 */ 241,/*LATINSMALLLETTERNWITHTILDE*/
- /* 151 */ 243,/*LATINSMALLLETTEROWITHACUTE*/
- /* 152 */ 242,/*LATINSMALLLETTEROWITHGRAVE*/
- /* 153 */ 244,/*LATINSMALLLETTEROWITHCIRCUMFLEX*/
- /* 154 */ 246,/*LATINSMALLLETTEROWITHDIAERESIS*/
- /* 155 */ 245,/*LATINSMALLLETTEROWITHTILDE*/
- /* 156 */ 250,/*LATINSMALLLETTERUWITHACUTE*/
- /* 157 */ 249,/*LATINSMALLLETTERUWITHGRAVE*/
- /* 158 */ 251,/*LATINSMALLLETTERUWITHCIRCUMFLEX*/
- /* 159 */ 252,/*LATINSMALLLETTERUWITHDIAERESIS*/
- /* 160 */ 221,/*LATINCAPITALLETTERYWITHACUTE*/
- /* 161 */ 176,/*DEGREESIGN*/
- /* 162 */ 162,/*CENTSIGN*/
- /* 163 */ 163,/*POUNDSIGN*/
- /* 164 */ 167,/*SECTIONSIGN*/
- /* 165 */ 8729,/*BULLETOPERATOR*/
- /* 166 */ 182,/*PILCROWSIGN*/
- /* 167 */ 223,/*LATINSMALLLETTERSHARPS*/
- /* 168 */ 174,/*REGISTEREDSIGN*/
- /* 169 */ 169,/*COPYRIGHTSIGN*/
- /* 170 */ 8482,/*TRADEMARKSIGN*/
- /* 171 */ 180,/*ACUTEACCENT*/
- /* 172 */ 168,/*DIAERESIS*/
- /* 173 */ 8800,/*NOTEQUALTO*/
- /* 174 */ 198,/*LATINCAPITALLETTERAE*/
- /* 175 */ 216,/*LATINCAPITALLETTEROWITHSTROKE*/
- /* 176 */ 8734,/*INFINITY*/
- /* 177 */ 177,/*PLUS-MINUSSIGN*/
- /* 178 */ 8804,/*LESS-THANOREQUALTO*/
- /* 179 */ 8805,/*GREATER-THANOREQUALTO*/
- /* 180 */ 165,/*YENSIGN*/
- /* 181 */ 181,/*MICROSIGN*/
- /* 182 */ 8706,/*PARTIALDIFFERENTIAL*/
- /* 183 */ 8721,/*N-ARYSUMMATION*/
- /* 184 */ 8719,/*N-ARYPRODUCT*/
- /* 185 */ 960,/*GREEKSMALLLETTERPI*/
- /* 186 */ 8747,/*INTEGRAL*/
- /* 187 */ 170,/*FEMININEORDINALINDICATOR*/
- /* 188 */ 186,/*MASCULINEORDINALINDICATOR*/
- /* 189 */ 937,/*GREEKCAPITALLETTEROMEGA*/
- /* 190 */ 230,/*LATINSMALLLETTERAE*/
- /* 191 */ 248,/*LATINSMALLLETTEROWITHSTROKE*/
- /* 192 */ 191,/*INVERTEDQUESTIONMARK*/
- /* 193 */ 161,/*INVERTEDEXCLAMATIONMARK*/
- /* 194 */ 172,/*NOTSIGN*/
- /* 195 */ 8730,/*SQUAREROOT*/
- /* 196 */ 402,/*LATINSMALLLETTERFWITHHOOK*/
- /* 197 */ 8776,/*ALMOSTEQUALTO*/
- /* 198 */ 916,/*GREEKCAPITALLETTERDELTA*/
- /* 199 */ 171,/*LEFT-POINTINGDOUBLEANGLEQUOTATIONMARK*/
- /* 200 */ 187,/*RIGHT-POINTINGDOUBLEANGLEQUOTATIONMARK*/
- /* 201 */ 8943,/*MIDLINEHORIZONTALELLIPSIS*/
- /* 202 */ 160,/*NO-BREAKSPACE*/
- /* 203 */ 192,/*LATINCAPITALLETTERAWITHGRAVE*/
- /* 204 */ 195,/*LATINCAPITALLETTERAWITHTILDE*/
- /* 205 */ 213,/*LATINCAPITALLETTEROWITHTILDE*/
- /* 206 */ 338,/*LATINCAPITALLIGATUREOE*/
- /* 207 */ 339,/*LATINSMALLLIGATUREOE*/
- /* 208 */ 8211,/*ENDASH*/
- /* 209 */ 8212,/*EMDASH*/
- /* 210 */ 8220,/*LEFTDOUBLEQUOTATIONMARK*/
- /* 211 */ 8221,/*RIGHTDOUBLEQUOTATIONMARK*/
- /* 212 */ 8216,/*LEFTSINGLEQUOTATIONMARK*/
- /* 213 */ 8217,/*RIGHTSINGLEQUOTATIONMARK*/
- /* 214 */ 247,/*DIVISIONSIGN*/
- /* 215 */ 9674,/*LOZENGE*/
- /* 216 */ 255,/*LATINSMALLLETTERYWITHDIAERESIS*/
- /* 217 */ 376,/*LATINCAPITALLETTERYWITHDIAERESIS*/
- /* 218 */ 8260,/*FRACTIONSLASH*/
- /* 219 */ 164,/*CURRENCYSIGN*/
- /* 220 */ 208,/*LATINCAPITALLETTERETH*/
- /* 221 */ 240,/*LATINSMALLLETTERETH*/
- /* 222 */ 222,/*LATINCAPITALLETTERTHORN*/
- /* 223 */ 254,/*LATINSMALLLETTERTHORN*/
- /* 224 */ 253,/*LATINSMALLLETTERYWITHACUTE*/
- /* 225 */ 183,/*MIDDLEDOT*/
- /* 226 */ 8218,/*SINGLELOW-9QUOTATIONMARK*/
- /* 227 */ 8222,/*DOUBLELOW-9QUOTATIONMARK*/
- /* 228 */ 8240,/*PERMILLESIGN*/
- /* 229 */ 194,/*LATINCAPITALLETTERAWITHCIRCUMFLEX*/
- /* 230 */ 202,/*LATINCAPITALLETTEREWITHCIRCUMFLEX*/
- /* 231 */ 193,/*LATINCAPITALLETTERAWITHACUTE*/
- /* 232 */ 203,/*LATINCAPITALLETTEREWITHDIAERESIS*/
- /* 233 */ 200,/*LATINCAPITALLETTEREWITHGRAVE*/
- /* 234 */ 205,/*LATINCAPITALLETTERIWITHACUTE*/
- /* 235 */ 206,/*LATINCAPITALLETTERIWITHCIRCUMFLEX*/
- /* 236 */ 207,/*LATINCAPITALLETTERIWITHDIAERESIS*/
- /* 237 */ 204,/*LATINCAPITALLETTERIWITHGRAVE*/
- /* 238 */ 211,/*LATINCAPITALLETTEROWITHACUTE*/
- /* 239 */ 212,/*LATINCAPITALLETTEROWITHCIRCUMFLEX*/
- /* 240 */ 65534,/*APPLELOGO*/
- /* 241 */ 210,/*LATINCAPITALLETTEROWITHGRAVE*/
- /* 242 */ 218,/*LATINCAPITALLETTERUWITHACUTE*/
- /* 243 */ 219,/*LATINCAPITALLETTERUWITHCIRCUMFLEX*/
- /* 244 */ 217,/*LATINCAPITALLETTERUWITHGRAVE*/
- /* 245 */ 305,/*LATINSMALLLETTERDOTLESSI*/
- /* 246 */ 770,/*COMBININGCIRCUMFLEXACCENT*/
- /* 247 */ 771,/*COMBININGTILDE*/
- /* 248 */ 175,/*MACRON*/
- /* 249 */ 728,/*BREVE*/
- /* 250 */ 729,/*DOTABOVE*/
- /* 251 */ 730,/*RINGABOVE*/
- /* 252 */ 184,/*CEDILLA*/
- /* 253 */ 733,/*DOUBLEACUTEACCENT*/
- /* 254 */ 731,/*OGONEK*/
- /* 255 */ 711/*CARON*/
+static convert_t macturkish[] = {
+	{ 0, 0 },
+	{ 1, 1 },
+	{ 2, 2 },
+	{ 3, 3 },
+	{ 4, 4 },
+	{ 5, 5 },
+	{ 6, 6 },
+	{ 7, 7 },
+	{ 8, 8 },
+	{ 9, 9 },
+	{ 10, 10 },
+	{ 11, 11 },
+	{ 12, 12 },
+	{ 13, 13 },
+	{ 14, 14 },
+	{ 15, 15 },
+	{ 16, 16 },
+	{ 17, 17 },
+	{ 18, 18 },
+	{ 19, 19 },
+	{ 20, 20 },
+	{ 21, 21 },
+	{ 22, 22 },
+	{ 23, 23 },
+	{ 24, 24 },
+	{ 25, 25 },
+	{ 26, 26 },
+	{ 27, 27 },
+	{ 28, 28 },
+	{ 29, 29 },
+	{ 30, 30 },
+	{ 31, 31 },
+	{ 32, 32 },
+	{ 33, 33 },
+	{ 34, 34 },
+	{ 35, 35 },
+	{ 36, 36 },
+	{ 37, 37 },
+	{ 38, 38 },
+	{ 39, 39 },
+	{ 40, 40 },
+	{ 41, 41 },
+	{ 42, 42 },
+	{ 43, 43 },
+	{ 44, 44 },
+	{ 45, 45 },
+	{ 46, 46 },
+	{ 47, 47 },
+	{ 48, 48 },
+	{ 49, 49 },
+	{ 50, 50 },
+	{ 51, 51 },
+	{ 52, 52 },
+	{ 53, 53 },
+	{ 54, 54 },
+	{ 55, 55 },
+	{ 56, 56 },
+	{ 57, 57 },
+	{ 58, 58 },
+	{ 59, 59 },
+	{ 60, 60 },
+	{ 61, 61 },
+	{ 62, 62 },
+	{ 63, 63 },
+	{ 64, 64 },
+	{ 65, 65 },
+	{ 66, 66 },
+	{ 67, 67 },
+	{ 68, 68 },
+	{ 69, 69 },
+	{ 70, 70 },
+	{ 71, 71 },
+	{ 72, 72 },
+	{ 73, 73 },
+	{ 74, 74 },
+	{ 75, 75 },
+	{ 76, 76 },
+	{ 77, 77 },
+	{ 78, 78 },
+	{ 79, 79 },
+	{ 80, 80 },
+	{ 81, 81 },
+	{ 82, 82 },
+	{ 83, 83 },
+	{ 84, 84 },
+	{ 85, 85 },
+	{ 86, 86 },
+	{ 87, 87 },
+	{ 88, 88 },
+	{ 89, 89 },
+	{ 90, 90 },
+	{ 91, 91 },
+	{ 92, 92 },
+	{ 93, 93 },
+	{ 94, 94 },
+	{ 95, 95 },
+	{ 96, 96 },
+	{ 97, 97 },
+	{ 98, 98 },
+	{ 99, 99 },
+	{ 100, 100 },
+	{ 101, 101 },
+	{ 102, 102 },
+	{ 103, 103 },
+	{ 104, 104 },
+	{ 105, 105 },
+	{ 106, 106 },
+	{ 107, 107 },
+	{ 108, 108 },
+	{ 109, 109 },
+	{ 110, 110 },
+	{ 111, 111 },
+	{ 112, 112 },
+	{ 113, 113 },
+	{ 114, 114 },
+	{ 115, 115 },
+	{ 116, 116 },
+	{ 117, 117 },
+	{ 118, 118 },
+	{ 119, 119 },
+	{ 120, 120 },
+	{ 121, 121 },
+	{ 122, 122 },
+	{ 123, 123 },
+	{ 124, 124 },
+	{ 125, 125 },
+	{ 126, 126 },
+	{ 127, 127 },
+	{ 128, 196 },
+	{ 129, 197 },
+	{ 130, 199 },
+	{ 131, 201 },
+	{ 132, 209 },
+	{ 133, 214 },
+	{ 134, 220 },
+	{ 135, 225 },
+	{ 136, 224 },
+	{ 137, 226 },
+	{ 138, 228 },
+	{ 139, 227 },
+	{ 140, 229 },
+	{ 141, 231 },
+	{ 142, 233 },
+	{ 143, 232 },
+	{ 144, 234 },
+	{ 145, 235 },
+	{ 146, 237 },
+	{ 147, 236 },
+	{ 148, 238 },
+	{ 149, 239 },
+	{ 150, 241 },
+	{ 151, 243 },
+	{ 152, 242 },
+	{ 153, 244 },
+	{ 154, 246 },
+	{ 155, 245 },
+	{ 156, 250 },
+	{ 157, 249 },
+	{ 158, 251 },
+	{ 159, 252 },
+	{ 160, 8224 },
+	{ 161, 176 },
+	{ 162, 162 },
+	{ 163, 163 },
+	{ 164, 167 },
+	{ 165, 8729 },
+	{ 166, 182 },
+	{ 167, 223 },
+	{ 168, 174 },
+	{ 169, 169 },
+	{ 170, 8482 },
+	{ 171, 180 },
+	{ 172, 168 },
+	{ 173, 8800 },
+	{ 174, 198 },
+	{ 175, 216 },
+	{ 176, 8734 },
+	{ 177, 177 },
+	{ 178, 8804 },
+	{ 179, 8805 },
+	{ 180, 165 },
+	{ 181, 181 },
+	{ 182, 8706 },
+	{ 183, 8721 },
+	{ 184, 8719 },
+	{ 185, 960 },
+	{ 186, 8747 },
+	{ 187, 170 },
+	{ 188, 186 },
+	{ 189, 937 },
+	{ 190, 230 },
+	{ 191, 248 },
+	{ 192, 191 },
+	{ 193, 161 },
+	{ 194, 172 },
+	{ 195, 8730 },
+	{ 196, 402 },
+	{ 197, 8776 },
+	{ 198, 916 },
+	{ 199, 171 },
+	{ 200, 187 },
+	{ 201, 8943 },
+	{ 202, 160 },
+	{ 203, 192 },
+	{ 204, 195 },
+	{ 205, 213 },
+	{ 206, 338 },
+	{ 207, 339 },
+	{ 208, 8211 },
+	{ 209, 8212 },
+	{ 210, 8220 },
+	{ 211, 8221 },
+	{ 212, 8216 },
+	{ 213, 8217 },
+	{ 214, 247 },
+	{ 215, 9674 },
+	{ 216, 255 },
+	{ 217, 376 },
+	{ 218, 286 },
+	{ 219, 287 },
+	{ 220, 304 },
+	{ 221, 305 },
+	{ 222, 350 },
+	{ 223, 351 },
+	{ 224, 8225 },
+	{ 225, 183 },
+	{ 226, 8218 },
+	{ 227, 8222 },
+	{ 228, 8240 },
+	{ 229, 194 },
+	{ 230, 202 },
+	{ 231, 193 },
+	{ 232, 203 },
+	{ 233, 200 },
+	{ 234, 205 },
+	{ 235, 206 },
+	{ 236, 207 },
+	{ 237, 204 },
+	{ 238, 211 },
+	{ 239, 212 },
+	{ 240, 65534 },
+	{ 241, 210 },
+	{ 242, 218 },
+	{ 243, 219 },
+	{ 244, 217 },
+	{ 245, 245 },
+	{ 246, 770 },
+	{ 247, 771 },
+	{ 248, 175 },
+	{ 249, 728 },
+	{ 250, 729 },
+	{ 251, 730 },
+	{ 252, 184 },
+	{ 253, 733 },
+	{ 254, 731 },
+	{ 255, 711 },
+	{ 32, 8194 },
+	{ 32, 8195 },
+	{ 32, 8201 },
+	{ 65, 256 },
+	{ 65, 258 },
+	{ 65, 260 },
+	{ 65, 461 },
+	{ 97, 257 },
+	{ 97, 259 },
+	{ 97, 261 },
+	{ 97, 462 },
+	{ 67, 262 },
+	{ 67, 264 },
+	{ 67, 266 },
+	{ 67, 268 },
+	{ 99, 263 },
+	{ 99, 265 },
+	{ 99, 267 },
+	{ 99, 269 },
+	{ 68, 270 },
+	{ 100, 271 },
+	{ 69, 274 },
+	{ 69, 276 },
+	{ 69, 278 },
+	{ 69, 280 },
+	{ 69, 282 },
+	{ 101, 275 },
+	{ 101, 277 },
+	{ 101, 279 },
+	{ 101, 281 },
+	{ 101, 283 },
+	{ 71, 284 },
+	{ 71, 288 },
+	{ 71, 290 },
+	{ 71, 486 },
+	{ 71, 500 },
+	{ 103, 285 },
+	{ 103, 289 },
+	{ 103, 291 },
+	{ 103, 487 },
+	{ 103, 501 },
+	{ 72, 292 },
+	{ 104, 293 },
+	{ 73, 296 },
+	{ 73, 298 },
+	{ 73, 300 },
+	{ 73, 302 },
+	{ 73, 463 },
+	{ 105, 297 },
+	{ 105, 299 },
+	{ 105, 301 },
+	{ 105, 303 },
+	{ 105, 464 },
+	{ 74, 308 },
+	{ 106, 309 },
+	{ 75, 310 },
+	{ 75, 488 },
+	{ 107, 311 },
+	{ 107, 489 },
+	{ 76, 313 },
+	{ 76, 315 },
+	{ 76, 317 },
+	{ 76, 319 },
+	{ 76, 321 },
+	{ 108, 314 },
+	{ 108, 316 },
+	{ 108, 318 },
+	{ 108, 320 },
+	{ 108, 322 },
+	{ 77, 323 },
+	{ 77, 325 },
+	{ 77, 327 },
+	{ 109, 324 },
+	{ 109, 326 },
+	{ 109, 328 },
+	{ 109, 329 },
+	{ 78, 332 },
+	{ 78, 334 },
+	{ 78, 336 },
+	{ 78, 465 },
+	{ 78, 490 },
+	{ 110, 333 },
+	{ 110, 335 },
+	{ 110, 337 },
+	{ 110, 466 },
+	{ 110, 491 },
+	{ 82, 340 },
+	{ 82, 342 },
+	{ 82, 344 },
+	{ 114, 341 },
+	{ 114, 343 },
+	{ 114, 345 },
+	{ 83, 346 },
+	{ 83, 348 },
+	{ 83, 352 },
+	{ 115, 347 },
+	{ 115, 349 },
+	{ 115, 353 },
+	{ 84, 354 },
+	{ 84, 356 },
+	{ 116, 355 },
+	{ 116, 357 },
+	{ 85, 360 },
+	{ 85, 362 },
+	{ 85, 364 },
+	{ 85, 366 },
+	{ 85, 368 },
+	{ 85, 370 },
+	{ 85, 467 },
+	{ 117, 361 },
+	{ 117, 363 },
+	{ 117, 365 },
+	{ 117, 367 },
+	{ 117, 369 },
+	{ 117, 371 },
+	{ 117, 468 },
+	{ 87, 372 },
+	{ 119, 373 },
+	{ 89, 221 },
+	{ 89, 374 },
+	{ 121, 253 },
+	{ 121, 375 },
+	{ 90, 377 },
+	{ 90, 379 },
+	{ 90, 381 },
+	{ 122, 378 },
+	{ 122, 380 },
+	{ 122, 382 },
 };
-charconvert applerom[] = {
- /* 0 */ 0,/*<tdbgcolor="C0C0C0"><fontface="Arial"color="000000"><b>ISO/IEC10646-1:2000CharacterName</b></font>*/
- 1,
- 2,
- 3,
- 4,
- 5,
- 6,
- 7,
- 8,
- 9,
- 10,
- 11,
- 12,
- 13,
- 14,
- 15,
- 16,
- 17,
- 18,
- 19,
- 20,
- 21,
- 22,
- 23,
- 24,
- 25,
- 26,
- 27,
- 28,
- 29,
- 30,
- 31,
- /* 32 */ 32,/*SPACE*/
- /* 33 */ 33,/*EXCLAMATIONMARK*/
- /* 34 */ 34,/*QUOTATIONMARK*/
- /* 35 */ 35,/*NUMBERSIGN*/
- /* 36 */ 36,/*DOLLARSIGN*/
- /* 37 */ 37,/*PERCENTSIGN*/
- /* 38 */ 38,/*AMPERSAND*/
- /* 39 */ 39,/*APOSTROPHE*/
- /* 40 */ 40,/*LEFTPARENTHESIS*/
- /* 41 */ 41,/*RIGHTPARENTHESIS*/
- /* 42 */ 42,/*ASTERISK*/
- /* 43 */ 43,/*PLUSSIGN*/
- /* 44 */ 44,/*COMMA*/
- /* 45 */ 45,/*HYPHEN-MINUS*/
- /* 46 */ 46,/*FULLSTOP*/
- /* 47 */ 47,/*SOLIDUS*/
- /* 48 */ 48,/*DIGITZERO*/
- /* 49 */ 49,/*DIGITONE*/
- /* 50 */ 50,/*DIGITTWO*/
- /* 51 */ 51,/*DIGITTHREE*/
- /* 52 */ 52,/*DIGITFOUR*/
- /* 53 */ 53,/*DIGITFIVE*/
- /* 54 */ 54,/*DIGITSIX*/
- /* 55 */ 55,/*DIGITSEVEN*/
- /* 56 */ 56,/*DIGITEIGHT*/
- /* 57 */ 57,/*DIGITNINE*/
- /* 58 */ 58,/*COLON*/
- /* 59 */ 59,/*SEMICOLON*/
- /* 60 */ 60,/*LESS-THANSIGN*/
- /* 61 */ 61,/*EQUALSSIGN*/
- /* 62 */ 62,/*GREATER-THANSIGN*/
- /* 63 */ 63,/*QUESTIONMARK*/
- /* 64 */ 64,/*COMMERCIALAT*/
- /* 65 */ 65,/*LATINCAPITALLETTERA*/
- /* 66 */ 66,/*LATINCAPITALLETTERB*/
- /* 67 */ 67,/*LATINCAPITALLETTERC*/
- /* 68 */ 68,/*LATINCAPITALLETTERD*/
- /* 69 */ 69,/*LATINCAPITALLETTERE*/
- /* 70 */ 70,/*LATINCAPITALLETTERF*/
- /* 71 */ 71,/*LATINCAPITALLETTERG*/
- /* 72 */ 72,/*LATINCAPITALLETTERH*/
- /* 73 */ 73,/*LATINCAPITALLETTERI*/
- /* 74 */ 74,/*LATINCAPITALLETTERJ*/
- /* 75 */ 75,/*LATINCAPITALLETTERK*/
- /* 76 */ 76,/*LATINCAPITALLETTERL*/
- /* 77 */ 77,/*LATINCAPITALLETTERM*/
- /* 78 */ 78,/*LATINCAPITALLETTERN*/
- /* 79 */ 79,/*LATINCAPITALLETTERO*/
- /* 80 */ 80,/*LATINCAPITALLETTERP*/
- /* 81 */ 81,/*LATINCAPITALLETTERQ*/
- /* 82 */ 82,/*LATINCAPITALLETTERR*/
- /* 83 */ 83,/*LATINCAPITALLETTERS*/
- /* 84 */ 84,/*LATINCAPITALLETTERT*/
- /* 85 */ 85,/*LATINCAPITALLETTERU*/
- /* 86 */ 86,/*LATINCAPITALLETTERV*/
- /* 87 */ 87,/*LATINCAPITALLETTERW*/
- /* 88 */ 88,/*LATINCAPITALLETTERX*/
- /* 89 */ 89,/*LATINCAPITALLETTERY*/
- /* 90 */ 90,/*LATINCAPITALLETTERZ*/
- /* 91 */ 91,/*LEFTSQUAREBRACKET*/
- /* 92 */ 92,/*REVERSESOLIDUS*/
- /* 93 */ 93,/*RIGHTSQUAREBRACKET*/
- /* 94 */ 94,/*CIRCUMFLEXACCENT*/
- /* 95 */ 95,/*LOWLINE*/
- /* 96 */ 96,/*GRAVEACCENT*/
- /* 97 */ 97,/*LATINSMALLLETTERA*/
- /* 98 */ 98,/*LATINSMALLLETTERB*/
- /* 99 */ 99,/*LATINSMALLLETTERC*/
- /* 100 */ 100,/*LATINSMALLLETTERD*/
- /* 101 */ 101,/*LATINSMALLLETTERE*/
- /* 102 */ 102,/*LATINSMALLLETTERF*/
- /* 103 */ 103,/*LATINSMALLLETTERG*/
- /* 104 */ 104,/*LATINSMALLLETTERH*/
- /* 105 */ 105,/*LATINSMALLLETTERI*/
- /* 106 */ 106,/*LATINSMALLLETTERJ*/
- /* 107 */ 107,/*LATINSMALLLETTERK*/
- /* 108 */ 108,/*LATINSMALLLETTERL*/
- /* 109 */ 109,/*LATINSMALLLETTERM*/
- /* 110 */ 110,/*LATINSMALLLETTERN*/
- /* 111 */ 111,/*LATINSMALLLETTERO*/
- /* 112 */ 112,/*LATINSMALLLETTERP*/
- /* 113 */ 113,/*LATINSMALLLETTERQ*/
- /* 114 */ 114,/*LATINSMALLLETTERR*/
- /* 115 */ 115,/*LATINSMALLLETTERS*/
- /* 116 */ 116,/*LATINSMALLLETTERT*/
- /* 117 */ 117,/*LATINSMALLLETTERU*/
- /* 118 */ 118,/*LATINSMALLLETTERV*/
- /* 119 */ 119,/*LATINSMALLLETTERW*/
- /* 120 */ 120,/*LATINSMALLLETTERX*/
- /* 121 */ 121,/*LATINSMALLLETTERY*/
- /* 122 */ 122,/*LATINSMALLLETTERZ*/
- /* 123 */ 123,/*LEFTCURLYBRACKET*/
- /* 124 */ 124,/*VERTICALLINE*/
- /* 125 */ 125,/*RIGHTCURLYBRACKET*/
- /* 126 */ 126,/*TILDE*/
- 127,
- /* 128 */ 196,/*LATINCAPITALLETTERAWITHDIAERESIS*/
- /* 129 */ 197,/*LATINCAPITALLETTERAWITHRINGABOVE*/
- /* 130 */ 199,/*LATINCAPITALLETTERCWITHCEDILLA*/
- /* 131 */ 201,/*LATINCAPITALLETTEREWITHACUTE*/
- /* 132 */ 209,/*LATINCAPITALLETTERNWITHTILDE*/
- /* 133 */ 214,/*LATINCAPITALLETTEROWITHDIAERESIS*/
- /* 134 */ 220,/*LATINCAPITALLETTERUWITHDIAERESIS*/
- /* 135 */ 225,/*LATINSMALLLETTERAWITHACUTE*/
- /* 136 */ 224,/*LATINSMALLLETTERAWITHGRAVE*/
- /* 137 */ 226,/*LATINSMALLLETTERAWITHCIRCUMFLEX*/
- /* 138 */ 228,/*LATINSMALLLETTERAWITHDIAERESIS*/
- /* 139 */ 227,/*LATINSMALLLETTERAWITHTILDE*/
- /* 140 */ 229,/*LATINSMALLLETTERAWITHRINGABOVE*/
- /* 141 */ 231,/*LATINSMALLLETTERCWITHCEDILLA*/
- /* 142 */ 233,/*LATINSMALLLETTEREWITHACUTE*/
- /* 143 */ 232,/*LATINSMALLLETTEREWITHGRAVE*/
- /* 144 */ 234,/*LATINSMALLLETTEREWITHCIRCUMFLEX*/
- /* 145 */ 235,/*LATINSMALLLETTEREWITHDIAERESIS*/
- /* 146 */ 237,/*LATINSMALLLETTERIWITHACUTE*/
- /* 147 */ 236,/*LATINSMALLLETTERIWITHGRAVE*/
- /* 148 */ 238,/*LATINSMALLLETTERIWITHCIRCUMFLEX*/
- /* 149 */ 239,/*LATINSMALLLETTERIWITHDIAERESIS*/
- /* 150 */ 241,/*LATINSMALLLETTERNWITHTILDE*/
- /* 151 */ 243,/*LATINSMALLLETTEROWITHACUTE*/
- /* 152 */ 242,/*LATINSMALLLETTEROWITHGRAVE*/
- /* 153 */ 244,/*LATINSMALLLETTEROWITHCIRCUMFLEX*/
- /* 154 */ 246,/*LATINSMALLLETTEROWITHDIAERESIS*/
- /* 155 */ 245,/*LATINSMALLLETTEROWITHTILDE*/
- /* 156 */ 250,/*LATINSMALLLETTERUWITHACUTE*/
- /* 157 */ 249,/*LATINSMALLLETTERUWITHGRAVE*/
- /* 158 */ 251,/*LATINSMALLLETTERUWITHCIRCUMFLEX*/
- /* 159 */ 252,/*LATINSMALLLETTERUWITHDIAERESIS*/
- /* 160 */ 8224,/*DAGGER*/
- /* 161 */ 176,/*DEGREESIGN*/
- /* 162 */ 162,/*CENTSIGN*/
- /* 163 */ 163,/*POUNDSIGN*/
- /* 164 */ 167,/*SECTIONSIGN*/
- /* 165 */ 8729,/*BULLETOPERATOR*/
- /* 166 */ 182,/*PILCROWSIGN*/
- /* 167 */ 223,/*LATINSMALLLETTERSHARPS*/
- /* 168 */ 174,/*REGISTEREDSIGN*/
- /* 169 */ 169,/*COPYRIGHTSIGN*/
- /* 170 */ 8482,/*TRADEMARKSIGN*/
- /* 171 */ 180,/*ACUTEACCENT*/
- /* 172 */ 168,/*DIAERESIS*/
- /* 173 */ 8800,/*NOTEQUALTO*/
- /* 174 */ 198,/*LATINCAPITALLETTERAE*/
- /* 175 */ 216,/*LATINCAPITALLETTEROWITHSTROKE*/
- /* 176 */ 8734,/*INFINITY*/
- /* 177 */ 177,/*PLUS-MINUSSIGN*/
- /* 178 */ 8804,/*LESS-THANOREQUALTO*/
- /* 179 */ 8805,/*GREATER-THANOREQUALTO*/
- /* 180 */ 165,/*YENSIGN*/
- /* 181 */ 181,/*MICROSIGN*/
- /* 182 */ 8706,/*PARTIALDIFFERENTIAL*/
- /* 183 */ 8721,/*N-ARYSUMMATION*/
- /* 184 */ 8719,/*N-ARYPRODUCT*/
- /* 185 */ 960,/*GREEKSMALLLETTERPI*/
- /* 186 */ 8747,/*INTEGRAL*/
- /* 187 */ 170,/*FEMININEORDINALINDICATOR*/
- /* 188 */ 186,/*MASCULINEORDINALINDICATOR*/
- /* 189 */ 937,/*GREEKCAPITALLETTEROMEGA*/
- /* 190 */ 230,/*LATINSMALLLETTERAE*/
- /* 191 */ 248,/*LATINSMALLLETTEROWITHSTROKE*/
- /* 192 */ 191,/*INVERTEDQUESTIONMARK*/
- /* 193 */ 161,/*INVERTEDEXCLAMATIONMARK*/
- /* 194 */ 172,/*NOTSIGN*/
- /* 195 */ 8730,/*SQUAREROOT*/
- /* 196 */ 402,/*LATINSMALLLETTERFWITHHOOK*/
- /* 197 */ 8776,/*ALMOSTEQUALTO*/
- /* 198 */ 916,/*GREEKCAPITALLETTERDELTA*/
- /* 199 */ 171,/*LEFT-POINTINGDOUBLEANGLEQUOTATIONMARK*/
- /* 200 */ 187,/*RIGHT-POINTINGDOUBLEANGLEQUOTATIONMARK*/
- /* 201 */ 8943,/*MIDLINEHORIZONTALELLIPSIS*/
- /* 202 */ 160,/*NO-BREAKSPACE*/
- /* 203 */ 192,/*LATINCAPITALLETTERAWITHGRAVE*/
- /* 204 */ 195,/*LATINCAPITALLETTERAWITHTILDE*/
- /* 205 */ 213,/*LATINCAPITALLETTEROWITHTILDE*/
- /* 206 */ 338,/*LATINCAPITALLIGATUREOE*/
- /* 207 */ 339,/*LATINSMALLLIGATUREOE*/
- /* 208 */ 8211,/*ENDASH*/
- /* 209 */ 8212,/*EMDASH*/
- /* 210 */ 8220,/*LEFTDOUBLEQUOTATIONMARK*/
- /* 211 */ 8221,/*RIGHTDOUBLEQUOTATIONMARK*/
- /* 212 */ 8216,/*LEFTSINGLEQUOTATIONMARK*/
- /* 213 */ 8217,/*RIGHTSINGLEQUOTATIONMARK*/
- /* 214 */ 247,/*DIVISIONSIGN*/
- /* 215 */ 9674,/*LOZENGE*/
- /* 216 */ 255,/*LATINSMALLLETTERYWITHDIAERESIS*/
- /* 217 */ 376,/*LATINCAPITALLETTERYWITHDIAERESIS*/
- /* 218 */ 8260,/*FRACTIONSLASH*/
- /* 219 */ 164,/*CURRENCYSIGN*/
- /* 220 */ 8249,/*SINGLELEFT-POINTINGANGLEQUOTATIONMARK*/
- /* 221 */ 8250,/*SINGLERIGHT-POINTINGANGLEQUOTATIONMARK*/
- /* 222 */ 64257,/*LATINSMALLLIGATUREFI*/
- /* 223 */ 64258,/*LATINSMALLLIGATUREFL*/
- /* 224 */ 8225,/*DOUBLEDAGGER*/
- /* 225 */ 183,/*MIDDLEDOT*/
- /* 226 */ 8218,/*SINGLELOW-9QUOTATIONMARK*/
- /* 227 */ 8222,/*DOUBLELOW-9QUOTATIONMARK*/
- /* 228 */ 8240,/*PERMILLESIGN*/
- /* 229 */ 194,/*LATINCAPITALLETTERAWITHCIRCUMFLEX*/
- /* 230 */ 202,/*LATINCAPITALLETTEREWITHCIRCUMFLEX*/
- /* 231 */ 193,/*LATINCAPITALLETTERAWITHACUTE*/
- /* 232 */ 203,/*LATINCAPITALLETTEREWITHDIAERESIS*/
- /* 233 */ 200,/*LATINCAPITALLETTEREWITHGRAVE*/
- /* 234 */ 205,/*LATINCAPITALLETTERIWITHACUTE*/
- /* 235 */ 206,/*LATINCAPITALLETTERIWITHCIRCUMFLEX*/
- /* 236 */ 207,/*LATINCAPITALLETTERIWITHDIAERESIS*/
- /* 237 */ 204,/*LATINCAPITALLETTERIWITHGRAVE*/
- /* 238 */ 211,/*LATINCAPITALLETTEROWITHACUTE*/
- /* 239 */ 212,/*LATINCAPITALLETTEROWITHCIRCUMFLEX*/
- 240,
- /* 241 */ 210,/*LATINCAPITALLETTEROWITHGRAVE*/
- /* 242 */ 218,/*LATINCAPITALLETTERUWITHACUTE*/
- /* 243 */ 219,/*LATINCAPITALLETTERUWITHCIRCUMFLEX*/
- /* 244 */ 217,/*LATINCAPITALLETTERUWITHGRAVE*/
- /* 245 */ 305,/*LATINSMALLLETTERDOTLESSI*/
- /* 246 */ 770,/*COMBININGCIRCUMFLEXACCENT*/
- /* 247 */ 771,/*COMBININGTILDE*/
- /* 248 */ 175,/*MACRON*/
- /* 249 */ 728,/*BREVE*/
- /* 250 */ 729,/*DOTABOVE*/
- /* 251 */ 730,/*RINGABOVE*/
- /* 252 */ 184,/*CEDILLA*/
- /* 253 */ 733,/*DOUBLEACUTEACCENT*/
- /* 254 */ 731,/*OGONEK*/
- /* 255 */ 711/*CARON*/
+static convert_t atarist[] = {
+	{ 0, 0 },
+	{ 1, 1 },
+	{ 2, 2 },
+	{ 3, 3 },
+	{ 4, 4 },
+	{ 5, 5 },
+	{ 6, 6 },
+	{ 7, 7 },
+	{ 8, 8 },
+	{ 9, 9 },
+	{ 10, 10 },
+	{ 11, 11 },
+	{ 12, 12 },
+	{ 13, 13 },
+	{ 14, 14 },
+	{ 15, 15 },
+	{ 16, 16 },
+	{ 17, 17 },
+	{ 18, 18 },
+	{ 19, 19 },
+	{ 20, 20 },
+	{ 21, 21 },
+	{ 22, 22 },
+	{ 23, 23 },
+	{ 24, 24 },
+	{ 25, 25 },
+	{ 26, 26 },
+	{ 27, 27 },
+	{ 28, 28 },
+	{ 29, 29 },
+	{ 30, 30 },
+	{ 31, 31 },
+	{ 32, 32 },
+	{ 33, 33 },
+	{ 34, 34 },
+	{ 35, 35 },
+	{ 36, 36 },
+	{ 37, 37 },
+	{ 38, 38 },
+	{ 39, 39 },
+	{ 40, 40 },
+	{ 41, 41 },
+	{ 42, 42 },
+	{ 43, 43 },
+	{ 44, 44 },
+	{ 45, 45 },
+	{ 46, 46 },
+	{ 47, 47 },
+	{ 48, 48 },
+	{ 49, 49 },
+	{ 50, 50 },
+	{ 51, 51 },
+	{ 52, 52 },
+	{ 53, 53 },
+	{ 54, 54 },
+	{ 55, 55 },
+	{ 56, 56 },
+	{ 57, 57 },
+	{ 58, 58 },
+	{ 59, 59 },
+	{ 60, 60 },
+	{ 61, 61 },
+	{ 62, 62 },
+	{ 63, 63 },
+	{ 64, 64 },
+	{ 65, 65 },
+	{ 66, 66 },
+	{ 67, 67 },
+	{ 68, 68 },
+	{ 69, 69 },
+	{ 70, 70 },
+	{ 71, 71 },
+	{ 72, 72 },
+	{ 73, 73 },
+	{ 74, 74 },
+	{ 75, 75 },
+	{ 76, 76 },
+	{ 77, 77 },
+	{ 78, 78 },
+	{ 79, 79 },
+	{ 80, 80 },
+	{ 81, 81 },
+	{ 82, 82 },
+	{ 83, 83 },
+	{ 84, 84 },
+	{ 85, 85 },
+	{ 86, 86 },
+	{ 87, 87 },
+	{ 88, 88 },
+	{ 89, 89 },
+	{ 90, 90 },
+	{ 91, 91 },
+	{ 92, 92 },
+	{ 93, 93 },
+	{ 94, 94 },
+	{ 95, 95 },
+	{ 96, 96 },
+	{ 97, 97 },
+	{ 98, 98 },
+	{ 99, 99 },
+	{ 100, 100 },
+	{ 101, 101 },
+	{ 102, 102 },
+	{ 103, 103 },
+	{ 104, 104 },
+	{ 105, 105 },
+	{ 106, 106 },
+	{ 107, 107 },
+	{ 108, 108 },
+	{ 109, 109 },
+	{ 110, 110 },
+	{ 111, 111 },
+	{ 112, 112 },
+	{ 113, 113 },
+	{ 114, 114 },
+	{ 115, 115 },
+	{ 116, 116 },
+	{ 117, 117 },
+	{ 118, 118 },
+	{ 119, 119 },
+	{ 120, 120 },
+	{ 121, 121 },
+	{ 122, 122 },
+	{ 123, 123 },
+	{ 124, 124 },
+	{ 125, 125 },
+	{ 126, 126 },
+	{ 127, 127 },
+	{ 128, 199 },
+	{ 129, 252 },
+	{ 130, 233 },
+	{ 131, 226 },
+	{ 132, 228 },
+	{ 133, 224 },
+	{ 134, 229 },
+	{ 135, 231 },
+	{ 136, 234 },
+	{ 137, 235 },
+	{ 138, 232 },
+	{ 139, 239 },
+	{ 140, 238 },
+	{ 141, 236 },
+	{ 142, 196 },
+	{ 143, 197 },
+	{ 144, 201 },
+	{ 145, 230 },
+	{ 146, 198 },
+	{ 147, 244 },
+	{ 148, 246 },
+	{ 149, 242 },
+	{ 150, 251 },
+	{ 151, 249 },
+	{ 152, 255 },
+	{ 153, 214 },
+	{ 154, 220 },
+	{ 155, 162 },
+	{ 156, 163 },
+	{ 157, 165 },
+	{ 158, 223 },
+	{ 159, 402 },
+	{ 160, 225 },
+	{ 161, 237 },
+	{ 162, 243 },
+	{ 163, 250 },
+	{ 164, 241 },
+	{ 165, 209 },
+	{ 166, 170 },
+	{ 167, 186 },
+	{ 168, 191 },
+	{ 169, 8976 },
+	{ 170, 172 },
+	{ 171, 189 },
+	{ 172, 188 },
+	{ 173, 161 },
+	{ 174, 171 },
+	{ 175, 187 },
+	{ 176, 227 },
+	{ 177, 245 },
+	{ 178, 216 },
+	{ 179, 248 },
+	{ 180, 339 },
+	{ 181, 338 },
+	{ 182, 192 },
+	{ 183, 195 },
+	{ 184, 213 },
+	{ 185, 168 },
+	{ 186, 180 },
+	{ 187, 8224 },
+	{ 188, 182 },
+	{ 189, 169 },
+	{ 190, 174 },
+	{ 191, 8482 },
+	{ 192, 307 },
+	{ 193, 306 },
+	{ 194, 1488 },
+	{ 195, 1489 },
+	{ 196, 1490 },
+	{ 197, 1491 },
+	{ 198, 1492 },
+	{ 199, 1493 },
+	{ 200, 1494 },
+	{ 201, 1495 },
+	{ 202, 1496 },
+	{ 203, 1497 },
+	{ 204, 1499 },
+	{ 205, 1500 },
+	{ 206, 1502 },
+	{ 207, 1504 },
+	{ 208, 1505 },
+	{ 209, 1506 },
+	{ 210, 1508 },
+	{ 211, 1510 },
+	{ 212, 1511 },
+	{ 213, 1512 },
+	{ 214, 1513 },
+	{ 215, 1514 },
+	{ 216, 1503 },
+	{ 217, 1498 },
+	{ 218, 1501 },
+	{ 219, 1507 },
+	{ 220, 1509 },
+	{ 221, 167 },
+	{ 222, 8743 },
+	{ 223, 8734 },
+	{ 224, 945 },
+	{ 225, 946 },
+	{ 226, 915 },
+	{ 227, 960 },
+	{ 228, 931 },
+	{ 229, 963 },
+	{ 230, 181 },
+	{ 231, 964 },
+	{ 232, 934 },
+	{ 233, 920 },
+	{ 234, 937 },
+	{ 235, 948 },
+	{ 236, 8750 },
+	{ 237, 966 },
+	{ 238, 949 },
+	{ 239, 8745 },
+	{ 240, 8801 },
+	{ 241, 177 },
+	{ 242, 8805 },
+	{ 243, 8804 },
+	{ 244, 8992 },
+	{ 245, 8993 },
+	{ 246, 247 },
+	{ 247, 8776 },
+	{ 248, 176 },
+	{ 249, 8729 },
+	{ 250, 183 },
+	{ 251, 8730 },
+	{ 252, 8319 },
+	{ 253, 178 },
+	{ 254, 179 },
+	{ 255, 175 },
+	{ 34, 8220 },
+	{ 34, 8221 },
+	{ 39, 8216 },
+	{ 39, 8217 },
+	{ 45, 8211 },
+	{ 45, 8212 },
+	{ 32, 8194 },
+	{ 32, 8195 },
+	{ 32, 8201 },
+	{ 65, 193 },
+	{ 65, 194 },
+	{ 65, 256 },
+	{ 65, 258 },
+	{ 65, 260 },
+	{ 65, 461 },
+	{ 97, 257 },
+	{ 97, 259 },
+	{ 97, 261 },
+	{ 97, 462 },
+	{ 67, 262 },
+	{ 67, 264 },
+	{ 67, 266 },
+	{ 67, 268 },
+	{ 99, 263 },
+	{ 99, 265 },
+	{ 99, 267 },
+	{ 99, 269 },
+	{ 68, 270 },
+	{ 100, 271 },
+	{ 69, 200 },
+	{ 69, 202 },
+	{ 69, 203 },
+	{ 69, 274 },
+	{ 69, 276 },
+	{ 69, 278 },
+	{ 69, 280 },
+	{ 69, 282 },
+	{ 101, 275 },
+	{ 101, 277 },
+	{ 101, 279 },
+	{ 101, 281 },
+	{ 101, 283 },
+	{ 71, 284 },
+	{ 71, 286 },
+	{ 71, 288 },
+	{ 71, 290 },
+	{ 71, 486 },
+	{ 71, 500 },
+	{ 103, 285 },
+	{ 103, 287 },
+	{ 103, 289 },
+	{ 103, 291 },
+	{ 103, 487 },
+	{ 103, 501 },
+	{ 72, 292 },
+	{ 104, 293 },
+	{ 73, 204 },
+	{ 73, 205 },
+	{ 73, 206 },
+	{ 73, 207 },
+	{ 73, 296 },
+	{ 73, 298 },
+	{ 73, 300 },
+	{ 73, 302 },
+	{ 73, 304 },
+	{ 73, 463 },
+	{ 105, 297 },
+	{ 105, 299 },
+	{ 105, 301 },
+	{ 105, 303 },
+	{ 105, 305 },
+	{ 105, 464 },
+	{ 74, 308 },
+	{ 106, 309 },
+	{ 75, 310 },
+	{ 75, 488 },
+	{ 107, 311 },
+	{ 107, 489 },
+	{ 76, 313 },
+	{ 76, 315 },
+	{ 76, 317 },
+	{ 76, 319 },
+	{ 76, 321 },
+	{ 108, 314 },
+	{ 108, 316 },
+	{ 108, 318 },
+	{ 108, 320 },
+	{ 108, 322 },
+	{ 77, 323 },
+	{ 77, 325 },
+	{ 77, 327 },
+	{ 109, 324 },
+	{ 109, 326 },
+	{ 109, 328 },
+	{ 109, 329 },
+	{ 78, 210 },
+	{ 78, 211 },
+	{ 78, 212 },
+	{ 78, 332 },
+	{ 78, 334 },
+	{ 78, 336 },
+	{ 78, 465 },
+	{ 78, 490 },
+	{ 110, 333 },
+	{ 110, 335 },
+	{ 110, 337 },
+	{ 110, 466 },
+	{ 110, 491 },
+	{ 82, 340 },
+	{ 82, 342 },
+	{ 82, 344 },
+	{ 114, 341 },
+	{ 114, 343 },
+	{ 114, 345 },
+	{ 83, 346 },
+	{ 83, 348 },
+	{ 83, 350 },
+	{ 83, 352 },
+	{ 115, 347 },
+	{ 115, 349 },
+	{ 115, 351 },
+	{ 115, 353 },
+	{ 84, 354 },
+	{ 84, 356 },
+	{ 116, 355 },
+	{ 116, 357 },
+	{ 85, 217 },
+	{ 85, 218 },
+	{ 85, 219 },
+	{ 85, 360 },
+	{ 85, 362 },
+	{ 85, 364 },
+	{ 85, 366 },
+	{ 85, 368 },
+	{ 85, 370 },
+	{ 85, 467 },
+	{ 117, 361 },
+	{ 117, 363 },
+	{ 117, 365 },
+	{ 117, 367 },
+	{ 117, 369 },
+	{ 117, 371 },
+	{ 117, 468 },
+	{ 87, 372 },
+	{ 119, 373 },
+	{ 89, 221 },
+	{ 89, 374 },
+	{ 89, 376 },
+	{ 121, 253 },
+	{ 121, 375 },
+	{ 90, 377 },
+	{ 90, 379 },
+	{ 90, 381 },
+	{ 122, 378 },
+	{ 122, 380 },
+	{ 122, 382 },
 };
-charconvert applerum[] = {
- /* 0 */ 0,/*<tdbgcolor="C0C0C0"><fontface="Arial"color="000000"><b>ISO/IEC10646-1:2000CharacterName</b></font>*/
- 1,
- 2,
- 3,
- 4,
- 5,
- 6,
- 7,
- 8,
- 9,
- 10,
- 11,
- 12,
- 13,
- 14,
- 15,
- 16,
- 17,
- 18,
- 19,
- 20,
- 21,
- 22,
- 23,
- 24,
- 25,
- 26,
- 27,
- 28,
- 29,
- 30,
- 31,
- /* 32 */ 32,/*SPACE*/
- /* 33 */ 33,/*EXCLAMATIONMARK*/
- /* 34 */ 34,/*QUOTATIONMARK*/
- /* 35 */ 35,/*NUMBERSIGN*/
- /* 36 */ 36,/*DOLLARSIGN*/
- /* 37 */ 37,/*PERCENTSIGN*/
- /* 38 */ 38,/*AMPERSAND*/
- /* 39 */ 39,/*APOSTROPHE*/
- /* 40 */ 40,/*LEFTPARENTHESIS*/
- /* 41 */ 41,/*RIGHTPARENTHESIS*/
- /* 42 */ 42,/*ASTERISK*/
- /* 43 */ 43,/*PLUSSIGN*/
- /* 44 */ 44,/*COMMA*/
- /* 45 */ 45,/*HYPHEN-MINUS*/
- /* 46 */ 46,/*FULLSTOP*/
- /* 47 */ 47,/*SOLIDUS*/
- /* 48 */ 48,/*DIGITZERO*/
- /* 49 */ 49,/*DIGITONE*/
- /* 50 */ 50,/*DIGITTWO*/
- /* 51 */ 51,/*DIGITTHREE*/
- /* 52 */ 52,/*DIGITFOUR*/
- /* 53 */ 53,/*DIGITFIVE*/
- /* 54 */ 54,/*DIGITSIX*/
- /* 55 */ 55,/*DIGITSEVEN*/
- /* 56 */ 56,/*DIGITEIGHT*/
- /* 57 */ 57,/*DIGITNINE*/
- /* 58 */ 58,/*COLON*/
- /* 59 */ 59,/*SEMICOLON*/
- /* 60 */ 60,/*LESS-THANSIGN*/
- /* 61 */ 61,/*EQUALSSIGN*/
- /* 62 */ 62,/*GREATER-THANSIGN*/
- /* 63 */ 63,/*QUESTIONMARK*/
- /* 64 */ 64,/*COMMERCIALAT*/
- /* 65 */ 65,/*LATINCAPITALLETTERA*/
- /* 66 */ 66,/*LATINCAPITALLETTERB*/
- /* 67 */ 67,/*LATINCAPITALLETTERC*/
- /* 68 */ 68,/*LATINCAPITALLETTERD*/
- /* 69 */ 69,/*LATINCAPITALLETTERE*/
- /* 70 */ 70,/*LATINCAPITALLETTERF*/
- /* 71 */ 71,/*LATINCAPITALLETTERG*/
- /* 72 */ 72,/*LATINCAPITALLETTERH*/
- /* 73 */ 73,/*LATINCAPITALLETTERI*/
- /* 74 */ 74,/*LATINCAPITALLETTERJ*/
- /* 75 */ 75,/*LATINCAPITALLETTERK*/
- /* 76 */ 76,/*LATINCAPITALLETTERL*/
- /* 77 */ 77,/*LATINCAPITALLETTERM*/
- /* 78 */ 78,/*LATINCAPITALLETTERN*/
- /* 79 */ 79,/*LATINCAPITALLETTERO*/
- /* 80 */ 80,/*LATINCAPITALLETTERP*/
- /* 81 */ 81,/*LATINCAPITALLETTERQ*/
- /* 82 */ 82,/*LATINCAPITALLETTERR*/
- /* 83 */ 83,/*LATINCAPITALLETTERS*/
- /* 84 */ 84,/*LATINCAPITALLETTERT*/
- /* 85 */ 85,/*LATINCAPITALLETTERU*/
- /* 86 */ 86,/*LATINCAPITALLETTERV*/
- /* 87 */ 87,/*LATINCAPITALLETTERW*/
- /* 88 */ 88,/*LATINCAPITALLETTERX*/
- /* 89 */ 89,/*LATINCAPITALLETTERY*/
- /* 90 */ 90,/*LATINCAPITALLETTERZ*/
- /* 91 */ 91,/*LEFTSQUAREBRACKET*/
- /* 92 */ 92,/*REVERSESOLIDUS*/
- /* 93 */ 93,/*RIGHTSQUAREBRACKET*/
- /* 94 */ 94,/*CIRCUMFLEXACCENT*/
- /* 95 */ 95,/*LOWLINE*/
- /* 96 */ 96,/*GRAVEACCENT*/
- /* 97 */ 97,/*LATINSMALLLETTERA*/
- /* 98 */ 98,/*LATINSMALLLETTERB*/
- /* 99 */ 99,/*LATINSMALLLETTERC*/
- /* 100 */ 100,/*LATINSMALLLETTERD*/
- /* 101 */ 101,/*LATINSMALLLETTERE*/
- /* 102 */ 102,/*LATINSMALLLETTERF*/
- /* 103 */ 103,/*LATINSMALLLETTERG*/
- /* 104 */ 104,/*LATINSMALLLETTERH*/
- /* 105 */ 105,/*LATINSMALLLETTERI*/
- /* 106 */ 106,/*LATINSMALLLETTERJ*/
- /* 107 */ 107,/*LATINSMALLLETTERK*/
- /* 108 */ 108,/*LATINSMALLLETTERL*/
- /* 109 */ 109,/*LATINSMALLLETTERM*/
- /* 110 */ 110,/*LATINSMALLLETTERN*/
- /* 111 */ 111,/*LATINSMALLLETTERO*/
- /* 112 */ 112,/*LATINSMALLLETTERP*/
- /* 113 */ 113,/*LATINSMALLLETTERQ*/
- /* 114 */ 114,/*LATINSMALLLETTERR*/
- /* 115 */ 115,/*LATINSMALLLETTERS*/
- /* 116 */ 116,/*LATINSMALLLETTERT*/
- /* 117 */ 117,/*LATINSMALLLETTERU*/
- /* 118 */ 118,/*LATINSMALLLETTERV*/
- /* 119 */ 119,/*LATINSMALLLETTERW*/
- /* 120 */ 120,/*LATINSMALLLETTERX*/
- /* 121 */ 121,/*LATINSMALLLETTERY*/
- /* 122 */ 122,/*LATINSMALLLETTERZ*/
- /* 123 */ 123,/*LEFTCURLYBRACKET*/
- /* 124 */ 124,/*VERTICALLINE*/
- /* 125 */ 125,/*RIGHTCURLYBRACKET*/
- /* 126 */ 126,/*TILDE*/
- 127,
- /* 128 */ 196,/*LATINCAPITALLETTERAWITHDIAERESIS*/
- /* 129 */ 197,/*LATINCAPITALLETTERAWITHRINGABOVE*/
- /* 130 */ 199,/*LATINCAPITALLETTERCWITHCEDILLA*/
- /* 131 */ 201,/*LATINCAPITALLETTEREWITHACUTE*/
- /* 132 */ 209,/*LATINCAPITALLETTERNWITHTILDE*/
- /* 133 */ 214,/*LATINCAPITALLETTEROWITHDIAERESIS*/
- /* 134 */ 220,/*LATINCAPITALLETTERUWITHDIAERESIS*/
- /* 135 */ 225,/*LATINSMALLLETTERAWITHACUTE*/
- /* 136 */ 224,/*LATINSMALLLETTERAWITHGRAVE*/
- /* 137 */ 226,/*LATINSMALLLETTERAWITHCIRCUMFLEX*/
- /* 138 */ 228,/*LATINSMALLLETTERAWITHDIAERESIS*/
- /* 139 */ 227,/*LATINSMALLLETTERAWITHTILDE*/
- /* 140 */ 229,/*LATINSMALLLETTERAWITHRINGABOVE*/
- /* 141 */ 231,/*LATINSMALLLETTERCWITHCEDILLA*/
- /* 142 */ 233,/*LATINSMALLLETTEREWITHACUTE*/
- /* 143 */ 232,/*LATINSMALLLETTEREWITHGRAVE*/
- /* 144 */ 234,/*LATINSMALLLETTEREWITHCIRCUMFLEX*/
- /* 145 */ 235,/*LATINSMALLLETTEREWITHDIAERESIS*/
- /* 146 */ 237,/*LATINSMALLLETTERIWITHACUTE*/
- /* 147 */ 236,/*LATINSMALLLETTERIWITHGRAVE*/
- /* 148 */ 238,/*LATINSMALLLETTERIWITHCIRCUMFLEX*/
- /* 149 */ 239,/*LATINSMALLLETTERIWITHDIAERESIS*/
- /* 150 */ 241,/*LATINSMALLLETTERNWITHTILDE*/
- /* 151 */ 243,/*LATINSMALLLETTEROWITHACUTE*/
- /* 152 */ 242,/*LATINSMALLLETTEROWITHGRAVE*/
- /* 153 */ 244,/*LATINSMALLLETTEROWITHCIRCUMFLEX*/
- /* 154 */ 246,/*LATINSMALLLETTEROWITHDIAERESIS*/
- /* 155 */ 245,/*LATINSMALLLETTEROWITHTILDE*/
- /* 156 */ 250,/*LATINSMALLLETTERUWITHACUTE*/
- /* 157 */ 249,/*LATINSMALLLETTERUWITHGRAVE*/
- /* 158 */ 251,/*LATINSMALLLETTERUWITHCIRCUMFLEX*/
- /* 159 */ 252,/*LATINSMALLLETTERUWITHDIAERESIS*/
- /* 160 */ 8224,/*DAGGER*/
- /* 161 */ 176,/*DEGREESIGN*/
- /* 162 */ 162,/*CENTSIGN*/
- /* 163 */ 163,/*POUNDSIGN*/
- /* 164 */ 167,/*SECTIONSIGN*/
- /* 165 */ 8729,/*BULLETOPERATOR*/
- /* 166 */ 182,/*PILCROWSIGN*/
- /* 167 */ 223,/*LATINSMALLLETTERSHARPS*/
- /* 168 */ 174,/*REGISTEREDSIGN*/
- /* 169 */ 169,/*COPYRIGHTSIGN*/
- /* 170 */ 8482,/*TRADEMARKSIGN*/
- /* 171 */ 180,/*ACUTEACCENT*/
- /* 172 */ 168,/*DIAERESIS*/
- /* 173 */ 8800,/*NOTEQUALTO*/
- /* 174 */ 258,/*LATINCAPITALLETTERAWITHBREVE*/
- /* 175 */ 350,/*LATINCAPITALLETTERSWITHCEDILLA*/
- /* 176 */ 8734,/*INFINITY*/
- /* 177 */ 177,/*PLUS-MINUSSIGN*/
- /* 178 */ 8804,/*LESS-THANOREQUALTO*/
- /* 179 */ 8805,/*GREATER-THANOREQUALTO*/
- /* 180 */ 165,/*YENSIGN*/
- /* 181 */ 181,/*MICROSIGN*/
- /* 182 */ 8706,/*PARTIALDIFFERENTIAL*/
- /* 183 */ 8721,/*N-ARYSUMMATION*/
- /* 184 */ 8719,/*N-ARYPRODUCT*/
- /* 185 */ 960,/*GREEKSMALLLETTERPI*/
- /* 186 */ 8747,/*INTEGRAL*/
- /* 187 */ 170,/*FEMININEORDINALINDICATOR*/
- /* 188 */ 186,/*MASCULINEORDINALINDICATOR*/
- /* 189 */ 937,/*GREEKCAPITALLETTEROMEGA*/
- /* 190 */ 259,/*LATINSMALLLETTERAWITHBREVE*/
- /* 191 */ 351,/*LATINSMALLLETTERSWITHCEDILLA*/
- /* 192 */ 191,/*INVERTEDQUESTIONMARK*/
- /* 193 */ 161,/*INVERTEDEXCLAMATIONMARK*/
- /* 194 */ 172,/*NOTSIGN*/
- /* 195 */ 8730,/*SQUAREROOT*/
- /* 196 */ 402,/*LATINSMALLLETTERFWITHHOOK*/
- /* 197 */ 8776,/*ALMOSTEQUALTO*/
- /* 198 */ 916,/*GREEKCAPITALLETTERDELTA*/
- /* 199 */ 171,/*LEFT-POINTINGDOUBLEANGLEQUOTATIONMARK*/
- /* 200 */ 187,/*RIGHT-POINTINGDOUBLEANGLEQUOTATIONMARK*/
- /* 201 */ 8943,/*MIDLINEHORIZONTALELLIPSIS*/
- /* 202 */ 160,/*NO-BREAKSPACE*/
- /* 203 */ 192,/*LATINCAPITALLETTERAWITHGRAVE*/
- /* 204 */ 195,/*LATINCAPITALLETTERAWITHTILDE*/
- /* 205 */ 213,/*LATINCAPITALLETTEROWITHTILDE*/
- /* 206 */ 338,/*LATINCAPITALLIGATUREOE*/
- /* 207 */ 339,/*LATINSMALLLIGATUREOE*/
- /* 208 */ 8211,/*ENDASH*/
- /* 209 */ 8212,/*EMDASH*/
- /* 210 */ 8220,/*LEFTDOUBLEQUOTATIONMARK*/
- /* 211 */ 8221,/*RIGHTDOUBLEQUOTATIONMARK*/
- /* 212 */ 8216,/*LEFTSINGLEQUOTATIONMARK*/
- /* 213 */ 8217,/*RIGHTSINGLEQUOTATIONMARK*/
- /* 214 */ 247,/*DIVISIONSIGN*/
- /* 215 */ 9674,/*LOZENGE*/
- /* 216 */ 255,/*LATINSMALLLETTERYWITHDIAERESIS*/
- /* 217 */ 376,/*LATINCAPITALLETTERYWITHDIAERESIS*/
- /* 218 */ 8260,/*FRACTIONSLASH*/
- /* 219 */ 164,/*CURRENCYSIGN*/
- /* 220 */ 8249,/*SINGLELEFT-POINTINGANGLEQUOTATIONMARK*/
- /* 221 */ 8250,/*SINGLERIGHT-POINTINGANGLEQUOTATIONMARK*/
- /* 222 */ 354,/*LATINCAPITALLETTERTWITHCEDILLA*/
- /* 223 */ 355,/*LATINSMALLLETTERTWITHCEDILLA*/
- /* 224 */ 8225,/*DOUBLEDAGGER*/
- /* 225 */ 183,/*MIDDLEDOT*/
- /* 226 */ 8218,/*SINGLELOW-9QUOTATIONMARK*/
- /* 227 */ 8222,/*DOUBLELOW-9QUOTATIONMARK*/
- /* 228 */ 8240,/*PERMILLESIGN*/
- /* 229 */ 194,/*LATINCAPITALLETTERAWITHCIRCUMFLEX*/
- /* 230 */ 202,/*LATINCAPITALLETTEREWITHCIRCUMFLEX*/
- /* 231 */ 193,/*LATINCAPITALLETTERAWITHACUTE*/
- /* 232 */ 203,/*LATINCAPITALLETTEREWITHDIAERESIS*/
- /* 233 */ 200,/*LATINCAPITALLETTEREWITHGRAVE*/
- /* 234 */ 205,/*LATINCAPITALLETTERIWITHACUTE*/
- /* 235 */ 206,/*LATINCAPITALLETTERIWITHCIRCUMFLEX*/
- /* 236 */ 207,/*LATINCAPITALLETTERIWITHDIAERESIS*/
- /* 237 */ 204,/*LATINCAPITALLETTERIWITHGRAVE*/
- /* 238 */ 211,/*LATINCAPITALLETTEROWITHACUTE*/
- /* 239 */ 212,/*LATINCAPITALLETTEROWITHCIRCUMFLEX*/
- /* 240 */ 65534,/*APPLELOGO*/
- /* 241 */ 210,/*LATINCAPITALLETTEROWITHGRAVE*/
- /* 242 */ 218,/*LATINCAPITALLETTERUWITHACUTE*/
- /* 243 */ 219,/*LATINCAPITALLETTERUWITHCIRCUMFLEX*/
- /* 244 */ 217,/*LATINCAPITALLETTERUWITHGRAVE*/
- /* 245 */ 305,/*LATINSMALLLETTERDOTLESSI*/
- /* 246 */ 770,/*COMBININGCIRCUMFLEXACCENT*/
- /* 247 */ 771,/*COMBININGTILDE*/
- /* 248 */ 175,/*MACRON*/
- /* 249 */ 728,/*BREVE*/
- /* 250 */ 729,/*DOTABOVE*/
- /* 251 */ 730,/*RINGABOVE*/
- /* 252 */ 184,/*CEDILLA*/
- /* 253 */ 733,/*DOUBLEACUTEACCENT*/
- /* 254 */ 731,/*OGONEK*/
- /* 255 */ 711/*CARON*/
+static convert_t cp437[] = {
+	{ 0, 0 },
+	{ 1, 1 },
+	{ 2, 2 },
+	{ 3, 3 },
+	{ 4, 4 },
+	{ 5, 5 },
+	{ 6, 6 },
+	{ 7, 7 },
+	{ 8, 8 },
+	{ 9, 9 },
+	{ 10, 10 },
+	{ 11, 11 },
+	{ 12, 12 },
+	{ 13, 13 },
+	{ 14, 14 },
+	{ 15, 15 },
+	{ 16, 16 },
+	{ 17, 17 },
+	{ 18, 18 },
+	{ 19, 19 },
+	{ 20, 20 },
+	{ 21, 21 },
+	{ 22, 22 },
+	{ 23, 23 },
+	{ 24, 24 },
+	{ 25, 25 },
+	{ 26, 26 },
+	{ 27, 27 },
+	{ 28, 28 },
+	{ 29, 29 },
+	{ 30, 30 },
+	{ 31, 31 },
+	{ 32, 32 },
+	{ 33, 33 },
+	{ 34, 34 },
+	{ 35, 35 },
+	{ 36, 36 },
+	{ 37, 37 },
+	{ 38, 38 },
+	{ 39, 39 },
+	{ 40, 40 },
+	{ 41, 41 },
+	{ 42, 42 },
+	{ 43, 43 },
+	{ 44, 44 },
+	{ 45, 45 },
+	{ 46, 46 },
+	{ 47, 47 },
+	{ 48, 48 },
+	{ 49, 49 },
+	{ 50, 50 },
+	{ 51, 51 },
+	{ 52, 52 },
+	{ 53, 53 },
+	{ 54, 54 },
+	{ 55, 55 },
+	{ 56, 56 },
+	{ 57, 57 },
+	{ 58, 58 },
+	{ 59, 59 },
+	{ 60, 60 },
+	{ 61, 61 },
+	{ 62, 62 },
+	{ 63, 63 },
+	{ 64, 64 },
+	{ 65, 65 },
+	{ 66, 66 },
+	{ 67, 67 },
+	{ 68, 68 },
+	{ 69, 69 },
+	{ 70, 70 },
+	{ 71, 71 },
+	{ 72, 72 },
+	{ 73, 73 },
+	{ 74, 74 },
+	{ 75, 75 },
+	{ 76, 76 },
+	{ 77, 77 },
+	{ 78, 78 },
+	{ 79, 79 },
+	{ 80, 80 },
+	{ 81, 81 },
+	{ 82, 82 },
+	{ 83, 83 },
+	{ 84, 84 },
+	{ 85, 85 },
+	{ 86, 86 },
+	{ 87, 87 },
+	{ 88, 88 },
+	{ 89, 89 },
+	{ 90, 90 },
+	{ 91, 91 },
+	{ 92, 92 },
+	{ 93, 93 },
+	{ 94, 94 },
+	{ 95, 95 },
+	{ 96, 96 },
+	{ 97, 97 },
+	{ 98, 98 },
+	{ 99, 99 },
+	{ 100, 100 },
+	{ 101, 101 },
+	{ 102, 102 },
+	{ 103, 103 },
+	{ 104, 104 },
+	{ 105, 105 },
+	{ 106, 106 },
+	{ 107, 107 },
+	{ 108, 108 },
+	{ 109, 109 },
+	{ 110, 110 },
+	{ 111, 111 },
+	{ 112, 112 },
+	{ 113, 113 },
+	{ 114, 114 },
+	{ 115, 115 },
+	{ 116, 116 },
+	{ 117, 117 },
+	{ 118, 118 },
+	{ 119, 119 },
+	{ 120, 120 },
+	{ 121, 121 },
+	{ 122, 122 },
+	{ 123, 123 },
+	{ 124, 124 },
+	{ 125, 125 },
+	{ 126, 126 },
+	{ 127, 127 },
+	{ 128, 199 },
+	{ 129, 252 },
+	{ 130, 233 },
+	{ 131, 226 },
+	{ 132, 228 },
+	{ 133, 224 },
+	{ 134, 229 },
+	{ 135, 231 },
+	{ 136, 234 },
+	{ 137, 235 },
+	{ 138, 232 },
+	{ 139, 239 },
+	{ 140, 238 },
+	{ 141, 236 },
+	{ 142, 196 },
+	{ 143, 197 },
+	{ 144, 201 },
+	{ 145, 230 },
+	{ 146, 198 },
+	{ 147, 244 },
+	{ 148, 246 },
+	{ 149, 242 },
+	{ 150, 251 },
+	{ 151, 249 },
+	{ 152, 255 },
+	{ 153, 214 },
+	{ 154, 220 },
+	{ 155, 162 },
+	{ 156, 163 },
+	{ 157, 165 },
+	{ 158, 8359 },
+	{ 159, 402 },
+	{ 160, 225 },
+	{ 161, 237 },
+	{ 162, 243 },
+	{ 163, 250 },
+	{ 164, 241 },
+	{ 165, 209 },
+	{ 166, 170 },
+	{ 167, 186 },
+	{ 168, 191 },
+	{ 169, 8976 },
+	{ 170, 172 },
+	{ 171, 189 },
+	{ 172, 188 },
+	{ 173, 161 },
+	{ 174, 171 },
+	{ 175, 187 },
+	{ 176, 9617 },
+	{ 177, 9618 },
+	{ 178, 9619 },
+	{ 179, 9474 },
+	{ 180, 9508 },
+	{ 181, 9569 },
+	{ 182, 9570 },
+	{ 183, 9558 },
+	{ 184, 9557 },
+	{ 185, 9571 },
+	{ 186, 9553 },
+	{ 187, 9559 },
+	{ 188, 9565 },
+	{ 189, 9564 },
+	{ 190, 9563 },
+	{ 191, 9488 },
+	{ 192, 9492 },
+	{ 193, 9524 },
+	{ 194, 9516 },
+	{ 195, 9500 },
+	{ 196, 9472 },
+	{ 197, 9532 },
+	{ 198, 9566 },
+	{ 199, 9567 },
+	{ 200, 9562 },
+	{ 201, 9556 },
+	{ 202, 9577 },
+	{ 203, 9574 },
+	{ 204, 9568 },
+	{ 205, 9552 },
+	{ 206, 9580 },
+	{ 207, 9575 },
+	{ 208, 9576 },
+	{ 209, 9572 },
+	{ 210, 9573 },
+	{ 211, 9561 },
+	{ 212, 9560 },
+	{ 213, 9554 },
+	{ 214, 9555 },
+	{ 215, 9579 },
+	{ 216, 9578 },
+	{ 217, 9496 },
+	{ 218, 9484 },
+	{ 219, 9608 },
+	{ 220, 9604 },
+	{ 221, 9612 },
+	{ 222, 9616 },
+	{ 223, 9600 },
+	{ 224, 945 },
+	{ 225, 223 },
+	{ 226, 915 },
+	{ 227, 960 },
+	{ 228, 931 },
+	{ 229, 963 },
+	{ 230, 181 },
+	{ 231, 964 },
+	{ 232, 934 },
+	{ 233, 920 },
+	{ 234, 937 },
+	{ 235, 948 },
+	{ 236, 8734 },
+	{ 237, 966 },
+	{ 238, 949 },
+	{ 239, 8745 },
+	{ 240, 8801 },
+	{ 241, 177 },
+	{ 242, 8805 },
+	{ 243, 8804 },
+	{ 244, 8992 },
+	{ 245, 8993 },
+	{ 246, 247 },
+	{ 247, 8776 },
+	{ 248, 176 },
+	{ 249, 8729 },
+	{ 250, 183 },
+	{ 251, 8730 },
+	{ 252, 8319 },
+	{ 253, 178 },
+	{ 254, 9632 },
+	{ 255, 160 },
+	{ 34, 8220 },
+	{ 34, 8221 },
+	{ 39, 8216 },
+	{ 39, 8217 },
+	{ 45, 8211 },
+	{ 45, 8212 },
+	{ 32, 8194 },
+	{ 32, 8195 },
+	{ 32, 8201 },
+	{ 65, 192 },
+	{ 65, 193 },
+	{ 65, 194 },
+	{ 65, 195 },
+	{ 65, 256 },
+	{ 65, 258 },
+	{ 65, 260 },
+	{ 65, 461 },
+	{ 97, 227 },
+	{ 97, 257 },
+	{ 97, 259 },
+	{ 97, 261 },
+	{ 97, 462 },
+	{ 67, 262 },
+	{ 67, 264 },
+	{ 67, 266 },
+	{ 67, 268 },
+	{ 99, 263 },
+	{ 99, 265 },
+	{ 99, 267 },
+	{ 99, 269 },
+	{ 68, 270 },
+	{ 100, 271 },
+	{ 69, 200 },
+	{ 69, 202 },
+	{ 69, 203 },
+	{ 69, 274 },
+	{ 69, 276 },
+	{ 69, 278 },
+	{ 69, 280 },
+	{ 69, 282 },
+	{ 101, 275 },
+	{ 101, 277 },
+	{ 101, 279 },
+	{ 101, 281 },
+	{ 101, 283 },
+	{ 71, 284 },
+	{ 71, 286 },
+	{ 71, 288 },
+	{ 71, 290 },
+	{ 71, 486 },
+	{ 71, 500 },
+	{ 103, 285 },
+	{ 103, 287 },
+	{ 103, 289 },
+	{ 103, 291 },
+	{ 103, 487 },
+	{ 103, 501 },
+	{ 72, 292 },
+	{ 104, 293 },
+	{ 73, 204 },
+	{ 73, 205 },
+	{ 73, 206 },
+	{ 73, 207 },
+	{ 73, 296 },
+	{ 73, 298 },
+	{ 73, 300 },
+	{ 73, 302 },
+	{ 73, 304 },
+	{ 73, 463 },
+	{ 105, 297 },
+	{ 105, 299 },
+	{ 105, 301 },
+	{ 105, 303 },
+	{ 105, 305 },
+	{ 105, 464 },
+	{ 74, 308 },
+	{ 106, 309 },
+	{ 75, 310 },
+	{ 75, 488 },
+	{ 107, 311 },
+	{ 107, 489 },
+	{ 76, 313 },
+	{ 76, 315 },
+	{ 76, 317 },
+	{ 76, 319 },
+	{ 76, 321 },
+	{ 108, 314 },
+	{ 108, 316 },
+	{ 108, 318 },
+	{ 108, 320 },
+	{ 108, 322 },
+	{ 77, 323 },
+	{ 77, 325 },
+	{ 77, 327 },
+	{ 109, 324 },
+	{ 109, 326 },
+	{ 109, 328 },
+	{ 109, 329 },
+	{ 78, 210 },
+	{ 78, 211 },
+	{ 78, 212 },
+	{ 78, 213 },
+	{ 78, 216 },
+	{ 78, 332 },
+	{ 78, 334 },
+	{ 78, 336 },
+	{ 78, 465 },
+	{ 78, 490 },
+	{ 110, 245 },
+	{ 110, 248 },
+	{ 110, 333 },
+	{ 110, 335 },
+	{ 110, 337 },
+	{ 110, 466 },
+	{ 110, 491 },
+	{ 82, 340 },
+	{ 82, 342 },
+	{ 82, 344 },
+	{ 114, 341 },
+	{ 114, 343 },
+	{ 114, 345 },
+	{ 83, 346 },
+	{ 83, 348 },
+	{ 83, 350 },
+	{ 83, 352 },
+	{ 115, 347 },
+	{ 115, 349 },
+	{ 115, 351 },
+	{ 115, 353 },
+	{ 84, 354 },
+	{ 84, 356 },
+	{ 116, 355 },
+	{ 116, 357 },
+	{ 85, 217 },
+	{ 85, 218 },
+	{ 85, 219 },
+	{ 85, 360 },
+	{ 85, 362 },
+	{ 85, 364 },
+	{ 85, 366 },
+	{ 85, 368 },
+	{ 85, 370 },
+	{ 85, 467 },
+	{ 117, 361 },
+	{ 117, 363 },
+	{ 117, 365 },
+	{ 117, 367 },
+	{ 117, 369 },
+	{ 117, 371 },
+	{ 117, 468 },
+	{ 87, 372 },
+	{ 119, 373 },
+	{ 89, 221 },
+	{ 89, 374 },
+	{ 89, 376 },
+	{ 121, 253 },
+	{ 121, 375 },
+	{ 90, 377 },
+	{ 90, 379 },
+	{ 90, 381 },
+	{ 122, 378 },
+	{ 122, 380 },
+	{ 122, 382 },
 };
-charconvert appletur[] = {
- /* 0 */ 0,/*<tdbgcolor="C0C0C0"><fontface="Arial"color="000000"><b>ISO/IEC10646-1:2000CharacterName</b></font>*/
- 1,
- 2,
- 3,
- 4,
- 5,
- 6,
- 7,
- 8,
- 9,
- 10,
- 11,
- 12,
- 13,
- 14,
- 15,
- 16,
- 17,
- 18,
- 19,
- 20,
- 21,
- 22,
- 23,
- 24,
- 25,
- 26,
- 27,
- 28,
- 29,
- 30,
- 31,
- /* 32 */ 32,/*SPACE*/
- /* 33 */ 33,/*EXCLAMATIONMARK*/
- /* 34 */ 34,/*QUOTATIONMARK*/
- /* 35 */ 35,/*NUMBERSIGN*/
- /* 36 */ 36,/*DOLLARSIGN*/
- /* 37 */ 37,/*PERCENTSIGN*/
- /* 38 */ 38,/*AMPERSAND*/
- /* 39 */ 39,/*APOSTROPHE*/
- /* 40 */ 40,/*LEFTPARENTHESIS*/
- /* 41 */ 41,/*RIGHTPARENTHESIS*/
- /* 42 */ 42,/*ASTERISK*/
- /* 43 */ 43,/*PLUSSIGN*/
- /* 44 */ 44,/*COMMA*/
- /* 45 */ 45,/*HYPHEN-MINUS*/
- /* 46 */ 46,/*FULLSTOP*/
- /* 47 */ 47,/*SOLIDUS*/
- /* 48 */ 48,/*DIGITZERO*/
- /* 49 */ 49,/*DIGITONE*/
- /* 50 */ 50,/*DIGITTWO*/
- /* 51 */ 51,/*DIGITTHREE*/
- /* 52 */ 52,/*DIGITFOUR*/
- /* 53 */ 53,/*DIGITFIVE*/
- /* 54 */ 54,/*DIGITSIX*/
- /* 55 */ 55,/*DIGITSEVEN*/
- /* 56 */ 56,/*DIGITEIGHT*/
- /* 57 */ 57,/*DIGITNINE*/
- /* 58 */ 58,/*COLON*/
- /* 59 */ 59,/*SEMICOLON*/
- /* 60 */ 60,/*LESS-THANSIGN*/
- /* 61 */ 61,/*EQUALSSIGN*/
- /* 62 */ 62,/*GREATER-THANSIGN*/
- /* 63 */ 63,/*QUESTIONMARK*/
- /* 64 */ 64,/*COMMERCIALAT*/
- /* 65 */ 65,/*LATINCAPITALLETTERA*/
- /* 66 */ 66,/*LATINCAPITALLETTERB*/
- /* 67 */ 67,/*LATINCAPITALLETTERC*/
- /* 68 */ 68,/*LATINCAPITALLETTERD*/
- /* 69 */ 69,/*LATINCAPITALLETTERE*/
- /* 70 */ 70,/*LATINCAPITALLETTERF*/
- /* 71 */ 71,/*LATINCAPITALLETTERG*/
- /* 72 */ 72,/*LATINCAPITALLETTERH*/
- /* 73 */ 73,/*LATINCAPITALLETTERI*/
- /* 74 */ 74,/*LATINCAPITALLETTERJ*/
- /* 75 */ 75,/*LATINCAPITALLETTERK*/
- /* 76 */ 76,/*LATINCAPITALLETTERL*/
- /* 77 */ 77,/*LATINCAPITALLETTERM*/
- /* 78 */ 78,/*LATINCAPITALLETTERN*/
- /* 79 */ 79,/*LATINCAPITALLETTERO*/
- /* 80 */ 80,/*LATINCAPITALLETTERP*/
- /* 81 */ 81,/*LATINCAPITALLETTERQ*/
- /* 82 */ 82,/*LATINCAPITALLETTERR*/
- /* 83 */ 83,/*LATINCAPITALLETTERS*/
- /* 84 */ 84,/*LATINCAPITALLETTERT*/
- /* 85 */ 85,/*LATINCAPITALLETTERU*/
- /* 86 */ 86,/*LATINCAPITALLETTERV*/
- /* 87 */ 87,/*LATINCAPITALLETTERW*/
- /* 88 */ 88,/*LATINCAPITALLETTERX*/
- /* 89 */ 89,/*LATINCAPITALLETTERY*/
- /* 90 */ 90,/*LATINCAPITALLETTERZ*/
- /* 91 */ 91,/*LEFTSQUAREBRACKET*/
- /* 92 */ 92,/*REVERSESOLIDUS*/
- /* 93 */ 93,/*RIGHTSQUAREBRACKET*/
- /* 94 */ 94,/*CIRCUMFLEXACCENT*/
- /* 95 */ 95,/*LOWLINE*/
- /* 96 */ 96,/*GRAVEACCENT*/
- /* 97 */ 97,/*LATINSMALLLETTERA*/
- /* 98 */ 98,/*LATINSMALLLETTERB*/
- /* 99 */ 99,/*LATINSMALLLETTERC*/
- /* 100 */ 100,/*LATINSMALLLETTERD*/
- /* 101 */ 101,/*LATINSMALLLETTERE*/
- /* 102 */ 102,/*LATINSMALLLETTERF*/
- /* 103 */ 103,/*LATINSMALLLETTERG*/
- /* 104 */ 104,/*LATINSMALLLETTERH*/
- /* 105 */ 105,/*LATINSMALLLETTERI*/
- /* 106 */ 106,/*LATINSMALLLETTERJ*/
- /* 107 */ 107,/*LATINSMALLLETTERK*/
- /* 108 */ 108,/*LATINSMALLLETTERL*/
- /* 109 */ 109,/*LATINSMALLLETTERM*/
- /* 110 */ 110,/*LATINSMALLLETTERN*/
- /* 111 */ 111,/*LATINSMALLLETTERO*/
- /* 112 */ 112,/*LATINSMALLLETTERP*/
- /* 113 */ 113,/*LATINSMALLLETTERQ*/
- /* 114 */ 114,/*LATINSMALLLETTERR*/
- /* 115 */ 115,/*LATINSMALLLETTERS*/
- /* 116 */ 116,/*LATINSMALLLETTERT*/
- /* 117 */ 117,/*LATINSMALLLETTERU*/
- /* 118 */ 118,/*LATINSMALLLETTERV*/
- /* 119 */ 119,/*LATINSMALLLETTERW*/
- /* 120 */ 120,/*LATINSMALLLETTERX*/
- /* 121 */ 121,/*LATINSMALLLETTERY*/
- /* 122 */ 122,/*LATINSMALLLETTERZ*/
- /* 123 */ 123,/*LEFTCURLYBRACKET*/
- /* 124 */ 124,/*VERTICALLINE*/
- /* 125 */ 125,/*RIGHTCURLYBRACKET*/
- /* 126 */ 126,/*TILDE*/
- 127,
- /* 128 */ 196,/*LATINCAPITALLETTERAWITHDIAERESIS*/
- /* 129 */ 197,/*LATINCAPITALLETTERAWITHRINGABOVE*/
- /* 130 */ 199,/*LATINCAPITALLETTERCWITHCEDILLA*/
- /* 131 */ 201,/*LATINCAPITALLETTEREWITHACUTE*/
- /* 132 */ 209,/*LATINCAPITALLETTERNWITHTILDE*/
- /* 133 */ 214,/*LATINCAPITALLETTEROWITHDIAERESIS*/
- /* 134 */ 220,/*LATINCAPITALLETTERUWITHDIAERESIS*/
- /* 135 */ 225,/*LATINSMALLLETTERAWITHACUTE*/
- /* 136 */ 224,/*LATINSMALLLETTERAWITHGRAVE*/
- /* 137 */ 226,/*LATINSMALLLETTERAWITHCIRCUMFLEX*/
- /* 138 */ 228,/*LATINSMALLLETTERAWITHDIAERESIS*/
- /* 139 */ 227,/*LATINSMALLLETTERAWITHTILDE*/
- /* 140 */ 229,/*LATINSMALLLETTERAWITHRINGABOVE*/
- /* 141 */ 231,/*LATINSMALLLETTERCWITHCEDILLA*/
- /* 142 */ 233,/*LATINSMALLLETTEREWITHACUTE*/
- /* 143 */ 232,/*LATINSMALLLETTEREWITHGRAVE*/
- /* 144 */ 234,/*LATINSMALLLETTEREWITHCIRCUMFLEX*/
- /* 145 */ 235,/*LATINSMALLLETTEREWITHDIAERESIS*/
- /* 146 */ 237,/*LATINSMALLLETTERIWITHACUTE*/
- /* 147 */ 236,/*LATINSMALLLETTERIWITHGRAVE*/
- /* 148 */ 238,/*LATINSMALLLETTERIWITHCIRCUMFLEX*/
- /* 149 */ 239,/*LATINSMALLLETTERIWITHDIAERESIS*/
- /* 150 */ 241,/*LATINSMALLLETTERNWITHTILDE*/
- /* 151 */ 243,/*LATINSMALLLETTEROWITHACUTE*/
- /* 152 */ 242,/*LATINSMALLLETTEROWITHGRAVE*/
- /* 153 */ 244,/*LATINSMALLLETTEROWITHCIRCUMFLEX*/
- /* 154 */ 246,/*LATINSMALLLETTEROWITHDIAERESIS*/
- /* 155 */ 245,/*LATINSMALLLETTEROWITHTILDE*/
- /* 156 */ 250,/*LATINSMALLLETTERUWITHACUTE*/
- /* 157 */ 249,/*LATINSMALLLETTERUWITHGRAVE*/
- /* 158 */ 251,/*LATINSMALLLETTERUWITHCIRCUMFLEX*/
- /* 159 */ 252,/*LATINSMALLLETTERUWITHDIAERESIS*/
- /* 160 */ 8224,/*DAGGER*/
- /* 161 */ 176,/*DEGREESIGN*/
- /* 162 */ 162,/*CENTSIGN*/
- /* 163 */ 163,/*POUNDSIGN*/
- /* 164 */ 167,/*SECTIONSIGN*/
- /* 165 */ 8729,/*BULLETOPERATOR*/
- /* 166 */ 182,/*PILCROWSIGN*/
- /* 167 */ 223,/*LATINSMALLLETTERSHARPS*/
- /* 168 */ 174,/*REGISTEREDSIGN*/
- /* 169 */ 169,/*COPYRIGHTSIGN*/
- /* 170 */ 8482,/*TRADEMARKSIGN*/
- /* 171 */ 180,/*ACUTEACCENT*/
- /* 172 */ 168,/*DIAERESIS*/
- /* 173 */ 8800,/*NOTEQUALTO*/
- /* 174 */ 198,/*LATINCAPITALLETTERAE*/
- /* 175 */ 216,/*LATINCAPITALLETTEROWITHSTROKE*/
- /* 176 */ 8734,/*INFINITY*/
- /* 177 */ 177,/*PLUS-MINUSSIGN*/
- /* 178 */ 8804,/*LESS-THANOREQUALTO*/
- /* 179 */ 8805,/*GREATER-THANOREQUALTO*/
- /* 180 */ 165,/*YENSIGN*/
- /* 181 */ 181,/*MICROSIGN*/
- /* 182 */ 8706,/*PARTIALDIFFERENTIAL*/
- /* 183 */ 8721,/*N-ARYSUMMATION*/
- /* 184 */ 8719,/*N-ARYPRODUCT*/
- /* 185 */ 960,/*GREEKSMALLLETTERPI*/
- /* 186 */ 8747,/*INTEGRAL*/
- /* 187 */ 170,/*FEMININEORDINALINDICATOR*/
- /* 188 */ 186,/*MASCULINEORDINALINDICATOR*/
- /* 189 */ 937,/*GREEKCAPITALLETTEROMEGA*/
- /* 190 */ 230,/*LATINSMALLLETTERAE*/
- /* 191 */ 248,/*LATINSMALLLETTEROWITHSTROKE*/
- /* 192 */ 191,/*INVERTEDQUESTIONMARK*/
- /* 193 */ 161,/*INVERTEDEXCLAMATIONMARK*/
- /* 194 */ 172,/*NOTSIGN*/
- /* 195 */ 8730,/*SQUAREROOT*/
- /* 196 */ 402,/*LATINSMALLLETTERFWITHHOOK*/
- /* 197 */ 8776,/*ALMOSTEQUALTO*/
- /* 198 */ 916,/*GREEKCAPITALLETTERDELTA*/
- /* 199 */ 171,/*LEFT-POINTINGDOUBLEANGLEQUOTATIONMARK*/
- /* 200 */ 187,/*RIGHT-POINTINGDOUBLEANGLEQUOTATIONMARK*/
- /* 201 */ 8943,/*MIDLINEHORIZONTALELLIPSIS*/
- /* 202 */ 160,/*NO-BREAKSPACE*/
- /* 203 */ 192,/*LATINCAPITALLETTERAWITHGRAVE*/
- /* 204 */ 195,/*LATINCAPITALLETTERAWITHTILDE*/
- /* 205 */ 213,/*LATINCAPITALLETTEROWITHTILDE*/
- /* 206 */ 338,/*LATINCAPITALLIGATUREOE*/
- /* 207 */ 339,/*LATINSMALLLIGATUREOE*/
- /* 208 */ 8211,/*ENDASH*/
- /* 209 */ 8212,/*EMDASH*/
- /* 210 */ 8220,/*LEFTDOUBLEQUOTATIONMARK*/
- /* 211 */ 8221,/*RIGHTDOUBLEQUOTATIONMARK*/
- /* 212 */ 8216,/*LEFTSINGLEQUOTATIONMARK*/
- /* 213 */ 8217,/*RIGHTSINGLEQUOTATIONMARK*/
- /* 214 */ 247,/*DIVISIONSIGN*/
- /* 215 */ 9674,/*LOZENGE*/
- /* 216 */ 255,/*LATINSMALLLETTERYWITHDIAERESIS*/
- /* 217 */ 376,/*LATINCAPITALLETTERYWITHDIAERESIS*/
- /* 218 */ 286,/*LATINCAPITALLETTERGWITHBREVE*/
- /* 219 */ 287,/*LATINSMALLLETTERGWITHBREVE*/
- /* 220 */ 304,/*LATINCAPITALLETTERIWITHDOTABOVE*/
- /* 221 */ 305,/*LATINSMALLLETTERDOTLESSI*/
- /* 222 */ 350,/*LATINCAPITALLETTERSWITHCEDILLA*/
- /* 223 */ 351,/*LATINSMALLLETTERSWITHCEDILLA*/
- /* 224 */ 8225,/*DOUBLEDAGGER*/
- /* 225 */ 183,/*MIDDLEDOT*/
- /* 226 */ 8218,/*SINGLELOW-9QUOTATIONMARK*/
- /* 227 */ 8222,/*DOUBLELOW-9QUOTATIONMARK*/
- /* 228 */ 8240,/*PERMILLESIGN*/
- /* 229 */ 194,/*LATINCAPITALLETTERAWITHCIRCUMFLEX*/
- /* 230 */ 202,/*LATINCAPITALLETTEREWITHCIRCUMFLEX*/
- /* 231 */ 193,/*LATINCAPITALLETTERAWITHACUTE*/
- /* 232 */ 203,/*LATINCAPITALLETTEREWITHDIAERESIS*/
- /* 233 */ 200,/*LATINCAPITALLETTEREWITHGRAVE*/
- /* 234 */ 205,/*LATINCAPITALLETTERIWITHACUTE*/
- /* 235 */ 206,/*LATINCAPITALLETTERIWITHCIRCUMFLEX*/
- /* 236 */ 207,/*LATINCAPITALLETTERIWITHDIAERESIS*/
- /* 237 */ 204,/*LATINCAPITALLETTERIWITHGRAVE*/
- /* 238 */ 211,/*LATINCAPITALLETTEROWITHACUTE*/
- /* 239 */ 212,/*LATINCAPITALLETTEROWITHCIRCUMFLEX*/
- /* 240 */ 65534,/*APPLELOGO*/
- /* 241 */ 210,/*LATINCAPITALLETTEROWITHGRAVE*/
- /* 242 */ 218,/*LATINCAPITALLETTERUWITHACUTE*/
- /* 243 */ 219,/*LATINCAPITALLETTERUWITHCIRCUMFLEX*/
- /* 244 */ 217,/*LATINCAPITALLETTERUWITHGRAVE*/
- 245,
- /* 246 */ 770,/*COMBININGCIRCUMFLEXACCENT*/
- /* 247 */ 771,/*COMBININGTILDE*/
- /* 248 */ 175,/*MACRON*/
- /* 249 */ 728,/*BREVE*/
- /* 250 */ 729,/*DOTABOVE*/
- /* 251 */ 730,/*RINGABOVE*/
- /* 252 */ 184,/*CEDILLA*/
- /* 253 */ 733,/*DOUBLEACUTEACCENT*/
- /* 254 */ 731,/*OGONEK*/
- /* 255 */ 711/*CARON*/
+static convert_t cp737[] = {
+	{ 0, 0 },
+	{ 1, 1 },
+	{ 2, 2 },
+	{ 3, 3 },
+	{ 4, 4 },
+	{ 5, 5 },
+	{ 6, 6 },
+	{ 7, 7 },
+	{ 8, 8 },
+	{ 9, 9 },
+	{ 10, 10 },
+	{ 11, 11 },
+	{ 12, 12 },
+	{ 13, 13 },
+	{ 14, 14 },
+	{ 15, 15 },
+	{ 16, 16 },
+	{ 17, 17 },
+	{ 18, 18 },
+	{ 19, 19 },
+	{ 20, 20 },
+	{ 21, 21 },
+	{ 22, 22 },
+	{ 23, 23 },
+	{ 24, 24 },
+	{ 25, 25 },
+	{ 26, 26 },
+	{ 27, 27 },
+	{ 28, 28 },
+	{ 29, 29 },
+	{ 30, 30 },
+	{ 31, 31 },
+	{ 32, 32 },
+	{ 33, 33 },
+	{ 34, 34 },
+	{ 35, 35 },
+	{ 36, 36 },
+	{ 37, 37 },
+	{ 38, 38 },
+	{ 39, 39 },
+	{ 40, 40 },
+	{ 41, 41 },
+	{ 42, 42 },
+	{ 43, 43 },
+	{ 44, 44 },
+	{ 45, 45 },
+	{ 46, 46 },
+	{ 47, 47 },
+	{ 48, 48 },
+	{ 49, 49 },
+	{ 50, 50 },
+	{ 51, 51 },
+	{ 52, 52 },
+	{ 53, 53 },
+	{ 54, 54 },
+	{ 55, 55 },
+	{ 56, 56 },
+	{ 57, 57 },
+	{ 58, 58 },
+	{ 59, 59 },
+	{ 60, 60 },
+	{ 61, 61 },
+	{ 62, 62 },
+	{ 63, 63 },
+	{ 64, 64 },
+	{ 65, 65 },
+	{ 66, 66 },
+	{ 67, 67 },
+	{ 68, 68 },
+	{ 69, 69 },
+	{ 70, 70 },
+	{ 71, 71 },
+	{ 72, 72 },
+	{ 73, 73 },
+	{ 74, 74 },
+	{ 75, 75 },
+	{ 76, 76 },
+	{ 77, 77 },
+	{ 78, 78 },
+	{ 79, 79 },
+	{ 80, 80 },
+	{ 81, 81 },
+	{ 82, 82 },
+	{ 83, 83 },
+	{ 84, 84 },
+	{ 85, 85 },
+	{ 86, 86 },
+	{ 87, 87 },
+	{ 88, 88 },
+	{ 89, 89 },
+	{ 90, 90 },
+	{ 91, 91 },
+	{ 92, 92 },
+	{ 93, 93 },
+	{ 94, 94 },
+	{ 95, 95 },
+	{ 96, 96 },
+	{ 97, 97 },
+	{ 98, 98 },
+	{ 99, 99 },
+	{ 100, 100 },
+	{ 101, 101 },
+	{ 102, 102 },
+	{ 103, 103 },
+	{ 104, 104 },
+	{ 105, 105 },
+	{ 106, 106 },
+	{ 107, 107 },
+	{ 108, 108 },
+	{ 109, 109 },
+	{ 110, 110 },
+	{ 111, 111 },
+	{ 112, 112 },
+	{ 113, 113 },
+	{ 114, 114 },
+	{ 115, 115 },
+	{ 116, 116 },
+	{ 117, 117 },
+	{ 118, 118 },
+	{ 119, 119 },
+	{ 120, 120 },
+	{ 121, 121 },
+	{ 122, 122 },
+	{ 123, 123 },
+	{ 124, 124 },
+	{ 125, 125 },
+	{ 126, 126 },
+	{ 127, 127 },
+	{ 128, 913 },
+	{ 129, 914 },
+	{ 130, 915 },
+	{ 131, 916 },
+	{ 132, 917 },
+	{ 133, 918 },
+	{ 134, 919 },
+	{ 135, 920 },
+	{ 136, 921 },
+	{ 137, 922 },
+	{ 138, 923 },
+	{ 139, 924 },
+	{ 140, 925 },
+	{ 141, 926 },
+	{ 142, 927 },
+	{ 143, 928 },
+	{ 144, 929 },
+	{ 145, 931 },
+	{ 146, 932 },
+	{ 147, 933 },
+	{ 148, 934 },
+	{ 149, 935 },
+	{ 150, 936 },
+	{ 151, 937 },
+	{ 152, 945 },
+	{ 153, 946 },
+	{ 154, 947 },
+	{ 155, 948 },
+	{ 156, 949 },
+	{ 157, 950 },
+	{ 158, 951 },
+	{ 159, 952 },
+	{ 160, 953 },
+	{ 161, 954 },
+	{ 162, 955 },
+	{ 163, 956 },
+	{ 164, 957 },
+	{ 165, 958 },
+	{ 166, 959 },
+	{ 167, 960 },
+	{ 168, 961 },
+	{ 169, 963 },
+	{ 170, 962 },
+	{ 171, 964 },
+	{ 172, 965 },
+	{ 173, 966 },
+	{ 174, 967 },
+	{ 175, 968 },
+	{ 176, 9617 },
+	{ 177, 9618 },
+	{ 178, 9619 },
+	{ 179, 9474 },
+	{ 180, 9508 },
+	{ 181, 9569 },
+	{ 182, 9570 },
+	{ 183, 9558 },
+	{ 184, 9557 },
+	{ 185, 9571 },
+	{ 186, 9553 },
+	{ 187, 9559 },
+	{ 188, 9565 },
+	{ 189, 9564 },
+	{ 190, 9563 },
+	{ 191, 9488 },
+	{ 192, 9492 },
+	{ 193, 9524 },
+	{ 194, 9516 },
+	{ 195, 9500 },
+	{ 196, 9472 },
+	{ 197, 9532 },
+	{ 198, 9566 },
+	{ 199, 9567 },
+	{ 200, 9562 },
+	{ 201, 9556 },
+	{ 202, 9577 },
+	{ 203, 9574 },
+	{ 204, 9568 },
+	{ 205, 9552 },
+	{ 206, 9580 },
+	{ 207, 9575 },
+	{ 208, 9576 },
+	{ 209, 9572 },
+	{ 210, 9573 },
+	{ 211, 9561 },
+	{ 212, 9560 },
+	{ 213, 9554 },
+	{ 214, 9555 },
+	{ 215, 9579 },
+	{ 216, 9578 },
+	{ 217, 9496 },
+	{ 218, 9484 },
+	{ 219, 9608 },
+	{ 220, 9604 },
+	{ 221, 9612 },
+	{ 222, 9616 },
+	{ 223, 9600 },
+	{ 224, 969 },
+	{ 225, 940 },
+	{ 226, 941 },
+	{ 227, 942 },
+	{ 228, 970 },
+	{ 229, 943 },
+	{ 230, 972 },
+	{ 231, 973 },
+	{ 232, 971 },
+	{ 233, 974 },
+	{ 234, 902 },
+	{ 235, 904 },
+	{ 236, 905 },
+	{ 237, 906 },
+	{ 238, 908 },
+	{ 239, 910 },
+	{ 240, 911 },
+	{ 241, 177 },
+	{ 242, 8805 },
+	{ 243, 8804 },
+	{ 244, 938 },
+	{ 245, 939 },
+	{ 246, 247 },
+	{ 247, 8776 },
+	{ 248, 176 },
+	{ 249, 8729 },
+	{ 250, 183 },
+	{ 251, 8730 },
+	{ 252, 8319 },
+	{ 253, 178 },
+	{ 254, 9632 },
+	{ 255, 160 },
+	{ 34, 8220 },
+	{ 34, 8221 },
+	{ 39, 8216 },
+	{ 39, 8217 },
+	{ 45, 8211 },
+	{ 45, 8212 },
+	{ 32, 8194 },
+	{ 32, 8195 },
+	{ 32, 8201 },
+	{ 65, 192 },
+	{ 65, 193 },
+	{ 65, 194 },
+	{ 65, 195 },
+	{ 65, 196 },
+	{ 65, 197 },
+	{ 65, 256 },
+	{ 65, 258 },
+	{ 65, 260 },
+	{ 65, 461 },
+	{ 97, 224 },
+	{ 97, 225 },
+	{ 97, 226 },
+	{ 97, 227 },
+	{ 97, 228 },
+	{ 97, 229 },
+	{ 97, 257 },
+	{ 97, 259 },
+	{ 97, 261 },
+	{ 97, 462 },
+	{ 67, 199 },
+	{ 67, 262 },
+	{ 67, 264 },
+	{ 67, 266 },
+	{ 67, 268 },
+	{ 99, 231 },
+	{ 99, 263 },
+	{ 99, 265 },
+	{ 99, 267 },
+	{ 99, 269 },
+	{ 68, 270 },
+	{ 100, 271 },
+	{ 69, 200 },
+	{ 69, 201 },
+	{ 69, 202 },
+	{ 69, 203 },
+	{ 69, 274 },
+	{ 69, 276 },
+	{ 69, 278 },
+	{ 69, 280 },
+	{ 69, 282 },
+	{ 101, 232 },
+	{ 101, 233 },
+	{ 101, 234 },
+	{ 101, 235 },
+	{ 101, 275 },
+	{ 101, 277 },
+	{ 101, 279 },
+	{ 101, 281 },
+	{ 101, 283 },
+	{ 71, 284 },
+	{ 71, 286 },
+	{ 71, 288 },
+	{ 71, 290 },
+	{ 71, 486 },
+	{ 71, 500 },
+	{ 103, 285 },
+	{ 103, 287 },
+	{ 103, 289 },
+	{ 103, 291 },
+	{ 103, 487 },
+	{ 103, 501 },
+	{ 72, 292 },
+	{ 104, 293 },
+	{ 73, 204 },
+	{ 73, 205 },
+	{ 73, 206 },
+	{ 73, 207 },
+	{ 73, 296 },
+	{ 73, 298 },
+	{ 73, 300 },
+	{ 73, 302 },
+	{ 73, 304 },
+	{ 73, 463 },
+	{ 105, 236 },
+	{ 105, 237 },
+	{ 105, 238 },
+	{ 105, 239 },
+	{ 105, 297 },
+	{ 105, 299 },
+	{ 105, 301 },
+	{ 105, 303 },
+	{ 105, 305 },
+	{ 105, 464 },
+	{ 74, 308 },
+	{ 106, 309 },
+	{ 75, 310 },
+	{ 75, 488 },
+	{ 107, 311 },
+	{ 107, 489 },
+	{ 76, 313 },
+	{ 76, 315 },
+	{ 76, 317 },
+	{ 76, 319 },
+	{ 76, 321 },
+	{ 108, 314 },
+	{ 108, 316 },
+	{ 108, 318 },
+	{ 108, 320 },
+	{ 108, 322 },
+	{ 77, 209 },
+	{ 77, 323 },
+	{ 77, 325 },
+	{ 77, 327 },
+	{ 109, 241 },
+	{ 109, 324 },
+	{ 109, 326 },
+	{ 109, 328 },
+	{ 109, 329 },
+	{ 78, 210 },
+	{ 78, 211 },
+	{ 78, 212 },
+	{ 78, 213 },
+	{ 78, 214 },
+	{ 78, 216 },
+	{ 78, 332 },
+	{ 78, 334 },
+	{ 78, 336 },
+	{ 78, 465 },
+	{ 78, 490 },
+	{ 110, 242 },
+	{ 110, 243 },
+	{ 110, 244 },
+	{ 110, 245 },
+	{ 110, 246 },
+	{ 110, 248 },
+	{ 110, 333 },
+	{ 110, 335 },
+	{ 110, 337 },
+	{ 110, 466 },
+	{ 110, 491 },
+	{ 82, 340 },
+	{ 82, 342 },
+	{ 82, 344 },
+	{ 114, 341 },
+	{ 114, 343 },
+	{ 114, 345 },
+	{ 83, 346 },
+	{ 83, 348 },
+	{ 83, 350 },
+	{ 83, 352 },
+	{ 115, 347 },
+	{ 115, 349 },
+	{ 115, 351 },
+	{ 115, 353 },
+	{ 84, 354 },
+	{ 84, 356 },
+	{ 116, 355 },
+	{ 116, 357 },
+	{ 85, 217 },
+	{ 85, 218 },
+	{ 85, 219 },
+	{ 85, 220 },
+	{ 85, 360 },
+	{ 85, 362 },
+	{ 85, 364 },
+	{ 85, 366 },
+	{ 85, 368 },
+	{ 85, 370 },
+	{ 85, 467 },
+	{ 117, 249 },
+	{ 117, 250 },
+	{ 117, 251 },
+	{ 117, 252 },
+	{ 117, 361 },
+	{ 117, 363 },
+	{ 117, 365 },
+	{ 117, 367 },
+	{ 117, 369 },
+	{ 117, 371 },
+	{ 117, 468 },
+	{ 87, 372 },
+	{ 119, 373 },
+	{ 89, 221 },
+	{ 89, 374 },
+	{ 89, 376 },
+	{ 121, 253 },
+	{ 121, 255 },
+	{ 121, 375 },
+	{ 90, 377 },
+	{ 90, 379 },
+	{ 90, 381 },
+	{ 122, 378 },
+	{ 122, 380 },
+	{ 122, 382 },
 };
-charconvert atarist[] = {
- /* 0 */ 0,/*<tdbgcolor="C0C0C0"><fontface="Arial"color="000000"><b>ISO/IEC10646-1:2000CharacterName</b></font>*/
- 1,
- 2,
- 3,
- 4,
- 5,
- 6,
- 7,
- 8,
- 9,
- 10,
- 11,
- 12,
- 13,
- 14,
- 15,
- 16,
- 17,
- 18,
- 19,
- 20,
- 21,
- 22,
- 23,
- 24,
- 25,
- 26,
- 27,
- 28,
- 29,
- 30,
- 31,
- /* 32 */ 32,/*SPACE*/
- /* 33 */ 33,/*EXCLAMATIONMARK*/
- /* 34 */ 34,/*QUOTATIONMARK*/
- /* 35 */ 35,/*NUMBERSIGN*/
- /* 36 */ 36,/*DOLLARSIGN*/
- /* 37 */ 37,/*PERCENTSIGN*/
- /* 38 */ 38,/*AMPERSAND*/
- /* 39 */ 39,/*APOSTROPHE*/
- /* 40 */ 40,/*LEFTPARENTHESIS*/
- /* 41 */ 41,/*RIGHTPARENTHESIS*/
- /* 42 */ 42,/*ASTERISK*/
- /* 43 */ 43,/*PLUSSIGN*/
- /* 44 */ 44,/*COMMA*/
- /* 45 */ 45,/*HYPHEN-MINUS*/
- /* 46 */ 46,/*FULLSTOP*/
- /* 47 */ 47,/*SOLIDUS*/
- /* 48 */ 48,/*DIGITZERO*/
- /* 49 */ 49,/*DIGITONE*/
- /* 50 */ 50,/*DIGITTWO*/
- /* 51 */ 51,/*DIGITTHREE*/
- /* 52 */ 52,/*DIGITFOUR*/
- /* 53 */ 53,/*DIGITFIVE*/
- /* 54 */ 54,/*DIGITSIX*/
- /* 55 */ 55,/*DIGITSEVEN*/
- /* 56 */ 56,/*DIGITEIGHT*/
- /* 57 */ 57,/*DIGITNINE*/
- /* 58 */ 58,/*COLON*/
- /* 59 */ 59,/*SEMICOLON*/
- /* 60 */ 60,/*LESS-THANSIGN*/
- /* 61 */ 61,/*EQUALSSIGN*/
- /* 62 */ 62,/*GREATER-THANSIGN*/
- /* 63 */ 63,/*QUESTIONMARK*/
- /* 64 */ 64,/*COMMERCIALAT*/
- /* 65 */ 65,/*LATINCAPITALLETTERA*/
- /* 66 */ 66,/*LATINCAPITALLETTERB*/
- /* 67 */ 67,/*LATINCAPITALLETTERC*/
- /* 68 */ 68,/*LATINCAPITALLETTERD*/
- /* 69 */ 69,/*LATINCAPITALLETTERE*/
- /* 70 */ 70,/*LATINCAPITALLETTERF*/
- /* 71 */ 71,/*LATINCAPITALLETTERG*/
- /* 72 */ 72,/*LATINCAPITALLETTERH*/
- /* 73 */ 73,/*LATINCAPITALLETTERI*/
- /* 74 */ 74,/*LATINCAPITALLETTERJ*/
- /* 75 */ 75,/*LATINCAPITALLETTERK*/
- /* 76 */ 76,/*LATINCAPITALLETTERL*/
- /* 77 */ 77,/*LATINCAPITALLETTERM*/
- /* 78 */ 78,/*LATINCAPITALLETTERN*/
- /* 79 */ 79,/*LATINCAPITALLETTERO*/
- /* 80 */ 80,/*LATINCAPITALLETTERP*/
- /* 81 */ 81,/*LATINCAPITALLETTERQ*/
- /* 82 */ 82,/*LATINCAPITALLETTERR*/
- /* 83 */ 83,/*LATINCAPITALLETTERS*/
- /* 84 */ 84,/*LATINCAPITALLETTERT*/
- /* 85 */ 85,/*LATINCAPITALLETTERU*/
- /* 86 */ 86,/*LATINCAPITALLETTERV*/
- /* 87 */ 87,/*LATINCAPITALLETTERW*/
- /* 88 */ 88,/*LATINCAPITALLETTERX*/
- /* 89 */ 89,/*LATINCAPITALLETTERY*/
- /* 90 */ 90,/*LATINCAPITALLETTERZ*/
- /* 91 */ 91,/*LEFTSQUAREBRACKET*/
- /* 92 */ 92,/*REVERSESOLIDUS*/
- /* 93 */ 93,/*RIGHTSQUAREBRACKET*/
- /* 94 */ 94,/*CIRCUMFLEXACCENT*/
- /* 95 */ 95,/*LOWLINE*/
- /* 96 */ 96,/*GRAVEACCENT*/
- /* 97 */ 97,/*LATINSMALLLETTERA*/
- /* 98 */ 98,/*LATINSMALLLETTERB*/
- /* 99 */ 99,/*LATINSMALLLETTERC*/
- /* 100 */ 100,/*LATINSMALLLETTERD*/
- /* 101 */ 101,/*LATINSMALLLETTERE*/
- /* 102 */ 102,/*LATINSMALLLETTERF*/
- /* 103 */ 103,/*LATINSMALLLETTERG*/
- /* 104 */ 104,/*LATINSMALLLETTERH*/
- /* 105 */ 105,/*LATINSMALLLETTERI*/
- /* 106 */ 106,/*LATINSMALLLETTERJ*/
- /* 107 */ 107,/*LATINSMALLLETTERK*/
- /* 108 */ 108,/*LATINSMALLLETTERL*/
- /* 109 */ 109,/*LATINSMALLLETTERM*/
- /* 110 */ 110,/*LATINSMALLLETTERN*/
- /* 111 */ 111,/*LATINSMALLLETTERO*/
- /* 112 */ 112,/*LATINSMALLLETTERP*/
- /* 113 */ 113,/*LATINSMALLLETTERQ*/
- /* 114 */ 114,/*LATINSMALLLETTERR*/
- /* 115 */ 115,/*LATINSMALLLETTERS*/
- /* 116 */ 116,/*LATINSMALLLETTERT*/
- /* 117 */ 117,/*LATINSMALLLETTERU*/
- /* 118 */ 118,/*LATINSMALLLETTERV*/
- /* 119 */ 119,/*LATINSMALLLETTERW*/
- /* 120 */ 120,/*LATINSMALLLETTERX*/
- /* 121 */ 121,/*LATINSMALLLETTERY*/
- /* 122 */ 122,/*LATINSMALLLETTERZ*/
- /* 123 */ 123,/*LEFTCURLYBRACKET*/
- /* 124 */ 124,/*VERTICALLINE*/
- /* 125 */ 125,/*RIGHTCURLYBRACKET*/
- /* 126 */ 126,/*TILDE*/
- 127,
- /* 128 */ 199,/*LATINCAPITALLETTERCWITHCEDILLA*/
- /* 129 */ 252,/*LATINSMALLLETTERUWITHDIAERESIS*/
- /* 130 */ 233,/*LATINSMALLLETTEREWITHACUTE*/
- /* 131 */ 226,/*LATINSMALLLETTERAWITHCIRCUMFLEX*/
- /* 132 */ 228,/*LATINSMALLLETTERAWITHDIAERESIS*/
- /* 133 */ 224,/*LATINSMALLLETTERAWITHGRAVE*/
- /* 134 */ 229,/*LATINSMALLLETTERAWITHRINGABOVE*/
- /* 135 */ 231,/*LATINSMALLLETTERCWITHCEDILLA*/
- /* 136 */ 234,/*LATINSMALLLETTEREWITHCIRCUMFLEX*/
- /* 137 */ 235,/*LATINSMALLLETTEREWITHDIAERESIS*/
- /* 138 */ 232,/*LATINSMALLLETTEREWITHGRAVE*/
- /* 139 */ 239,/*LATINSMALLLETTERIWITHDIAERESIS*/
- /* 140 */ 238,/*LATINSMALLLETTERIWITHCIRCUMFLEX*/
- /* 141 */ 236,/*LATINSMALLLETTERIWITHGRAVE*/
- /* 142 */ 196,/*LATINCAPITALLETTERAWITHDIAERESIS*/
- /* 143 */ 197,/*LATINCAPITALLETTERAWITHRINGABOVE*/
- /* 144 */ 201,/*LATINCAPITALLETTEREWITHACUTE*/
- /* 145 */ 230,/*LATINSMALLLETTERAE*/
- /* 146 */ 198,/*LATINCAPITALLETTERAE*/
- /* 147 */ 244,/*LATINSMALLLETTEROWITHCIRCUMFLEX*/
- /* 148 */ 246,/*LATINSMALLLETTEROWITHDIAERESIS*/
- /* 149 */ 242,/*LATINSMALLLETTEROWITHGRAVE*/
- /* 150 */ 251,/*LATINSMALLLETTERUWITHCIRCUMFLEX*/
- /* 151 */ 249,/*LATINSMALLLETTERUWITHGRAVE*/
- /* 152 */ 255,/*LATINSMALLLETTERYWITHDIAERESIS*/
- /* 153 */ 214,/*LATINCAPITALLETTEROWITHDIAERESIS*/
- /* 154 */ 220,/*LATINCAPITALLETTERUWITHDIAERESIS*/
- /* 155 */ 162,/*CENTSIGN*/
- /* 156 */ 163,/*POUNDSIGN*/
- /* 157 */ 165,/*YENSIGN*/
- /* 158 */ 223,/*LATINSMALLLETTERSHARPS*/
- /* 159 */ 402,/*LATINSMALLLETTERFWITHHOOK*/
- /* 160 */ 225,/*LATINSMALLLETTERAWITHACUTE*/
- /* 161 */ 237,/*LATINSMALLLETTERIWITHACUTE*/
- /* 162 */ 243,/*LATINSMALLLETTEROWITHACUTE*/
- /* 163 */ 250,/*LATINSMALLLETTERUWITHACUTE*/
- /* 164 */ 241,/*LATINSMALLLETTERNWITHTILDE*/
- /* 165 */ 209,/*LATINCAPITALLETTERNWITHTILDE*/
- /* 166 */ 170,/*FEMININEORDINALINDICATOR*/
- /* 167 */ 186,/*MASCULINEORDINALINDICATOR*/
- /* 168 */ 191,/*INVERTEDQUESTIONMARK*/
- /* 169 */ 8976,/*REVERSEDNOTSIGN*/
- /* 170 */ 172,/*NOTSIGN*/
- /* 171 */ 189,/*VULGARFRACTIONONEHALF*/
- /* 172 */ 188,/*VULGARFRACTIONONEQUARTER*/
- /* 173 */ 161,/*INVERTEDEXCLAMATIONMARK*/
- /* 174 */ 171,/*LEFT-POINTINGDOUBLEANGLEQUOTATIONMARK*/
- /* 175 */ 187,/*RIGHT-POINTINGDOUBLEANGLEQUOTATIONMARK*/
- /* 176 */ 227,/*LATINSMALLLETTERAWITHTILDE*/
- /* 177 */ 245,/*LATINSMALLLETTEROWITHTILDE*/
- /* 178 */ 216,/*LATINCAPITALLETTEROWITHSTROKE*/
- /* 179 */ 248,/*LATINSMALLLETTEROWITHSTROKE*/
- /* 180 */ 339,/*LATINSMALLLIGATUREOE*/
- /* 181 */ 338,/*LATINCAPITALLIGATUREOE*/
- /* 182 */ 192,/*LATINCAPITALLETTERAWITHGRAVE*/
- /* 183 */ 195,/*LATINCAPITALLETTERAWITHTILDE*/
- /* 184 */ 213,/*LATINCAPITALLETTEROWITHTILDE*/
- /* 185 */ 168,/*DIAERESIS*/
- /* 186 */ 180,/*ACUTEACCENT*/
- /* 187 */ 8224,/*DAGGER*/
- /* 188 */ 182,/*PILCROWSIGN*/
- /* 189 */ 169,/*COPYRIGHTSIGN*/
- /* 190 */ 174,/*REGISTEREDSIGN*/
- /* 191 */ 8482,/*TRADEMARKSIGN*/
- /* 192 */ 307,/*LATINSMALLLIGATUREIJ*/
- /* 193 */ 306,/*LATINCAPITALLIGATUREIJ*/
- /* 194 */ 1488,/*HEBREWLETTERALEF*/
- /* 195 */ 1489,/*HEBREWLETTERBET*/
- /* 196 */ 1490,/*HEBREWLETTERGIMEL*/
- /* 197 */ 1491,/*HEBREWLETTERDALET*/
- /* 198 */ 1492,/*HEBREWLETTERHE*/
- /* 199 */ 1493,/*HEBREWLETTERVAV*/
- /* 200 */ 1494,/*HEBREWLETTERZAYIN*/
- /* 201 */ 1495,/*HEBREWLETTERHET*/
- /* 202 */ 1496,/*HEBREWLETTERTET*/
- /* 203 */ 1497,/*HEBREWLETTERYOD*/
- /* 204 */ 1499,/*HEBREWLETTERKAF*/
- /* 205 */ 1500,/*HEBREWLETTERLAMED*/
- /* 206 */ 1502,/*HEBREWLETTERMEM*/
- /* 207 */ 1504,/*HEBREWLETTERNUN*/
- /* 208 */ 1505,/*HEBREWLETTERSAMEKH*/
- /* 209 */ 1506,/*HEBREWLETTERAYIN*/
- /* 210 */ 1508,/*HEBREWLETTERPE*/
- /* 211 */ 1510,/*HEBREWLETTERTSADI*/
- /* 212 */ 1511,/*HEBREWLETTERQOF*/
- /* 213 */ 1512,/*HEBREWLETTERRESH*/
- /* 214 */ 1513,/*HEBREWLETTERSHIN*/
- /* 215 */ 1514,/*HEBREWLETTERTAV*/
- /* 216 */ 1503,/*HEBREWLETTERFINALNUN*/
- /* 217 */ 1498,/*HEBREWLETTERFINALKAF*/
- /* 218 */ 1501,/*HEBREWLETTERFINALMEM*/
- /* 219 */ 1507,/*HEBREWLETTERFINALPE*/
- /* 220 */ 1509,/*HEBREWLETTERFINALTSADI*/
- /* 221 */ 167,/*SECTIONSIGN*/
- /* 222 */ 8743,/*LOGICALAND*/
- /* 223 */ 8734,/*INFINITY*/
- /* 224 */ 945,/*GREEKSMALLLETTERALPHA*/
- /* 225 */ 946,/*GREEKSMALLLETTERBETA*/
- /* 226 */ 915,/*GREEKCAPITALLETTERGAMMA*/
- /* 227 */ 960,/*GREEKSMALLLETTERPI*/
- /* 228 */ 931,/*GREEKCAPITALLETTERSIGMA*/
- /* 229 */ 963,/*GREEKSMALLLETTERSIGMA*/
- /* 230 */ 181,/*MICROSIGN*/
- /* 231 */ 964,/*GREEKSMALLLETTERTAU*/
- /* 232 */ 934,/*GREEKCAPITALLETTERPHI*/
- /* 233 */ 920,/*GREEKCAPITALLETTERTHETA*/
- /* 234 */ 937,/*GREEKCAPITALLETTEROMEGA*/
- /* 235 */ 948,/*GREEKSMALLLETTERDELTA*/
- /* 236 */ 8750,/*CONTOURINTEGRAL*/
- /* 237 */ 966,/*GREEKSMALLLETTERPHI*/
- /* 238 */ 949,/*GREEKSMALLLETTEREPSILON*/
- /* 239 */ 8745,/*INTERSECTION*/
- /* 240 */ 8801,/*IDENTICALTO*/
- /* 241 */ 177,/*PLUS-MINUSSIGN*/
- /* 242 */ 8805,/*GREATER-THANOREQUALTO*/
- /* 243 */ 8804,/*LESS-THANOREQUALTO*/
- /* 244 */ 8992,/*TOPHALFINTEGRAL*/
- /* 245 */ 8993,/*BOTTOMHALFINTEGRAL*/
- /* 246 */ 247,/*DIVISIONSIGN*/
- /* 247 */ 8776,/*ALMOSTEQUALTO*/
- /* 248 */ 176,/*DEGREESIGN*/
- /* 249 */ 8729,/*BULLETOPERATOR*/
- /* 250 */ 183,/*MIDDLEDOT*/
- /* 251 */ 8730,/*SQUAREROOT*/
- /* 252 */ 8319,/*SUPERSCRIPTLATINSMALLLETTERN*/
- /* 253 */ 178,/*SUPERSCRIPTTWO*/
- /* 254 */ 179,/*SUPERSCRIPTTHREE*/
- /* 255 */ 175/*MACRON*/
+static convert_t cp775[] = {
+	{ 0, 0 },
+	{ 1, 1 },
+	{ 2, 2 },
+	{ 3, 3 },
+	{ 4, 4 },
+	{ 5, 5 },
+	{ 6, 6 },
+	{ 7, 7 },
+	{ 8, 8 },
+	{ 9, 9 },
+	{ 10, 10 },
+	{ 11, 11 },
+	{ 12, 12 },
+	{ 13, 13 },
+	{ 14, 14 },
+	{ 15, 15 },
+	{ 16, 16 },
+	{ 17, 17 },
+	{ 18, 18 },
+	{ 19, 19 },
+	{ 20, 20 },
+	{ 21, 21 },
+	{ 22, 22 },
+	{ 23, 23 },
+	{ 24, 24 },
+	{ 25, 25 },
+	{ 26, 26 },
+	{ 27, 27 },
+	{ 28, 28 },
+	{ 29, 29 },
+	{ 30, 30 },
+	{ 31, 31 },
+	{ 32, 32 },
+	{ 33, 33 },
+	{ 34, 34 },
+	{ 35, 35 },
+	{ 36, 36 },
+	{ 37, 37 },
+	{ 38, 38 },
+	{ 39, 39 },
+	{ 40, 40 },
+	{ 41, 41 },
+	{ 42, 42 },
+	{ 43, 43 },
+	{ 44, 44 },
+	{ 45, 45 },
+	{ 46, 46 },
+	{ 47, 47 },
+	{ 48, 48 },
+	{ 49, 49 },
+	{ 50, 50 },
+	{ 51, 51 },
+	{ 52, 52 },
+	{ 53, 53 },
+	{ 54, 54 },
+	{ 55, 55 },
+	{ 56, 56 },
+	{ 57, 57 },
+	{ 58, 58 },
+	{ 59, 59 },
+	{ 60, 60 },
+	{ 61, 61 },
+	{ 62, 62 },
+	{ 63, 63 },
+	{ 64, 64 },
+	{ 65, 65 },
+	{ 66, 66 },
+	{ 67, 67 },
+	{ 68, 68 },
+	{ 69, 69 },
+	{ 70, 70 },
+	{ 71, 71 },
+	{ 72, 72 },
+	{ 73, 73 },
+	{ 74, 74 },
+	{ 75, 75 },
+	{ 76, 76 },
+	{ 77, 77 },
+	{ 78, 78 },
+	{ 79, 79 },
+	{ 80, 80 },
+	{ 81, 81 },
+	{ 82, 82 },
+	{ 83, 83 },
+	{ 84, 84 },
+	{ 85, 85 },
+	{ 86, 86 },
+	{ 87, 87 },
+	{ 88, 88 },
+	{ 89, 89 },
+	{ 90, 90 },
+	{ 91, 91 },
+	{ 92, 92 },
+	{ 93, 93 },
+	{ 94, 94 },
+	{ 95, 95 },
+	{ 96, 96 },
+	{ 97, 97 },
+	{ 98, 98 },
+	{ 99, 99 },
+	{ 100, 100 },
+	{ 101, 101 },
+	{ 102, 102 },
+	{ 103, 103 },
+	{ 104, 104 },
+	{ 105, 105 },
+	{ 106, 106 },
+	{ 107, 107 },
+	{ 108, 108 },
+	{ 109, 109 },
+	{ 110, 110 },
+	{ 111, 111 },
+	{ 112, 112 },
+	{ 113, 113 },
+	{ 114, 114 },
+	{ 115, 115 },
+	{ 116, 116 },
+	{ 117, 117 },
+	{ 118, 118 },
+	{ 119, 119 },
+	{ 120, 120 },
+	{ 121, 121 },
+	{ 122, 122 },
+	{ 123, 123 },
+	{ 124, 124 },
+	{ 125, 125 },
+	{ 126, 126 },
+	{ 127, 127 },
+	{ 128, 262 },
+	{ 129, 252 },
+	{ 130, 233 },
+	{ 131, 257 },
+	{ 132, 228 },
+	{ 133, 291 },
+	{ 134, 229 },
+	{ 135, 263 },
+	{ 136, 322 },
+	{ 137, 275 },
+	{ 138, 342 },
+	{ 139, 343 },
+	{ 140, 299 },
+	{ 141, 377 },
+	{ 142, 196 },
+	{ 143, 197 },
+	{ 144, 201 },
+	{ 145, 230 },
+	{ 146, 198 },
+	{ 147, 333 },
+	{ 148, 246 },
+	{ 149, 290 },
+	{ 150, 162 },
+	{ 151, 346 },
+	{ 152, 347 },
+	{ 153, 214 },
+	{ 154, 220 },
+	{ 155, 248 },
+	{ 156, 163 },
+	{ 157, 216 },
+	{ 158, 215 },
+	{ 159, 164 },
+	{ 160, 256 },
+	{ 161, 298 },
+	{ 162, 243 },
+	{ 163, 379 },
+	{ 164, 380 },
+	{ 165, 378 },
+	{ 166, 8221 },
+	{ 167, 166 },
+	{ 168, 169 },
+	{ 169, 174 },
+	{ 170, 172 },
+	{ 171, 189 },
+	{ 172, 188 },
+	{ 173, 321 },
+	{ 174, 171 },
+	{ 175, 187 },
+	{ 176, 9617 },
+	{ 177, 9618 },
+	{ 178, 9619 },
+	{ 179, 9474 },
+	{ 180, 9508 },
+	{ 181, 260 },
+	{ 182, 268 },
+	{ 183, 280 },
+	{ 184, 278 },
+	{ 185, 9571 },
+	{ 186, 9553 },
+	{ 187, 9559 },
+	{ 188, 9565 },
+	{ 189, 302 },
+	{ 190, 352 },
+	{ 191, 9488 },
+	{ 192, 9492 },
+	{ 193, 9524 },
+	{ 194, 9516 },
+	{ 195, 9500 },
+	{ 196, 9472 },
+	{ 197, 9532 },
+	{ 198, 370 },
+	{ 199, 362 },
+	{ 200, 9562 },
+	{ 201, 9556 },
+	{ 202, 9577 },
+	{ 203, 9574 },
+	{ 204, 9568 },
+	{ 205, 9552 },
+	{ 206, 9580 },
+	{ 207, 381 },
+	{ 208, 261 },
+	{ 209, 269 },
+	{ 210, 281 },
+	{ 211, 279 },
+	{ 212, 303 },
+	{ 213, 353 },
+	{ 214, 371 },
+	{ 215, 363 },
+	{ 216, 382 },
+	{ 217, 9496 },
+	{ 218, 9484 },
+	{ 219, 9608 },
+	{ 220, 9604 },
+	{ 221, 9612 },
+	{ 222, 9616 },
+	{ 223, 9600 },
+	{ 224, 211 },
+	{ 225, 223 },
+	{ 226, 332 },
+	{ 227, 323 },
+	{ 228, 245 },
+	{ 229, 213 },
+	{ 230, 181 },
+	{ 231, 324 },
+	{ 232, 310 },
+	{ 233, 311 },
+	{ 234, 315 },
+	{ 235, 316 },
+	{ 236, 326 },
+	{ 237, 274 },
+	{ 238, 325 },
+	{ 239, 8217 },
+	{ 240, 173 },
+	{ 241, 177 },
+	{ 242, 8220 },
+	{ 243, 190 },
+	{ 244, 182 },
+	{ 245, 167 },
+	{ 246, 247 },
+	{ 247, 8222 },
+	{ 248, 176 },
+	{ 249, 8729 },
+	{ 250, 183 },
+	{ 251, 185 },
+	{ 252, 179 },
+	{ 253, 178 },
+	{ 254, 9632 },
+	{ 255, 160 },
+	{ 39, 8216 },
+	{ 45, 8211 },
+	{ 45, 8212 },
+	{ 32, 8194 },
+	{ 32, 8195 },
+	{ 32, 8201 },
+	{ 65, 192 },
+	{ 65, 193 },
+	{ 65, 194 },
+	{ 65, 195 },
+	{ 65, 258 },
+	{ 65, 461 },
+	{ 97, 224 },
+	{ 97, 225 },
+	{ 97, 226 },
+	{ 97, 227 },
+	{ 97, 259 },
+	{ 97, 462 },
+	{ 67, 199 },
+	{ 67, 264 },
+	{ 67, 266 },
+	{ 99, 231 },
+	{ 99, 265 },
+	{ 99, 267 },
+	{ 68, 270 },
+	{ 100, 271 },
+	{ 69, 200 },
+	{ 69, 202 },
+	{ 69, 203 },
+	{ 69, 276 },
+	{ 69, 282 },
+	{ 101, 232 },
+	{ 101, 234 },
+	{ 101, 235 },
+	{ 101, 277 },
+	{ 101, 283 },
+	{ 71, 284 },
+	{ 71, 286 },
+	{ 71, 288 },
+	{ 71, 486 },
+	{ 71, 500 },
+	{ 103, 285 },
+	{ 103, 287 },
+	{ 103, 289 },
+	{ 103, 487 },
+	{ 103, 501 },
+	{ 72, 292 },
+	{ 104, 293 },
+	{ 73, 204 },
+	{ 73, 205 },
+	{ 73, 206 },
+	{ 73, 207 },
+	{ 73, 296 },
+	{ 73, 300 },
+	{ 73, 304 },
+	{ 73, 463 },
+	{ 105, 236 },
+	{ 105, 237 },
+	{ 105, 238 },
+	{ 105, 239 },
+	{ 105, 297 },
+	{ 105, 301 },
+	{ 105, 305 },
+	{ 105, 464 },
+	{ 74, 308 },
+	{ 106, 309 },
+	{ 75, 488 },
+	{ 107, 489 },
+	{ 76, 313 },
+	{ 76, 317 },
+	{ 76, 319 },
+	{ 108, 314 },
+	{ 108, 318 },
+	{ 108, 320 },
+	{ 77, 209 },
+	{ 77, 327 },
+	{ 109, 241 },
+	{ 109, 328 },
+	{ 109, 329 },
+	{ 78, 210 },
+	{ 78, 212 },
+	{ 78, 334 },
+	{ 78, 336 },
+	{ 78, 465 },
+	{ 78, 490 },
+	{ 110, 242 },
+	{ 110, 244 },
+	{ 110, 335 },
+	{ 110, 337 },
+	{ 110, 466 },
+	{ 110, 491 },
+	{ 82, 340 },
+	{ 82, 344 },
+	{ 114, 341 },
+	{ 114, 345 },
+	{ 83, 348 },
+	{ 83, 350 },
+	{ 115, 349 },
+	{ 115, 351 },
+	{ 84, 354 },
+	{ 84, 356 },
+	{ 116, 355 },
+	{ 116, 357 },
+	{ 85, 217 },
+	{ 85, 218 },
+	{ 85, 219 },
+	{ 85, 360 },
+	{ 85, 364 },
+	{ 85, 366 },
+	{ 85, 368 },
+	{ 85, 467 },
+	{ 117, 249 },
+	{ 117, 250 },
+	{ 117, 251 },
+	{ 117, 361 },
+	{ 117, 365 },
+	{ 117, 367 },
+	{ 117, 369 },
+	{ 117, 468 },
+	{ 87, 372 },
+	{ 119, 373 },
+	{ 89, 221 },
+	{ 89, 374 },
+	{ 89, 376 },
+	{ 121, 253 },
+	{ 121, 255 },
+	{ 121, 375 },
 };
-charconvert cp1250[] = {
- /* 0 */ 0,/*<tdbgcolor="C0C0C0"><fontface="Arial"color="000000"><b>ISO/IEC10646-1:2000CharacterName</b></font>*/
- 1,
- 2,
- 3,
- 4,
- 5,
- 6,
- 7,
- 8,
- 9,
- 10,
- 11,
- 12,
- 13,
- 14,
- 15,
- 16,
- 17,
- 18,
- 19,
- 20,
- 21,
- 22,
- 23,
- 24,
- 25,
- 26,
- 27,
- 28,
- 29,
- 30,
- 31,
- /* 32 */ 32,/*SPACE*/
- /* 33 */ 33,/*EXCLAMATIONMARK*/
- /* 34 */ 34,/*QUOTATIONMARK*/
- /* 35 */ 35,/*NUMBERSIGN*/
- /* 36 */ 36,/*DOLLARSIGN*/
- /* 37 */ 37,/*PERCENTSIGN*/
- /* 38 */ 38,/*AMPERSAND*/
- /* 39 */ 39,/*APOSTROPHE*/
- /* 40 */ 40,/*LEFTPARENTHESIS*/
- /* 41 */ 41,/*RIGHTPARENTHESIS*/
- /* 42 */ 42,/*ASTERISK*/
- /* 43 */ 43,/*PLUSSIGN*/
- /* 44 */ 44,/*COMMA*/
- /* 45 */ 45,/*HYPHEN-MINUS*/
- /* 46 */ 46,/*FULLSTOP*/
- /* 47 */ 47,/*SOLIDUS*/
- /* 48 */ 48,/*DIGITZERO*/
- /* 49 */ 49,/*DIGITONE*/
- /* 50 */ 50,/*DIGITTWO*/
- /* 51 */ 51,/*DIGITTHREE*/
- /* 52 */ 52,/*DIGITFOUR*/
- /* 53 */ 53,/*DIGITFIVE*/
- /* 54 */ 54,/*DIGITSIX*/
- /* 55 */ 55,/*DIGITSEVEN*/
- /* 56 */ 56,/*DIGITEIGHT*/
- /* 57 */ 57,/*DIGITNINE*/
- /* 58 */ 58,/*COLON*/
- /* 59 */ 59,/*SEMICOLON*/
- /* 60 */ 60,/*LESS-THANSIGN*/
- /* 61 */ 61,/*EQUALSSIGN*/
- /* 62 */ 62,/*GREATER-THANSIGN*/
- /* 63 */ 63,/*QUESTIONMARK*/
- /* 64 */ 64,/*COMMERCIALAT*/
- /* 65 */ 65,/*LATINCAPITALLETTERA*/
- /* 66 */ 66,/*LATINCAPITALLETTERB*/
- /* 67 */ 67,/*LATINCAPITALLETTERC*/
- /* 68 */ 68,/*LATINCAPITALLETTERD*/
- /* 69 */ 69,/*LATINCAPITALLETTERE*/
- /* 70 */ 70,/*LATINCAPITALLETTERF*/
- /* 71 */ 71,/*LATINCAPITALLETTERG*/
- /* 72 */ 72,/*LATINCAPITALLETTERH*/
- /* 73 */ 73,/*LATINCAPITALLETTERI*/
- /* 74 */ 74,/*LATINCAPITALLETTERJ*/
- /* 75 */ 75,/*LATINCAPITALLETTERK*/
- /* 76 */ 76,/*LATINCAPITALLETTERL*/
- /* 77 */ 77,/*LATINCAPITALLETTERM*/
- /* 78 */ 78,/*LATINCAPITALLETTERN*/
- /* 79 */ 79,/*LATINCAPITALLETTERO*/
- /* 80 */ 80,/*LATINCAPITALLETTERP*/
- /* 81 */ 81,/*LATINCAPITALLETTERQ*/
- /* 82 */ 82,/*LATINCAPITALLETTERR*/
- /* 83 */ 83,/*LATINCAPITALLETTERS*/
- /* 84 */ 84,/*LATINCAPITALLETTERT*/
- /* 85 */ 85,/*LATINCAPITALLETTERU*/
- /* 86 */ 86,/*LATINCAPITALLETTERV*/
- /* 87 */ 87,/*LATINCAPITALLETTERW*/
- /* 88 */ 88,/*LATINCAPITALLETTERX*/
- /* 89 */ 89,/*LATINCAPITALLETTERY*/
- /* 90 */ 90,/*LATINCAPITALLETTERZ*/
- /* 91 */ 91,/*LEFTSQUAREBRACKET*/
- /* 92 */ 92,/*REVERSESOLIDUS*/
- /* 93 */ 93,/*RIGHTSQUAREBRACKET*/
- /* 94 */ 94,/*CIRCUMFLEXACCENT*/
- /* 95 */ 95,/*LOWLINE*/
- /* 96 */ 96,/*GRAVEACCENT*/
- /* 97 */ 97,/*LATINSMALLLETTERA*/
- /* 98 */ 98,/*LATINSMALLLETTERB*/
- /* 99 */ 99,/*LATINSMALLLETTERC*/
- /* 100 */ 100,/*LATINSMALLLETTERD*/
- /* 101 */ 101,/*LATINSMALLLETTERE*/
- /* 102 */ 102,/*LATINSMALLLETTERF*/
- /* 103 */ 103,/*LATINSMALLLETTERG*/
- /* 104 */ 104,/*LATINSMALLLETTERH*/
- /* 105 */ 105,/*LATINSMALLLETTERI*/
- /* 106 */ 106,/*LATINSMALLLETTERJ*/
- /* 107 */ 107,/*LATINSMALLLETTERK*/
- /* 108 */ 108,/*LATINSMALLLETTERL*/
- /* 109 */ 109,/*LATINSMALLLETTERM*/
- /* 110 */ 110,/*LATINSMALLLETTERN*/
- /* 111 */ 111,/*LATINSMALLLETTERO*/
- /* 112 */ 112,/*LATINSMALLLETTERP*/
- /* 113 */ 113,/*LATINSMALLLETTERQ*/
- /* 114 */ 114,/*LATINSMALLLETTERR*/
- /* 115 */ 115,/*LATINSMALLLETTERS*/
- /* 116 */ 116,/*LATINSMALLLETTERT*/
- /* 117 */ 117,/*LATINSMALLLETTERU*/
- /* 118 */ 118,/*LATINSMALLLETTERV*/
- /* 119 */ 119,/*LATINSMALLLETTERW*/
- /* 120 */ 120,/*LATINSMALLLETTERX*/
- /* 121 */ 121,/*LATINSMALLLETTERY*/
- /* 122 */ 122,/*LATINSMALLLETTERZ*/
- /* 123 */ 123,/*LEFTCURLYBRACKET*/
- /* 124 */ 124,/*VERTICALLINE*/
- /* 125 */ 125,/*RIGHTCURLYBRACKET*/
- /* 126 */ 126,/*TILDE*/
- 127,
- /* 128 */ 8364,/*EUROSIGN*/
- 129,
- /* 130 */ 8218,/*SINGLELOW-9QUOTATIONMARK*/
- 131,
- /* 132 */ 8222,/*DOUBLELOW-9QUOTATIONMARK*/
- /* 133 */ 8230,/*HORIZONTALELLIPSIS*/
- /* 134 */ 8224,/*DAGGER*/
- /* 135 */ 8225,/*DOUBLEDAGGER*/
- 136,
- /* 137 */ 8240,/*PERMILLESIGN*/
- /* 138 */ 352,/*LATINCAPITALLETTERSWITHCARON*/
- /* 139 */ 8249,/*SINGLELEFT-POINTINGANGLEQUOTATIONMARK*/
- /* 140 */ 346,/*LATINCAPITALLETTERSWITHACUTE*/
- /* 141 */ 356,/*LATINCAPITALLETTERTWITHCARON*/
- /* 142 */ 381,/*LATINCAPITALLETTERZWITHCARON*/
- /* 143 */ 377,/*LATINCAPITALLETTERZWITHACUTE*/
- 144,
- /* 145 */ 8216,/*LEFTSINGLEQUOTATIONMARK*/
- /* 146 */ 8217,/*RIGHTSINGLEQUOTATIONMARK*/
- /* 147 */ 8220,/*LEFTDOUBLEQUOTATIONMARK*/
- /* 148 */ 8221,/*RIGHTDOUBLEQUOTATIONMARK*/
- /* 149 */ 8226,/*BULLET*/
- /* 150 */ 8211,/*ENDASH*/
- /* 151 */ 8212,/*EMDASH*/
- 152,
- /* 153 */ 8482,/*TRADEMARKSIGN*/
- /* 154 */ 353,/*LATINSMALLLETTERSWITHCARON*/
- /* 155 */ 8250,/*SINGLERIGHT-POINTINGANGLEQUOTATIONMARK*/
- /* 156 */ 347,/*LATINSMALLLETTERSWITHACUTE*/
- /* 157 */ 357,/*LATINSMALLLETTERTWITHCARON*/
- /* 158 */ 382,/*LATINSMALLLETTERZWITHCARON*/
- /* 159 */ 378,/*LATINSMALLLETTERZWITHACUTE*/
- /* 160 */ 160,/*NO-BREAKSPACE*/
- /* 161 */ 711,/*CARON*/
- /* 162 */ 728,/*BREVE*/
- /* 163 */ 321,/*LATINCAPITALLETTERLWITHSTROKE*/
- /* 164 */ 164,/*CURRENCYSIGN*/
- /* 165 */ 260,/*LATINCAPITALLETTERAWITHOGONEK*/
- /* 166 */ 166,/*BROKENBAR*/
- /* 167 */ 167,/*SECTIONSIGN*/
- /* 168 */ 168,/*DIAERESIS*/
- /* 169 */ 169,/*COPYRIGHTSIGN*/
- /* 170 */ 350,/*LATINCAPITALLETTERSWITHCEDILLA*/
- /* 171 */ 171,/*LEFT-POINTINGDOUBLEANGLEQUOTATIONMARK*/
- /* 172 */ 172,/*NOTSIGN*/
- /* 173 */ 173,/*SOFTHYPHEN*/
- /* 174 */ 174,/*REGISTEREDSIGN*/
- /* 175 */ 379,/*LATINCAPITALLETTERZWITHDOTABOVE*/
- /* 176 */ 176,/*DEGREESIGN*/
- /* 177 */ 177,/*PLUS-MINUSSIGN*/
- /* 178 */ 731,/*OGONEK*/
- /* 179 */ 322,/*LATINSMALLLETTERLWITHSTROKE*/
- /* 180 */ 180,/*ACUTEACCENT*/
- /* 181 */ 181,/*MICROSIGN*/
- /* 182 */ 182,/*PILCROWSIGN*/
- /* 183 */ 183,/*MIDDLEDOT*/
- /* 184 */ 184,/*CEDILLA*/
- /* 185 */ 261,/*LATINSMALLLETTERAWITHOGONEK*/
- /* 186 */ 351,/*LATINSMALLLETTERSWITHCEDILLA*/
- /* 187 */ 187,/*RIGHT-POINTINGDOUBLEANGLEQUOTATIONMARK*/
- /* 188 */ 376,/*LATINCAPITALLETTERYWITHDIAERESIS*/
- /* 189 */ 733,/*DOUBLEACUTEACCENT*/
- /* 190 */ 317,/*LATINCAPITALLETTERLWITHCARON*/
- /* 191 */ 380,/*LATINSMALLLETTERZWITHDOTABOVE*/
- /* 192 */ 340,/*LATINCAPITALLETTERRWITHACUTE*/
- /* 193 */ 193,/*LATINCAPITALLETTERAWITHACUTE*/
- /* 194 */ 194,/*LATINCAPITALLETTERAWITHCIRCUMFLEX*/
- /* 195 */ 258,/*LATINCAPITALLETTERAWITHBREVE*/
- /* 196 */ 196,/*LATINCAPITALLETTERAWITHDIAERESIS*/
- /* 197 */ 313,/*LATINCAPITALLETTERLWITHACUTE*/
- /* 198 */ 262,/*LATINCAPITALLETTERCWITHACUTE*/
- /* 199 */ 199,/*LATINCAPITALLETTERCWITHCEDILLA*/
- /* 200 */ 268,/*LATINCAPITALLETTERCWITHCARON*/
- /* 201 */ 201,/*LATINCAPITALLETTEREWITHACUTE*/
- /* 202 */ 280,/*LATINCAPITALLETTEREWITHOGONEK*/
- /* 203 */ 203,/*LATINCAPITALLETTEREWITHDIAERESIS*/
- /* 204 */ 282,/*LATINCAPITALLETTEREWITHCARON*/
- /* 205 */ 205,/*LATINCAPITALLETTERIWITHACUTE*/
- /* 206 */ 206,/*LATINCAPITALLETTERIWITHCIRCUMFLEX*/
- /* 207 */ 270,/*LATINCAPITALLETTERDWITHCARON*/
- /* 208 */ 272,/*LATINCAPITALLETTERDWITHSTROKE*/
- /* 209 */ 323,/*LATINCAPITALLETTERNWITHACUTE*/
- /* 210 */ 327,/*LATINCAPITALLETTERNWITHCARON*/
- /* 211 */ 211,/*LATINCAPITALLETTEROWITHACUTE*/
- /* 212 */ 212,/*LATINCAPITALLETTEROWITHCIRCUMFLEX*/
- /* 213 */ 336,/*LATINCAPITALLETTEROWITHDOUBLEACUTE*/
- /* 214 */ 214,/*LATINCAPITALLETTEROWITHDIAERESIS*/
- /* 215 */ 215,/*MULTIPLICATIONSIGN*/
- /* 216 */ 344,/*LATINCAPITALLETTERRWITHCARON*/
- /* 217 */ 366,/*LATINCAPITALLETTERUWITHRINGABOVE*/
- /* 218 */ 218,/*LATINCAPITALLETTERUWITHACUTE*/
- /* 219 */ 368,/*LATINCAPITALLETTERUWITHDOUBLEACUTE*/
- /* 220 */ 220,/*LATINCAPITALLETTERUWITHDIAERESIS*/
- /* 221 */ 221,/*LATINCAPITALLETTERYWITHACUTE*/
- /* 222 */ 354,/*LATINCAPITALLETTERTWITHCEDILLA*/
- /* 223 */ 223,/*LATINSMALLLETTERSHARPS*/
- /* 224 */ 341,/*LATINSMALLLETTERRWITHACUTE*/
- /* 225 */ 225,/*LATINSMALLLETTERAWITHACUTE*/
- /* 226 */ 226,/*LATINSMALLLETTERAWITHCIRCUMFLEX*/
- /* 227 */ 259,/*LATINSMALLLETTERAWITHBREVE*/
- /* 228 */ 228,/*LATINSMALLLETTERAWITHDIAERESIS*/
- /* 229 */ 314,/*LATINSMALLLETTERLWITHACUTE*/
- /* 230 */ 263,/*LATINSMALLLETTERCWITHACUTE*/
- /* 231 */ 231,/*LATINSMALLLETTERCWITHCEDILLA*/
- /* 232 */ 269,/*LATINSMALLLETTERCWITHCARON*/
- /* 233 */ 233,/*LATINSMALLLETTEREWITHACUTE*/
- /* 234 */ 281,/*LATINSMALLLETTEREWITHOGONEK*/
- /* 235 */ 235,/*LATINSMALLLETTEREWITHDIAERESIS*/
- /* 236 */ 283,/*LATINSMALLLETTEREWITHCARON*/
- /* 237 */ 237,/*LATINSMALLLETTERIWITHACUTE*/
- /* 238 */ 238,/*LATINSMALLLETTERIWITHCIRCUMFLEX*/
- /* 239 */ 271,/*LATINSMALLLETTERDWITHCARON*/
- /* 240 */ 273,/*LATINSMALLLETTERDWITHSTROKE*/
- /* 241 */ 324,/*LATINSMALLLETTERNWITHACUTE*/
- /* 242 */ 328,/*LATINSMALLLETTERNWITHCARON*/
- /* 243 */ 243,/*LATINSMALLLETTEROWITHACUTE*/
- /* 244 */ 244,/*LATINSMALLLETTEROWITHCIRCUMFLEX*/
- /* 245 */ 337,/*LATINSMALLLETTEROWITHDOUBLEACUTE*/
- /* 246 */ 246,/*LATINSMALLLETTEROWITHDIAERESIS*/
- /* 247 */ 247,/*DIVISIONSIGN*/
- /* 248 */ 345,/*LATINSMALLLETTERRWITHCARON*/
- /* 249 */ 367,/*LATINSMALLLETTERUWITHRINGABOVE*/
- /* 250 */ 250,/*LATINSMALLLETTERUWITHACUTE*/
- /* 251 */ 369,/*LATINSMALLLETTERUWITHDOUBLEACUTE*/
- /* 252 */ 252,/*LATINSMALLLETTERUWITHDIAERESIS*/
- /* 253 */ 253,/*LATINSMALLLETTERYWITHACUTE*/
- /* 254 */ 355,/*LATINSMALLLETTERTWITHCEDILLA*/
- /* 255 */ 729/*DOTABOVE*/
+static convert_t cp850[] = {
+	{ 0, 0 },
+	{ 1, 1 },
+	{ 2, 2 },
+	{ 3, 3 },
+	{ 4, 4 },
+	{ 5, 5 },
+	{ 6, 6 },
+	{ 7, 7 },
+	{ 8, 8 },
+	{ 9, 9 },
+	{ 10, 10 },
+	{ 11, 11 },
+	{ 12, 12 },
+	{ 13, 13 },
+	{ 14, 14 },
+	{ 15, 15 },
+	{ 16, 16 },
+	{ 17, 17 },
+	{ 18, 18 },
+	{ 19, 19 },
+	{ 20, 20 },
+	{ 21, 21 },
+	{ 22, 22 },
+	{ 23, 23 },
+	{ 24, 24 },
+	{ 25, 25 },
+	{ 26, 26 },
+	{ 27, 27 },
+	{ 28, 28 },
+	{ 29, 29 },
+	{ 30, 30 },
+	{ 31, 31 },
+	{ 32, 32 },
+	{ 33, 33 },
+	{ 34, 34 },
+	{ 35, 35 },
+	{ 36, 36 },
+	{ 37, 37 },
+	{ 38, 38 },
+	{ 39, 39 },
+	{ 40, 40 },
+	{ 41, 41 },
+	{ 42, 42 },
+	{ 43, 43 },
+	{ 44, 44 },
+	{ 45, 45 },
+	{ 46, 46 },
+	{ 47, 47 },
+	{ 48, 48 },
+	{ 49, 49 },
+	{ 50, 50 },
+	{ 51, 51 },
+	{ 52, 52 },
+	{ 53, 53 },
+	{ 54, 54 },
+	{ 55, 55 },
+	{ 56, 56 },
+	{ 57, 57 },
+	{ 58, 58 },
+	{ 59, 59 },
+	{ 60, 60 },
+	{ 61, 61 },
+	{ 62, 62 },
+	{ 63, 63 },
+	{ 64, 64 },
+	{ 65, 65 },
+	{ 66, 66 },
+	{ 67, 67 },
+	{ 68, 68 },
+	{ 69, 69 },
+	{ 70, 70 },
+	{ 71, 71 },
+	{ 72, 72 },
+	{ 73, 73 },
+	{ 74, 74 },
+	{ 75, 75 },
+	{ 76, 76 },
+	{ 77, 77 },
+	{ 78, 78 },
+	{ 79, 79 },
+	{ 80, 80 },
+	{ 81, 81 },
+	{ 82, 82 },
+	{ 83, 83 },
+	{ 84, 84 },
+	{ 85, 85 },
+	{ 86, 86 },
+	{ 87, 87 },
+	{ 88, 88 },
+	{ 89, 89 },
+	{ 90, 90 },
+	{ 91, 91 },
+	{ 92, 92 },
+	{ 93, 93 },
+	{ 94, 94 },
+	{ 95, 95 },
+	{ 96, 96 },
+	{ 97, 97 },
+	{ 98, 98 },
+	{ 99, 99 },
+	{ 100, 100 },
+	{ 101, 101 },
+	{ 102, 102 },
+	{ 103, 103 },
+	{ 104, 104 },
+	{ 105, 105 },
+	{ 106, 106 },
+	{ 107, 107 },
+	{ 108, 108 },
+	{ 109, 109 },
+	{ 110, 110 },
+	{ 111, 111 },
+	{ 112, 112 },
+	{ 113, 113 },
+	{ 114, 114 },
+	{ 115, 115 },
+	{ 116, 116 },
+	{ 117, 117 },
+	{ 118, 118 },
+	{ 119, 119 },
+	{ 120, 120 },
+	{ 121, 121 },
+	{ 122, 122 },
+	{ 123, 123 },
+	{ 124, 124 },
+	{ 125, 125 },
+	{ 126, 126 },
+	{ 127, 127 },
+	{ 128, 199 },
+	{ 129, 252 },
+	{ 130, 233 },
+	{ 131, 226 },
+	{ 132, 228 },
+	{ 133, 224 },
+	{ 134, 229 },
+	{ 135, 231 },
+	{ 136, 234 },
+	{ 137, 235 },
+	{ 138, 232 },
+	{ 139, 239 },
+	{ 140, 238 },
+	{ 141, 236 },
+	{ 142, 196 },
+	{ 143, 197 },
+	{ 144, 201 },
+	{ 145, 230 },
+	{ 146, 198 },
+	{ 147, 244 },
+	{ 148, 246 },
+	{ 149, 242 },
+	{ 150, 251 },
+	{ 151, 249 },
+	{ 152, 255 },
+	{ 153, 214 },
+	{ 154, 220 },
+	{ 155, 248 },
+	{ 156, 163 },
+	{ 157, 216 },
+	{ 158, 215 },
+	{ 159, 402 },
+	{ 160, 225 },
+	{ 161, 237 },
+	{ 162, 243 },
+	{ 163, 250 },
+	{ 164, 241 },
+	{ 165, 209 },
+	{ 166, 170 },
+	{ 167, 186 },
+	{ 168, 191 },
+	{ 169, 174 },
+	{ 170, 172 },
+	{ 171, 189 },
+	{ 172, 188 },
+	{ 173, 161 },
+	{ 174, 171 },
+	{ 175, 187 },
+	{ 176, 9617 },
+	{ 177, 9618 },
+	{ 178, 9619 },
+	{ 179, 9474 },
+	{ 180, 9508 },
+	{ 181, 193 },
+	{ 182, 194 },
+	{ 183, 192 },
+	{ 184, 169 },
+	{ 185, 9571 },
+	{ 186, 9553 },
+	{ 187, 9559 },
+	{ 188, 9565 },
+	{ 189, 162 },
+	{ 190, 165 },
+	{ 191, 9488 },
+	{ 192, 9492 },
+	{ 193, 9524 },
+	{ 194, 9516 },
+	{ 195, 9500 },
+	{ 196, 9472 },
+	{ 197, 9532 },
+	{ 198, 227 },
+	{ 199, 195 },
+	{ 200, 9562 },
+	{ 201, 9556 },
+	{ 202, 9577 },
+	{ 203, 9574 },
+	{ 204, 9568 },
+	{ 205, 9552 },
+	{ 206, 9580 },
+	{ 207, 164 },
+	{ 208, 240 },
+	{ 209, 208 },
+	{ 210, 202 },
+	{ 211, 203 },
+	{ 212, 200 },
+	{ 213, 305 },
+	{ 214, 205 },
+	{ 215, 206 },
+	{ 216, 207 },
+	{ 217, 9496 },
+	{ 218, 9484 },
+	{ 219, 9608 },
+	{ 220, 9604 },
+	{ 221, 166 },
+	{ 222, 204 },
+	{ 223, 9600 },
+	{ 224, 211 },
+	{ 225, 223 },
+	{ 226, 212 },
+	{ 227, 210 },
+	{ 228, 245 },
+	{ 229, 213 },
+	{ 230, 181 },
+	{ 231, 254 },
+	{ 232, 222 },
+	{ 233, 218 },
+	{ 234, 219 },
+	{ 235, 217 },
+	{ 236, 253 },
+	{ 237, 221 },
+	{ 238, 175 },
+	{ 239, 180 },
+	{ 240, 173 },
+	{ 241, 177 },
+	{ 242, 8215 },
+	{ 243, 190 },
+	{ 244, 182 },
+	{ 245, 167 },
+	{ 246, 247 },
+	{ 247, 184 },
+	{ 248, 176 },
+	{ 249, 168 },
+	{ 250, 183 },
+	{ 251, 185 },
+	{ 252, 179 },
+	{ 253, 178 },
+	{ 254, 9632 },
+	{ 255, 160 },
+	{ 34, 8220 },
+	{ 34, 8221 },
+	{ 39, 8216 },
+	{ 39, 8217 },
+	{ 45, 8211 },
+	{ 45, 8212 },
+	{ 32, 8194 },
+	{ 32, 8195 },
+	{ 32, 8201 },
+	{ 65, 256 },
+	{ 65, 258 },
+	{ 65, 260 },
+	{ 65, 461 },
+	{ 97, 257 },
+	{ 97, 259 },
+	{ 97, 261 },
+	{ 97, 462 },
+	{ 67, 262 },
+	{ 67, 264 },
+	{ 67, 266 },
+	{ 67, 268 },
+	{ 99, 263 },
+	{ 99, 265 },
+	{ 99, 267 },
+	{ 99, 269 },
+	{ 68, 270 },
+	{ 100, 271 },
+	{ 69, 274 },
+	{ 69, 276 },
+	{ 69, 278 },
+	{ 69, 280 },
+	{ 69, 282 },
+	{ 101, 275 },
+	{ 101, 277 },
+	{ 101, 279 },
+	{ 101, 281 },
+	{ 101, 283 },
+	{ 71, 284 },
+	{ 71, 286 },
+	{ 71, 288 },
+	{ 71, 290 },
+	{ 71, 486 },
+	{ 71, 500 },
+	{ 103, 285 },
+	{ 103, 287 },
+	{ 103, 289 },
+	{ 103, 291 },
+	{ 103, 487 },
+	{ 103, 501 },
+	{ 72, 292 },
+	{ 104, 293 },
+	{ 73, 296 },
+	{ 73, 298 },
+	{ 73, 300 },
+	{ 73, 302 },
+	{ 73, 304 },
+	{ 73, 463 },
+	{ 105, 297 },
+	{ 105, 299 },
+	{ 105, 301 },
+	{ 105, 303 },
+	{ 105, 464 },
+	{ 74, 308 },
+	{ 106, 309 },
+	{ 75, 310 },
+	{ 75, 488 },
+	{ 107, 311 },
+	{ 107, 489 },
+	{ 76, 313 },
+	{ 76, 315 },
+	{ 76, 317 },
+	{ 76, 319 },
+	{ 76, 321 },
+	{ 108, 314 },
+	{ 108, 316 },
+	{ 108, 318 },
+	{ 108, 320 },
+	{ 108, 322 },
+	{ 77, 323 },
+	{ 77, 325 },
+	{ 77, 327 },
+	{ 109, 324 },
+	{ 109, 326 },
+	{ 109, 328 },
+	{ 109, 329 },
+	{ 78, 332 },
+	{ 78, 334 },
+	{ 78, 336 },
+	{ 78, 465 },
+	{ 78, 490 },
+	{ 110, 333 },
+	{ 110, 335 },
+	{ 110, 337 },
+	{ 110, 466 },
+	{ 110, 491 },
+	{ 82, 340 },
+	{ 82, 342 },
+	{ 82, 344 },
+	{ 114, 341 },
+	{ 114, 343 },
+	{ 114, 345 },
+	{ 83, 346 },
+	{ 83, 348 },
+	{ 83, 350 },
+	{ 83, 352 },
+	{ 115, 347 },
+	{ 115, 349 },
+	{ 115, 351 },
+	{ 115, 353 },
+	{ 84, 354 },
+	{ 84, 356 },
+	{ 116, 355 },
+	{ 116, 357 },
+	{ 85, 360 },
+	{ 85, 362 },
+	{ 85, 364 },
+	{ 85, 366 },
+	{ 85, 368 },
+	{ 85, 370 },
+	{ 85, 467 },
+	{ 117, 361 },
+	{ 117, 363 },
+	{ 117, 365 },
+	{ 117, 367 },
+	{ 117, 369 },
+	{ 117, 371 },
+	{ 117, 468 },
+	{ 87, 372 },
+	{ 119, 373 },
+	{ 89, 374 },
+	{ 89, 376 },
+	{ 121, 375 },
+	{ 90, 377 },
+	{ 90, 379 },
+	{ 90, 381 },
+	{ 122, 378 },
+	{ 122, 380 },
+	{ 122, 382 },
 };
-charconvert cp1251[] = {
- /* 0 */ 0,/*<tdbgcolor="C0C0C0"><fontface="Arial"color="000000"><b>ISO/IEC10646-1:2000CharacterName</b></font>*/
- 1,
- 2,
- 3,
- 4,
- 5,
- 6,
- 7,
- 8,
- 9,
- 10,
- 11,
- 12,
- 13,
- 14,
- 15,
- 16,
- 17,
- 18,
- 19,
- 20,
- 21,
- 22,
- 23,
- 24,
- 25,
- 26,
- 27,
- 28,
- 29,
- 30,
- 31,
- /* 32 */ 32,/*SPACE*/
- /* 33 */ 33,/*EXCLAMATIONMARK*/
- /* 34 */ 34,/*QUOTATIONMARK*/
- /* 35 */ 35,/*NUMBERSIGN*/
- /* 36 */ 36,/*DOLLARSIGN*/
- /* 37 */ 37,/*PERCENTSIGN*/
- /* 38 */ 38,/*AMPERSAND*/
- /* 39 */ 39,/*APOSTROPHE*/
- /* 40 */ 40,/*LEFTPARENTHESIS*/
- /* 41 */ 41,/*RIGHTPARENTHESIS*/
- /* 42 */ 42,/*ASTERISK*/
- /* 43 */ 43,/*PLUSSIGN*/
- /* 44 */ 44,/*COMMA*/
- /* 45 */ 45,/*HYPHEN-MINUS*/
- /* 46 */ 46,/*FULLSTOP*/
- /* 47 */ 47,/*SOLIDUS*/
- /* 48 */ 48,/*DIGITZERO*/
- /* 49 */ 49,/*DIGITONE*/
- /* 50 */ 50,/*DIGITTWO*/
- /* 51 */ 51,/*DIGITTHREE*/
- /* 52 */ 52,/*DIGITFOUR*/
- /* 53 */ 53,/*DIGITFIVE*/
- /* 54 */ 54,/*DIGITSIX*/
- /* 55 */ 55,/*DIGITSEVEN*/
- /* 56 */ 56,/*DIGITEIGHT*/
- /* 57 */ 57,/*DIGITNINE*/
- /* 58 */ 58,/*COLON*/
- /* 59 */ 59,/*SEMICOLON*/
- /* 60 */ 60,/*LESS-THANSIGN*/
- /* 61 */ 61,/*EQUALSSIGN*/
- /* 62 */ 62,/*GREATER-THANSIGN*/
- /* 63 */ 63,/*QUESTIONMARK*/
- /* 64 */ 64,/*COMMERCIALAT*/
- /* 65 */ 65,/*LATINCAPITALLETTERA*/
- /* 66 */ 66,/*LATINCAPITALLETTERB*/
- /* 67 */ 67,/*LATINCAPITALLETTERC*/
- /* 68 */ 68,/*LATINCAPITALLETTERD*/
- /* 69 */ 69,/*LATINCAPITALLETTERE*/
- /* 70 */ 70,/*LATINCAPITALLETTERF*/
- /* 71 */ 71,/*LATINCAPITALLETTERG*/
- /* 72 */ 72,/*LATINCAPITALLETTERH*/
- /* 73 */ 73,/*LATINCAPITALLETTERI*/
- /* 74 */ 74,/*LATINCAPITALLETTERJ*/
- /* 75 */ 75,/*LATINCAPITALLETTERK*/
- /* 76 */ 76,/*LATINCAPITALLETTERL*/
- /* 77 */ 77,/*LATINCAPITALLETTERM*/
- /* 78 */ 78,/*LATINCAPITALLETTERN*/
- /* 79 */ 79,/*LATINCAPITALLETTERO*/
- /* 80 */ 80,/*LATINCAPITALLETTERP*/
- /* 81 */ 81,/*LATINCAPITALLETTERQ*/
- /* 82 */ 82,/*LATINCAPITALLETTERR*/
- /* 83 */ 83,/*LATINCAPITALLETTERS*/
- /* 84 */ 84,/*LATINCAPITALLETTERT*/
- /* 85 */ 85,/*LATINCAPITALLETTERU*/
- /* 86 */ 86,/*LATINCAPITALLETTERV*/
- /* 87 */ 87,/*LATINCAPITALLETTERW*/
- /* 88 */ 88,/*LATINCAPITALLETTERX*/
- /* 89 */ 89,/*LATINCAPITALLETTERY*/
- /* 90 */ 90,/*LATINCAPITALLETTERZ*/
- /* 91 */ 91,/*LEFTSQUAREBRACKET*/
- /* 92 */ 92,/*REVERSESOLIDUS*/
- /* 93 */ 93,/*RIGHTSQUAREBRACKET*/
- /* 94 */ 94,/*CIRCUMFLEXACCENT*/
- /* 95 */ 95,/*LOWLINE*/
- /* 96 */ 96,/*GRAVEACCENT*/
- /* 97 */ 97,/*LATINSMALLLETTERA*/
- /* 98 */ 98,/*LATINSMALLLETTERB*/
- /* 99 */ 99,/*LATINSMALLLETTERC*/
- /* 100 */ 100,/*LATINSMALLLETTERD*/
- /* 101 */ 101,/*LATINSMALLLETTERE*/
- /* 102 */ 102,/*LATINSMALLLETTERF*/
- /* 103 */ 103,/*LATINSMALLLETTERG*/
- /* 104 */ 104,/*LATINSMALLLETTERH*/
- /* 105 */ 105,/*LATINSMALLLETTERI*/
- /* 106 */ 106,/*LATINSMALLLETTERJ*/
- /* 107 */ 107,/*LATINSMALLLETTERK*/
- /* 108 */ 108,/*LATINSMALLLETTERL*/
- /* 109 */ 109,/*LATINSMALLLETTERM*/
- /* 110 */ 110,/*LATINSMALLLETTERN*/
- /* 111 */ 111,/*LATINSMALLLETTERO*/
- /* 112 */ 112,/*LATINSMALLLETTERP*/
- /* 113 */ 113,/*LATINSMALLLETTERQ*/
- /* 114 */ 114,/*LATINSMALLLETTERR*/
- /* 115 */ 115,/*LATINSMALLLETTERS*/
- /* 116 */ 116,/*LATINSMALLLETTERT*/
- /* 117 */ 117,/*LATINSMALLLETTERU*/
- /* 118 */ 118,/*LATINSMALLLETTERV*/
- /* 119 */ 119,/*LATINSMALLLETTERW*/
- /* 120 */ 120,/*LATINSMALLLETTERX*/
- /* 121 */ 121,/*LATINSMALLLETTERY*/
- /* 122 */ 122,/*LATINSMALLLETTERZ*/
- /* 123 */ 123,/*LEFTCURLYBRACKET*/
- /* 124 */ 124,/*VERTICALLINE*/
- /* 125 */ 125,/*RIGHTCURLYBRACKET*/
- /* 126 */ 126,/*TILDE*/
- 127,
- /* 128 */ 1026,/*CYRILLICCAPITALLETTERDJE*/
- /* 129 */ 1027,/*CYRILLICCAPITALLETTERGJE*/
- /* 130 */ 8218,/*SINGLELOW-9QUOTATIONMARK*/
- /* 131 */ 1107,/*CYRILLICSMALLLETTERGJE*/
- /* 132 */ 8222,/*DOUBLELOW-9QUOTATIONMARK*/
- /* 133 */ 8230,/*HORIZONTALELLIPSIS*/
- /* 134 */ 8224,/*DAGGER*/
- /* 135 */ 8225,/*DOUBLEDAGGER*/
- /* 136 */ 8364,/*EUROSIGN*/
- /* 137 */ 8240,/*PERMILLESIGN*/
- /* 138 */ 1033,/*CYRILLICCAPITALLETTERLJE*/
- /* 139 */ 8249,/*SINGLELEFT-POINTINGANGLEQUOTATIONMARK*/
- /* 140 */ 1034,/*CYRILLICCAPITALLETTERNJE*/
- /* 141 */ 1036,/*CYRILLICCAPITALLETTERKJE*/
- /* 142 */ 1035,/*CYRILLICCAPITALLETTERTSHE*/
- /* 143 */ 1039,/*CYRILLICCAPITALLETTERDZHE*/
- /* 144 */ 1106,/*CYRILLICSMALLLETTERDJE*/
- /* 145 */ 8216,/*LEFTSINGLEQUOTATIONMARK*/
- /* 146 */ 8217,/*RIGHTSINGLEQUOTATIONMARK*/
- /* 147 */ 8220,/*LEFTDOUBLEQUOTATIONMARK*/
- /* 148 */ 8221,/*RIGHTDOUBLEQUOTATIONMARK*/
- /* 149 */ 8226,/*BULLET*/
- /* 150 */ 8211,/*ENDASH*/
- /* 151 */ 8212,/*EMDASH*/
- 152,
- /* 153 */ 8482,/*TRADEMARKSIGN*/
- /* 154 */ 1113,/*CYRILLICSMALLLETTERLJE*/
- /* 155 */ 8250,/*SINGLERIGHT-POINTINGANGLEQUOTATIONMARK*/
- /* 156 */ 1114,/*CYRILLICSMALLLETTERNJE*/
- /* 157 */ 1116,/*CYRILLICSMALLLETTERKJE*/
- /* 158 */ 1115,/*CYRILLICSMALLLETTERTSHE*/
- /* 159 */ 1119,/*CYRILLICSMALLLETTERDZHE*/
- /* 160 */ 160,/*NO-BREAKSPACE*/
- /* 161 */ 1038,/*CYRILLICCAPITALLETTERSHORTU*/
- /* 162 */ 1118,/*CYRILLICSMALLLETTERSHORTU*/
- /* 163 */ 1032,/*CYRILLICCAPITALLETTERJE*/
- /* 164 */ 164,/*CURRENCYSIGN*/
- /* 165 */ 1168,/*CYRILLICCAPITALLETTERGHEWITHUPTURN*/
- /* 166 */ 166,/*BROKENBAR*/
- /* 167 */ 167,/*SECTIONSIGN*/
- /* 168 */ 1025,/*CYRILLICCAPITALLETTERIO*/
- /* 169 */ 169,/*COPYRIGHTSIGN*/
- /* 170 */ 1028,/*CYRILLICCAPITALLETTERUKRAINIANIE*/
- /* 171 */ 171,/*LEFT-POINTINGDOUBLEANGLEQUOTATIONMARK*/
- /* 172 */ 172,/*NOTSIGN*/
- /* 173 */ 173,/*SOFTHYPHEN*/
- /* 174 */ 174,/*REGISTEREDSIGN*/
- /* 175 */ 1031,/*CYRILLICCAPITALLETTERYI*/
- /* 176 */ 176,/*DEGREESIGN*/
- /* 177 */ 177,/*PLUS-MINUSSIGN*/
- /* 178 */ 1030,/*CYRILLICCAPITALLETTERBYELORUSSIAN-UKRAINIANI*/
- /* 179 */ 1110,/*CYRILLICSMALLLETTERBYELORUSSIAN-UKRAINIANI*/
- /* 180 */ 1169,/*CYRILLICSMALLLETTERGHEWITHUPTURN*/
- /* 181 */ 181,/*MICROSIGN*/
- /* 182 */ 182,/*PILCROWSIGN*/
- /* 183 */ 183,/*MIDDLEDOT*/
- /* 184 */ 1105,/*CYRILLICSMALLLETTERIO*/
- /* 185 */ 8470,/*NUMEROSIGN*/
- /* 186 */ 1108,/*CYRILLICSMALLLETTERUKRAINIANIE*/
- /* 187 */ 187,/*RIGHT-POINTINGDOUBLEANGLEQUOTATIONMARK*/
- /* 188 */ 1112,/*CYRILLICSMALLLETTERJE*/
- /* 189 */ 1029,/*CYRILLICCAPITALLETTERDZE*/
- /* 190 */ 1109,/*CYRILLICSMALLLETTERDZE*/
- /* 191 */ 1111,/*CYRILLICSMALLLETTERYI*/
- /* 192 */ 1040,/*CYRILLICCAPITALLETTERA*/
- /* 193 */ 1041,/*CYRILLICCAPITALLETTERBE*/
- /* 194 */ 1042,/*CYRILLICCAPITALLETTERVE*/
- /* 195 */ 1043,/*CYRILLICCAPITALLETTERGHE*/
- /* 196 */ 1044,/*CYRILLICCAPITALLETTERDE*/
- /* 197 */ 1045,/*CYRILLICCAPITALLETTERIE*/
- /* 198 */ 1046,/*CYRILLICCAPITALLETTERZHE*/
- /* 199 */ 1047,/*CYRILLICCAPITALLETTERZE*/
- /* 200 */ 1048,/*CYRILLICCAPITALLETTERI*/
- /* 201 */ 1049,/*CYRILLICCAPITALLETTERSHORTI*/
- /* 202 */ 1050,/*CYRILLICCAPITALLETTERKA*/
- /* 203 */ 1051,/*CYRILLICCAPITALLETTEREL*/
- /* 204 */ 1052,/*CYRILLICCAPITALLETTEREM*/
- /* 205 */ 1053,/*CYRILLICCAPITALLETTEREN*/
- /* 206 */ 1054,/*CYRILLICCAPITALLETTERO*/
- /* 207 */ 1055,/*CYRILLICCAPITALLETTERPE*/
- /* 208 */ 1056,/*CYRILLICCAPITALLETTERER*/
- /* 209 */ 1057,/*CYRILLICCAPITALLETTERES*/
- /* 210 */ 1058,/*CYRILLICCAPITALLETTERTE*/
- /* 211 */ 1059,/*CYRILLICCAPITALLETTERU*/
- /* 212 */ 1060,/*CYRILLICCAPITALLETTEREF*/
- /* 213 */ 1061,/*CYRILLICCAPITALLETTERHA*/
- /* 214 */ 1062,/*CYRILLICCAPITALLETTERTSE*/
- /* 215 */ 1063,/*CYRILLICCAPITALLETTERCHE*/
- /* 216 */ 1064,/*CYRILLICCAPITALLETTERSHA*/
- /* 217 */ 1065,/*CYRILLICCAPITALLETTERSHCHA*/
- /* 218 */ 1066,/*CYRILLICCAPITALLETTERHARDSIGN*/
- /* 219 */ 1067,/*CYRILLICCAPITALLETTERYERU*/
- /* 220 */ 1068,/*CYRILLICCAPITALLETTERSOFTSIGN*/
- /* 221 */ 1069,/*CYRILLICCAPITALLETTERE*/
- /* 222 */ 1070,/*CYRILLICCAPITALLETTERYU*/
- /* 223 */ 1071,/*CYRILLICCAPITALLETTERYA*/
- /* 224 */ 1072,/*CYRILLICSMALLLETTERA*/
- /* 225 */ 1073,/*CYRILLICSMALLLETTERBE*/
- /* 226 */ 1074,/*CYRILLICSMALLLETTERVE*/
- /* 227 */ 1075,/*CYRILLICSMALLLETTERGHE*/
- /* 228 */ 1076,/*CYRILLICSMALLLETTERDE*/
- /* 229 */ 1077,/*CYRILLICSMALLLETTERIE*/
- /* 230 */ 1078,/*CYRILLICSMALLLETTERZHE*/
- /* 231 */ 1079,/*CYRILLICSMALLLETTERZE*/
- /* 232 */ 1080,/*CYRILLICSMALLLETTERI*/
- /* 233 */ 1081,/*CYRILLICSMALLLETTERSHORTI*/
- /* 234 */ 1082,/*CYRILLICSMALLLETTERKA*/
- /* 235 */ 1083,/*CYRILLICSMALLLETTEREL*/
- /* 236 */ 1084,/*CYRILLICSMALLLETTEREM*/
- /* 237 */ 1085,/*CYRILLICSMALLLETTEREN*/
- /* 238 */ 1086,/*CYRILLICSMALLLETTERO*/
- /* 239 */ 1087,/*CYRILLICSMALLLETTERPE*/
- /* 240 */ 1088,/*CYRILLICSMALLLETTERER*/
- /* 241 */ 1089,/*CYRILLICSMALLLETTERES*/
- /* 242 */ 1090,/*CYRILLICSMALLLETTERTE*/
- /* 243 */ 1091,/*CYRILLICSMALLLETTERU*/
- /* 244 */ 1092,/*CYRILLICSMALLLETTEREF*/
- /* 245 */ 1093,/*CYRILLICSMALLLETTERHA*/
- /* 246 */ 1094,/*CYRILLICSMALLLETTERTSE*/
- /* 247 */ 1095,/*CYRILLICSMALLLETTERCHE*/
- /* 248 */ 1096,/*CYRILLICSMALLLETTERSHA*/
- /* 249 */ 1097,/*CYRILLICSMALLLETTERSHCHA*/
- /* 250 */ 1098,/*CYRILLICSMALLLETTERHARDSIGN*/
- /* 251 */ 1099,/*CYRILLICSMALLLETTERYERU*/
- /* 252 */ 1100,/*CYRILLICSMALLLETTERSOFTSIGN*/
- /* 253 */ 1101,/*CYRILLICSMALLLETTERE*/
- /* 254 */ 1102,/*CYRILLICSMALLLETTERYU*/
- /* 255 */ 1103/*CYRILLICSMALLLETTERYA*/
+static convert_t cp851[] = {
+	{ 0, 0 },
+	{ 1, 1 },
+	{ 2, 2 },
+	{ 3, 3 },
+	{ 4, 4 },
+	{ 5, 5 },
+	{ 6, 6 },
+	{ 7, 7 },
+	{ 8, 8 },
+	{ 9, 9 },
+	{ 10, 10 },
+	{ 11, 11 },
+	{ 12, 12 },
+	{ 13, 13 },
+	{ 14, 14 },
+	{ 15, 15 },
+	{ 16, 16 },
+	{ 17, 17 },
+	{ 18, 18 },
+	{ 19, 19 },
+	{ 20, 20 },
+	{ 21, 21 },
+	{ 22, 22 },
+	{ 23, 23 },
+	{ 24, 24 },
+	{ 25, 25 },
+	{ 26, 26 },
+	{ 27, 27 },
+	{ 28, 28 },
+	{ 29, 29 },
+	{ 30, 30 },
+	{ 31, 31 },
+	{ 32, 32 },
+	{ 33, 33 },
+	{ 34, 34 },
+	{ 35, 35 },
+	{ 36, 36 },
+	{ 37, 37 },
+	{ 38, 38 },
+	{ 39, 39 },
+	{ 40, 40 },
+	{ 41, 41 },
+	{ 42, 42 },
+	{ 43, 43 },
+	{ 44, 44 },
+	{ 45, 45 },
+	{ 46, 46 },
+	{ 47, 47 },
+	{ 48, 48 },
+	{ 49, 49 },
+	{ 50, 50 },
+	{ 51, 51 },
+	{ 52, 52 },
+	{ 53, 53 },
+	{ 54, 54 },
+	{ 55, 55 },
+	{ 56, 56 },
+	{ 57, 57 },
+	{ 58, 58 },
+	{ 59, 59 },
+	{ 60, 60 },
+	{ 61, 61 },
+	{ 62, 62 },
+	{ 63, 63 },
+	{ 64, 64 },
+	{ 65, 65 },
+	{ 66, 66 },
+	{ 67, 67 },
+	{ 68, 68 },
+	{ 69, 69 },
+	{ 70, 70 },
+	{ 71, 71 },
+	{ 72, 72 },
+	{ 73, 73 },
+	{ 74, 74 },
+	{ 75, 75 },
+	{ 76, 76 },
+	{ 77, 77 },
+	{ 78, 78 },
+	{ 79, 79 },
+	{ 80, 80 },
+	{ 81, 81 },
+	{ 82, 82 },
+	{ 83, 83 },
+	{ 84, 84 },
+	{ 85, 85 },
+	{ 86, 86 },
+	{ 87, 87 },
+	{ 88, 88 },
+	{ 89, 89 },
+	{ 90, 90 },
+	{ 91, 91 },
+	{ 92, 92 },
+	{ 93, 93 },
+	{ 94, 94 },
+	{ 95, 95 },
+	{ 96, 96 },
+	{ 97, 97 },
+	{ 98, 98 },
+	{ 99, 99 },
+	{ 100, 100 },
+	{ 101, 101 },
+	{ 102, 102 },
+	{ 103, 103 },
+	{ 104, 104 },
+	{ 105, 105 },
+	{ 106, 106 },
+	{ 107, 107 },
+	{ 108, 108 },
+	{ 109, 109 },
+	{ 110, 110 },
+	{ 111, 111 },
+	{ 112, 112 },
+	{ 113, 113 },
+	{ 114, 114 },
+	{ 115, 115 },
+	{ 116, 116 },
+	{ 117, 117 },
+	{ 118, 118 },
+	{ 119, 119 },
+	{ 120, 120 },
+	{ 121, 121 },
+	{ 122, 122 },
+	{ 123, 123 },
+	{ 124, 124 },
+	{ 125, 125 },
+	{ 126, 126 },
+	{ 127, 127 },
+	{ 128, 199 },
+	{ 129, 252 },
+	{ 130, 233 },
+	{ 131, 226 },
+	{ 132, 228 },
+	{ 133, 224 },
+	{ 134, 902 },
+	{ 135, 231 },
+	{ 136, 234 },
+	{ 137, 235 },
+	{ 138, 232 },
+	{ 139, 239 },
+	{ 140, 238 },
+	{ 141, 904 },
+	{ 142, 196 },
+	{ 143, 905 },
+	{ 144, 906 },
+	{ 145, 145 },
+	{ 146, 908 },
+	{ 147, 244 },
+	{ 148, 246 },
+	{ 149, 910 },
+	{ 150, 251 },
+	{ 151, 249 },
+	{ 152, 911 },
+	{ 153, 214 },
+	{ 154, 220 },
+	{ 155, 940 },
+	{ 156, 163 },
+	{ 157, 941 },
+	{ 158, 942 },
+	{ 159, 943 },
+	{ 160, 970 },
+	{ 161, 912 },
+	{ 162, 972 },
+	{ 163, 973 },
+	{ 164, 913 },
+	{ 165, 914 },
+	{ 166, 915 },
+	{ 167, 916 },
+	{ 168, 917 },
+	{ 169, 918 },
+	{ 170, 919 },
+	{ 171, 189 },
+	{ 172, 920 },
+	{ 173, 921 },
+	{ 174, 171 },
+	{ 175, 187 },
+	{ 176, 9617 },
+	{ 177, 9618 },
+	{ 178, 9619 },
+	{ 179, 9474 },
+	{ 180, 9508 },
+	{ 181, 922 },
+	{ 182, 923 },
+	{ 183, 924 },
+	{ 184, 925 },
+	{ 185, 9571 },
+	{ 186, 9553 },
+	{ 187, 9559 },
+	{ 188, 9565 },
+	{ 189, 926 },
+	{ 190, 927 },
+	{ 191, 9488 },
+	{ 192, 9492 },
+	{ 193, 9524 },
+	{ 194, 9516 },
+	{ 195, 9500 },
+	{ 196, 9472 },
+	{ 197, 9532 },
+	{ 198, 928 },
+	{ 199, 929 },
+	{ 200, 9562 },
+	{ 201, 9556 },
+	{ 202, 9577 },
+	{ 203, 9574 },
+	{ 204, 9568 },
+	{ 205, 9552 },
+	{ 206, 9580 },
+	{ 207, 931 },
+	{ 208, 932 },
+	{ 209, 933 },
+	{ 210, 934 },
+	{ 211, 935 },
+	{ 212, 936 },
+	{ 213, 937 },
+	{ 214, 945 },
+	{ 215, 946 },
+	{ 216, 947 },
+	{ 217, 9496 },
+	{ 218, 9484 },
+	{ 219, 9608 },
+	{ 220, 9604 },
+	{ 221, 948 },
+	{ 222, 949 },
+	{ 223, 9600 },
+	{ 224, 950 },
+	{ 225, 951 },
+	{ 226, 952 },
+	{ 227, 953 },
+	{ 228, 954 },
+	{ 229, 955 },
+	{ 230, 956 },
+	{ 231, 957 },
+	{ 232, 958 },
+	{ 233, 959 },
+	{ 234, 960 },
+	{ 235, 961 },
+	{ 236, 963 },
+	{ 237, 962 },
+	{ 238, 964 },
+	{ 239, 900 },
+	{ 240, 173 },
+	{ 241, 177 },
+	{ 242, 965 },
+	{ 243, 966 },
+	{ 244, 967 },
+	{ 245, 167 },
+	{ 246, 968 },
+	{ 247, 901 },
+	{ 248, 176 },
+	{ 249, 168 },
+	{ 250, 969 },
+	{ 251, 971 },
+	{ 252, 944 },
+	{ 253, 974 },
+	{ 254, 9632 },
+	{ 255, 160 },
+	{ 34, 8220 },
+	{ 34, 8221 },
+	{ 39, 8216 },
+	{ 39, 8217 },
+	{ 45, 8211 },
+	{ 45, 8212 },
+	{ 32, 8194 },
+	{ 32, 8195 },
+	{ 32, 8201 },
+	{ 65, 192 },
+	{ 65, 193 },
+	{ 65, 194 },
+	{ 65, 195 },
+	{ 65, 197 },
+	{ 65, 256 },
+	{ 65, 258 },
+	{ 65, 260 },
+	{ 65, 461 },
+	{ 97, 225 },
+	{ 97, 227 },
+	{ 97, 229 },
+	{ 97, 257 },
+	{ 97, 259 },
+	{ 97, 261 },
+	{ 97, 462 },
+	{ 67, 262 },
+	{ 67, 264 },
+	{ 67, 266 },
+	{ 67, 268 },
+	{ 99, 263 },
+	{ 99, 265 },
+	{ 99, 267 },
+	{ 99, 269 },
+	{ 68, 270 },
+	{ 100, 271 },
+	{ 69, 200 },
+	{ 69, 201 },
+	{ 69, 202 },
+	{ 69, 203 },
+	{ 69, 274 },
+	{ 69, 276 },
+	{ 69, 278 },
+	{ 69, 280 },
+	{ 69, 282 },
+	{ 101, 275 },
+	{ 101, 277 },
+	{ 101, 279 },
+	{ 101, 281 },
+	{ 101, 283 },
+	{ 71, 284 },
+	{ 71, 286 },
+	{ 71, 288 },
+	{ 71, 290 },
+	{ 71, 486 },
+	{ 71, 500 },
+	{ 103, 285 },
+	{ 103, 287 },
+	{ 103, 289 },
+	{ 103, 291 },
+	{ 103, 487 },
+	{ 103, 501 },
+	{ 72, 292 },
+	{ 104, 293 },
+	{ 73, 204 },
+	{ 73, 205 },
+	{ 73, 206 },
+	{ 73, 207 },
+	{ 73, 296 },
+	{ 73, 298 },
+	{ 73, 300 },
+	{ 73, 302 },
+	{ 73, 304 },
+	{ 73, 463 },
+	{ 105, 236 },
+	{ 105, 237 },
+	{ 105, 297 },
+	{ 105, 299 },
+	{ 105, 301 },
+	{ 105, 303 },
+	{ 105, 305 },
+	{ 105, 464 },
+	{ 74, 308 },
+	{ 106, 309 },
+	{ 75, 310 },
+	{ 75, 488 },
+	{ 107, 311 },
+	{ 107, 489 },
+	{ 76, 313 },
+	{ 76, 315 },
+	{ 76, 317 },
+	{ 76, 319 },
+	{ 76, 321 },
+	{ 108, 314 },
+	{ 108, 316 },
+	{ 108, 318 },
+	{ 108, 320 },
+	{ 108, 322 },
+	{ 77, 209 },
+	{ 77, 323 },
+	{ 77, 325 },
+	{ 77, 327 },
+	{ 109, 241 },
+	{ 109, 324 },
+	{ 109, 326 },
+	{ 109, 328 },
+	{ 109, 329 },
+	{ 78, 210 },
+	{ 78, 211 },
+	{ 78, 212 },
+	{ 78, 213 },
+	{ 78, 216 },
+	{ 78, 332 },
+	{ 78, 334 },
+	{ 78, 336 },
+	{ 78, 465 },
+	{ 78, 490 },
+	{ 110, 242 },
+	{ 110, 243 },
+	{ 110, 245 },
+	{ 110, 248 },
+	{ 110, 333 },
+	{ 110, 335 },
+	{ 110, 337 },
+	{ 110, 466 },
+	{ 110, 491 },
+	{ 82, 340 },
+	{ 82, 342 },
+	{ 82, 344 },
+	{ 114, 341 },
+	{ 114, 343 },
+	{ 114, 345 },
+	{ 83, 346 },
+	{ 83, 348 },
+	{ 83, 350 },
+	{ 83, 352 },
+	{ 115, 347 },
+	{ 115, 349 },
+	{ 115, 351 },
+	{ 115, 353 },
+	{ 84, 354 },
+	{ 84, 356 },
+	{ 116, 355 },
+	{ 116, 357 },
+	{ 85, 217 },
+	{ 85, 218 },
+	{ 85, 219 },
+	{ 85, 360 },
+	{ 85, 362 },
+	{ 85, 364 },
+	{ 85, 366 },
+	{ 85, 368 },
+	{ 85, 370 },
+	{ 85, 467 },
+	{ 117, 250 },
+	{ 117, 361 },
+	{ 117, 363 },
+	{ 117, 365 },
+	{ 117, 367 },
+	{ 117, 369 },
+	{ 117, 371 },
+	{ 117, 468 },
+	{ 87, 372 },
+	{ 119, 373 },
+	{ 89, 221 },
+	{ 89, 374 },
+	{ 89, 376 },
+	{ 121, 253 },
+	{ 121, 255 },
+	{ 121, 375 },
+	{ 90, 377 },
+	{ 90, 379 },
+	{ 90, 381 },
+	{ 122, 378 },
+	{ 122, 380 },
+	{ 122, 382 },
 };
-charconvert cp1252[] = {
- /* 0 */ 0,/*<tdbgcolor="C0C0C0"><fontface="Arial"color="000000"><b>ISO/IEC10646-1:2000CharacterName</b></font>*/
- 1,
- 2,
- 3,
- 4,
- 5,
- 6,
- 7,
- 8,
- 9,
- 10,
- 11,
- 12,
- 13,
- 14,
- 15,
- 16,
- 17,
- 18,
- 19,
- 20,
- 21,
- 22,
- 23,
- 24,
- 25,
- 26,
- 27,
- 28,
- 29,
- 30,
- 31,
- /* 32 */ 32,/*SPACE*/
- /* 33 */ 33,/*EXCLAMATIONMARK*/
- /* 34 */ 34,/*QUOTATIONMARK*/
- /* 35 */ 35,/*NUMBERSIGN*/
- /* 36 */ 36,/*DOLLARSIGN*/
- /* 37 */ 37,/*PERCENTSIGN*/
- /* 38 */ 38,/*AMPERSAND*/
- /* 39 */ 39,/*APOSTROPHE*/
- /* 40 */ 40,/*LEFTPARENTHESIS*/
- /* 41 */ 41,/*RIGHTPARENTHESIS*/
- /* 42 */ 42,/*ASTERISK*/
- /* 43 */ 43,/*PLUSSIGN*/
- /* 44 */ 44,/*COMMA*/
- /* 45 */ 45,/*HYPHEN-MINUS*/
- /* 46 */ 46,/*FULLSTOP*/
- /* 47 */ 47,/*SOLIDUS*/
- /* 48 */ 48,/*DIGITZERO*/
- /* 49 */ 49,/*DIGITONE*/
- /* 50 */ 50,/*DIGITTWO*/
- /* 51 */ 51,/*DIGITTHREE*/
- /* 52 */ 52,/*DIGITFOUR*/
- /* 53 */ 53,/*DIGITFIVE*/
- /* 54 */ 54,/*DIGITSIX*/
- /* 55 */ 55,/*DIGITSEVEN*/
- /* 56 */ 56,/*DIGITEIGHT*/
- /* 57 */ 57,/*DIGITNINE*/
- /* 58 */ 58,/*COLON*/
- /* 59 */ 59,/*SEMICOLON*/
- /* 60 */ 60,/*LESS-THANSIGN*/
- /* 61 */ 61,/*EQUALSSIGN*/
- /* 62 */ 62,/*GREATER-THANSIGN*/
- /* 63 */ 63,/*QUESTIONMARK*/
- /* 64 */ 64,/*COMMERCIALAT*/
- /* 65 */ 65,/*LATINCAPITALLETTERA*/
- /* 66 */ 66,/*LATINCAPITALLETTERB*/
- /* 67 */ 67,/*LATINCAPITALLETTERC*/
- /* 68 */ 68,/*LATINCAPITALLETTERD*/
- /* 69 */ 69,/*LATINCAPITALLETTERE*/
- /* 70 */ 70,/*LATINCAPITALLETTERF*/
- /* 71 */ 71,/*LATINCAPITALLETTERG*/
- /* 72 */ 72,/*LATINCAPITALLETTERH*/
- /* 73 */ 73,/*LATINCAPITALLETTERI*/
- /* 74 */ 74,/*LATINCAPITALLETTERJ*/
- /* 75 */ 75,/*LATINCAPITALLETTERK*/
- /* 76 */ 76,/*LATINCAPITALLETTERL*/
- /* 77 */ 77,/*LATINCAPITALLETTERM*/
- /* 78 */ 78,/*LATINCAPITALLETTERN*/
- /* 79 */ 79,/*LATINCAPITALLETTERO*/
- /* 80 */ 80,/*LATINCAPITALLETTERP*/
- /* 81 */ 81,/*LATINCAPITALLETTERQ*/
- /* 82 */ 82,/*LATINCAPITALLETTERR*/
- /* 83 */ 83,/*LATINCAPITALLETTERS*/
- /* 84 */ 84,/*LATINCAPITALLETTERT*/
- /* 85 */ 85,/*LATINCAPITALLETTERU*/
- /* 86 */ 86,/*LATINCAPITALLETTERV*/
- /* 87 */ 87,/*LATINCAPITALLETTERW*/
- /* 88 */ 88,/*LATINCAPITALLETTERX*/
- /* 89 */ 89,/*LATINCAPITALLETTERY*/
- /* 90 */ 90,/*LATINCAPITALLETTERZ*/
- /* 91 */ 91,/*LEFTSQUAREBRACKET*/
- /* 92 */ 92,/*REVERSESOLIDUS*/
- /* 93 */ 93,/*RIGHTSQUAREBRACKET*/
- /* 94 */ 94,/*CIRCUMFLEXACCENT*/
- /* 95 */ 95,/*LOWLINE*/
- /* 96 */ 96,/*GRAVEACCENT*/
- /* 97 */ 97,/*LATINSMALLLETTERA*/
- /* 98 */ 98,/*LATINSMALLLETTERB*/
- /* 99 */ 99,/*LATINSMALLLETTERC*/
- /* 100 */ 100,/*LATINSMALLLETTERD*/
- /* 101 */ 101,/*LATINSMALLLETTERE*/
- /* 102 */ 102,/*LATINSMALLLETTERF*/
- /* 103 */ 103,/*LATINSMALLLETTERG*/
- /* 104 */ 104,/*LATINSMALLLETTERH*/
- /* 105 */ 105,/*LATINSMALLLETTERI*/
- /* 106 */ 106,/*LATINSMALLLETTERJ*/
- /* 107 */ 107,/*LATINSMALLLETTERK*/
- /* 108 */ 108,/*LATINSMALLLETTERL*/
- /* 109 */ 109,/*LATINSMALLLETTERM*/
- /* 110 */ 110,/*LATINSMALLLETTERN*/
- /* 111 */ 111,/*LATINSMALLLETTERO*/
- /* 112 */ 112,/*LATINSMALLLETTERP*/
- /* 113 */ 113,/*LATINSMALLLETTERQ*/
- /* 114 */ 114,/*LATINSMALLLETTERR*/
- /* 115 */ 115,/*LATINSMALLLETTERS*/
- /* 116 */ 116,/*LATINSMALLLETTERT*/
- /* 117 */ 117,/*LATINSMALLLETTERU*/
- /* 118 */ 118,/*LATINSMALLLETTERV*/
- /* 119 */ 119,/*LATINSMALLLETTERW*/
- /* 120 */ 120,/*LATINSMALLLETTERX*/
- /* 121 */ 121,/*LATINSMALLLETTERY*/
- /* 122 */ 122,/*LATINSMALLLETTERZ*/
- /* 123 */ 123,/*LEFTCURLYBRACKET*/
- /* 124 */ 124,/*VERTICALLINE*/
- /* 125 */ 125,/*RIGHTCURLYBRACKET*/
- /* 126 */ 126,/*TILDE*/
- 127,
- /* 128 */ 8364,/*EUROSIGN*/
- 129,
- /* 130 */ 8218,/*SINGLELOW-9QUOTATIONMARK*/
- /* 131 */ 402,/*LATINSMALLLETTERFWITHHOOK*/
- /* 132 */ 8222,/*DOUBLELOW-9QUOTATIONMARK*/
- /* 133 */ 8230,/*HORIZONTALELLIPSIS*/
- /* 134 */ 8224,/*DAGGER*/
- /* 135 */ 8225,/*DOUBLEDAGGER*/
- /* 136 */ 710,/*MODIFIERLETTERCIRCUMFLEXACCENT*/
- /* 137 */ 8240,/*PERMILLESIGN*/
- /* 138 */ 352,/*LATINCAPITALLETTERSWITHCARON*/
- /* 139 */ 8249,/*SINGLELEFT-POINTINGANGLEQUOTATIONMARK*/
- /* 140 */ 338,/*LATINCAPITALLIGATUREOE*/
- 141,
- /* 142 */ 381,/*LATINCAPITALLETTERZWITHCARON*/
- 143,
- 144,
- /* 145 */ 8216,/*LEFTSINGLEQUOTATIONMARK*/
- /* 146 */ 8217,/*RIGHTSINGLEQUOTATIONMARK*/
- /* 147 */ 8220,/*LEFTDOUBLEQUOTATIONMARK*/
- /* 148 */ 8221,/*RIGHTDOUBLEQUOTATIONMARK*/
- /* 149 */ 8226,/*BULLET*/
- /* 150 */ 8211,/*ENDASH*/
- /* 151 */ 8212,/*EMDASH*/
- /* 152 */ 732,/*SMALLTILDE*/
- /* 153 */ 8482,/*TRADEMARKSIGN*/
- /* 154 */ 353,/*LATINSMALLLETTERSWITHCARON*/
- /* 155 */ 8250,/*SINGLERIGHT-POINTINGANGLEQUOTATIONMARK*/
- /* 156 */ 339,/*LATINSMALLLIGATUREOE*/
- 157,
- /* 158 */ 382,/*LATINSMALLLETTERZWITHCARON*/
- /* 159 */ 376,/*LATINCAPITALLETTERYWITHDIAERESIS*/
- /* 160 */ 160,/*NO-BREAKSPACE*/
- /* 161 */ 161,/*INVERTEDEXCLAMATIONMARK*/
- /* 162 */ 162,/*CENTSIGN*/
- /* 163 */ 163,/*POUNDSIGN*/
- /* 164 */ 164,/*CURRENCYSIGN*/
- /* 165 */ 165,/*YENSIGN*/
- /* 166 */ 166,/*BROKENBAR*/
- /* 167 */ 167,/*SECTIONSIGN*/
- /* 168 */ 168,/*DIAERESIS*/
- /* 169 */ 169,/*COPYRIGHTSIGN*/
- /* 170 */ 170,/*FEMININEORDINALINDICATOR*/
- /* 171 */ 171,/*LEFT-POINTINGDOUBLEANGLEQUOTATIONMARK*/
- /* 172 */ 172,/*NOTSIGN*/
- /* 173 */ 173,/*SOFTHYPHEN*/
- /* 174 */ 174,/*REGISTEREDSIGN*/
- /* 175 */ 175,/*MACRON*/
- /* 176 */ 176,/*DEGREESIGN*/
- /* 177 */ 177,/*PLUS-MINUSSIGN*/
- /* 178 */ 178,/*SUPERSCRIPTTWO*/
- /* 179 */ 179,/*SUPERSCRIPTTHREE*/
- /* 180 */ 180,/*ACUTEACCENT*/
- /* 181 */ 181,/*MICROSIGN*/
- /* 182 */ 182,/*PILCROWSIGN*/
- /* 183 */ 183,/*MIDDLEDOT*/
- /* 184 */ 184,/*CEDILLA*/
- /* 185 */ 185,/*SUPERSCRIPTONE*/
- /* 186 */ 186,/*MASCULINEORDINALINDICATOR*/
- /* 187 */ 187,/*RIGHT-POINTINGDOUBLEANGLEQUOTATIONMARK*/
- /* 188 */ 188,/*VULGARFRACTIONONEQUARTER*/
- /* 189 */ 189,/*VULGARFRACTIONONEHALF*/
- /* 190 */ 190,/*VULGARFRACTIONTHREEQUARTERS*/
- /* 191 */ 191,/*INVERTEDQUESTIONMARK*/
- /* 192 */ 192,/*LATINCAPITALLETTERAWITHGRAVE*/
- /* 193 */ 193,/*LATINCAPITALLETTERAWITHACUTE*/
- /* 194 */ 194,/*LATINCAPITALLETTERAWITHCIRCUMFLEX*/
- /* 195 */ 195,/*LATINCAPITALLETTERAWITHTILDE*/
- /* 196 */ 196,/*LATINCAPITALLETTERAWITHDIAERESIS*/
- /* 197 */ 197,/*LATINCAPITALLETTERAWITHRINGABOVE*/
- /* 198 */ 198,/*LATINCAPITALLETTERAE*/
- /* 199 */ 199,/*LATINCAPITALLETTERCWITHCEDILLA*/
- /* 200 */ 200,/*LATINCAPITALLETTEREWITHGRAVE*/
- /* 201 */ 201,/*LATINCAPITALLETTEREWITHACUTE*/
- /* 202 */ 202,/*LATINCAPITALLETTEREWITHCIRCUMFLEX*/
- /* 203 */ 203,/*LATINCAPITALLETTEREWITHDIAERESIS*/
- /* 204 */ 204,/*LATINCAPITALLETTERIWITHGRAVE*/
- /* 205 */ 205,/*LATINCAPITALLETTERIWITHACUTE*/
- /* 206 */ 206,/*LATINCAPITALLETTERIWITHCIRCUMFLEX*/
- /* 207 */ 207,/*LATINCAPITALLETTERIWITHDIAERESIS*/
- /* 208 */ 208,/*LATINCAPITALLETTERETH*/
- /* 209 */ 209,/*LATINCAPITALLETTERNWITHTILDE*/
- /* 210 */ 210,/*LATINCAPITALLETTEROWITHGRAVE*/
- /* 211 */ 211,/*LATINCAPITALLETTEROWITHACUTE*/
- /* 212 */ 212,/*LATINCAPITALLETTEROWITHCIRCUMFLEX*/
- /* 213 */ 213,/*LATINCAPITALLETTEROWITHTILDE*/
- /* 214 */ 214,/*LATINCAPITALLETTEROWITHDIAERESIS*/
- /* 215 */ 215,/*MULTIPLICATIONSIGN*/
- /* 216 */ 216,/*LATINCAPITALLETTEROWITHSTROKE*/
- /* 217 */ 217,/*LATINCAPITALLETTERUWITHGRAVE*/
- /* 218 */ 218,/*LATINCAPITALLETTERUWITHACUTE*/
- /* 219 */ 219,/*LATINCAPITALLETTERUWITHCIRCUMFLEX*/
- /* 220 */ 220,/*LATINCAPITALLETTERUWITHDIAERESIS*/
- /* 221 */ 221,/*LATINCAPITALLETTERYWITHACUTE*/
- /* 222 */ 222,/*LATINCAPITALLETTERTHORN*/
- /* 223 */ 223,/*LATINSMALLLETTERSHARPS*/
- /* 224 */ 224,/*LATINSMALLLETTERAWITHGRAVE*/
- /* 225 */ 225,/*LATINSMALLLETTERAWITHACUTE*/
- /* 226 */ 226,/*LATINSMALLLETTERAWITHCIRCUMFLEX*/
- /* 227 */ 227,/*LATINSMALLLETTERAWITHTILDE*/
- /* 228 */ 228,/*LATINSMALLLETTERAWITHDIAERESIS*/
- /* 229 */ 229,/*LATINSMALLLETTERAWITHRINGABOVE*/
- /* 230 */ 230,/*LATINSMALLLETTERAE*/
- /* 231 */ 231,/*LATINSMALLLETTERCWITHCEDILLA*/
- /* 232 */ 232,/*LATINSMALLLETTEREWITHGRAVE*/
- /* 233 */ 233,/*LATINSMALLLETTEREWITHACUTE*/
- /* 234 */ 234,/*LATINSMALLLETTEREWITHCIRCUMFLEX*/
- /* 235 */ 235,/*LATINSMALLLETTEREWITHDIAERESIS*/
- /* 236 */ 236,/*LATINSMALLLETTERIWITHGRAVE*/
- /* 237 */ 237,/*LATINSMALLLETTERIWITHACUTE*/
- /* 238 */ 238,/*LATINSMALLLETTERIWITHCIRCUMFLEX*/
- /* 239 */ 239,/*LATINSMALLLETTERIWITHDIAERESIS*/
- /* 240 */ 240,/*LATINSMALLLETTERETH*/
- /* 241 */ 241,/*LATINSMALLLETTERNWITHTILDE*/
- /* 242 */ 242,/*LATINSMALLLETTEROWITHGRAVE*/
- /* 243 */ 243,/*LATINSMALLLETTEROWITHACUTE*/
- /* 244 */ 244,/*LATINSMALLLETTEROWITHCIRCUMFLEX*/
- /* 245 */ 245,/*LATINSMALLLETTEROWITHTILDE*/
- /* 246 */ 246,/*LATINSMALLLETTEROWITHDIAERESIS*/
- /* 247 */ 247,/*DIVISIONSIGN*/
- /* 248 */ 248,/*LATINSMALLLETTEROWITHSTROKE*/
- /* 249 */ 249,/*LATINSMALLLETTERUWITHGRAVE*/
- /* 250 */ 250,/*LATINSMALLLETTERUWITHACUTE*/
- /* 251 */ 251,/*LATINSMALLLETTERUWITHCIRCUMFLEX*/
- /* 252 */ 252,/*LATINSMALLLETTERUWITHDIAERESIS*/
- /* 253 */ 253,/*LATINSMALLLETTERYWITHACUTE*/
- /* 254 */ 254,/*LATINSMALLLETTERTHORN*/
- /* 255 */ 255/*LATINSMALLLETTERYWITHDIAERESIS*/
+static convert_t cp852[] = {
+	{ 0, 0 },
+	{ 1, 1 },
+	{ 2, 2 },
+	{ 3, 3 },
+	{ 4, 4 },
+	{ 5, 5 },
+	{ 6, 6 },
+	{ 7, 7 },
+	{ 8, 8 },
+	{ 9, 9 },
+	{ 10, 10 },
+	{ 11, 11 },
+	{ 12, 12 },
+	{ 13, 13 },
+	{ 14, 14 },
+	{ 15, 15 },
+	{ 16, 16 },
+	{ 17, 17 },
+	{ 18, 18 },
+	{ 19, 19 },
+	{ 20, 20 },
+	{ 21, 21 },
+	{ 22, 22 },
+	{ 23, 23 },
+	{ 24, 24 },
+	{ 25, 25 },
+	{ 26, 26 },
+	{ 27, 27 },
+	{ 28, 28 },
+	{ 29, 29 },
+	{ 30, 30 },
+	{ 31, 31 },
+	{ 32, 32 },
+	{ 33, 33 },
+	{ 34, 34 },
+	{ 35, 35 },
+	{ 36, 36 },
+	{ 37, 37 },
+	{ 38, 38 },
+	{ 39, 39 },
+	{ 40, 40 },
+	{ 41, 41 },
+	{ 42, 42 },
+	{ 43, 43 },
+	{ 44, 44 },
+	{ 45, 45 },
+	{ 46, 46 },
+	{ 47, 47 },
+	{ 48, 48 },
+	{ 49, 49 },
+	{ 50, 50 },
+	{ 51, 51 },
+	{ 52, 52 },
+	{ 53, 53 },
+	{ 54, 54 },
+	{ 55, 55 },
+	{ 56, 56 },
+	{ 57, 57 },
+	{ 58, 58 },
+	{ 59, 59 },
+	{ 60, 60 },
+	{ 61, 61 },
+	{ 62, 62 },
+	{ 63, 63 },
+	{ 64, 64 },
+	{ 65, 65 },
+	{ 66, 66 },
+	{ 67, 67 },
+	{ 68, 68 },
+	{ 69, 69 },
+	{ 70, 70 },
+	{ 71, 71 },
+	{ 72, 72 },
+	{ 73, 73 },
+	{ 74, 74 },
+	{ 75, 75 },
+	{ 76, 76 },
+	{ 77, 77 },
+	{ 78, 78 },
+	{ 79, 79 },
+	{ 80, 80 },
+	{ 81, 81 },
+	{ 82, 82 },
+	{ 83, 83 },
+	{ 84, 84 },
+	{ 85, 85 },
+	{ 86, 86 },
+	{ 87, 87 },
+	{ 88, 88 },
+	{ 89, 89 },
+	{ 90, 90 },
+	{ 91, 91 },
+	{ 92, 92 },
+	{ 93, 93 },
+	{ 94, 94 },
+	{ 95, 95 },
+	{ 96, 96 },
+	{ 97, 97 },
+	{ 98, 98 },
+	{ 99, 99 },
+	{ 100, 100 },
+	{ 101, 101 },
+	{ 102, 102 },
+	{ 103, 103 },
+	{ 104, 104 },
+	{ 105, 105 },
+	{ 106, 106 },
+	{ 107, 107 },
+	{ 108, 108 },
+	{ 109, 109 },
+	{ 110, 110 },
+	{ 111, 111 },
+	{ 112, 112 },
+	{ 113, 113 },
+	{ 114, 114 },
+	{ 115, 115 },
+	{ 116, 116 },
+	{ 117, 117 },
+	{ 118, 118 },
+	{ 119, 119 },
+	{ 120, 120 },
+	{ 121, 121 },
+	{ 122, 122 },
+	{ 123, 123 },
+	{ 124, 124 },
+	{ 125, 125 },
+	{ 126, 126 },
+	{ 127, 127 },
+	{ 128, 199 },
+	{ 129, 252 },
+	{ 130, 233 },
+	{ 131, 226 },
+	{ 132, 228 },
+	{ 133, 367 },
+	{ 134, 263 },
+	{ 135, 231 },
+	{ 136, 322 },
+	{ 137, 235 },
+	{ 138, 336 },
+	{ 139, 337 },
+	{ 140, 238 },
+	{ 141, 377 },
+	{ 142, 196 },
+	{ 143, 262 },
+	{ 144, 201 },
+	{ 145, 313 },
+	{ 146, 314 },
+	{ 147, 244 },
+	{ 148, 246 },
+	{ 149, 317 },
+	{ 150, 318 },
+	{ 151, 346 },
+	{ 152, 347 },
+	{ 153, 214 },
+	{ 154, 220 },
+	{ 155, 356 },
+	{ 156, 357 },
+	{ 157, 321 },
+	{ 158, 215 },
+	{ 159, 269 },
+	{ 160, 225 },
+	{ 161, 237 },
+	{ 162, 243 },
+	{ 163, 250 },
+	{ 164, 260 },
+	{ 165, 261 },
+	{ 166, 381 },
+	{ 167, 382 },
+	{ 168, 280 },
+	{ 169, 281 },
+	{ 170, 170 },
+	{ 171, 378 },
+	{ 172, 268 },
+	{ 173, 351 },
+	{ 174, 171 },
+	{ 175, 187 },
+	{ 176, 9617 },
+	{ 177, 9618 },
+	{ 178, 9619 },
+	{ 179, 9474 },
+	{ 180, 9508 },
+	{ 181, 193 },
+	{ 182, 194 },
+	{ 183, 282 },
+	{ 184, 350 },
+	{ 185, 9571 },
+	{ 186, 9553 },
+	{ 187, 9559 },
+	{ 188, 9565 },
+	{ 189, 379 },
+	{ 190, 380 },
+	{ 191, 9488 },
+	{ 192, 9492 },
+	{ 193, 9524 },
+	{ 194, 9516 },
+	{ 195, 9500 },
+	{ 196, 9472 },
+	{ 197, 9532 },
+	{ 198, 258 },
+	{ 199, 259 },
+	{ 200, 9562 },
+	{ 201, 9556 },
+	{ 202, 9577 },
+	{ 203, 9574 },
+	{ 204, 9568 },
+	{ 205, 9552 },
+	{ 206, 9580 },
+	{ 207, 164 },
+	{ 208, 273 },
+	{ 209, 272 },
+	{ 210, 270 },
+	{ 211, 203 },
+	{ 212, 271 },
+	{ 213, 327 },
+	{ 214, 205 },
+	{ 215, 206 },
+	{ 216, 283 },
+	{ 217, 9496 },
+	{ 218, 9484 },
+	{ 219, 9608 },
+	{ 220, 9604 },
+	{ 221, 354 },
+	{ 222, 366 },
+	{ 223, 9600 },
+	{ 224, 211 },
+	{ 225, 223 },
+	{ 226, 212 },
+	{ 227, 323 },
+	{ 228, 324 },
+	{ 229, 328 },
+	{ 230, 352 },
+	{ 231, 353 },
+	{ 232, 340 },
+	{ 233, 218 },
+	{ 234, 341 },
+	{ 235, 368 },
+	{ 236, 253 },
+	{ 237, 221 },
+	{ 238, 355 },
+	{ 239, 180 },
+	{ 240, 173 },
+	{ 241, 733 },
+	{ 242, 731 },
+	{ 243, 711 },
+	{ 244, 728 },
+	{ 245, 167 },
+	{ 246, 247 },
+	{ 247, 184 },
+	{ 248, 176 },
+	{ 249, 168 },
+	{ 250, 729 },
+	{ 251, 369 },
+	{ 252, 344 },
+	{ 253, 345 },
+	{ 254, 9632 },
+	{ 255, 160 },
+	{ 34, 8220 },
+	{ 34, 8221 },
+	{ 39, 8216 },
+	{ 39, 8217 },
+	{ 45, 8211 },
+	{ 45, 8212 },
+	{ 32, 8194 },
+	{ 32, 8195 },
+	{ 32, 8201 },
+	{ 65, 192 },
+	{ 65, 195 },
+	{ 65, 197 },
+	{ 65, 256 },
+	{ 65, 461 },
+	{ 97, 224 },
+	{ 97, 227 },
+	{ 97, 229 },
+	{ 97, 257 },
+	{ 97, 462 },
+	{ 67, 264 },
+	{ 67, 266 },
+	{ 99, 265 },
+	{ 99, 267 },
+	{ 69, 200 },
+	{ 69, 202 },
+	{ 69, 274 },
+	{ 69, 276 },
+	{ 69, 278 },
+	{ 101, 232 },
+	{ 101, 234 },
+	{ 101, 275 },
+	{ 101, 277 },
+	{ 101, 279 },
+	{ 71, 284 },
+	{ 71, 286 },
+	{ 71, 288 },
+	{ 71, 290 },
+	{ 71, 486 },
+	{ 71, 500 },
+	{ 103, 285 },
+	{ 103, 287 },
+	{ 103, 289 },
+	{ 103, 291 },
+	{ 103, 487 },
+	{ 103, 501 },
+	{ 72, 292 },
+	{ 104, 293 },
+	{ 73, 204 },
+	{ 73, 207 },
+	{ 73, 296 },
+	{ 73, 298 },
+	{ 73, 300 },
+	{ 73, 302 },
+	{ 73, 304 },
+	{ 73, 463 },
+	{ 105, 236 },
+	{ 105, 239 },
+	{ 105, 297 },
+	{ 105, 299 },
+	{ 105, 301 },
+	{ 105, 303 },
+	{ 105, 305 },
+	{ 105, 464 },
+	{ 74, 308 },
+	{ 106, 309 },
+	{ 75, 310 },
+	{ 75, 488 },
+	{ 107, 311 },
+	{ 107, 489 },
+	{ 76, 315 },
+	{ 76, 319 },
+	{ 108, 316 },
+	{ 108, 320 },
+	{ 77, 209 },
+	{ 77, 325 },
+	{ 109, 241 },
+	{ 109, 326 },
+	{ 109, 329 },
+	{ 78, 210 },
+	{ 78, 213 },
+	{ 78, 216 },
+	{ 78, 332 },
+	{ 78, 334 },
+	{ 78, 465 },
+	{ 78, 490 },
+	{ 110, 242 },
+	{ 110, 245 },
+	{ 110, 248 },
+	{ 110, 333 },
+	{ 110, 335 },
+	{ 110, 466 },
+	{ 110, 491 },
+	{ 82, 342 },
+	{ 114, 343 },
+	{ 83, 348 },
+	{ 115, 349 },
+	{ 85, 217 },
+	{ 85, 219 },
+	{ 85, 360 },
+	{ 85, 362 },
+	{ 85, 364 },
+	{ 85, 370 },
+	{ 85, 467 },
+	{ 117, 249 },
+	{ 117, 251 },
+	{ 117, 361 },
+	{ 117, 363 },
+	{ 117, 365 },
+	{ 117, 371 },
+	{ 117, 468 },
+	{ 87, 372 },
+	{ 119, 373 },
+	{ 89, 374 },
+	{ 89, 376 },
+	{ 121, 255 },
+	{ 121, 375 },
 };
-charconvert cp1253[] = {
- /* 0 */ 0,/*<tdbgcolor="C0C0C0"><fontface="Arial"color="000000"><b>ISO/IEC10646-1:2000CharacterName</b></font>*/
- 1,
- 2,
- 3,
- 4,
- 5,
- 6,
- 7,
- 8,
- 9,
- 10,
- 11,
- 12,
- 13,
- 14,
- 15,
- 16,
- 17,
- 18,
- 19,
- 20,
- 21,
- 22,
- 23,
- 24,
- 25,
- 26,
- 27,
- 28,
- 29,
- 30,
- 31,
- /* 32 */ 32,/*SPACE*/
- /* 33 */ 33,/*EXCLAMATIONMARK*/
- /* 34 */ 34,/*QUOTATIONMARK*/
- /* 35 */ 35,/*NUMBERSIGN*/
- /* 36 */ 36,/*DOLLARSIGN*/
- /* 37 */ 37,/*PERCENTSIGN*/
- /* 38 */ 38,/*AMPERSAND*/
- /* 39 */ 39,/*APOSTROPHE*/
- /* 40 */ 40,/*LEFTPARENTHESIS*/
- /* 41 */ 41,/*RIGHTPARENTHESIS*/
- /* 42 */ 42,/*ASTERISK*/
- /* 43 */ 43,/*PLUSSIGN*/
- /* 44 */ 44,/*COMMA*/
- /* 45 */ 45,/*HYPHEN-MINUS*/
- /* 46 */ 46,/*FULLSTOP*/
- /* 47 */ 47,/*SOLIDUS*/
- /* 48 */ 48,/*DIGITZERO*/
- /* 49 */ 49,/*DIGITONE*/
- /* 50 */ 50,/*DIGITTWO*/
- /* 51 */ 51,/*DIGITTHREE*/
- /* 52 */ 52,/*DIGITFOUR*/
- /* 53 */ 53,/*DIGITFIVE*/
- /* 54 */ 54,/*DIGITSIX*/
- /* 55 */ 55,/*DIGITSEVEN*/
- /* 56 */ 56,/*DIGITEIGHT*/
- /* 57 */ 57,/*DIGITNINE*/
- /* 58 */ 58,/*COLON*/
- /* 59 */ 59,/*SEMICOLON*/
- /* 60 */ 60,/*LESS-THANSIGN*/
- /* 61 */ 61,/*EQUALSSIGN*/
- /* 62 */ 62,/*GREATER-THANSIGN*/
- /* 63 */ 63,/*QUESTIONMARK*/
- /* 64 */ 64,/*COMMERCIALAT*/
- /* 65 */ 65,/*LATINCAPITALLETTERA*/
- /* 66 */ 66,/*LATINCAPITALLETTERB*/
- /* 67 */ 67,/*LATINCAPITALLETTERC*/
- /* 68 */ 68,/*LATINCAPITALLETTERD*/
- /* 69 */ 69,/*LATINCAPITALLETTERE*/
- /* 70 */ 70,/*LATINCAPITALLETTERF*/
- /* 71 */ 71,/*LATINCAPITALLETTERG*/
- /* 72 */ 72,/*LATINCAPITALLETTERH*/
- /* 73 */ 73,/*LATINCAPITALLETTERI*/
- /* 74 */ 74,/*LATINCAPITALLETTERJ*/
- /* 75 */ 75,/*LATINCAPITALLETTERK*/
- /* 76 */ 76,/*LATINCAPITALLETTERL*/
- /* 77 */ 77,/*LATINCAPITALLETTERM*/
- /* 78 */ 78,/*LATINCAPITALLETTERN*/
- /* 79 */ 79,/*LATINCAPITALLETTERO*/
- /* 80 */ 80,/*LATINCAPITALLETTERP*/
- /* 81 */ 81,/*LATINCAPITALLETTERQ*/
- /* 82 */ 82,/*LATINCAPITALLETTERR*/
- /* 83 */ 83,/*LATINCAPITALLETTERS*/
- /* 84 */ 84,/*LATINCAPITALLETTERT*/
- /* 85 */ 85,/*LATINCAPITALLETTERU*/
- /* 86 */ 86,/*LATINCAPITALLETTERV*/
- /* 87 */ 87,/*LATINCAPITALLETTERW*/
- /* 88 */ 88,/*LATINCAPITALLETTERX*/
- /* 89 */ 89,/*LATINCAPITALLETTERY*/
- /* 90 */ 90,/*LATINCAPITALLETTERZ*/
- /* 91 */ 91,/*LEFTSQUAREBRACKET*/
- /* 92 */ 92,/*REVERSESOLIDUS*/
- /* 93 */ 93,/*RIGHTSQUAREBRACKET*/
- /* 94 */ 94,/*CIRCUMFLEXACCENT*/
- /* 95 */ 95,/*LOWLINE*/
- /* 96 */ 96,/*GRAVEACCENT*/
- /* 97 */ 97,/*LATINSMALLLETTERA*/
- /* 98 */ 98,/*LATINSMALLLETTERB*/
- /* 99 */ 99,/*LATINSMALLLETTERC*/
- /* 100 */ 100,/*LATINSMALLLETTERD*/
- /* 101 */ 101,/*LATINSMALLLETTERE*/
- /* 102 */ 102,/*LATINSMALLLETTERF*/
- /* 103 */ 103,/*LATINSMALLLETTERG*/
- /* 104 */ 104,/*LATINSMALLLETTERH*/
- /* 105 */ 105,/*LATINSMALLLETTERI*/
- /* 106 */ 106,/*LATINSMALLLETTERJ*/
- /* 107 */ 107,/*LATINSMALLLETTERK*/
- /* 108 */ 108,/*LATINSMALLLETTERL*/
- /* 109 */ 109,/*LATINSMALLLETTERM*/
- /* 110 */ 110,/*LATINSMALLLETTERN*/
- /* 111 */ 111,/*LATINSMALLLETTERO*/
- /* 112 */ 112,/*LATINSMALLLETTERP*/
- /* 113 */ 113,/*LATINSMALLLETTERQ*/
- /* 114 */ 114,/*LATINSMALLLETTERR*/
- /* 115 */ 115,/*LATINSMALLLETTERS*/
- /* 116 */ 116,/*LATINSMALLLETTERT*/
- /* 117 */ 117,/*LATINSMALLLETTERU*/
- /* 118 */ 118,/*LATINSMALLLETTERV*/
- /* 119 */ 119,/*LATINSMALLLETTERW*/
- /* 120 */ 120,/*LATINSMALLLETTERX*/
- /* 121 */ 121,/*LATINSMALLLETTERY*/
- /* 122 */ 122,/*LATINSMALLLETTERZ*/
- /* 123 */ 123,/*LEFTCURLYBRACKET*/
- /* 124 */ 124,/*VERTICALLINE*/
- /* 125 */ 125,/*RIGHTCURLYBRACKET*/
- /* 126 */ 126,/*TILDE*/
- 127,
- /* 128 */ 8364,/*EUROSIGN*/
- 129,
- /* 130 */ 8218,/*SINGLELOW-9QUOTATIONMARK*/
- /* 131 */ 402,/*LATINSMALLLETTERFWITHHOOK*/
- /* 132 */ 8222,/*DOUBLELOW-9QUOTATIONMARK*/
- /* 133 */ 8230,/*HORIZONTALELLIPSIS*/
- /* 134 */ 8224,/*DAGGER*/
- /* 135 */ 8225,/*DOUBLEDAGGER*/
- 136,
- /* 137 */ 8240,/*PERMILLESIGN*/
- 138,
- /* 139 */ 8249,/*SINGLELEFT-POINTINGANGLEQUOTATIONMARK*/
- 140,
- 141,
- 142,
- 143,
- 144,
- /* 145 */ 8216,/*LEFTSINGLEQUOTATIONMARK*/
- /* 146 */ 8217,/*RIGHTSINGLEQUOTATIONMARK*/
- /* 147 */ 8220,/*LEFTDOUBLEQUOTATIONMARK*/
- /* 148 */ 8221,/*RIGHTDOUBLEQUOTATIONMARK*/
- /* 149 */ 8226,/*BULLET*/
- /* 150 */ 8211,/*ENDASH*/
- /* 151 */ 8212,/*EMDASH*/
- 152,
- /* 153 */ 8482,/*TRADEMARKSIGN*/
- 154,
- /* 155 */ 8250,/*SINGLERIGHT-POINTINGANGLEQUOTATIONMARK*/
- 156,
- 157,
- 158,
- 159,
- /* 160 */ 160,/*NO-BREAKSPACE*/
- /* 161 */ 901,/*GREEKDIALYTIKATONOS*/
- /* 162 */ 902,/*GREEKCAPITALLETTERALPHAWITHTONOS*/
- /* 163 */ 163,/*POUNDSIGN*/
- /* 164 */ 164,/*CURRENCYSIGN*/
- /* 165 */ 165,/*YENSIGN*/
- /* 166 */ 166,/*BROKENBAR*/
- /* 167 */ 167,/*SECTIONSIGN*/
- /* 168 */ 168,/*DIAERESIS*/
- /* 169 */ 169,/*COPYRIGHTSIGN*/
- 170,
- /* 171 */ 171,/*LEFT-POINTINGDOUBLEANGLEQUOTATIONMARK*/
- /* 172 */ 172,/*NOTSIGN*/
- /* 173 */ 173,/*SOFTHYPHEN*/
- /* 174 */ 174,/*REGISTEREDSIGN*/
- /* 175 */ 8213,/*HORIZONTALBAR*/
- /* 176 */ 176,/*DEGREESIGN*/
- /* 177 */ 177,/*PLUS-MINUSSIGN*/
- /* 178 */ 178,/*SUPERSCRIPTTWO*/
- /* 179 */ 179,/*SUPERSCRIPTTHREE*/
- /* 180 */ 900,/*GREEKTONOS*/
- /* 181 */ 181,/*MICROSIGN*/
- /* 182 */ 182,/*PILCROWSIGN*/
- /* 183 */ 183,/*MIDDLEDOT*/
- /* 184 */ 904,/*GREEKCAPITALLETTEREPSILONWITHTONOS*/
- /* 185 */ 905,/*GREEKCAPITALLETTERETAWITHTONOS*/
- /* 186 */ 906,/*GREEKCAPITALLETTERIOTAWITHTONOS*/
- /* 187 */ 187,/*RIGHT-POINTINGDOUBLEANGLEQUOTATIONMARK*/
- /* 188 */ 908,/*GREEKCAPITALLETTEROMICRONWITHTONOS*/
- /* 189 */ 189,/*VULGARFRACTIONONEHALF*/
- /* 190 */ 910,/*GREEKCAPITALLETTERUPSILONWITHTONOS*/
- /* 191 */ 911,/*GREEKCAPITALLETTEROMEGAWITHTONOS*/
- /* 192 */ 912,/*GREEKSMALLLETTERIOTAWITHDIALYTIKAANDTONOS*/
- /* 193 */ 913,/*GREEKCAPITALLETTERALPHA*/
- /* 194 */ 914,/*GREEKCAPITALLETTERBETA*/
- /* 195 */ 915,/*GREEKCAPITALLETTERGAMMA*/
- /* 196 */ 916,/*GREEKCAPITALLETTERDELTA*/
- /* 197 */ 917,/*GREEKCAPITALLETTEREPSILON*/
- /* 198 */ 918,/*GREEKCAPITALLETTERZETA*/
- /* 199 */ 919,/*GREEKCAPITALLETTERETA*/
- /* 200 */ 920,/*GREEKCAPITALLETTERTHETA*/
- /* 201 */ 921,/*GREEKCAPITALLETTERIOTA*/
- /* 202 */ 922,/*GREEKCAPITALLETTERKAPPA*/
- /* 203 */ 923,/*GREEKCAPITALLETTERLAMDA*/
- /* 204 */ 924,/*GREEKCAPITALLETTERMU*/
- /* 205 */ 925,/*GREEKCAPITALLETTERNU*/
- /* 206 */ 926,/*GREEKCAPITALLETTERXI*/
- /* 207 */ 927,/*GREEKCAPITALLETTEROMICRON*/
- /* 208 */ 928,/*GREEKCAPITALLETTERPI*/
- /* 209 */ 929,/*GREEKCAPITALLETTERRHO*/
- 210,
- /* 211 */ 931,/*GREEKCAPITALLETTERSIGMA*/
- /* 212 */ 932,/*GREEKCAPITALLETTERTAU*/
- /* 213 */ 933,/*GREEKCAPITALLETTERUPSILON*/
- /* 214 */ 934,/*GREEKCAPITALLETTERPHI*/
- /* 215 */ 935,/*GREEKCAPITALLETTERCHI*/
- /* 216 */ 936,/*GREEKCAPITALLETTERPSI*/
- /* 217 */ 937,/*GREEKCAPITALLETTEROMEGA*/
- /* 218 */ 938,/*GREEKCAPITALLETTERIOTAWITHDIALYTIKA*/
- /* 219 */ 939,/*GREEKCAPITALLETTERUPSILONWITHDIALYTIKA*/
- /* 220 */ 940,/*GREEKSMALLLETTERALPHAWITHTONOS*/
- /* 221 */ 941,/*GREEKSMALLLETTEREPSILONWITHTONOS*/
- /* 222 */ 942,/*GREEKSMALLLETTERETAWITHTONOS*/
- /* 223 */ 943,/*GREEKSMALLLETTERIOTAWITHTONOS*/
- /* 224 */ 944,/*GREEKSMALLLETTERUPSILONWITHDIALYTIKAANDTONOS*/
- /* 225 */ 945,/*GREEKSMALLLETTERALPHA*/
- /* 226 */ 946,/*GREEKSMALLLETTERBETA*/
- /* 227 */ 947,/*GREEKSMALLLETTERGAMMA*/
- /* 228 */ 948,/*GREEKSMALLLETTERDELTA*/
- /* 229 */ 949,/*GREEKSMALLLETTEREPSILON*/
- /* 230 */ 950,/*GREEKSMALLLETTERZETA*/
- /* 231 */ 951,/*GREEKSMALLLETTERETA*/
- /* 232 */ 952,/*GREEKSMALLLETTERTHETA*/
- /* 233 */ 953,/*GREEKSMALLLETTERIOTA*/
- /* 234 */ 954,/*GREEKSMALLLETTERKAPPA*/
- /* 235 */ 955,/*GREEKSMALLLETTERLAMDA*/
- /* 236 */ 956,/*GREEKSMALLLETTERMU*/
- /* 237 */ 957,/*GREEKSMALLLETTERNU*/
- /* 238 */ 958,/*GREEKSMALLLETTERXI*/
- /* 239 */ 959,/*GREEKSMALLLETTEROMICRON*/
- /* 240 */ 960,/*GREEKSMALLLETTERPI*/
- /* 241 */ 961,/*GREEKSMALLLETTERRHO*/
- /* 242 */ 962,/*GREEKSMALLLETTERFINALSIGMA*/
- /* 243 */ 963,/*GREEKSMALLLETTERSIGMA*/
- /* 244 */ 964,/*GREEKSMALLLETTERTAU*/
- /* 245 */ 965,/*GREEKSMALLLETTERUPSILON*/
- /* 246 */ 966,/*GREEKSMALLLETTERPHI*/
- /* 247 */ 967,/*GREEKSMALLLETTERCHI*/
- /* 248 */ 968,/*GREEKSMALLLETTERPSI*/
- /* 249 */ 969,/*GREEKSMALLLETTEROMEGA*/
- /* 250 */ 970,/*GREEKSMALLLETTERIOTAWITHDIALYTIKA*/
- /* 251 */ 971,/*GREEKSMALLLETTERUPSILONWITHDIALYTIKA*/
- /* 252 */ 972,/*GREEKSMALLLETTEROMICRONWITHTONOS*/
- /* 253 */ 973,/*GREEKSMALLLETTERUPSILONWITHTONOS*/
- /* 254 */ 974,/*GREEKSMALLLETTEROMEGAWITHTONOS*/
- 255
+static convert_t cp853[] = {
+	{ 0, 0 },
+	{ 1, 1 },
+	{ 2, 2 },
+	{ 3, 3 },
+	{ 4, 4 },
+	{ 5, 5 },
+	{ 6, 6 },
+	{ 7, 7 },
+	{ 8, 8 },
+	{ 9, 9 },
+	{ 10, 10 },
+	{ 11, 11 },
+	{ 12, 12 },
+	{ 13, 13 },
+	{ 14, 14 },
+	{ 15, 15 },
+	{ 16, 16 },
+	{ 17, 17 },
+	{ 18, 18 },
+	{ 19, 19 },
+	{ 20, 20 },
+	{ 21, 21 },
+	{ 22, 22 },
+	{ 23, 23 },
+	{ 24, 24 },
+	{ 25, 25 },
+	{ 26, 26 },
+	{ 27, 27 },
+	{ 28, 28 },
+	{ 29, 29 },
+	{ 30, 30 },
+	{ 31, 31 },
+	{ 32, 32 },
+	{ 33, 33 },
+	{ 34, 34 },
+	{ 35, 35 },
+	{ 36, 36 },
+	{ 37, 37 },
+	{ 38, 38 },
+	{ 39, 39 },
+	{ 40, 40 },
+	{ 41, 41 },
+	{ 42, 42 },
+	{ 43, 43 },
+	{ 44, 44 },
+	{ 45, 45 },
+	{ 46, 46 },
+	{ 47, 47 },
+	{ 48, 48 },
+	{ 49, 49 },
+	{ 50, 50 },
+	{ 51, 51 },
+	{ 52, 52 },
+	{ 53, 53 },
+	{ 54, 54 },
+	{ 55, 55 },
+	{ 56, 56 },
+	{ 57, 57 },
+	{ 58, 58 },
+	{ 59, 59 },
+	{ 60, 60 },
+	{ 61, 61 },
+	{ 62, 62 },
+	{ 63, 63 },
+	{ 64, 64 },
+	{ 65, 65 },
+	{ 66, 66 },
+	{ 67, 67 },
+	{ 68, 68 },
+	{ 69, 69 },
+	{ 70, 70 },
+	{ 71, 71 },
+	{ 72, 72 },
+	{ 73, 73 },
+	{ 74, 74 },
+	{ 75, 75 },
+	{ 76, 76 },
+	{ 77, 77 },
+	{ 78, 78 },
+	{ 79, 79 },
+	{ 80, 80 },
+	{ 81, 81 },
+	{ 82, 82 },
+	{ 83, 83 },
+	{ 84, 84 },
+	{ 85, 85 },
+	{ 86, 86 },
+	{ 87, 87 },
+	{ 88, 88 },
+	{ 89, 89 },
+	{ 90, 90 },
+	{ 91, 91 },
+	{ 92, 92 },
+	{ 93, 93 },
+	{ 94, 94 },
+	{ 95, 95 },
+	{ 96, 96 },
+	{ 97, 97 },
+	{ 98, 98 },
+	{ 99, 99 },
+	{ 100, 100 },
+	{ 101, 101 },
+	{ 102, 102 },
+	{ 103, 103 },
+	{ 104, 104 },
+	{ 105, 105 },
+	{ 106, 106 },
+	{ 107, 107 },
+	{ 108, 108 },
+	{ 109, 109 },
+	{ 110, 110 },
+	{ 111, 111 },
+	{ 112, 112 },
+	{ 113, 113 },
+	{ 114, 114 },
+	{ 115, 115 },
+	{ 116, 116 },
+	{ 117, 117 },
+	{ 118, 118 },
+	{ 119, 119 },
+	{ 120, 120 },
+	{ 121, 121 },
+	{ 122, 122 },
+	{ 123, 123 },
+	{ 124, 124 },
+	{ 125, 125 },
+	{ 126, 126 },
+	{ 127, 127 },
+	{ 128, 199 },
+	{ 129, 252 },
+	{ 130, 233 },
+	{ 131, 226 },
+	{ 132, 228 },
+	{ 133, 224 },
+	{ 134, 265 },
+	{ 135, 231 },
+	{ 136, 234 },
+	{ 137, 235 },
+	{ 138, 232 },
+	{ 139, 239 },
+	{ 140, 238 },
+	{ 141, 236 },
+	{ 142, 196 },
+	{ 143, 264 },
+	{ 144, 201 },
+	{ 145, 267 },
+	{ 146, 266 },
+	{ 147, 244 },
+	{ 148, 246 },
+	{ 149, 242 },
+	{ 150, 251 },
+	{ 151, 249 },
+	{ 152, 304 },
+	{ 153, 214 },
+	{ 154, 220 },
+	{ 155, 285 },
+	{ 156, 163 },
+	{ 157, 284 },
+	{ 158, 215 },
+	{ 159, 309 },
+	{ 160, 225 },
+	{ 161, 237 },
+	{ 162, 243 },
+	{ 163, 250 },
+	{ 164, 241 },
+	{ 165, 209 },
+	{ 166, 286 },
+	{ 167, 287 },
+	{ 168, 292 },
+	{ 169, 293 },
+	{ 170, 170 },
+	{ 171, 189 },
+	{ 172, 308 },
+	{ 173, 351 },
+	{ 174, 171 },
+	{ 175, 187 },
+	{ 176, 9617 },
+	{ 177, 9618 },
+	{ 178, 9619 },
+	{ 179, 9474 },
+	{ 180, 9508 },
+	{ 181, 193 },
+	{ 182, 194 },
+	{ 183, 192 },
+	{ 184, 350 },
+	{ 185, 9571 },
+	{ 186, 9553 },
+	{ 187, 9559 },
+	{ 188, 9565 },
+	{ 189, 379 },
+	{ 190, 380 },
+	{ 191, 9488 },
+	{ 192, 9492 },
+	{ 193, 9524 },
+	{ 194, 9516 },
+	{ 195, 9500 },
+	{ 196, 9472 },
+	{ 197, 9532 },
+	{ 198, 348 },
+	{ 199, 349 },
+	{ 200, 9562 },
+	{ 201, 9556 },
+	{ 202, 9577 },
+	{ 203, 9574 },
+	{ 204, 9568 },
+	{ 205, 9552 },
+	{ 206, 9580 },
+	{ 207, 164 },
+	{ 208, 208 },
+	{ 209, 209 },
+	{ 210, 202 },
+	{ 211, 203 },
+	{ 212, 200 },
+	{ 213, 305 },
+	{ 214, 205 },
+	{ 215, 206 },
+	{ 216, 207 },
+	{ 217, 9496 },
+	{ 218, 9484 },
+	{ 219, 9608 },
+	{ 220, 9604 },
+	{ 221, 221 },
+	{ 222, 204 },
+	{ 223, 9600 },
+	{ 224, 211 },
+	{ 225, 223 },
+	{ 226, 212 },
+	{ 227, 210 },
+	{ 228, 288 },
+	{ 229, 289 },
+	{ 230, 181 },
+	{ 231, 294 },
+	{ 232, 295 },
+	{ 233, 218 },
+	{ 234, 219 },
+	{ 235, 217 },
+	{ 236, 364 },
+	{ 237, 365 },
+	{ 238, 238 },
+	{ 239, 180 },
+	{ 240, 173 },
+	{ 241, 241 },
+	{ 242, 8467 },
+	{ 243, 329 },
+	{ 244, 728 },
+	{ 245, 167 },
+	{ 246, 247 },
+	{ 247, 184 },
+	{ 248, 176 },
+	{ 249, 168 },
+	{ 250, 729 },
+	{ 251, 251 },
+	{ 252, 179 },
+	{ 253, 178 },
+	{ 254, 9632 },
+	{ 255, 160 },
+	{ 34, 8220 },
+	{ 34, 8221 },
+	{ 39, 8216 },
+	{ 39, 8217 },
+	{ 45, 8211 },
+	{ 45, 8212 },
+	{ 32, 8194 },
+	{ 32, 8195 },
+	{ 32, 8201 },
+	{ 65, 195 },
+	{ 65, 197 },
+	{ 65, 256 },
+	{ 65, 258 },
+	{ 65, 260 },
+	{ 65, 461 },
+	{ 97, 227 },
+	{ 97, 229 },
+	{ 97, 257 },
+	{ 97, 259 },
+	{ 97, 261 },
+	{ 97, 462 },
+	{ 67, 262 },
+	{ 67, 268 },
+	{ 99, 263 },
+	{ 99, 269 },
+	{ 68, 270 },
+	{ 100, 271 },
+	{ 69, 274 },
+	{ 69, 276 },
+	{ 69, 278 },
+	{ 69, 280 },
+	{ 69, 282 },
+	{ 101, 275 },
+	{ 101, 277 },
+	{ 101, 279 },
+	{ 101, 281 },
+	{ 101, 283 },
+	{ 71, 290 },
+	{ 71, 486 },
+	{ 71, 500 },
+	{ 103, 291 },
+	{ 103, 487 },
+	{ 103, 501 },
+	{ 73, 296 },
+	{ 73, 298 },
+	{ 73, 300 },
+	{ 73, 302 },
+	{ 73, 463 },
+	{ 105, 297 },
+	{ 105, 299 },
+	{ 105, 301 },
+	{ 105, 303 },
+	{ 105, 464 },
+	{ 75, 310 },
+	{ 75, 488 },
+	{ 107, 311 },
+	{ 107, 489 },
+	{ 76, 313 },
+	{ 76, 315 },
+	{ 76, 317 },
+	{ 76, 319 },
+	{ 76, 321 },
+	{ 108, 314 },
+	{ 108, 316 },
+	{ 108, 318 },
+	{ 108, 320 },
+	{ 108, 322 },
+	{ 77, 323 },
+	{ 77, 325 },
+	{ 77, 327 },
+	{ 109, 324 },
+	{ 109, 326 },
+	{ 109, 328 },
+	{ 78, 213 },
+	{ 78, 216 },
+	{ 78, 332 },
+	{ 78, 334 },
+	{ 78, 336 },
+	{ 78, 465 },
+	{ 78, 490 },
+	{ 110, 245 },
+	{ 110, 248 },
+	{ 110, 333 },
+	{ 110, 335 },
+	{ 110, 337 },
+	{ 110, 466 },
+	{ 110, 491 },
+	{ 82, 340 },
+	{ 82, 342 },
+	{ 82, 344 },
+	{ 114, 341 },
+	{ 114, 343 },
+	{ 114, 345 },
+	{ 83, 346 },
+	{ 83, 352 },
+	{ 115, 347 },
+	{ 115, 353 },
+	{ 84, 354 },
+	{ 84, 356 },
+	{ 116, 355 },
+	{ 116, 357 },
+	{ 85, 360 },
+	{ 85, 362 },
+	{ 85, 366 },
+	{ 85, 368 },
+	{ 85, 370 },
+	{ 85, 467 },
+	{ 117, 361 },
+	{ 117, 363 },
+	{ 117, 367 },
+	{ 117, 369 },
+	{ 117, 371 },
+	{ 117, 468 },
+	{ 87, 372 },
+	{ 119, 373 },
+	{ 89, 374 },
+	{ 89, 376 },
+	{ 121, 253 },
+	{ 121, 255 },
+	{ 121, 375 },
+	{ 90, 377 },
+	{ 90, 381 },
+	{ 122, 378 },
+	{ 122, 382 },
 };
-charconvert cp1254[] = {
- /* 0 */ 0,/*<tdbgcolor="C0C0C0"><fontface="Arial"color="000000"><b>ISO/IEC10646-1:2000CharacterName</b></font>*/
- 1,
- 2,
- 3,
- 4,
- 5,
- 6,
- 7,
- 8,
- 9,
- 10,
- 11,
- 12,
- 13,
- 14,
- 15,
- 16,
- 17,
- 18,
- 19,
- 20,
- 21,
- 22,
- 23,
- 24,
- 25,
- 26,
- 27,
- 28,
- 29,
- 30,
- 31,
- /* 32 */ 32,/*SPACE*/
- /* 33 */ 33,/*EXCLAMATIONMARK*/
- /* 34 */ 34,/*QUOTATIONMARK*/
- /* 35 */ 35,/*NUMBERSIGN*/
- /* 36 */ 36,/*DOLLARSIGN*/
- /* 37 */ 37,/*PERCENTSIGN*/
- /* 38 */ 38,/*AMPERSAND*/
- /* 39 */ 39,/*APOSTROPHE*/
- /* 40 */ 40,/*LEFTPARENTHESIS*/
- /* 41 */ 41,/*RIGHTPARENTHESIS*/
- /* 42 */ 42,/*ASTERISK*/
- /* 43 */ 43,/*PLUSSIGN*/
- /* 44 */ 44,/*COMMA*/
- /* 45 */ 45,/*HYPHEN-MINUS*/
- /* 46 */ 46,/*FULLSTOP*/
- /* 47 */ 47,/*SOLIDUS*/
- /* 48 */ 48,/*DIGITZERO*/
- /* 49 */ 49,/*DIGITONE*/
- /* 50 */ 50,/*DIGITTWO*/
- /* 51 */ 51,/*DIGITTHREE*/
- /* 52 */ 52,/*DIGITFOUR*/
- /* 53 */ 53,/*DIGITFIVE*/
- /* 54 */ 54,/*DIGITSIX*/
- /* 55 */ 55,/*DIGITSEVEN*/
- /* 56 */ 56,/*DIGITEIGHT*/
- /* 57 */ 57,/*DIGITNINE*/
- /* 58 */ 58,/*COLON*/
- /* 59 */ 59,/*SEMICOLON*/
- /* 60 */ 60,/*LESS-THANSIGN*/
- /* 61 */ 61,/*EQUALSSIGN*/
- /* 62 */ 62,/*GREATER-THANSIGN*/
- /* 63 */ 63,/*QUESTIONMARK*/
- /* 64 */ 64,/*COMMERCIALAT*/
- /* 65 */ 65,/*LATINCAPITALLETTERA*/
- /* 66 */ 66,/*LATINCAPITALLETTERB*/
- /* 67 */ 67,/*LATINCAPITALLETTERC*/
- /* 68 */ 68,/*LATINCAPITALLETTERD*/
- /* 69 */ 69,/*LATINCAPITALLETTERE*/
- /* 70 */ 70,/*LATINCAPITALLETTERF*/
- /* 71 */ 71,/*LATINCAPITALLETTERG*/
- /* 72 */ 72,/*LATINCAPITALLETTERH*/
- /* 73 */ 73,/*LATINCAPITALLETTERI*/
- /* 74 */ 74,/*LATINCAPITALLETTERJ*/
- /* 75 */ 75,/*LATINCAPITALLETTERK*/
- /* 76 */ 76,/*LATINCAPITALLETTERL*/
- /* 77 */ 77,/*LATINCAPITALLETTERM*/
- /* 78 */ 78,/*LATINCAPITALLETTERN*/
- /* 79 */ 79,/*LATINCAPITALLETTERO*/
- /* 80 */ 80,/*LATINCAPITALLETTERP*/
- /* 81 */ 81,/*LATINCAPITALLETTERQ*/
- /* 82 */ 82,/*LATINCAPITALLETTERR*/
- /* 83 */ 83,/*LATINCAPITALLETTERS*/
- /* 84 */ 84,/*LATINCAPITALLETTERT*/
- /* 85 */ 85,/*LATINCAPITALLETTERU*/
- /* 86 */ 86,/*LATINCAPITALLETTERV*/
- /* 87 */ 87,/*LATINCAPITALLETTERW*/
- /* 88 */ 88,/*LATINCAPITALLETTERX*/
- /* 89 */ 89,/*LATINCAPITALLETTERY*/
- /* 90 */ 90,/*LATINCAPITALLETTERZ*/
- /* 91 */ 91,/*LEFTSQUAREBRACKET*/
- /* 92 */ 92,/*REVERSESOLIDUS*/
- /* 93 */ 93,/*RIGHTSQUAREBRACKET*/
- /* 94 */ 94,/*CIRCUMFLEXACCENT*/
- /* 95 */ 95,/*LOWLINE*/
- /* 96 */ 96,/*GRAVEACCENT*/
- /* 97 */ 97,/*LATINSMALLLETTERA*/
- /* 98 */ 98,/*LATINSMALLLETTERB*/
- /* 99 */ 99,/*LATINSMALLLETTERC*/
- /* 100 */ 100,/*LATINSMALLLETTERD*/
- /* 101 */ 101,/*LATINSMALLLETTERE*/
- /* 102 */ 102,/*LATINSMALLLETTERF*/
- /* 103 */ 103,/*LATINSMALLLETTERG*/
- /* 104 */ 104,/*LATINSMALLLETTERH*/
- /* 105 */ 105,/*LATINSMALLLETTERI*/
- /* 106 */ 106,/*LATINSMALLLETTERJ*/
- /* 107 */ 107,/*LATINSMALLLETTERK*/
- /* 108 */ 108,/*LATINSMALLLETTERL*/
- /* 109 */ 109,/*LATINSMALLLETTERM*/
- /* 110 */ 110,/*LATINSMALLLETTERN*/
- /* 111 */ 111,/*LATINSMALLLETTERO*/
- /* 112 */ 112,/*LATINSMALLLETTERP*/
- /* 113 */ 113,/*LATINSMALLLETTERQ*/
- /* 114 */ 114,/*LATINSMALLLETTERR*/
- /* 115 */ 115,/*LATINSMALLLETTERS*/
- /* 116 */ 116,/*LATINSMALLLETTERT*/
- /* 117 */ 117,/*LATINSMALLLETTERU*/
- /* 118 */ 118,/*LATINSMALLLETTERV*/
- /* 119 */ 119,/*LATINSMALLLETTERW*/
- /* 120 */ 120,/*LATINSMALLLETTERX*/
- /* 121 */ 121,/*LATINSMALLLETTERY*/
- /* 122 */ 122,/*LATINSMALLLETTERZ*/
- /* 123 */ 123,/*LEFTCURLYBRACKET*/
- /* 124 */ 124,/*VERTICALLINE*/
- /* 125 */ 125,/*RIGHTCURLYBRACKET*/
- /* 126 */ 126,/*TILDE*/
- 127,
- /* 128 */ 8364,/*EUROSIGN*/
- 129,
- /* 130 */ 8218,/*SINGLELOW-9QUOTATIONMARK*/
- /* 131 */ 402,/*LATINSMALLLETTERFWITHHOOK*/
- /* 132 */ 8222,/*DOUBLELOW-9QUOTATIONMARK*/
- /* 133 */ 8230,/*HORIZONTALELLIPSIS*/
- /* 134 */ 8224,/*DAGGER*/
- /* 135 */ 8225,/*DOUBLEDAGGER*/
- /* 136 */ 710,/*MODIFIERLETTERCIRCUMFLEXACCENT*/
- /* 137 */ 8240,/*PERMILLESIGN*/
- /* 138 */ 352,/*LATINCAPITALLETTERSWITHCARON*/
- /* 139 */ 8249,/*SINGLELEFT-POINTINGANGLEQUOTATIONMARK*/
- /* 140 */ 338,/*LATINCAPITALLIGATUREOE*/
- 141,
- 142,
- 143,
- 144,
- /* 145 */ 8216,/*LEFTSINGLEQUOTATIONMARK*/
- /* 146 */ 8217,/*RIGHTSINGLEQUOTATIONMARK*/
- /* 147 */ 8220,/*LEFTDOUBLEQUOTATIONMARK*/
- /* 148 */ 8221,/*RIGHTDOUBLEQUOTATIONMARK*/
- /* 149 */ 8226,/*BULLET*/
- /* 150 */ 8211,/*ENDASH*/
- /* 151 */ 8212,/*EMDASH*/
- /* 152 */ 732,/*SMALLTILDE*/
- /* 153 */ 8482,/*TRADEMARKSIGN*/
- /* 154 */ 353,/*LATINSMALLLETTERSWITHCARON*/
- /* 155 */ 8250,/*SINGLERIGHT-POINTINGANGLEQUOTATIONMARK*/
- /* 156 */ 339,/*LATINSMALLLIGATUREOE*/
- 157,
- 158,
- /* 159 */ 376,/*LATINCAPITALLETTERYWITHDIAERESIS*/
- /* 160 */ 160,/*NO-BREAKSPACE*/
- /* 161 */ 161,/*INVERTEDEXCLAMATIONMARK*/
- /* 162 */ 162,/*CENTSIGN*/
- /* 163 */ 163,/*POUNDSIGN*/
- /* 164 */ 164,/*CURRENCYSIGN*/
- /* 165 */ 165,/*YENSIGN*/
- /* 166 */ 166,/*BROKENBAR*/
- /* 167 */ 167,/*SECTIONSIGN*/
- /* 168 */ 168,/*DIAERESIS*/
- /* 169 */ 169,/*COPYRIGHTSIGN*/
- /* 170 */ 170,/*FEMININEORDINALINDICATOR*/
- /* 171 */ 171,/*LEFT-POINTINGDOUBLEANGLEQUOTATIONMARK*/
- /* 172 */ 172,/*NOTSIGN*/
- /* 173 */ 173,/*SOFTHYPHEN*/
- /* 174 */ 174,/*REGISTEREDSIGN*/
- /* 175 */ 175,/*MACRON*/
- /* 176 */ 176,/*DEGREESIGN*/
- /* 177 */ 177,/*PLUS-MINUSSIGN*/
- /* 178 */ 178,/*SUPERSCRIPTTWO*/
- /* 179 */ 179,/*SUPERSCRIPTTHREE*/
- /* 180 */ 180,/*ACUTEACCENT*/
- /* 181 */ 181,/*MICROSIGN*/
- /* 182 */ 182,/*PILCROWSIGN*/
- /* 183 */ 183,/*MIDDLEDOT*/
- /* 184 */ 184,/*CEDILLA*/
- /* 185 */ 185,/*SUPERSCRIPTONE*/
- /* 186 */ 186,/*MASCULINEORDINALINDICATOR*/
- /* 187 */ 187,/*RIGHT-POINTINGDOUBLEANGLEQUOTATIONMARK*/
- /* 188 */ 188,/*VULGARFRACTIONONEQUARTER*/
- /* 189 */ 189,/*VULGARFRACTIONONEHALF*/
- /* 190 */ 190,/*VULGARFRACTIONTHREEQUARTERS*/
- /* 191 */ 191,/*INVERTEDQUESTIONMARK*/
- /* 192 */ 192,/*LATINCAPITALLETTERAWITHGRAVE*/
- /* 193 */ 193,/*LATINCAPITALLETTERAWITHACUTE*/
- /* 194 */ 194,/*LATINCAPITALLETTERAWITHCIRCUMFLEX*/
- /* 195 */ 195,/*LATINCAPITALLETTERAWITHTILDE*/
- /* 196 */ 196,/*LATINCAPITALLETTERAWITHDIAERESIS*/
- /* 197 */ 197,/*LATINCAPITALLETTERAWITHRINGABOVE*/
- /* 198 */ 198,/*LATINCAPITALLETTERAE*/
- /* 199 */ 199,/*LATINCAPITALLETTERCWITHCEDILLA*/
- /* 200 */ 200,/*LATINCAPITALLETTEREWITHGRAVE*/
- /* 201 */ 201,/*LATINCAPITALLETTEREWITHACUTE*/
- /* 202 */ 202,/*LATINCAPITALLETTEREWITHCIRCUMFLEX*/
- /* 203 */ 203,/*LATINCAPITALLETTEREWITHDIAERESIS*/
- /* 204 */ 204,/*LATINCAPITALLETTERIWITHGRAVE*/
- /* 205 */ 205,/*LATINCAPITALLETTERIWITHACUTE*/
- /* 206 */ 206,/*LATINCAPITALLETTERIWITHCIRCUMFLEX*/
- /* 207 */ 207,/*LATINCAPITALLETTERIWITHDIAERESIS*/
- /* 208 */ 286,/*LATINCAPITALLETTERGWITHBREVE*/
- /* 209 */ 209,/*LATINCAPITALLETTERNWITHTILDE*/
- /* 210 */ 210,/*LATINCAPITALLETTEROWITHGRAVE*/
- /* 211 */ 211,/*LATINCAPITALLETTEROWITHACUTE*/
- /* 212 */ 212,/*LATINCAPITALLETTEROWITHCIRCUMFLEX*/
- /* 213 */ 213,/*LATINCAPITALLETTEROWITHTILDE*/
- /* 214 */ 214,/*LATINCAPITALLETTEROWITHDIAERESIS*/
- /* 215 */ 215,/*MULTIPLICATIONSIGN*/
- /* 216 */ 216,/*LATINCAPITALLETTEROWITHSTROKE*/
- /* 217 */ 217,/*LATINCAPITALLETTERUWITHGRAVE*/
- /* 218 */ 218,/*LATINCAPITALLETTERUWITHACUTE*/
- /* 219 */ 219,/*LATINCAPITALLETTERUWITHCIRCUMFLEX*/
- /* 220 */ 220,/*LATINCAPITALLETTERUWITHDIAERESIS*/
- /* 221 */ 304,/*LATINCAPITALLETTERIWITHDOTABOVE*/
- /* 222 */ 350,/*LATINCAPITALLETTERSWITHCEDILLA*/
- /* 223 */ 223,/*LATINSMALLLETTERSHARPS*/
- /* 224 */ 224,/*LATINSMALLLETTERAWITHGRAVE*/
- /* 225 */ 225,/*LATINSMALLLETTERAWITHACUTE*/
- /* 226 */ 226,/*LATINSMALLLETTERAWITHCIRCUMFLEX*/
- /* 227 */ 227,/*LATINSMALLLETTERAWITHTILDE*/
- /* 228 */ 228,/*LATINSMALLLETTERAWITHDIAERESIS*/
- /* 229 */ 229,/*LATINSMALLLETTERAWITHRINGABOVE*/
- /* 230 */ 230,/*LATINSMALLLETTERAE*/
- /* 231 */ 231,/*LATINSMALLLETTERCWITHCEDILLA*/
- /* 232 */ 232,/*LATINSMALLLETTEREWITHGRAVE*/
- /* 233 */ 233,/*LATINSMALLLETTEREWITHACUTE*/
- /* 234 */ 234,/*LATINSMALLLETTEREWITHCIRCUMFLEX*/
- /* 235 */ 235,/*LATINSMALLLETTEREWITHDIAERESIS*/
- /* 236 */ 236,/*LATINSMALLLETTERIWITHGRAVE*/
- /* 237 */ 237,/*LATINSMALLLETTERIWITHACUTE*/
- /* 238 */ 238,/*LATINSMALLLETTERIWITHCIRCUMFLEX*/
- /* 239 */ 239,/*LATINSMALLLETTERIWITHDIAERESIS*/
- /* 240 */ 287,/*LATINSMALLLETTERGWITHBREVE*/
- /* 241 */ 241,/*LATINSMALLLETTERNWITHTILDE*/
- /* 242 */ 242,/*LATINSMALLLETTEROWITHGRAVE*/
- /* 243 */ 243,/*LATINSMALLLETTEROWITHACUTE*/
- /* 244 */ 244,/*LATINSMALLLETTEROWITHCIRCUMFLEX*/
- /* 245 */ 245,/*LATINSMALLLETTEROWITHTILDE*/
- /* 246 */ 246,/*LATINSMALLLETTEROWITHDIAERESIS*/
- /* 247 */ 247,/*DIVISIONSIGN*/
- /* 248 */ 248,/*LATINSMALLLETTEROWITHSTROKE*/
- /* 249 */ 249,/*LATINSMALLLETTERUWITHGRAVE*/
- /* 250 */ 250,/*LATINSMALLLETTERUWITHACUTE*/
- /* 251 */ 251,/*LATINSMALLLETTERUWITHCIRCUMFLEX*/
- /* 252 */ 252,/*LATINSMALLLETTERUWITHDIAERESIS*/
- /* 253 */ 305,/*LATINSMALLLETTERDOTLESSI*/
- /* 254 */ 351,/*LATINSMALLLETTERSWITHCEDILLA*/
- /* 255 */ 255/*LATINSMALLLETTERYWITHDIAERESIS*/
+static convert_t cp855[] = {
+	{ 0, 0 },
+	{ 1, 1 },
+	{ 2, 2 },
+	{ 3, 3 },
+	{ 4, 4 },
+	{ 5, 5 },
+	{ 6, 6 },
+	{ 7, 7 },
+	{ 8, 8 },
+	{ 9, 9 },
+	{ 10, 10 },
+	{ 11, 11 },
+	{ 12, 12 },
+	{ 13, 13 },
+	{ 14, 14 },
+	{ 15, 15 },
+	{ 16, 16 },
+	{ 17, 17 },
+	{ 18, 18 },
+	{ 19, 19 },
+	{ 20, 20 },
+	{ 21, 21 },
+	{ 22, 22 },
+	{ 23, 23 },
+	{ 24, 24 },
+	{ 25, 25 },
+	{ 26, 26 },
+	{ 27, 27 },
+	{ 28, 28 },
+	{ 29, 29 },
+	{ 30, 30 },
+	{ 31, 31 },
+	{ 32, 32 },
+	{ 33, 33 },
+	{ 34, 34 },
+	{ 35, 35 },
+	{ 36, 36 },
+	{ 37, 37 },
+	{ 38, 38 },
+	{ 39, 39 },
+	{ 40, 40 },
+	{ 41, 41 },
+	{ 42, 42 },
+	{ 43, 43 },
+	{ 44, 44 },
+	{ 45, 45 },
+	{ 46, 46 },
+	{ 47, 47 },
+	{ 48, 48 },
+	{ 49, 49 },
+	{ 50, 50 },
+	{ 51, 51 },
+	{ 52, 52 },
+	{ 53, 53 },
+	{ 54, 54 },
+	{ 55, 55 },
+	{ 56, 56 },
+	{ 57, 57 },
+	{ 58, 58 },
+	{ 59, 59 },
+	{ 60, 60 },
+	{ 61, 61 },
+	{ 62, 62 },
+	{ 63, 63 },
+	{ 64, 64 },
+	{ 65, 65 },
+	{ 66, 66 },
+	{ 67, 67 },
+	{ 68, 68 },
+	{ 69, 69 },
+	{ 70, 70 },
+	{ 71, 71 },
+	{ 72, 72 },
+	{ 73, 73 },
+	{ 74, 74 },
+	{ 75, 75 },
+	{ 76, 76 },
+	{ 77, 77 },
+	{ 78, 78 },
+	{ 79, 79 },
+	{ 80, 80 },
+	{ 81, 81 },
+	{ 82, 82 },
+	{ 83, 83 },
+	{ 84, 84 },
+	{ 85, 85 },
+	{ 86, 86 },
+	{ 87, 87 },
+	{ 88, 88 },
+	{ 89, 89 },
+	{ 90, 90 },
+	{ 91, 91 },
+	{ 92, 92 },
+	{ 93, 93 },
+	{ 94, 94 },
+	{ 95, 95 },
+	{ 96, 96 },
+	{ 97, 97 },
+	{ 98, 98 },
+	{ 99, 99 },
+	{ 100, 100 },
+	{ 101, 101 },
+	{ 102, 102 },
+	{ 103, 103 },
+	{ 104, 104 },
+	{ 105, 105 },
+	{ 106, 106 },
+	{ 107, 107 },
+	{ 108, 108 },
+	{ 109, 109 },
+	{ 110, 110 },
+	{ 111, 111 },
+	{ 112, 112 },
+	{ 113, 113 },
+	{ 114, 114 },
+	{ 115, 115 },
+	{ 116, 116 },
+	{ 117, 117 },
+	{ 118, 118 },
+	{ 119, 119 },
+	{ 120, 120 },
+	{ 121, 121 },
+	{ 122, 122 },
+	{ 123, 123 },
+	{ 124, 124 },
+	{ 125, 125 },
+	{ 126, 126 },
+	{ 127, 127 },
+	{ 128, 1106 },
+	{ 129, 1026 },
+	{ 130, 1107 },
+	{ 131, 1027 },
+	{ 132, 1105 },
+	{ 133, 1025 },
+	{ 134, 1108 },
+	{ 135, 1028 },
+	{ 136, 1109 },
+	{ 137, 1029 },
+	{ 138, 1110 },
+	{ 139, 1030 },
+	{ 140, 1111 },
+	{ 141, 1031 },
+	{ 142, 1112 },
+	{ 143, 1032 },
+	{ 144, 1113 },
+	{ 145, 1033 },
+	{ 146, 1114 },
+	{ 147, 1034 },
+	{ 148, 1115 },
+	{ 149, 1035 },
+	{ 150, 1116 },
+	{ 151, 1036 },
+	{ 152, 1118 },
+	{ 153, 1038 },
+	{ 154, 1119 },
+	{ 155, 1039 },
+	{ 156, 1102 },
+	{ 157, 1070 },
+	{ 158, 1098 },
+	{ 159, 1066 },
+	{ 160, 1072 },
+	{ 161, 1040 },
+	{ 162, 1073 },
+	{ 163, 1041 },
+	{ 164, 1094 },
+	{ 165, 1062 },
+	{ 166, 1076 },
+	{ 167, 1044 },
+	{ 168, 1077 },
+	{ 169, 1045 },
+	{ 170, 1092 },
+	{ 171, 1060 },
+	{ 172, 1075 },
+	{ 173, 1043 },
+	{ 174, 171 },
+	{ 175, 187 },
+	{ 176, 9617 },
+	{ 177, 9618 },
+	{ 178, 9619 },
+	{ 179, 9474 },
+	{ 180, 9508 },
+	{ 181, 1093 },
+	{ 182, 1061 },
+	{ 183, 1080 },
+	{ 184, 1048 },
+	{ 185, 9571 },
+	{ 186, 9553 },
+	{ 187, 9559 },
+	{ 188, 9565 },
+	{ 189, 1081 },
+	{ 190, 1049 },
+	{ 191, 9488 },
+	{ 192, 9492 },
+	{ 193, 9524 },
+	{ 194, 9516 },
+	{ 195, 9500 },
+	{ 196, 9472 },
+	{ 197, 9532 },
+	{ 198, 1082 },
+	{ 199, 1050 },
+	{ 200, 9562 },
+	{ 201, 9556 },
+	{ 202, 9577 },
+	{ 203, 9574 },
+	{ 204, 9568 },
+	{ 205, 9552 },
+	{ 206, 9580 },
+	{ 207, 164 },
+	{ 208, 1083 },
+	{ 209, 1051 },
+	{ 210, 1084 },
+	{ 211, 1052 },
+	{ 212, 1085 },
+	{ 213, 1053 },
+	{ 214, 1086 },
+	{ 215, 1054 },
+	{ 216, 1087 },
+	{ 217, 9496 },
+	{ 218, 9484 },
+	{ 219, 9608 },
+	{ 220, 9604 },
+	{ 221, 1055 },
+	{ 222, 1103 },
+	{ 223, 9600 },
+	{ 224, 1071 },
+	{ 225, 1088 },
+	{ 226, 1056 },
+	{ 227, 1089 },
+	{ 228, 1057 },
+	{ 229, 1090 },
+	{ 230, 1058 },
+	{ 231, 1091 },
+	{ 232, 1059 },
+	{ 233, 1078 },
+	{ 234, 1046 },
+	{ 235, 1074 },
+	{ 236, 1042 },
+	{ 237, 1100 },
+	{ 238, 1068 },
+	{ 239, 8470 },
+	{ 240, 173 },
+	{ 241, 1099 },
+	{ 242, 1067 },
+	{ 243, 1079 },
+	{ 244, 1047 },
+	{ 245, 1096 },
+	{ 246, 1064 },
+	{ 247, 1101 },
+	{ 248, 1069 },
+	{ 249, 1097 },
+	{ 250, 1065 },
+	{ 251, 1095 },
+	{ 252, 1063 },
+	{ 253, 167 },
+	{ 254, 9632 },
+	{ 255, 160 },
+	{ 34, 8220 },
+	{ 34, 8221 },
+	{ 39, 8216 },
+	{ 39, 8217 },
+	{ 45, 8211 },
+	{ 45, 8212 },
+	{ 32, 8194 },
+	{ 32, 8195 },
+	{ 32, 8201 },
+	{ 65, 192 },
+	{ 65, 193 },
+	{ 65, 194 },
+	{ 65, 195 },
+	{ 65, 196 },
+	{ 65, 197 },
+	{ 65, 256 },
+	{ 65, 258 },
+	{ 65, 260 },
+	{ 65, 461 },
+	{ 97, 224 },
+	{ 97, 225 },
+	{ 97, 226 },
+	{ 97, 227 },
+	{ 97, 228 },
+	{ 97, 229 },
+	{ 97, 257 },
+	{ 97, 259 },
+	{ 97, 261 },
+	{ 97, 462 },
+	{ 67, 199 },
+	{ 67, 262 },
+	{ 67, 264 },
+	{ 67, 266 },
+	{ 67, 268 },
+	{ 99, 231 },
+	{ 99, 263 },
+	{ 99, 265 },
+	{ 99, 267 },
+	{ 99, 269 },
+	{ 68, 270 },
+	{ 100, 271 },
+	{ 69, 200 },
+	{ 69, 201 },
+	{ 69, 202 },
+	{ 69, 203 },
+	{ 69, 274 },
+	{ 69, 276 },
+	{ 69, 278 },
+	{ 69, 280 },
+	{ 69, 282 },
+	{ 101, 232 },
+	{ 101, 233 },
+	{ 101, 234 },
+	{ 101, 235 },
+	{ 101, 275 },
+	{ 101, 277 },
+	{ 101, 279 },
+	{ 101, 281 },
+	{ 101, 283 },
+	{ 71, 284 },
+	{ 71, 286 },
+	{ 71, 288 },
+	{ 71, 290 },
+	{ 71, 486 },
+	{ 71, 500 },
+	{ 103, 285 },
+	{ 103, 287 },
+	{ 103, 289 },
+	{ 103, 291 },
+	{ 103, 487 },
+	{ 103, 501 },
+	{ 72, 292 },
+	{ 104, 293 },
+	{ 73, 204 },
+	{ 73, 205 },
+	{ 73, 206 },
+	{ 73, 207 },
+	{ 73, 296 },
+	{ 73, 298 },
+	{ 73, 300 },
+	{ 73, 302 },
+	{ 73, 304 },
+	{ 73, 463 },
+	{ 105, 236 },
+	{ 105, 237 },
+	{ 105, 238 },
+	{ 105, 239 },
+	{ 105, 297 },
+	{ 105, 299 },
+	{ 105, 301 },
+	{ 105, 303 },
+	{ 105, 305 },
+	{ 105, 464 },
+	{ 74, 308 },
+	{ 106, 309 },
+	{ 75, 310 },
+	{ 75, 488 },
+	{ 107, 311 },
+	{ 107, 489 },
+	{ 76, 313 },
+	{ 76, 315 },
+	{ 76, 317 },
+	{ 76, 319 },
+	{ 76, 321 },
+	{ 108, 314 },
+	{ 108, 316 },
+	{ 108, 318 },
+	{ 108, 320 },
+	{ 108, 322 },
+	{ 77, 209 },
+	{ 77, 323 },
+	{ 77, 325 },
+	{ 77, 327 },
+	{ 109, 241 },
+	{ 109, 324 },
+	{ 109, 326 },
+	{ 109, 328 },
+	{ 109, 329 },
+	{ 78, 210 },
+	{ 78, 211 },
+	{ 78, 212 },
+	{ 78, 213 },
+	{ 78, 214 },
+	{ 78, 216 },
+	{ 78, 332 },
+	{ 78, 334 },
+	{ 78, 336 },
+	{ 78, 465 },
+	{ 78, 490 },
+	{ 110, 242 },
+	{ 110, 243 },
+	{ 110, 244 },
+	{ 110, 245 },
+	{ 110, 246 },
+	{ 110, 248 },
+	{ 110, 333 },
+	{ 110, 335 },
+	{ 110, 337 },
+	{ 110, 466 },
+	{ 110, 491 },
+	{ 82, 340 },
+	{ 82, 342 },
+	{ 82, 344 },
+	{ 114, 341 },
+	{ 114, 343 },
+	{ 114, 345 },
+	{ 83, 346 },
+	{ 83, 348 },
+	{ 83, 350 },
+	{ 83, 352 },
+	{ 115, 347 },
+	{ 115, 349 },
+	{ 115, 351 },
+	{ 115, 353 },
+	{ 84, 354 },
+	{ 84, 356 },
+	{ 116, 355 },
+	{ 116, 357 },
+	{ 85, 217 },
+	{ 85, 218 },
+	{ 85, 219 },
+	{ 85, 220 },
+	{ 85, 360 },
+	{ 85, 362 },
+	{ 85, 364 },
+	{ 85, 366 },
+	{ 85, 368 },
+	{ 85, 370 },
+	{ 85, 467 },
+	{ 117, 249 },
+	{ 117, 250 },
+	{ 117, 251 },
+	{ 117, 252 },
+	{ 117, 361 },
+	{ 117, 363 },
+	{ 117, 365 },
+	{ 117, 367 },
+	{ 117, 369 },
+	{ 117, 371 },
+	{ 117, 468 },
+	{ 87, 372 },
+	{ 119, 373 },
+	{ 89, 221 },
+	{ 89, 374 },
+	{ 89, 376 },
+	{ 121, 253 },
+	{ 121, 255 },
+	{ 121, 375 },
+	{ 90, 377 },
+	{ 90, 379 },
+	{ 90, 381 },
+	{ 122, 378 },
+	{ 122, 380 },
+	{ 122, 382 },
 };
-charconvert cp1255[] = {
- /* 0 */ 0,/*<tdbgcolor="C0C0C0"><fontface="Arial"color="000000"><b>ISO/IEC10646-1:2000CharacterName</b></font>*/
- 1,
- 2,
- 3,
- 4,
- 5,
- 6,
- 7,
- 8,
- 9,
- 10,
- 11,
- 12,
- 13,
- 14,
- 15,
- 16,
- 17,
- 18,
- 19,
- 20,
- 21,
- 22,
- 23,
- 24,
- 25,
- 26,
- 27,
- 28,
- 29,
- 30,
- 31,
- /* 32 */ 32,/*SPACE*/
- /* 33 */ 33,/*EXCLAMATIONMARK*/
- /* 34 */ 34,/*QUOTATIONMARK*/
- /* 35 */ 35,/*NUMBERSIGN*/
- /* 36 */ 36,/*DOLLARSIGN*/
- /* 37 */ 37,/*PERCENTSIGN*/
- /* 38 */ 38,/*AMPERSAND*/
- /* 39 */ 39,/*APOSTROPHE*/
- /* 40 */ 40,/*LEFTPARENTHESIS*/
- /* 41 */ 41,/*RIGHTPARENTHESIS*/
- /* 42 */ 42,/*ASTERISK*/
- /* 43 */ 43,/*PLUSSIGN*/
- /* 44 */ 44,/*COMMA*/
- /* 45 */ 45,/*HYPHEN-MINUS*/
- /* 46 */ 46,/*FULLSTOP*/
- /* 47 */ 47,/*SOLIDUS*/
- /* 48 */ 48,/*DIGITZERO*/
- /* 49 */ 49,/*DIGITONE*/
- /* 50 */ 50,/*DIGITTWO*/
- /* 51 */ 51,/*DIGITTHREE*/
- /* 52 */ 52,/*DIGITFOUR*/
- /* 53 */ 53,/*DIGITFIVE*/
- /* 54 */ 54,/*DIGITSIX*/
- /* 55 */ 55,/*DIGITSEVEN*/
- /* 56 */ 56,/*DIGITEIGHT*/
- /* 57 */ 57,/*DIGITNINE*/
- /* 58 */ 58,/*COLON*/
- /* 59 */ 59,/*SEMICOLON*/
- /* 60 */ 60,/*LESS-THANSIGN*/
- /* 61 */ 61,/*EQUALSSIGN*/
- /* 62 */ 62,/*GREATER-THANSIGN*/
- /* 63 */ 63,/*QUESTIONMARK*/
- /* 64 */ 64,/*COMMERCIALAT*/
- /* 65 */ 65,/*LATINCAPITALLETTERA*/
- /* 66 */ 66,/*LATINCAPITALLETTERB*/
- /* 67 */ 67,/*LATINCAPITALLETTERC*/
- /* 68 */ 68,/*LATINCAPITALLETTERD*/
- /* 69 */ 69,/*LATINCAPITALLETTERE*/
- /* 70 */ 70,/*LATINCAPITALLETTERF*/
- /* 71 */ 71,/*LATINCAPITALLETTERG*/
- /* 72 */ 72,/*LATINCAPITALLETTERH*/
- /* 73 */ 73,/*LATINCAPITALLETTERI*/
- /* 74 */ 74,/*LATINCAPITALLETTERJ*/
- /* 75 */ 75,/*LATINCAPITALLETTERK*/
- /* 76 */ 76,/*LATINCAPITALLETTERL*/
- /* 77 */ 77,/*LATINCAPITALLETTERM*/
- /* 78 */ 78,/*LATINCAPITALLETTERN*/
- /* 79 */ 79,/*LATINCAPITALLETTERO*/
- /* 80 */ 80,/*LATINCAPITALLETTERP*/
- /* 81 */ 81,/*LATINCAPITALLETTERQ*/
- /* 82 */ 82,/*LATINCAPITALLETTERR*/
- /* 83 */ 83,/*LATINCAPITALLETTERS*/
- /* 84 */ 84,/*LATINCAPITALLETTERT*/
- /* 85 */ 85,/*LATINCAPITALLETTERU*/
- /* 86 */ 86,/*LATINCAPITALLETTERV*/
- /* 87 */ 87,/*LATINCAPITALLETTERW*/
- /* 88 */ 88,/*LATINCAPITALLETTERX*/
- /* 89 */ 89,/*LATINCAPITALLETTERY*/
- /* 90 */ 90,/*LATINCAPITALLETTERZ*/
- /* 91 */ 91,/*LEFTSQUAREBRACKET*/
- /* 92 */ 92,/*REVERSESOLIDUS*/
- /* 93 */ 93,/*RIGHTSQUAREBRACKET*/
- /* 94 */ 94,/*CIRCUMFLEXACCENT*/
- /* 95 */ 95,/*LOWLINE*/
- /* 96 */ 96,/*GRAVEACCENT*/
- /* 97 */ 97,/*LATINSMALLLETTERA*/
- /* 98 */ 98,/*LATINSMALLLETTERB*/
- /* 99 */ 99,/*LATINSMALLLETTERC*/
- /* 100 */ 100,/*LATINSMALLLETTERD*/
- /* 101 */ 101,/*LATINSMALLLETTERE*/
- /* 102 */ 102,/*LATINSMALLLETTERF*/
- /* 103 */ 103,/*LATINSMALLLETTERG*/
- /* 104 */ 104,/*LATINSMALLLETTERH*/
- /* 105 */ 105,/*LATINSMALLLETTERI*/
- /* 106 */ 106,/*LATINSMALLLETTERJ*/
- /* 107 */ 107,/*LATINSMALLLETTERK*/
- /* 108 */ 108,/*LATINSMALLLETTERL*/
- /* 109 */ 109,/*LATINSMALLLETTERM*/
- /* 110 */ 110,/*LATINSMALLLETTERN*/
- /* 111 */ 111,/*LATINSMALLLETTERO*/
- /* 112 */ 112,/*LATINSMALLLETTERP*/
- /* 113 */ 113,/*LATINSMALLLETTERQ*/
- /* 114 */ 114,/*LATINSMALLLETTERR*/
- /* 115 */ 115,/*LATINSMALLLETTERS*/
- /* 116 */ 116,/*LATINSMALLLETTERT*/
- /* 117 */ 117,/*LATINSMALLLETTERU*/
- /* 118 */ 118,/*LATINSMALLLETTERV*/
- /* 119 */ 119,/*LATINSMALLLETTERW*/
- /* 120 */ 120,/*LATINSMALLLETTERX*/
- /* 121 */ 121,/*LATINSMALLLETTERY*/
- /* 122 */ 122,/*LATINSMALLLETTERZ*/
- /* 123 */ 123,/*LEFTCURLYBRACKET*/
- /* 124 */ 124,/*VERTICALLINE*/
- /* 125 */ 125,/*RIGHTCURLYBRACKET*/
- /* 126 */ 126,/*TILDE*/
- 127,
- /* 128 */ 8364,/*EUROSIGN*/
- 129,
- /* 130 */ 8218,/*SINGLELOW-9QUOTATIONMARK*/
- /* 131 */ 402,/*LATINSMALLLETTERFWITHHOOK*/
- /* 132 */ 8222,/*DOUBLELOW-9QUOTATIONMARK*/
- /* 133 */ 8230,/*HORIZONTALELLIPSIS*/
- /* 134 */ 8224,/*DAGGER*/
- /* 135 */ 8225,/*DOUBLEDAGGER*/
- 136,
- /* 137 */ 8240,/*PERMILLESIGN*/
- 138,
- /* 139 */ 8249,/*SINGLELEFT-POINTINGANGLEQUOTATIONMARK*/
- 140,
- 141,
- 142,
- 143,
- 144,
- /* 145 */ 8216,/*LEFTSINGLEQUOTATIONMARK*/
- /* 146 */ 8217,/*RIGHTSINGLEQUOTATIONMARK*/
- /* 147 */ 8220,/*LEFTDOUBLEQUOTATIONMARK*/
- /* 148 */ 8221,/*RIGHTDOUBLEQUOTATIONMARK*/
- /* 149 */ 8226,/*BULLET*/
- /* 150 */ 8211,/*ENDASH*/
- /* 151 */ 8212,/*EMDASH*/
- 152,
- /* 153 */ 8482,/*TRADEMARKSIGN*/
- 154,
- /* 155 */ 8250,/*SINGLERIGHT-POINTINGANGLEQUOTATIONMARK*/
- 156,
- 157,
- 158,
- 159,
- /* 160 */ 160,/*NO-BREAKSPACE*/
- 161,
- /* 162 */ 162,/*CENTSIGN*/
- /* 163 */ 163,/*POUNDSIGN*/
- /* 164 */ 164,/*CURRENCYSIGN*/
- /* 165 */ 165,/*YENSIGN*/
- /* 166 */ 166,/*BROKENBAR*/
- /* 167 */ 167,/*SECTIONSIGN*/
- /* 168 */ 168,/*DIAERESIS*/
- /* 169 */ 169,/*COPYRIGHTSIGN*/
- /* 170 */ 215,/*MULTIPLICATIONSIGN*/
- /* 171 */ 171,/*LEFT-POINTINGDOUBLEANGLEQUOTATIONMARK*/
- /* 172 */ 172,/*NOTSIGN*/
- /* 173 */ 173,/*SOFTHYPHEN*/
- /* 174 */ 174,/*REGISTEREDSIGN*/
- /* 175 */ 781,/*COMBININGVERTICALLINEABOVE*/
- /* 176 */ 176,/*DEGREESIGN*/
- /* 177 */ 177,/*PLUS-MINUSSIGN*/
- /* 178 */ 178,/*SUPERSCRIPTTWO*/
- /* 179 */ 179,/*SUPERSCRIPTTHREE*/
- /* 180 */ 180,/*ACUTEACCENT*/
- /* 181 */ 181,/*MICROSIGN*/
- /* 182 */ 182,/*PILCROWSIGN*/
- /* 183 */ 183,/*MIDDLEDOT*/
- /* 184 */ 184,/*CEDILLA*/
- /* 185 */ 185,/*SUPERSCRIPTONE*/
- /* 186 */ 247,/*DIVISIONSIGN*/
- /* 187 */ 187,/*RIGHT-POINTINGDOUBLEANGLEQUOTATIONMARK*/
- /* 188 */ 188,/*VULGARFRACTIONONEQUARTER*/
- /* 189 */ 189,/*VULGARFRACTIONONEHALF*/
- /* 190 */ 190,/*VULGARFRACTIONTHREEQUARTERS*/
- 191,
- 192,
- 193,
- 194,
- 195,
- 196,
- 197,
- 198,
- 199,
- 200,
- 201,
- 202,
- 203,
- 204,
- 205,
- 206,
- 207,
- 208,
- 209,
- 210,
- 211,
- 212,
- 213,
- 214,
- 215,
- 216,
- 217,
- 218,
- 219,
- 220,
- 221,
- 222,
- /* 223 */ 8215,/*DOUBLELOWLINE*/
- /* 224 */ 1488,/*HEBREWLETTERALEF*/
- /* 225 */ 1489,/*HEBREWLETTERBET*/
- /* 226 */ 1490,/*HEBREWLETTERGIMEL*/
- /* 227 */ 1491,/*HEBREWLETTERDALET*/
- /* 228 */ 1492,/*HEBREWLETTERHE*/
- /* 229 */ 1493,/*HEBREWLETTERVAV*/
- /* 230 */ 1494,/*HEBREWLETTERZAYIN*/
- /* 231 */ 1495,/*HEBREWLETTERHET*/
- /* 232 */ 1496,/*HEBREWLETTERTET*/
- /* 233 */ 1497,/*HEBREWLETTERYOD*/
- /* 234 */ 1498,/*HEBREWLETTERFINALKAF*/
- /* 235 */ 1499,/*HEBREWLETTERKAF*/
- /* 236 */ 1500,/*HEBREWLETTERLAMED*/
- /* 237 */ 1501,/*HEBREWLETTERFINALMEM*/
- /* 238 */ 1502,/*HEBREWLETTERMEM*/
- /* 239 */ 1503,/*HEBREWLETTERFINALNUN*/
- /* 240 */ 1504,/*HEBREWLETTERNUN*/
- /* 241 */ 1505,/*HEBREWLETTERSAMEKH*/
- /* 242 */ 1506,/*HEBREWLETTERAYIN*/
- /* 243 */ 1507,/*HEBREWLETTERFINALPE*/
- /* 244 */ 1508,/*HEBREWLETTERPE*/
- /* 245 */ 1509,/*HEBREWLETTERFINALTSADI*/
- /* 246 */ 1510,/*HEBREWLETTERTSADI*/
- /* 247 */ 1511,/*HEBREWLETTERQOF*/
- /* 248 */ 1512,/*HEBREWLETTERRESH*/
- /* 249 */ 1513,/*HEBREWLETTERSHIN*/
- /* 250 */ 1514,/*HEBREWLETTERTAV*/
- 251,
- 252,
- 253,
- 254,
- 255
+static convert_t cp857[] = {
+	{ 0, 0 },
+	{ 1, 1 },
+	{ 2, 2 },
+	{ 3, 3 },
+	{ 4, 4 },
+	{ 5, 5 },
+	{ 6, 6 },
+	{ 7, 7 },
+	{ 8, 8 },
+	{ 9, 9 },
+	{ 10, 10 },
+	{ 11, 11 },
+	{ 12, 12 },
+	{ 13, 13 },
+	{ 14, 14 },
+	{ 15, 15 },
+	{ 16, 16 },
+	{ 17, 17 },
+	{ 18, 18 },
+	{ 19, 19 },
+	{ 20, 20 },
+	{ 21, 21 },
+	{ 22, 22 },
+	{ 23, 23 },
+	{ 24, 24 },
+	{ 25, 25 },
+	{ 26, 26 },
+	{ 27, 27 },
+	{ 28, 28 },
+	{ 29, 29 },
+	{ 30, 30 },
+	{ 31, 31 },
+	{ 32, 32 },
+	{ 33, 33 },
+	{ 34, 34 },
+	{ 35, 35 },
+	{ 36, 36 },
+	{ 37, 37 },
+	{ 38, 38 },
+	{ 39, 39 },
+	{ 40, 40 },
+	{ 41, 41 },
+	{ 42, 42 },
+	{ 43, 43 },
+	{ 44, 44 },
+	{ 45, 45 },
+	{ 46, 46 },
+	{ 47, 47 },
+	{ 48, 48 },
+	{ 49, 49 },
+	{ 50, 50 },
+	{ 51, 51 },
+	{ 52, 52 },
+	{ 53, 53 },
+	{ 54, 54 },
+	{ 55, 55 },
+	{ 56, 56 },
+	{ 57, 57 },
+	{ 58, 58 },
+	{ 59, 59 },
+	{ 60, 60 },
+	{ 61, 61 },
+	{ 62, 62 },
+	{ 63, 63 },
+	{ 64, 64 },
+	{ 65, 65 },
+	{ 66, 66 },
+	{ 67, 67 },
+	{ 68, 68 },
+	{ 69, 69 },
+	{ 70, 70 },
+	{ 71, 71 },
+	{ 72, 72 },
+	{ 73, 73 },
+	{ 74, 74 },
+	{ 75, 75 },
+	{ 76, 76 },
+	{ 77, 77 },
+	{ 78, 78 },
+	{ 79, 79 },
+	{ 80, 80 },
+	{ 81, 81 },
+	{ 82, 82 },
+	{ 83, 83 },
+	{ 84, 84 },
+	{ 85, 85 },
+	{ 86, 86 },
+	{ 87, 87 },
+	{ 88, 88 },
+	{ 89, 89 },
+	{ 90, 90 },
+	{ 91, 91 },
+	{ 92, 92 },
+	{ 93, 93 },
+	{ 94, 94 },
+	{ 95, 95 },
+	{ 96, 96 },
+	{ 97, 97 },
+	{ 98, 98 },
+	{ 99, 99 },
+	{ 100, 100 },
+	{ 101, 101 },
+	{ 102, 102 },
+	{ 103, 103 },
+	{ 104, 104 },
+	{ 105, 105 },
+	{ 106, 106 },
+	{ 107, 107 },
+	{ 108, 108 },
+	{ 109, 109 },
+	{ 110, 110 },
+	{ 111, 111 },
+	{ 112, 112 },
+	{ 113, 113 },
+	{ 114, 114 },
+	{ 115, 115 },
+	{ 116, 116 },
+	{ 117, 117 },
+	{ 118, 118 },
+	{ 119, 119 },
+	{ 120, 120 },
+	{ 121, 121 },
+	{ 122, 122 },
+	{ 123, 123 },
+	{ 124, 124 },
+	{ 125, 125 },
+	{ 126, 126 },
+	{ 127, 127 },
+	{ 128, 199 },
+	{ 129, 252 },
+	{ 130, 233 },
+	{ 131, 226 },
+	{ 132, 228 },
+	{ 133, 224 },
+	{ 134, 229 },
+	{ 135, 231 },
+	{ 136, 234 },
+	{ 137, 235 },
+	{ 138, 232 },
+	{ 139, 239 },
+	{ 140, 238 },
+	{ 141, 305 },
+	{ 142, 196 },
+	{ 143, 197 },
+	{ 144, 201 },
+	{ 145, 230 },
+	{ 146, 198 },
+	{ 147, 244 },
+	{ 148, 246 },
+	{ 149, 242 },
+	{ 150, 251 },
+	{ 151, 249 },
+	{ 152, 304 },
+	{ 153, 214 },
+	{ 154, 220 },
+	{ 155, 248 },
+	{ 156, 163 },
+	{ 157, 216 },
+	{ 158, 350 },
+	{ 159, 351 },
+	{ 160, 225 },
+	{ 161, 237 },
+	{ 162, 243 },
+	{ 163, 250 },
+	{ 164, 241 },
+	{ 165, 209 },
+	{ 166, 286 },
+	{ 167, 287 },
+	{ 168, 191 },
+	{ 169, 174 },
+	{ 170, 172 },
+	{ 171, 189 },
+	{ 172, 188 },
+	{ 173, 161 },
+	{ 174, 171 },
+	{ 175, 187 },
+	{ 176, 9617 },
+	{ 177, 9618 },
+	{ 178, 9619 },
+	{ 179, 9474 },
+	{ 180, 9508 },
+	{ 181, 193 },
+	{ 182, 194 },
+	{ 183, 192 },
+	{ 184, 169 },
+	{ 185, 9571 },
+	{ 186, 9553 },
+	{ 187, 9559 },
+	{ 188, 9565 },
+	{ 189, 162 },
+	{ 190, 165 },
+	{ 191, 9488 },
+	{ 192, 9492 },
+	{ 193, 9524 },
+	{ 194, 9516 },
+	{ 195, 9500 },
+	{ 196, 9472 },
+	{ 197, 9532 },
+	{ 198, 227 },
+	{ 199, 195 },
+	{ 200, 9562 },
+	{ 201, 9556 },
+	{ 202, 9577 },
+	{ 203, 9574 },
+	{ 204, 9568 },
+	{ 205, 9552 },
+	{ 206, 9580 },
+	{ 207, 164 },
+	{ 208, 186 },
+	{ 209, 170 },
+	{ 210, 202 },
+	{ 211, 203 },
+	{ 212, 200 },
+	{ 213, 213 },
+	{ 214, 205 },
+	{ 215, 206 },
+	{ 216, 207 },
+	{ 217, 9496 },
+	{ 218, 9484 },
+	{ 219, 9608 },
+	{ 220, 9604 },
+	{ 221, 166 },
+	{ 222, 204 },
+	{ 223, 9600 },
+	{ 224, 211 },
+	{ 225, 223 },
+	{ 226, 212 },
+	{ 227, 210 },
+	{ 228, 245 },
+	{ 229, 213 },
+	{ 230, 181 },
+	{ 231, 231 },
+	{ 232, 215 },
+	{ 233, 218 },
+	{ 234, 219 },
+	{ 235, 217 },
+	{ 236, 236 },
+	{ 237, 255 },
+	{ 238, 175 },
+	{ 239, 180 },
+	{ 240, 173 },
+	{ 241, 177 },
+	{ 242, 242 },
+	{ 243, 190 },
+	{ 244, 182 },
+	{ 245, 167 },
+	{ 246, 247 },
+	{ 247, 184 },
+	{ 248, 176 },
+	{ 249, 168 },
+	{ 250, 183 },
+	{ 251, 185 },
+	{ 252, 179 },
+	{ 253, 178 },
+	{ 254, 9632 },
+	{ 255, 160 },
+	{ 34, 8220 },
+	{ 34, 8221 },
+	{ 39, 8216 },
+	{ 39, 8217 },
+	{ 45, 8211 },
+	{ 45, 8212 },
+	{ 32, 8194 },
+	{ 32, 8195 },
+	{ 32, 8201 },
+	{ 65, 256 },
+	{ 65, 258 },
+	{ 65, 260 },
+	{ 65, 461 },
+	{ 97, 257 },
+	{ 97, 259 },
+	{ 97, 261 },
+	{ 97, 462 },
+	{ 67, 262 },
+	{ 67, 264 },
+	{ 67, 266 },
+	{ 67, 268 },
+	{ 99, 263 },
+	{ 99, 265 },
+	{ 99, 267 },
+	{ 99, 269 },
+	{ 68, 270 },
+	{ 100, 271 },
+	{ 69, 274 },
+	{ 69, 276 },
+	{ 69, 278 },
+	{ 69, 280 },
+	{ 69, 282 },
+	{ 101, 275 },
+	{ 101, 277 },
+	{ 101, 279 },
+	{ 101, 281 },
+	{ 101, 283 },
+	{ 71, 284 },
+	{ 71, 288 },
+	{ 71, 290 },
+	{ 71, 486 },
+	{ 71, 500 },
+	{ 103, 285 },
+	{ 103, 289 },
+	{ 103, 291 },
+	{ 103, 487 },
+	{ 103, 501 },
+	{ 72, 292 },
+	{ 104, 293 },
+	{ 73, 296 },
+	{ 73, 298 },
+	{ 73, 300 },
+	{ 73, 302 },
+	{ 73, 463 },
+	{ 105, 297 },
+	{ 105, 299 },
+	{ 105, 301 },
+	{ 105, 303 },
+	{ 105, 464 },
+	{ 74, 308 },
+	{ 106, 309 },
+	{ 75, 310 },
+	{ 75, 488 },
+	{ 107, 311 },
+	{ 107, 489 },
+	{ 76, 313 },
+	{ 76, 315 },
+	{ 76, 317 },
+	{ 76, 319 },
+	{ 76, 321 },
+	{ 108, 314 },
+	{ 108, 316 },
+	{ 108, 318 },
+	{ 108, 320 },
+	{ 108, 322 },
+	{ 77, 323 },
+	{ 77, 325 },
+	{ 77, 327 },
+	{ 109, 324 },
+	{ 109, 326 },
+	{ 109, 328 },
+	{ 109, 329 },
+	{ 78, 332 },
+	{ 78, 334 },
+	{ 78, 336 },
+	{ 78, 465 },
+	{ 78, 490 },
+	{ 110, 333 },
+	{ 110, 335 },
+	{ 110, 337 },
+	{ 110, 466 },
+	{ 110, 491 },
+	{ 82, 340 },
+	{ 82, 342 },
+	{ 82, 344 },
+	{ 114, 341 },
+	{ 114, 343 },
+	{ 114, 345 },
+	{ 83, 346 },
+	{ 83, 348 },
+	{ 83, 352 },
+	{ 115, 347 },
+	{ 115, 349 },
+	{ 115, 353 },
+	{ 84, 354 },
+	{ 84, 356 },
+	{ 116, 355 },
+	{ 116, 357 },
+	{ 85, 360 },
+	{ 85, 362 },
+	{ 85, 364 },
+	{ 85, 366 },
+	{ 85, 368 },
+	{ 85, 370 },
+	{ 85, 467 },
+	{ 117, 361 },
+	{ 117, 363 },
+	{ 117, 365 },
+	{ 117, 367 },
+	{ 117, 369 },
+	{ 117, 371 },
+	{ 117, 468 },
+	{ 87, 372 },
+	{ 119, 373 },
+	{ 89, 221 },
+	{ 89, 374 },
+	{ 89, 376 },
+	{ 121, 253 },
+	{ 121, 375 },
+	{ 90, 377 },
+	{ 90, 379 },
+	{ 90, 381 },
+	{ 122, 378 },
+	{ 122, 380 },
+	{ 122, 382 },
 };
-charconvert cp1256[] = {
- /* 0 */ 0,/*<tdbgcolor="C0C0C0"><fontface="Arial"color="000000"><b>ISO/IEC10646-1:2000CharacterName</b></font>*/
- 1,
- 2,
- 3,
- 4,
- 5,
- 6,
- 7,
- 8,
- 9,
- 10,
- 11,
- 12,
- 13,
- 14,
- 15,
- 16,
- 17,
- 18,
- 19,
- 20,
- 21,
- 22,
- 23,
- 24,
- 25,
- 26,
- 27,
- 28,
- 29,
- 30,
- 31,
- /* 32 */ 32,/*SPACE*/
- /* 33 */ 33,/*EXCLAMATIONMARK*/
- /* 34 */ 34,/*QUOTATIONMARK*/
- /* 35 */ 35,/*NUMBERSIGN*/
- /* 36 */ 36,/*DOLLARSIGN*/
- /* 37 */ 37,/*PERCENTSIGN*/
- /* 38 */ 38,/*AMPERSAND*/
- /* 39 */ 39,/*APOSTROPHE*/
- /* 40 */ 40,/*LEFTPARENTHESIS*/
- /* 41 */ 41,/*RIGHTPARENTHESIS*/
- /* 42 */ 42,/*ASTERISK*/
- /* 43 */ 43,/*PLUSSIGN*/
- /* 44 */ 44,/*COMMA*/
- /* 45 */ 45,/*HYPHEN-MINUS*/
- /* 46 */ 46,/*FULLSTOP*/
- /* 47 */ 47,/*SOLIDUS*/
- /* 48 */ 48,/*DIGITZERO*/
- /* 49 */ 49,/*DIGITONE*/
- /* 50 */ 50,/*DIGITTWO*/
- /* 51 */ 51,/*DIGITTHREE*/
- /* 52 */ 52,/*DIGITFOUR*/
- /* 53 */ 53,/*DIGITFIVE*/
- /* 54 */ 54,/*DIGITSIX*/
- /* 55 */ 55,/*DIGITSEVEN*/
- /* 56 */ 56,/*DIGITEIGHT*/
- /* 57 */ 57,/*DIGITNINE*/
- /* 58 */ 58,/*COLON*/
- /* 59 */ 59,/*SEMICOLON*/
- /* 60 */ 60,/*LESS-THANSIGN*/
- /* 61 */ 61,/*EQUALSSIGN*/
- /* 62 */ 62,/*GREATER-THANSIGN*/
- /* 63 */ 63,/*QUESTIONMARK*/
- /* 64 */ 64,/*COMMERCIALAT*/
- /* 65 */ 65,/*LATINCAPITALLETTERA*/
- /* 66 */ 66,/*LATINCAPITALLETTERB*/
- /* 67 */ 67,/*LATINCAPITALLETTERC*/
- /* 68 */ 68,/*LATINCAPITALLETTERD*/
- /* 69 */ 69,/*LATINCAPITALLETTERE*/
- /* 70 */ 70,/*LATINCAPITALLETTERF*/
- /* 71 */ 71,/*LATINCAPITALLETTERG*/
- /* 72 */ 72,/*LATINCAPITALLETTERH*/
- /* 73 */ 73,/*LATINCAPITALLETTERI*/
- /* 74 */ 74,/*LATINCAPITALLETTERJ*/
- /* 75 */ 75,/*LATINCAPITALLETTERK*/
- /* 76 */ 76,/*LATINCAPITALLETTERL*/
- /* 77 */ 77,/*LATINCAPITALLETTERM*/
- /* 78 */ 78,/*LATINCAPITALLETTERN*/
- /* 79 */ 79,/*LATINCAPITALLETTERO*/
- /* 80 */ 80,/*LATINCAPITALLETTERP*/
- /* 81 */ 81,/*LATINCAPITALLETTERQ*/
- /* 82 */ 82,/*LATINCAPITALLETTERR*/
- /* 83 */ 83,/*LATINCAPITALLETTERS*/
- /* 84 */ 84,/*LATINCAPITALLETTERT*/
- /* 85 */ 85,/*LATINCAPITALLETTERU*/
- /* 86 */ 86,/*LATINCAPITALLETTERV*/
- /* 87 */ 87,/*LATINCAPITALLETTERW*/
- /* 88 */ 88,/*LATINCAPITALLETTERX*/
- /* 89 */ 89,/*LATINCAPITALLETTERY*/
- /* 90 */ 90,/*LATINCAPITALLETTERZ*/
- /* 91 */ 91,/*LEFTSQUAREBRACKET*/
- /* 92 */ 92,/*REVERSESOLIDUS*/
- /* 93 */ 93,/*RIGHTSQUAREBRACKET*/
- /* 94 */ 94,/*CIRCUMFLEXACCENT*/
- /* 95 */ 95,/*LOWLINE*/
- /* 96 */ 96,/*GRAVEACCENT*/
- /* 97 */ 97,/*LATINSMALLLETTERA*/
- /* 98 */ 98,/*LATINSMALLLETTERB*/
- /* 99 */ 99,/*LATINSMALLLETTERC*/
- /* 100 */ 100,/*LATINSMALLLETTERD*/
- /* 101 */ 101,/*LATINSMALLLETTERE*/
- /* 102 */ 102,/*LATINSMALLLETTERF*/
- /* 103 */ 103,/*LATINSMALLLETTERG*/
- /* 104 */ 104,/*LATINSMALLLETTERH*/
- /* 105 */ 105,/*LATINSMALLLETTERI*/
- /* 106 */ 106,/*LATINSMALLLETTERJ*/
- /* 107 */ 107,/*LATINSMALLLETTERK*/
- /* 108 */ 108,/*LATINSMALLLETTERL*/
- /* 109 */ 109,/*LATINSMALLLETTERM*/
- /* 110 */ 110,/*LATINSMALLLETTERN*/
- /* 111 */ 111,/*LATINSMALLLETTERO*/
- /* 112 */ 112,/*LATINSMALLLETTERP*/
- /* 113 */ 113,/*LATINSMALLLETTERQ*/
- /* 114 */ 114,/*LATINSMALLLETTERR*/
- /* 115 */ 115,/*LATINSMALLLETTERS*/
- /* 116 */ 116,/*LATINSMALLLETTERT*/
- /* 117 */ 117,/*LATINSMALLLETTERU*/
- /* 118 */ 118,/*LATINSMALLLETTERV*/
- /* 119 */ 119,/*LATINSMALLLETTERW*/
- /* 120 */ 120,/*LATINSMALLLETTERX*/
- /* 121 */ 121,/*LATINSMALLLETTERY*/
- /* 122 */ 122,/*LATINSMALLLETTERZ*/
- /* 123 */ 123,/*LEFTCURLYBRACKET*/
- /* 124 */ 124,/*VERTICALLINE*/
- /* 125 */ 125,/*RIGHTCURLYBRACKET*/
- /* 126 */ 126,/*TILDE*/
- 127,
- /* 128 */ 1548,/*ARABICCOMMA*/
- 129,
- /* 130 */ 8218,/*SINGLELOW-9QUOTATIONMARK*/
- 131,
- /* 132 */ 8222,/*DOUBLELOW-9QUOTATIONMARK*/
- /* 133 */ 8230,/*HORIZONTALELLIPSIS*/
- /* 134 */ 8224,/*DAGGER*/
- /* 135 */ 8225,/*DOUBLEDAGGER*/
- 136,
- /* 137 */ 8240,/*PERMILLESIGN*/
- 138,
- /* 139 */ 8249,/*SINGLELEFT-POINTINGANGLEQUOTATIONMARK*/
- 140,
- 141,
- 142,
- 143,
- 144,
- /* 145 */ 8216,/*LEFTSINGLEQUOTATIONMARK*/
- /* 146 */ 8217,/*RIGHTSINGLEQUOTATIONMARK*/
- /* 147 */ 8220,/*LEFTDOUBLEQUOTATIONMARK*/
- /* 148 */ 8221,/*RIGHTDOUBLEQUOTATIONMARK*/
- /* 149 */ 8226,/*BULLET*/
- /* 150 */ 8211,/*ENDASH*/
- /* 151 */ 8212,/*EMDASH*/
- /* 152 */ 1563,/*ARABICSEMICOLON*/
- /* 153 */ 8482,/*TRADEMARKSIGN*/
- /* 154 */ 1567,/*ARABICQUESTIONMARK*/
- /* 155 */ 8250,/*SINGLERIGHT-POINTINGANGLEQUOTATIONMARK*/
- /* 156 */ 1569,/*ARABICLETTERHAMZA*/
- /* 157 */ 1570,/*ARABICLETTERALEFWITHMADDAABOVE*/
- /* 158 */ 1571,/*ARABICLETTERALEFWITHHAMZAABOVE*/
- /* 159 */ 376,/*LATINCAPITALLETTERYWITHDIAERESIS*/
- /* 160 */ 160,/*NO-BREAKSPACE*/
- /* 161 */ 1572,/*ARABICLETTERWAWWITHHAMZAABOVE*/
- /* 162 */ 1573,/*ARABICLETTERALEFWITHHAMZABELOW*/
- /* 163 */ 163,/*POUNDSIGN*/
- /* 164 */ 164,/*CURRENCYSIGN*/
- /* 165 */ 1574,/*ARABICLETTERYEHWITHHAMZAABOVE*/
- /* 166 */ 166,/*BROKENBAR*/
- /* 167 */ 167,/*SECTIONSIGN*/
- /* 168 */ 1575,/*ARABICLETTERALEF*/
- /* 169 */ 169,/*COPYRIGHTSIGN*/
- /* 170 */ 1576,/*ARABICLETTERBEH*/
- /* 171 */ 171,/*LEFT-POINTINGDOUBLEANGLEQUOTATIONMARK*/
- /* 172 */ 172,/*NOTSIGN*/
- /* 173 */ 173,/*SOFTHYPHEN*/
- /* 174 */ 174,/*REGISTEREDSIGN*/
- 175,
- /* 176 */ 176,/*DEGREESIGN*/
- /* 177 */ 177,/*PLUS-MINUSSIGN*/
- /* 178 */ 1577,/*ARABICLETTERTEHMARBUTA*/
- /* 179 */ 1578,/*ARABICLETTERTEH*/
- /* 180 */ 1579,/*ARABICLETTERTHEH*/
- /* 181 */ 181,/*MICROSIGN*/
- /* 182 */ 182,/*PILCROWSIGN*/
- /* 183 */ 183,/*MIDDLEDOT*/
- /* 184 */ 1580,/*ARABICLETTERJEEM*/
- 185,
- /* 186 */ 1581,/*ARABICLETTERHAH*/
- /* 187 */ 187,/*RIGHT-POINTINGDOUBLEANGLEQUOTATIONMARK*/
- /* 188 */ 1582,/*ARABICLETTERKHAH*/
- /* 189 */ 1583,/*ARABICLETTERDAL*/
- /* 190 */ 1584,/*ARABICLETTERTHAL*/
- /* 191 */ 1585,/*ARABICLETTERREH*/
- /* 192 */ 192,/*LATINCAPITALLETTERAWITHGRAVE*/
- /* 193 */ 1586,/*ARABICLETTERZAIN*/
- /* 194 */ 194,/*LATINCAPITALLETTERAWITHCIRCUMFLEX*/
- 195,
- /* 196 */ 1587,/*ARABICLETTERSEEN*/
- /* 197 */ 1588,/*ARABICLETTERSHEEN*/
- /* 198 */ 1589,/*ARABICLETTERSAD*/
- /* 199 */ 199,/*LATINCAPITALLETTERCWITHCEDILLA*/
- /* 200 */ 200,/*LATINCAPITALLETTEREWITHGRAVE*/
- /* 201 */ 201,/*LATINCAPITALLETTEREWITHACUTE*/
- /* 202 */ 202,/*LATINCAPITALLETTEREWITHCIRCUMFLEX*/
- /* 203 */ 203,/*LATINCAPITALLETTEREWITHDIAERESIS*/
- /* 204 */ 1590,/*ARABICLETTERDAD*/
- /* 205 */ 1591,/*ARABICLETTERTAH*/
- /* 206 */ 206,/*LATINCAPITALLETTERIWITHCIRCUMFLEX*/
- /* 207 */ 207,/*LATINCAPITALLETTERIWITHDIAERESIS*/
- /* 208 */ 1592,/*ARABICLETTERZAH*/
- /* 209 */ 1593,/*ARABICLETTERAIN*/
- /* 210 */ 1594,/*ARABICLETTERGHAIN*/
- /* 211 */ 1600,/*ARABICTATWEEL*/
- /* 212 */ 212,/*LATINCAPITALLETTEROWITHCIRCUMFLEX*/
- /* 213 */ 1601,/*ARABICLETTERFEH*/
- /* 214 */ 1602,/*ARABICLETTERQAF*/
- /* 215 */ 215,/*MULTIPLICATIONSIGN*/
- /* 216 */ 1603,/*ARABICLETTERKAF*/
- /* 217 */ 217,/*LATINCAPITALLETTERUWITHGRAVE*/
- /* 218 */ 1711,/*ARABICLETTERGAF*/
- /* 219 */ 219,/*LATINCAPITALLETTERUWITHCIRCUMFLEX*/
- /* 220 */ 220,/*LATINCAPITALLETTERUWITHDIAERESIS*/
- /* 221 */ 1604,/*ARABICLETTERLAM*/
- /* 222 */ 1605,/*ARABICLETTERMEEM*/
- /* 223 */ 1606,/*ARABICLETTERNOON*/
- /* 224 */ 224,/*LATINSMALLLETTERAWITHGRAVE*/
- /* 225 */ 1607,/*ARABICLETTERHEH*/
- /* 226 */ 226,/*LATINSMALLLETTERAWITHCIRCUMFLEX*/
- 227,
- /* 228 */ 1608,/*ARABICLETTERWAW*/
- /* 229 */ 1609,/*ARABICLETTERALEFMAKSURA*/
- /* 230 */ 1610,/*ARABICLETTERYEH*/
- /* 231 */ 231,/*LATINSMALLLETTERCWITHCEDILLA*/
- /* 232 */ 232,/*LATINSMALLLETTEREWITHGRAVE*/
- /* 233 */ 233,/*LATINSMALLLETTEREWITHACUTE*/
- /* 234 */ 234,/*LATINSMALLLETTEREWITHCIRCUMFLEX*/
- /* 235 */ 235,/*LATINSMALLLETTEREWITHDIAERESIS*/
- /* 236 */ 1611,/*ARABICFATHATAN*/
- /* 237 */ 1612,/*ARABICDAMMATAN*/
- /* 238 */ 238,/*LATINSMALLLETTERIWITHCIRCUMFLEX*/
- /* 239 */ 239,/*LATINSMALLLETTERIWITHDIAERESIS*/
- /* 240 */ 1613,/*ARABICKASRATAN*/
- /* 241 */ 1614,/*ARABICFATHA*/
- /* 242 */ 1615,/*ARABICDAMMA*/
- /* 243 */ 1616,/*ARABICKASRA*/
- /* 244 */ 244,/*LATINSMALLLETTEROWITHCIRCUMFLEX*/
- /* 245 */ 1617,/*ARABICSHADDA*/
- /* 246 */ 1618,/*ARABICSUKUN*/
- /* 247 */ 247,/*DIVISIONSIGN*/
- 248,
- /* 249 */ 249,/*LATINSMALLLETTERUWITHGRAVE*/
- 250,
- /* 251 */ 251,/*LATINSMALLLETTERUWITHCIRCUMFLEX*/
- /* 252 */ 252,/*LATINSMALLLETTERUWITHDIAERESIS*/
- 253,
- 254,
- /* 255 */ 255/*LATINSMALLLETTERYWITHDIAERESIS*/
+static convert_t cp860[] = {
+	{ 0, 0 },
+	{ 1, 1 },
+	{ 2, 2 },
+	{ 3, 3 },
+	{ 4, 4 },
+	{ 5, 5 },
+	{ 6, 6 },
+	{ 7, 7 },
+	{ 8, 8 },
+	{ 9, 9 },
+	{ 10, 10 },
+	{ 11, 11 },
+	{ 12, 12 },
+	{ 13, 13 },
+	{ 14, 14 },
+	{ 15, 15 },
+	{ 16, 16 },
+	{ 17, 17 },
+	{ 18, 18 },
+	{ 19, 19 },
+	{ 20, 20 },
+	{ 21, 21 },
+	{ 22, 22 },
+	{ 23, 23 },
+	{ 24, 24 },
+	{ 25, 25 },
+	{ 26, 26 },
+	{ 27, 27 },
+	{ 28, 28 },
+	{ 29, 29 },
+	{ 30, 30 },
+	{ 31, 31 },
+	{ 32, 32 },
+	{ 33, 33 },
+	{ 34, 34 },
+	{ 35, 35 },
+	{ 36, 36 },
+	{ 37, 37 },
+	{ 38, 38 },
+	{ 39, 39 },
+	{ 40, 40 },
+	{ 41, 41 },
+	{ 42, 42 },
+	{ 43, 43 },
+	{ 44, 44 },
+	{ 45, 45 },
+	{ 46, 46 },
+	{ 47, 47 },
+	{ 48, 48 },
+	{ 49, 49 },
+	{ 50, 50 },
+	{ 51, 51 },
+	{ 52, 52 },
+	{ 53, 53 },
+	{ 54, 54 },
+	{ 55, 55 },
+	{ 56, 56 },
+	{ 57, 57 },
+	{ 58, 58 },
+	{ 59, 59 },
+	{ 60, 60 },
+	{ 61, 61 },
+	{ 62, 62 },
+	{ 63, 63 },
+	{ 64, 64 },
+	{ 65, 65 },
+	{ 66, 66 },
+	{ 67, 67 },
+	{ 68, 68 },
+	{ 69, 69 },
+	{ 70, 70 },
+	{ 71, 71 },
+	{ 72, 72 },
+	{ 73, 73 },
+	{ 74, 74 },
+	{ 75, 75 },
+	{ 76, 76 },
+	{ 77, 77 },
+	{ 78, 78 },
+	{ 79, 79 },
+	{ 80, 80 },
+	{ 81, 81 },
+	{ 82, 82 },
+	{ 83, 83 },
+	{ 84, 84 },
+	{ 85, 85 },
+	{ 86, 86 },
+	{ 87, 87 },
+	{ 88, 88 },
+	{ 89, 89 },
+	{ 90, 90 },
+	{ 91, 91 },
+	{ 92, 92 },
+	{ 93, 93 },
+	{ 94, 94 },
+	{ 95, 95 },
+	{ 96, 96 },
+	{ 97, 97 },
+	{ 98, 98 },
+	{ 99, 99 },
+	{ 100, 100 },
+	{ 101, 101 },
+	{ 102, 102 },
+	{ 103, 103 },
+	{ 104, 104 },
+	{ 105, 105 },
+	{ 106, 106 },
+	{ 107, 107 },
+	{ 108, 108 },
+	{ 109, 109 },
+	{ 110, 110 },
+	{ 111, 111 },
+	{ 112, 112 },
+	{ 113, 113 },
+	{ 114, 114 },
+	{ 115, 115 },
+	{ 116, 116 },
+	{ 117, 117 },
+	{ 118, 118 },
+	{ 119, 119 },
+	{ 120, 120 },
+	{ 121, 121 },
+	{ 122, 122 },
+	{ 123, 123 },
+	{ 124, 124 },
+	{ 125, 125 },
+	{ 126, 126 },
+	{ 127, 127 },
+	{ 128, 199 },
+	{ 129, 252 },
+	{ 130, 233 },
+	{ 131, 226 },
+	{ 132, 227 },
+	{ 133, 224 },
+	{ 134, 193 },
+	{ 135, 231 },
+	{ 136, 234 },
+	{ 137, 202 },
+	{ 138, 232 },
+	{ 139, 205 },
+	{ 140, 212 },
+	{ 141, 236 },
+	{ 142, 195 },
+	{ 143, 194 },
+	{ 144, 201 },
+	{ 145, 192 },
+	{ 146, 200 },
+	{ 147, 244 },
+	{ 148, 245 },
+	{ 149, 242 },
+	{ 150, 218 },
+	{ 151, 249 },
+	{ 152, 204 },
+	{ 153, 213 },
+	{ 154, 220 },
+	{ 155, 162 },
+	{ 156, 163 },
+	{ 157, 217 },
+	{ 158, 8359 },
+	{ 159, 211 },
+	{ 160, 225 },
+	{ 161, 237 },
+	{ 162, 243 },
+	{ 163, 250 },
+	{ 164, 241 },
+	{ 165, 209 },
+	{ 166, 170 },
+	{ 167, 186 },
+	{ 168, 191 },
+	{ 169, 210 },
+	{ 170, 172 },
+	{ 171, 189 },
+	{ 172, 188 },
+	{ 173, 161 },
+	{ 174, 171 },
+	{ 175, 187 },
+	{ 176, 9617 },
+	{ 177, 9618 },
+	{ 178, 9619 },
+	{ 179, 9474 },
+	{ 180, 9508 },
+	{ 181, 9569 },
+	{ 182, 9570 },
+	{ 183, 9558 },
+	{ 184, 9557 },
+	{ 185, 9571 },
+	{ 186, 9553 },
+	{ 187, 9559 },
+	{ 188, 9565 },
+	{ 189, 9564 },
+	{ 190, 9563 },
+	{ 191, 9488 },
+	{ 192, 9492 },
+	{ 193, 9524 },
+	{ 194, 9516 },
+	{ 195, 9500 },
+	{ 196, 9472 },
+	{ 197, 9532 },
+	{ 198, 9566 },
+	{ 199, 9567 },
+	{ 200, 9562 },
+	{ 201, 9556 },
+	{ 202, 9577 },
+	{ 203, 9574 },
+	{ 204, 9568 },
+	{ 205, 9552 },
+	{ 206, 9580 },
+	{ 207, 9575 },
+	{ 208, 9576 },
+	{ 209, 9572 },
+	{ 210, 9573 },
+	{ 211, 9561 },
+	{ 212, 9560 },
+	{ 213, 9554 },
+	{ 214, 9555 },
+	{ 215, 9579 },
+	{ 216, 9578 },
+	{ 217, 9496 },
+	{ 218, 9484 },
+	{ 219, 9608 },
+	{ 220, 9604 },
+	{ 221, 9612 },
+	{ 222, 9616 },
+	{ 223, 9600 },
+	{ 224, 945 },
+	{ 225, 223 },
+	{ 226, 915 },
+	{ 227, 960 },
+	{ 228, 931 },
+	{ 229, 963 },
+	{ 230, 181 },
+	{ 231, 964 },
+	{ 232, 934 },
+	{ 233, 920 },
+	{ 234, 937 },
+	{ 235, 948 },
+	{ 236, 8734 },
+	{ 237, 966 },
+	{ 238, 949 },
+	{ 239, 8745 },
+	{ 240, 8801 },
+	{ 241, 177 },
+	{ 242, 8805 },
+	{ 243, 8804 },
+	{ 244, 8992 },
+	{ 245, 8993 },
+	{ 246, 247 },
+	{ 247, 8776 },
+	{ 248, 176 },
+	{ 249, 8729 },
+	{ 250, 183 },
+	{ 251, 8730 },
+	{ 252, 8319 },
+	{ 253, 178 },
+	{ 254, 9632 },
+	{ 255, 160 },
+	{ 34, 8220 },
+	{ 34, 8221 },
+	{ 39, 8216 },
+	{ 39, 8217 },
+	{ 45, 8211 },
+	{ 45, 8212 },
+	{ 32, 8194 },
+	{ 32, 8195 },
+	{ 32, 8201 },
+	{ 65, 196 },
+	{ 65, 197 },
+	{ 65, 256 },
+	{ 65, 258 },
+	{ 65, 260 },
+	{ 65, 461 },
+	{ 97, 228 },
+	{ 97, 229 },
+	{ 97, 257 },
+	{ 97, 259 },
+	{ 97, 261 },
+	{ 97, 462 },
+	{ 67, 262 },
+	{ 67, 264 },
+	{ 67, 266 },
+	{ 67, 268 },
+	{ 99, 263 },
+	{ 99, 265 },
+	{ 99, 267 },
+	{ 99, 269 },
+	{ 68, 270 },
+	{ 100, 271 },
+	{ 69, 203 },
+	{ 69, 274 },
+	{ 69, 276 },
+	{ 69, 278 },
+	{ 69, 280 },
+	{ 69, 282 },
+	{ 101, 235 },
+	{ 101, 275 },
+	{ 101, 277 },
+	{ 101, 279 },
+	{ 101, 281 },
+	{ 101, 283 },
+	{ 71, 284 },
+	{ 71, 286 },
+	{ 71, 288 },
+	{ 71, 290 },
+	{ 71, 486 },
+	{ 71, 500 },
+	{ 103, 285 },
+	{ 103, 287 },
+	{ 103, 289 },
+	{ 103, 291 },
+	{ 103, 487 },
+	{ 103, 501 },
+	{ 72, 292 },
+	{ 104, 293 },
+	{ 73, 206 },
+	{ 73, 207 },
+	{ 73, 296 },
+	{ 73, 298 },
+	{ 73, 300 },
+	{ 73, 302 },
+	{ 73, 304 },
+	{ 73, 463 },
+	{ 105, 238 },
+	{ 105, 239 },
+	{ 105, 297 },
+	{ 105, 299 },
+	{ 105, 301 },
+	{ 105, 303 },
+	{ 105, 305 },
+	{ 105, 464 },
+	{ 74, 308 },
+	{ 106, 309 },
+	{ 75, 310 },
+	{ 75, 488 },
+	{ 107, 311 },
+	{ 107, 489 },
+	{ 76, 313 },
+	{ 76, 315 },
+	{ 76, 317 },
+	{ 76, 319 },
+	{ 76, 321 },
+	{ 108, 314 },
+	{ 108, 316 },
+	{ 108, 318 },
+	{ 108, 320 },
+	{ 108, 322 },
+	{ 77, 323 },
+	{ 77, 325 },
+	{ 77, 327 },
+	{ 109, 324 },
+	{ 109, 326 },
+	{ 109, 328 },
+	{ 109, 329 },
+	{ 78, 214 },
+	{ 78, 216 },
+	{ 78, 332 },
+	{ 78, 334 },
+	{ 78, 336 },
+	{ 78, 465 },
+	{ 78, 490 },
+	{ 110, 246 },
+	{ 110, 248 },
+	{ 110, 333 },
+	{ 110, 335 },
+	{ 110, 337 },
+	{ 110, 466 },
+	{ 110, 491 },
+	{ 82, 340 },
+	{ 82, 342 },
+	{ 82, 344 },
+	{ 114, 341 },
+	{ 114, 343 },
+	{ 114, 345 },
+	{ 83, 346 },
+	{ 83, 348 },
+	{ 83, 350 },
+	{ 83, 352 },
+	{ 115, 347 },
+	{ 115, 349 },
+	{ 115, 351 },
+	{ 115, 353 },
+	{ 84, 354 },
+	{ 84, 356 },
+	{ 116, 355 },
+	{ 116, 357 },
+	{ 85, 219 },
+	{ 85, 360 },
+	{ 85, 362 },
+	{ 85, 364 },
+	{ 85, 366 },
+	{ 85, 368 },
+	{ 85, 370 },
+	{ 85, 467 },
+	{ 117, 251 },
+	{ 117, 361 },
+	{ 117, 363 },
+	{ 117, 365 },
+	{ 117, 367 },
+	{ 117, 369 },
+	{ 117, 371 },
+	{ 117, 468 },
+	{ 87, 372 },
+	{ 119, 373 },
+	{ 89, 221 },
+	{ 89, 374 },
+	{ 89, 376 },
+	{ 121, 253 },
+	{ 121, 255 },
+	{ 121, 375 },
+	{ 90, 377 },
+	{ 90, 379 },
+	{ 90, 381 },
+	{ 122, 378 },
+	{ 122, 380 },
+	{ 122, 382 },
 };
-charconvert cp1257[] = {
- /* 0 */ 0,/*<tdbgcolor="C0C0C0"><fontface="Arial"color="000000"><b>ISO/IEC10646-1:2000CharacterName</b></font>*/
- 1,
- 2,
- 3,
- 4,
- 5,
- 6,
- 7,
- 8,
- 9,
- 10,
- 11,
- 12,
- 13,
- 14,
- 15,
- 16,
- 17,
- 18,
- 19,
- 20,
- 21,
- 22,
- 23,
- 24,
- 25,
- 26,
- 27,
- 28,
- 29,
- 30,
- 31,
- /* 32 */ 32,/*SPACE*/
- /* 33 */ 33,/*EXCLAMATIONMARK*/
- /* 34 */ 34,/*QUOTATIONMARK*/
- /* 35 */ 35,/*NUMBERSIGN*/
- /* 36 */ 36,/*DOLLARSIGN*/
- /* 37 */ 37,/*PERCENTSIGN*/
- /* 38 */ 38,/*AMPERSAND*/
- /* 39 */ 39,/*APOSTROPHE*/
- /* 40 */ 40,/*LEFTPARENTHESIS*/
- /* 41 */ 41,/*RIGHTPARENTHESIS*/
- /* 42 */ 42,/*ASTERISK*/
- /* 43 */ 43,/*PLUSSIGN*/
- /* 44 */ 44,/*COMMA*/
- /* 45 */ 45,/*HYPHEN-MINUS*/
- /* 46 */ 46,/*FULLSTOP*/
- /* 47 */ 47,/*SOLIDUS*/
- /* 48 */ 48,/*DIGITZERO*/
- /* 49 */ 49,/*DIGITONE*/
- /* 50 */ 50,/*DIGITTWO*/
- /* 51 */ 51,/*DIGITTHREE*/
- /* 52 */ 52,/*DIGITFOUR*/
- /* 53 */ 53,/*DIGITFIVE*/
- /* 54 */ 54,/*DIGITSIX*/
- /* 55 */ 55,/*DIGITSEVEN*/
- /* 56 */ 56,/*DIGITEIGHT*/
- /* 57 */ 57,/*DIGITNINE*/
- /* 58 */ 58,/*COLON*/
- /* 59 */ 59,/*SEMICOLON*/
- /* 60 */ 60,/*LESS-THANSIGN*/
- /* 61 */ 61,/*EQUALSSIGN*/
- /* 62 */ 62,/*GREATER-THANSIGN*/
- /* 63 */ 63,/*QUESTIONMARK*/
- /* 64 */ 64,/*COMMERCIALAT*/
- /* 65 */ 65,/*LATINCAPITALLETTERA*/
- /* 66 */ 66,/*LATINCAPITALLETTERB*/
- /* 67 */ 67,/*LATINCAPITALLETTERC*/
- /* 68 */ 68,/*LATINCAPITALLETTERD*/
- /* 69 */ 69,/*LATINCAPITALLETTERE*/
- /* 70 */ 70,/*LATINCAPITALLETTERF*/
- /* 71 */ 71,/*LATINCAPITALLETTERG*/
- /* 72 */ 72,/*LATINCAPITALLETTERH*/
- /* 73 */ 73,/*LATINCAPITALLETTERI*/
- /* 74 */ 74,/*LATINCAPITALLETTERJ*/
- /* 75 */ 75,/*LATINCAPITALLETTERK*/
- /* 76 */ 76,/*LATINCAPITALLETTERL*/
- /* 77 */ 77,/*LATINCAPITALLETTERM*/
- /* 78 */ 78,/*LATINCAPITALLETTERN*/
- /* 79 */ 79,/*LATINCAPITALLETTERO*/
- /* 80 */ 80,/*LATINCAPITALLETTERP*/
- /* 81 */ 81,/*LATINCAPITALLETTERQ*/
- /* 82 */ 82,/*LATINCAPITALLETTERR*/
- /* 83 */ 83,/*LATINCAPITALLETTERS*/
- /* 84 */ 84,/*LATINCAPITALLETTERT*/
- /* 85 */ 85,/*LATINCAPITALLETTERU*/
- /* 86 */ 86,/*LATINCAPITALLETTERV*/
- /* 87 */ 87,/*LATINCAPITALLETTERW*/
- /* 88 */ 88,/*LATINCAPITALLETTERX*/
- /* 89 */ 89,/*LATINCAPITALLETTERY*/
- /* 90 */ 90,/*LATINCAPITALLETTERZ*/
- /* 91 */ 91,/*LEFTSQUAREBRACKET*/
- /* 92 */ 92,/*REVERSESOLIDUS*/
- /* 93 */ 93,/*RIGHTSQUAREBRACKET*/
- /* 94 */ 94,/*CIRCUMFLEXACCENT*/
- /* 95 */ 95,/*LOWLINE*/
- /* 96 */ 96,/*GRAVEACCENT*/
- /* 97 */ 97,/*LATINSMALLLETTERA*/
- /* 98 */ 98,/*LATINSMALLLETTERB*/
- /* 99 */ 99,/*LATINSMALLLETTERC*/
- /* 100 */ 100,/*LATINSMALLLETTERD*/
- /* 101 */ 101,/*LATINSMALLLETTERE*/
- /* 102 */ 102,/*LATINSMALLLETTERF*/
- /* 103 */ 103,/*LATINSMALLLETTERG*/
- /* 104 */ 104,/*LATINSMALLLETTERH*/
- /* 105 */ 105,/*LATINSMALLLETTERI*/
- /* 106 */ 106,/*LATINSMALLLETTERJ*/
- /* 107 */ 107,/*LATINSMALLLETTERK*/
- /* 108 */ 108,/*LATINSMALLLETTERL*/
- /* 109 */ 109,/*LATINSMALLLETTERM*/
- /* 110 */ 110,/*LATINSMALLLETTERN*/
- /* 111 */ 111,/*LATINSMALLLETTERO*/
- /* 112 */ 112,/*LATINSMALLLETTERP*/
- /* 113 */ 113,/*LATINSMALLLETTERQ*/
- /* 114 */ 114,/*LATINSMALLLETTERR*/
- /* 115 */ 115,/*LATINSMALLLETTERS*/
- /* 116 */ 116,/*LATINSMALLLETTERT*/
- /* 117 */ 117,/*LATINSMALLLETTERU*/
- /* 118 */ 118,/*LATINSMALLLETTERV*/
- /* 119 */ 119,/*LATINSMALLLETTERW*/
- /* 120 */ 120,/*LATINSMALLLETTERX*/
- /* 121 */ 121,/*LATINSMALLLETTERY*/
- /* 122 */ 122,/*LATINSMALLLETTERZ*/
- /* 123 */ 123,/*LEFTCURLYBRACKET*/
- /* 124 */ 124,/*VERTICALLINE*/
- /* 125 */ 125,/*RIGHTCURLYBRACKET*/
- /* 126 */ 126,/*TILDE*/
- 127,
- /* 128 */ 8364,/*EUROSIGN*/
- 129,
- /* 130 */ 8218,/*SINGLELOW-9QUOTATIONMARK*/
- 131,
- /* 132 */ 8222,/*DOUBLELOW-9QUOTATIONMARK*/
- /* 133 */ 8230,/*HORIZONTALELLIPSIS*/
- /* 134 */ 8224,/*DAGGER*/
- /* 135 */ 8225,/*DOUBLEDAGGER*/
- 136,
- /* 137 */ 8240,/*PERMILLESIGN*/
- 138,
- /* 139 */ 8249,/*SINGLELEFT-POINTINGANGLEQUOTATIONMARK*/
- 140,
- /* 141 */ 168,/*DIAERESIS*/
- /* 142 */ 711,/*CARON*/
- /* 143 */ 184,/*CEDILLA*/
- 144,
- /* 145 */ 8216,/*LEFTSINGLEQUOTATIONMARK*/
- /* 146 */ 8217,/*RIGHTSINGLEQUOTATIONMARK*/
- /* 147 */ 8220,/*LEFTDOUBLEQUOTATIONMARK*/
- /* 148 */ 8221,/*RIGHTDOUBLEQUOTATIONMARK*/
- /* 149 */ 8226,/*BULLET*/
- /* 150 */ 8211,/*ENDASH*/
- /* 151 */ 8212,/*EMDASH*/
- 152,
- /* 153 */ 8482,/*TRADEMARKSIGN*/
- 154,
- /* 155 */ 8250,/*SINGLERIGHT-POINTINGANGLEQUOTATIONMARK*/
- 156,
- /* 157 */ 175,/*MACRON*/
- /* 158 */ 731,/*OGONEK*/
- 159,
- /* 160 */ 160,/*NO-BREAKSPACE*/
- 161,
- /* 162 */ 162,/*CENTSIGN*/
- /* 163 */ 163,/*POUNDSIGN*/
- /* 164 */ 164,/*CURRENCYSIGN*/
- 165,
- /* 166 */ 166,/*BROKENBAR*/
- /* 167 */ 167,/*SECTIONSIGN*/
- /* 168 */ 216,/*LATINCAPITALLETTEROWITHSTROKE*/
- /* 169 */ 169,/*COPYRIGHTSIGN*/
- /* 170 */ 342,/*LATINCAPITALLETTERRWITHCEDILLA*/
- /* 171 */ 171,/*LEFT-POINTINGDOUBLEANGLEQUOTATIONMARK*/
- /* 172 */ 172,/*NOTSIGN*/
- /* 173 */ 173,/*SOFTHYPHEN*/
- /* 174 */ 174,/*REGISTEREDSIGN*/
- /* 175 */ 198,/*LATINCAPITALLETTERAE*/
- /* 176 */ 176,/*DEGREESIGN*/
- /* 177 */ 177,/*PLUS-MINUSSIGN*/
- /* 178 */ 178,/*SUPERSCRIPTTWO*/
- /* 179 */ 179,/*SUPERSCRIPTTHREE*/
- /* 180 */ 180,/*ACUTEACCENT*/
- /* 181 */ 181,/*MICROSIGN*/
- /* 182 */ 182,/*PILCROWSIGN*/
- /* 183 */ 183,/*MIDDLEDOT*/
- /* 184 */ 248,/*LATINSMALLLETTEROWITHSTROKE*/
- /* 185 */ 185,/*SUPERSCRIPTONE*/
- /* 186 */ 343,/*LATINSMALLLETTERRWITHCEDILLA*/
- /* 187 */ 187,/*RIGHT-POINTINGDOUBLEANGLEQUOTATIONMARK*/
- /* 188 */ 188,/*VULGARFRACTIONONEQUARTER*/
- /* 189 */ 189,/*VULGARFRACTIONONEHALF*/
- /* 190 */ 190,/*VULGARFRACTIONTHREEQUARTERS*/
- /* 191 */ 230,/*LATINSMALLLETTERAE*/
- /* 192 */ 260,/*LATINCAPITALLETTERAWITHOGONEK*/
- /* 193 */ 302,/*LATINCAPITALLETTERIWITHOGONEK*/
- /* 194 */ 256,/*LATINCAPITALLETTERAWITHMACRON*/
- /* 195 */ 262,/*LATINCAPITALLETTERCWITHACUTE*/
- /* 196 */ 196,/*LATINCAPITALLETTERAWITHDIAERESIS*/
- /* 197 */ 197,/*LATINCAPITALLETTERAWITHRINGABOVE*/
- /* 198 */ 280,/*LATINCAPITALLETTEREWITHOGONEK*/
- /* 199 */ 274,/*LATINCAPITALLETTEREWITHMACRON*/
- /* 200 */ 268,/*LATINCAPITALLETTERCWITHCARON*/
- /* 201 */ 201,/*LATINCAPITALLETTEREWITHACUTE*/
- /* 202 */ 377,/*LATINCAPITALLETTERZWITHACUTE*/
- /* 203 */ 278,/*LATINCAPITALLETTEREWITHDOTABOVE*/
- /* 204 */ 290,/*LATINCAPITALLETTERGWITHCEDILLA*/
- /* 205 */ 310,/*LATINCAPITALLETTERKWITHCEDILLA*/
- /* 206 */ 298,/*LATINCAPITALLETTERIWITHMACRON*/
- /* 207 */ 315,/*LATINCAPITALLETTERLWITHCEDILLA*/
- /* 208 */ 352,/*LATINCAPITALLETTERSWITHCARON*/
- /* 209 */ 323,/*LATINCAPITALLETTERNWITHACUTE*/
- /* 210 */ 325,/*LATINCAPITALLETTERNWITHCEDILLA*/
- /* 211 */ 211,/*LATINCAPITALLETTEROWITHACUTE*/
- /* 212 */ 332,/*LATINCAPITALLETTEROWITHMACRON*/
- /* 213 */ 213,/*LATINCAPITALLETTEROWITHTILDE*/
- /* 214 */ 214,/*LATINCAPITALLETTEROWITHDIAERESIS*/
- /* 215 */ 215,/*MULTIPLICATIONSIGN*/
- /* 216 */ 370,/*LATINCAPITALLETTERUWITHOGONEK*/
- /* 217 */ 321,/*LATINCAPITALLETTERLWITHSTROKE*/
- /* 218 */ 340,/*LATINCAPITALLETTERRWITHACUTE*/
- /* 219 */ 362,/*LATINCAPITALLETTERUWITHMACRON*/
- /* 220 */ 220,/*LATINCAPITALLETTERUWITHDIAERESIS*/
- /* 221 */ 379,/*LATINCAPITALLETTERZWITHDOTABOVE*/
- /* 222 */ 381,/*LATINCAPITALLETTERZWITHCARON*/
- /* 223 */ 223,/*LATINSMALLLETTERSHARPS*/
- /* 224 */ 261,/*LATINSMALLLETTERAWITHOGONEK*/
- /* 225 */ 303,/*LATINSMALLLETTERIWITHOGONEK*/
- /* 226 */ 257,/*LATINSMALLLETTERAWITHMACRON*/
- /* 227 */ 263,/*LATINSMALLLETTERCWITHACUTE*/
- /* 228 */ 228,/*LATINSMALLLETTERAWITHDIAERESIS*/
- /* 229 */ 229,/*LATINSMALLLETTERAWITHRINGABOVE*/
- /* 230 */ 281,/*LATINSMALLLETTEREWITHOGONEK*/
- /* 231 */ 275,/*LATINSMALLLETTEREWITHMACRON*/
- /* 232 */ 269,/*LATINSMALLLETTERCWITHCARON*/
- /* 233 */ 233,/*LATINSMALLLETTEREWITHACUTE*/
- /* 234 */ 378,/*LATINSMALLLETTERZWITHACUTE*/
- /* 235 */ 279,/*LATINSMALLLETTEREWITHDOTABOVE*/
- /* 236 */ 291,/*LATINSMALLLETTERGWITHCEDILLA*/
- /* 237 */ 311,/*LATINSMALLLETTERKWITHCEDILLA*/
- /* 238 */ 299,/*LATINSMALLLETTERIWITHMACRON*/
- /* 239 */ 316,/*LATINSMALLLETTERLWITHCEDILLA*/
- /* 240 */ 353,/*LATINSMALLLETTERSWITHCARON*/
- /* 241 */ 324,/*LATINSMALLLETTERNWITHACUTE*/
- /* 242 */ 326,/*LATINSMALLLETTERNWITHCEDILLA*/
- /* 243 */ 243,/*LATINSMALLLETTEROWITHACUTE*/
- /* 244 */ 333,/*LATINSMALLLETTEROWITHMACRON*/
- /* 245 */ 245,/*LATINSMALLLETTEROWITHTILDE*/
- /* 246 */ 246,/*LATINSMALLLETTEROWITHDIAERESIS*/
- /* 247 */ 247,/*DIVISIONSIGN*/
- /* 248 */ 371,/*LATINSMALLLETTERUWITHOGONEK*/
- /* 249 */ 322,/*LATINSMALLLETTERLWITHSTROKE*/
- /* 250 */ 347,/*LATINSMALLLETTERSWITHACUTE*/
- /* 251 */ 363,/*LATINSMALLLETTERUWITHMACRON*/
- /* 252 */ 252,/*LATINSMALLLETTERUWITHDIAERESIS*/
- /* 253 */ 380,/*LATINSMALLLETTERZWITHDOTABOVE*/
- /* 254 */ 382,/*LATINSMALLLETTERZWITHCARON*/
- /* 255 */ 729/*DOTABOVE*/
+static convert_t cp861[] = {
+	{ 0, 0 },
+	{ 1, 1 },
+	{ 2, 2 },
+	{ 3, 3 },
+	{ 4, 4 },
+	{ 5, 5 },
+	{ 6, 6 },
+	{ 7, 7 },
+	{ 8, 8 },
+	{ 9, 9 },
+	{ 10, 10 },
+	{ 11, 11 },
+	{ 12, 12 },
+	{ 13, 13 },
+	{ 14, 14 },
+	{ 15, 15 },
+	{ 16, 16 },
+	{ 17, 17 },
+	{ 18, 18 },
+	{ 19, 19 },
+	{ 20, 20 },
+	{ 21, 21 },
+	{ 22, 22 },
+	{ 23, 23 },
+	{ 24, 24 },
+	{ 25, 25 },
+	{ 26, 26 },
+	{ 27, 27 },
+	{ 28, 28 },
+	{ 29, 29 },
+	{ 30, 30 },
+	{ 31, 31 },
+	{ 32, 32 },
+	{ 33, 33 },
+	{ 34, 34 },
+	{ 35, 35 },
+	{ 36, 36 },
+	{ 37, 37 },
+	{ 38, 38 },
+	{ 39, 39 },
+	{ 40, 40 },
+	{ 41, 41 },
+	{ 42, 42 },
+	{ 43, 43 },
+	{ 44, 44 },
+	{ 45, 45 },
+	{ 46, 46 },
+	{ 47, 47 },
+	{ 48, 48 },
+	{ 49, 49 },
+	{ 50, 50 },
+	{ 51, 51 },
+	{ 52, 52 },
+	{ 53, 53 },
+	{ 54, 54 },
+	{ 55, 55 },
+	{ 56, 56 },
+	{ 57, 57 },
+	{ 58, 58 },
+	{ 59, 59 },
+	{ 60, 60 },
+	{ 61, 61 },
+	{ 62, 62 },
+	{ 63, 63 },
+	{ 64, 64 },
+	{ 65, 65 },
+	{ 66, 66 },
+	{ 67, 67 },
+	{ 68, 68 },
+	{ 69, 69 },
+	{ 70, 70 },
+	{ 71, 71 },
+	{ 72, 72 },
+	{ 73, 73 },
+	{ 74, 74 },
+	{ 75, 75 },
+	{ 76, 76 },
+	{ 77, 77 },
+	{ 78, 78 },
+	{ 79, 79 },
+	{ 80, 80 },
+	{ 81, 81 },
+	{ 82, 82 },
+	{ 83, 83 },
+	{ 84, 84 },
+	{ 85, 85 },
+	{ 86, 86 },
+	{ 87, 87 },
+	{ 88, 88 },
+	{ 89, 89 },
+	{ 90, 90 },
+	{ 91, 91 },
+	{ 92, 92 },
+	{ 93, 93 },
+	{ 94, 94 },
+	{ 95, 95 },
+	{ 96, 96 },
+	{ 97, 97 },
+	{ 98, 98 },
+	{ 99, 99 },
+	{ 100, 100 },
+	{ 101, 101 },
+	{ 102, 102 },
+	{ 103, 103 },
+	{ 104, 104 },
+	{ 105, 105 },
+	{ 106, 106 },
+	{ 107, 107 },
+	{ 108, 108 },
+	{ 109, 109 },
+	{ 110, 110 },
+	{ 111, 111 },
+	{ 112, 112 },
+	{ 113, 113 },
+	{ 114, 114 },
+	{ 115, 115 },
+	{ 116, 116 },
+	{ 117, 117 },
+	{ 118, 118 },
+	{ 119, 119 },
+	{ 120, 120 },
+	{ 121, 121 },
+	{ 122, 122 },
+	{ 123, 123 },
+	{ 124, 124 },
+	{ 125, 125 },
+	{ 126, 126 },
+	{ 127, 127 },
+	{ 128, 199 },
+	{ 129, 252 },
+	{ 130, 233 },
+	{ 131, 226 },
+	{ 132, 228 },
+	{ 133, 224 },
+	{ 134, 229 },
+	{ 135, 231 },
+	{ 136, 234 },
+	{ 137, 235 },
+	{ 138, 232 },
+	{ 139, 208 },
+	{ 140, 240 },
+	{ 141, 222 },
+	{ 142, 196 },
+	{ 143, 197 },
+	{ 144, 201 },
+	{ 145, 230 },
+	{ 146, 198 },
+	{ 147, 244 },
+	{ 148, 246 },
+	{ 149, 254 },
+	{ 150, 251 },
+	{ 151, 221 },
+	{ 152, 253 },
+	{ 153, 214 },
+	{ 154, 220 },
+	{ 155, 248 },
+	{ 156, 163 },
+	{ 157, 216 },
+	{ 158, 8359 },
+	{ 159, 402 },
+	{ 160, 225 },
+	{ 161, 237 },
+	{ 162, 243 },
+	{ 163, 250 },
+	{ 164, 193 },
+	{ 165, 205 },
+	{ 166, 211 },
+	{ 167, 218 },
+	{ 168, 191 },
+	{ 169, 8976 },
+	{ 170, 172 },
+	{ 171, 189 },
+	{ 172, 188 },
+	{ 173, 161 },
+	{ 174, 171 },
+	{ 175, 187 },
+	{ 176, 9617 },
+	{ 177, 9618 },
+	{ 178, 9619 },
+	{ 179, 9474 },
+	{ 180, 9508 },
+	{ 181, 9569 },
+	{ 182, 9570 },
+	{ 183, 9558 },
+	{ 184, 9557 },
+	{ 185, 9571 },
+	{ 186, 9553 },
+	{ 187, 9559 },
+	{ 188, 9565 },
+	{ 189, 9564 },
+	{ 190, 9563 },
+	{ 191, 9488 },
+	{ 192, 9492 },
+	{ 193, 9524 },
+	{ 194, 9516 },
+	{ 195, 9500 },
+	{ 196, 9472 },
+	{ 197, 9532 },
+	{ 198, 9566 },
+	{ 199, 9567 },
+	{ 200, 9562 },
+	{ 201, 9556 },
+	{ 202, 9577 },
+	{ 203, 9574 },
+	{ 204, 9568 },
+	{ 205, 9552 },
+	{ 206, 9580 },
+	{ 207, 9575 },
+	{ 208, 9576 },
+	{ 209, 9572 },
+	{ 210, 9573 },
+	{ 211, 9561 },
+	{ 212, 9560 },
+	{ 213, 9554 },
+	{ 214, 9555 },
+	{ 215, 9579 },
+	{ 216, 9578 },
+	{ 217, 9496 },
+	{ 218, 9484 },
+	{ 219, 9608 },
+	{ 220, 9604 },
+	{ 221, 9612 },
+	{ 222, 9616 },
+	{ 223, 9600 },
+	{ 224, 945 },
+	{ 225, 223 },
+	{ 226, 915 },
+	{ 227, 960 },
+	{ 228, 931 },
+	{ 229, 963 },
+	{ 230, 181 },
+	{ 231, 964 },
+	{ 232, 934 },
+	{ 233, 920 },
+	{ 234, 937 },
+	{ 235, 948 },
+	{ 236, 8734 },
+	{ 237, 966 },
+	{ 238, 949 },
+	{ 239, 8745 },
+	{ 240, 8801 },
+	{ 241, 177 },
+	{ 242, 8805 },
+	{ 243, 8804 },
+	{ 244, 8992 },
+	{ 245, 8993 },
+	{ 246, 247 },
+	{ 247, 8776 },
+	{ 248, 176 },
+	{ 249, 8729 },
+	{ 250, 183 },
+	{ 251, 8730 },
+	{ 252, 8319 },
+	{ 253, 178 },
+	{ 254, 9632 },
+	{ 255, 160 },
+	{ 34, 8220 },
+	{ 34, 8221 },
+	{ 39, 8216 },
+	{ 39, 8217 },
+	{ 45, 8211 },
+	{ 45, 8212 },
+	{ 32, 8194 },
+	{ 32, 8195 },
+	{ 32, 8201 },
+	{ 65, 192 },
+	{ 65, 194 },
+	{ 65, 195 },
+	{ 65, 256 },
+	{ 65, 258 },
+	{ 65, 260 },
+	{ 65, 461 },
+	{ 97, 227 },
+	{ 97, 257 },
+	{ 97, 259 },
+	{ 97, 261 },
+	{ 97, 462 },
+	{ 67, 262 },
+	{ 67, 264 },
+	{ 67, 266 },
+	{ 67, 268 },
+	{ 99, 263 },
+	{ 99, 265 },
+	{ 99, 267 },
+	{ 99, 269 },
+	{ 68, 270 },
+	{ 100, 271 },
+	{ 69, 200 },
+	{ 69, 202 },
+	{ 69, 203 },
+	{ 69, 274 },
+	{ 69, 276 },
+	{ 69, 278 },
+	{ 69, 280 },
+	{ 69, 282 },
+	{ 101, 275 },
+	{ 101, 277 },
+	{ 101, 279 },
+	{ 101, 281 },
+	{ 101, 283 },
+	{ 71, 284 },
+	{ 71, 286 },
+	{ 71, 288 },
+	{ 71, 290 },
+	{ 71, 486 },
+	{ 71, 500 },
+	{ 103, 285 },
+	{ 103, 287 },
+	{ 103, 289 },
+	{ 103, 291 },
+	{ 103, 487 },
+	{ 103, 501 },
+	{ 72, 292 },
+	{ 104, 293 },
+	{ 73, 204 },
+	{ 73, 206 },
+	{ 73, 207 },
+	{ 73, 296 },
+	{ 73, 298 },
+	{ 73, 300 },
+	{ 73, 302 },
+	{ 73, 304 },
+	{ 73, 463 },
+	{ 105, 236 },
+	{ 105, 238 },
+	{ 105, 239 },
+	{ 105, 297 },
+	{ 105, 299 },
+	{ 105, 301 },
+	{ 105, 303 },
+	{ 105, 305 },
+	{ 105, 464 },
+	{ 74, 308 },
+	{ 106, 309 },
+	{ 75, 310 },
+	{ 75, 488 },
+	{ 107, 311 },
+	{ 107, 489 },
+	{ 76, 313 },
+	{ 76, 315 },
+	{ 76, 317 },
+	{ 76, 319 },
+	{ 76, 321 },
+	{ 108, 314 },
+	{ 108, 316 },
+	{ 108, 318 },
+	{ 108, 320 },
+	{ 108, 322 },
+	{ 77, 209 },
+	{ 77, 323 },
+	{ 77, 325 },
+	{ 77, 327 },
+	{ 109, 241 },
+	{ 109, 324 },
+	{ 109, 326 },
+	{ 109, 328 },
+	{ 109, 329 },
+	{ 78, 210 },
+	{ 78, 212 },
+	{ 78, 213 },
+	{ 78, 332 },
+	{ 78, 334 },
+	{ 78, 336 },
+	{ 78, 465 },
+	{ 78, 490 },
+	{ 110, 242 },
+	{ 110, 245 },
+	{ 110, 333 },
+	{ 110, 335 },
+	{ 110, 337 },
+	{ 110, 466 },
+	{ 110, 491 },
+	{ 82, 340 },
+	{ 82, 342 },
+	{ 82, 344 },
+	{ 114, 341 },
+	{ 114, 343 },
+	{ 114, 345 },
+	{ 83, 346 },
+	{ 83, 348 },
+	{ 83, 350 },
+	{ 83, 352 },
+	{ 115, 347 },
+	{ 115, 349 },
+	{ 115, 351 },
+	{ 115, 353 },
+	{ 84, 354 },
+	{ 84, 356 },
+	{ 116, 355 },
+	{ 116, 357 },
+	{ 85, 217 },
+	{ 85, 219 },
+	{ 85, 360 },
+	{ 85, 362 },
+	{ 85, 364 },
+	{ 85, 366 },
+	{ 85, 368 },
+	{ 85, 370 },
+	{ 85, 467 },
+	{ 117, 249 },
+	{ 117, 361 },
+	{ 117, 363 },
+	{ 117, 365 },
+	{ 117, 367 },
+	{ 117, 369 },
+	{ 117, 371 },
+	{ 117, 468 },
+	{ 87, 372 },
+	{ 119, 373 },
+	{ 89, 374 },
+	{ 89, 376 },
+	{ 121, 255 },
+	{ 121, 375 },
+	{ 90, 377 },
+	{ 90, 379 },
+	{ 90, 381 },
+	{ 122, 378 },
+	{ 122, 380 },
+	{ 122, 382 },
 };
-charconvert cp1258[] = {
- /* 0 */ 0,/*<tdbgcolor="C0C0C0"><fontface="Arial"color="000000"><b>ISO/IEC10646-1:2000CharacterName</b></font>*/
- 1,
- 2,
- 3,
- 4,
- 5,
- 6,
- 7,
- 8,
- 9,
- 10,
- 11,
- 12,
- 13,
- 14,
- 15,
- 16,
- 17,
- 18,
- 19,
- 20,
- 21,
- 22,
- 23,
- 24,
- 25,
- 26,
- 27,
- 28,
- 29,
- 30,
- 31,
- /* 32 */ 32,/*SPACE*/
- /* 33 */ 33,/*EXCLAMATIONMARK*/
- /* 34 */ 34,/*QUOTATIONMARK*/
- /* 35 */ 35,/*NUMBERSIGN*/
- /* 36 */ 36,/*DOLLARSIGN*/
- /* 37 */ 37,/*PERCENTSIGN*/
- /* 38 */ 38,/*AMPERSAND*/
- /* 39 */ 39,/*APOSTROPHE*/
- /* 40 */ 40,/*LEFTPARENTHESIS*/
- /* 41 */ 41,/*RIGHTPARENTHESIS*/
- /* 42 */ 42,/*ASTERISK*/
- /* 43 */ 43,/*PLUSSIGN*/
- /* 44 */ 44,/*COMMA*/
- /* 45 */ 45,/*HYPHEN-MINUS*/
- /* 46 */ 46,/*FULLSTOP*/
- /* 47 */ 47,/*SOLIDUS*/
- /* 48 */ 48,/*DIGITZERO*/
- /* 49 */ 49,/*DIGITONE*/
- /* 50 */ 50,/*DIGITTWO*/
- /* 51 */ 51,/*DIGITTHREE*/
- /* 52 */ 52,/*DIGITFOUR*/
- /* 53 */ 53,/*DIGITFIVE*/
- /* 54 */ 54,/*DIGITSIX*/
- /* 55 */ 55,/*DIGITSEVEN*/
- /* 56 */ 56,/*DIGITEIGHT*/
- /* 57 */ 57,/*DIGITNINE*/
- /* 58 */ 58,/*COLON*/
- /* 59 */ 59,/*SEMICOLON*/
- /* 60 */ 60,/*LESS-THANSIGN*/
- /* 61 */ 61,/*EQUALSSIGN*/
- /* 62 */ 62,/*GREATER-THANSIGN*/
- /* 63 */ 63,/*QUESTIONMARK*/
- /* 64 */ 64,/*COMMERCIALAT*/
- /* 65 */ 65,/*LATINCAPITALLETTERA*/
- /* 66 */ 66,/*LATINCAPITALLETTERB*/
- /* 67 */ 67,/*LATINCAPITALLETTERC*/
- /* 68 */ 68,/*LATINCAPITALLETTERD*/
- /* 69 */ 69,/*LATINCAPITALLETTERE*/
- /* 70 */ 70,/*LATINCAPITALLETTERF*/
- /* 71 */ 71,/*LATINCAPITALLETTERG*/
- /* 72 */ 72,/*LATINCAPITALLETTERH*/
- /* 73 */ 73,/*LATINCAPITALLETTERI*/
- /* 74 */ 74,/*LATINCAPITALLETTERJ*/
- /* 75 */ 75,/*LATINCAPITALLETTERK*/
- /* 76 */ 76,/*LATINCAPITALLETTERL*/
- /* 77 */ 77,/*LATINCAPITALLETTERM*/
- /* 78 */ 78,/*LATINCAPITALLETTERN*/
- /* 79 */ 79,/*LATINCAPITALLETTERO*/
- /* 80 */ 80,/*LATINCAPITALLETTERP*/
- /* 81 */ 81,/*LATINCAPITALLETTERQ*/
- /* 82 */ 82,/*LATINCAPITALLETTERR*/
- /* 83 */ 83,/*LATINCAPITALLETTERS*/
- /* 84 */ 84,/*LATINCAPITALLETTERT*/
- /* 85 */ 85,/*LATINCAPITALLETTERU*/
- /* 86 */ 86,/*LATINCAPITALLETTERV*/
- /* 87 */ 87,/*LATINCAPITALLETTERW*/
- /* 88 */ 88,/*LATINCAPITALLETTERX*/
- /* 89 */ 89,/*LATINCAPITALLETTERY*/
- /* 90 */ 90,/*LATINCAPITALLETTERZ*/
- /* 91 */ 91,/*LEFTSQUAREBRACKET*/
- /* 92 */ 92,/*REVERSESOLIDUS*/
- /* 93 */ 93,/*RIGHTSQUAREBRACKET*/
- /* 94 */ 94,/*CIRCUMFLEXACCENT*/
- /* 95 */ 95,/*LOWLINE*/
- /* 96 */ 96,/*GRAVEACCENT*/
- /* 97 */ 97,/*LATINSMALLLETTERA*/
- /* 98 */ 98,/*LATINSMALLLETTERB*/
- /* 99 */ 99,/*LATINSMALLLETTERC*/
- /* 100 */ 100,/*LATINSMALLLETTERD*/
- /* 101 */ 101,/*LATINSMALLLETTERE*/
- /* 102 */ 102,/*LATINSMALLLETTERF*/
- /* 103 */ 103,/*LATINSMALLLETTERG*/
- /* 104 */ 104,/*LATINSMALLLETTERH*/
- /* 105 */ 105,/*LATINSMALLLETTERI*/
- /* 106 */ 106,/*LATINSMALLLETTERJ*/
- /* 107 */ 107,/*LATINSMALLLETTERK*/
- /* 108 */ 108,/*LATINSMALLLETTERL*/
- /* 109 */ 109,/*LATINSMALLLETTERM*/
- /* 110 */ 110,/*LATINSMALLLETTERN*/
- /* 111 */ 111,/*LATINSMALLLETTERO*/
- /* 112 */ 112,/*LATINSMALLLETTERP*/
- /* 113 */ 113,/*LATINSMALLLETTERQ*/
- /* 114 */ 114,/*LATINSMALLLETTERR*/
- /* 115 */ 115,/*LATINSMALLLETTERS*/
- /* 116 */ 116,/*LATINSMALLLETTERT*/
- /* 117 */ 117,/*LATINSMALLLETTERU*/
- /* 118 */ 118,/*LATINSMALLLETTERV*/
- /* 119 */ 119,/*LATINSMALLLETTERW*/
- /* 120 */ 120,/*LATINSMALLLETTERX*/
- /* 121 */ 121,/*LATINSMALLLETTERY*/
- /* 122 */ 122,/*LATINSMALLLETTERZ*/
- /* 123 */ 123,/*LEFTCURLYBRACKET*/
- /* 124 */ 124,/*VERTICALLINE*/
- /* 125 */ 125,/*RIGHTCURLYBRACKET*/
- /* 126 */ 126,/*TILDE*/
- 127,
- /* 128 */ 8364,/*EUROSIGN*/
- 129,
- /* 130 */ 8218,/*SINGLELOW-9QUOTATIONMARK*/
- /* 131 */ 402,/*LATINSMALLLETTERFWITHHOOK*/
- /* 132 */ 8222,/*DOUBLELOW-9QUOTATIONMARK*/
- /* 133 */ 8230,/*HORIZONTALELLIPSIS*/
- /* 134 */ 8224,/*DAGGER*/
- /* 135 */ 8225,/*DOUBLEDAGGER*/
- /* 136 */ 710,/*MODIFIERLETTERCIRCUMFLEXACCENT*/
- /* 137 */ 8240,/*PERMILLESIGN*/
- 138,
- /* 139 */ 8249,/*SINGLELEFT-POINTINGANGLEQUOTATIONMARK*/
- /* 140 */ 338,/*LATINCAPITALLIGATUREOE*/
- 141,
- 142,
- 143,
- 144,
- /* 145 */ 8216,/*LEFTSINGLEQUOTATIONMARK*/
- /* 146 */ 8217,/*RIGHTSINGLEQUOTATIONMARK*/
- /* 147 */ 8220,/*LEFTDOUBLEQUOTATIONMARK*/
- /* 148 */ 8221,/*RIGHTDOUBLEQUOTATIONMARK*/
- /* 149 */ 8226,/*BULLET*/
- /* 150 */ 8211,/*ENDASH*/
- /* 151 */ 8212,/*EMDASH*/
- /* 152 */ 732,/*SMALLTILDE*/
- /* 153 */ 8482,/*TRADEMARKSIGN*/
- 154,
- /* 155 */ 8250,/*SINGLERIGHT-POINTINGANGLEQUOTATIONMARK*/
- /* 156 */ 339,/*LATINSMALLLIGATUREOE*/
- 157,
- 158,
- /* 159 */ 376,/*LATINCAPITALLETTERYWITHDIAERESIS*/
- /* 160 */ 160,/*NO-BREAKSPACE*/
- /* 161 */ 161,/*INVERTEDEXCLAMATIONMARK*/
- /* 162 */ 162,/*CENTSIGN*/
- /* 163 */ 163,/*POUNDSIGN*/
- /* 164 */ 164,/*CURRENCYSIGN*/
- /* 165 */ 165,/*YENSIGN*/
- /* 166 */ 166,/*BROKENBAR*/
- /* 167 */ 167,/*SECTIONSIGN*/
- /* 168 */ 168,/*DIAERESIS*/
- /* 169 */ 169,/*COPYRIGHTSIGN*/
- /* 170 */ 170,/*FEMININEORDINALINDICATOR*/
- /* 171 */ 171,/*LEFT-POINTINGDOUBLEANGLEQUOTATIONMARK*/
- /* 172 */ 172,/*NOTSIGN*/
- /* 173 */ 173,/*SOFTHYPHEN*/
- /* 174 */ 174,/*REGISTEREDSIGN*/
- /* 175 */ 175,/*MACRON*/
- /* 176 */ 176,/*DEGREESIGN*/
- /* 177 */ 177,/*PLUS-MINUSSIGN*/
- /* 178 */ 178,/*SUPERSCRIPTTWO*/
- /* 179 */ 179,/*SUPERSCRIPTTHREE*/
- /* 180 */ 180,/*ACUTEACCENT*/
- /* 181 */ 181,/*MICROSIGN*/
- /* 182 */ 182,/*PILCROWSIGN*/
- /* 183 */ 183,/*MIDDLEDOT*/
- /* 184 */ 184,/*CEDILLA*/
- /* 185 */ 185,/*SUPERSCRIPTONE*/
- /* 186 */ 186,/*MASCULINEORDINALINDICATOR*/
- /* 187 */ 187,/*RIGHT-POINTINGDOUBLEANGLEQUOTATIONMARK*/
- /* 188 */ 188,/*VULGARFRACTIONONEQUARTER*/
- /* 189 */ 189,/*VULGARFRACTIONONEHALF*/
- /* 190 */ 190,/*VULGARFRACTIONTHREEQUARTERS*/
- /* 191 */ 191,/*INVERTEDQUESTIONMARK*/
- /* 192 */ 192,/*LATINCAPITALLETTERAWITHGRAVE*/
- /* 193 */ 193,/*LATINCAPITALLETTERAWITHACUTE*/
- /* 194 */ 194,/*LATINCAPITALLETTERAWITHCIRCUMFLEX*/
- /* 195 */ 258,/*LATINCAPITALLETTERAWITHBREVE*/
- /* 196 */ 196,/*LATINCAPITALLETTERAWITHDIAERESIS*/
- /* 197 */ 197,/*LATINCAPITALLETTERAWITHRINGABOVE*/
- /* 198 */ 198,/*LATINCAPITALLETTERAE*/
- /* 199 */ 199,/*LATINCAPITALLETTERCWITHCEDILLA*/
- /* 200 */ 200,/*LATINCAPITALLETTEREWITHGRAVE*/
- /* 201 */ 201,/*LATINCAPITALLETTEREWITHACUTE*/
- /* 202 */ 202,/*LATINCAPITALLETTEREWITHCIRCUMFLEX*/
- /* 203 */ 203,/*LATINCAPITALLETTEREWITHDIAERESIS*/
- /* 204 */ 832,/*COMBININGGRAVETONEMARK*/
- /* 205 */ 205,/*LATINCAPITALLETTERIWITHACUTE*/
- /* 206 */ 206,/*LATINCAPITALLETTERIWITHCIRCUMFLEX*/
- /* 207 */ 207,/*LATINCAPITALLETTERIWITHDIAERESIS*/
- /* 208 */ 272,/*LATINCAPITALLETTERDWITHSTROKE*/
- /* 209 */ 209,/*LATINCAPITALLETTERNWITHTILDE*/
- /* 210 */ 777,/*COMBININGHOOKABOVE*/
- /* 211 */ 211,/*LATINCAPITALLETTEROWITHACUTE*/
- /* 212 */ 212,/*LATINCAPITALLETTEROWITHCIRCUMFLEX*/
- /* 213 */ 416,/*LATINCAPITALLETTEROWITHHORN*/
- /* 214 */ 214,/*LATINCAPITALLETTEROWITHDIAERESIS*/
- /* 215 */ 215,/*MULTIPLICATIONSIGN*/
- /* 216 */ 216,/*LATINCAPITALLETTEROWITHSTROKE*/
- /* 217 */ 217,/*LATINCAPITALLETTERUWITHGRAVE*/
- /* 218 */ 218,/*LATINCAPITALLETTERUWITHACUTE*/
- /* 219 */ 219,/*LATINCAPITALLETTERUWITHCIRCUMFLEX*/
- /* 220 */ 220,/*LATINCAPITALLETTERUWITHDIAERESIS*/
- /* 221 */ 431,/*LATINCAPITALLETTERUWITHHORN*/
- /* 222 */ 771,/*COMBININGTILDE*/
- /* 223 */ 223,/*LATINSMALLLETTERSHARPS*/
- /* 224 */ 224,/*LATINSMALLLETTERAWITHGRAVE*/
- /* 225 */ 225,/*LATINSMALLLETTERAWITHACUTE*/
- /* 226 */ 226,/*LATINSMALLLETTERAWITHCIRCUMFLEX*/
- /* 227 */ 259,/*LATINSMALLLETTERAWITHBREVE*/
- /* 228 */ 228,/*LATINSMALLLETTERAWITHDIAERESIS*/
- /* 229 */ 229,/*LATINSMALLLETTERAWITHRINGABOVE*/
- /* 230 */ 230,/*LATINSMALLLETTERAE*/
- /* 231 */ 231,/*LATINSMALLLETTERCWITHCEDILLA*/
- /* 232 */ 232,/*LATINSMALLLETTEREWITHGRAVE*/
- /* 233 */ 233,/*LATINSMALLLETTEREWITHACUTE*/
- /* 234 */ 234,/*LATINSMALLLETTEREWITHCIRCUMFLEX*/
- /* 235 */ 235,/*LATINSMALLLETTEREWITHDIAERESIS*/
- /* 236 */ 833,/*COMBININGACUTETONEMARK*/
- /* 237 */ 237,/*LATINSMALLLETTERIWITHACUTE*/
- /* 238 */ 238,/*LATINSMALLLETTERIWITHCIRCUMFLEX*/
- /* 239 */ 239,/*LATINSMALLLETTERIWITHDIAERESIS*/
- /* 240 */ 273,/*LATINSMALLLETTERDWITHSTROKE*/
- /* 241 */ 241,/*LATINSMALLLETTERNWITHTILDE*/
- /* 242 */ 803,/*COMBININGDOTBELOW*/
- /* 243 */ 243,/*LATINSMALLLETTEROWITHACUTE*/
- /* 244 */ 244,/*LATINSMALLLETTEROWITHCIRCUMFLEX*/
- /* 245 */ 417,/*LATINSMALLLETTEROWITHHORN*/
- /* 246 */ 246,/*LATINSMALLLETTEROWITHDIAERESIS*/
- /* 247 */ 247,/*DIVISIONSIGN*/
- /* 248 */ 248,/*LATINSMALLLETTEROWITHSTROKE*/
- /* 249 */ 249,/*LATINSMALLLETTERUWITHGRAVE*/
- /* 250 */ 250,/*LATINSMALLLETTERUWITHACUTE*/
- /* 251 */ 251,/*LATINSMALLLETTERUWITHCIRCUMFLEX*/
- /* 252 */ 252,/*LATINSMALLLETTERUWITHDIAERESIS*/
- /* 253 */ 432,/*LATINSMALLLETTERUWITHHORN*/
- /* 254 */ 8363,/*DONGSIGN*/
- /* 255 */ 255/*LATINSMALLLETTERYWITHDIAERESIS*/
+static convert_t cp862[] = {
+	{ 0, 0 },
+	{ 1, 1 },
+	{ 2, 2 },
+	{ 3, 3 },
+	{ 4, 4 },
+	{ 5, 5 },
+	{ 6, 6 },
+	{ 7, 7 },
+	{ 8, 8 },
+	{ 9, 9 },
+	{ 10, 10 },
+	{ 11, 11 },
+	{ 12, 12 },
+	{ 13, 13 },
+	{ 14, 14 },
+	{ 15, 15 },
+	{ 16, 16 },
+	{ 17, 17 },
+	{ 18, 18 },
+	{ 19, 19 },
+	{ 20, 20 },
+	{ 21, 21 },
+	{ 22, 22 },
+	{ 23, 23 },
+	{ 24, 24 },
+	{ 25, 25 },
+	{ 26, 26 },
+	{ 27, 27 },
+	{ 28, 28 },
+	{ 29, 29 },
+	{ 30, 30 },
+	{ 31, 31 },
+	{ 32, 32 },
+	{ 33, 33 },
+	{ 34, 34 },
+	{ 35, 35 },
+	{ 36, 36 },
+	{ 37, 37 },
+	{ 38, 38 },
+	{ 39, 39 },
+	{ 40, 40 },
+	{ 41, 41 },
+	{ 42, 42 },
+	{ 43, 43 },
+	{ 44, 44 },
+	{ 45, 45 },
+	{ 46, 46 },
+	{ 47, 47 },
+	{ 48, 48 },
+	{ 49, 49 },
+	{ 50, 50 },
+	{ 51, 51 },
+	{ 52, 52 },
+	{ 53, 53 },
+	{ 54, 54 },
+	{ 55, 55 },
+	{ 56, 56 },
+	{ 57, 57 },
+	{ 58, 58 },
+	{ 59, 59 },
+	{ 60, 60 },
+	{ 61, 61 },
+	{ 62, 62 },
+	{ 63, 63 },
+	{ 64, 64 },
+	{ 65, 65 },
+	{ 66, 66 },
+	{ 67, 67 },
+	{ 68, 68 },
+	{ 69, 69 },
+	{ 70, 70 },
+	{ 71, 71 },
+	{ 72, 72 },
+	{ 73, 73 },
+	{ 74, 74 },
+	{ 75, 75 },
+	{ 76, 76 },
+	{ 77, 77 },
+	{ 78, 78 },
+	{ 79, 79 },
+	{ 80, 80 },
+	{ 81, 81 },
+	{ 82, 82 },
+	{ 83, 83 },
+	{ 84, 84 },
+	{ 85, 85 },
+	{ 86, 86 },
+	{ 87, 87 },
+	{ 88, 88 },
+	{ 89, 89 },
+	{ 90, 90 },
+	{ 91, 91 },
+	{ 92, 92 },
+	{ 93, 93 },
+	{ 94, 94 },
+	{ 95, 95 },
+	{ 96, 96 },
+	{ 97, 97 },
+	{ 98, 98 },
+	{ 99, 99 },
+	{ 100, 100 },
+	{ 101, 101 },
+	{ 102, 102 },
+	{ 103, 103 },
+	{ 104, 104 },
+	{ 105, 105 },
+	{ 106, 106 },
+	{ 107, 107 },
+	{ 108, 108 },
+	{ 109, 109 },
+	{ 110, 110 },
+	{ 111, 111 },
+	{ 112, 112 },
+	{ 113, 113 },
+	{ 114, 114 },
+	{ 115, 115 },
+	{ 116, 116 },
+	{ 117, 117 },
+	{ 118, 118 },
+	{ 119, 119 },
+	{ 120, 120 },
+	{ 121, 121 },
+	{ 122, 122 },
+	{ 123, 123 },
+	{ 124, 124 },
+	{ 125, 125 },
+	{ 126, 126 },
+	{ 127, 127 },
+	{ 128, 1488 },
+	{ 129, 1489 },
+	{ 130, 1490 },
+	{ 131, 1491 },
+	{ 132, 1492 },
+	{ 133, 1493 },
+	{ 134, 1494 },
+	{ 135, 1495 },
+	{ 136, 1496 },
+	{ 137, 1497 },
+	{ 138, 1498 },
+	{ 139, 1499 },
+	{ 140, 1500 },
+	{ 141, 1501 },
+	{ 142, 1502 },
+	{ 143, 1503 },
+	{ 144, 1504 },
+	{ 145, 1505 },
+	{ 146, 1506 },
+	{ 147, 1507 },
+	{ 148, 1508 },
+	{ 149, 1509 },
+	{ 150, 1510 },
+	{ 151, 1511 },
+	{ 152, 1512 },
+	{ 153, 1513 },
+	{ 154, 1514 },
+	{ 155, 162 },
+	{ 156, 163 },
+	{ 157, 165 },
+	{ 158, 8359 },
+	{ 159, 402 },
+	{ 160, 225 },
+	{ 161, 237 },
+	{ 162, 243 },
+	{ 163, 250 },
+	{ 164, 241 },
+	{ 165, 209 },
+	{ 166, 170 },
+	{ 167, 186 },
+	{ 168, 191 },
+	{ 169, 8976 },
+	{ 170, 172 },
+	{ 171, 189 },
+	{ 172, 188 },
+	{ 173, 161 },
+	{ 174, 171 },
+	{ 175, 187 },
+	{ 176, 9617 },
+	{ 177, 9618 },
+	{ 178, 9619 },
+	{ 179, 9474 },
+	{ 180, 9508 },
+	{ 181, 9569 },
+	{ 182, 9570 },
+	{ 183, 9558 },
+	{ 184, 9557 },
+	{ 185, 9571 },
+	{ 186, 9553 },
+	{ 187, 9559 },
+	{ 188, 9565 },
+	{ 189, 9564 },
+	{ 190, 9563 },
+	{ 191, 9488 },
+	{ 192, 9492 },
+	{ 193, 9524 },
+	{ 194, 9516 },
+	{ 195, 9500 },
+	{ 196, 9472 },
+	{ 197, 9532 },
+	{ 198, 9566 },
+	{ 199, 9567 },
+	{ 200, 9562 },
+	{ 201, 9556 },
+	{ 202, 9577 },
+	{ 203, 9574 },
+	{ 204, 9568 },
+	{ 205, 9552 },
+	{ 206, 9580 },
+	{ 207, 9575 },
+	{ 208, 9576 },
+	{ 209, 9572 },
+	{ 210, 9573 },
+	{ 211, 9561 },
+	{ 212, 9560 },
+	{ 213, 9554 },
+	{ 214, 9555 },
+	{ 215, 9579 },
+	{ 216, 9578 },
+	{ 217, 9496 },
+	{ 218, 9484 },
+	{ 219, 9608 },
+	{ 220, 9604 },
+	{ 221, 9612 },
+	{ 222, 9616 },
+	{ 223, 9600 },
+	{ 224, 945 },
+	{ 225, 223 },
+	{ 226, 915 },
+	{ 227, 960 },
+	{ 228, 931 },
+	{ 229, 963 },
+	{ 230, 181 },
+	{ 231, 964 },
+	{ 232, 934 },
+	{ 233, 920 },
+	{ 234, 937 },
+	{ 235, 948 },
+	{ 236, 8734 },
+	{ 237, 966 },
+	{ 238, 949 },
+	{ 239, 8745 },
+	{ 240, 8801 },
+	{ 241, 177 },
+	{ 242, 8805 },
+	{ 243, 8804 },
+	{ 244, 8992 },
+	{ 245, 8993 },
+	{ 246, 247 },
+	{ 247, 8776 },
+	{ 248, 176 },
+	{ 249, 8729 },
+	{ 250, 183 },
+	{ 251, 8730 },
+	{ 252, 8319 },
+	{ 253, 178 },
+	{ 254, 9632 },
+	{ 255, 160 },
+	{ 34, 8220 },
+	{ 34, 8221 },
+	{ 39, 8216 },
+	{ 39, 8217 },
+	{ 45, 8211 },
+	{ 45, 8212 },
+	{ 32, 8194 },
+	{ 32, 8195 },
+	{ 32, 8201 },
+	{ 65, 192 },
+	{ 65, 193 },
+	{ 65, 194 },
+	{ 65, 195 },
+	{ 65, 196 },
+	{ 65, 197 },
+	{ 65, 256 },
+	{ 65, 258 },
+	{ 65, 260 },
+	{ 65, 461 },
+	{ 97, 224 },
+	{ 97, 226 },
+	{ 97, 227 },
+	{ 97, 228 },
+	{ 97, 229 },
+	{ 97, 257 },
+	{ 97, 259 },
+	{ 97, 261 },
+	{ 97, 462 },
+	{ 67, 199 },
+	{ 67, 262 },
+	{ 67, 264 },
+	{ 67, 266 },
+	{ 67, 268 },
+	{ 99, 231 },
+	{ 99, 263 },
+	{ 99, 265 },
+	{ 99, 267 },
+	{ 99, 269 },
+	{ 68, 270 },
+	{ 100, 271 },
+	{ 69, 200 },
+	{ 69, 201 },
+	{ 69, 202 },
+	{ 69, 203 },
+	{ 69, 274 },
+	{ 69, 276 },
+	{ 69, 278 },
+	{ 69, 280 },
+	{ 69, 282 },
+	{ 101, 232 },
+	{ 101, 233 },
+	{ 101, 234 },
+	{ 101, 235 },
+	{ 101, 275 },
+	{ 101, 277 },
+	{ 101, 279 },
+	{ 101, 281 },
+	{ 101, 283 },
+	{ 71, 284 },
+	{ 71, 286 },
+	{ 71, 288 },
+	{ 71, 290 },
+	{ 71, 486 },
+	{ 71, 500 },
+	{ 103, 285 },
+	{ 103, 287 },
+	{ 103, 289 },
+	{ 103, 291 },
+	{ 103, 487 },
+	{ 103, 501 },
+	{ 72, 292 },
+	{ 104, 293 },
+	{ 73, 204 },
+	{ 73, 205 },
+	{ 73, 206 },
+	{ 73, 207 },
+	{ 73, 296 },
+	{ 73, 298 },
+	{ 73, 300 },
+	{ 73, 302 },
+	{ 73, 304 },
+	{ 73, 463 },
+	{ 105, 236 },
+	{ 105, 238 },
+	{ 105, 239 },
+	{ 105, 297 },
+	{ 105, 299 },
+	{ 105, 301 },
+	{ 105, 303 },
+	{ 105, 305 },
+	{ 105, 464 },
+	{ 74, 308 },
+	{ 106, 309 },
+	{ 75, 310 },
+	{ 75, 488 },
+	{ 107, 311 },
+	{ 107, 489 },
+	{ 76, 313 },
+	{ 76, 315 },
+	{ 76, 317 },
+	{ 76, 319 },
+	{ 76, 321 },
+	{ 108, 314 },
+	{ 108, 316 },
+	{ 108, 318 },
+	{ 108, 320 },
+	{ 108, 322 },
+	{ 77, 323 },
+	{ 77, 325 },
+	{ 77, 327 },
+	{ 109, 324 },
+	{ 109, 326 },
+	{ 109, 328 },
+	{ 109, 329 },
+	{ 78, 210 },
+	{ 78, 211 },
+	{ 78, 212 },
+	{ 78, 213 },
+	{ 78, 214 },
+	{ 78, 216 },
+	{ 78, 332 },
+	{ 78, 334 },
+	{ 78, 336 },
+	{ 78, 465 },
+	{ 78, 490 },
+	{ 110, 242 },
+	{ 110, 244 },
+	{ 110, 245 },
+	{ 110, 246 },
+	{ 110, 248 },
+	{ 110, 333 },
+	{ 110, 335 },
+	{ 110, 337 },
+	{ 110, 466 },
+	{ 110, 491 },
+	{ 82, 340 },
+	{ 82, 342 },
+	{ 82, 344 },
+	{ 114, 341 },
+	{ 114, 343 },
+	{ 114, 345 },
+	{ 83, 346 },
+	{ 83, 348 },
+	{ 83, 350 },
+	{ 83, 352 },
+	{ 115, 347 },
+	{ 115, 349 },
+	{ 115, 351 },
+	{ 115, 353 },
+	{ 84, 354 },
+	{ 84, 356 },
+	{ 116, 355 },
+	{ 116, 357 },
+	{ 85, 217 },
+	{ 85, 218 },
+	{ 85, 219 },
+	{ 85, 220 },
+	{ 85, 360 },
+	{ 85, 362 },
+	{ 85, 364 },
+	{ 85, 366 },
+	{ 85, 368 },
+	{ 85, 370 },
+	{ 85, 467 },
+	{ 117, 249 },
+	{ 117, 251 },
+	{ 117, 252 },
+	{ 117, 361 },
+	{ 117, 363 },
+	{ 117, 365 },
+	{ 117, 367 },
+	{ 117, 369 },
+	{ 117, 371 },
+	{ 117, 468 },
+	{ 87, 372 },
+	{ 119, 373 },
+	{ 89, 221 },
+	{ 89, 374 },
+	{ 89, 376 },
+	{ 121, 253 },
+	{ 121, 255 },
+	{ 121, 375 },
+	{ 90, 377 },
+	{ 90, 379 },
+	{ 90, 381 },
+	{ 122, 378 },
+	{ 122, 380 },
+	{ 122, 382 },
 };
-charconvert cp437[] = {
- /* 0 */ 0,/*<tdbgcolor="C0C0C0"><fontface="Arial"color="000000"><b>ISO/IEC10646-1:2000CharacterName</b></font>*/
- 1,
- 2,
- 3,
- 4,
- 5,
- 6,
- 7,
- 8,
- 9,
- 10,
- 11,
- 12,
- 13,
- 14,
- 15,
- 16,
- 17,
- 18,
- 19,
- 20,
- 21,
- 22,
- 23,
- 24,
- 25,
- 26,
- 27,
- 28,
- 29,
- 30,
- 31,
- /* 32 */ 32,/*SPACE*/
- /* 33 */ 33,/*EXCLAMATIONMARK*/
- /* 34 */ 34,/*QUOTATIONMARK*/
- /* 35 */ 35,/*NUMBERSIGN*/
- /* 36 */ 36,/*DOLLARSIGN*/
- /* 37 */ 37,/*PERCENTSIGN*/
- /* 38 */ 38,/*AMPERSAND*/
- /* 39 */ 39,/*APOSTROPHE*/
- /* 40 */ 40,/*LEFTPARENTHESIS*/
- /* 41 */ 41,/*RIGHTPARENTHESIS*/
- /* 42 */ 42,/*ASTERISK*/
- /* 43 */ 43,/*PLUSSIGN*/
- /* 44 */ 44,/*COMMA*/
- /* 45 */ 45,/*HYPHEN-MINUS*/
- /* 46 */ 46,/*FULLSTOP*/
- /* 47 */ 47,/*SOLIDUS*/
- /* 48 */ 48,/*DIGITZERO*/
- /* 49 */ 49,/*DIGITONE*/
- /* 50 */ 50,/*DIGITTWO*/
- /* 51 */ 51,/*DIGITTHREE*/
- /* 52 */ 52,/*DIGITFOUR*/
- /* 53 */ 53,/*DIGITFIVE*/
- /* 54 */ 54,/*DIGITSIX*/
- /* 55 */ 55,/*DIGITSEVEN*/
- /* 56 */ 56,/*DIGITEIGHT*/
- /* 57 */ 57,/*DIGITNINE*/
- /* 58 */ 58,/*COLON*/
- /* 59 */ 59,/*SEMICOLON*/
- /* 60 */ 60,/*LESS-THANSIGN*/
- /* 61 */ 61,/*EQUALSSIGN*/
- /* 62 */ 62,/*GREATER-THANSIGN*/
- /* 63 */ 63,/*QUESTIONMARK*/
- /* 64 */ 64,/*COMMERCIALAT*/
- /* 65 */ 65,/*LATINCAPITALLETTERA*/
- /* 66 */ 66,/*LATINCAPITALLETTERB*/
- /* 67 */ 67,/*LATINCAPITALLETTERC*/
- /* 68 */ 68,/*LATINCAPITALLETTERD*/
- /* 69 */ 69,/*LATINCAPITALLETTERE*/
- /* 70 */ 70,/*LATINCAPITALLETTERF*/
- /* 71 */ 71,/*LATINCAPITALLETTERG*/
- /* 72 */ 72,/*LATINCAPITALLETTERH*/
- /* 73 */ 73,/*LATINCAPITALLETTERI*/
- /* 74 */ 74,/*LATINCAPITALLETTERJ*/
- /* 75 */ 75,/*LATINCAPITALLETTERK*/
- /* 76 */ 76,/*LATINCAPITALLETTERL*/
- /* 77 */ 77,/*LATINCAPITALLETTERM*/
- /* 78 */ 78,/*LATINCAPITALLETTERN*/
- /* 79 */ 79,/*LATINCAPITALLETTERO*/
- /* 80 */ 80,/*LATINCAPITALLETTERP*/
- /* 81 */ 81,/*LATINCAPITALLETTERQ*/
- /* 82 */ 82,/*LATINCAPITALLETTERR*/
- /* 83 */ 83,/*LATINCAPITALLETTERS*/
- /* 84 */ 84,/*LATINCAPITALLETTERT*/
- /* 85 */ 85,/*LATINCAPITALLETTERU*/
- /* 86 */ 86,/*LATINCAPITALLETTERV*/
- /* 87 */ 87,/*LATINCAPITALLETTERW*/
- /* 88 */ 88,/*LATINCAPITALLETTERX*/
- /* 89 */ 89,/*LATINCAPITALLETTERY*/
- /* 90 */ 90,/*LATINCAPITALLETTERZ*/
- /* 91 */ 91,/*LEFTSQUAREBRACKET*/
- /* 92 */ 92,/*REVERSESOLIDUS*/
- /* 93 */ 93,/*RIGHTSQUAREBRACKET*/
- /* 94 */ 94,/*CIRCUMFLEXACCENT*/
- /* 95 */ 95,/*LOWLINE*/
- /* 96 */ 96,/*GRAVEACCENT*/
- /* 97 */ 97,/*LATINSMALLLETTERA*/
- /* 98 */ 98,/*LATINSMALLLETTERB*/
- /* 99 */ 99,/*LATINSMALLLETTERC*/
- /* 100 */ 100,/*LATINSMALLLETTERD*/
- /* 101 */ 101,/*LATINSMALLLETTERE*/
- /* 102 */ 102,/*LATINSMALLLETTERF*/
- /* 103 */ 103,/*LATINSMALLLETTERG*/
- /* 104 */ 104,/*LATINSMALLLETTERH*/
- /* 105 */ 105,/*LATINSMALLLETTERI*/
- /* 106 */ 106,/*LATINSMALLLETTERJ*/
- /* 107 */ 107,/*LATINSMALLLETTERK*/
- /* 108 */ 108,/*LATINSMALLLETTERL*/
- /* 109 */ 109,/*LATINSMALLLETTERM*/
- /* 110 */ 110,/*LATINSMALLLETTERN*/
- /* 111 */ 111,/*LATINSMALLLETTERO*/
- /* 112 */ 112,/*LATINSMALLLETTERP*/
- /* 113 */ 113,/*LATINSMALLLETTERQ*/
- /* 114 */ 114,/*LATINSMALLLETTERR*/
- /* 115 */ 115,/*LATINSMALLLETTERS*/
- /* 116 */ 116,/*LATINSMALLLETTERT*/
- /* 117 */ 117,/*LATINSMALLLETTERU*/
- /* 118 */ 118,/*LATINSMALLLETTERV*/
- /* 119 */ 119,/*LATINSMALLLETTERW*/
- /* 120 */ 120,/*LATINSMALLLETTERX*/
- /* 121 */ 121,/*LATINSMALLLETTERY*/
- /* 122 */ 122,/*LATINSMALLLETTERZ*/
- /* 123 */ 123,/*LEFTCURLYBRACKET*/
- /* 124 */ 124,/*VERTICALLINE*/
- /* 125 */ 125,/*RIGHTCURLYBRACKET*/
- /* 126 */ 126,/*TILDE*/
- 127,
- /* 128 */ 199,/*LATINCAPITALLETTERCWITHCEDILLA*/
- /* 129 */ 252,/*LATINSMALLLETTERUWITHDIAERESIS*/
- /* 130 */ 233,/*LATINSMALLLETTEREWITHACUTE*/
- /* 131 */ 226,/*LATINSMALLLETTERAWITHCIRCUMFLEX*/
- /* 132 */ 228,/*LATINSMALLLETTERAWITHDIAERESIS*/
- /* 133 */ 224,/*LATINSMALLLETTERAWITHGRAVE*/
- /* 134 */ 229,/*LATINSMALLLETTERAWITHRINGABOVE*/
- /* 135 */ 231,/*LATINSMALLLETTERCWITHCEDILLA*/
- /* 136 */ 234,/*LATINSMALLLETTEREWITHCIRCUMFLEX*/
- /* 137 */ 235,/*LATINSMALLLETTEREWITHDIAERESIS*/
- /* 138 */ 232,/*LATINSMALLLETTEREWITHGRAVE*/
- /* 139 */ 239,/*LATINSMALLLETTERIWITHDIAERESIS*/
- /* 140 */ 238,/*LATINSMALLLETTERIWITHCIRCUMFLEX*/
- /* 141 */ 236,/*LATINSMALLLETTERIWITHGRAVE*/
- /* 142 */ 196,/*LATINCAPITALLETTERAWITHDIAERESIS*/
- /* 143 */ 197,/*LATINCAPITALLETTERAWITHRINGABOVE*/
- /* 144 */ 201,/*LATINCAPITALLETTEREWITHACUTE*/
- /* 145 */ 230,/*LATINSMALLLETTERAE*/
- /* 146 */ 198,/*LATINCAPITALLETTERAE*/
- /* 147 */ 244,/*LATINSMALLLETTEROWITHCIRCUMFLEX*/
- /* 148 */ 246,/*LATINSMALLLETTEROWITHDIAERESIS*/
- /* 149 */ 242,/*LATINSMALLLETTEROWITHGRAVE*/
- /* 150 */ 251,/*LATINSMALLLETTERUWITHCIRCUMFLEX*/
- /* 151 */ 249,/*LATINSMALLLETTERUWITHGRAVE*/
- /* 152 */ 255,/*LATINSMALLLETTERYWITHDIAERESIS*/
- /* 153 */ 214,/*LATINCAPITALLETTEROWITHDIAERESIS*/
- /* 154 */ 220,/*LATINCAPITALLETTERUWITHDIAERESIS*/
- /* 155 */ 162,/*CENTSIGN*/
- /* 156 */ 163,/*POUNDSIGN*/
- /* 157 */ 165,/*YENSIGN*/
- /* 158 */ 8359,/*PESETASIGN*/
- /* 159 */ 402,/*LATINSMALLLETTERFWITHHOOK*/
- /* 160 */ 225,/*LATINSMALLLETTERAWITHACUTE*/
- /* 161 */ 237,/*LATINSMALLLETTERIWITHACUTE*/
- /* 162 */ 243,/*LATINSMALLLETTEROWITHACUTE*/
- /* 163 */ 250,/*LATINSMALLLETTERUWITHACUTE*/
- /* 164 */ 241,/*LATINSMALLLETTERNWITHTILDE*/
- /* 165 */ 209,/*LATINCAPITALLETTERNWITHTILDE*/
- /* 166 */ 170,/*FEMININEORDINALINDICATOR*/
- /* 167 */ 186,/*MASCULINEORDINALINDICATOR*/
- /* 168 */ 191,/*INVERTEDQUESTIONMARK*/
- /* 169 */ 8976,/*REVERSEDNOTSIGN*/
- /* 170 */ 172,/*NOTSIGN*/
- /* 171 */ 189,/*VULGARFRACTIONONEHALF*/
- /* 172 */ 188,/*VULGARFRACTIONONEQUARTER*/
- /* 173 */ 161,/*INVERTEDEXCLAMATIONMARK*/
- /* 174 */ 171,/*LEFT-POINTINGDOUBLEANGLEQUOTATIONMARK*/
- /* 175 */ 187,/*RIGHT-POINTINGDOUBLEANGLEQUOTATIONMARK*/
- /* 176 */ 9617,/*LIGHTSHADE*/
- /* 177 */ 9618,/*MEDIUMSHADE*/
- /* 178 */ 9619,/*DARKSHADE*/
- /* 179 */ 9474,/*BOXDRAWINGSLIGHTVERTICAL*/
- /* 180 */ 9508,/*BOXDRAWINGSLIGHTVERTICALANDLEFT*/
- /* 181 */ 9569,/*BOXDRAWINGSVERTICALSINGLEANDLEFTDOUBLE*/
- /* 182 */ 9570,/*BOXDRAWINGSVERTICALDOUBLEANDLEFTSINGLE*/
- /* 183 */ 9558,/*BOXDRAWINGSDOWNDOUBLEANDLEFTSINGLE*/
- /* 184 */ 9557,/*BOXDRAWINGSDOWNSINGLEANDLEFTDOUBLE*/
- /* 185 */ 9571,/*BOXDRAWINGSDOUBLEVERTICALANDLEFT*/
- /* 186 */ 9553,/*BOXDRAWINGSDOUBLEVERTICAL*/
- /* 187 */ 9559,/*BOXDRAWINGSDOUBLEDOWNANDLEFT*/
- /* 188 */ 9565,/*BOXDRAWINGSDOUBLEUPANDLEFT*/
- /* 189 */ 9564,/*BOXDRAWINGSUPDOUBLEANDLEFTSINGLE*/
- /* 190 */ 9563,/*BOXDRAWINGSUPSINGLEANDLEFTDOUBLE*/
- /* 191 */ 9488,/*BOXDRAWINGSLIGHTDOWNANDLEFT*/
- /* 192 */ 9492,/*BOXDRAWINGSLIGHTUPANDRIGHT*/
- /* 193 */ 9524,/*BOXDRAWINGSLIGHTUPANDHORIZONTAL*/
- /* 194 */ 9516,/*BOXDRAWINGSLIGHTDOWNANDHORIZONTAL*/
- /* 195 */ 9500,/*BOXDRAWINGSLIGHTVERTICALANDRIGHT*/
- /* 196 */ 9472,/*BOXDRAWINGSLIGHTHORIZONTAL*/
- /* 197 */ 9532,/*BOXDRAWINGSLIGHTVERTICALANDHORIZONTAL*/
- /* 198 */ 9566,/*BOXDRAWINGSVERTICALSINGLEANDRIGHTDOUBLE*/
- /* 199 */ 9567,/*BOXDRAWINGSVERTICALDOUBLEANDRIGHTSINGLE*/
- /* 200 */ 9562,/*BOXDRAWINGSDOUBLEUPANDRIGHT*/
- /* 201 */ 9556,/*BOXDRAWINGSDOUBLEDOWNANDRIGHT*/
- /* 202 */ 9577,/*BOXDRAWINGSDOUBLEUPANDHORIZONTAL*/
- /* 203 */ 9574,/*BOXDRAWINGSDOUBLEDOWNANDHORIZONTAL*/
- /* 204 */ 9568,/*BOXDRAWINGSDOUBLEVERTICALANDRIGHT*/
- /* 205 */ 9552,/*BOXDRAWINGSDOUBLEHORIZONTAL*/
- /* 206 */ 9580,/*BOXDRAWINGSDOUBLEVERTICALANDHORIZONTAL*/
- /* 207 */ 9575,/*BOXDRAWINGSUPSINGLEANDHORIZONTALDOUBLE*/
- /* 208 */ 9576,/*BOXDRAWINGSUPDOUBLEANDHORIZONTALSINGLE*/
- /* 209 */ 9572,/*BOXDRAWINGSDOWNSINGLEANDHORIZONTALDOUBLE*/
- /* 210 */ 9573,/*BOXDRAWINGSDOWNDOUBLEANDHORIZONTALSINGLE*/
- /* 211 */ 9561,/*BOXDRAWINGSUPDOUBLEANDRIGHTSINGLE*/
- /* 212 */ 9560,/*BOXDRAWINGSUPSINGLEANDRIGHTDOUBLE*/
- /* 213 */ 9554,/*BOXDRAWINGSDOWNSINGLEANDRIGHTDOUBLE*/
- /* 214 */ 9555,/*BOXDRAWINGSDOWNDOUBLEANDRIGHTSINGLE*/
- /* 215 */ 9579,/*BOXDRAWINGSVERTICALDOUBLEANDHORIZONTALSINGLE*/
- /* 216 */ 9578,/*BOXDRAWINGSVERTICALSINGLEANDHORIZONTALDOUBLE*/
- /* 217 */ 9496,/*BOXDRAWINGSLIGHTUPANDLEFT*/
- /* 218 */ 9484,/*BOXDRAWINGSLIGHTDOWNANDRIGHT*/
- /* 219 */ 9608,/*FULLBLOCK*/
- /* 220 */ 9604,/*LOWERHALFBLOCK*/
- /* 221 */ 9612,/*LEFTHALFBLOCK*/
- /* 222 */ 9616,/*RIGHTHALFBLOCK*/
- /* 223 */ 9600,/*UPPERHALFBLOCK*/
- /* 224 */ 945,/*GREEKSMALLLETTERALPHA*/
- /* 225 */ 223,/*LATINSMALLLETTERSHARPS*/
- /* 226 */ 915,/*GREEKCAPITALLETTERGAMMA*/
- /* 227 */ 960,/*GREEKSMALLLETTERPI*/
- /* 228 */ 931,/*GREEKCAPITALLETTERSIGMA*/
- /* 229 */ 963,/*GREEKSMALLLETTERSIGMA*/
- /* 230 */ 181,/*MICROSIGN*/
- /* 231 */ 964,/*GREEKSMALLLETTERTAU*/
- /* 232 */ 934,/*GREEKCAPITALLETTERPHI*/
- /* 233 */ 920,/*GREEKCAPITALLETTERTHETA*/
- /* 234 */ 937,/*GREEKCAPITALLETTEROMEGA*/
- /* 235 */ 948,/*GREEKSMALLLETTERDELTA*/
- /* 236 */ 8734,/*INFINITY*/
- /* 237 */ 966,/*GREEKSMALLLETTERPHI*/
- /* 238 */ 949,/*GREEKSMALLLETTEREPSILON*/
- /* 239 */ 8745,/*INTERSECTION*/
- /* 240 */ 8801,/*IDENTICALTO*/
- /* 241 */ 177,/*PLUS-MINUSSIGN*/
- /* 242 */ 8805,/*GREATER-THANOREQUALTO*/
- /* 243 */ 8804,/*LESS-THANOREQUALTO*/
- /* 244 */ 8992,/*TOPHALFINTEGRAL*/
- /* 245 */ 8993,/*BOTTOMHALFINTEGRAL*/
- /* 246 */ 247,/*DIVISIONSIGN*/
- /* 247 */ 8776,/*ALMOSTEQUALTO*/
- /* 248 */ 176,/*DEGREESIGN*/
- /* 249 */ 8729,/*BULLETOPERATOR*/
- /* 250 */ 183,/*MIDDLEDOT*/
- /* 251 */ 8730,/*SQUAREROOT*/
- /* 252 */ 8319,/*SUPERSCRIPTLATINSMALLLETTERN*/
- /* 253 */ 178,/*SUPERSCRIPTTWO*/
- /* 254 */ 9632,/*BLACKSQUARE*/
- /* 255 */ 160/*NO-BREAKSPACE*/
+static convert_t cp863[] = {
+	{ 0, 0 },
+	{ 1, 1 },
+	{ 2, 2 },
+	{ 3, 3 },
+	{ 4, 4 },
+	{ 5, 5 },
+	{ 6, 6 },
+	{ 7, 7 },
+	{ 8, 8 },
+	{ 9, 9 },
+	{ 10, 10 },
+	{ 11, 11 },
+	{ 12, 12 },
+	{ 13, 13 },
+	{ 14, 14 },
+	{ 15, 15 },
+	{ 16, 16 },
+	{ 17, 17 },
+	{ 18, 18 },
+	{ 19, 19 },
+	{ 20, 20 },
+	{ 21, 21 },
+	{ 22, 22 },
+	{ 23, 23 },
+	{ 24, 24 },
+	{ 25, 25 },
+	{ 26, 26 },
+	{ 27, 27 },
+	{ 28, 28 },
+	{ 29, 29 },
+	{ 30, 30 },
+	{ 31, 31 },
+	{ 32, 32 },
+	{ 33, 33 },
+	{ 34, 34 },
+	{ 35, 35 },
+	{ 36, 36 },
+	{ 37, 37 },
+	{ 38, 38 },
+	{ 39, 39 },
+	{ 40, 40 },
+	{ 41, 41 },
+	{ 42, 42 },
+	{ 43, 43 },
+	{ 44, 44 },
+	{ 45, 45 },
+	{ 46, 46 },
+	{ 47, 47 },
+	{ 48, 48 },
+	{ 49, 49 },
+	{ 50, 50 },
+	{ 51, 51 },
+	{ 52, 52 },
+	{ 53, 53 },
+	{ 54, 54 },
+	{ 55, 55 },
+	{ 56, 56 },
+	{ 57, 57 },
+	{ 58, 58 },
+	{ 59, 59 },
+	{ 60, 60 },
+	{ 61, 61 },
+	{ 62, 62 },
+	{ 63, 63 },
+	{ 64, 64 },
+	{ 65, 65 },
+	{ 66, 66 },
+	{ 67, 67 },
+	{ 68, 68 },
+	{ 69, 69 },
+	{ 70, 70 },
+	{ 71, 71 },
+	{ 72, 72 },
+	{ 73, 73 },
+	{ 74, 74 },
+	{ 75, 75 },
+	{ 76, 76 },
+	{ 77, 77 },
+	{ 78, 78 },
+	{ 79, 79 },
+	{ 80, 80 },
+	{ 81, 81 },
+	{ 82, 82 },
+	{ 83, 83 },
+	{ 84, 84 },
+	{ 85, 85 },
+	{ 86, 86 },
+	{ 87, 87 },
+	{ 88, 88 },
+	{ 89, 89 },
+	{ 90, 90 },
+	{ 91, 91 },
+	{ 92, 92 },
+	{ 93, 93 },
+	{ 94, 94 },
+	{ 95, 95 },
+	{ 96, 96 },
+	{ 97, 97 },
+	{ 98, 98 },
+	{ 99, 99 },
+	{ 100, 100 },
+	{ 101, 101 },
+	{ 102, 102 },
+	{ 103, 103 },
+	{ 104, 104 },
+	{ 105, 105 },
+	{ 106, 106 },
+	{ 107, 107 },
+	{ 108, 108 },
+	{ 109, 109 },
+	{ 110, 110 },
+	{ 111, 111 },
+	{ 112, 112 },
+	{ 113, 113 },
+	{ 114, 114 },
+	{ 115, 115 },
+	{ 116, 116 },
+	{ 117, 117 },
+	{ 118, 118 },
+	{ 119, 119 },
+	{ 120, 120 },
+	{ 121, 121 },
+	{ 122, 122 },
+	{ 123, 123 },
+	{ 124, 124 },
+	{ 125, 125 },
+	{ 126, 126 },
+	{ 127, 127 },
+	{ 128, 199 },
+	{ 129, 252 },
+	{ 130, 233 },
+	{ 131, 226 },
+	{ 132, 194 },
+	{ 133, 224 },
+	{ 134, 182 },
+	{ 135, 231 },
+	{ 136, 234 },
+	{ 137, 235 },
+	{ 138, 232 },
+	{ 139, 239 },
+	{ 140, 238 },
+	{ 141, 8215 },
+	{ 142, 192 },
+	{ 143, 167 },
+	{ 144, 201 },
+	{ 145, 200 },
+	{ 146, 202 },
+	{ 147, 244 },
+	{ 148, 203 },
+	{ 149, 207 },
+	{ 150, 251 },
+	{ 151, 249 },
+	{ 152, 164 },
+	{ 153, 212 },
+	{ 154, 220 },
+	{ 155, 162 },
+	{ 156, 163 },
+	{ 157, 217 },
+	{ 158, 219 },
+	{ 159, 402 },
+	{ 160, 166 },
+	{ 161, 180 },
+	{ 162, 243 },
+	{ 163, 250 },
+	{ 164, 168 },
+	{ 165, 184 },
+	{ 166, 179 },
+	{ 167, 175 },
+	{ 168, 206 },
+	{ 169, 8976 },
+	{ 170, 172 },
+	{ 171, 189 },
+	{ 172, 188 },
+	{ 173, 190 },
+	{ 174, 171 },
+	{ 175, 187 },
+	{ 176, 9617 },
+	{ 177, 9618 },
+	{ 178, 9619 },
+	{ 179, 9474 },
+	{ 180, 9508 },
+	{ 181, 9569 },
+	{ 182, 9570 },
+	{ 183, 9558 },
+	{ 184, 9557 },
+	{ 185, 9571 },
+	{ 186, 9553 },
+	{ 187, 9559 },
+	{ 188, 9565 },
+	{ 189, 9564 },
+	{ 190, 9563 },
+	{ 191, 9488 },
+	{ 192, 9492 },
+	{ 193, 9524 },
+	{ 194, 9516 },
+	{ 195, 9500 },
+	{ 196, 9472 },
+	{ 197, 9532 },
+	{ 198, 9566 },
+	{ 199, 9567 },
+	{ 200, 9562 },
+	{ 201, 9556 },
+	{ 202, 9577 },
+	{ 203, 9574 },
+	{ 204, 9568 },
+	{ 205, 9552 },
+	{ 206, 9580 },
+	{ 207, 9575 },
+	{ 208, 9576 },
+	{ 209, 9572 },
+	{ 210, 9573 },
+	{ 211, 9561 },
+	{ 212, 9560 },
+	{ 213, 9554 },
+	{ 214, 9555 },
+	{ 215, 9579 },
+	{ 216, 9578 },
+	{ 217, 9496 },
+	{ 218, 9484 },
+	{ 219, 9608 },
+	{ 220, 9604 },
+	{ 221, 9612 },
+	{ 222, 9616 },
+	{ 223, 9600 },
+	{ 224, 945 },
+	{ 225, 223 },
+	{ 226, 915 },
+	{ 227, 960 },
+	{ 228, 931 },
+	{ 229, 963 },
+	{ 230, 181 },
+	{ 231, 964 },
+	{ 232, 934 },
+	{ 233, 920 },
+	{ 234, 937 },
+	{ 235, 948 },
+	{ 236, 8734 },
+	{ 237, 966 },
+	{ 238, 949 },
+	{ 239, 8745 },
+	{ 240, 8801 },
+	{ 241, 177 },
+	{ 242, 8805 },
+	{ 243, 8804 },
+	{ 244, 8992 },
+	{ 245, 8993 },
+	{ 246, 247 },
+	{ 247, 8776 },
+	{ 248, 176 },
+	{ 249, 8729 },
+	{ 250, 183 },
+	{ 251, 8730 },
+	{ 252, 8319 },
+	{ 253, 178 },
+	{ 254, 9632 },
+	{ 255, 160 },
+	{ 34, 8220 },
+	{ 34, 8221 },
+	{ 39, 8216 },
+	{ 39, 8217 },
+	{ 45, 8211 },
+	{ 45, 8212 },
+	{ 32, 8194 },
+	{ 32, 8195 },
+	{ 32, 8201 },
+	{ 65, 193 },
+	{ 65, 195 },
+	{ 65, 196 },
+	{ 65, 197 },
+	{ 65, 256 },
+	{ 65, 258 },
+	{ 65, 260 },
+	{ 65, 461 },
+	{ 97, 225 },
+	{ 97, 227 },
+	{ 97, 228 },
+	{ 97, 229 },
+	{ 97, 257 },
+	{ 97, 259 },
+	{ 97, 261 },
+	{ 97, 462 },
+	{ 67, 262 },
+	{ 67, 264 },
+	{ 67, 266 },
+	{ 67, 268 },
+	{ 99, 263 },
+	{ 99, 265 },
+	{ 99, 267 },
+	{ 99, 269 },
+	{ 68, 270 },
+	{ 100, 271 },
+	{ 69, 274 },
+	{ 69, 276 },
+	{ 69, 278 },
+	{ 69, 280 },
+	{ 69, 282 },
+	{ 101, 275 },
+	{ 101, 277 },
+	{ 101, 279 },
+	{ 101, 281 },
+	{ 101, 283 },
+	{ 71, 284 },
+	{ 71, 286 },
+	{ 71, 288 },
+	{ 71, 290 },
+	{ 71, 486 },
+	{ 71, 500 },
+	{ 103, 285 },
+	{ 103, 287 },
+	{ 103, 289 },
+	{ 103, 291 },
+	{ 103, 487 },
+	{ 103, 501 },
+	{ 72, 292 },
+	{ 104, 293 },
+	{ 73, 204 },
+	{ 73, 205 },
+	{ 73, 296 },
+	{ 73, 298 },
+	{ 73, 300 },
+	{ 73, 302 },
+	{ 73, 304 },
+	{ 73, 463 },
+	{ 105, 236 },
+	{ 105, 237 },
+	{ 105, 297 },
+	{ 105, 299 },
+	{ 105, 301 },
+	{ 105, 303 },
+	{ 105, 305 },
+	{ 105, 464 },
+	{ 74, 308 },
+	{ 106, 309 },
+	{ 75, 310 },
+	{ 75, 488 },
+	{ 107, 311 },
+	{ 107, 489 },
+	{ 76, 313 },
+	{ 76, 315 },
+	{ 76, 317 },
+	{ 76, 319 },
+	{ 76, 321 },
+	{ 108, 314 },
+	{ 108, 316 },
+	{ 108, 318 },
+	{ 108, 320 },
+	{ 108, 322 },
+	{ 77, 209 },
+	{ 77, 323 },
+	{ 77, 325 },
+	{ 77, 327 },
+	{ 109, 241 },
+	{ 109, 324 },
+	{ 109, 326 },
+	{ 109, 328 },
+	{ 109, 329 },
+	{ 78, 210 },
+	{ 78, 211 },
+	{ 78, 213 },
+	{ 78, 214 },
+	{ 78, 216 },
+	{ 78, 332 },
+	{ 78, 334 },
+	{ 78, 336 },
+	{ 78, 465 },
+	{ 78, 490 },
+	{ 110, 242 },
+	{ 110, 245 },
+	{ 110, 246 },
+	{ 110, 248 },
+	{ 110, 333 },
+	{ 110, 335 },
+	{ 110, 337 },
+	{ 110, 466 },
+	{ 110, 491 },
+	{ 82, 340 },
+	{ 82, 342 },
+	{ 82, 344 },
+	{ 114, 341 },
+	{ 114, 343 },
+	{ 114, 345 },
+	{ 83, 346 },
+	{ 83, 348 },
+	{ 83, 350 },
+	{ 83, 352 },
+	{ 115, 347 },
+	{ 115, 349 },
+	{ 115, 351 },
+	{ 115, 353 },
+	{ 84, 354 },
+	{ 84, 356 },
+	{ 116, 355 },
+	{ 116, 357 },
+	{ 85, 218 },
+	{ 85, 360 },
+	{ 85, 362 },
+	{ 85, 364 },
+	{ 85, 366 },
+	{ 85, 368 },
+	{ 85, 370 },
+	{ 85, 467 },
+	{ 117, 361 },
+	{ 117, 363 },
+	{ 117, 365 },
+	{ 117, 367 },
+	{ 117, 369 },
+	{ 117, 371 },
+	{ 117, 468 },
+	{ 87, 372 },
+	{ 119, 373 },
+	{ 89, 221 },
+	{ 89, 374 },
+	{ 89, 376 },
+	{ 121, 253 },
+	{ 121, 255 },
+	{ 121, 375 },
+	{ 90, 377 },
+	{ 90, 379 },
+	{ 90, 381 },
+	{ 122, 378 },
+	{ 122, 380 },
+	{ 122, 382 },
 };
-charconvert cp737[] = {
- /* 0 */ 0,/*<tdbgcolor="C0C0C0"><fontface="Arial"color="000000"><b>ISO/IEC10646-1:2000CharacterName</b></font>*/
- 1,
- 2,
- 3,
- 4,
- 5,
- 6,
- 7,
- 8,
- 9,
- 10,
- 11,
- 12,
- 13,
- 14,
- 15,
- 16,
- 17,
- 18,
- 19,
- 20,
- 21,
- 22,
- 23,
- 24,
- 25,
- 26,
- 27,
- 28,
- 29,
- 30,
- 31,
- /* 32 */ 32,/*SPACE*/
- /* 33 */ 33,/*EXCLAMATIONMARK*/
- /* 34 */ 34,/*QUOTATIONMARK*/
- /* 35 */ 35,/*NUMBERSIGN*/
- /* 36 */ 36,/*DOLLARSIGN*/
- /* 37 */ 37,/*PERCENTSIGN*/
- /* 38 */ 38,/*AMPERSAND*/
- /* 39 */ 39,/*APOSTROPHE*/
- /* 40 */ 40,/*LEFTPARENTHESIS*/
- /* 41 */ 41,/*RIGHTPARENTHESIS*/
- /* 42 */ 42,/*ASTERISK*/
- /* 43 */ 43,/*PLUSSIGN*/
- /* 44 */ 44,/*COMMA*/
- /* 45 */ 45,/*HYPHEN-MINUS*/
- /* 46 */ 46,/*FULLSTOP*/
- /* 47 */ 47,/*SOLIDUS*/
- /* 48 */ 48,/*DIGITZERO*/
- /* 49 */ 49,/*DIGITONE*/
- /* 50 */ 50,/*DIGITTWO*/
- /* 51 */ 51,/*DIGITTHREE*/
- /* 52 */ 52,/*DIGITFOUR*/
- /* 53 */ 53,/*DIGITFIVE*/
- /* 54 */ 54,/*DIGITSIX*/
- /* 55 */ 55,/*DIGITSEVEN*/
- /* 56 */ 56,/*DIGITEIGHT*/
- /* 57 */ 57,/*DIGITNINE*/
- /* 58 */ 58,/*COLON*/
- /* 59 */ 59,/*SEMICOLON*/
- /* 60 */ 60,/*LESS-THANSIGN*/
- /* 61 */ 61,/*EQUALSSIGN*/
- /* 62 */ 62,/*GREATER-THANSIGN*/
- /* 63 */ 63,/*QUESTIONMARK*/
- /* 64 */ 64,/*COMMERCIALAT*/
- /* 65 */ 65,/*LATINCAPITALLETTERA*/
- /* 66 */ 66,/*LATINCAPITALLETTERB*/
- /* 67 */ 67,/*LATINCAPITALLETTERC*/
- /* 68 */ 68,/*LATINCAPITALLETTERD*/
- /* 69 */ 69,/*LATINCAPITALLETTERE*/
- /* 70 */ 70,/*LATINCAPITALLETTERF*/
- /* 71 */ 71,/*LATINCAPITALLETTERG*/
- /* 72 */ 72,/*LATINCAPITALLETTERH*/
- /* 73 */ 73,/*LATINCAPITALLETTERI*/
- /* 74 */ 74,/*LATINCAPITALLETTERJ*/
- /* 75 */ 75,/*LATINCAPITALLETTERK*/
- /* 76 */ 76,/*LATINCAPITALLETTERL*/
- /* 77 */ 77,/*LATINCAPITALLETTERM*/
- /* 78 */ 78,/*LATINCAPITALLETTERN*/
- /* 79 */ 79,/*LATINCAPITALLETTERO*/
- /* 80 */ 80,/*LATINCAPITALLETTERP*/
- /* 81 */ 81,/*LATINCAPITALLETTERQ*/
- /* 82 */ 82,/*LATINCAPITALLETTERR*/
- /* 83 */ 83,/*LATINCAPITALLETTERS*/
- /* 84 */ 84,/*LATINCAPITALLETTERT*/
- /* 85 */ 85,/*LATINCAPITALLETTERU*/
- /* 86 */ 86,/*LATINCAPITALLETTERV*/
- /* 87 */ 87,/*LATINCAPITALLETTERW*/
- /* 88 */ 88,/*LATINCAPITALLETTERX*/
- /* 89 */ 89,/*LATINCAPITALLETTERY*/
- /* 90 */ 90,/*LATINCAPITALLETTERZ*/
- /* 91 */ 91,/*LEFTSQUAREBRACKET*/
- /* 92 */ 92,/*REVERSESOLIDUS*/
- /* 93 */ 93,/*RIGHTSQUAREBRACKET*/
- /* 94 */ 94,/*CIRCUMFLEXACCENT*/
- /* 95 */ 95,/*LOWLINE*/
- /* 96 */ 96,/*GRAVEACCENT*/
- /* 97 */ 97,/*LATINSMALLLETTERA*/
- /* 98 */ 98,/*LATINSMALLLETTERB*/
- /* 99 */ 99,/*LATINSMALLLETTERC*/
- /* 100 */ 100,/*LATINSMALLLETTERD*/
- /* 101 */ 101,/*LATINSMALLLETTERE*/
- /* 102 */ 102,/*LATINSMALLLETTERF*/
- /* 103 */ 103,/*LATINSMALLLETTERG*/
- /* 104 */ 104,/*LATINSMALLLETTERH*/
- /* 105 */ 105,/*LATINSMALLLETTERI*/
- /* 106 */ 106,/*LATINSMALLLETTERJ*/
- /* 107 */ 107,/*LATINSMALLLETTERK*/
- /* 108 */ 108,/*LATINSMALLLETTERL*/
- /* 109 */ 109,/*LATINSMALLLETTERM*/
- /* 110 */ 110,/*LATINSMALLLETTERN*/
- /* 111 */ 111,/*LATINSMALLLETTERO*/
- /* 112 */ 112,/*LATINSMALLLETTERP*/
- /* 113 */ 113,/*LATINSMALLLETTERQ*/
- /* 114 */ 114,/*LATINSMALLLETTERR*/
- /* 115 */ 115,/*LATINSMALLLETTERS*/
- /* 116 */ 116,/*LATINSMALLLETTERT*/
- /* 117 */ 117,/*LATINSMALLLETTERU*/
- /* 118 */ 118,/*LATINSMALLLETTERV*/
- /* 119 */ 119,/*LATINSMALLLETTERW*/
- /* 120 */ 120,/*LATINSMALLLETTERX*/
- /* 121 */ 121,/*LATINSMALLLETTERY*/
- /* 122 */ 122,/*LATINSMALLLETTERZ*/
- /* 123 */ 123,/*LEFTCURLYBRACKET*/
- /* 124 */ 124,/*VERTICALLINE*/
- /* 125 */ 125,/*RIGHTCURLYBRACKET*/
- /* 126 */ 126,/*TILDE*/
- 127,
- /* 128 */ 913,/*GREEKCAPITALLETTERALPHA*/
- /* 129 */ 914,/*GREEKCAPITALLETTERBETA*/
- /* 130 */ 915,/*GREEKCAPITALLETTERGAMMA*/
- /* 131 */ 916,/*GREEKCAPITALLETTERDELTA*/
- /* 132 */ 917,/*GREEKCAPITALLETTEREPSILON*/
- /* 133 */ 918,/*GREEKCAPITALLETTERZETA*/
- /* 134 */ 919,/*GREEKCAPITALLETTERETA*/
- /* 135 */ 920,/*GREEKCAPITALLETTERTHETA*/
- /* 136 */ 921,/*GREEKCAPITALLETTERIOTA*/
- /* 137 */ 922,/*GREEKCAPITALLETTERKAPPA*/
- /* 138 */ 923,/*GREEKCAPITALLETTERLAMDA*/
- /* 139 */ 924,/*GREEKCAPITALLETTERMU*/
- /* 140 */ 925,/*GREEKCAPITALLETTERNU*/
- /* 141 */ 926,/*GREEKCAPITALLETTERXI*/
- /* 142 */ 927,/*GREEKCAPITALLETTEROMICRON*/
- /* 143 */ 928,/*GREEKCAPITALLETTERPI*/
- /* 144 */ 929,/*GREEKCAPITALLETTERRHO*/
- /* 145 */ 931,/*GREEKCAPITALLETTERSIGMA*/
- /* 146 */ 932,/*GREEKCAPITALLETTERTAU*/
- /* 147 */ 933,/*GREEKCAPITALLETTERUPSILON*/
- /* 148 */ 934,/*GREEKCAPITALLETTERPHI*/
- /* 149 */ 935,/*GREEKCAPITALLETTERCHI*/
- /* 150 */ 936,/*GREEKCAPITALLETTERPSI*/
- /* 151 */ 937,/*GREEKCAPITALLETTEROMEGA*/
- /* 152 */ 945,/*GREEKSMALLLETTERALPHA*/
- /* 153 */ 946,/*GREEKSMALLLETTERBETA*/
- /* 154 */ 947,/*GREEKSMALLLETTERGAMMA*/
- /* 155 */ 948,/*GREEKSMALLLETTERDELTA*/
- /* 156 */ 949,/*GREEKSMALLLETTEREPSILON*/
- /* 157 */ 950,/*GREEKSMALLLETTERZETA*/
- /* 158 */ 951,/*GREEKSMALLLETTERETA*/
- /* 159 */ 952,/*GREEKSMALLLETTERTHETA*/
- /* 160 */ 953,/*GREEKSMALLLETTERIOTA*/
- /* 161 */ 954,/*GREEKSMALLLETTERKAPPA*/
- /* 162 */ 955,/*GREEKSMALLLETTERLAMDA*/
- /* 163 */ 956,/*GREEKSMALLLETTERMU*/
- /* 164 */ 957,/*GREEKSMALLLETTERNU*/
- /* 165 */ 958,/*GREEKSMALLLETTERXI*/
- /* 166 */ 959,/*GREEKSMALLLETTEROMICRON*/
- /* 167 */ 960,/*GREEKSMALLLETTERPI*/
- /* 168 */ 961,/*GREEKSMALLLETTERRHO*/
- /* 169 */ 963,/*GREEKSMALLLETTERSIGMA*/
- /* 170 */ 962,/*GREEKSMALLLETTERFINALSIGMA*/
- /* 171 */ 964,/*GREEKSMALLLETTERTAU*/
- /* 172 */ 965,/*GREEKSMALLLETTERUPSILON*/
- /* 173 */ 966,/*GREEKSMALLLETTERPHI*/
- /* 174 */ 967,/*GREEKSMALLLETTERCHI*/
- /* 175 */ 968,/*GREEKSMALLLETTERPSI*/
- /* 176 */ 9617,/*LIGHTSHADE*/
- /* 177 */ 9618,/*MEDIUMSHADE*/
- /* 178 */ 9619,/*DARKSHADE*/
- /* 179 */ 9474,/*BOXDRAWINGSLIGHTVERTICAL*/
- /* 180 */ 9508,/*BOXDRAWINGSLIGHTVERTICALANDLEFT*/
- /* 181 */ 9569,/*BOXDRAWINGSVERTICALSINGLEANDLEFTDOUBLE*/
- /* 182 */ 9570,/*BOXDRAWINGSVERTICALDOUBLEANDLEFTSINGLE*/
- /* 183 */ 9558,/*BOXDRAWINGSDOWNDOUBLEANDLEFTSINGLE*/
- /* 184 */ 9557,/*BOXDRAWINGSDOWNSINGLEANDLEFTDOUBLE*/
- /* 185 */ 9571,/*BOXDRAWINGSDOUBLEVERTICALANDLEFT*/
- /* 186 */ 9553,/*BOXDRAWINGSDOUBLEVERTICAL*/
- /* 187 */ 9559,/*BOXDRAWINGSDOUBLEDOWNANDLEFT*/
- /* 188 */ 9565,/*BOXDRAWINGSDOUBLEUPANDLEFT*/
- /* 189 */ 9564,/*BOXDRAWINGSUPDOUBLEANDLEFTSINGLE*/
- /* 190 */ 9563,/*BOXDRAWINGSUPSINGLEANDLEFTDOUBLE*/
- /* 191 */ 9488,/*BOXDRAWINGSLIGHTDOWNANDLEFT*/
- /* 192 */ 9492,/*BOXDRAWINGSLIGHTUPANDRIGHT*/
- /* 193 */ 9524,/*BOXDRAWINGSLIGHTUPANDHORIZONTAL*/
- /* 194 */ 9516,/*BOXDRAWINGSLIGHTDOWNANDHORIZONTAL*/
- /* 195 */ 9500,/*BOXDRAWINGSLIGHTVERTICALANDRIGHT*/
- /* 196 */ 9472,/*BOXDRAWINGSLIGHTHORIZONTAL*/
- /* 197 */ 9532,/*BOXDRAWINGSLIGHTVERTICALANDHORIZONTAL*/
- /* 198 */ 9566,/*BOXDRAWINGSVERTICALSINGLEANDRIGHTDOUBLE*/
- /* 199 */ 9567,/*BOXDRAWINGSVERTICALDOUBLEANDRIGHTSINGLE*/
- /* 200 */ 9562,/*BOXDRAWINGSDOUBLEUPANDRIGHT*/
- /* 201 */ 9556,/*BOXDRAWINGSDOUBLEDOWNANDRIGHT*/
- /* 202 */ 9577,/*BOXDRAWINGSDOUBLEUPANDHORIZONTAL*/
- /* 203 */ 9574,/*BOXDRAWINGSDOUBLEDOWNANDHORIZONTAL*/
- /* 204 */ 9568,/*BOXDRAWINGSDOUBLEVERTICALANDRIGHT*/
- /* 205 */ 9552,/*BOXDRAWINGSDOUBLEHORIZONTAL*/
- /* 206 */ 9580,/*BOXDRAWINGSDOUBLEVERTICALANDHORIZONTAL*/
- /* 207 */ 9575,/*BOXDRAWINGSUPSINGLEANDHORIZONTALDOUBLE*/
- /* 208 */ 9576,/*BOXDRAWINGSUPDOUBLEANDHORIZONTALSINGLE*/
- /* 209 */ 9572,/*BOXDRAWINGSDOWNSINGLEANDHORIZONTALDOUBLE*/
- /* 210 */ 9573,/*BOXDRAWINGSDOWNDOUBLEANDHORIZONTALSINGLE*/
- /* 211 */ 9561,/*BOXDRAWINGSUPDOUBLEANDRIGHTSINGLE*/
- /* 212 */ 9560,/*BOXDRAWINGSUPSINGLEANDRIGHTDOUBLE*/
- /* 213 */ 9554,/*BOXDRAWINGSDOWNSINGLEANDRIGHTDOUBLE*/
- /* 214 */ 9555,/*BOXDRAWINGSDOWNDOUBLEANDRIGHTSINGLE*/
- /* 215 */ 9579,/*BOXDRAWINGSVERTICALDOUBLEANDHORIZONTALSINGLE*/
- /* 216 */ 9578,/*BOXDRAWINGSVERTICALSINGLEANDHORIZONTALDOUBLE*/
- /* 217 */ 9496,/*BOXDRAWINGSLIGHTUPANDLEFT*/
- /* 218 */ 9484,/*BOXDRAWINGSLIGHTDOWNANDRIGHT*/
- /* 219 */ 9608,/*FULLBLOCK*/
- /* 220 */ 9604,/*LOWERHALFBLOCK*/
- /* 221 */ 9612,/*LEFTHALFBLOCK*/
- /* 222 */ 9616,/*RIGHTHALFBLOCK*/
- /* 223 */ 9600,/*UPPERHALFBLOCK*/
- /* 224 */ 969,/*GREEKSMALLLETTEROMEGA*/
- /* 225 */ 940,/*GREEKSMALLLETTERALPHAWITHTONOS*/
- /* 226 */ 941,/*GREEKSMALLLETTEREPSILONWITHTONOS*/
- /* 227 */ 942,/*GREEKSMALLLETTERETAWITHTONOS*/
- /* 228 */ 970,/*GREEKSMALLLETTERIOTAWITHDIALYTIKA*/
- /* 229 */ 943,/*GREEKSMALLLETTERIOTAWITHTONOS*/
- /* 230 */ 972,/*GREEKSMALLLETTEROMICRONWITHTONOS*/
- /* 231 */ 973,/*GREEKSMALLLETTERUPSILONWITHTONOS*/
- /* 232 */ 971,/*GREEKSMALLLETTERUPSILONWITHDIALYTIKA*/
- /* 233 */ 974,/*GREEKSMALLLETTEROMEGAWITHTONOS*/
- /* 234 */ 902,/*GREEKCAPITALLETTERALPHAWITHTONOS*/
- /* 235 */ 904,/*GREEKCAPITALLETTEREPSILONWITHTONOS*/
- /* 236 */ 905,/*GREEKCAPITALLETTERETAWITHTONOS*/
- /* 237 */ 906,/*GREEKCAPITALLETTERIOTAWITHTONOS*/
- /* 238 */ 908,/*GREEKCAPITALLETTEROMICRONWITHTONOS*/
- /* 239 */ 910,/*GREEKCAPITALLETTERUPSILONWITHTONOS*/
- /* 240 */ 911,/*GREEKCAPITALLETTEROMEGAWITHTONOS*/
- /* 241 */ 177,/*PLUS-MINUSSIGN*/
- /* 242 */ 8805,/*GREATER-THANOREQUALTO*/
- /* 243 */ 8804,/*LESS-THANOREQUALTO*/
- /* 244 */ 938,/*GREEKCAPITALLETTERIOTAWITHDIALYTIKA*/
- /* 245 */ 939,/*GREEKCAPITALLETTERUPSILONWITHDIALYTIKA*/
- /* 246 */ 247,/*DIVISIONSIGN*/
- /* 247 */ 8776,/*ALMOSTEQUALTO*/
- /* 248 */ 176,/*DEGREESIGN*/
- /* 249 */ 8729,/*BULLETOPERATOR*/
- /* 250 */ 183,/*MIDDLEDOT*/
- /* 251 */ 8730,/*SQUAREROOT*/
- /* 252 */ 8319,/*SUPERSCRIPTLATINSMALLLETTERN*/
- /* 253 */ 178,/*SUPERSCRIPTTWO*/
- /* 254 */ 9632,/*BLACKSQUARE*/
- /* 255 */ 160/*NO-BREAKSPACE*/
+static convert_t cp864[] = {
+	{ 0, 0 },
+	{ 1, 1 },
+	{ 2, 2 },
+	{ 3, 3 },
+	{ 4, 4 },
+	{ 5, 5 },
+	{ 6, 6 },
+	{ 7, 7 },
+	{ 8, 8 },
+	{ 9, 9 },
+	{ 10, 10 },
+	{ 11, 11 },
+	{ 12, 12 },
+	{ 13, 13 },
+	{ 14, 14 },
+	{ 15, 15 },
+	{ 16, 16 },
+	{ 17, 17 },
+	{ 18, 18 },
+	{ 19, 19 },
+	{ 20, 20 },
+	{ 21, 21 },
+	{ 22, 22 },
+	{ 23, 23 },
+	{ 24, 24 },
+	{ 25, 25 },
+	{ 26, 26 },
+	{ 27, 27 },
+	{ 28, 28 },
+	{ 29, 29 },
+	{ 30, 30 },
+	{ 31, 31 },
+	{ 32, 32 },
+	{ 33, 33 },
+	{ 34, 34 },
+	{ 35, 35 },
+	{ 36, 36 },
+	{ 37, 37 },
+	{ 38, 38 },
+	{ 39, 39 },
+	{ 40, 40 },
+	{ 41, 41 },
+	{ 42, 42 },
+	{ 43, 43 },
+	{ 44, 44 },
+	{ 45, 45 },
+	{ 46, 46 },
+	{ 47, 47 },
+	{ 48, 48 },
+	{ 49, 49 },
+	{ 50, 50 },
+	{ 51, 51 },
+	{ 52, 52 },
+	{ 53, 53 },
+	{ 54, 54 },
+	{ 55, 55 },
+	{ 56, 56 },
+	{ 57, 57 },
+	{ 58, 58 },
+	{ 59, 59 },
+	{ 60, 60 },
+	{ 61, 61 },
+	{ 62, 62 },
+	{ 63, 63 },
+	{ 64, 64 },
+	{ 65, 65 },
+	{ 66, 66 },
+	{ 67, 67 },
+	{ 68, 68 },
+	{ 69, 69 },
+	{ 70, 70 },
+	{ 71, 71 },
+	{ 72, 72 },
+	{ 73, 73 },
+	{ 74, 74 },
+	{ 75, 75 },
+	{ 76, 76 },
+	{ 77, 77 },
+	{ 78, 78 },
+	{ 79, 79 },
+	{ 80, 80 },
+	{ 81, 81 },
+	{ 82, 82 },
+	{ 83, 83 },
+	{ 84, 84 },
+	{ 85, 85 },
+	{ 86, 86 },
+	{ 87, 87 },
+	{ 88, 88 },
+	{ 89, 89 },
+	{ 90, 90 },
+	{ 91, 91 },
+	{ 92, 92 },
+	{ 93, 93 },
+	{ 94, 94 },
+	{ 95, 95 },
+	{ 96, 96 },
+	{ 97, 97 },
+	{ 98, 98 },
+	{ 99, 99 },
+	{ 100, 100 },
+	{ 101, 101 },
+	{ 102, 102 },
+	{ 103, 103 },
+	{ 104, 104 },
+	{ 105, 105 },
+	{ 106, 106 },
+	{ 107, 107 },
+	{ 108, 108 },
+	{ 109, 109 },
+	{ 110, 110 },
+	{ 111, 111 },
+	{ 112, 112 },
+	{ 113, 113 },
+	{ 114, 114 },
+	{ 115, 115 },
+	{ 116, 116 },
+	{ 117, 117 },
+	{ 118, 118 },
+	{ 119, 119 },
+	{ 120, 120 },
+	{ 121, 121 },
+	{ 122, 122 },
+	{ 123, 123 },
+	{ 124, 124 },
+	{ 125, 125 },
+	{ 126, 126 },
+	{ 127, 127 },
+	{ 128, 176 },
+	{ 129, 183 },
+	{ 130, 8729 },
+	{ 131, 8730 },
+	{ 132, 9618 },
+	{ 133, 9472 },
+	{ 134, 9474 },
+	{ 135, 9532 },
+	{ 136, 9508 },
+	{ 137, 9516 },
+	{ 138, 9500 },
+	{ 139, 9524 },
+	{ 140, 9488 },
+	{ 141, 9484 },
+	{ 142, 9492 },
+	{ 143, 9496 },
+	{ 144, 946 },
+	{ 145, 8734 },
+	{ 146, 966 },
+	{ 147, 177 },
+	{ 148, 189 },
+	{ 149, 188 },
+	{ 150, 8776 },
+	{ 151, 171 },
+	{ 152, 187 },
+	{ 153, 65271 },
+	{ 154, 65272 },
+	{ 155, 155 },
+	{ 156, 156 },
+	{ 157, 65275 },
+	{ 158, 65276 },
+	{ 159, 159 },
+	{ 160, 160 },
+	{ 161, 173 },
+	{ 162, 65154 },
+	{ 163, 163 },
+	{ 164, 164 },
+	{ 165, 65156 },
+	{ 166, 166 },
+	{ 167, 167 },
+	{ 168, 65166 },
+	{ 169, 1576 },
+	{ 170, 1578 },
+	{ 171, 1579 },
+	{ 172, 1548 },
+	{ 173, 1580 },
+	{ 174, 1581 },
+	{ 175, 1582 },
+	{ 176, 1632 },
+	{ 177, 1633 },
+	{ 178, 1634 },
+	{ 179, 1635 },
+	{ 180, 1636 },
+	{ 181, 1637 },
+	{ 182, 1638 },
+	{ 183, 1639 },
+	{ 184, 1640 },
+	{ 185, 1641 },
+	{ 186, 1601 },
+	{ 187, 1563 },
+	{ 188, 1587 },
+	{ 189, 1588 },
+	{ 190, 1589 },
+	{ 191, 1567 },
+	{ 192, 162 },
+	{ 193, 1569 },
+	{ 194, 1570 },
+	{ 195, 1571 },
+	{ 196, 1572 },
+	{ 197, 65226 },
+	{ 198, 65163 },
+	{ 199, 1575 },
+	{ 200, 65169 },
+	{ 201, 1577 },
+	{ 202, 65175 },
+	{ 203, 65179 },
+	{ 204, 65183 },
+	{ 205, 65187 },
+	{ 206, 65191 },
+	{ 207, 1583 },
+	{ 208, 1584 },
+	{ 209, 1585 },
+	{ 210, 1586 },
+	{ 211, 65203 },
+	{ 212, 65207 },
+	{ 213, 65211 },
+	{ 214, 65215 },
+	{ 215, 1591 },
+	{ 216, 1592 },
+	{ 217, 65227 },
+	{ 218, 65231 },
+	{ 219, 166 },
+	{ 220, 172 },
+	{ 221, 247 },
+	{ 222, 215 },
+	{ 223, 1593 },
+	{ 224, 1600 },
+	{ 225, 65235 },
+	{ 226, 65239 },
+	{ 227, 65243 },
+	{ 228, 65247 },
+	{ 229, 65251 },
+	{ 230, 65255 },
+	{ 231, 65259 },
+	{ 232, 1608 },
+	{ 233, 1609 },
+	{ 234, 65267 },
+	{ 235, 1590 },
+	{ 236, 65228 },
+	{ 237, 65230 },
+	{ 238, 1594 },
+	{ 239, 1605 },
+	{ 240, 65149 },
+	{ 241, 1617 },
+	{ 242, 1606 },
+	{ 243, 1607 },
+	{ 244, 65260 },
+	{ 245, 65264 },
+	{ 246, 65266 },
+	{ 247, 65232 },
+	{ 248, 1602 },
+	{ 249, 65269 },
+	{ 250, 65270 },
+	{ 251, 1604 },
+	{ 252, 1603 },
+	{ 253, 1610 },
+	{ 254, 9632 },
+	{ 255, 255 },
+	{ 34, 8220 },
+	{ 34, 8221 },
+	{ 39, 8216 },
+	{ 39, 8217 },
+	{ 45, 8211 },
+	{ 45, 8212 },
+	{ 32, 8194 },
+	{ 32, 8195 },
+	{ 32, 8201 },
+	{ 65, 192 },
+	{ 65, 193 },
+	{ 65, 194 },
+	{ 65, 195 },
+	{ 65, 196 },
+	{ 65, 197 },
+	{ 65, 256 },
+	{ 65, 258 },
+	{ 65, 260 },
+	{ 65, 461 },
+	{ 97, 224 },
+	{ 97, 225 },
+	{ 97, 226 },
+	{ 97, 227 },
+	{ 97, 228 },
+	{ 97, 229 },
+	{ 97, 257 },
+	{ 97, 259 },
+	{ 97, 261 },
+	{ 97, 462 },
+	{ 67, 199 },
+	{ 67, 262 },
+	{ 67, 264 },
+	{ 67, 266 },
+	{ 67, 268 },
+	{ 99, 231 },
+	{ 99, 263 },
+	{ 99, 265 },
+	{ 99, 267 },
+	{ 99, 269 },
+	{ 68, 270 },
+	{ 100, 271 },
+	{ 69, 200 },
+	{ 69, 201 },
+	{ 69, 202 },
+	{ 69, 203 },
+	{ 69, 274 },
+	{ 69, 276 },
+	{ 69, 278 },
+	{ 69, 280 },
+	{ 69, 282 },
+	{ 101, 232 },
+	{ 101, 233 },
+	{ 101, 234 },
+	{ 101, 235 },
+	{ 101, 275 },
+	{ 101, 277 },
+	{ 101, 279 },
+	{ 101, 281 },
+	{ 101, 283 },
+	{ 71, 284 },
+	{ 71, 286 },
+	{ 71, 288 },
+	{ 71, 290 },
+	{ 71, 486 },
+	{ 71, 500 },
+	{ 103, 285 },
+	{ 103, 287 },
+	{ 103, 289 },
+	{ 103, 291 },
+	{ 103, 487 },
+	{ 103, 501 },
+	{ 72, 292 },
+	{ 104, 293 },
+	{ 73, 204 },
+	{ 73, 205 },
+	{ 73, 206 },
+	{ 73, 207 },
+	{ 73, 296 },
+	{ 73, 298 },
+	{ 73, 300 },
+	{ 73, 302 },
+	{ 73, 304 },
+	{ 73, 463 },
+	{ 105, 236 },
+	{ 105, 237 },
+	{ 105, 238 },
+	{ 105, 239 },
+	{ 105, 297 },
+	{ 105, 299 },
+	{ 105, 301 },
+	{ 105, 303 },
+	{ 105, 305 },
+	{ 105, 464 },
+	{ 74, 308 },
+	{ 106, 309 },
+	{ 75, 310 },
+	{ 75, 488 },
+	{ 107, 311 },
+	{ 107, 489 },
+	{ 76, 313 },
+	{ 76, 315 },
+	{ 76, 317 },
+	{ 76, 319 },
+	{ 76, 321 },
+	{ 108, 314 },
+	{ 108, 316 },
+	{ 108, 318 },
+	{ 108, 320 },
+	{ 108, 322 },
+	{ 77, 209 },
+	{ 77, 323 },
+	{ 77, 325 },
+	{ 77, 327 },
+	{ 109, 241 },
+	{ 109, 324 },
+	{ 109, 326 },
+	{ 109, 328 },
+	{ 109, 329 },
+	{ 78, 210 },
+	{ 78, 211 },
+	{ 78, 212 },
+	{ 78, 213 },
+	{ 78, 214 },
+	{ 78, 216 },
+	{ 78, 332 },
+	{ 78, 334 },
+	{ 78, 336 },
+	{ 78, 465 },
+	{ 78, 490 },
+	{ 110, 242 },
+	{ 110, 243 },
+	{ 110, 244 },
+	{ 110, 245 },
+	{ 110, 246 },
+	{ 110, 248 },
+	{ 110, 333 },
+	{ 110, 335 },
+	{ 110, 337 },
+	{ 110, 466 },
+	{ 110, 491 },
+	{ 82, 340 },
+	{ 82, 342 },
+	{ 82, 344 },
+	{ 114, 341 },
+	{ 114, 343 },
+	{ 114, 345 },
+	{ 83, 346 },
+	{ 83, 348 },
+	{ 83, 350 },
+	{ 83, 352 },
+	{ 115, 347 },
+	{ 115, 349 },
+	{ 115, 351 },
+	{ 115, 353 },
+	{ 84, 354 },
+	{ 84, 356 },
+	{ 116, 355 },
+	{ 116, 357 },
+	{ 85, 217 },
+	{ 85, 218 },
+	{ 85, 219 },
+	{ 85, 220 },
+	{ 85, 360 },
+	{ 85, 362 },
+	{ 85, 364 },
+	{ 85, 366 },
+	{ 85, 368 },
+	{ 85, 370 },
+	{ 85, 467 },
+	{ 117, 249 },
+	{ 117, 250 },
+	{ 117, 251 },
+	{ 117, 252 },
+	{ 117, 361 },
+	{ 117, 363 },
+	{ 117, 365 },
+	{ 117, 367 },
+	{ 117, 369 },
+	{ 117, 371 },
+	{ 117, 468 },
+	{ 87, 372 },
+	{ 119, 373 },
+	{ 89, 221 },
+	{ 89, 374 },
+	{ 89, 376 },
+	{ 121, 253 },
+	{ 121, 375 },
+	{ 90, 377 },
+	{ 90, 379 },
+	{ 90, 381 },
+	{ 122, 378 },
+	{ 122, 380 },
+	{ 122, 382 },
 };
-charconvert cp775[] = {
- /* 0 */ 0,/*<tdbgcolor="C0C0C0"><fontface="Arial"color="000000"><b>ISO/IEC10646-1:2000CharacterName</b></font>*/
- 1,
- 2,
- 3,
- 4,
- 5,
- 6,
- 7,
- 8,
- 9,
- 10,
- 11,
- 12,
- 13,
- 14,
- 15,
- 16,
- 17,
- 18,
- 19,
- 20,
- 21,
- 22,
- 23,
- 24,
- 25,
- 26,
- 27,
- 28,
- 29,
- 30,
- 31,
- /* 32 */ 32,/*SPACE*/
- /* 33 */ 33,/*EXCLAMATIONMARK*/
- /* 34 */ 34,/*QUOTATIONMARK*/
- /* 35 */ 35,/*NUMBERSIGN*/
- /* 36 */ 36,/*DOLLARSIGN*/
- /* 37 */ 37,/*PERCENTSIGN*/
- /* 38 */ 38,/*AMPERSAND*/
- /* 39 */ 39,/*APOSTROPHE*/
- /* 40 */ 40,/*LEFTPARENTHESIS*/
- /* 41 */ 41,/*RIGHTPARENTHESIS*/
- /* 42 */ 42,/*ASTERISK*/
- /* 43 */ 43,/*PLUSSIGN*/
- /* 44 */ 44,/*COMMA*/
- /* 45 */ 45,/*HYPHEN-MINUS*/
- /* 46 */ 46,/*FULLSTOP*/
- /* 47 */ 47,/*SOLIDUS*/
- /* 48 */ 48,/*DIGITZERO*/
- /* 49 */ 49,/*DIGITONE*/
- /* 50 */ 50,/*DIGITTWO*/
- /* 51 */ 51,/*DIGITTHREE*/
- /* 52 */ 52,/*DIGITFOUR*/
- /* 53 */ 53,/*DIGITFIVE*/
- /* 54 */ 54,/*DIGITSIX*/
- /* 55 */ 55,/*DIGITSEVEN*/
- /* 56 */ 56,/*DIGITEIGHT*/
- /* 57 */ 57,/*DIGITNINE*/
- /* 58 */ 58,/*COLON*/
- /* 59 */ 59,/*SEMICOLON*/
- /* 60 */ 60,/*LESS-THANSIGN*/
- /* 61 */ 61,/*EQUALSSIGN*/
- /* 62 */ 62,/*GREATER-THANSIGN*/
- /* 63 */ 63,/*QUESTIONMARK*/
- /* 64 */ 64,/*COMMERCIALAT*/
- /* 65 */ 65,/*LATINCAPITALLETTERA*/
- /* 66 */ 66,/*LATINCAPITALLETTERB*/
- /* 67 */ 67,/*LATINCAPITALLETTERC*/
- /* 68 */ 68,/*LATINCAPITALLETTERD*/
- /* 69 */ 69,/*LATINCAPITALLETTERE*/
- /* 70 */ 70,/*LATINCAPITALLETTERF*/
- /* 71 */ 71,/*LATINCAPITALLETTERG*/
- /* 72 */ 72,/*LATINCAPITALLETTERH*/
- /* 73 */ 73,/*LATINCAPITALLETTERI*/
- /* 74 */ 74,/*LATINCAPITALLETTERJ*/
- /* 75 */ 75,/*LATINCAPITALLETTERK*/
- /* 76 */ 76,/*LATINCAPITALLETTERL*/
- /* 77 */ 77,/*LATINCAPITALLETTERM*/
- /* 78 */ 78,/*LATINCAPITALLETTERN*/
- /* 79 */ 79,/*LATINCAPITALLETTERO*/
- /* 80 */ 80,/*LATINCAPITALLETTERP*/
- /* 81 */ 81,/*LATINCAPITALLETTERQ*/
- /* 82 */ 82,/*LATINCAPITALLETTERR*/
- /* 83 */ 83,/*LATINCAPITALLETTERS*/
- /* 84 */ 84,/*LATINCAPITALLETTERT*/
- /* 85 */ 85,/*LATINCAPITALLETTERU*/
- /* 86 */ 86,/*LATINCAPITALLETTERV*/
- /* 87 */ 87,/*LATINCAPITALLETTERW*/
- /* 88 */ 88,/*LATINCAPITALLETTERX*/
- /* 89 */ 89,/*LATINCAPITALLETTERY*/
- /* 90 */ 90,/*LATINCAPITALLETTERZ*/
- /* 91 */ 91,/*LEFTSQUAREBRACKET*/
- /* 92 */ 92,/*REVERSESOLIDUS*/
- /* 93 */ 93,/*RIGHTSQUAREBRACKET*/
- /* 94 */ 94,/*CIRCUMFLEXACCENT*/
- /* 95 */ 95,/*LOWLINE*/
- /* 96 */ 96,/*GRAVEACCENT*/
- /* 97 */ 97,/*LATINSMALLLETTERA*/
- /* 98 */ 98,/*LATINSMALLLETTERB*/
- /* 99 */ 99,/*LATINSMALLLETTERC*/
- /* 100 */ 100,/*LATINSMALLLETTERD*/
- /* 101 */ 101,/*LATINSMALLLETTERE*/
- /* 102 */ 102,/*LATINSMALLLETTERF*/
- /* 103 */ 103,/*LATINSMALLLETTERG*/
- /* 104 */ 104,/*LATINSMALLLETTERH*/
- /* 105 */ 105,/*LATINSMALLLETTERI*/
- /* 106 */ 106,/*LATINSMALLLETTERJ*/
- /* 107 */ 107,/*LATINSMALLLETTERK*/
- /* 108 */ 108,/*LATINSMALLLETTERL*/
- /* 109 */ 109,/*LATINSMALLLETTERM*/
- /* 110 */ 110,/*LATINSMALLLETTERN*/
- /* 111 */ 111,/*LATINSMALLLETTERO*/
- /* 112 */ 112,/*LATINSMALLLETTERP*/
- /* 113 */ 113,/*LATINSMALLLETTERQ*/
- /* 114 */ 114,/*LATINSMALLLETTERR*/
- /* 115 */ 115,/*LATINSMALLLETTERS*/
- /* 116 */ 116,/*LATINSMALLLETTERT*/
- /* 117 */ 117,/*LATINSMALLLETTERU*/
- /* 118 */ 118,/*LATINSMALLLETTERV*/
- /* 119 */ 119,/*LATINSMALLLETTERW*/
- /* 120 */ 120,/*LATINSMALLLETTERX*/
- /* 121 */ 121,/*LATINSMALLLETTERY*/
- /* 122 */ 122,/*LATINSMALLLETTERZ*/
- /* 123 */ 123,/*LEFTCURLYBRACKET*/
- /* 124 */ 124,/*VERTICALLINE*/
- /* 125 */ 125,/*RIGHTCURLYBRACKET*/
- /* 126 */ 126,/*TILDE*/
- 127,
- /* 128 */ 262,/*LATINCAPITALLETTERCWITHACUTE*/
- /* 129 */ 252,/*LATINSMALLLETTERUWITHDIAERESIS*/
- /* 130 */ 233,/*LATINSMALLLETTEREWITHACUTE*/
- /* 131 */ 257,/*LATINSMALLLETTERAWITHMACRON*/
- /* 132 */ 228,/*LATINSMALLLETTERAWITHDIAERESIS*/
- /* 133 */ 291,/*LATINSMALLLETTERGWITHCEDILLA*/
- /* 134 */ 229,/*LATINSMALLLETTERAWITHRINGABOVE*/
- /* 135 */ 263,/*LATINSMALLLETTERCWITHACUTE*/
- /* 136 */ 322,/*LATINSMALLLETTERLWITHSTROKE*/
- /* 137 */ 275,/*LATINSMALLLETTEREWITHMACRON*/
- /* 138 */ 342,/*LATINCAPITALLETTERRWITHCEDILLA*/
- /* 139 */ 343,/*LATINSMALLLETTERRWITHCEDILLA*/
- /* 140 */ 299,/*LATINSMALLLETTERIWITHMACRON*/
- /* 141 */ 377,/*LATINCAPITALLETTERZWITHACUTE*/
- /* 142 */ 196,/*LATINCAPITALLETTERAWITHDIAERESIS*/
- /* 143 */ 197,/*LATINCAPITALLETTERAWITHRINGABOVE*/
- /* 144 */ 201,/*LATINCAPITALLETTEREWITHACUTE*/
- /* 145 */ 230,/*LATINSMALLLETTERAE*/
- /* 146 */ 198,/*LATINCAPITALLETTERAE*/
- /* 147 */ 333,/*LATINSMALLLETTEROWITHMACRON*/
- /* 148 */ 246,/*LATINSMALLLETTEROWITHDIAERESIS*/
- /* 149 */ 290,/*LATINCAPITALLETTERGWITHCEDILLA*/
- /* 150 */ 162,/*CENTSIGN*/
- /* 151 */ 346,/*LATINCAPITALLETTERSWITHACUTE*/
- /* 152 */ 347,/*LATINSMALLLETTERSWITHACUTE*/
- /* 153 */ 214,/*LATINCAPITALLETTEROWITHDIAERESIS*/
- /* 154 */ 220,/*LATINCAPITALLETTERUWITHDIAERESIS*/
- /* 155 */ 248,/*LATINSMALLLETTEROWITHSTROKE*/
- /* 156 */ 163,/*POUNDSIGN*/
- /* 157 */ 216,/*LATINCAPITALLETTEROWITHSTROKE*/
- /* 158 */ 215,/*MULTIPLICATIONSIGN*/
- /* 159 */ 164,/*CURRENCYSIGN*/
- /* 160 */ 256,/*LATINCAPITALLETTERAWITHMACRON*/
- /* 161 */ 298,/*LATINCAPITALLETTERIWITHMACRON*/
- /* 162 */ 243,/*LATINSMALLLETTEROWITHACUTE*/
- /* 163 */ 379,/*LATINCAPITALLETTERZWITHDOTABOVE*/
- /* 164 */ 380,/*LATINSMALLLETTERZWITHDOTABOVE*/
- /* 165 */ 378,/*LATINSMALLLETTERZWITHACUTE*/
- /* 166 */ 8221,/*RIGHTDOUBLEQUOTATIONMARK*/
- /* 167 */ 166,/*BROKENBAR*/
- /* 168 */ 169,/*COPYRIGHTSIGN*/
- /* 169 */ 174,/*REGISTEREDSIGN*/
- /* 170 */ 172,/*NOTSIGN*/
- /* 171 */ 189,/*VULGARFRACTIONONEHALF*/
- /* 172 */ 188,/*VULGARFRACTIONONEQUARTER*/
- /* 173 */ 321,/*LATINCAPITALLETTERLWITHSTROKE*/
- /* 174 */ 171,/*LEFT-POINTINGDOUBLEANGLEQUOTATIONMARK*/
- /* 175 */ 187,/*RIGHT-POINTINGDOUBLEANGLEQUOTATIONMARK*/
- /* 176 */ 9617,/*LIGHTSHADE*/
- /* 177 */ 9618,/*MEDIUMSHADE*/
- /* 178 */ 9619,/*DARKSHADE*/
- /* 179 */ 9474,/*BOXDRAWINGSLIGHTVERTICAL*/
- /* 180 */ 9508,/*BOXDRAWINGSLIGHTVERTICALANDLEFT*/
- /* 181 */ 260,/*LATINCAPITALLETTERAWITHOGONEK*/
- /* 182 */ 268,/*LATINCAPITALLETTERCWITHCARON*/
- /* 183 */ 280,/*LATINCAPITALLETTEREWITHOGONEK*/
- /* 184 */ 278,/*LATINCAPITALLETTEREWITHDOTABOVE*/
- /* 185 */ 9571,/*BOXDRAWINGSDOUBLEVERTICALANDLEFT*/
- /* 186 */ 9553,/*BOXDRAWINGSDOUBLEVERTICAL*/
- /* 187 */ 9559,/*BOXDRAWINGSDOUBLEDOWNANDLEFT*/
- /* 188 */ 9565,/*BOXDRAWINGSDOUBLEUPANDLEFT*/
- /* 189 */ 302,/*LATINCAPITALLETTERIWITHOGONEK*/
- /* 190 */ 352,/*LATINCAPITALLETTERSWITHCARON*/
- /* 191 */ 9488,/*BOXDRAWINGSLIGHTDOWNANDLEFT*/
- /* 192 */ 9492,/*BOXDRAWINGSLIGHTUPANDRIGHT*/
- /* 193 */ 9524,/*BOXDRAWINGSLIGHTUPANDHORIZONTAL*/
- /* 194 */ 9516,/*BOXDRAWINGSLIGHTDOWNANDHORIZONTAL*/
- /* 195 */ 9500,/*BOXDRAWINGSLIGHTVERTICALANDRIGHT*/
- /* 196 */ 9472,/*BOXDRAWINGSLIGHTHORIZONTAL*/
- /* 197 */ 9532,/*BOXDRAWINGSLIGHTVERTICALANDHORIZONTAL*/
- /* 198 */ 370,/*LATINCAPITALLETTERUWITHOGONEK*/
- /* 199 */ 362,/*LATINCAPITALLETTERUWITHMACRON*/
- /* 200 */ 9562,/*BOXDRAWINGSDOUBLEUPANDRIGHT*/
- /* 201 */ 9556,/*BOXDRAWINGSDOUBLEDOWNANDRIGHT*/
- /* 202 */ 9577,/*BOXDRAWINGSDOUBLEUPANDHORIZONTAL*/
- /* 203 */ 9574,/*BOXDRAWINGSDOUBLEDOWNANDHORIZONTAL*/
- /* 204 */ 9568,/*BOXDRAWINGSDOUBLEVERTICALANDRIGHT*/
- /* 205 */ 9552,/*BOXDRAWINGSDOUBLEHORIZONTAL*/
- /* 206 */ 9580,/*BOXDRAWINGSDOUBLEVERTICALANDHORIZONTAL*/
- /* 207 */ 381,/*LATINCAPITALLETTERZWITHCARON*/
- /* 208 */ 261,/*LATINSMALLLETTERAWITHOGONEK*/
- /* 209 */ 269,/*LATINSMALLLETTERCWITHCARON*/
- /* 210 */ 281,/*LATINSMALLLETTEREWITHOGONEK*/
- /* 211 */ 279,/*LATINSMALLLETTEREWITHDOTABOVE*/
- /* 212 */ 303,/*LATINSMALLLETTERIWITHOGONEK*/
- /* 213 */ 353,/*LATINSMALLLETTERSWITHCARON*/
- /* 214 */ 371,/*LATINSMALLLETTERUWITHOGONEK*/
- /* 215 */ 363,/*LATINSMALLLETTERUWITHMACRON*/
- /* 216 */ 382,/*LATINSMALLLETTERZWITHCARON*/
- /* 217 */ 9496,/*BOXDRAWINGSLIGHTUPANDLEFT*/
- /* 218 */ 9484,/*BOXDRAWINGSLIGHTDOWNANDRIGHT*/
- /* 219 */ 9608,/*FULLBLOCK*/
- /* 220 */ 9604,/*LOWERHALFBLOCK*/
- /* 221 */ 9612,/*LEFTHALFBLOCK*/
- /* 222 */ 9616,/*RIGHTHALFBLOCK*/
- /* 223 */ 9600,/*UPPERHALFBLOCK*/
- /* 224 */ 211,/*LATINCAPITALLETTEROWITHACUTE*/
- /* 225 */ 223,/*LATINSMALLLETTERSHARPS*/
- /* 226 */ 332,/*LATINCAPITALLETTEROWITHMACRON*/
- /* 227 */ 323,/*LATINCAPITALLETTERNWITHACUTE*/
- /* 228 */ 245,/*LATINSMALLLETTEROWITHTILDE*/
- /* 229 */ 213,/*LATINCAPITALLETTEROWITHTILDE*/
- /* 230 */ 181,/*MICROSIGN*/
- /* 231 */ 324,/*LATINSMALLLETTERNWITHACUTE*/
- /* 232 */ 310,/*LATINCAPITALLETTERKWITHCEDILLA*/
- /* 233 */ 311,/*LATINSMALLLETTERKWITHCEDILLA*/
- /* 234 */ 315,/*LATINCAPITALLETTERLWITHCEDILLA*/
- /* 235 */ 316,/*LATINSMALLLETTERLWITHCEDILLA*/
- /* 236 */ 326,/*LATINSMALLLETTERNWITHCEDILLA*/
- /* 237 */ 274,/*LATINCAPITALLETTEREWITHMACRON*/
- /* 238 */ 325,/*LATINCAPITALLETTERNWITHCEDILLA*/
- /* 239 */ 8217,/*RIGHTSINGLEQUOTATIONMARK*/
- /* 240 */ 173,/*SOFTHYPHEN*/
- /* 241 */ 177,/*PLUS-MINUSSIGN*/
- /* 242 */ 8220,/*LEFTDOUBLEQUOTATIONMARK*/
- /* 243 */ 190,/*VULGARFRACTIONTHREEQUARTERS*/
- /* 244 */ 182,/*PILCROWSIGN*/
- /* 245 */ 167,/*SECTIONSIGN*/
- /* 246 */ 247,/*DIVISIONSIGN*/
- /* 247 */ 8222,/*DOUBLELOW-9QUOTATIONMARK*/
- /* 248 */ 176,/*DEGREESIGN*/
- /* 249 */ 8729,/*BULLETOPERATOR*/
- /* 250 */ 183,/*MIDDLEDOT*/
- /* 251 */ 185,/*SUPERSCRIPTONE*/
- /* 252 */ 179,/*SUPERSCRIPTTHREE*/
- /* 253 */ 178,/*SUPERSCRIPTTWO*/
- /* 254 */ 9632,/*BLACKSQUARE*/
- /* 255 */ 160/*NO-BREAKSPACE*/
+static convert_t cp865[] = {
+	{ 0, 0 },
+	{ 1, 1 },
+	{ 2, 2 },
+	{ 3, 3 },
+	{ 4, 4 },
+	{ 5, 5 },
+	{ 6, 6 },
+	{ 7, 7 },
+	{ 8, 8 },
+	{ 9, 9 },
+	{ 10, 10 },
+	{ 11, 11 },
+	{ 12, 12 },
+	{ 13, 13 },
+	{ 14, 14 },
+	{ 15, 15 },
+	{ 16, 16 },
+	{ 17, 17 },
+	{ 18, 18 },
+	{ 19, 19 },
+	{ 20, 20 },
+	{ 21, 21 },
+	{ 22, 22 },
+	{ 23, 23 },
+	{ 24, 24 },
+	{ 25, 25 },
+	{ 26, 26 },
+	{ 27, 27 },
+	{ 28, 28 },
+	{ 29, 29 },
+	{ 30, 30 },
+	{ 31, 31 },
+	{ 32, 32 },
+	{ 33, 33 },
+	{ 34, 34 },
+	{ 35, 35 },
+	{ 36, 36 },
+	{ 37, 37 },
+	{ 38, 38 },
+	{ 39, 39 },
+	{ 40, 40 },
+	{ 41, 41 },
+	{ 42, 42 },
+	{ 43, 43 },
+	{ 44, 44 },
+	{ 45, 45 },
+	{ 46, 46 },
+	{ 47, 47 },
+	{ 48, 48 },
+	{ 49, 49 },
+	{ 50, 50 },
+	{ 51, 51 },
+	{ 52, 52 },
+	{ 53, 53 },
+	{ 54, 54 },
+	{ 55, 55 },
+	{ 56, 56 },
+	{ 57, 57 },
+	{ 58, 58 },
+	{ 59, 59 },
+	{ 60, 60 },
+	{ 61, 61 },
+	{ 62, 62 },
+	{ 63, 63 },
+	{ 64, 64 },
+	{ 65, 65 },
+	{ 66, 66 },
+	{ 67, 67 },
+	{ 68, 68 },
+	{ 69, 69 },
+	{ 70, 70 },
+	{ 71, 71 },
+	{ 72, 72 },
+	{ 73, 73 },
+	{ 74, 74 },
+	{ 75, 75 },
+	{ 76, 76 },
+	{ 77, 77 },
+	{ 78, 78 },
+	{ 79, 79 },
+	{ 80, 80 },
+	{ 81, 81 },
+	{ 82, 82 },
+	{ 83, 83 },
+	{ 84, 84 },
+	{ 85, 85 },
+	{ 86, 86 },
+	{ 87, 87 },
+	{ 88, 88 },
+	{ 89, 89 },
+	{ 90, 90 },
+	{ 91, 91 },
+	{ 92, 92 },
+	{ 93, 93 },
+	{ 94, 94 },
+	{ 95, 95 },
+	{ 96, 96 },
+	{ 97, 97 },
+	{ 98, 98 },
+	{ 99, 99 },
+	{ 100, 100 },
+	{ 101, 101 },
+	{ 102, 102 },
+	{ 103, 103 },
+	{ 104, 104 },
+	{ 105, 105 },
+	{ 106, 106 },
+	{ 107, 107 },
+	{ 108, 108 },
+	{ 109, 109 },
+	{ 110, 110 },
+	{ 111, 111 },
+	{ 112, 112 },
+	{ 113, 113 },
+	{ 114, 114 },
+	{ 115, 115 },
+	{ 116, 116 },
+	{ 117, 117 },
+	{ 118, 118 },
+	{ 119, 119 },
+	{ 120, 120 },
+	{ 121, 121 },
+	{ 122, 122 },
+	{ 123, 123 },
+	{ 124, 124 },
+	{ 125, 125 },
+	{ 126, 126 },
+	{ 127, 127 },
+	{ 128, 199 },
+	{ 129, 252 },
+	{ 130, 233 },
+	{ 131, 226 },
+	{ 132, 228 },
+	{ 133, 224 },
+	{ 134, 229 },
+	{ 135, 231 },
+	{ 136, 234 },
+	{ 137, 235 },
+	{ 138, 232 },
+	{ 139, 239 },
+	{ 140, 238 },
+	{ 141, 236 },
+	{ 142, 196 },
+	{ 143, 197 },
+	{ 144, 201 },
+	{ 145, 230 },
+	{ 146, 198 },
+	{ 147, 244 },
+	{ 148, 246 },
+	{ 149, 242 },
+	{ 150, 251 },
+	{ 151, 249 },
+	{ 152, 255 },
+	{ 153, 214 },
+	{ 154, 220 },
+	{ 155, 248 },
+	{ 156, 163 },
+	{ 157, 216 },
+	{ 158, 8359 },
+	{ 159, 402 },
+	{ 160, 225 },
+	{ 161, 237 },
+	{ 162, 243 },
+	{ 163, 250 },
+	{ 164, 241 },
+	{ 165, 209 },
+	{ 166, 170 },
+	{ 167, 186 },
+	{ 168, 191 },
+	{ 169, 8976 },
+	{ 170, 172 },
+	{ 171, 189 },
+	{ 172, 188 },
+	{ 173, 161 },
+	{ 174, 171 },
+	{ 175, 164 },
+	{ 176, 9617 },
+	{ 177, 9618 },
+	{ 178, 9619 },
+	{ 179, 9474 },
+	{ 180, 9508 },
+	{ 181, 9569 },
+	{ 182, 9570 },
+	{ 183, 9558 },
+	{ 184, 9557 },
+	{ 185, 9571 },
+	{ 186, 9553 },
+	{ 187, 9559 },
+	{ 188, 9565 },
+	{ 189, 9564 },
+	{ 190, 9563 },
+	{ 191, 9488 },
+	{ 192, 9492 },
+	{ 193, 9524 },
+	{ 194, 9516 },
+	{ 195, 9500 },
+	{ 196, 9472 },
+	{ 197, 9532 },
+	{ 198, 9566 },
+	{ 199, 9567 },
+	{ 200, 9562 },
+	{ 201, 9556 },
+	{ 202, 9577 },
+	{ 203, 9574 },
+	{ 204, 9568 },
+	{ 205, 9552 },
+	{ 206, 9580 },
+	{ 207, 9575 },
+	{ 208, 9576 },
+	{ 209, 9572 },
+	{ 210, 9573 },
+	{ 211, 9561 },
+	{ 212, 9560 },
+	{ 213, 9554 },
+	{ 214, 9555 },
+	{ 215, 9579 },
+	{ 216, 9578 },
+	{ 217, 9496 },
+	{ 218, 9484 },
+	{ 219, 9608 },
+	{ 220, 9604 },
+	{ 221, 9612 },
+	{ 222, 9616 },
+	{ 223, 9600 },
+	{ 224, 945 },
+	{ 225, 223 },
+	{ 226, 915 },
+	{ 227, 960 },
+	{ 228, 931 },
+	{ 229, 963 },
+	{ 230, 181 },
+	{ 231, 964 },
+	{ 232, 934 },
+	{ 233, 920 },
+	{ 234, 937 },
+	{ 235, 948 },
+	{ 236, 8734 },
+	{ 237, 966 },
+	{ 238, 949 },
+	{ 239, 8745 },
+	{ 240, 8801 },
+	{ 241, 177 },
+	{ 242, 8805 },
+	{ 243, 8804 },
+	{ 244, 8992 },
+	{ 245, 8993 },
+	{ 246, 247 },
+	{ 247, 8776 },
+	{ 248, 176 },
+	{ 249, 8729 },
+	{ 250, 183 },
+	{ 251, 8730 },
+	{ 252, 8319 },
+	{ 253, 178 },
+	{ 254, 9632 },
+	{ 255, 160 },
+	{ 34, 8220 },
+	{ 34, 8221 },
+	{ 39, 8216 },
+	{ 39, 8217 },
+	{ 45, 8211 },
+	{ 45, 8212 },
+	{ 32, 8194 },
+	{ 32, 8195 },
+	{ 32, 8201 },
+	{ 65, 192 },
+	{ 65, 193 },
+	{ 65, 194 },
+	{ 65, 195 },
+	{ 65, 256 },
+	{ 65, 258 },
+	{ 65, 260 },
+	{ 65, 461 },
+	{ 97, 227 },
+	{ 97, 257 },
+	{ 97, 259 },
+	{ 97, 261 },
+	{ 97, 462 },
+	{ 67, 262 },
+	{ 67, 264 },
+	{ 67, 266 },
+	{ 67, 268 },
+	{ 99, 263 },
+	{ 99, 265 },
+	{ 99, 267 },
+	{ 99, 269 },
+	{ 68, 270 },
+	{ 100, 271 },
+	{ 69, 200 },
+	{ 69, 202 },
+	{ 69, 203 },
+	{ 69, 274 },
+	{ 69, 276 },
+	{ 69, 278 },
+	{ 69, 280 },
+	{ 69, 282 },
+	{ 101, 275 },
+	{ 101, 277 },
+	{ 101, 279 },
+	{ 101, 281 },
+	{ 101, 283 },
+	{ 71, 284 },
+	{ 71, 286 },
+	{ 71, 288 },
+	{ 71, 290 },
+	{ 71, 486 },
+	{ 71, 500 },
+	{ 103, 285 },
+	{ 103, 287 },
+	{ 103, 289 },
+	{ 103, 291 },
+	{ 103, 487 },
+	{ 103, 501 },
+	{ 72, 292 },
+	{ 104, 293 },
+	{ 73, 204 },
+	{ 73, 205 },
+	{ 73, 206 },
+	{ 73, 207 },
+	{ 73, 296 },
+	{ 73, 298 },
+	{ 73, 300 },
+	{ 73, 302 },
+	{ 73, 304 },
+	{ 73, 463 },
+	{ 105, 297 },
+	{ 105, 299 },
+	{ 105, 301 },
+	{ 105, 303 },
+	{ 105, 305 },
+	{ 105, 464 },
+	{ 74, 308 },
+	{ 106, 309 },
+	{ 75, 310 },
+	{ 75, 488 },
+	{ 107, 311 },
+	{ 107, 489 },
+	{ 76, 313 },
+	{ 76, 315 },
+	{ 76, 317 },
+	{ 76, 319 },
+	{ 76, 321 },
+	{ 108, 314 },
+	{ 108, 316 },
+	{ 108, 318 },
+	{ 108, 320 },
+	{ 108, 322 },
+	{ 77, 323 },
+	{ 77, 325 },
+	{ 77, 327 },
+	{ 109, 324 },
+	{ 109, 326 },
+	{ 109, 328 },
+	{ 109, 329 },
+	{ 78, 210 },
+	{ 78, 211 },
+	{ 78, 212 },
+	{ 78, 213 },
+	{ 78, 332 },
+	{ 78, 334 },
+	{ 78, 336 },
+	{ 78, 465 },
+	{ 78, 490 },
+	{ 110, 245 },
+	{ 110, 333 },
+	{ 110, 335 },
+	{ 110, 337 },
+	{ 110, 466 },
+	{ 110, 491 },
+	{ 82, 340 },
+	{ 82, 342 },
+	{ 82, 344 },
+	{ 114, 341 },
+	{ 114, 343 },
+	{ 114, 345 },
+	{ 83, 346 },
+	{ 83, 348 },
+	{ 83, 350 },
+	{ 83, 352 },
+	{ 115, 347 },
+	{ 115, 349 },
+	{ 115, 351 },
+	{ 115, 353 },
+	{ 84, 354 },
+	{ 84, 356 },
+	{ 116, 355 },
+	{ 116, 357 },
+	{ 85, 217 },
+	{ 85, 218 },
+	{ 85, 219 },
+	{ 85, 360 },
+	{ 85, 362 },
+	{ 85, 364 },
+	{ 85, 366 },
+	{ 85, 368 },
+	{ 85, 370 },
+	{ 85, 467 },
+	{ 117, 361 },
+	{ 117, 363 },
+	{ 117, 365 },
+	{ 117, 367 },
+	{ 117, 369 },
+	{ 117, 371 },
+	{ 117, 468 },
+	{ 87, 372 },
+	{ 119, 373 },
+	{ 89, 221 },
+	{ 89, 374 },
+	{ 89, 376 },
+	{ 121, 253 },
+	{ 121, 375 },
+	{ 90, 377 },
+	{ 90, 379 },
+	{ 90, 381 },
+	{ 122, 378 },
+	{ 122, 380 },
+	{ 122, 382 },
 };
-charconvert cp850[] = {
- /* 0 */ 0,/*<tdbgcolor="C0C0C0"><fontface="Arial"color="000000"><b>ISO/IEC10646-1:2000CharacterName</b></font>*/
- 1,
- 2,
- 3,
- 4,
- 5,
- 6,
- 7,
- 8,
- 9,
- 10,
- 11,
- 12,
- 13,
- 14,
- 15,
- 16,
- 17,
- 18,
- 19,
- 20,
- 21,
- 22,
- 23,
- 24,
- 25,
- 26,
- 27,
- 28,
- 29,
- 30,
- 31,
- /* 32 */ 32,/*SPACE*/
- /* 33 */ 33,/*EXCLAMATIONMARK*/
- /* 34 */ 34,/*QUOTATIONMARK*/
- /* 35 */ 35,/*NUMBERSIGN*/
- /* 36 */ 36,/*DOLLARSIGN*/
- /* 37 */ 37,/*PERCENTSIGN*/
- /* 38 */ 38,/*AMPERSAND*/
- /* 39 */ 39,/*APOSTROPHE*/
- /* 40 */ 40,/*LEFTPARENTHESIS*/
- /* 41 */ 41,/*RIGHTPARENTHESIS*/
- /* 42 */ 42,/*ASTERISK*/
- /* 43 */ 43,/*PLUSSIGN*/
- /* 44 */ 44,/*COMMA*/
- /* 45 */ 45,/*HYPHEN-MINUS*/
- /* 46 */ 46,/*FULLSTOP*/
- /* 47 */ 47,/*SOLIDUS*/
- /* 48 */ 48,/*DIGITZERO*/
- /* 49 */ 49,/*DIGITONE*/
- /* 50 */ 50,/*DIGITTWO*/
- /* 51 */ 51,/*DIGITTHREE*/
- /* 52 */ 52,/*DIGITFOUR*/
- /* 53 */ 53,/*DIGITFIVE*/
- /* 54 */ 54,/*DIGITSIX*/
- /* 55 */ 55,/*DIGITSEVEN*/
- /* 56 */ 56,/*DIGITEIGHT*/
- /* 57 */ 57,/*DIGITNINE*/
- /* 58 */ 58,/*COLON*/
- /* 59 */ 59,/*SEMICOLON*/
- /* 60 */ 60,/*LESS-THANSIGN*/
- /* 61 */ 61,/*EQUALSSIGN*/
- /* 62 */ 62,/*GREATER-THANSIGN*/
- /* 63 */ 63,/*QUESTIONMARK*/
- /* 64 */ 64,/*COMMERCIALAT*/
- /* 65 */ 65,/*LATINCAPITALLETTERA*/
- /* 66 */ 66,/*LATINCAPITALLETTERB*/
- /* 67 */ 67,/*LATINCAPITALLETTERC*/
- /* 68 */ 68,/*LATINCAPITALLETTERD*/
- /* 69 */ 69,/*LATINCAPITALLETTERE*/
- /* 70 */ 70,/*LATINCAPITALLETTERF*/
- /* 71 */ 71,/*LATINCAPITALLETTERG*/
- /* 72 */ 72,/*LATINCAPITALLETTERH*/
- /* 73 */ 73,/*LATINCAPITALLETTERI*/
- /* 74 */ 74,/*LATINCAPITALLETTERJ*/
- /* 75 */ 75,/*LATINCAPITALLETTERK*/
- /* 76 */ 76,/*LATINCAPITALLETTERL*/
- /* 77 */ 77,/*LATINCAPITALLETTERM*/
- /* 78 */ 78,/*LATINCAPITALLETTERN*/
- /* 79 */ 79,/*LATINCAPITALLETTERO*/
- /* 80 */ 80,/*LATINCAPITALLETTERP*/
- /* 81 */ 81,/*LATINCAPITALLETTERQ*/
- /* 82 */ 82,/*LATINCAPITALLETTERR*/
- /* 83 */ 83,/*LATINCAPITALLETTERS*/
- /* 84 */ 84,/*LATINCAPITALLETTERT*/
- /* 85 */ 85,/*LATINCAPITALLETTERU*/
- /* 86 */ 86,/*LATINCAPITALLETTERV*/
- /* 87 */ 87,/*LATINCAPITALLETTERW*/
- /* 88 */ 88,/*LATINCAPITALLETTERX*/
- /* 89 */ 89,/*LATINCAPITALLETTERY*/
- /* 90 */ 90,/*LATINCAPITALLETTERZ*/
- /* 91 */ 91,/*LEFTSQUAREBRACKET*/
- /* 92 */ 92,/*REVERSESOLIDUS*/
- /* 93 */ 93,/*RIGHTSQUAREBRACKET*/
- /* 94 */ 94,/*CIRCUMFLEXACCENT*/
- /* 95 */ 95,/*LOWLINE*/
- /* 96 */ 96,/*GRAVEACCENT*/
- /* 97 */ 97,/*LATINSMALLLETTERA*/
- /* 98 */ 98,/*LATINSMALLLETTERB*/
- /* 99 */ 99,/*LATINSMALLLETTERC*/
- /* 100 */ 100,/*LATINSMALLLETTERD*/
- /* 101 */ 101,/*LATINSMALLLETTERE*/
- /* 102 */ 102,/*LATINSMALLLETTERF*/
- /* 103 */ 103,/*LATINSMALLLETTERG*/
- /* 104 */ 104,/*LATINSMALLLETTERH*/
- /* 105 */ 105,/*LATINSMALLLETTERI*/
- /* 106 */ 106,/*LATINSMALLLETTERJ*/
- /* 107 */ 107,/*LATINSMALLLETTERK*/
- /* 108 */ 108,/*LATINSMALLLETTERL*/
- /* 109 */ 109,/*LATINSMALLLETTERM*/
- /* 110 */ 110,/*LATINSMALLLETTERN*/
- /* 111 */ 111,/*LATINSMALLLETTERO*/
- /* 112 */ 112,/*LATINSMALLLETTERP*/
- /* 113 */ 113,/*LATINSMALLLETTERQ*/
- /* 114 */ 114,/*LATINSMALLLETTERR*/
- /* 115 */ 115,/*LATINSMALLLETTERS*/
- /* 116 */ 116,/*LATINSMALLLETTERT*/
- /* 117 */ 117,/*LATINSMALLLETTERU*/
- /* 118 */ 118,/*LATINSMALLLETTERV*/
- /* 119 */ 119,/*LATINSMALLLETTERW*/
- /* 120 */ 120,/*LATINSMALLLETTERX*/
- /* 121 */ 121,/*LATINSMALLLETTERY*/
- /* 122 */ 122,/*LATINSMALLLETTERZ*/
- /* 123 */ 123,/*LEFTCURLYBRACKET*/
- /* 124 */ 124,/*VERTICALLINE*/
- /* 125 */ 125,/*RIGHTCURLYBRACKET*/
- /* 126 */ 126,/*TILDE*/
- 127,
- /* 128 */ 199,/*LATINCAPITALLETTERCWITHCEDILLA*/
- /* 129 */ 252,/*LATINSMALLLETTERUWITHDIAERESIS*/
- /* 130 */ 233,/*LATINSMALLLETTEREWITHACUTE*/
- /* 131 */ 226,/*LATINSMALLLETTERAWITHCIRCUMFLEX*/
- /* 132 */ 228,/*LATINSMALLLETTERAWITHDIAERESIS*/
- /* 133 */ 224,/*LATINSMALLLETTERAWITHGRAVE*/
- /* 134 */ 229,/*LATINSMALLLETTERAWITHRINGABOVE*/
- /* 135 */ 231,/*LATINSMALLLETTERCWITHCEDILLA*/
- /* 136 */ 234,/*LATINSMALLLETTEREWITHCIRCUMFLEX*/
- /* 137 */ 235,/*LATINSMALLLETTEREWITHDIAERESIS*/
- /* 138 */ 232,/*LATINSMALLLETTEREWITHGRAVE*/
- /* 139 */ 239,/*LATINSMALLLETTERIWITHDIAERESIS*/
- /* 140 */ 238,/*LATINSMALLLETTERIWITHCIRCUMFLEX*/
- /* 141 */ 236,/*LATINSMALLLETTERIWITHGRAVE*/
- /* 142 */ 196,/*LATINCAPITALLETTERAWITHDIAERESIS*/
- /* 143 */ 197,/*LATINCAPITALLETTERAWITHRINGABOVE*/
- /* 144 */ 201,/*LATINCAPITALLETTEREWITHACUTE*/
- /* 145 */ 230,/*LATINSMALLLETTERAE*/
- /* 146 */ 198,/*LATINCAPITALLETTERAE*/
- /* 147 */ 244,/*LATINSMALLLETTEROWITHCIRCUMFLEX*/
- /* 148 */ 246,/*LATINSMALLLETTEROWITHDIAERESIS*/
- /* 149 */ 242,/*LATINSMALLLETTEROWITHGRAVE*/
- /* 150 */ 251,/*LATINSMALLLETTERUWITHCIRCUMFLEX*/
- /* 151 */ 249,/*LATINSMALLLETTERUWITHGRAVE*/
- /* 152 */ 255,/*LATINSMALLLETTERYWITHDIAERESIS*/
- /* 153 */ 214,/*LATINCAPITALLETTEROWITHDIAERESIS*/
- /* 154 */ 220,/*LATINCAPITALLETTERUWITHDIAERESIS*/
- /* 155 */ 248,/*LATINSMALLLETTEROWITHSTROKE*/
- /* 156 */ 163,/*POUNDSIGN*/
- /* 157 */ 216,/*LATINCAPITALLETTEROWITHSTROKE*/
- /* 158 */ 215,/*MULTIPLICATIONSIGN*/
- /* 159 */ 402,/*LATINSMALLLETTERFWITHHOOK*/
- /* 160 */ 225,/*LATINSMALLLETTERAWITHACUTE*/
- /* 161 */ 237,/*LATINSMALLLETTERIWITHACUTE*/
- /* 162 */ 243,/*LATINSMALLLETTEROWITHACUTE*/
- /* 163 */ 250,/*LATINSMALLLETTERUWITHACUTE*/
- /* 164 */ 241,/*LATINSMALLLETTERNWITHTILDE*/
- /* 165 */ 209,/*LATINCAPITALLETTERNWITHTILDE*/
- /* 166 */ 170,/*FEMININEORDINALINDICATOR*/
- /* 167 */ 186,/*MASCULINEORDINALINDICATOR*/
- /* 168 */ 191,/*INVERTEDQUESTIONMARK*/
- /* 169 */ 174,/*REGISTEREDSIGN*/
- /* 170 */ 172,/*NOTSIGN*/
- /* 171 */ 189,/*VULGARFRACTIONONEHALF*/
- /* 172 */ 188,/*VULGARFRACTIONONEQUARTER*/
- /* 173 */ 161,/*INVERTEDEXCLAMATIONMARK*/
- /* 174 */ 171,/*LEFT-POINTINGDOUBLEANGLEQUOTATIONMARK*/
- /* 175 */ 187,/*RIGHT-POINTINGDOUBLEANGLEQUOTATIONMARK*/
- /* 176 */ 9617,/*LIGHTSHADE*/
- /* 177 */ 9618,/*MEDIUMSHADE*/
- /* 178 */ 9619,/*DARKSHADE*/
- /* 179 */ 9474,/*BOXDRAWINGSLIGHTVERTICAL*/
- /* 180 */ 9508,/*BOXDRAWINGSLIGHTVERTICALANDLEFT*/
- /* 181 */ 193,/*LATINCAPITALLETTERAWITHACUTE*/
- /* 182 */ 194,/*LATINCAPITALLETTERAWITHCIRCUMFLEX*/
- /* 183 */ 192,/*LATINCAPITALLETTERAWITHGRAVE*/
- /* 184 */ 169,/*COPYRIGHTSIGN*/
- /* 185 */ 9571,/*BOXDRAWINGSDOUBLEVERTICALANDLEFT*/
- /* 186 */ 9553,/*BOXDRAWINGSDOUBLEVERTICAL*/
- /* 187 */ 9559,/*BOXDRAWINGSDOUBLEDOWNANDLEFT*/
- /* 188 */ 9565,/*BOXDRAWINGSDOUBLEUPANDLEFT*/
- /* 189 */ 162,/*CENTSIGN*/
- /* 190 */ 165,/*YENSIGN*/
- /* 191 */ 9488,/*BOXDRAWINGSLIGHTDOWNANDLEFT*/
- /* 192 */ 9492,/*BOXDRAWINGSLIGHTUPANDRIGHT*/
- /* 193 */ 9524,/*BOXDRAWINGSLIGHTUPANDHORIZONTAL*/
- /* 194 */ 9516,/*BOXDRAWINGSLIGHTDOWNANDHORIZONTAL*/
- /* 195 */ 9500,/*BOXDRAWINGSLIGHTVERTICALANDRIGHT*/
- /* 196 */ 9472,/*BOXDRAWINGSLIGHTHORIZONTAL*/
- /* 197 */ 9532,/*BOXDRAWINGSLIGHTVERTICALANDHORIZONTAL*/
- /* 198 */ 227,/*LATINSMALLLETTERAWITHTILDE*/
- /* 199 */ 195,/*LATINCAPITALLETTERAWITHTILDE*/
- /* 200 */ 9562,/*BOXDRAWINGSDOUBLEUPANDRIGHT*/
- /* 201 */ 9556,/*BOXDRAWINGSDOUBLEDOWNANDRIGHT*/
- /* 202 */ 9577,/*BOXDRAWINGSDOUBLEUPANDHORIZONTAL*/
- /* 203 */ 9574,/*BOXDRAWINGSDOUBLEDOWNANDHORIZONTAL*/
- /* 204 */ 9568,/*BOXDRAWINGSDOUBLEVERTICALANDRIGHT*/
- /* 205 */ 9552,/*BOXDRAWINGSDOUBLEHORIZONTAL*/
- /* 206 */ 9580,/*BOXDRAWINGSDOUBLEVERTICALANDHORIZONTAL*/
- /* 207 */ 164,/*CURRENCYSIGN*/
- /* 208 */ 240,/*LATINSMALLLETTERETH*/
- /* 209 */ 208,/*LATINCAPITALLETTERETH*/
- /* 210 */ 202,/*LATINCAPITALLETTEREWITHCIRCUMFLEX*/
- /* 211 */ 203,/*LATINCAPITALLETTEREWITHDIAERESIS*/
- /* 212 */ 200,/*LATINCAPITALLETTEREWITHGRAVE*/
- /* 213 */ 305,/*LATINSMALLLETTERDOTLESSI*/
- /* 214 */ 205,/*LATINCAPITALLETTERIWITHACUTE*/
- /* 215 */ 206,/*LATINCAPITALLETTERIWITHCIRCUMFLEX*/
- /* 216 */ 207,/*LATINCAPITALLETTERIWITHDIAERESIS*/
- /* 217 */ 9496,/*BOXDRAWINGSLIGHTUPANDLEFT*/
- /* 218 */ 9484,/*BOXDRAWINGSLIGHTDOWNANDRIGHT*/
- /* 219 */ 9608,/*FULLBLOCK*/
- /* 220 */ 9604,/*LOWERHALFBLOCK*/
- /* 221 */ 166,/*BROKENBAR*/
- /* 222 */ 204,/*LATINCAPITALLETTERIWITHGRAVE*/
- /* 223 */ 9600,/*UPPERHALFBLOCK*/
- /* 224 */ 211,/*LATINCAPITALLETTEROWITHACUTE*/
- /* 225 */ 223,/*LATINSMALLLETTERSHARPS*/
- /* 226 */ 212,/*LATINCAPITALLETTEROWITHCIRCUMFLEX*/
- /* 227 */ 210,/*LATINCAPITALLETTEROWITHGRAVE*/
- /* 228 */ 245,/*LATINSMALLLETTEROWITHTILDE*/
- /* 229 */ 213,/*LATINCAPITALLETTEROWITHTILDE*/
- /* 230 */ 181,/*MICROSIGN*/
- /* 231 */ 254,/*LATINSMALLLETTERTHORN*/
- /* 232 */ 222,/*LATINCAPITALLETTERTHORN*/
- /* 233 */ 218,/*LATINCAPITALLETTERUWITHACUTE*/
- /* 234 */ 219,/*LATINCAPITALLETTERUWITHCIRCUMFLEX*/
- /* 235 */ 217,/*LATINCAPITALLETTERUWITHGRAVE*/
- /* 236 */ 253,/*LATINSMALLLETTERYWITHACUTE*/
- /* 237 */ 221,/*LATINCAPITALLETTERYWITHACUTE*/
- /* 238 */ 175,/*MACRON*/
- /* 239 */ 180,/*ACUTEACCENT*/
- /* 240 */ 173,/*SOFTHYPHEN*/
- /* 241 */ 177,/*PLUS-MINUSSIGN*/
- /* 242 */ 8215,/*DOUBLELOWLINE*/
- /* 243 */ 190,/*VULGARFRACTIONTHREEQUARTERS*/
- /* 244 */ 182,/*PILCROWSIGN*/
- /* 245 */ 167,/*SECTIONSIGN*/
- /* 246 */ 247,/*DIVISIONSIGN*/
- /* 247 */ 184,/*CEDILLA*/
- /* 248 */ 176,/*DEGREESIGN*/
- /* 249 */ 168,/*DIAERESIS*/
- /* 250 */ 183,/*MIDDLEDOT*/
- /* 251 */ 185,/*SUPERSCRIPTONE*/
- /* 252 */ 179,/*SUPERSCRIPTTHREE*/
- /* 253 */ 178,/*SUPERSCRIPTTWO*/
- /* 254 */ 9632,/*BLACKSQUARE*/
- /* 255 */ 160/*NO-BREAKSPACE*/
+static convert_t cp866[] = {
+	{ 0, 0 },
+	{ 1, 1 },
+	{ 2, 2 },
+	{ 3, 3 },
+	{ 4, 4 },
+	{ 5, 5 },
+	{ 6, 6 },
+	{ 7, 7 },
+	{ 8, 8 },
+	{ 9, 9 },
+	{ 10, 10 },
+	{ 11, 11 },
+	{ 12, 12 },
+	{ 13, 13 },
+	{ 14, 14 },
+	{ 15, 15 },
+	{ 16, 16 },
+	{ 17, 17 },
+	{ 18, 18 },
+	{ 19, 19 },
+	{ 20, 20 },
+	{ 21, 21 },
+	{ 22, 22 },
+	{ 23, 23 },
+	{ 24, 24 },
+	{ 25, 25 },
+	{ 26, 26 },
+	{ 27, 27 },
+	{ 28, 28 },
+	{ 29, 29 },
+	{ 30, 30 },
+	{ 31, 31 },
+	{ 32, 32 },
+	{ 33, 33 },
+	{ 34, 34 },
+	{ 35, 35 },
+	{ 36, 36 },
+	{ 37, 37 },
+	{ 38, 38 },
+	{ 39, 39 },
+	{ 40, 40 },
+	{ 41, 41 },
+	{ 42, 42 },
+	{ 43, 43 },
+	{ 44, 44 },
+	{ 45, 45 },
+	{ 46, 46 },
+	{ 47, 47 },
+	{ 48, 48 },
+	{ 49, 49 },
+	{ 50, 50 },
+	{ 51, 51 },
+	{ 52, 52 },
+	{ 53, 53 },
+	{ 54, 54 },
+	{ 55, 55 },
+	{ 56, 56 },
+	{ 57, 57 },
+	{ 58, 58 },
+	{ 59, 59 },
+	{ 60, 60 },
+	{ 61, 61 },
+	{ 62, 62 },
+	{ 63, 63 },
+	{ 64, 64 },
+	{ 65, 65 },
+	{ 66, 66 },
+	{ 67, 67 },
+	{ 68, 68 },
+	{ 69, 69 },
+	{ 70, 70 },
+	{ 71, 71 },
+	{ 72, 72 },
+	{ 73, 73 },
+	{ 74, 74 },
+	{ 75, 75 },
+	{ 76, 76 },
+	{ 77, 77 },
+	{ 78, 78 },
+	{ 79, 79 },
+	{ 80, 80 },
+	{ 81, 81 },
+	{ 82, 82 },
+	{ 83, 83 },
+	{ 84, 84 },
+	{ 85, 85 },
+	{ 86, 86 },
+	{ 87, 87 },
+	{ 88, 88 },
+	{ 89, 89 },
+	{ 90, 90 },
+	{ 91, 91 },
+	{ 92, 92 },
+	{ 93, 93 },
+	{ 94, 94 },
+	{ 95, 95 },
+	{ 96, 96 },
+	{ 97, 97 },
+	{ 98, 98 },
+	{ 99, 99 },
+	{ 100, 100 },
+	{ 101, 101 },
+	{ 102, 102 },
+	{ 103, 103 },
+	{ 104, 104 },
+	{ 105, 105 },
+	{ 106, 106 },
+	{ 107, 107 },
+	{ 108, 108 },
+	{ 109, 109 },
+	{ 110, 110 },
+	{ 111, 111 },
+	{ 112, 112 },
+	{ 113, 113 },
+	{ 114, 114 },
+	{ 115, 115 },
+	{ 116, 116 },
+	{ 117, 117 },
+	{ 118, 118 },
+	{ 119, 119 },
+	{ 120, 120 },
+	{ 121, 121 },
+	{ 122, 122 },
+	{ 123, 123 },
+	{ 124, 124 },
+	{ 125, 125 },
+	{ 126, 126 },
+	{ 127, 127 },
+	{ 128, 1040 },
+	{ 129, 1041 },
+	{ 130, 1042 },
+	{ 131, 1043 },
+	{ 132, 1044 },
+	{ 133, 1045 },
+	{ 134, 1046 },
+	{ 135, 1047 },
+	{ 136, 1048 },
+	{ 137, 1049 },
+	{ 138, 1050 },
+	{ 139, 1051 },
+	{ 140, 1052 },
+	{ 141, 1053 },
+	{ 142, 1054 },
+	{ 143, 1055 },
+	{ 144, 1056 },
+	{ 145, 1057 },
+	{ 146, 1058 },
+	{ 147, 1059 },
+	{ 148, 1060 },
+	{ 149, 1061 },
+	{ 150, 1062 },
+	{ 151, 1063 },
+	{ 152, 1064 },
+	{ 153, 1065 },
+	{ 154, 1066 },
+	{ 155, 1067 },
+	{ 156, 1068 },
+	{ 157, 1069 },
+	{ 158, 1070 },
+	{ 159, 1071 },
+	{ 160, 1072 },
+	{ 161, 1073 },
+	{ 162, 1074 },
+	{ 163, 1075 },
+	{ 164, 1076 },
+	{ 165, 1077 },
+	{ 166, 1078 },
+	{ 167, 1079 },
+	{ 168, 1080 },
+	{ 169, 1081 },
+	{ 170, 1082 },
+	{ 171, 1083 },
+	{ 172, 1084 },
+	{ 173, 1085 },
+	{ 174, 1086 },
+	{ 175, 1087 },
+	{ 176, 9617 },
+	{ 177, 9618 },
+	{ 178, 9619 },
+	{ 179, 9474 },
+	{ 180, 9508 },
+	{ 181, 9569 },
+	{ 182, 9570 },
+	{ 183, 9558 },
+	{ 184, 9557 },
+	{ 185, 9571 },
+	{ 186, 9553 },
+	{ 187, 9559 },
+	{ 188, 9565 },
+	{ 189, 9564 },
+	{ 190, 9563 },
+	{ 191, 9488 },
+	{ 192, 9492 },
+	{ 193, 9524 },
+	{ 194, 9516 },
+	{ 195, 9500 },
+	{ 196, 9472 },
+	{ 197, 9532 },
+	{ 198, 9566 },
+	{ 199, 9567 },
+	{ 200, 9562 },
+	{ 201, 9556 },
+	{ 202, 9577 },
+	{ 203, 9574 },
+	{ 204, 9568 },
+	{ 205, 9552 },
+	{ 206, 9580 },
+	{ 207, 9575 },
+	{ 208, 9576 },
+	{ 209, 9572 },
+	{ 210, 9573 },
+	{ 211, 9561 },
+	{ 212, 9560 },
+	{ 213, 9554 },
+	{ 214, 9555 },
+	{ 215, 9579 },
+	{ 216, 9578 },
+	{ 217, 9496 },
+	{ 218, 9484 },
+	{ 219, 9608 },
+	{ 220, 9604 },
+	{ 221, 9612 },
+	{ 222, 9616 },
+	{ 223, 9600 },
+	{ 224, 1088 },
+	{ 225, 1089 },
+	{ 226, 1090 },
+	{ 227, 1091 },
+	{ 228, 1092 },
+	{ 229, 1093 },
+	{ 230, 1094 },
+	{ 231, 1095 },
+	{ 232, 1096 },
+	{ 233, 1097 },
+	{ 234, 1098 },
+	{ 235, 1099 },
+	{ 236, 1100 },
+	{ 237, 1101 },
+	{ 238, 1102 },
+	{ 239, 1103 },
+	{ 240, 1025 },
+	{ 241, 1105 },
+	{ 242, 1028 },
+	{ 243, 1108 },
+	{ 244, 1031 },
+	{ 245, 1111 },
+	{ 246, 1038 },
+	{ 247, 1118 },
+	{ 248, 176 },
+	{ 249, 8729 },
+	{ 250, 183 },
+	{ 251, 8730 },
+	{ 252, 8470 },
+	{ 253, 164 },
+	{ 254, 9632 },
+	{ 255, 160 },
+	{ 34, 8220 },
+	{ 34, 8221 },
+	{ 39, 8216 },
+	{ 39, 8217 },
+	{ 45, 8211 },
+	{ 45, 8212 },
+	{ 32, 8194 },
+	{ 32, 8195 },
+	{ 32, 8201 },
+	{ 65, 192 },
+	{ 65, 193 },
+	{ 65, 194 },
+	{ 65, 195 },
+	{ 65, 196 },
+	{ 65, 197 },
+	{ 65, 256 },
+	{ 65, 258 },
+	{ 65, 260 },
+	{ 65, 461 },
+	{ 97, 224 },
+	{ 97, 225 },
+	{ 97, 226 },
+	{ 97, 227 },
+	{ 97, 228 },
+	{ 97, 229 },
+	{ 97, 257 },
+	{ 97, 259 },
+	{ 97, 261 },
+	{ 97, 462 },
+	{ 67, 199 },
+	{ 67, 262 },
+	{ 67, 264 },
+	{ 67, 266 },
+	{ 67, 268 },
+	{ 99, 231 },
+	{ 99, 263 },
+	{ 99, 265 },
+	{ 99, 267 },
+	{ 99, 269 },
+	{ 68, 270 },
+	{ 100, 271 },
+	{ 69, 200 },
+	{ 69, 201 },
+	{ 69, 202 },
+	{ 69, 203 },
+	{ 69, 274 },
+	{ 69, 276 },
+	{ 69, 278 },
+	{ 69, 280 },
+	{ 69, 282 },
+	{ 101, 232 },
+	{ 101, 233 },
+	{ 101, 234 },
+	{ 101, 235 },
+	{ 101, 275 },
+	{ 101, 277 },
+	{ 101, 279 },
+	{ 101, 281 },
+	{ 101, 283 },
+	{ 71, 284 },
+	{ 71, 286 },
+	{ 71, 288 },
+	{ 71, 290 },
+	{ 71, 486 },
+	{ 71, 500 },
+	{ 103, 285 },
+	{ 103, 287 },
+	{ 103, 289 },
+	{ 103, 291 },
+	{ 103, 487 },
+	{ 103, 501 },
+	{ 72, 292 },
+	{ 104, 293 },
+	{ 73, 204 },
+	{ 73, 205 },
+	{ 73, 206 },
+	{ 73, 207 },
+	{ 73, 296 },
+	{ 73, 298 },
+	{ 73, 300 },
+	{ 73, 302 },
+	{ 73, 304 },
+	{ 73, 463 },
+	{ 105, 236 },
+	{ 105, 237 },
+	{ 105, 238 },
+	{ 105, 239 },
+	{ 105, 297 },
+	{ 105, 299 },
+	{ 105, 301 },
+	{ 105, 303 },
+	{ 105, 305 },
+	{ 105, 464 },
+	{ 74, 308 },
+	{ 106, 309 },
+	{ 75, 310 },
+	{ 75, 488 },
+	{ 107, 311 },
+	{ 107, 489 },
+	{ 76, 313 },
+	{ 76, 315 },
+	{ 76, 317 },
+	{ 76, 319 },
+	{ 76, 321 },
+	{ 108, 314 },
+	{ 108, 316 },
+	{ 108, 318 },
+	{ 108, 320 },
+	{ 108, 322 },
+	{ 77, 209 },
+	{ 77, 323 },
+	{ 77, 325 },
+	{ 77, 327 },
+	{ 109, 241 },
+	{ 109, 324 },
+	{ 109, 326 },
+	{ 109, 328 },
+	{ 109, 329 },
+	{ 78, 210 },
+	{ 78, 211 },
+	{ 78, 212 },
+	{ 78, 213 },
+	{ 78, 214 },
+	{ 78, 216 },
+	{ 78, 332 },
+	{ 78, 334 },
+	{ 78, 336 },
+	{ 78, 465 },
+	{ 78, 490 },
+	{ 110, 242 },
+	{ 110, 243 },
+	{ 110, 244 },
+	{ 110, 245 },
+	{ 110, 246 },
+	{ 110, 248 },
+	{ 110, 333 },
+	{ 110, 335 },
+	{ 110, 337 },
+	{ 110, 466 },
+	{ 110, 491 },
+	{ 82, 340 },
+	{ 82, 342 },
+	{ 82, 344 },
+	{ 114, 341 },
+	{ 114, 343 },
+	{ 114, 345 },
+	{ 83, 346 },
+	{ 83, 348 },
+	{ 83, 350 },
+	{ 83, 352 },
+	{ 115, 347 },
+	{ 115, 349 },
+	{ 115, 351 },
+	{ 115, 353 },
+	{ 84, 354 },
+	{ 84, 356 },
+	{ 116, 355 },
+	{ 116, 357 },
+	{ 85, 217 },
+	{ 85, 218 },
+	{ 85, 219 },
+	{ 85, 220 },
+	{ 85, 360 },
+	{ 85, 362 },
+	{ 85, 364 },
+	{ 85, 366 },
+	{ 85, 368 },
+	{ 85, 370 },
+	{ 85, 467 },
+	{ 117, 249 },
+	{ 117, 250 },
+	{ 117, 251 },
+	{ 117, 252 },
+	{ 117, 361 },
+	{ 117, 363 },
+	{ 117, 365 },
+	{ 117, 367 },
+	{ 117, 369 },
+	{ 117, 371 },
+	{ 117, 468 },
+	{ 87, 372 },
+	{ 119, 373 },
+	{ 89, 221 },
+	{ 89, 374 },
+	{ 89, 376 },
+	{ 121, 253 },
+	{ 121, 255 },
+	{ 121, 375 },
+	{ 90, 377 },
+	{ 90, 379 },
+	{ 90, 381 },
+	{ 122, 378 },
+	{ 122, 380 },
+	{ 122, 382 },
 };
-charconvert cp851[] = {
- /* 0 */ 0,/*<tdbgcolor="C0C0C0"><fontface="Arial"color="000000"><b>ISO/IEC10646-1:2000CharacterName</b></font>*/
- 1,
- 2,
- 3,
- 4,
- 5,
- 6,
- 7,
- 8,
- 9,
- 10,
- 11,
- 12,
- 13,
- 14,
- 15,
- 16,
- 17,
- 18,
- 19,
- 20,
- 21,
- 22,
- 23,
- 24,
- 25,
- 26,
- 27,
- 28,
- 29,
- 30,
- 31,
- /* 32 */ 32,/*SPACE*/
- /* 33 */ 33,/*EXCLAMATIONMARK*/
- /* 34 */ 34,/*QUOTATIONMARK*/
- /* 35 */ 35,/*NUMBERSIGN*/
- /* 36 */ 36,/*DOLLARSIGN*/
- /* 37 */ 37,/*PERCENTSIGN*/
- /* 38 */ 38,/*AMPERSAND*/
- /* 39 */ 39,/*APOSTROPHE*/
- /* 40 */ 40,/*LEFTPARENTHESIS*/
- /* 41 */ 41,/*RIGHTPARENTHESIS*/
- /* 42 */ 42,/*ASTERISK*/
- /* 43 */ 43,/*PLUSSIGN*/
- /* 44 */ 44,/*COMMA*/
- /* 45 */ 45,/*HYPHEN-MINUS*/
- /* 46 */ 46,/*FULLSTOP*/
- /* 47 */ 47,/*SOLIDUS*/
- /* 48 */ 48,/*DIGITZERO*/
- /* 49 */ 49,/*DIGITONE*/
- /* 50 */ 50,/*DIGITTWO*/
- /* 51 */ 51,/*DIGITTHREE*/
- /* 52 */ 52,/*DIGITFOUR*/
- /* 53 */ 53,/*DIGITFIVE*/
- /* 54 */ 54,/*DIGITSIX*/
- /* 55 */ 55,/*DIGITSEVEN*/
- /* 56 */ 56,/*DIGITEIGHT*/
- /* 57 */ 57,/*DIGITNINE*/
- /* 58 */ 58,/*COLON*/
- /* 59 */ 59,/*SEMICOLON*/
- /* 60 */ 60,/*LESS-THANSIGN*/
- /* 61 */ 61,/*EQUALSSIGN*/
- /* 62 */ 62,/*GREATER-THANSIGN*/
- /* 63 */ 63,/*QUESTIONMARK*/
- /* 64 */ 64,/*COMMERCIALAT*/
- /* 65 */ 65,/*LATINCAPITALLETTERA*/
- /* 66 */ 66,/*LATINCAPITALLETTERB*/
- /* 67 */ 67,/*LATINCAPITALLETTERC*/
- /* 68 */ 68,/*LATINCAPITALLETTERD*/
- /* 69 */ 69,/*LATINCAPITALLETTERE*/
- /* 70 */ 70,/*LATINCAPITALLETTERF*/
- /* 71 */ 71,/*LATINCAPITALLETTERG*/
- /* 72 */ 72,/*LATINCAPITALLETTERH*/
- /* 73 */ 73,/*LATINCAPITALLETTERI*/
- /* 74 */ 74,/*LATINCAPITALLETTERJ*/
- /* 75 */ 75,/*LATINCAPITALLETTERK*/
- /* 76 */ 76,/*LATINCAPITALLETTERL*/
- /* 77 */ 77,/*LATINCAPITALLETTERM*/
- /* 78 */ 78,/*LATINCAPITALLETTERN*/
- /* 79 */ 79,/*LATINCAPITALLETTERO*/
- /* 80 */ 80,/*LATINCAPITALLETTERP*/
- /* 81 */ 81,/*LATINCAPITALLETTERQ*/
- /* 82 */ 82,/*LATINCAPITALLETTERR*/
- /* 83 */ 83,/*LATINCAPITALLETTERS*/
- /* 84 */ 84,/*LATINCAPITALLETTERT*/
- /* 85 */ 85,/*LATINCAPITALLETTERU*/
- /* 86 */ 86,/*LATINCAPITALLETTERV*/
- /* 87 */ 87,/*LATINCAPITALLETTERW*/
- /* 88 */ 88,/*LATINCAPITALLETTERX*/
- /* 89 */ 89,/*LATINCAPITALLETTERY*/
- /* 90 */ 90,/*LATINCAPITALLETTERZ*/
- /* 91 */ 91,/*LEFTSQUAREBRACKET*/
- /* 92 */ 92,/*REVERSESOLIDUS*/
- /* 93 */ 93,/*RIGHTSQUAREBRACKET*/
- /* 94 */ 94,/*CIRCUMFLEXACCENT*/
- /* 95 */ 95,/*LOWLINE*/
- /* 96 */ 96,/*GRAVEACCENT*/
- /* 97 */ 97,/*LATINSMALLLETTERA*/
- /* 98 */ 98,/*LATINSMALLLETTERB*/
- /* 99 */ 99,/*LATINSMALLLETTERC*/
- /* 100 */ 100,/*LATINSMALLLETTERD*/
- /* 101 */ 101,/*LATINSMALLLETTERE*/
- /* 102 */ 102,/*LATINSMALLLETTERF*/
- /* 103 */ 103,/*LATINSMALLLETTERG*/
- /* 104 */ 104,/*LATINSMALLLETTERH*/
- /* 105 */ 105,/*LATINSMALLLETTERI*/
- /* 106 */ 106,/*LATINSMALLLETTERJ*/
- /* 107 */ 107,/*LATINSMALLLETTERK*/
- /* 108 */ 108,/*LATINSMALLLETTERL*/
- /* 109 */ 109,/*LATINSMALLLETTERM*/
- /* 110 */ 110,/*LATINSMALLLETTERN*/
- /* 111 */ 111,/*LATINSMALLLETTERO*/
- /* 112 */ 112,/*LATINSMALLLETTERP*/
- /* 113 */ 113,/*LATINSMALLLETTERQ*/
- /* 114 */ 114,/*LATINSMALLLETTERR*/
- /* 115 */ 115,/*LATINSMALLLETTERS*/
- /* 116 */ 116,/*LATINSMALLLETTERT*/
- /* 117 */ 117,/*LATINSMALLLETTERU*/
- /* 118 */ 118,/*LATINSMALLLETTERV*/
- /* 119 */ 119,/*LATINSMALLLETTERW*/
- /* 120 */ 120,/*LATINSMALLLETTERX*/
- /* 121 */ 121,/*LATINSMALLLETTERY*/
- /* 122 */ 122,/*LATINSMALLLETTERZ*/
- /* 123 */ 123,/*LEFTCURLYBRACKET*/
- /* 124 */ 124,/*VERTICALLINE*/
- /* 125 */ 125,/*RIGHTCURLYBRACKET*/
- /* 126 */ 126,/*TILDE*/
- 127,
- /* 128 */ 199,/*LATINCAPITALLETTERCWITHCEDILLA*/
- /* 129 */ 252,/*LATINSMALLLETTERUWITHDIAERESIS*/
- /* 130 */ 233,/*LATINSMALLLETTEREWITHACUTE*/
- /* 131 */ 226,/*LATINSMALLLETTERAWITHCIRCUMFLEX*/
- /* 132 */ 228,/*LATINSMALLLETTERAWITHDIAERESIS*/
- /* 133 */ 224,/*LATINSMALLLETTERAWITHGRAVE*/
- /* 134 */ 902,/*GREEKCAPITALLETTERALPHAWITHTONOS*/
- /* 135 */ 231,/*LATINSMALLLETTERCWITHCEDILLA*/
- /* 136 */ 234,/*LATINSMALLLETTEREWITHCIRCUMFLEX*/
- /* 137 */ 235,/*LATINSMALLLETTEREWITHDIAERESIS*/
- /* 138 */ 232,/*LATINSMALLLETTEREWITHGRAVE*/
- /* 139 */ 239,/*LATINSMALLLETTERIWITHDIAERESIS*/
- /* 140 */ 238,/*LATINSMALLLETTERIWITHCIRCUMFLEX*/
- /* 141 */ 904,/*GREEKCAPITALLETTEREPSILONWITHTONOS*/
- /* 142 */ 196,/*LATINCAPITALLETTERAWITHDIAERESIS*/
- /* 143 */ 905,/*GREEKCAPITALLETTERETAWITHTONOS*/
- /* 144 */ 906,/*GREEKCAPITALLETTERIOTAWITHTONOS*/
- 145,
- /* 146 */ 908,/*GREEKCAPITALLETTEROMICRONWITHTONOS*/
- /* 147 */ 244,/*LATINSMALLLETTEROWITHCIRCUMFLEX*/
- /* 148 */ 246,/*LATINSMALLLETTEROWITHDIAERESIS*/
- /* 149 */ 910,/*GREEKCAPITALLETTERUPSILONWITHTONOS*/
- /* 150 */ 251,/*LATINSMALLLETTERUWITHCIRCUMFLEX*/
- /* 151 */ 249,/*LATINSMALLLETTERUWITHGRAVE*/
- /* 152 */ 911,/*GREEKCAPITALLETTEROMEGAWITHTONOS*/
- /* 153 */ 214,/*LATINCAPITALLETTEROWITHDIAERESIS*/
- /* 154 */ 220,/*LATINCAPITALLETTERUWITHDIAERESIS*/
- /* 155 */ 940,/*GREEKSMALLLETTERALPHAWITHTONOS*/
- /* 156 */ 163,/*POUNDSIGN*/
- /* 157 */ 941,/*GREEKSMALLLETTEREPSILONWITHTONOS*/
- /* 158 */ 942,/*GREEKSMALLLETTERETAWITHTONOS*/
- /* 159 */ 943,/*GREEKSMALLLETTERIOTAWITHTONOS*/
- /* 160 */ 970,/*GREEKSMALLLETTERIOTAWITHDIALYTIKA*/
- /* 161 */ 912,/*GREEKSMALLLETTERIOTAWITHDIALYTIKAANDTONOS*/
- /* 162 */ 972,/*GREEKSMALLLETTEROMICRONWITHTONOS*/
- /* 163 */ 973,/*GREEKSMALLLETTERUPSILONWITHTONOS*/
- /* 164 */ 913,/*GREEKCAPITALLETTERALPHA*/
- /* 165 */ 914,/*GREEKCAPITALLETTERBETA*/
- /* 166 */ 915,/*GREEKCAPITALLETTERGAMMA*/
- /* 167 */ 916,/*GREEKCAPITALLETTERDELTA*/
- /* 168 */ 917,/*GREEKCAPITALLETTEREPSILON*/
- /* 169 */ 918,/*GREEKCAPITALLETTERZETA*/
- /* 170 */ 919,/*GREEKCAPITALLETTERETA*/
- /* 171 */ 189,/*VULGARFRACTIONONEHALF*/
- /* 172 */ 920,/*GREEKCAPITALLETTERTHETA*/
- /* 173 */ 921,/*GREEKCAPITALLETTERIOTA*/
- /* 174 */ 171,/*LEFT-POINTINGDOUBLEANGLEQUOTATIONMARK*/
- /* 175 */ 187,/*RIGHT-POINTINGDOUBLEANGLEQUOTATIONMARK*/
- /* 176 */ 9617,/*LIGHTSHADE*/
- /* 177 */ 9618,/*MEDIUMSHADE*/
- /* 178 */ 9619,/*DARKSHADE*/
- /* 179 */ 9474,/*BOXDRAWINGSLIGHTVERTICAL*/
- /* 180 */ 9508,/*BOXDRAWINGSLIGHTVERTICALANDLEFT*/
- /* 181 */ 922,/*GREEKCAPITALLETTERKAPPA*/
- /* 182 */ 923,/*GREEKCAPITALLETTERLAMDA*/
- /* 183 */ 924,/*GREEKCAPITALLETTERMU*/
- /* 184 */ 925,/*GREEKCAPITALLETTERNU*/
- /* 185 */ 9571,/*BOXDRAWINGSDOUBLEVERTICALANDLEFT*/
- /* 186 */ 9553,/*BOXDRAWINGSDOUBLEVERTICAL*/
- /* 187 */ 9559,/*BOXDRAWINGSDOUBLEDOWNANDLEFT*/
- /* 188 */ 9565,/*BOXDRAWINGSDOUBLEUPANDLEFT*/
- /* 189 */ 926,/*GREEKCAPITALLETTERXI*/
- /* 190 */ 927,/*GREEKCAPITALLETTEROMICRON*/
- /* 191 */ 9488,/*BOXDRAWINGSLIGHTDOWNANDLEFT*/
- /* 192 */ 9492,/*BOXDRAWINGSLIGHTUPANDRIGHT*/
- /* 193 */ 9524,/*BOXDRAWINGSLIGHTUPANDHORIZONTAL*/
- /* 194 */ 9516,/*BOXDRAWINGSLIGHTDOWNANDHORIZONTAL*/
- /* 195 */ 9500,/*BOXDRAWINGSLIGHTVERTICALANDRIGHT*/
- /* 196 */ 9472,/*BOXDRAWINGSLIGHTHORIZONTAL*/
- /* 197 */ 9532,/*BOXDRAWINGSLIGHTVERTICALANDHORIZONTAL*/
- /* 198 */ 928,/*GREEKCAPITALLETTERPI*/
- /* 199 */ 929,/*GREEKCAPITALLETTERRHO*/
- /* 200 */ 9562,/*BOXDRAWINGSDOUBLEUPANDRIGHT*/
- /* 201 */ 9556,/*BOXDRAWINGSDOUBLEDOWNANDRIGHT*/
- /* 202 */ 9577,/*BOXDRAWINGSDOUBLEUPANDHORIZONTAL*/
- /* 203 */ 9574,/*BOXDRAWINGSDOUBLEDOWNANDHORIZONTAL*/
- /* 204 */ 9568,/*BOXDRAWINGSDOUBLEVERTICALANDRIGHT*/
- /* 205 */ 9552,/*BOXDRAWINGSDOUBLEHORIZONTAL*/
- /* 206 */ 9580,/*BOXDRAWINGSDOUBLEVERTICALANDHORIZONTAL*/
- /* 207 */ 931,/*GREEKCAPITALLETTERSIGMA*/
- /* 208 */ 932,/*GREEKCAPITALLETTERTAU*/
- /* 209 */ 933,/*GREEKCAPITALLETTERUPSILON*/
- /* 210 */ 934,/*GREEKCAPITALLETTERPHI*/
- /* 211 */ 935,/*GREEKCAPITALLETTERCHI*/
- /* 212 */ 936,/*GREEKCAPITALLETTERPSI*/
- /* 213 */ 937,/*GREEKCAPITALLETTEROMEGA*/
- /* 214 */ 945,/*GREEKSMALLLETTERALPHA*/
- /* 215 */ 946,/*GREEKSMALLLETTERBETA*/
- /* 216 */ 947,/*GREEKSMALLLETTERGAMMA*/
- /* 217 */ 9496,/*BOXDRAWINGSLIGHTUPANDLEFT*/
- /* 218 */ 9484,/*BOXDRAWINGSLIGHTDOWNANDRIGHT*/
- /* 219 */ 9608,/*FULLBLOCK*/
- /* 220 */ 9604,/*LOWERHALFBLOCK*/
- /* 221 */ 948,/*GREEKSMALLLETTERDELTA*/
- /* 222 */ 949,/*GREEKSMALLLETTEREPSILON*/
- /* 223 */ 9600,/*UPPERHALFBLOCK*/
- /* 224 */ 950,/*GREEKSMALLLETTERZETA*/
- /* 225 */ 951,/*GREEKSMALLLETTERETA*/
- /* 226 */ 952,/*GREEKSMALLLETTERTHETA*/
- /* 227 */ 953,/*GREEKSMALLLETTERIOTA*/
- /* 228 */ 954,/*GREEKSMALLLETTERKAPPA*/
- /* 229 */ 955,/*GREEKSMALLLETTERLAMDA*/
- /* 230 */ 956,/*GREEKSMALLLETTERMU*/
- /* 231 */ 957,/*GREEKSMALLLETTERNU*/
- /* 232 */ 958,/*GREEKSMALLLETTERXI*/
- /* 233 */ 959,/*GREEKSMALLLETTEROMICRON*/
- /* 234 */ 960,/*GREEKSMALLLETTERPI*/
- /* 235 */ 961,/*GREEKSMALLLETTERRHO*/
- /* 236 */ 963,/*GREEKSMALLLETTERSIGMA*/
- /* 237 */ 962,/*GREEKSMALLLETTERFINALSIGMA*/
- /* 238 */ 964,/*GREEKSMALLLETTERTAU*/
- /* 239 */ 900,/*GREEKTONOS*/
- /* 240 */ 173,/*SOFTHYPHEN*/
- /* 241 */ 177,/*PLUS-MINUSSIGN*/
- /* 242 */ 965,/*GREEKSMALLLETTERUPSILON*/
- /* 243 */ 966,/*GREEKSMALLLETTERPHI*/
- /* 244 */ 967,/*GREEKSMALLLETTERCHI*/
- /* 245 */ 167,/*SECTIONSIGN*/
- /* 246 */ 968,/*GREEKSMALLLETTERPSI*/
- /* 247 */ 901,/*GREEKDIALYTIKATONOS*/
- /* 248 */ 176,/*DEGREESIGN*/
- /* 249 */ 168,/*DIAERESIS*/
- /* 250 */ 969,/*GREEKSMALLLETTEROMEGA*/
- /* 251 */ 971,/*GREEKSMALLLETTERUPSILONWITHDIALYTIKA*/
- /* 252 */ 944,/*GREEKSMALLLETTERUPSILONWITHDIALYTIKAANDTONOS*/
- /* 253 */ 974,/*GREEKSMALLLETTEROMEGAWITHTONOS*/
- /* 254 */ 9632,/*BLACKSQUARE*/
- /* 255 */ 160/*NO-BREAKSPACE*/
+static convert_t cp869[] = {
+	{ 0, 0 },
+	{ 1, 1 },
+	{ 2, 2 },
+	{ 3, 3 },
+	{ 4, 4 },
+	{ 5, 5 },
+	{ 6, 6 },
+	{ 7, 7 },
+	{ 8, 8 },
+	{ 9, 9 },
+	{ 10, 10 },
+	{ 11, 11 },
+	{ 12, 12 },
+	{ 13, 13 },
+	{ 14, 14 },
+	{ 15, 15 },
+	{ 16, 16 },
+	{ 17, 17 },
+	{ 18, 18 },
+	{ 19, 19 },
+	{ 20, 20 },
+	{ 21, 21 },
+	{ 22, 22 },
+	{ 23, 23 },
+	{ 24, 24 },
+	{ 25, 25 },
+	{ 26, 26 },
+	{ 27, 27 },
+	{ 28, 28 },
+	{ 29, 29 },
+	{ 30, 30 },
+	{ 31, 31 },
+	{ 32, 32 },
+	{ 33, 33 },
+	{ 34, 34 },
+	{ 35, 35 },
+	{ 36, 36 },
+	{ 37, 37 },
+	{ 38, 38 },
+	{ 39, 39 },
+	{ 40, 40 },
+	{ 41, 41 },
+	{ 42, 42 },
+	{ 43, 43 },
+	{ 44, 44 },
+	{ 45, 45 },
+	{ 46, 46 },
+	{ 47, 47 },
+	{ 48, 48 },
+	{ 49, 49 },
+	{ 50, 50 },
+	{ 51, 51 },
+	{ 52, 52 },
+	{ 53, 53 },
+	{ 54, 54 },
+	{ 55, 55 },
+	{ 56, 56 },
+	{ 57, 57 },
+	{ 58, 58 },
+	{ 59, 59 },
+	{ 60, 60 },
+	{ 61, 61 },
+	{ 62, 62 },
+	{ 63, 63 },
+	{ 64, 64 },
+	{ 65, 65 },
+	{ 66, 66 },
+	{ 67, 67 },
+	{ 68, 68 },
+	{ 69, 69 },
+	{ 70, 70 },
+	{ 71, 71 },
+	{ 72, 72 },
+	{ 73, 73 },
+	{ 74, 74 },
+	{ 75, 75 },
+	{ 76, 76 },
+	{ 77, 77 },
+	{ 78, 78 },
+	{ 79, 79 },
+	{ 80, 80 },
+	{ 81, 81 },
+	{ 82, 82 },
+	{ 83, 83 },
+	{ 84, 84 },
+	{ 85, 85 },
+	{ 86, 86 },
+	{ 87, 87 },
+	{ 88, 88 },
+	{ 89, 89 },
+	{ 90, 90 },
+	{ 91, 91 },
+	{ 92, 92 },
+	{ 93, 93 },
+	{ 94, 94 },
+	{ 95, 95 },
+	{ 96, 96 },
+	{ 97, 97 },
+	{ 98, 98 },
+	{ 99, 99 },
+	{ 100, 100 },
+	{ 101, 101 },
+	{ 102, 102 },
+	{ 103, 103 },
+	{ 104, 104 },
+	{ 105, 105 },
+	{ 106, 106 },
+	{ 107, 107 },
+	{ 108, 108 },
+	{ 109, 109 },
+	{ 110, 110 },
+	{ 111, 111 },
+	{ 112, 112 },
+	{ 113, 113 },
+	{ 114, 114 },
+	{ 115, 115 },
+	{ 116, 116 },
+	{ 117, 117 },
+	{ 118, 118 },
+	{ 119, 119 },
+	{ 120, 120 },
+	{ 121, 121 },
+	{ 122, 122 },
+	{ 123, 123 },
+	{ 124, 124 },
+	{ 125, 125 },
+	{ 126, 126 },
+	{ 127, 127 },
+	{ 128, 128 },
+	{ 129, 129 },
+	{ 130, 130 },
+	{ 131, 131 },
+	{ 132, 132 },
+	{ 133, 133 },
+	{ 134, 902 },
+	{ 135, 135 },
+	{ 136, 183 },
+	{ 137, 172 },
+	{ 138, 166 },
+	{ 139, 8216 },
+	{ 140, 8217 },
+	{ 141, 904 },
+	{ 142, 8213 },
+	{ 143, 905 },
+	{ 144, 906 },
+	{ 145, 938 },
+	{ 146, 908 },
+	{ 147, 147 },
+	{ 148, 148 },
+	{ 149, 910 },
+	{ 150, 939 },
+	{ 151, 169 },
+	{ 152, 911 },
+	{ 153, 178 },
+	{ 154, 179 },
+	{ 155, 940 },
+	{ 156, 163 },
+	{ 157, 941 },
+	{ 158, 942 },
+	{ 159, 943 },
+	{ 160, 970 },
+	{ 161, 912 },
+	{ 162, 972 },
+	{ 163, 973 },
+	{ 164, 913 },
+	{ 165, 914 },
+	{ 166, 915 },
+	{ 167, 916 },
+	{ 168, 917 },
+	{ 169, 918 },
+	{ 170, 919 },
+	{ 171, 189 },
+	{ 172, 920 },
+	{ 173, 921 },
+	{ 174, 171 },
+	{ 175, 187 },
+	{ 176, 9617 },
+	{ 177, 9618 },
+	{ 178, 9619 },
+	{ 179, 9474 },
+	{ 180, 9508 },
+	{ 181, 922 },
+	{ 182, 923 },
+	{ 183, 924 },
+	{ 184, 925 },
+	{ 185, 9571 },
+	{ 186, 9553 },
+	{ 187, 9559 },
+	{ 188, 9565 },
+	{ 189, 926 },
+	{ 190, 927 },
+	{ 191, 9488 },
+	{ 192, 9492 },
+	{ 193, 9524 },
+	{ 194, 9516 },
+	{ 195, 9500 },
+	{ 196, 9472 },
+	{ 197, 9532 },
+	{ 198, 928 },
+	{ 199, 929 },
+	{ 200, 9562 },
+	{ 201, 9556 },
+	{ 202, 9577 },
+	{ 203, 9574 },
+	{ 204, 9568 },
+	{ 205, 9552 },
+	{ 206, 9580 },
+	{ 207, 931 },
+	{ 208, 932 },
+	{ 209, 933 },
+	{ 210, 934 },
+	{ 211, 935 },
+	{ 212, 936 },
+	{ 213, 937 },
+	{ 214, 945 },
+	{ 215, 946 },
+	{ 216, 947 },
+	{ 217, 9496 },
+	{ 218, 9484 },
+	{ 219, 9608 },
+	{ 220, 9604 },
+	{ 221, 948 },
+	{ 222, 949 },
+	{ 223, 9600 },
+	{ 224, 950 },
+	{ 225, 951 },
+	{ 226, 952 },
+	{ 227, 953 },
+	{ 228, 954 },
+	{ 229, 955 },
+	{ 230, 956 },
+	{ 231, 957 },
+	{ 232, 958 },
+	{ 233, 959 },
+	{ 234, 960 },
+	{ 235, 961 },
+	{ 236, 963 },
+	{ 237, 962 },
+	{ 238, 964 },
+	{ 239, 900 },
+	{ 240, 173 },
+	{ 241, 177 },
+	{ 242, 965 },
+	{ 243, 966 },
+	{ 244, 967 },
+	{ 245, 167 },
+	{ 246, 968 },
+	{ 247, 901 },
+	{ 248, 176 },
+	{ 249, 168 },
+	{ 250, 969 },
+	{ 251, 971 },
+	{ 252, 944 },
+	{ 253, 974 },
+	{ 254, 9632 },
+	{ 255, 160 },
+	{ 34, 8220 },
+	{ 34, 8221 },
+	{ 45, 8211 },
+	{ 45, 8212 },
+	{ 32, 8194 },
+	{ 32, 8195 },
+	{ 32, 8201 },
+	{ 65, 192 },
+	{ 65, 193 },
+	{ 65, 194 },
+	{ 65, 195 },
+	{ 65, 196 },
+	{ 65, 197 },
+	{ 65, 256 },
+	{ 65, 258 },
+	{ 65, 260 },
+	{ 65, 461 },
+	{ 97, 224 },
+	{ 97, 225 },
+	{ 97, 226 },
+	{ 97, 227 },
+	{ 97, 228 },
+	{ 97, 229 },
+	{ 97, 257 },
+	{ 97, 259 },
+	{ 97, 261 },
+	{ 97, 462 },
+	{ 67, 199 },
+	{ 67, 262 },
+	{ 67, 264 },
+	{ 67, 266 },
+	{ 67, 268 },
+	{ 99, 231 },
+	{ 99, 263 },
+	{ 99, 265 },
+	{ 99, 267 },
+	{ 99, 269 },
+	{ 68, 270 },
+	{ 100, 271 },
+	{ 69, 200 },
+	{ 69, 201 },
+	{ 69, 202 },
+	{ 69, 203 },
+	{ 69, 274 },
+	{ 69, 276 },
+	{ 69, 278 },
+	{ 69, 280 },
+	{ 69, 282 },
+	{ 101, 232 },
+	{ 101, 233 },
+	{ 101, 234 },
+	{ 101, 235 },
+	{ 101, 275 },
+	{ 101, 277 },
+	{ 101, 279 },
+	{ 101, 281 },
+	{ 101, 283 },
+	{ 71, 284 },
+	{ 71, 286 },
+	{ 71, 288 },
+	{ 71, 290 },
+	{ 71, 486 },
+	{ 71, 500 },
+	{ 103, 285 },
+	{ 103, 287 },
+	{ 103, 289 },
+	{ 103, 291 },
+	{ 103, 487 },
+	{ 103, 501 },
+	{ 72, 292 },
+	{ 104, 293 },
+	{ 73, 204 },
+	{ 73, 205 },
+	{ 73, 206 },
+	{ 73, 207 },
+	{ 73, 296 },
+	{ 73, 298 },
+	{ 73, 300 },
+	{ 73, 302 },
+	{ 73, 304 },
+	{ 73, 463 },
+	{ 105, 236 },
+	{ 105, 237 },
+	{ 105, 238 },
+	{ 105, 239 },
+	{ 105, 297 },
+	{ 105, 299 },
+	{ 105, 301 },
+	{ 105, 303 },
+	{ 105, 305 },
+	{ 105, 464 },
+	{ 74, 308 },
+	{ 106, 309 },
+	{ 75, 310 },
+	{ 75, 488 },
+	{ 107, 311 },
+	{ 107, 489 },
+	{ 76, 313 },
+	{ 76, 315 },
+	{ 76, 317 },
+	{ 76, 319 },
+	{ 76, 321 },
+	{ 108, 314 },
+	{ 108, 316 },
+	{ 108, 318 },
+	{ 108, 320 },
+	{ 108, 322 },
+	{ 77, 209 },
+	{ 77, 323 },
+	{ 77, 325 },
+	{ 77, 327 },
+	{ 109, 241 },
+	{ 109, 324 },
+	{ 109, 326 },
+	{ 109, 328 },
+	{ 109, 329 },
+	{ 78, 210 },
+	{ 78, 211 },
+	{ 78, 212 },
+	{ 78, 213 },
+	{ 78, 214 },
+	{ 78, 216 },
+	{ 78, 332 },
+	{ 78, 334 },
+	{ 78, 336 },
+	{ 78, 465 },
+	{ 78, 490 },
+	{ 110, 242 },
+	{ 110, 243 },
+	{ 110, 244 },
+	{ 110, 245 },
+	{ 110, 246 },
+	{ 110, 248 },
+	{ 110, 333 },
+	{ 110, 335 },
+	{ 110, 337 },
+	{ 110, 466 },
+	{ 110, 491 },
+	{ 82, 340 },
+	{ 82, 342 },
+	{ 82, 344 },
+	{ 114, 341 },
+	{ 114, 343 },
+	{ 114, 345 },
+	{ 83, 346 },
+	{ 83, 348 },
+	{ 83, 350 },
+	{ 83, 352 },
+	{ 115, 347 },
+	{ 115, 349 },
+	{ 115, 351 },
+	{ 115, 353 },
+	{ 84, 354 },
+	{ 84, 356 },
+	{ 116, 355 },
+	{ 116, 357 },
+	{ 85, 217 },
+	{ 85, 218 },
+	{ 85, 219 },
+	{ 85, 220 },
+	{ 85, 360 },
+	{ 85, 362 },
+	{ 85, 364 },
+	{ 85, 366 },
+	{ 85, 368 },
+	{ 85, 370 },
+	{ 85, 467 },
+	{ 117, 249 },
+	{ 117, 250 },
+	{ 117, 251 },
+	{ 117, 252 },
+	{ 117, 361 },
+	{ 117, 363 },
+	{ 117, 365 },
+	{ 117, 367 },
+	{ 117, 369 },
+	{ 117, 371 },
+	{ 117, 468 },
+	{ 87, 372 },
+	{ 119, 373 },
+	{ 89, 221 },
+	{ 89, 374 },
+	{ 89, 376 },
+	{ 121, 253 },
+	{ 121, 255 },
+	{ 121, 375 },
+	{ 90, 377 },
+	{ 90, 379 },
+	{ 90, 381 },
+	{ 122, 378 },
+	{ 122, 380 },
+	{ 122, 382 },
 };
-charconvert cp852[] = {
- /* 0 */ 0,/*<tdbgcolor="C0C0C0"><fontface="Arial"color="000000"><b>ISO/IEC10646-1:2000CharacterName</b></font>*/
- 1,
- 2,
- 3,
- 4,
- 5,
- 6,
- 7,
- 8,
- 9,
- 10,
- 11,
- 12,
- 13,
- 14,
- 15,
- 16,
- 17,
- 18,
- 19,
- 20,
- 21,
- 22,
- 23,
- 24,
- 25,
- 26,
- 27,
- 28,
- 29,
- 30,
- 31,
- /* 32 */ 32,/*SPACE*/
- /* 33 */ 33,/*EXCLAMATIONMARK*/
- /* 34 */ 34,/*QUOTATIONMARK*/
- /* 35 */ 35,/*NUMBERSIGN*/
- /* 36 */ 36,/*DOLLARSIGN*/
- /* 37 */ 37,/*PERCENTSIGN*/
- /* 38 */ 38,/*AMPERSAND*/
- /* 39 */ 39,/*APOSTROPHE*/
- /* 40 */ 40,/*LEFTPARENTHESIS*/
- /* 41 */ 41,/*RIGHTPARENTHESIS*/
- /* 42 */ 42,/*ASTERISK*/
- /* 43 */ 43,/*PLUSSIGN*/
- /* 44 */ 44,/*COMMA*/
- /* 45 */ 45,/*HYPHEN-MINUS*/
- /* 46 */ 46,/*FULLSTOP*/
- /* 47 */ 47,/*SOLIDUS*/
- /* 48 */ 48,/*DIGITZERO*/
- /* 49 */ 49,/*DIGITONE*/
- /* 50 */ 50,/*DIGITTWO*/
- /* 51 */ 51,/*DIGITTHREE*/
- /* 52 */ 52,/*DIGITFOUR*/
- /* 53 */ 53,/*DIGITFIVE*/
- /* 54 */ 54,/*DIGITSIX*/
- /* 55 */ 55,/*DIGITSEVEN*/
- /* 56 */ 56,/*DIGITEIGHT*/
- /* 57 */ 57,/*DIGITNINE*/
- /* 58 */ 58,/*COLON*/
- /* 59 */ 59,/*SEMICOLON*/
- /* 60 */ 60,/*LESS-THANSIGN*/
- /* 61 */ 61,/*EQUALSSIGN*/
- /* 62 */ 62,/*GREATER-THANSIGN*/
- /* 63 */ 63,/*QUESTIONMARK*/
- /* 64 */ 64,/*COMMERCIALAT*/
- /* 65 */ 65,/*LATINCAPITALLETTERA*/
- /* 66 */ 66,/*LATINCAPITALLETTERB*/
- /* 67 */ 67,/*LATINCAPITALLETTERC*/
- /* 68 */ 68,/*LATINCAPITALLETTERD*/
- /* 69 */ 69,/*LATINCAPITALLETTERE*/
- /* 70 */ 70,/*LATINCAPITALLETTERF*/
- /* 71 */ 71,/*LATINCAPITALLETTERG*/
- /* 72 */ 72,/*LATINCAPITALLETTERH*/
- /* 73 */ 73,/*LATINCAPITALLETTERI*/
- /* 74 */ 74,/*LATINCAPITALLETTERJ*/
- /* 75 */ 75,/*LATINCAPITALLETTERK*/
- /* 76 */ 76,/*LATINCAPITALLETTERL*/
- /* 77 */ 77,/*LATINCAPITALLETTERM*/
- /* 78 */ 78,/*LATINCAPITALLETTERN*/
- /* 79 */ 79,/*LATINCAPITALLETTERO*/
- /* 80 */ 80,/*LATINCAPITALLETTERP*/
- /* 81 */ 81,/*LATINCAPITALLETTERQ*/
- /* 82 */ 82,/*LATINCAPITALLETTERR*/
- /* 83 */ 83,/*LATINCAPITALLETTERS*/
- /* 84 */ 84,/*LATINCAPITALLETTERT*/
- /* 85 */ 85,/*LATINCAPITALLETTERU*/
- /* 86 */ 86,/*LATINCAPITALLETTERV*/
- /* 87 */ 87,/*LATINCAPITALLETTERW*/
- /* 88 */ 88,/*LATINCAPITALLETTERX*/
- /* 89 */ 89,/*LATINCAPITALLETTERY*/
- /* 90 */ 90,/*LATINCAPITALLETTERZ*/
- /* 91 */ 91,/*LEFTSQUAREBRACKET*/
- /* 92 */ 92,/*REVERSESOLIDUS*/
- /* 93 */ 93,/*RIGHTSQUAREBRACKET*/
- /* 94 */ 94,/*CIRCUMFLEXACCENT*/
- /* 95 */ 95,/*LOWLINE*/
- /* 96 */ 96,/*GRAVEACCENT*/
- /* 97 */ 97,/*LATINSMALLLETTERA*/
- /* 98 */ 98,/*LATINSMALLLETTERB*/
- /* 99 */ 99,/*LATINSMALLLETTERC*/
- /* 100 */ 100,/*LATINSMALLLETTERD*/
- /* 101 */ 101,/*LATINSMALLLETTERE*/
- /* 102 */ 102,/*LATINSMALLLETTERF*/
- /* 103 */ 103,/*LATINSMALLLETTERG*/
- /* 104 */ 104,/*LATINSMALLLETTERH*/
- /* 105 */ 105,/*LATINSMALLLETTERI*/
- /* 106 */ 106,/*LATINSMALLLETTERJ*/
- /* 107 */ 107,/*LATINSMALLLETTERK*/
- /* 108 */ 108,/*LATINSMALLLETTERL*/
- /* 109 */ 109,/*LATINSMALLLETTERM*/
- /* 110 */ 110,/*LATINSMALLLETTERN*/
- /* 111 */ 111,/*LATINSMALLLETTERO*/
- /* 112 */ 112,/*LATINSMALLLETTERP*/
- /* 113 */ 113,/*LATINSMALLLETTERQ*/
- /* 114 */ 114,/*LATINSMALLLETTERR*/
- /* 115 */ 115,/*LATINSMALLLETTERS*/
- /* 116 */ 116,/*LATINSMALLLETTERT*/
- /* 117 */ 117,/*LATINSMALLLETTERU*/
- /* 118 */ 118,/*LATINSMALLLETTERV*/
- /* 119 */ 119,/*LATINSMALLLETTERW*/
- /* 120 */ 120,/*LATINSMALLLETTERX*/
- /* 121 */ 121,/*LATINSMALLLETTERY*/
- /* 122 */ 122,/*LATINSMALLLETTERZ*/
- /* 123 */ 123,/*LEFTCURLYBRACKET*/
- /* 124 */ 124,/*VERTICALLINE*/
- /* 125 */ 125,/*RIGHTCURLYBRACKET*/
- /* 126 */ 126,/*TILDE*/
- 127,
- /* 128 */ 199,/*LATINCAPITALLETTERCWITHCEDILLA*/
- /* 129 */ 252,/*LATINSMALLLETTERUWITHDIAERESIS*/
- /* 130 */ 233,/*LATINSMALLLETTEREWITHACUTE*/
- /* 131 */ 226,/*LATINSMALLLETTERAWITHCIRCUMFLEX*/
- /* 132 */ 228,/*LATINSMALLLETTERAWITHDIAERESIS*/
- /* 133 */ 367,/*LATINSMALLLETTERUWITHRINGABOVE*/
- /* 134 */ 263,/*LATINSMALLLETTERCWITHACUTE*/
- /* 135 */ 231,/*LATINSMALLLETTERCWITHCEDILLA*/
- /* 136 */ 322,/*LATINSMALLLETTERLWITHSTROKE*/
- /* 137 */ 235,/*LATINSMALLLETTEREWITHDIAERESIS*/
- /* 138 */ 336,/*LATINCAPITALLETTEROWITHDOUBLEACUTE*/
- /* 139 */ 337,/*LATINSMALLLETTEROWITHDOUBLEACUTE*/
- /* 140 */ 238,/*LATINSMALLLETTERIWITHCIRCUMFLEX*/
- /* 141 */ 377,/*LATINCAPITALLETTERZWITHACUTE*/
- /* 142 */ 196,/*LATINCAPITALLETTERAWITHDIAERESIS*/
- /* 143 */ 262,/*LATINCAPITALLETTERCWITHACUTE*/
- /* 144 */ 201,/*LATINCAPITALLETTEREWITHACUTE*/
- /* 145 */ 313,/*LATINCAPITALLETTERLWITHACUTE*/
- /* 146 */ 314,/*LATINSMALLLETTERLWITHACUTE*/
- /* 147 */ 244,/*LATINSMALLLETTEROWITHCIRCUMFLEX*/
- /* 148 */ 246,/*LATINSMALLLETTEROWITHDIAERESIS*/
- /* 149 */ 317,/*LATINCAPITALLETTERLWITHCARON*/
- /* 150 */ 318,/*LATINSMALLLETTERLWITHCARON*/
- /* 151 */ 346,/*LATINCAPITALLETTERSWITHACUTE*/
- /* 152 */ 347,/*LATINSMALLLETTERSWITHACUTE*/
- /* 153 */ 214,/*LATINCAPITALLETTEROWITHDIAERESIS*/
- /* 154 */ 220,/*LATINCAPITALLETTERUWITHDIAERESIS*/
- /* 155 */ 356,/*LATINCAPITALLETTERTWITHCARON*/
- /* 156 */ 357,/*LATINSMALLLETTERTWITHCARON*/
- /* 157 */ 321,/*LATINCAPITALLETTERLWITHSTROKE*/
- /* 158 */ 215,/*MULTIPLICATIONSIGN*/
- /* 159 */ 269,/*LATINSMALLLETTERCWITHCARON*/
- /* 160 */ 225,/*LATINSMALLLETTERAWITHACUTE*/
- /* 161 */ 237,/*LATINSMALLLETTERIWITHACUTE*/
- /* 162 */ 243,/*LATINSMALLLETTEROWITHACUTE*/
- /* 163 */ 250,/*LATINSMALLLETTERUWITHACUTE*/
- /* 164 */ 260,/*LATINCAPITALLETTERAWITHOGONEK*/
- /* 165 */ 261,/*LATINSMALLLETTERAWITHOGONEK*/
- /* 166 */ 381,/*LATINCAPITALLETTERZWITHCARON*/
- /* 167 */ 382,/*LATINSMALLLETTERZWITHCARON*/
- /* 168 */ 280,/*LATINCAPITALLETTEREWITHOGONEK*/
- /* 169 */ 281,/*LATINSMALLLETTEREWITHOGONEK*/
- 170,
- /* 171 */ 378,/*LATINSMALLLETTERZWITHACUTE*/
- /* 172 */ 268,/*LATINCAPITALLETTERCWITHCARON*/
- /* 173 */ 351,/*LATINSMALLLETTERSWITHCEDILLA*/
- /* 174 */ 171,/*LEFT-POINTINGDOUBLEANGLEQUOTATIONMARK*/
- /* 175 */ 187,/*RIGHT-POINTINGDOUBLEANGLEQUOTATIONMARK*/
- /* 176 */ 9617,/*LIGHTSHADE*/
- /* 177 */ 9618,/*MEDIUMSHADE*/
- /* 178 */ 9619,/*DARKSHADE*/
- /* 179 */ 9474,/*BOXDRAWINGSLIGHTVERTICAL*/
- /* 180 */ 9508,/*BOXDRAWINGSLIGHTVERTICALANDLEFT*/
- /* 181 */ 193,/*LATINCAPITALLETTERAWITHACUTE*/
- /* 182 */ 194,/*LATINCAPITALLETTERAWITHCIRCUMFLEX*/
- /* 183 */ 282,/*LATINCAPITALLETTEREWITHCARON*/
- /* 184 */ 350,/*LATINCAPITALLETTERSWITHCEDILLA*/
- /* 185 */ 9571,/*BOXDRAWINGSDOUBLEVERTICALANDLEFT*/
- /* 186 */ 9553,/*BOXDRAWINGSDOUBLEVERTICAL*/
- /* 187 */ 9559,/*BOXDRAWINGSDOUBLEDOWNANDLEFT*/
- /* 188 */ 9565,/*BOXDRAWINGSDOUBLEUPANDLEFT*/
- /* 189 */ 379,/*LATINCAPITALLETTERZWITHDOTABOVE*/
- /* 190 */ 380,/*LATINSMALLLETTERZWITHDOTABOVE*/
- /* 191 */ 9488,/*BOXDRAWINGSLIGHTDOWNANDLEFT*/
- /* 192 */ 9492,/*BOXDRAWINGSLIGHTUPANDRIGHT*/
- /* 193 */ 9524,/*BOXDRAWINGSLIGHTUPANDHORIZONTAL*/
- /* 194 */ 9516,/*BOXDRAWINGSLIGHTDOWNANDHORIZONTAL*/
- /* 195 */ 9500,/*BOXDRAWINGSLIGHTVERTICALANDRIGHT*/
- /* 196 */ 9472,/*BOXDRAWINGSLIGHTHORIZONTAL*/
- /* 197 */ 9532,/*BOXDRAWINGSLIGHTVERTICALANDHORIZONTAL*/
- /* 198 */ 258,/*LATINCAPITALLETTERAWITHBREVE*/
- /* 199 */ 259,/*LATINSMALLLETTERAWITHBREVE*/
- /* 200 */ 9562,/*BOXDRAWINGSDOUBLEUPANDRIGHT*/
- /* 201 */ 9556,/*BOXDRAWINGSDOUBLEDOWNANDRIGHT*/
- /* 202 */ 9577,/*BOXDRAWINGSDOUBLEUPANDHORIZONTAL*/
- /* 203 */ 9574,/*BOXDRAWINGSDOUBLEDOWNANDHORIZONTAL*/
- /* 204 */ 9568,/*BOXDRAWINGSDOUBLEVERTICALANDRIGHT*/
- /* 205 */ 9552,/*BOXDRAWINGSDOUBLEHORIZONTAL*/
- /* 206 */ 9580,/*BOXDRAWINGSDOUBLEVERTICALANDHORIZONTAL*/
- /* 207 */ 164,/*CURRENCYSIGN*/
- /* 208 */ 273,/*LATINSMALLLETTERDWITHSTROKE*/
- /* 209 */ 272,/*LATINCAPITALLETTERDWITHSTROKE*/
- /* 210 */ 270,/*LATINCAPITALLETTERDWITHCARON*/
- /* 211 */ 203,/*LATINCAPITALLETTEREWITHDIAERESIS*/
- /* 212 */ 271,/*LATINSMALLLETTERDWITHCARON*/
- /* 213 */ 327,/*LATINCAPITALLETTERNWITHCARON*/
- /* 214 */ 205,/*LATINCAPITALLETTERIWITHACUTE*/
- /* 215 */ 206,/*LATINCAPITALLETTERIWITHCIRCUMFLEX*/
- /* 216 */ 283,/*LATINSMALLLETTEREWITHCARON*/
- /* 217 */ 9496,/*BOXDRAWINGSLIGHTUPANDLEFT*/
- /* 218 */ 9484,/*BOXDRAWINGSLIGHTDOWNANDRIGHT*/
- /* 219 */ 9608,/*FULLBLOCK*/
- /* 220 */ 9604,/*LOWERHALFBLOCK*/
- /* 221 */ 354,/*LATINCAPITALLETTERTWITHCEDILLA*/
- /* 222 */ 366,/*LATINCAPITALLETTERUWITHRINGABOVE*/
- /* 223 */ 9600,/*UPPERHALFBLOCK*/
- /* 224 */ 211,/*LATINCAPITALLETTEROWITHACUTE*/
- /* 225 */ 223,/*LATINSMALLLETTERSHARPS*/
- /* 226 */ 212,/*LATINCAPITALLETTEROWITHCIRCUMFLEX*/
- /* 227 */ 323,/*LATINCAPITALLETTERNWITHACUTE*/
- /* 228 */ 324,/*LATINSMALLLETTERNWITHACUTE*/
- /* 229 */ 328,/*LATINSMALLLETTERNWITHCARON*/
- /* 230 */ 352,/*LATINCAPITALLETTERSWITHCARON*/
- /* 231 */ 353,/*LATINSMALLLETTERSWITHCARON*/
- /* 232 */ 340,/*LATINCAPITALLETTERRWITHACUTE*/
- /* 233 */ 218,/*LATINCAPITALLETTERUWITHACUTE*/
- /* 234 */ 341,/*LATINSMALLLETTERRWITHACUTE*/
- /* 235 */ 368,/*LATINCAPITALLETTERUWITHDOUBLEACUTE*/
- /* 236 */ 253,/*LATINSMALLLETTERYWITHACUTE*/
- /* 237 */ 221,/*LATINCAPITALLETTERYWITHACUTE*/
- /* 238 */ 355,/*LATINSMALLLETTERTWITHCEDILLA*/
- /* 239 */ 180,/*ACUTEACCENT*/
- /* 240 */ 173,/*SOFTHYPHEN*/
- /* 241 */ 733,/*DOUBLEACUTEACCENT*/
- /* 242 */ 731,/*OGONEK*/
- /* 243 */ 711,/*CARON*/
- /* 244 */ 728,/*BREVE*/
- /* 245 */ 167,/*SECTIONSIGN*/
- /* 246 */ 247,/*DIVISIONSIGN*/
- /* 247 */ 184,/*CEDILLA*/
- /* 248 */ 176,/*DEGREESIGN*/
- /* 249 */ 168,/*DIAERESIS*/
- /* 250 */ 729,/*DOTABOVE*/
- /* 251 */ 369,/*LATINSMALLLETTERUWITHDOUBLEACUTE*/
- /* 252 */ 344,/*LATINCAPITALLETTERRWITHCARON*/
- /* 253 */ 345,/*LATINSMALLLETTERRWITHCARON*/
- /* 254 */ 9632,/*BLACKSQUARE*/
- /* 255 */ 160/*NO-BREAKSPACE*/
+static convert_t cp874[] = {
+	{ 0, 0 },
+	{ 1, 1 },
+	{ 2, 2 },
+	{ 3, 3 },
+	{ 4, 4 },
+	{ 5, 5 },
+	{ 6, 6 },
+	{ 7, 7 },
+	{ 8, 8 },
+	{ 9, 9 },
+	{ 10, 10 },
+	{ 11, 11 },
+	{ 12, 12 },
+	{ 13, 13 },
+	{ 14, 14 },
+	{ 15, 15 },
+	{ 16, 16 },
+	{ 17, 17 },
+	{ 18, 18 },
+	{ 19, 19 },
+	{ 20, 20 },
+	{ 21, 21 },
+	{ 22, 22 },
+	{ 23, 23 },
+	{ 24, 24 },
+	{ 25, 25 },
+	{ 26, 26 },
+	{ 27, 27 },
+	{ 28, 28 },
+	{ 29, 29 },
+	{ 30, 30 },
+	{ 31, 31 },
+	{ 32, 32 },
+	{ 33, 33 },
+	{ 34, 34 },
+	{ 35, 35 },
+	{ 36, 36 },
+	{ 37, 37 },
+	{ 38, 38 },
+	{ 39, 39 },
+	{ 40, 40 },
+	{ 41, 41 },
+	{ 42, 42 },
+	{ 43, 43 },
+	{ 44, 44 },
+	{ 45, 45 },
+	{ 46, 46 },
+	{ 47, 47 },
+	{ 48, 48 },
+	{ 49, 49 },
+	{ 50, 50 },
+	{ 51, 51 },
+	{ 52, 52 },
+	{ 53, 53 },
+	{ 54, 54 },
+	{ 55, 55 },
+	{ 56, 56 },
+	{ 57, 57 },
+	{ 58, 58 },
+	{ 59, 59 },
+	{ 60, 60 },
+	{ 61, 61 },
+	{ 62, 62 },
+	{ 63, 63 },
+	{ 64, 64 },
+	{ 65, 65 },
+	{ 66, 66 },
+	{ 67, 67 },
+	{ 68, 68 },
+	{ 69, 69 },
+	{ 70, 70 },
+	{ 71, 71 },
+	{ 72, 72 },
+	{ 73, 73 },
+	{ 74, 74 },
+	{ 75, 75 },
+	{ 76, 76 },
+	{ 77, 77 },
+	{ 78, 78 },
+	{ 79, 79 },
+	{ 80, 80 },
+	{ 81, 81 },
+	{ 82, 82 },
+	{ 83, 83 },
+	{ 84, 84 },
+	{ 85, 85 },
+	{ 86, 86 },
+	{ 87, 87 },
+	{ 88, 88 },
+	{ 89, 89 },
+	{ 90, 90 },
+	{ 91, 91 },
+	{ 92, 92 },
+	{ 93, 93 },
+	{ 94, 94 },
+	{ 95, 95 },
+	{ 96, 96 },
+	{ 97, 97 },
+	{ 98, 98 },
+	{ 99, 99 },
+	{ 100, 100 },
+	{ 101, 101 },
+	{ 102, 102 },
+	{ 103, 103 },
+	{ 104, 104 },
+	{ 105, 105 },
+	{ 106, 106 },
+	{ 107, 107 },
+	{ 108, 108 },
+	{ 109, 109 },
+	{ 110, 110 },
+	{ 111, 111 },
+	{ 112, 112 },
+	{ 113, 113 },
+	{ 114, 114 },
+	{ 115, 115 },
+	{ 116, 116 },
+	{ 117, 117 },
+	{ 118, 118 },
+	{ 119, 119 },
+	{ 120, 120 },
+	{ 121, 121 },
+	{ 122, 122 },
+	{ 123, 123 },
+	{ 124, 124 },
+	{ 125, 125 },
+	{ 126, 126 },
+	{ 127, 127 },
+	{ 128, 8364 },
+	{ 129, 129 },
+	{ 130, 130 },
+	{ 131, 131 },
+	{ 132, 132 },
+	{ 133, 8230 },
+	{ 134, 134 },
+	{ 135, 135 },
+	{ 136, 136 },
+	{ 137, 137 },
+	{ 138, 138 },
+	{ 139, 139 },
+	{ 140, 140 },
+	{ 141, 141 },
+	{ 142, 142 },
+	{ 143, 143 },
+	{ 144, 144 },
+	{ 145, 8216 },
+	{ 146, 8217 },
+	{ 147, 8220 },
+	{ 148, 8221 },
+	{ 149, 8226 },
+	{ 150, 8211 },
+	{ 151, 8212 },
+	{ 152, 152 },
+	{ 153, 153 },
+	{ 154, 154 },
+	{ 155, 155 },
+	{ 156, 156 },
+	{ 157, 157 },
+	{ 158, 158 },
+	{ 159, 159 },
+	{ 160, 160 },
+	{ 161, 3585 },
+	{ 162, 3586 },
+	{ 163, 3587 },
+	{ 164, 3588 },
+	{ 165, 3589 },
+	{ 166, 3590 },
+	{ 167, 3591 },
+	{ 168, 3592 },
+	{ 169, 3593 },
+	{ 170, 3594 },
+	{ 171, 3595 },
+	{ 172, 3596 },
+	{ 173, 3597 },
+	{ 174, 3598 },
+	{ 175, 3599 },
+	{ 176, 3600 },
+	{ 177, 3601 },
+	{ 178, 3602 },
+	{ 179, 3603 },
+	{ 180, 3604 },
+	{ 181, 3605 },
+	{ 182, 3606 },
+	{ 183, 3607 },
+	{ 184, 3608 },
+	{ 185, 3609 },
+	{ 186, 3610 },
+	{ 187, 3611 },
+	{ 188, 3612 },
+	{ 189, 3613 },
+	{ 190, 3614 },
+	{ 191, 3615 },
+	{ 192, 3616 },
+	{ 193, 3617 },
+	{ 194, 3618 },
+	{ 195, 3619 },
+	{ 196, 3620 },
+	{ 197, 3621 },
+	{ 198, 3622 },
+	{ 199, 3623 },
+	{ 200, 3624 },
+	{ 201, 3625 },
+	{ 202, 3626 },
+	{ 203, 3627 },
+	{ 204, 3628 },
+	{ 205, 3629 },
+	{ 206, 3630 },
+	{ 207, 3631 },
+	{ 208, 3632 },
+	{ 209, 3633 },
+	{ 210, 3634 },
+	{ 211, 3635 },
+	{ 212, 3636 },
+	{ 213, 3637 },
+	{ 214, 3638 },
+	{ 215, 3639 },
+	{ 216, 3640 },
+	{ 217, 3641 },
+	{ 218, 3642 },
+	{ 219, 219 },
+	{ 220, 220 },
+	{ 221, 221 },
+	{ 222, 222 },
+	{ 223, 3647 },
+	{ 224, 3648 },
+	{ 225, 3649 },
+	{ 226, 3650 },
+	{ 227, 3651 },
+	{ 228, 3652 },
+	{ 229, 3653 },
+	{ 230, 3654 },
+	{ 231, 3655 },
+	{ 232, 3656 },
+	{ 233, 3657 },
+	{ 234, 3658 },
+	{ 235, 3659 },
+	{ 236, 3660 },
+	{ 237, 3661 },
+	{ 238, 3662 },
+	{ 239, 3663 },
+	{ 240, 3664 },
+	{ 241, 3665 },
+	{ 242, 3666 },
+	{ 243, 3667 },
+	{ 244, 3668 },
+	{ 245, 3669 },
+	{ 246, 3670 },
+	{ 247, 3671 },
+	{ 248, 3672 },
+	{ 249, 3673 },
+	{ 250, 3674 },
+	{ 251, 3675 },
+	{ 252, 252 },
+	{ 253, 253 },
+	{ 254, 254 },
+	{ 255, 255 },
+	{ 32, 8194 },
+	{ 32, 8195 },
+	{ 32, 8201 },
+	{ 65, 192 },
+	{ 65, 193 },
+	{ 65, 194 },
+	{ 65, 195 },
+	{ 65, 196 },
+	{ 65, 197 },
+	{ 65, 256 },
+	{ 65, 258 },
+	{ 65, 260 },
+	{ 65, 461 },
+	{ 97, 224 },
+	{ 97, 225 },
+	{ 97, 226 },
+	{ 97, 227 },
+	{ 97, 228 },
+	{ 97, 229 },
+	{ 97, 257 },
+	{ 97, 259 },
+	{ 97, 261 },
+	{ 97, 462 },
+	{ 67, 199 },
+	{ 67, 262 },
+	{ 67, 264 },
+	{ 67, 266 },
+	{ 67, 268 },
+	{ 99, 231 },
+	{ 99, 263 },
+	{ 99, 265 },
+	{ 99, 267 },
+	{ 99, 269 },
+	{ 68, 270 },
+	{ 100, 271 },
+	{ 69, 200 },
+	{ 69, 201 },
+	{ 69, 202 },
+	{ 69, 203 },
+	{ 69, 274 },
+	{ 69, 276 },
+	{ 69, 278 },
+	{ 69, 280 },
+	{ 69, 282 },
+	{ 101, 232 },
+	{ 101, 233 },
+	{ 101, 234 },
+	{ 101, 235 },
+	{ 101, 275 },
+	{ 101, 277 },
+	{ 101, 279 },
+	{ 101, 281 },
+	{ 101, 283 },
+	{ 71, 284 },
+	{ 71, 286 },
+	{ 71, 288 },
+	{ 71, 290 },
+	{ 71, 486 },
+	{ 71, 500 },
+	{ 103, 285 },
+	{ 103, 287 },
+	{ 103, 289 },
+	{ 103, 291 },
+	{ 103, 487 },
+	{ 103, 501 },
+	{ 72, 292 },
+	{ 104, 293 },
+	{ 73, 204 },
+	{ 73, 205 },
+	{ 73, 206 },
+	{ 73, 207 },
+	{ 73, 296 },
+	{ 73, 298 },
+	{ 73, 300 },
+	{ 73, 302 },
+	{ 73, 304 },
+	{ 73, 463 },
+	{ 105, 236 },
+	{ 105, 237 },
+	{ 105, 238 },
+	{ 105, 239 },
+	{ 105, 297 },
+	{ 105, 299 },
+	{ 105, 301 },
+	{ 105, 303 },
+	{ 105, 305 },
+	{ 105, 464 },
+	{ 74, 308 },
+	{ 106, 309 },
+	{ 75, 310 },
+	{ 75, 488 },
+	{ 107, 311 },
+	{ 107, 489 },
+	{ 76, 313 },
+	{ 76, 315 },
+	{ 76, 317 },
+	{ 76, 319 },
+	{ 76, 321 },
+	{ 108, 314 },
+	{ 108, 316 },
+	{ 108, 318 },
+	{ 108, 320 },
+	{ 108, 322 },
+	{ 77, 209 },
+	{ 77, 323 },
+	{ 77, 325 },
+	{ 77, 327 },
+	{ 109, 241 },
+	{ 109, 324 },
+	{ 109, 326 },
+	{ 109, 328 },
+	{ 109, 329 },
+	{ 78, 210 },
+	{ 78, 211 },
+	{ 78, 212 },
+	{ 78, 213 },
+	{ 78, 214 },
+	{ 78, 216 },
+	{ 78, 332 },
+	{ 78, 334 },
+	{ 78, 336 },
+	{ 78, 465 },
+	{ 78, 490 },
+	{ 110, 242 },
+	{ 110, 243 },
+	{ 110, 244 },
+	{ 110, 245 },
+	{ 110, 246 },
+	{ 110, 248 },
+	{ 110, 333 },
+	{ 110, 335 },
+	{ 110, 337 },
+	{ 110, 466 },
+	{ 110, 491 },
+	{ 82, 340 },
+	{ 82, 342 },
+	{ 82, 344 },
+	{ 114, 341 },
+	{ 114, 343 },
+	{ 114, 345 },
+	{ 83, 346 },
+	{ 83, 348 },
+	{ 83, 350 },
+	{ 83, 352 },
+	{ 115, 347 },
+	{ 115, 349 },
+	{ 115, 351 },
+	{ 115, 353 },
+	{ 84, 354 },
+	{ 84, 356 },
+	{ 116, 355 },
+	{ 116, 357 },
+	{ 85, 217 },
+	{ 85, 218 },
+	{ 85, 360 },
+	{ 85, 362 },
+	{ 85, 364 },
+	{ 85, 366 },
+	{ 85, 368 },
+	{ 85, 370 },
+	{ 85, 467 },
+	{ 117, 249 },
+	{ 117, 250 },
+	{ 117, 251 },
+	{ 117, 361 },
+	{ 117, 363 },
+	{ 117, 365 },
+	{ 117, 367 },
+	{ 117, 369 },
+	{ 117, 371 },
+	{ 117, 468 },
+	{ 87, 372 },
+	{ 119, 373 },
+	{ 89, 374 },
+	{ 89, 376 },
+	{ 121, 375 },
+	{ 90, 377 },
+	{ 90, 379 },
+	{ 90, 381 },
+	{ 122, 378 },
+	{ 122, 380 },
+	{ 122, 382 },
 };
-charconvert cp853[] = {
- /* 0 */ 0,/*<tdbgcolor="C0C0C0"><fontface="Arial"color="000000"><b>ISO/IEC10646-1:2000CharacterName</b></font>*/
- 1,
- 2,
- 3,
- 4,
- 5,
- 6,
- 7,
- 8,
- 9,
- 10,
- 11,
- 12,
- 13,
- 14,
- 15,
- 16,
- 17,
- 18,
- 19,
- 20,
- 21,
- 22,
- 23,
- 24,
- 25,
- 26,
- 27,
- 28,
- 29,
- 30,
- 31,
- /* 32 */ 32,/*SPACE*/
- /* 33 */ 33,/*EXCLAMATIONMARK*/
- /* 34 */ 34,/*QUOTATIONMARK*/
- /* 35 */ 35,/*NUMBERSIGN*/
- /* 36 */ 36,/*DOLLARSIGN*/
- /* 37 */ 37,/*PERCENTSIGN*/
- /* 38 */ 38,/*AMPERSAND*/
- /* 39 */ 39,/*APOSTROPHE*/
- /* 40 */ 40,/*LEFTPARENTHESIS*/
- /* 41 */ 41,/*RIGHTPARENTHESIS*/
- /* 42 */ 42,/*ASTERISK*/
- /* 43 */ 43,/*PLUSSIGN*/
- /* 44 */ 44,/*COMMA*/
- /* 45 */ 45,/*HYPHEN-MINUS*/
- /* 46 */ 46,/*FULLSTOP*/
- /* 47 */ 47,/*SOLIDUS*/
- /* 48 */ 48,/*DIGITZERO*/
- /* 49 */ 49,/*DIGITONE*/
- /* 50 */ 50,/*DIGITTWO*/
- /* 51 */ 51,/*DIGITTHREE*/
- /* 52 */ 52,/*DIGITFOUR*/
- /* 53 */ 53,/*DIGITFIVE*/
- /* 54 */ 54,/*DIGITSIX*/
- /* 55 */ 55,/*DIGITSEVEN*/
- /* 56 */ 56,/*DIGITEIGHT*/
- /* 57 */ 57,/*DIGITNINE*/
- /* 58 */ 58,/*COLON*/
- /* 59 */ 59,/*SEMICOLON*/
- /* 60 */ 60,/*LESS-THANSIGN*/
- /* 61 */ 61,/*EQUALSSIGN*/
- /* 62 */ 62,/*GREATER-THANSIGN*/
- /* 63 */ 63,/*QUESTIONMARK*/
- /* 64 */ 64,/*COMMERCIALAT*/
- /* 65 */ 65,/*LATINCAPITALLETTERA*/
- /* 66 */ 66,/*LATINCAPITALLETTERB*/
- /* 67 */ 67,/*LATINCAPITALLETTERC*/
- /* 68 */ 68,/*LATINCAPITALLETTERD*/
- /* 69 */ 69,/*LATINCAPITALLETTERE*/
- /* 70 */ 70,/*LATINCAPITALLETTERF*/
- /* 71 */ 71,/*LATINCAPITALLETTERG*/
- /* 72 */ 72,/*LATINCAPITALLETTERH*/
- /* 73 */ 73,/*LATINCAPITALLETTERI*/
- /* 74 */ 74,/*LATINCAPITALLETTERJ*/
- /* 75 */ 75,/*LATINCAPITALLETTERK*/
- /* 76 */ 76,/*LATINCAPITALLETTERL*/
- /* 77 */ 77,/*LATINCAPITALLETTERM*/
- /* 78 */ 78,/*LATINCAPITALLETTERN*/
- /* 79 */ 79,/*LATINCAPITALLETTERO*/
- /* 80 */ 80,/*LATINCAPITALLETTERP*/
- /* 81 */ 81,/*LATINCAPITALLETTERQ*/
- /* 82 */ 82,/*LATINCAPITALLETTERR*/
- /* 83 */ 83,/*LATINCAPITALLETTERS*/
- /* 84 */ 84,/*LATINCAPITALLETTERT*/
- /* 85 */ 85,/*LATINCAPITALLETTERU*/
- /* 86 */ 86,/*LATINCAPITALLETTERV*/
- /* 87 */ 87,/*LATINCAPITALLETTERW*/
- /* 88 */ 88,/*LATINCAPITALLETTERX*/
- /* 89 */ 89,/*LATINCAPITALLETTERY*/
- /* 90 */ 90,/*LATINCAPITALLETTERZ*/
- /* 91 */ 91,/*LEFTSQUAREBRACKET*/
- /* 92 */ 92,/*REVERSESOLIDUS*/
- /* 93 */ 93,/*RIGHTSQUAREBRACKET*/
- /* 94 */ 94,/*CIRCUMFLEXACCENT*/
- /* 95 */ 95,/*LOWLINE*/
- /* 96 */ 96,/*GRAVEACCENT*/
- /* 97 */ 97,/*LATINSMALLLETTERA*/
- /* 98 */ 98,/*LATINSMALLLETTERB*/
- /* 99 */ 99,/*LATINSMALLLETTERC*/
- /* 100 */ 100,/*LATINSMALLLETTERD*/
- /* 101 */ 101,/*LATINSMALLLETTERE*/
- /* 102 */ 102,/*LATINSMALLLETTERF*/
- /* 103 */ 103,/*LATINSMALLLETTERG*/
- /* 104 */ 104,/*LATINSMALLLETTERH*/
- /* 105 */ 105,/*LATINSMALLLETTERI*/
- /* 106 */ 106,/*LATINSMALLLETTERJ*/
- /* 107 */ 107,/*LATINSMALLLETTERK*/
- /* 108 */ 108,/*LATINSMALLLETTERL*/
- /* 109 */ 109,/*LATINSMALLLETTERM*/
- /* 110 */ 110,/*LATINSMALLLETTERN*/
- /* 111 */ 111,/*LATINSMALLLETTERO*/
- /* 112 */ 112,/*LATINSMALLLETTERP*/
- /* 113 */ 113,/*LATINSMALLLETTERQ*/
- /* 114 */ 114,/*LATINSMALLLETTERR*/
- /* 115 */ 115,/*LATINSMALLLETTERS*/
- /* 116 */ 116,/*LATINSMALLLETTERT*/
- /* 117 */ 117,/*LATINSMALLLETTERU*/
- /* 118 */ 118,/*LATINSMALLLETTERV*/
- /* 119 */ 119,/*LATINSMALLLETTERW*/
- /* 120 */ 120,/*LATINSMALLLETTERX*/
- /* 121 */ 121,/*LATINSMALLLETTERY*/
- /* 122 */ 122,/*LATINSMALLLETTERZ*/
- /* 123 */ 123,/*LEFTCURLYBRACKET*/
- /* 124 */ 124,/*VERTICALLINE*/
- /* 125 */ 125,/*RIGHTCURLYBRACKET*/
- /* 126 */ 126,/*TILDE*/
- 127,
- /* 128 */ 199,/*LATINCAPITALLETTERCWITHCEDILLA*/
- /* 129 */ 252,/*LATINSMALLLETTERUWITHDIAERESIS*/
- /* 130 */ 233,/*LATINSMALLLETTEREWITHACUTE*/
- /* 131 */ 226,/*LATINSMALLLETTERAWITHCIRCUMFLEX*/
- /* 132 */ 228,/*LATINSMALLLETTERAWITHDIAERESIS*/
- /* 133 */ 224,/*LATINSMALLLETTERAWITHGRAVE*/
- /* 134 */ 265,/*LATINSMALLLETTERCWITHCIRCUMFLEX*/
- /* 135 */ 231,/*LATINSMALLLETTERCWITHCEDILLA*/
- /* 136 */ 234,/*LATINSMALLLETTEREWITHCIRCUMFLEX*/
- /* 137 */ 235,/*LATINSMALLLETTEREWITHDIAERESIS*/
- /* 138 */ 232,/*LATINSMALLLETTEREWITHGRAVE*/
- /* 139 */ 239,/*LATINSMALLLETTERIWITHDIAERESIS*/
- /* 140 */ 238,/*LATINSMALLLETTERIWITHCIRCUMFLEX*/
- /* 141 */ 236,/*LATINSMALLLETTERIWITHGRAVE*/
- /* 142 */ 196,/*LATINCAPITALLETTERAWITHDIAERESIS*/
- /* 143 */ 264,/*LATINCAPITALLETTERCWITHCIRCUMFLEX*/
- /* 144 */ 201,/*LATINCAPITALLETTEREWITHACUTE*/
- /* 145 */ 267,/*LATINSMALLLETTERCWITHDOTABOVE*/
- /* 146 */ 266,/*LATINCAPITALLETTERCWITHDOTABOVE*/
- /* 147 */ 244,/*LATINSMALLLETTEROWITHCIRCUMFLEX*/
- /* 148 */ 246,/*LATINSMALLLETTEROWITHDIAERESIS*/
- /* 149 */ 242,/*LATINSMALLLETTEROWITHGRAVE*/
- /* 150 */ 251,/*LATINSMALLLETTERUWITHCIRCUMFLEX*/
- /* 151 */ 249,/*LATINSMALLLETTERUWITHGRAVE*/
- /* 152 */ 304,/*LATINCAPITALLETTERIWITHDOTABOVE*/
- /* 153 */ 214,/*LATINCAPITALLETTEROWITHDIAERESIS*/
- /* 154 */ 220,/*LATINCAPITALLETTERUWITHDIAERESIS*/
- /* 155 */ 285,/*LATINSMALLLETTERGWITHCIRCUMFLEX*/
- /* 156 */ 163,/*POUNDSIGN*/
- /* 157 */ 284,/*LATINCAPITALLETTERGWITHCIRCUMFLEX*/
- /* 158 */ 215,/*MULTIPLICATIONSIGN*/
- /* 159 */ 309,/*LATINSMALLLETTERJWITHCIRCUMFLEX*/
- /* 160 */ 225,/*LATINSMALLLETTERAWITHACUTE*/
- /* 161 */ 237,/*LATINSMALLLETTERIWITHACUTE*/
- /* 162 */ 243,/*LATINSMALLLETTEROWITHACUTE*/
- /* 163 */ 250,/*LATINSMALLLETTERUWITHACUTE*/
- /* 164 */ 241,/*LATINSMALLLETTERNWITHTILDE*/
- /* 165 */ 209,/*LATINCAPITALLETTERNWITHTILDE*/
- /* 166 */ 286,/*LATINCAPITALLETTERGWITHBREVE*/
- /* 167 */ 287,/*LATINSMALLLETTERGWITHBREVE*/
- /* 168 */ 292,/*LATINCAPITALLETTERHWITHCIRCUMFLEX*/
- /* 169 */ 293,/*LATINSMALLLETTERHWITHCIRCUMFLEX*/
- 170,
- /* 171 */ 189,/*VULGARFRACTIONONEHALF*/
- /* 172 */ 308,/*LATINCAPITALLETTERJWITHCIRCUMFLEX*/
- /* 173 */ 351,/*LATINSMALLLETTERSWITHCEDILLA*/
- /* 174 */ 171,/*LEFT-POINTINGDOUBLEANGLEQUOTATIONMARK*/
- /* 175 */ 187,/*RIGHT-POINTINGDOUBLEANGLEQUOTATIONMARK*/
- /* 176 */ 9617,/*LIGHTSHADE*/
- /* 177 */ 9618,/*MEDIUMSHADE*/
- /* 178 */ 9619,/*DARKSHADE*/
- /* 179 */ 9474,/*BOXDRAWINGSLIGHTVERTICAL*/
- /* 180 */ 9508,/*BOXDRAWINGSLIGHTVERTICALANDLEFT*/
- /* 181 */ 193,/*LATINCAPITALLETTERAWITHACUTE*/
- /* 182 */ 194,/*LATINCAPITALLETTERAWITHCIRCUMFLEX*/
- /* 183 */ 192,/*LATINCAPITALLETTERAWITHGRAVE*/
- /* 184 */ 350,/*LATINCAPITALLETTERSWITHCEDILLA*/
- /* 185 */ 9571,/*BOXDRAWINGSDOUBLEVERTICALANDLEFT*/
- /* 186 */ 9553,/*BOXDRAWINGSDOUBLEVERTICAL*/
- /* 187 */ 9559,/*BOXDRAWINGSDOUBLEDOWNANDLEFT*/
- /* 188 */ 9565,/*BOXDRAWINGSDOUBLEUPANDLEFT*/
- /* 189 */ 379,/*LATINCAPITALLETTERZWITHDOTABOVE*/
- /* 190 */ 380,/*LATINSMALLLETTERZWITHDOTABOVE*/
- /* 191 */ 9488,/*BOXDRAWINGSLIGHTDOWNANDLEFT*/
- /* 192 */ 9492,/*BOXDRAWINGSLIGHTUPANDRIGHT*/
- /* 193 */ 9524,/*BOXDRAWINGSLIGHTUPANDHORIZONTAL*/
- /* 194 */ 9516,/*BOXDRAWINGSLIGHTDOWNANDHORIZONTAL*/
- /* 195 */ 9500,/*BOXDRAWINGSLIGHTVERTICALANDRIGHT*/
- /* 196 */ 9472,/*BOXDRAWINGSLIGHTHORIZONTAL*/
- /* 197 */ 9532,/*BOXDRAWINGSLIGHTVERTICALANDHORIZONTAL*/
- /* 198 */ 348,/*LATINCAPITALLETTERSWITHCIRCUMFLEX*/
- /* 199 */ 349,/*LATINSMALLLETTERSWITHCIRCUMFLEX*/
- /* 200 */ 9562,/*BOXDRAWINGSDOUBLEUPANDRIGHT*/
- /* 201 */ 9556,/*BOXDRAWINGSDOUBLEDOWNANDRIGHT*/
- /* 202 */ 9577,/*BOXDRAWINGSDOUBLEUPANDHORIZONTAL*/
- /* 203 */ 9574,/*BOXDRAWINGSDOUBLEDOWNANDHORIZONTAL*/
- /* 204 */ 9568,/*BOXDRAWINGSDOUBLEVERTICALANDRIGHT*/
- /* 205 */ 9552,/*BOXDRAWINGSDOUBLEHORIZONTAL*/
- /* 206 */ 9580,/*BOXDRAWINGSDOUBLEVERTICALANDHORIZONTAL*/
- /* 207 */ 164,/*CURRENCYSIGN*/
- 208,
- 209,
- /* 210 */ 202,/*LATINCAPITALLETTEREWITHCIRCUMFLEX*/
- /* 211 */ 203,/*LATINCAPITALLETTEREWITHDIAERESIS*/
- /* 212 */ 200,/*LATINCAPITALLETTEREWITHGRAVE*/
- /* 213 */ 305,/*LATINSMALLLETTERDOTLESSI*/
- /* 214 */ 205,/*LATINCAPITALLETTERIWITHACUTE*/
- /* 215 */ 206,/*LATINCAPITALLETTERIWITHCIRCUMFLEX*/
- /* 216 */ 207,/*LATINCAPITALLETTERIWITHDIAERESIS*/
- /* 217 */ 9496,/*BOXDRAWINGSLIGHTUPANDLEFT*/
- /* 218 */ 9484,/*BOXDRAWINGSLIGHTDOWNANDRIGHT*/
- /* 219 */ 9608,/*FULLBLOCK*/
- /* 220 */ 9604,/*LOWERHALFBLOCK*/
- 221,
- /* 222 */ 204,/*LATINCAPITALLETTERIWITHGRAVE*/
- /* 223 */ 9600,/*UPPERHALFBLOCK*/
- /* 224 */ 211,/*LATINCAPITALLETTEROWITHACUTE*/
- /* 225 */ 223,/*LATINSMALLLETTERSHARPS*/
- /* 226 */ 212,/*LATINCAPITALLETTEROWITHCIRCUMFLEX*/
- /* 227 */ 210,/*LATINCAPITALLETTEROWITHGRAVE*/
- /* 228 */ 288,/*LATINCAPITALLETTERGWITHDOTABOVE*/
- /* 229 */ 289,/*LATINSMALLLETTERGWITHDOTABOVE*/
- /* 230 */ 181,/*MICROSIGN*/
- /* 231 */ 294,/*LATINCAPITALLETTERHWITHSTROKE*/
- /* 232 */ 295,/*LATINSMALLLETTERHWITHSTROKE*/
- /* 233 */ 218,/*LATINCAPITALLETTERUWITHACUTE*/
- /* 234 */ 219,/*LATINCAPITALLETTERUWITHCIRCUMFLEX*/
- /* 235 */ 217,/*LATINCAPITALLETTERUWITHGRAVE*/
- /* 236 */ 364,/*LATINCAPITALLETTERUWITHBREVE*/
- /* 237 */ 365,/*LATINSMALLLETTERUWITHBREVE*/
- 238,
- /* 239 */ 180,/*ACUTEACCENT*/
- /* 240 */ 173,/*SOFTHYPHEN*/
- 241,
- /* 242 */ 8467,/*SCRIPTSMALLL*/
- /* 243 */ 329,/*LATINSMALLLETTERNPRECEDEDBYAPOSTROPHE*/
- /* 244 */ 728,/*BREVE*/
- /* 245 */ 167,/*SECTIONSIGN*/
- /* 246 */ 247,/*DIVISIONSIGN*/
- /* 247 */ 184,/*CEDILLA*/
- /* 248 */ 176,/*DEGREESIGN*/
- /* 249 */ 168,/*DIAERESIS*/
- /* 250 */ 729,/*DOTABOVE*/
- 251,
- /* 252 */ 179,/*SUPERSCRIPTTHREE*/
- /* 253 */ 178,/*SUPERSCRIPTTWO*/
- /* 254 */ 9632,/*BLACKSQUARE*/
- /* 255 */ 160/*NO-BREAKSPACE*/
+static convert_t cp895[] = {
+	{ 0, 0 },
+	{ 1, 1 },
+	{ 2, 2 },
+	{ 3, 3 },
+	{ 4, 4 },
+	{ 5, 5 },
+	{ 6, 6 },
+	{ 7, 7 },
+	{ 8, 8 },
+	{ 9, 9 },
+	{ 10, 10 },
+	{ 11, 11 },
+	{ 12, 12 },
+	{ 13, 13 },
+	{ 14, 14 },
+	{ 15, 15 },
+	{ 16, 16 },
+	{ 17, 17 },
+	{ 18, 18 },
+	{ 19, 19 },
+	{ 20, 20 },
+	{ 21, 21 },
+	{ 22, 22 },
+	{ 23, 23 },
+	{ 24, 24 },
+	{ 25, 25 },
+	{ 26, 26 },
+	{ 27, 27 },
+	{ 28, 28 },
+	{ 29, 29 },
+	{ 30, 30 },
+	{ 31, 31 },
+	{ 32, 32 },
+	{ 33, 33 },
+	{ 34, 34 },
+	{ 35, 35 },
+	{ 36, 36 },
+	{ 37, 37 },
+	{ 38, 38 },
+	{ 39, 39 },
+	{ 40, 40 },
+	{ 41, 41 },
+	{ 42, 42 },
+	{ 43, 43 },
+	{ 44, 44 },
+	{ 45, 45 },
+	{ 46, 46 },
+	{ 47, 47 },
+	{ 48, 48 },
+	{ 49, 49 },
+	{ 50, 50 },
+	{ 51, 51 },
+	{ 52, 52 },
+	{ 53, 53 },
+	{ 54, 54 },
+	{ 55, 55 },
+	{ 56, 56 },
+	{ 57, 57 },
+	{ 58, 58 },
+	{ 59, 59 },
+	{ 60, 60 },
+	{ 61, 61 },
+	{ 62, 62 },
+	{ 63, 63 },
+	{ 64, 64 },
+	{ 65, 65 },
+	{ 66, 66 },
+	{ 67, 67 },
+	{ 68, 68 },
+	{ 69, 69 },
+	{ 70, 70 },
+	{ 71, 71 },
+	{ 72, 72 },
+	{ 73, 73 },
+	{ 74, 74 },
+	{ 75, 75 },
+	{ 76, 76 },
+	{ 77, 77 },
+	{ 78, 78 },
+	{ 79, 79 },
+	{ 80, 80 },
+	{ 81, 81 },
+	{ 82, 82 },
+	{ 83, 83 },
+	{ 84, 84 },
+	{ 85, 85 },
+	{ 86, 86 },
+	{ 87, 87 },
+	{ 88, 88 },
+	{ 89, 89 },
+	{ 90, 90 },
+	{ 91, 91 },
+	{ 92, 92 },
+	{ 93, 93 },
+	{ 94, 94 },
+	{ 95, 95 },
+	{ 96, 96 },
+	{ 97, 97 },
+	{ 98, 98 },
+	{ 99, 99 },
+	{ 100, 100 },
+	{ 101, 101 },
+	{ 102, 102 },
+	{ 103, 103 },
+	{ 104, 104 },
+	{ 105, 105 },
+	{ 106, 106 },
+	{ 107, 107 },
+	{ 108, 108 },
+	{ 109, 109 },
+	{ 110, 110 },
+	{ 111, 111 },
+	{ 112, 112 },
+	{ 113, 113 },
+	{ 114, 114 },
+	{ 115, 115 },
+	{ 116, 116 },
+	{ 117, 117 },
+	{ 118, 118 },
+	{ 119, 119 },
+	{ 120, 120 },
+	{ 121, 121 },
+	{ 122, 122 },
+	{ 123, 123 },
+	{ 124, 124 },
+	{ 125, 125 },
+	{ 126, 126 },
+	{ 127, 127 },
+	{ 128, 268 },
+	{ 129, 252 },
+	{ 130, 233 },
+	{ 131, 271 },
+	{ 132, 228 },
+	{ 133, 270 },
+	{ 134, 356 },
+	{ 135, 269 },
+	{ 136, 283 },
+	{ 137, 282 },
+	{ 138, 313 },
+	{ 139, 205 },
+	{ 140, 318 },
+	{ 141, 314 },
+	{ 142, 196 },
+	{ 143, 193 },
+	{ 144, 201 },
+	{ 145, 382 },
+	{ 146, 381 },
+	{ 147, 244 },
+	{ 148, 246 },
+	{ 149, 211 },
+	{ 150, 367 },
+	{ 151, 218 },
+	{ 152, 253 },
+	{ 153, 214 },
+	{ 154, 220 },
+	{ 155, 352 },
+	{ 156, 317 },
+	{ 157, 221 },
+	{ 158, 344 },
+	{ 159, 357 },
+	{ 160, 225 },
+	{ 161, 237 },
+	{ 162, 243 },
+	{ 163, 250 },
+	{ 164, 328 },
+	{ 165, 327 },
+	{ 166, 366 },
+	{ 167, 212 },
+	{ 168, 353 },
+	{ 169, 345 },
+	{ 170, 341 },
+	{ 171, 340 },
+	{ 172, 188 },
+	{ 173, 161 },
+	{ 174, 171 },
+	{ 175, 187 },
+	{ 176, 9617 },
+	{ 177, 9618 },
+	{ 178, 9619 },
+	{ 179, 9474 },
+	{ 180, 9508 },
+	{ 181, 9569 },
+	{ 182, 9570 },
+	{ 183, 9558 },
+	{ 184, 9557 },
+	{ 185, 9571 },
+	{ 186, 9553 },
+	{ 187, 9559 },
+	{ 188, 9565 },
+	{ 189, 9564 },
+	{ 190, 9563 },
+	{ 191, 9488 },
+	{ 192, 9492 },
+	{ 193, 9524 },
+	{ 194, 9516 },
+	{ 195, 9500 },
+	{ 196, 9472 },
+	{ 197, 9532 },
+	{ 198, 9566 },
+	{ 199, 9567 },
+	{ 200, 9562 },
+	{ 201, 9556 },
+	{ 202, 9577 },
+	{ 203, 9574 },
+	{ 204, 9568 },
+	{ 205, 9552 },
+	{ 206, 9580 },
+	{ 207, 9575 },
+	{ 208, 9576 },
+	{ 209, 9572 },
+	{ 210, 9573 },
+	{ 211, 9561 },
+	{ 212, 9560 },
+	{ 213, 9554 },
+	{ 214, 9555 },
+	{ 215, 9579 },
+	{ 216, 9578 },
+	{ 217, 9496 },
+	{ 218, 9484 },
+	{ 219, 9608 },
+	{ 220, 9604 },
+	{ 221, 9612 },
+	{ 222, 9616 },
+	{ 223, 9600 },
+	{ 224, 945 },
+	{ 225, 223 },
+	{ 226, 915 },
+	{ 227, 960 },
+	{ 228, 931 },
+	{ 229, 963 },
+	{ 230, 181 },
+	{ 231, 964 },
+	{ 232, 934 },
+	{ 233, 920 },
+	{ 234, 937 },
+	{ 235, 948 },
+	{ 236, 8734 },
+	{ 237, 966 },
+	{ 238, 949 },
+	{ 239, 8745 },
+	{ 240, 8801 },
+	{ 241, 177 },
+	{ 242, 8805 },
+	{ 243, 8804 },
+	{ 244, 8992 },
+	{ 245, 8993 },
+	{ 246, 247 },
+	{ 247, 8776 },
+	{ 248, 176 },
+	{ 249, 8729 },
+	{ 250, 183 },
+	{ 251, 8730 },
+	{ 252, 8319 },
+	{ 253, 178 },
+	{ 254, 9632 },
+	{ 255, 160 },
+	{ 34, 8220 },
+	{ 34, 8221 },
+	{ 39, 8216 },
+	{ 39, 8217 },
+	{ 45, 8211 },
+	{ 45, 8212 },
+	{ 32, 8194 },
+	{ 32, 8195 },
+	{ 32, 8201 },
+	{ 65, 192 },
+	{ 65, 194 },
+	{ 65, 195 },
+	{ 65, 197 },
+	{ 65, 256 },
+	{ 65, 258 },
+	{ 65, 260 },
+	{ 65, 461 },
+	{ 97, 224 },
+	{ 97, 226 },
+	{ 97, 227 },
+	{ 97, 229 },
+	{ 97, 257 },
+	{ 97, 259 },
+	{ 97, 261 },
+	{ 97, 462 },
+	{ 67, 199 },
+	{ 67, 262 },
+	{ 67, 264 },
+	{ 67, 266 },
+	{ 99, 231 },
+	{ 99, 263 },
+	{ 99, 265 },
+	{ 99, 267 },
+	{ 69, 200 },
+	{ 69, 202 },
+	{ 69, 203 },
+	{ 69, 274 },
+	{ 69, 276 },
+	{ 69, 278 },
+	{ 69, 280 },
+	{ 101, 232 },
+	{ 101, 234 },
+	{ 101, 235 },
+	{ 101, 275 },
+	{ 101, 277 },
+	{ 101, 279 },
+	{ 101, 281 },
+	{ 71, 284 },
+	{ 71, 286 },
+	{ 71, 288 },
+	{ 71, 290 },
+	{ 71, 486 },
+	{ 71, 500 },
+	{ 103, 285 },
+	{ 103, 287 },
+	{ 103, 289 },
+	{ 103, 291 },
+	{ 103, 487 },
+	{ 103, 501 },
+	{ 72, 292 },
+	{ 104, 293 },
+	{ 73, 204 },
+	{ 73, 206 },
+	{ 73, 207 },
+	{ 73, 296 },
+	{ 73, 298 },
+	{ 73, 300 },
+	{ 73, 302 },
+	{ 73, 304 },
+	{ 73, 463 },
+	{ 105, 236 },
+	{ 105, 238 },
+	{ 105, 239 },
+	{ 105, 297 },
+	{ 105, 299 },
+	{ 105, 301 },
+	{ 105, 303 },
+	{ 105, 305 },
+	{ 105, 464 },
+	{ 74, 308 },
+	{ 106, 309 },
+	{ 75, 310 },
+	{ 75, 488 },
+	{ 107, 311 },
+	{ 107, 489 },
+	{ 76, 315 },
+	{ 76, 319 },
+	{ 76, 321 },
+	{ 108, 316 },
+	{ 108, 320 },
+	{ 108, 322 },
+	{ 77, 209 },
+	{ 77, 323 },
+	{ 77, 325 },
+	{ 109, 241 },
+	{ 109, 324 },
+	{ 109, 326 },
+	{ 109, 329 },
+	{ 78, 210 },
+	{ 78, 213 },
+	{ 78, 216 },
+	{ 78, 332 },
+	{ 78, 334 },
+	{ 78, 336 },
+	{ 78, 465 },
+	{ 78, 490 },
+	{ 110, 242 },
+	{ 110, 245 },
+	{ 110, 248 },
+	{ 110, 333 },
+	{ 110, 335 },
+	{ 110, 337 },
+	{ 110, 466 },
+	{ 110, 491 },
+	{ 82, 342 },
+	{ 114, 343 },
+	{ 83, 346 },
+	{ 83, 348 },
+	{ 83, 350 },
+	{ 115, 347 },
+	{ 115, 349 },
+	{ 115, 351 },
+	{ 84, 354 },
+	{ 116, 355 },
+	{ 85, 217 },
+	{ 85, 219 },
+	{ 85, 360 },
+	{ 85, 362 },
+	{ 85, 364 },
+	{ 85, 368 },
+	{ 85, 370 },
+	{ 85, 467 },
+	{ 117, 249 },
+	{ 117, 251 },
+	{ 117, 361 },
+	{ 117, 363 },
+	{ 117, 365 },
+	{ 117, 369 },
+	{ 117, 371 },
+	{ 117, 468 },
+	{ 87, 372 },
+	{ 119, 373 },
+	{ 89, 374 },
+	{ 89, 376 },
+	{ 121, 255 },
+	{ 121, 375 },
+	{ 90, 377 },
+	{ 90, 379 },
+	{ 122, 378 },
+	{ 122, 380 },
 };
-charconvert cp855[] = {
- /* 0 */ 0,/*<tdbgcolor="C0C0C0"><fontface="Arial"color="000000"><b>ISO/IEC10646-1:2000CharacterName</b></font>*/
- 1,
- 2,
- 3,
- 4,
- 5,
- 6,
- 7,
- 8,
- 9,
- 10,
- 11,
- 12,
- 13,
- 14,
- 15,
- 16,
- 17,
- 18,
- 19,
- 20,
- 21,
- 22,
- 23,
- 24,
- 25,
- 26,
- 27,
- 28,
- 29,
- 30,
- 31,
- /* 32 */ 32,/*SPACE*/
- /* 33 */ 33,/*EXCLAMATIONMARK*/
- /* 34 */ 34,/*QUOTATIONMARK*/
- /* 35 */ 35,/*NUMBERSIGN*/
- /* 36 */ 36,/*DOLLARSIGN*/
- /* 37 */ 37,/*PERCENTSIGN*/
- /* 38 */ 38,/*AMPERSAND*/
- /* 39 */ 39,/*APOSTROPHE*/
- /* 40 */ 40,/*LEFTPARENTHESIS*/
- /* 41 */ 41,/*RIGHTPARENTHESIS*/
- /* 42 */ 42,/*ASTERISK*/
- /* 43 */ 43,/*PLUSSIGN*/
- /* 44 */ 44,/*COMMA*/
- /* 45 */ 45,/*HYPHEN-MINUS*/
- /* 46 */ 46,/*FULLSTOP*/
- /* 47 */ 47,/*SOLIDUS*/
- /* 48 */ 48,/*DIGITZERO*/
- /* 49 */ 49,/*DIGITONE*/
- /* 50 */ 50,/*DIGITTWO*/
- /* 51 */ 51,/*DIGITTHREE*/
- /* 52 */ 52,/*DIGITFOUR*/
- /* 53 */ 53,/*DIGITFIVE*/
- /* 54 */ 54,/*DIGITSIX*/
- /* 55 */ 55,/*DIGITSEVEN*/
- /* 56 */ 56,/*DIGITEIGHT*/
- /* 57 */ 57,/*DIGITNINE*/
- /* 58 */ 58,/*COLON*/
- /* 59 */ 59,/*SEMICOLON*/
- /* 60 */ 60,/*LESS-THANSIGN*/
- /* 61 */ 61,/*EQUALSSIGN*/
- /* 62 */ 62,/*GREATER-THANSIGN*/
- /* 63 */ 63,/*QUESTIONMARK*/
- /* 64 */ 64,/*COMMERCIALAT*/
- /* 65 */ 65,/*LATINCAPITALLETTERA*/
- /* 66 */ 66,/*LATINCAPITALLETTERB*/
- /* 67 */ 67,/*LATINCAPITALLETTERC*/
- /* 68 */ 68,/*LATINCAPITALLETTERD*/
- /* 69 */ 69,/*LATINCAPITALLETTERE*/
- /* 70 */ 70,/*LATINCAPITALLETTERF*/
- /* 71 */ 71,/*LATINCAPITALLETTERG*/
- /* 72 */ 72,/*LATINCAPITALLETTERH*/
- /* 73 */ 73,/*LATINCAPITALLETTERI*/
- /* 74 */ 74,/*LATINCAPITALLETTERJ*/
- /* 75 */ 75,/*LATINCAPITALLETTERK*/
- /* 76 */ 76,/*LATINCAPITALLETTERL*/
- /* 77 */ 77,/*LATINCAPITALLETTERM*/
- /* 78 */ 78,/*LATINCAPITALLETTERN*/
- /* 79 */ 79,/*LATINCAPITALLETTERO*/
- /* 80 */ 80,/*LATINCAPITALLETTERP*/
- /* 81 */ 81,/*LATINCAPITALLETTERQ*/
- /* 82 */ 82,/*LATINCAPITALLETTERR*/
- /* 83 */ 83,/*LATINCAPITALLETTERS*/
- /* 84 */ 84,/*LATINCAPITALLETTERT*/
- /* 85 */ 85,/*LATINCAPITALLETTERU*/
- /* 86 */ 86,/*LATINCAPITALLETTERV*/
- /* 87 */ 87,/*LATINCAPITALLETTERW*/
- /* 88 */ 88,/*LATINCAPITALLETTERX*/
- /* 89 */ 89,/*LATINCAPITALLETTERY*/
- /* 90 */ 90,/*LATINCAPITALLETTERZ*/
- /* 91 */ 91,/*LEFTSQUAREBRACKET*/
- /* 92 */ 92,/*REVERSESOLIDUS*/
- /* 93 */ 93,/*RIGHTSQUAREBRACKET*/
- /* 94 */ 94,/*CIRCUMFLEXACCENT*/
- /* 95 */ 95,/*LOWLINE*/
- /* 96 */ 96,/*GRAVEACCENT*/
- /* 97 */ 97,/*LATINSMALLLETTERA*/
- /* 98 */ 98,/*LATINSMALLLETTERB*/
- /* 99 */ 99,/*LATINSMALLLETTERC*/
- /* 100 */ 100,/*LATINSMALLLETTERD*/
- /* 101 */ 101,/*LATINSMALLLETTERE*/
- /* 102 */ 102,/*LATINSMALLLETTERF*/
- /* 103 */ 103,/*LATINSMALLLETTERG*/
- /* 104 */ 104,/*LATINSMALLLETTERH*/
- /* 105 */ 105,/*LATINSMALLLETTERI*/
- /* 106 */ 106,/*LATINSMALLLETTERJ*/
- /* 107 */ 107,/*LATINSMALLLETTERK*/
- /* 108 */ 108,/*LATINSMALLLETTERL*/
- /* 109 */ 109,/*LATINSMALLLETTERM*/
- /* 110 */ 110,/*LATINSMALLLETTERN*/
- /* 111 */ 111,/*LATINSMALLLETTERO*/
- /* 112 */ 112,/*LATINSMALLLETTERP*/
- /* 113 */ 113,/*LATINSMALLLETTERQ*/
- /* 114 */ 114,/*LATINSMALLLETTERR*/
- /* 115 */ 115,/*LATINSMALLLETTERS*/
- /* 116 */ 116,/*LATINSMALLLETTERT*/
- /* 117 */ 117,/*LATINSMALLLETTERU*/
- /* 118 */ 118,/*LATINSMALLLETTERV*/
- /* 119 */ 119,/*LATINSMALLLETTERW*/
- /* 120 */ 120,/*LATINSMALLLETTERX*/
- /* 121 */ 121,/*LATINSMALLLETTERY*/
- /* 122 */ 122,/*LATINSMALLLETTERZ*/
- /* 123 */ 123,/*LEFTCURLYBRACKET*/
- /* 124 */ 124,/*VERTICALLINE*/
- /* 125 */ 125,/*RIGHTCURLYBRACKET*/
- /* 126 */ 126,/*TILDE*/
- 127,
- /* 128 */ 1106,/*CYRILLICSMALLLETTERDJE*/
- /* 129 */ 1026,/*CYRILLICCAPITALLETTERDJE*/
- /* 130 */ 1107,/*CYRILLICSMALLLETTERGJE*/
- /* 131 */ 1027,/*CYRILLICCAPITALLETTERGJE*/
- /* 132 */ 1105,/*CYRILLICSMALLLETTERIO*/
- /* 133 */ 1025,/*CYRILLICCAPITALLETTERIO*/
- /* 134 */ 1108,/*CYRILLICSMALLLETTERUKRAINIANIE*/
- /* 135 */ 1028,/*CYRILLICCAPITALLETTERUKRAINIANIE*/
- /* 136 */ 1109,/*CYRILLICSMALLLETTERDZE*/
- /* 137 */ 1029,/*CYRILLICCAPITALLETTERDZE*/
- /* 138 */ 1110,/*CYRILLICSMALLLETTERBYELORUSSIAN-UKRAINIANI*/
- /* 139 */ 1030,/*CYRILLICCAPITALLETTERBYELORUSSIAN-UKRAINIANI*/
- /* 140 */ 1111,/*CYRILLICSMALLLETTERYI*/
- /* 141 */ 1031,/*CYRILLICCAPITALLETTERYI*/
- /* 142 */ 1112,/*CYRILLICSMALLLETTERJE*/
- /* 143 */ 1032,/*CYRILLICCAPITALLETTERJE*/
- /* 144 */ 1113,/*CYRILLICSMALLLETTERLJE*/
- /* 145 */ 1033,/*CYRILLICCAPITALLETTERLJE*/
- /* 146 */ 1114,/*CYRILLICSMALLLETTERNJE*/
- /* 147 */ 1034,/*CYRILLICCAPITALLETTERNJE*/
- /* 148 */ 1115,/*CYRILLICSMALLLETTERTSHE*/
- /* 149 */ 1035,/*CYRILLICCAPITALLETTERTSHE*/
- /* 150 */ 1116,/*CYRILLICSMALLLETTERKJE*/
- /* 151 */ 1036,/*CYRILLICCAPITALLETTERKJE*/
- /* 152 */ 1118,/*CYRILLICSMALLLETTERSHORTU*/
- /* 153 */ 1038,/*CYRILLICCAPITALLETTERSHORTU*/
- /* 154 */ 1119,/*CYRILLICSMALLLETTERDZHE*/
- /* 155 */ 1039,/*CYRILLICCAPITALLETTERDZHE*/
- /* 156 */ 1102,/*CYRILLICSMALLLETTERYU*/
- /* 157 */ 1070,/*CYRILLICCAPITALLETTERYU*/
- /* 158 */ 1098,/*CYRILLICSMALLLETTERHARDSIGN*/
- /* 159 */ 1066,/*CYRILLICCAPITALLETTERHARDSIGN*/
- /* 160 */ 1072,/*CYRILLICSMALLLETTERA*/
- /* 161 */ 1040,/*CYRILLICCAPITALLETTERA*/
- /* 162 */ 1073,/*CYRILLICSMALLLETTERBE*/
- /* 163 */ 1041,/*CYRILLICCAPITALLETTERBE*/
- /* 164 */ 1094,/*CYRILLICSMALLLETTERTSE*/
- /* 165 */ 1062,/*CYRILLICCAPITALLETTERTSE*/
- /* 166 */ 1076,/*CYRILLICSMALLLETTERDE*/
- /* 167 */ 1044,/*CYRILLICCAPITALLETTERDE*/
- /* 168 */ 1077,/*CYRILLICSMALLLETTERIE*/
- /* 169 */ 1045,/*CYRILLICCAPITALLETTERIE*/
- /* 170 */ 1092,/*CYRILLICSMALLLETTEREF*/
- /* 171 */ 1060,/*CYRILLICCAPITALLETTEREF*/
- /* 172 */ 1075,/*CYRILLICSMALLLETTERGHE*/
- /* 173 */ 1043,/*CYRILLICCAPITALLETTERGHE*/
- /* 174 */ 171,/*LEFT-POINTINGDOUBLEANGLEQUOTATIONMARK*/
- /* 175 */ 187,/*RIGHT-POINTINGDOUBLEANGLEQUOTATIONMARK*/
- /* 176 */ 9617,/*LIGHTSHADE*/
- /* 177 */ 9618,/*MEDIUMSHADE*/
- /* 178 */ 9619,/*DARKSHADE*/
- /* 179 */ 9474,/*BOXDRAWINGSLIGHTVERTICAL*/
- /* 180 */ 9508,/*BOXDRAWINGSLIGHTVERTICALANDLEFT*/
- /* 181 */ 1093,/*CYRILLICSMALLLETTERHA*/
- /* 182 */ 1061,/*CYRILLICCAPITALLETTERHA*/
- /* 183 */ 1080,/*CYRILLICSMALLLETTERI*/
- /* 184 */ 1048,/*CYRILLICCAPITALLETTERI*/
- /* 185 */ 9571,/*BOXDRAWINGSDOUBLEVERTICALANDLEFT*/
- /* 186 */ 9553,/*BOXDRAWINGSDOUBLEVERTICAL*/
- /* 187 */ 9559,/*BOXDRAWINGSDOUBLEDOWNANDLEFT*/
- /* 188 */ 9565,/*BOXDRAWINGSDOUBLEUPANDLEFT*/
- /* 189 */ 1081,/*CYRILLICSMALLLETTERSHORTI*/
- /* 190 */ 1049,/*CYRILLICCAPITALLETTERSHORTI*/
- /* 191 */ 9488,/*BOXDRAWINGSLIGHTDOWNANDLEFT*/
- /* 192 */ 9492,/*BOXDRAWINGSLIGHTUPANDRIGHT*/
- /* 193 */ 9524,/*BOXDRAWINGSLIGHTUPANDHORIZONTAL*/
- /* 194 */ 9516,/*BOXDRAWINGSLIGHTDOWNANDHORIZONTAL*/
- /* 195 */ 9500,/*BOXDRAWINGSLIGHTVERTICALANDRIGHT*/
- /* 196 */ 9472,/*BOXDRAWINGSLIGHTHORIZONTAL*/
- /* 197 */ 9532,/*BOXDRAWINGSLIGHTVERTICALANDHORIZONTAL*/
- /* 198 */ 1082,/*CYRILLICSMALLLETTERKA*/
- /* 199 */ 1050,/*CYRILLICCAPITALLETTERKA*/
- /* 200 */ 9562,/*BOXDRAWINGSDOUBLEUPANDRIGHT*/
- /* 201 */ 9556,/*BOXDRAWINGSDOUBLEDOWNANDRIGHT*/
- /* 202 */ 9577,/*BOXDRAWINGSDOUBLEUPANDHORIZONTAL*/
- /* 203 */ 9574,/*BOXDRAWINGSDOUBLEDOWNANDHORIZONTAL*/
- /* 204 */ 9568,/*BOXDRAWINGSDOUBLEVERTICALANDRIGHT*/
- /* 205 */ 9552,/*BOXDRAWINGSDOUBLEHORIZONTAL*/
- /* 206 */ 9580,/*BOXDRAWINGSDOUBLEVERTICALANDHORIZONTAL*/
- /* 207 */ 164,/*CURRENCYSIGN*/
- /* 208 */ 1083,/*CYRILLICSMALLLETTEREL*/
- /* 209 */ 1051,/*CYRILLICCAPITALLETTEREL*/
- /* 210 */ 1084,/*CYRILLICSMALLLETTEREM*/
- /* 211 */ 1052,/*CYRILLICCAPITALLETTEREM*/
- /* 212 */ 1085,/*CYRILLICSMALLLETTEREN*/
- /* 213 */ 1053,/*CYRILLICCAPITALLETTEREN*/
- /* 214 */ 1086,/*CYRILLICSMALLLETTERO*/
- /* 215 */ 1054,/*CYRILLICCAPITALLETTERO*/
- /* 216 */ 1087,/*CYRILLICSMALLLETTERPE*/
- /* 217 */ 9496,/*BOXDRAWINGSLIGHTUPANDLEFT*/
- /* 218 */ 9484,/*BOXDRAWINGSLIGHTDOWNANDRIGHT*/
- /* 219 */ 9608,/*FULLBLOCK*/
- /* 220 */ 9604,/*LOWERHALFBLOCK*/
- /* 221 */ 1055,/*CYRILLICCAPITALLETTERPE*/
- /* 222 */ 1103,/*CYRILLICSMALLLETTERYA*/
- /* 223 */ 9600,/*UPPERHALFBLOCK*/
- /* 224 */ 1071,/*CYRILLICCAPITALLETTERYA*/
- /* 225 */ 1088,/*CYRILLICSMALLLETTERER*/
- /* 226 */ 1056,/*CYRILLICCAPITALLETTERER*/
- /* 227 */ 1089,/*CYRILLICSMALLLETTERES*/
- /* 228 */ 1057,/*CYRILLICCAPITALLETTERES*/
- /* 229 */ 1090,/*CYRILLICSMALLLETTERTE*/
- /* 230 */ 1058,/*CYRILLICCAPITALLETTERTE*/
- /* 231 */ 1091,/*CYRILLICSMALLLETTERU*/
- /* 232 */ 1059,/*CYRILLICCAPITALLETTERU*/
- /* 233 */ 1078,/*CYRILLICSMALLLETTERZHE*/
- /* 234 */ 1046,/*CYRILLICCAPITALLETTERZHE*/
- /* 235 */ 1074,/*CYRILLICSMALLLETTERVE*/
- /* 236 */ 1042,/*CYRILLICCAPITALLETTERVE*/
- /* 237 */ 1100,/*CYRILLICSMALLLETTERSOFTSIGN*/
- /* 238 */ 1068,/*CYRILLICCAPITALLETTERSOFTSIGN*/
- /* 239 */ 8470,/*NUMEROSIGN*/
- /* 240 */ 173,/*SOFTHYPHEN*/
- /* 241 */ 1099,/*CYRILLICSMALLLETTERYERU*/
- /* 242 */ 1067,/*CYRILLICCAPITALLETTERYERU*/
- /* 243 */ 1079,/*CYRILLICSMALLLETTERZE*/
- /* 244 */ 1047,/*CYRILLICCAPITALLETTERZE*/
- /* 245 */ 1096,/*CYRILLICSMALLLETTERSHA*/
- /* 246 */ 1064,/*CYRILLICCAPITALLETTERSHA*/
- /* 247 */ 1101,/*CYRILLICSMALLLETTERE*/
- /* 248 */ 1069,/*CYRILLICCAPITALLETTERE*/
- /* 249 */ 1097,/*CYRILLICSMALLLETTERSHCHA*/
- /* 250 */ 1065,/*CYRILLICCAPITALLETTERSHCHA*/
- /* 251 */ 1095,/*CYRILLICSMALLLETTERCHE*/
- /* 252 */ 1063,/*CYRILLICCAPITALLETTERCHE*/
- /* 253 */ 167,/*SECTIONSIGN*/
- /* 254 */ 9632,/*BLACKSQUARE*/
- /* 255 */ 160/*NO-BREAKSPACE*/
+static convert_t cp1250[] = {
+	{ 0, 0 },
+	{ 1, 1 },
+	{ 2, 2 },
+	{ 3, 3 },
+	{ 4, 4 },
+	{ 5, 5 },
+	{ 6, 6 },
+	{ 7, 7 },
+	{ 8, 8 },
+	{ 9, 9 },
+	{ 10, 10 },
+	{ 11, 11 },
+	{ 12, 12 },
+	{ 13, 13 },
+	{ 14, 14 },
+	{ 15, 15 },
+	{ 16, 16 },
+	{ 17, 17 },
+	{ 18, 18 },
+	{ 19, 19 },
+	{ 20, 20 },
+	{ 21, 21 },
+	{ 22, 22 },
+	{ 23, 23 },
+	{ 24, 24 },
+	{ 25, 25 },
+	{ 26, 26 },
+	{ 27, 27 },
+	{ 28, 28 },
+	{ 29, 29 },
+	{ 30, 30 },
+	{ 31, 31 },
+	{ 32, 32 },
+	{ 33, 33 },
+	{ 34, 34 },
+	{ 35, 35 },
+	{ 36, 36 },
+	{ 37, 37 },
+	{ 38, 38 },
+	{ 39, 39 },
+	{ 40, 40 },
+	{ 41, 41 },
+	{ 42, 42 },
+	{ 43, 43 },
+	{ 44, 44 },
+	{ 45, 45 },
+	{ 46, 46 },
+	{ 47, 47 },
+	{ 48, 48 },
+	{ 49, 49 },
+	{ 50, 50 },
+	{ 51, 51 },
+	{ 52, 52 },
+	{ 53, 53 },
+	{ 54, 54 },
+	{ 55, 55 },
+	{ 56, 56 },
+	{ 57, 57 },
+	{ 58, 58 },
+	{ 59, 59 },
+	{ 60, 60 },
+	{ 61, 61 },
+	{ 62, 62 },
+	{ 63, 63 },
+	{ 64, 64 },
+	{ 65, 65 },
+	{ 66, 66 },
+	{ 67, 67 },
+	{ 68, 68 },
+	{ 69, 69 },
+	{ 70, 70 },
+	{ 71, 71 },
+	{ 72, 72 },
+	{ 73, 73 },
+	{ 74, 74 },
+	{ 75, 75 },
+	{ 76, 76 },
+	{ 77, 77 },
+	{ 78, 78 },
+	{ 79, 79 },
+	{ 80, 80 },
+	{ 81, 81 },
+	{ 82, 82 },
+	{ 83, 83 },
+	{ 84, 84 },
+	{ 85, 85 },
+	{ 86, 86 },
+	{ 87, 87 },
+	{ 88, 88 },
+	{ 89, 89 },
+	{ 90, 90 },
+	{ 91, 91 },
+	{ 92, 92 },
+	{ 93, 93 },
+	{ 94, 94 },
+	{ 95, 95 },
+	{ 96, 96 },
+	{ 97, 97 },
+	{ 98, 98 },
+	{ 99, 99 },
+	{ 100, 100 },
+	{ 101, 101 },
+	{ 102, 102 },
+	{ 103, 103 },
+	{ 104, 104 },
+	{ 105, 105 },
+	{ 106, 106 },
+	{ 107, 107 },
+	{ 108, 108 },
+	{ 109, 109 },
+	{ 110, 110 },
+	{ 111, 111 },
+	{ 112, 112 },
+	{ 113, 113 },
+	{ 114, 114 },
+	{ 115, 115 },
+	{ 116, 116 },
+	{ 117, 117 },
+	{ 118, 118 },
+	{ 119, 119 },
+	{ 120, 120 },
+	{ 121, 121 },
+	{ 122, 122 },
+	{ 123, 123 },
+	{ 124, 124 },
+	{ 125, 125 },
+	{ 126, 126 },
+	{ 127, 127 },
+	{ 128, 8364 },
+	{ 129, 129 },
+	{ 130, 8218 },
+	{ 131, 131 },
+	{ 132, 8222 },
+	{ 133, 8230 },
+	{ 134, 8224 },
+	{ 135, 8225 },
+	{ 136, 136 },
+	{ 137, 8240 },
+	{ 138, 352 },
+	{ 139, 8249 },
+	{ 140, 346 },
+	{ 141, 356 },
+	{ 142, 381 },
+	{ 143, 377 },
+	{ 144, 144 },
+	{ 145, 8216 },
+	{ 146, 8217 },
+	{ 147, 8220 },
+	{ 148, 8221 },
+	{ 149, 8226 },
+	{ 150, 8211 },
+	{ 151, 8212 },
+	{ 152, 152 },
+	{ 153, 8482 },
+	{ 154, 353 },
+	{ 155, 8250 },
+	{ 156, 347 },
+	{ 157, 357 },
+	{ 158, 382 },
+	{ 159, 378 },
+	{ 160, 160 },
+	{ 161, 711 },
+	{ 162, 728 },
+	{ 163, 321 },
+	{ 164, 164 },
+	{ 165, 260 },
+	{ 166, 166 },
+	{ 167, 167 },
+	{ 168, 168 },
+	{ 169, 169 },
+	{ 170, 350 },
+	{ 171, 171 },
+	{ 172, 172 },
+	{ 173, 173 },
+	{ 174, 174 },
+	{ 175, 379 },
+	{ 176, 176 },
+	{ 177, 177 },
+	{ 178, 731 },
+	{ 179, 322 },
+	{ 180, 180 },
+	{ 181, 181 },
+	{ 182, 182 },
+	{ 183, 183 },
+	{ 184, 184 },
+	{ 185, 261 },
+	{ 186, 351 },
+	{ 187, 187 },
+	{ 188, 376 },
+	{ 189, 733 },
+	{ 190, 317 },
+	{ 191, 380 },
+	{ 192, 340 },
+	{ 193, 193 },
+	{ 194, 194 },
+	{ 195, 258 },
+	{ 196, 196 },
+	{ 197, 313 },
+	{ 198, 262 },
+	{ 199, 199 },
+	{ 200, 268 },
+	{ 201, 201 },
+	{ 202, 280 },
+	{ 203, 203 },
+	{ 204, 282 },
+	{ 205, 205 },
+	{ 206, 206 },
+	{ 207, 270 },
+	{ 208, 272 },
+	{ 209, 323 },
+	{ 210, 327 },
+	{ 211, 211 },
+	{ 212, 212 },
+	{ 213, 336 },
+	{ 214, 214 },
+	{ 215, 215 },
+	{ 216, 344 },
+	{ 217, 366 },
+	{ 218, 218 },
+	{ 219, 368 },
+	{ 220, 220 },
+	{ 221, 221 },
+	{ 222, 354 },
+	{ 223, 223 },
+	{ 224, 341 },
+	{ 225, 225 },
+	{ 226, 226 },
+	{ 227, 259 },
+	{ 228, 228 },
+	{ 229, 314 },
+	{ 230, 263 },
+	{ 231, 231 },
+	{ 232, 269 },
+	{ 233, 233 },
+	{ 234, 281 },
+	{ 235, 235 },
+	{ 236, 283 },
+	{ 237, 237 },
+	{ 238, 238 },
+	{ 239, 271 },
+	{ 240, 273 },
+	{ 241, 324 },
+	{ 242, 328 },
+	{ 243, 243 },
+	{ 244, 244 },
+	{ 245, 337 },
+	{ 246, 246 },
+	{ 247, 247 },
+	{ 248, 345 },
+	{ 249, 367 },
+	{ 250, 250 },
+	{ 251, 369 },
+	{ 252, 252 },
+	{ 253, 253 },
+	{ 254, 355 },
+	{ 255, 729 },
+	{ 32, 8194 },
+	{ 32, 8195 },
+	{ 32, 8201 },
+	{ 65, 192 },
+	{ 65, 195 },
+	{ 65, 197 },
+	{ 65, 256 },
+	{ 65, 461 },
+	{ 97, 224 },
+	{ 97, 227 },
+	{ 97, 229 },
+	{ 97, 257 },
+	{ 97, 462 },
+	{ 67, 264 },
+	{ 67, 266 },
+	{ 99, 265 },
+	{ 99, 267 },
+	{ 69, 200 },
+	{ 69, 202 },
+	{ 69, 274 },
+	{ 69, 276 },
+	{ 69, 278 },
+	{ 101, 232 },
+	{ 101, 234 },
+	{ 101, 275 },
+	{ 101, 277 },
+	{ 101, 279 },
+	{ 71, 284 },
+	{ 71, 286 },
+	{ 71, 288 },
+	{ 71, 290 },
+	{ 71, 486 },
+	{ 71, 500 },
+	{ 103, 285 },
+	{ 103, 287 },
+	{ 103, 289 },
+	{ 103, 291 },
+	{ 103, 487 },
+	{ 103, 501 },
+	{ 72, 292 },
+	{ 104, 293 },
+	{ 73, 204 },
+	{ 73, 207 },
+	{ 73, 296 },
+	{ 73, 298 },
+	{ 73, 300 },
+	{ 73, 302 },
+	{ 73, 304 },
+	{ 73, 463 },
+	{ 105, 236 },
+	{ 105, 239 },
+	{ 105, 297 },
+	{ 105, 299 },
+	{ 105, 301 },
+	{ 105, 303 },
+	{ 105, 305 },
+	{ 105, 464 },
+	{ 74, 308 },
+	{ 106, 309 },
+	{ 75, 310 },
+	{ 75, 488 },
+	{ 107, 311 },
+	{ 107, 489 },
+	{ 76, 315 },
+	{ 76, 319 },
+	{ 108, 316 },
+	{ 108, 318 },
+	{ 108, 320 },
+	{ 77, 209 },
+	{ 77, 325 },
+	{ 109, 241 },
+	{ 109, 326 },
+	{ 109, 329 },
+	{ 78, 210 },
+	{ 78, 213 },
+	{ 78, 216 },
+	{ 78, 332 },
+	{ 78, 334 },
+	{ 78, 465 },
+	{ 78, 490 },
+	{ 110, 242 },
+	{ 110, 245 },
+	{ 110, 248 },
+	{ 110, 333 },
+	{ 110, 335 },
+	{ 110, 466 },
+	{ 110, 491 },
+	{ 82, 342 },
+	{ 114, 343 },
+	{ 83, 348 },
+	{ 115, 349 },
+	{ 85, 217 },
+	{ 85, 219 },
+	{ 85, 360 },
+	{ 85, 362 },
+	{ 85, 364 },
+	{ 85, 370 },
+	{ 85, 467 },
+	{ 117, 249 },
+	{ 117, 251 },
+	{ 117, 361 },
+	{ 117, 363 },
+	{ 117, 365 },
+	{ 117, 371 },
+	{ 117, 468 },
+	{ 87, 372 },
+	{ 119, 373 },
+	{ 89, 374 },
+	{ 121, 255 },
+	{ 121, 375 },
 };
-charconvert cp857[] = {
- /* 0 */ 0,/*<tdbgcolor="C0C0C0"><fontface="Arial"color="000000"><b>ISO/IEC10646-1:2000CharacterName</b></font>*/
- 1,
- 2,
- 3,
- 4,
- 5,
- 6,
- 7,
- 8,
- 9,
- 10,
- 11,
- 12,
- 13,
- 14,
- 15,
- 16,
- 17,
- 18,
- 19,
- 20,
- 21,
- 22,
- 23,
- 24,
- 25,
- 26,
- 27,
- 28,
- 29,
- 30,
- 31,
- /* 32 */ 32,/*SPACE*/
- /* 33 */ 33,/*EXCLAMATIONMARK*/
- /* 34 */ 34,/*QUOTATIONMARK*/
- /* 35 */ 35,/*NUMBERSIGN*/
- /* 36 */ 36,/*DOLLARSIGN*/
- /* 37 */ 37,/*PERCENTSIGN*/
- /* 38 */ 38,/*AMPERSAND*/
- /* 39 */ 39,/*APOSTROPHE*/
- /* 40 */ 40,/*LEFTPARENTHESIS*/
- /* 41 */ 41,/*RIGHTPARENTHESIS*/
- /* 42 */ 42,/*ASTERISK*/
- /* 43 */ 43,/*PLUSSIGN*/
- /* 44 */ 44,/*COMMA*/
- /* 45 */ 45,/*HYPHEN-MINUS*/
- /* 46 */ 46,/*FULLSTOP*/
- /* 47 */ 47,/*SOLIDUS*/
- /* 48 */ 48,/*DIGITZERO*/
- /* 49 */ 49,/*DIGITONE*/
- /* 50 */ 50,/*DIGITTWO*/
- /* 51 */ 51,/*DIGITTHREE*/
- /* 52 */ 52,/*DIGITFOUR*/
- /* 53 */ 53,/*DIGITFIVE*/
- /* 54 */ 54,/*DIGITSIX*/
- /* 55 */ 55,/*DIGITSEVEN*/
- /* 56 */ 56,/*DIGITEIGHT*/
- /* 57 */ 57,/*DIGITNINE*/
- /* 58 */ 58,/*COLON*/
- /* 59 */ 59,/*SEMICOLON*/
- /* 60 */ 60,/*LESS-THANSIGN*/
- /* 61 */ 61,/*EQUALSSIGN*/
- /* 62 */ 62,/*GREATER-THANSIGN*/
- /* 63 */ 63,/*QUESTIONMARK*/
- /* 64 */ 64,/*COMMERCIALAT*/
- /* 65 */ 65,/*LATINCAPITALLETTERA*/
- /* 66 */ 66,/*LATINCAPITALLETTERB*/
- /* 67 */ 67,/*LATINCAPITALLETTERC*/
- /* 68 */ 68,/*LATINCAPITALLETTERD*/
- /* 69 */ 69,/*LATINCAPITALLETTERE*/
- /* 70 */ 70,/*LATINCAPITALLETTERF*/
- /* 71 */ 71,/*LATINCAPITALLETTERG*/
- /* 72 */ 72,/*LATINCAPITALLETTERH*/
- /* 73 */ 73,/*LATINCAPITALLETTERI*/
- /* 74 */ 74,/*LATINCAPITALLETTERJ*/
- /* 75 */ 75,/*LATINCAPITALLETTERK*/
- /* 76 */ 76,/*LATINCAPITALLETTERL*/
- /* 77 */ 77,/*LATINCAPITALLETTERM*/
- /* 78 */ 78,/*LATINCAPITALLETTERN*/
- /* 79 */ 79,/*LATINCAPITALLETTERO*/
- /* 80 */ 80,/*LATINCAPITALLETTERP*/
- /* 81 */ 81,/*LATINCAPITALLETTERQ*/
- /* 82 */ 82,/*LATINCAPITALLETTERR*/
- /* 83 */ 83,/*LATINCAPITALLETTERS*/
- /* 84 */ 84,/*LATINCAPITALLETTERT*/
- /* 85 */ 85,/*LATINCAPITALLETTERU*/
- /* 86 */ 86,/*LATINCAPITALLETTERV*/
- /* 87 */ 87,/*LATINCAPITALLETTERW*/
- /* 88 */ 88,/*LATINCAPITALLETTERX*/
- /* 89 */ 89,/*LATINCAPITALLETTERY*/
- /* 90 */ 90,/*LATINCAPITALLETTERZ*/
- /* 91 */ 91,/*LEFTSQUAREBRACKET*/
- /* 92 */ 92,/*REVERSESOLIDUS*/
- /* 93 */ 93,/*RIGHTSQUAREBRACKET*/
- /* 94 */ 94,/*CIRCUMFLEXACCENT*/
- /* 95 */ 95,/*LOWLINE*/
- /* 96 */ 96,/*GRAVEACCENT*/
- /* 97 */ 97,/*LATINSMALLLETTERA*/
- /* 98 */ 98,/*LATINSMALLLETTERB*/
- /* 99 */ 99,/*LATINSMALLLETTERC*/
- /* 100 */ 100,/*LATINSMALLLETTERD*/
- /* 101 */ 101,/*LATINSMALLLETTERE*/
- /* 102 */ 102,/*LATINSMALLLETTERF*/
- /* 103 */ 103,/*LATINSMALLLETTERG*/
- /* 104 */ 104,/*LATINSMALLLETTERH*/
- /* 105 */ 105,/*LATINSMALLLETTERI*/
- /* 106 */ 106,/*LATINSMALLLETTERJ*/
- /* 107 */ 107,/*LATINSMALLLETTERK*/
- /* 108 */ 108,/*LATINSMALLLETTERL*/
- /* 109 */ 109,/*LATINSMALLLETTERM*/
- /* 110 */ 110,/*LATINSMALLLETTERN*/
- /* 111 */ 111,/*LATINSMALLLETTERO*/
- /* 112 */ 112,/*LATINSMALLLETTERP*/
- /* 113 */ 113,/*LATINSMALLLETTERQ*/
- /* 114 */ 114,/*LATINSMALLLETTERR*/
- /* 115 */ 115,/*LATINSMALLLETTERS*/
- /* 116 */ 116,/*LATINSMALLLETTERT*/
- /* 117 */ 117,/*LATINSMALLLETTERU*/
- /* 118 */ 118,/*LATINSMALLLETTERV*/
- /* 119 */ 119,/*LATINSMALLLETTERW*/
- /* 120 */ 120,/*LATINSMALLLETTERX*/
- /* 121 */ 121,/*LATINSMALLLETTERY*/
- /* 122 */ 122,/*LATINSMALLLETTERZ*/
- /* 123 */ 123,/*LEFTCURLYBRACKET*/
- /* 124 */ 124,/*VERTICALLINE*/
- /* 125 */ 125,/*RIGHTCURLYBRACKET*/
- /* 126 */ 126,/*TILDE*/
- 127,
- /* 128 */ 199,/*LATINCAPITALLETTERCWITHCEDILLA*/
- /* 129 */ 252,/*LATINSMALLLETTERUWITHDIAERESIS*/
- /* 130 */ 233,/*LATINSMALLLETTEREWITHACUTE*/
- /* 131 */ 226,/*LATINSMALLLETTERAWITHCIRCUMFLEX*/
- /* 132 */ 228,/*LATINSMALLLETTERAWITHDIAERESIS*/
- /* 133 */ 224,/*LATINSMALLLETTERAWITHGRAVE*/
- /* 134 */ 229,/*LATINSMALLLETTERAWITHRINGABOVE*/
- /* 135 */ 231,/*LATINSMALLLETTERCWITHCEDILLA*/
- /* 136 */ 234,/*LATINSMALLLETTEREWITHCIRCUMFLEX*/
- /* 137 */ 235,/*LATINSMALLLETTEREWITHDIAERESIS*/
- /* 138 */ 232,/*LATINSMALLLETTEREWITHGRAVE*/
- /* 139 */ 239,/*LATINSMALLLETTERIWITHDIAERESIS*/
- /* 140 */ 238,/*LATINSMALLLETTERIWITHCIRCUMFLEX*/
- /* 141 */ 305,/*LATINSMALLLETTERDOTLESSI*/
- /* 142 */ 196,/*LATINCAPITALLETTERAWITHDIAERESIS*/
- /* 143 */ 197,/*LATINCAPITALLETTERAWITHRINGABOVE*/
- /* 144 */ 201,/*LATINCAPITALLETTEREWITHACUTE*/
- /* 145 */ 230,/*LATINSMALLLETTERAE*/
- /* 146 */ 198,/*LATINCAPITALLETTERAE*/
- /* 147 */ 244,/*LATINSMALLLETTEROWITHCIRCUMFLEX*/
- /* 148 */ 246,/*LATINSMALLLETTEROWITHDIAERESIS*/
- /* 149 */ 242,/*LATINSMALLLETTEROWITHGRAVE*/
- /* 150 */ 251,/*LATINSMALLLETTERUWITHCIRCUMFLEX*/
- /* 151 */ 249,/*LATINSMALLLETTERUWITHGRAVE*/
- /* 152 */ 304,/*LATINCAPITALLETTERIWITHDOTABOVE*/
- /* 153 */ 214,/*LATINCAPITALLETTEROWITHDIAERESIS*/
- /* 154 */ 220,/*LATINCAPITALLETTERUWITHDIAERESIS*/
- /* 155 */ 248,/*LATINSMALLLETTEROWITHSTROKE*/
- /* 156 */ 163,/*POUNDSIGN*/
- /* 157 */ 216,/*LATINCAPITALLETTEROWITHSTROKE*/
- /* 158 */ 350,/*LATINCAPITALLETTERSWITHCEDILLA*/
- /* 159 */ 351,/*LATINSMALLLETTERSWITHCEDILLA*/
- /* 160 */ 225,/*LATINSMALLLETTERAWITHACUTE*/
- /* 161 */ 237,/*LATINSMALLLETTERIWITHACUTE*/
- /* 162 */ 243,/*LATINSMALLLETTEROWITHACUTE*/
- /* 163 */ 250,/*LATINSMALLLETTERUWITHACUTE*/
- /* 164 */ 241,/*LATINSMALLLETTERNWITHTILDE*/
- /* 165 */ 209,/*LATINCAPITALLETTERNWITHTILDE*/
- /* 166 */ 286,/*LATINCAPITALLETTERGWITHBREVE*/
- /* 167 */ 287,/*LATINSMALLLETTERGWITHBREVE*/
- /* 168 */ 191,/*INVERTEDQUESTIONMARK*/
- /* 169 */ 174,/*REGISTEREDSIGN*/
- /* 170 */ 172,/*NOTSIGN*/
- /* 171 */ 189,/*VULGARFRACTIONONEHALF*/
- /* 172 */ 188,/*VULGARFRACTIONONEQUARTER*/
- /* 173 */ 161,/*INVERTEDEXCLAMATIONMARK*/
- /* 174 */ 171,/*LEFT-POINTINGDOUBLEANGLEQUOTATIONMARK*/
- /* 175 */ 187,/*RIGHT-POINTINGDOUBLEANGLEQUOTATIONMARK*/
- /* 176 */ 9617,/*LIGHTSHADE*/
- /* 177 */ 9618,/*MEDIUMSHADE*/
- /* 178 */ 9619,/*DARKSHADE*/
- /* 179 */ 9474,/*BOXDRAWINGSLIGHTVERTICAL*/
- /* 180 */ 9508,/*BOXDRAWINGSLIGHTVERTICALANDLEFT*/
- /* 181 */ 193,/*LATINCAPITALLETTERAWITHACUTE*/
- /* 182 */ 194,/*LATINCAPITALLETTERAWITHCIRCUMFLEX*/
- /* 183 */ 192,/*LATINCAPITALLETTERAWITHGRAVE*/
- /* 184 */ 169,/*COPYRIGHTSIGN*/
- /* 185 */ 9571,/*BOXDRAWINGSDOUBLEVERTICALANDLEFT*/
- /* 186 */ 9553,/*BOXDRAWINGSDOUBLEVERTICAL*/
- /* 187 */ 9559,/*BOXDRAWINGSDOUBLEDOWNANDLEFT*/
- /* 188 */ 9565,/*BOXDRAWINGSDOUBLEUPANDLEFT*/
- /* 189 */ 162,/*CENTSIGN*/
- /* 190 */ 165,/*YENSIGN*/
- /* 191 */ 9488,/*BOXDRAWINGSLIGHTDOWNANDLEFT*/
- /* 192 */ 9492,/*BOXDRAWINGSLIGHTUPANDRIGHT*/
- /* 193 */ 9524,/*BOXDRAWINGSLIGHTUPANDHORIZONTAL*/
- /* 194 */ 9516,/*BOXDRAWINGSLIGHTDOWNANDHORIZONTAL*/
- /* 195 */ 9500,/*BOXDRAWINGSLIGHTVERTICALANDRIGHT*/
- /* 196 */ 9472,/*BOXDRAWINGSLIGHTHORIZONTAL*/
- /* 197 */ 9532,/*BOXDRAWINGSLIGHTVERTICALANDHORIZONTAL*/
- /* 198 */ 227,/*LATINSMALLLETTERAWITHTILDE*/
- /* 199 */ 195,/*LATINCAPITALLETTERAWITHTILDE*/
- /* 200 */ 9562,/*BOXDRAWINGSDOUBLEUPANDRIGHT*/
- /* 201 */ 9556,/*BOXDRAWINGSDOUBLEDOWNANDRIGHT*/
- /* 202 */ 9577,/*BOXDRAWINGSDOUBLEUPANDHORIZONTAL*/
- /* 203 */ 9574,/*BOXDRAWINGSDOUBLEDOWNANDHORIZONTAL*/
- /* 204 */ 9568,/*BOXDRAWINGSDOUBLEVERTICALANDRIGHT*/
- /* 205 */ 9552,/*BOXDRAWINGSDOUBLEHORIZONTAL*/
- /* 206 */ 9580,/*BOXDRAWINGSDOUBLEVERTICALANDHORIZONTAL*/
- /* 207 */ 164,/*CURRENCYSIGN*/
- /* 208 */ 186,/*MASCULINEORDINALINDICATOR*/
- /* 209 */ 170,/*FEMININEORDINALINDICATOR*/
- /* 210 */ 202,/*LATINCAPITALLETTEREWITHCIRCUMFLEX*/
- /* 211 */ 203,/*LATINCAPITALLETTEREWITHDIAERESIS*/
- /* 212 */ 200,/*LATINCAPITALLETTEREWITHGRAVE*/
- 213,
- /* 214 */ 205,/*LATINCAPITALLETTERIWITHACUTE*/
- /* 215 */ 206,/*LATINCAPITALLETTERIWITHCIRCUMFLEX*/
- /* 216 */ 207,/*LATINCAPITALLETTERIWITHDIAERESIS*/
- /* 217 */ 9496,/*BOXDRAWINGSLIGHTUPANDLEFT*/
- /* 218 */ 9484,/*BOXDRAWINGSLIGHTDOWNANDRIGHT*/
- /* 219 */ 9608,/*FULLBLOCK*/
- /* 220 */ 9604,/*LOWERHALFBLOCK*/
- /* 221 */ 166,/*BROKENBAR*/
- /* 222 */ 204,/*LATINCAPITALLETTERIWITHGRAVE*/
- /* 223 */ 9600,/*UPPERHALFBLOCK*/
- /* 224 */ 211,/*LATINCAPITALLETTEROWITHACUTE*/
- /* 225 */ 223,/*LATINSMALLLETTERSHARPS*/
- /* 226 */ 212,/*LATINCAPITALLETTEROWITHCIRCUMFLEX*/
- /* 227 */ 210,/*LATINCAPITALLETTEROWITHGRAVE*/
- /* 228 */ 245,/*LATINSMALLLETTEROWITHTILDE*/
- /* 229 */ 213,/*LATINCAPITALLETTEROWITHTILDE*/
- /* 230 */ 181,/*MICROSIGN*/
- 231,
- /* 232 */ 215,/*MULTIPLICATIONSIGN*/
- /* 233 */ 218,/*LATINCAPITALLETTERUWITHACUTE*/
- /* 234 */ 219,/*LATINCAPITALLETTERUWITHCIRCUMFLEX*/
- /* 235 */ 217,/*LATINCAPITALLETTERUWITHGRAVE*/
- /* 236 */ 236,/*LATINSMALLLETTERIWITHGRAVE*/
- /* 237 */ 255,/*LATINSMALLLETTERYWITHDIAERESIS*/
- /* 238 */ 175,/*MACRON*/
- /* 239 */ 180,/*ACUTEACCENT*/
- /* 240 */ 173,/*SOFTHYPHEN*/
- /* 241 */ 177,/*PLUS-MINUSSIGN*/
- 242,
- /* 243 */ 190,/*VULGARFRACTIONTHREEQUARTERS*/
- /* 244 */ 182,/*PILCROWSIGN*/
- /* 245 */ 167,/*SECTIONSIGN*/
- /* 246 */ 247,/*DIVISIONSIGN*/
- /* 247 */ 184,/*CEDILLA*/
- /* 248 */ 176,/*DEGREESIGN*/
- /* 249 */ 168,/*DIAERESIS*/
- /* 250 */ 183,/*MIDDLEDOT*/
- /* 251 */ 185,/*SUPERSCRIPTONE*/
- /* 252 */ 179,/*SUPERSCRIPTTHREE*/
- /* 253 */ 178,/*SUPERSCRIPTTWO*/
- /* 254 */ 9632,/*BLACKSQUARE*/
- /* 255 */ 160/*NO-BREAKSPACE*/
+static convert_t cp1251[] = {
+	{ 0, 0 },
+	{ 1, 1 },
+	{ 2, 2 },
+	{ 3, 3 },
+	{ 4, 4 },
+	{ 5, 5 },
+	{ 6, 6 },
+	{ 7, 7 },
+	{ 8, 8 },
+	{ 9, 9 },
+	{ 10, 10 },
+	{ 11, 11 },
+	{ 12, 12 },
+	{ 13, 13 },
+	{ 14, 14 },
+	{ 15, 15 },
+	{ 16, 16 },
+	{ 17, 17 },
+	{ 18, 18 },
+	{ 19, 19 },
+	{ 20, 20 },
+	{ 21, 21 },
+	{ 22, 22 },
+	{ 23, 23 },
+	{ 24, 24 },
+	{ 25, 25 },
+	{ 26, 26 },
+	{ 27, 27 },
+	{ 28, 28 },
+	{ 29, 29 },
+	{ 30, 30 },
+	{ 31, 31 },
+	{ 32, 32 },
+	{ 33, 33 },
+	{ 34, 34 },
+	{ 35, 35 },
+	{ 36, 36 },
+	{ 37, 37 },
+	{ 38, 38 },
+	{ 39, 39 },
+	{ 40, 40 },
+	{ 41, 41 },
+	{ 42, 42 },
+	{ 43, 43 },
+	{ 44, 44 },
+	{ 45, 45 },
+	{ 46, 46 },
+	{ 47, 47 },
+	{ 48, 48 },
+	{ 49, 49 },
+	{ 50, 50 },
+	{ 51, 51 },
+	{ 52, 52 },
+	{ 53, 53 },
+	{ 54, 54 },
+	{ 55, 55 },
+	{ 56, 56 },
+	{ 57, 57 },
+	{ 58, 58 },
+	{ 59, 59 },
+	{ 60, 60 },
+	{ 61, 61 },
+	{ 62, 62 },
+	{ 63, 63 },
+	{ 64, 64 },
+	{ 65, 65 },
+	{ 66, 66 },
+	{ 67, 67 },
+	{ 68, 68 },
+	{ 69, 69 },
+	{ 70, 70 },
+	{ 71, 71 },
+	{ 72, 72 },
+	{ 73, 73 },
+	{ 74, 74 },
+	{ 75, 75 },
+	{ 76, 76 },
+	{ 77, 77 },
+	{ 78, 78 },
+	{ 79, 79 },
+	{ 80, 80 },
+	{ 81, 81 },
+	{ 82, 82 },
+	{ 83, 83 },
+	{ 84, 84 },
+	{ 85, 85 },
+	{ 86, 86 },
+	{ 87, 87 },
+	{ 88, 88 },
+	{ 89, 89 },
+	{ 90, 90 },
+	{ 91, 91 },
+	{ 92, 92 },
+	{ 93, 93 },
+	{ 94, 94 },
+	{ 95, 95 },
+	{ 96, 96 },
+	{ 97, 97 },
+	{ 98, 98 },
+	{ 99, 99 },
+	{ 100, 100 },
+	{ 101, 101 },
+	{ 102, 102 },
+	{ 103, 103 },
+	{ 104, 104 },
+	{ 105, 105 },
+	{ 106, 106 },
+	{ 107, 107 },
+	{ 108, 108 },
+	{ 109, 109 },
+	{ 110, 110 },
+	{ 111, 111 },
+	{ 112, 112 },
+	{ 113, 113 },
+	{ 114, 114 },
+	{ 115, 115 },
+	{ 116, 116 },
+	{ 117, 117 },
+	{ 118, 118 },
+	{ 119, 119 },
+	{ 120, 120 },
+	{ 121, 121 },
+	{ 122, 122 },
+	{ 123, 123 },
+	{ 124, 124 },
+	{ 125, 125 },
+	{ 126, 126 },
+	{ 127, 127 },
+	{ 128, 1026 },
+	{ 129, 1027 },
+	{ 130, 8218 },
+	{ 131, 1107 },
+	{ 132, 8222 },
+	{ 133, 8230 },
+	{ 134, 8224 },
+	{ 135, 8225 },
+	{ 136, 8364 },
+	{ 137, 8240 },
+	{ 138, 1033 },
+	{ 139, 8249 },
+	{ 140, 1034 },
+	{ 141, 1036 },
+	{ 142, 1035 },
+	{ 143, 1039 },
+	{ 144, 1106 },
+	{ 145, 8216 },
+	{ 146, 8217 },
+	{ 147, 8220 },
+	{ 148, 8221 },
+	{ 149, 8226 },
+	{ 150, 8211 },
+	{ 151, 8212 },
+	{ 152, 152 },
+	{ 153, 8482 },
+	{ 154, 1113 },
+	{ 155, 8250 },
+	{ 156, 1114 },
+	{ 157, 1116 },
+	{ 158, 1115 },
+	{ 159, 1119 },
+	{ 160, 160 },
+	{ 161, 1038 },
+	{ 162, 1118 },
+	{ 163, 1032 },
+	{ 164, 164 },
+	{ 165, 1168 },
+	{ 166, 166 },
+	{ 167, 167 },
+	{ 168, 1025 },
+	{ 169, 169 },
+	{ 170, 1028 },
+	{ 171, 171 },
+	{ 172, 172 },
+	{ 173, 173 },
+	{ 174, 174 },
+	{ 175, 1031 },
+	{ 176, 176 },
+	{ 177, 177 },
+	{ 178, 1030 },
+	{ 179, 1110 },
+	{ 180, 1169 },
+	{ 181, 181 },
+	{ 182, 182 },
+	{ 183, 183 },
+	{ 184, 1105 },
+	{ 185, 8470 },
+	{ 186, 1108 },
+	{ 187, 187 },
+	{ 188, 1112 },
+	{ 189, 1029 },
+	{ 190, 1109 },
+	{ 191, 1111 },
+	{ 192, 1040 },
+	{ 193, 1041 },
+	{ 194, 1042 },
+	{ 195, 1043 },
+	{ 196, 1044 },
+	{ 197, 1045 },
+	{ 198, 1046 },
+	{ 199, 1047 },
+	{ 200, 1048 },
+	{ 201, 1049 },
+	{ 202, 1050 },
+	{ 203, 1051 },
+	{ 204, 1052 },
+	{ 205, 1053 },
+	{ 206, 1054 },
+	{ 207, 1055 },
+	{ 208, 1056 },
+	{ 209, 1057 },
+	{ 210, 1058 },
+	{ 211, 1059 },
+	{ 212, 1060 },
+	{ 213, 1061 },
+	{ 214, 1062 },
+	{ 215, 1063 },
+	{ 216, 1064 },
+	{ 217, 1065 },
+	{ 218, 1066 },
+	{ 219, 1067 },
+	{ 220, 1068 },
+	{ 221, 1069 },
+	{ 222, 1070 },
+	{ 223, 1071 },
+	{ 224, 1072 },
+	{ 225, 1073 },
+	{ 226, 1074 },
+	{ 227, 1075 },
+	{ 228, 1076 },
+	{ 229, 1077 },
+	{ 230, 1078 },
+	{ 231, 1079 },
+	{ 232, 1080 },
+	{ 233, 1081 },
+	{ 234, 1082 },
+	{ 235, 1083 },
+	{ 236, 1084 },
+	{ 237, 1085 },
+	{ 238, 1086 },
+	{ 239, 1087 },
+	{ 240, 1088 },
+	{ 241, 1089 },
+	{ 242, 1090 },
+	{ 243, 1091 },
+	{ 244, 1092 },
+	{ 245, 1093 },
+	{ 246, 1094 },
+	{ 247, 1095 },
+	{ 248, 1096 },
+	{ 249, 1097 },
+	{ 250, 1098 },
+	{ 251, 1099 },
+	{ 252, 1100 },
+	{ 253, 1101 },
+	{ 254, 1102 },
+	{ 255, 1103 },
+	{ 32, 8194 },
+	{ 32, 8195 },
+	{ 32, 8201 },
+	{ 65, 192 },
+	{ 65, 193 },
+	{ 65, 194 },
+	{ 65, 195 },
+	{ 65, 196 },
+	{ 65, 197 },
+	{ 65, 256 },
+	{ 65, 258 },
+	{ 65, 260 },
+	{ 65, 461 },
+	{ 97, 224 },
+	{ 97, 225 },
+	{ 97, 226 },
+	{ 97, 227 },
+	{ 97, 228 },
+	{ 97, 229 },
+	{ 97, 257 },
+	{ 97, 259 },
+	{ 97, 261 },
+	{ 97, 462 },
+	{ 67, 199 },
+	{ 67, 262 },
+	{ 67, 264 },
+	{ 67, 266 },
+	{ 67, 268 },
+	{ 99, 231 },
+	{ 99, 263 },
+	{ 99, 265 },
+	{ 99, 267 },
+	{ 99, 269 },
+	{ 68, 270 },
+	{ 100, 271 },
+	{ 69, 200 },
+	{ 69, 201 },
+	{ 69, 202 },
+	{ 69, 203 },
+	{ 69, 274 },
+	{ 69, 276 },
+	{ 69, 278 },
+	{ 69, 280 },
+	{ 69, 282 },
+	{ 101, 232 },
+	{ 101, 233 },
+	{ 101, 234 },
+	{ 101, 235 },
+	{ 101, 275 },
+	{ 101, 277 },
+	{ 101, 279 },
+	{ 101, 281 },
+	{ 101, 283 },
+	{ 71, 284 },
+	{ 71, 286 },
+	{ 71, 288 },
+	{ 71, 290 },
+	{ 71, 486 },
+	{ 71, 500 },
+	{ 103, 285 },
+	{ 103, 287 },
+	{ 103, 289 },
+	{ 103, 291 },
+	{ 103, 487 },
+	{ 103, 501 },
+	{ 72, 292 },
+	{ 104, 293 },
+	{ 73, 204 },
+	{ 73, 205 },
+	{ 73, 206 },
+	{ 73, 207 },
+	{ 73, 296 },
+	{ 73, 298 },
+	{ 73, 300 },
+	{ 73, 302 },
+	{ 73, 304 },
+	{ 73, 463 },
+	{ 105, 236 },
+	{ 105, 237 },
+	{ 105, 238 },
+	{ 105, 239 },
+	{ 105, 297 },
+	{ 105, 299 },
+	{ 105, 301 },
+	{ 105, 303 },
+	{ 105, 305 },
+	{ 105, 464 },
+	{ 74, 308 },
+	{ 106, 309 },
+	{ 75, 310 },
+	{ 75, 488 },
+	{ 107, 311 },
+	{ 107, 489 },
+	{ 76, 313 },
+	{ 76, 315 },
+	{ 76, 317 },
+	{ 76, 319 },
+	{ 76, 321 },
+	{ 108, 314 },
+	{ 108, 316 },
+	{ 108, 318 },
+	{ 108, 320 },
+	{ 108, 322 },
+	{ 77, 209 },
+	{ 77, 323 },
+	{ 77, 325 },
+	{ 77, 327 },
+	{ 109, 241 },
+	{ 109, 324 },
+	{ 109, 326 },
+	{ 109, 328 },
+	{ 109, 329 },
+	{ 78, 210 },
+	{ 78, 211 },
+	{ 78, 212 },
+	{ 78, 213 },
+	{ 78, 214 },
+	{ 78, 216 },
+	{ 78, 332 },
+	{ 78, 334 },
+	{ 78, 336 },
+	{ 78, 465 },
+	{ 78, 490 },
+	{ 110, 242 },
+	{ 110, 243 },
+	{ 110, 244 },
+	{ 110, 245 },
+	{ 110, 246 },
+	{ 110, 248 },
+	{ 110, 333 },
+	{ 110, 335 },
+	{ 110, 337 },
+	{ 110, 466 },
+	{ 110, 491 },
+	{ 82, 340 },
+	{ 82, 342 },
+	{ 82, 344 },
+	{ 114, 341 },
+	{ 114, 343 },
+	{ 114, 345 },
+	{ 83, 346 },
+	{ 83, 348 },
+	{ 83, 350 },
+	{ 83, 352 },
+	{ 115, 347 },
+	{ 115, 349 },
+	{ 115, 351 },
+	{ 115, 353 },
+	{ 84, 354 },
+	{ 84, 356 },
+	{ 116, 355 },
+	{ 116, 357 },
+	{ 85, 217 },
+	{ 85, 218 },
+	{ 85, 219 },
+	{ 85, 220 },
+	{ 85, 360 },
+	{ 85, 362 },
+	{ 85, 364 },
+	{ 85, 366 },
+	{ 85, 368 },
+	{ 85, 370 },
+	{ 85, 467 },
+	{ 117, 249 },
+	{ 117, 250 },
+	{ 117, 251 },
+	{ 117, 252 },
+	{ 117, 361 },
+	{ 117, 363 },
+	{ 117, 365 },
+	{ 117, 367 },
+	{ 117, 369 },
+	{ 117, 371 },
+	{ 117, 468 },
+	{ 87, 372 },
+	{ 119, 373 },
+	{ 89, 221 },
+	{ 89, 374 },
+	{ 89, 376 },
+	{ 121, 253 },
+	{ 121, 255 },
+	{ 121, 375 },
+	{ 90, 377 },
+	{ 90, 379 },
+	{ 90, 381 },
+	{ 122, 378 },
+	{ 122, 380 },
+	{ 122, 382 },
 };
-charconvert cp860[] = {
- /* 0 */ 0,/*<tdbgcolor="C0C0C0"><fontface="Arial"color="000000"><b>ISO/IEC10646-1:2000CharacterName</b></font>*/
- 1,
- 2,
- 3,
- 4,
- 5,
- 6,
- 7,
- 8,
- 9,
- 10,
- 11,
- 12,
- 13,
- 14,
- 15,
- 16,
- 17,
- 18,
- 19,
- 20,
- 21,
- 22,
- 23,
- 24,
- 25,
- 26,
- 27,
- 28,
- 29,
- 30,
- 31,
- /* 32 */ 32,/*SPACE*/
- /* 33 */ 33,/*EXCLAMATIONMARK*/
- /* 34 */ 34,/*QUOTATIONMARK*/
- /* 35 */ 35,/*NUMBERSIGN*/
- /* 36 */ 36,/*DOLLARSIGN*/
- /* 37 */ 37,/*PERCENTSIGN*/
- /* 38 */ 38,/*AMPERSAND*/
- /* 39 */ 39,/*APOSTROPHE*/
- /* 40 */ 40,/*LEFTPARENTHESIS*/
- /* 41 */ 41,/*RIGHTPARENTHESIS*/
- /* 42 */ 42,/*ASTERISK*/
- /* 43 */ 43,/*PLUSSIGN*/
- /* 44 */ 44,/*COMMA*/
- /* 45 */ 45,/*HYPHEN-MINUS*/
- /* 46 */ 46,/*FULLSTOP*/
- /* 47 */ 47,/*SOLIDUS*/
- /* 48 */ 48,/*DIGITZERO*/
- /* 49 */ 49,/*DIGITONE*/
- /* 50 */ 50,/*DIGITTWO*/
- /* 51 */ 51,/*DIGITTHREE*/
- /* 52 */ 52,/*DIGITFOUR*/
- /* 53 */ 53,/*DIGITFIVE*/
- /* 54 */ 54,/*DIGITSIX*/
- /* 55 */ 55,/*DIGITSEVEN*/
- /* 56 */ 56,/*DIGITEIGHT*/
- /* 57 */ 57,/*DIGITNINE*/
- /* 58 */ 58,/*COLON*/
- /* 59 */ 59,/*SEMICOLON*/
- /* 60 */ 60,/*LESS-THANSIGN*/
- /* 61 */ 61,/*EQUALSSIGN*/
- /* 62 */ 62,/*GREATER-THANSIGN*/
- /* 63 */ 63,/*QUESTIONMARK*/
- /* 64 */ 64,/*COMMERCIALAT*/
- /* 65 */ 65,/*LATINCAPITALLETTERA*/
- /* 66 */ 66,/*LATINCAPITALLETTERB*/
- /* 67 */ 67,/*LATINCAPITALLETTERC*/
- /* 68 */ 68,/*LATINCAPITALLETTERD*/
- /* 69 */ 69,/*LATINCAPITALLETTERE*/
- /* 70 */ 70,/*LATINCAPITALLETTERF*/
- /* 71 */ 71,/*LATINCAPITALLETTERG*/
- /* 72 */ 72,/*LATINCAPITALLETTERH*/
- /* 73 */ 73,/*LATINCAPITALLETTERI*/
- /* 74 */ 74,/*LATINCAPITALLETTERJ*/
- /* 75 */ 75,/*LATINCAPITALLETTERK*/
- /* 76 */ 76,/*LATINCAPITALLETTERL*/
- /* 77 */ 77,/*LATINCAPITALLETTERM*/
- /* 78 */ 78,/*LATINCAPITALLETTERN*/
- /* 79 */ 79,/*LATINCAPITALLETTERO*/
- /* 80 */ 80,/*LATINCAPITALLETTERP*/
- /* 81 */ 81,/*LATINCAPITALLETTERQ*/
- /* 82 */ 82,/*LATINCAPITALLETTERR*/
- /* 83 */ 83,/*LATINCAPITALLETTERS*/
- /* 84 */ 84,/*LATINCAPITALLETTERT*/
- /* 85 */ 85,/*LATINCAPITALLETTERU*/
- /* 86 */ 86,/*LATINCAPITALLETTERV*/
- /* 87 */ 87,/*LATINCAPITALLETTERW*/
- /* 88 */ 88,/*LATINCAPITALLETTERX*/
- /* 89 */ 89,/*LATINCAPITALLETTERY*/
- /* 90 */ 90,/*LATINCAPITALLETTERZ*/
- /* 91 */ 91,/*LEFTSQUAREBRACKET*/
- /* 92 */ 92,/*REVERSESOLIDUS*/
- /* 93 */ 93,/*RIGHTSQUAREBRACKET*/
- /* 94 */ 94,/*CIRCUMFLEXACCENT*/
- /* 95 */ 95,/*LOWLINE*/
- /* 96 */ 96,/*GRAVEACCENT*/
- /* 97 */ 97,/*LATINSMALLLETTERA*/
- /* 98 */ 98,/*LATINSMALLLETTERB*/
- /* 99 */ 99,/*LATINSMALLLETTERC*/
- /* 100 */ 100,/*LATINSMALLLETTERD*/
- /* 101 */ 101,/*LATINSMALLLETTERE*/
- /* 102 */ 102,/*LATINSMALLLETTERF*/
- /* 103 */ 103,/*LATINSMALLLETTERG*/
- /* 104 */ 104,/*LATINSMALLLETTERH*/
- /* 105 */ 105,/*LATINSMALLLETTERI*/
- /* 106 */ 106,/*LATINSMALLLETTERJ*/
- /* 107 */ 107,/*LATINSMALLLETTERK*/
- /* 108 */ 108,/*LATINSMALLLETTERL*/
- /* 109 */ 109,/*LATINSMALLLETTERM*/
- /* 110 */ 110,/*LATINSMALLLETTERN*/
- /* 111 */ 111,/*LATINSMALLLETTERO*/
- /* 112 */ 112,/*LATINSMALLLETTERP*/
- /* 113 */ 113,/*LATINSMALLLETTERQ*/
- /* 114 */ 114,/*LATINSMALLLETTERR*/
- /* 115 */ 115,/*LATINSMALLLETTERS*/
- /* 116 */ 116,/*LATINSMALLLETTERT*/
- /* 117 */ 117,/*LATINSMALLLETTERU*/
- /* 118 */ 118,/*LATINSMALLLETTERV*/
- /* 119 */ 119,/*LATINSMALLLETTERW*/
- /* 120 */ 120,/*LATINSMALLLETTERX*/
- /* 121 */ 121,/*LATINSMALLLETTERY*/
- /* 122 */ 122,/*LATINSMALLLETTERZ*/
- /* 123 */ 123,/*LEFTCURLYBRACKET*/
- /* 124 */ 124,/*VERTICALLINE*/
- /* 125 */ 125,/*RIGHTCURLYBRACKET*/
- /* 126 */ 126,/*TILDE*/
- 127,
- /* 128 */ 199,/*LATINCAPITALLETTERCWITHCEDILLA*/
- /* 129 */ 252,/*LATINSMALLLETTERUWITHDIAERESIS*/
- /* 130 */ 233,/*LATINSMALLLETTEREWITHACUTE*/
- /* 131 */ 226,/*LATINSMALLLETTERAWITHCIRCUMFLEX*/
- /* 132 */ 227,/*LATINSMALLLETTERAWITHTILDE*/
- /* 133 */ 224,/*LATINSMALLLETTERAWITHGRAVE*/
- /* 134 */ 193,/*LATINCAPITALLETTERAWITHACUTE*/
- /* 135 */ 231,/*LATINSMALLLETTERCWITHCEDILLA*/
- /* 136 */ 234,/*LATINSMALLLETTEREWITHCIRCUMFLEX*/
- /* 137 */ 202,/*LATINCAPITALLETTEREWITHCIRCUMFLEX*/
- /* 138 */ 232,/*LATINSMALLLETTEREWITHGRAVE*/
- /* 139 */ 205,/*LATINCAPITALLETTERIWITHACUTE*/
- /* 140 */ 212,/*LATINCAPITALLETTEROWITHCIRCUMFLEX*/
- /* 141 */ 236,/*LATINSMALLLETTERIWITHGRAVE*/
- /* 142 */ 195,/*LATINCAPITALLETTERAWITHTILDE*/
- /* 143 */ 194,/*LATINCAPITALLETTERAWITHCIRCUMFLEX*/
- /* 144 */ 201,/*LATINCAPITALLETTEREWITHACUTE*/
- /* 145 */ 192,/*LATINCAPITALLETTERAWITHGRAVE*/
- /* 146 */ 200,/*LATINCAPITALLETTEREWITHGRAVE*/
- /* 147 */ 244,/*LATINSMALLLETTEROWITHCIRCUMFLEX*/
- /* 148 */ 245,/*LATINSMALLLETTEROWITHTILDE*/
- /* 149 */ 242,/*LATINSMALLLETTEROWITHGRAVE*/
- /* 150 */ 218,/*LATINCAPITALLETTERUWITHACUTE*/
- /* 151 */ 249,/*LATINSMALLLETTERUWITHGRAVE*/
- /* 152 */ 204,/*LATINCAPITALLETTERIWITHGRAVE*/
- /* 153 */ 213,/*LATINCAPITALLETTEROWITHTILDE*/
- /* 154 */ 220,/*LATINCAPITALLETTERUWITHDIAERESIS*/
- /* 155 */ 162,/*CENTSIGN*/
- /* 156 */ 163,/*POUNDSIGN*/
- /* 157 */ 217,/*LATINCAPITALLETTERUWITHGRAVE*/
- /* 158 */ 8359,/*PESETASIGN*/
- /* 159 */ 211,/*LATINCAPITALLETTEROWITHACUTE*/
- /* 160 */ 225,/*LATINSMALLLETTERAWITHACUTE*/
- /* 161 */ 237,/*LATINSMALLLETTERIWITHACUTE*/
- /* 162 */ 243,/*LATINSMALLLETTEROWITHACUTE*/
- /* 163 */ 250,/*LATINSMALLLETTERUWITHACUTE*/
- /* 164 */ 241,/*LATINSMALLLETTERNWITHTILDE*/
- /* 165 */ 209,/*LATINCAPITALLETTERNWITHTILDE*/
- /* 166 */ 170,/*FEMININEORDINALINDICATOR*/
- /* 167 */ 186,/*MASCULINEORDINALINDICATOR*/
- /* 168 */ 191,/*INVERTEDQUESTIONMARK*/
- /* 169 */ 210,/*LATINCAPITALLETTEROWITHGRAVE*/
- /* 170 */ 172,/*NOTSIGN*/
- /* 171 */ 189,/*VULGARFRACTIONONEHALF*/
- /* 172 */ 188,/*VULGARFRACTIONONEQUARTER*/
- /* 173 */ 161,/*INVERTEDEXCLAMATIONMARK*/
- /* 174 */ 171,/*LEFT-POINTINGDOUBLEANGLEQUOTATIONMARK*/
- /* 175 */ 187,/*RIGHT-POINTINGDOUBLEANGLEQUOTATIONMARK*/
- /* 176 */ 9617,/*LIGHTSHADE*/
- /* 177 */ 9618,/*MEDIUMSHADE*/
- /* 178 */ 9619,/*DARKSHADE*/
- /* 179 */ 9474,/*BOXDRAWINGSLIGHTVERTICAL*/
- /* 180 */ 9508,/*BOXDRAWINGSLIGHTVERTICALANDLEFT*/
- /* 181 */ 9569,/*BOXDRAWINGSVERTICALSINGLEANDLEFTDOUBLE*/
- /* 182 */ 9570,/*BOXDRAWINGSVERTICALDOUBLEANDLEFTSINGLE*/
- /* 183 */ 9558,/*BOXDRAWINGSDOWNDOUBLEANDLEFTSINGLE*/
- /* 184 */ 9557,/*BOXDRAWINGSDOWNSINGLEANDLEFTDOUBLE*/
- /* 185 */ 9571,/*BOXDRAWINGSDOUBLEVERTICALANDLEFT*/
- /* 186 */ 9553,/*BOXDRAWINGSDOUBLEVERTICAL*/
- /* 187 */ 9559,/*BOXDRAWINGSDOUBLEDOWNANDLEFT*/
- /* 188 */ 9565,/*BOXDRAWINGSDOUBLEUPANDLEFT*/
- /* 189 */ 9564,/*BOXDRAWINGSUPDOUBLEANDLEFTSINGLE*/
- /* 190 */ 9563,/*BOXDRAWINGSUPSINGLEANDLEFTDOUBLE*/
- /* 191 */ 9488,/*BOXDRAWINGSLIGHTDOWNANDLEFT*/
- /* 192 */ 9492,/*BOXDRAWINGSLIGHTUPANDRIGHT*/
- /* 193 */ 9524,/*BOXDRAWINGSLIGHTUPANDHORIZONTAL*/
- /* 194 */ 9516,/*BOXDRAWINGSLIGHTDOWNANDHORIZONTAL*/
- /* 195 */ 9500,/*BOXDRAWINGSLIGHTVERTICALANDRIGHT*/
- /* 196 */ 9472,/*BOXDRAWINGSLIGHTHORIZONTAL*/
- /* 197 */ 9532,/*BOXDRAWINGSLIGHTVERTICALANDHORIZONTAL*/
- /* 198 */ 9566,/*BOXDRAWINGSVERTICALSINGLEANDRIGHTDOUBLE*/
- /* 199 */ 9567,/*BOXDRAWINGSVERTICALDOUBLEANDRIGHTSINGLE*/
- /* 200 */ 9562,/*BOXDRAWINGSDOUBLEUPANDRIGHT*/
- /* 201 */ 9556,/*BOXDRAWINGSDOUBLEDOWNANDRIGHT*/
- /* 202 */ 9577,/*BOXDRAWINGSDOUBLEUPANDHORIZONTAL*/
- /* 203 */ 9574,/*BOXDRAWINGSDOUBLEDOWNANDHORIZONTAL*/
- /* 204 */ 9568,/*BOXDRAWINGSDOUBLEVERTICALANDRIGHT*/
- /* 205 */ 9552,/*BOXDRAWINGSDOUBLEHORIZONTAL*/
- /* 206 */ 9580,/*BOXDRAWINGSDOUBLEVERTICALANDHORIZONTAL*/
- /* 207 */ 9575,/*BOXDRAWINGSUPSINGLEANDHORIZONTALDOUBLE*/
- /* 208 */ 9576,/*BOXDRAWINGSUPDOUBLEANDHORIZONTALSINGLE*/
- /* 209 */ 9572,/*BOXDRAWINGSDOWNSINGLEANDHORIZONTALDOUBLE*/
- /* 210 */ 9573,/*BOXDRAWINGSDOWNDOUBLEANDHORIZONTALSINGLE*/
- /* 211 */ 9561,/*BOXDRAWINGSUPDOUBLEANDRIGHTSINGLE*/
- /* 212 */ 9560,/*BOXDRAWINGSUPSINGLEANDRIGHTDOUBLE*/
- /* 213 */ 9554,/*BOXDRAWINGSDOWNSINGLEANDRIGHTDOUBLE*/
- /* 214 */ 9555,/*BOXDRAWINGSDOWNDOUBLEANDRIGHTSINGLE*/
- /* 215 */ 9579,/*BOXDRAWINGSVERTICALDOUBLEANDHORIZONTALSINGLE*/
- /* 216 */ 9578,/*BOXDRAWINGSVERTICALSINGLEANDHORIZONTALDOUBLE*/
- /* 217 */ 9496,/*BOXDRAWINGSLIGHTUPANDLEFT*/
- /* 218 */ 9484,/*BOXDRAWINGSLIGHTDOWNANDRIGHT*/
- /* 219 */ 9608,/*FULLBLOCK*/
- /* 220 */ 9604,/*LOWERHALFBLOCK*/
- /* 221 */ 9612,/*LEFTHALFBLOCK*/
- /* 222 */ 9616,/*RIGHTHALFBLOCK*/
- /* 223 */ 9600,/*UPPERHALFBLOCK*/
- /* 224 */ 945,/*GREEKSMALLLETTERALPHA*/
- /* 225 */ 223,/*LATINSMALLLETTERSHARPS*/
- /* 226 */ 915,/*GREEKCAPITALLETTERGAMMA*/
- /* 227 */ 960,/*GREEKSMALLLETTERPI*/
- /* 228 */ 931,/*GREEKCAPITALLETTERSIGMA*/
- /* 229 */ 963,/*GREEKSMALLLETTERSIGMA*/
- /* 230 */ 181,/*MICROSIGN*/
- /* 231 */ 964,/*GREEKSMALLLETTERTAU*/
- /* 232 */ 934,/*GREEKCAPITALLETTERPHI*/
- /* 233 */ 920,/*GREEKCAPITALLETTERTHETA*/
- /* 234 */ 937,/*GREEKCAPITALLETTEROMEGA*/
- /* 235 */ 948,/*GREEKSMALLLETTERDELTA*/
- /* 236 */ 8734,/*INFINITY*/
- /* 237 */ 966,/*GREEKSMALLLETTERPHI*/
- /* 238 */ 949,/*GREEKSMALLLETTEREPSILON*/
- /* 239 */ 8745,/*INTERSECTION*/
- /* 240 */ 8801,/*IDENTICALTO*/
- /* 241 */ 177,/*PLUS-MINUSSIGN*/
- /* 242 */ 8805,/*GREATER-THANOREQUALTO*/
- /* 243 */ 8804,/*LESS-THANOREQUALTO*/
- /* 244 */ 8992,/*TOPHALFINTEGRAL*/
- /* 245 */ 8993,/*BOTTOMHALFINTEGRAL*/
- /* 246 */ 247,/*DIVISIONSIGN*/
- /* 247 */ 8776,/*ALMOSTEQUALTO*/
- /* 248 */ 176,/*DEGREESIGN*/
- /* 249 */ 8729,/*BULLETOPERATOR*/
- /* 250 */ 183,/*MIDDLEDOT*/
- /* 251 */ 8730,/*SQUAREROOT*/
- /* 252 */ 8319,/*SUPERSCRIPTLATINSMALLLETTERN*/
- /* 253 */ 178,/*SUPERSCRIPTTWO*/
- /* 254 */ 9632,/*BLACKSQUARE*/
- /* 255 */ 160/*NO-BREAKSPACE*/
+static convert_t cp1252[] = {
+	{ 0, 0 },
+	{ 1, 1 },
+	{ 2, 2 },
+	{ 3, 3 },
+	{ 4, 4 },
+	{ 5, 5 },
+	{ 6, 6 },
+	{ 7, 7 },
+	{ 8, 8 },
+	{ 9, 9 },
+	{ 10, 10 },
+	{ 11, 11 },
+	{ 12, 12 },
+	{ 13, 13 },
+	{ 14, 14 },
+	{ 15, 15 },
+	{ 16, 16 },
+	{ 17, 17 },
+	{ 18, 18 },
+	{ 19, 19 },
+	{ 20, 20 },
+	{ 21, 21 },
+	{ 22, 22 },
+	{ 23, 23 },
+	{ 24, 24 },
+	{ 25, 25 },
+	{ 26, 26 },
+	{ 27, 27 },
+	{ 28, 28 },
+	{ 29, 29 },
+	{ 30, 30 },
+	{ 31, 31 },
+	{ 32, 32 },
+	{ 33, 33 },
+	{ 34, 34 },
+	{ 35, 35 },
+	{ 36, 36 },
+	{ 37, 37 },
+	{ 38, 38 },
+	{ 39, 39 },
+	{ 40, 40 },
+	{ 41, 41 },
+	{ 42, 42 },
+	{ 43, 43 },
+	{ 44, 44 },
+	{ 45, 45 },
+	{ 46, 46 },
+	{ 47, 47 },
+	{ 48, 48 },
+	{ 49, 49 },
+	{ 50, 50 },
+	{ 51, 51 },
+	{ 52, 52 },
+	{ 53, 53 },
+	{ 54, 54 },
+	{ 55, 55 },
+	{ 56, 56 },
+	{ 57, 57 },
+	{ 58, 58 },
+	{ 59, 59 },
+	{ 60, 60 },
+	{ 61, 61 },
+	{ 62, 62 },
+	{ 63, 63 },
+	{ 64, 64 },
+	{ 65, 65 },
+	{ 66, 66 },
+	{ 67, 67 },
+	{ 68, 68 },
+	{ 69, 69 },
+	{ 70, 70 },
+	{ 71, 71 },
+	{ 72, 72 },
+	{ 73, 73 },
+	{ 74, 74 },
+	{ 75, 75 },
+	{ 76, 76 },
+	{ 77, 77 },
+	{ 78, 78 },
+	{ 79, 79 },
+	{ 80, 80 },
+	{ 81, 81 },
+	{ 82, 82 },
+	{ 83, 83 },
+	{ 84, 84 },
+	{ 85, 85 },
+	{ 86, 86 },
+	{ 87, 87 },
+	{ 88, 88 },
+	{ 89, 89 },
+	{ 90, 90 },
+	{ 91, 91 },
+	{ 92, 92 },
+	{ 93, 93 },
+	{ 94, 94 },
+	{ 95, 95 },
+	{ 96, 96 },
+	{ 97, 97 },
+	{ 98, 98 },
+	{ 99, 99 },
+	{ 100, 100 },
+	{ 101, 101 },
+	{ 102, 102 },
+	{ 103, 103 },
+	{ 104, 104 },
+	{ 105, 105 },
+	{ 106, 106 },
+	{ 107, 107 },
+	{ 108, 108 },
+	{ 109, 109 },
+	{ 110, 110 },
+	{ 111, 111 },
+	{ 112, 112 },
+	{ 113, 113 },
+	{ 114, 114 },
+	{ 115, 115 },
+	{ 116, 116 },
+	{ 117, 117 },
+	{ 118, 118 },
+	{ 119, 119 },
+	{ 120, 120 },
+	{ 121, 121 },
+	{ 122, 122 },
+	{ 123, 123 },
+	{ 124, 124 },
+	{ 125, 125 },
+	{ 126, 126 },
+	{ 127, 127 },
+	{ 128, 8364 },
+	{ 129, 129 },
+	{ 130, 8218 },
+	{ 131, 402 },
+	{ 132, 8222 },
+	{ 133, 8230 },
+	{ 134, 8224 },
+	{ 135, 8225 },
+	{ 136, 710 },
+	{ 137, 8240 },
+	{ 138, 352 },
+	{ 139, 8249 },
+	{ 140, 338 },
+	{ 141, 141 },
+	{ 142, 381 },
+	{ 143, 143 },
+	{ 144, 144 },
+	{ 145, 8216 },
+	{ 146, 8217 },
+	{ 147, 8220 },
+	{ 148, 8221 },
+	{ 149, 8226 },
+	{ 150, 8211 },
+	{ 151, 8212 },
+	{ 152, 732 },
+	{ 153, 8482 },
+	{ 154, 353 },
+	{ 155, 8250 },
+	{ 156, 339 },
+	{ 157, 157 },
+	{ 158, 382 },
+	{ 159, 376 },
+	{ 160, 160 },
+	{ 161, 161 },
+	{ 162, 162 },
+	{ 163, 163 },
+	{ 164, 164 },
+	{ 165, 165 },
+	{ 166, 166 },
+	{ 167, 167 },
+	{ 168, 168 },
+	{ 169, 169 },
+	{ 170, 170 },
+	{ 171, 171 },
+	{ 172, 172 },
+	{ 173, 173 },
+	{ 174, 174 },
+	{ 175, 175 },
+	{ 176, 176 },
+	{ 177, 177 },
+	{ 178, 178 },
+	{ 179, 179 },
+	{ 180, 180 },
+	{ 181, 181 },
+	{ 182, 182 },
+	{ 183, 183 },
+	{ 184, 184 },
+	{ 185, 185 },
+	{ 186, 186 },
+	{ 187, 187 },
+	{ 188, 188 },
+	{ 189, 189 },
+	{ 190, 190 },
+	{ 191, 191 },
+	{ 192, 192 },
+	{ 193, 193 },
+	{ 194, 194 },
+	{ 195, 195 },
+	{ 196, 196 },
+	{ 197, 197 },
+	{ 198, 198 },
+	{ 199, 199 },
+	{ 200, 200 },
+	{ 201, 201 },
+	{ 202, 202 },
+	{ 203, 203 },
+	{ 204, 204 },
+	{ 205, 205 },
+	{ 206, 206 },
+	{ 207, 207 },
+	{ 208, 208 },
+	{ 209, 209 },
+	{ 210, 210 },
+	{ 211, 211 },
+	{ 212, 212 },
+	{ 213, 213 },
+	{ 214, 214 },
+	{ 215, 215 },
+	{ 216, 216 },
+	{ 217, 217 },
+	{ 218, 218 },
+	{ 219, 219 },
+	{ 220, 220 },
+	{ 221, 221 },
+	{ 222, 222 },
+	{ 223, 223 },
+	{ 224, 224 },
+	{ 225, 225 },
+	{ 226, 226 },
+	{ 227, 227 },
+	{ 228, 228 },
+	{ 229, 229 },
+	{ 230, 230 },
+	{ 231, 231 },
+	{ 232, 232 },
+	{ 233, 233 },
+	{ 234, 234 },
+	{ 235, 235 },
+	{ 236, 236 },
+	{ 237, 237 },
+	{ 238, 238 },
+	{ 239, 239 },
+	{ 240, 240 },
+	{ 241, 241 },
+	{ 242, 242 },
+	{ 243, 243 },
+	{ 244, 244 },
+	{ 245, 245 },
+	{ 246, 246 },
+	{ 247, 247 },
+	{ 248, 248 },
+	{ 249, 249 },
+	{ 250, 250 },
+	{ 251, 251 },
+	{ 252, 252 },
+	{ 253, 253 },
+	{ 254, 254 },
+	{ 255, 255 },
+	{ 32, 8194 },
+	{ 32, 8195 },
+	{ 32, 8201 },
+	{ 65, 256 },
+	{ 65, 258 },
+	{ 65, 260 },
+	{ 65, 461 },
+	{ 97, 257 },
+	{ 97, 259 },
+	{ 97, 261 },
+	{ 97, 462 },
+	{ 67, 262 },
+	{ 67, 264 },
+	{ 67, 266 },
+	{ 67, 268 },
+	{ 99, 263 },
+	{ 99, 265 },
+	{ 99, 267 },
+	{ 99, 269 },
+	{ 68, 270 },
+	{ 100, 271 },
+	{ 69, 274 },
+	{ 69, 276 },
+	{ 69, 278 },
+	{ 69, 280 },
+	{ 69, 282 },
+	{ 101, 275 },
+	{ 101, 277 },
+	{ 101, 279 },
+	{ 101, 281 },
+	{ 101, 283 },
+	{ 71, 284 },
+	{ 71, 286 },
+	{ 71, 288 },
+	{ 71, 290 },
+	{ 71, 486 },
+	{ 71, 500 },
+	{ 103, 285 },
+	{ 103, 287 },
+	{ 103, 289 },
+	{ 103, 291 },
+	{ 103, 487 },
+	{ 103, 501 },
+	{ 72, 292 },
+	{ 104, 293 },
+	{ 73, 296 },
+	{ 73, 298 },
+	{ 73, 300 },
+	{ 73, 302 },
+	{ 73, 304 },
+	{ 73, 463 },
+	{ 105, 297 },
+	{ 105, 299 },
+	{ 105, 301 },
+	{ 105, 303 },
+	{ 105, 305 },
+	{ 105, 464 },
+	{ 74, 308 },
+	{ 106, 309 },
+	{ 75, 310 },
+	{ 75, 488 },
+	{ 107, 311 },
+	{ 107, 489 },
+	{ 76, 313 },
+	{ 76, 315 },
+	{ 76, 317 },
+	{ 76, 319 },
+	{ 76, 321 },
+	{ 108, 314 },
+	{ 108, 316 },
+	{ 108, 318 },
+	{ 108, 320 },
+	{ 108, 322 },
+	{ 77, 323 },
+	{ 77, 325 },
+	{ 77, 327 },
+	{ 109, 324 },
+	{ 109, 326 },
+	{ 109, 328 },
+	{ 109, 329 },
+	{ 78, 332 },
+	{ 78, 334 },
+	{ 78, 336 },
+	{ 78, 465 },
+	{ 78, 490 },
+	{ 110, 333 },
+	{ 110, 335 },
+	{ 110, 337 },
+	{ 110, 466 },
+	{ 110, 491 },
+	{ 82, 340 },
+	{ 82, 342 },
+	{ 82, 344 },
+	{ 114, 341 },
+	{ 114, 343 },
+	{ 114, 345 },
+	{ 83, 346 },
+	{ 83, 348 },
+	{ 83, 350 },
+	{ 115, 347 },
+	{ 115, 349 },
+	{ 115, 351 },
+	{ 84, 354 },
+	{ 84, 356 },
+	{ 116, 355 },
+	{ 116, 357 },
+	{ 85, 360 },
+	{ 85, 362 },
+	{ 85, 364 },
+	{ 85, 366 },
+	{ 85, 368 },
+	{ 85, 370 },
+	{ 85, 467 },
+	{ 117, 361 },
+	{ 117, 363 },
+	{ 117, 365 },
+	{ 117, 367 },
+	{ 117, 369 },
+	{ 117, 371 },
+	{ 117, 468 },
+	{ 87, 372 },
+	{ 119, 373 },
+	{ 89, 374 },
+	{ 121, 375 },
+	{ 90, 377 },
+	{ 90, 379 },
+	{ 122, 378 },
+	{ 122, 380 },
 };
-charconvert cp861[] = {
- /* 0 */ 0,/*<tdbgcolor="C0C0C0"><fontface="Arial"color="000000"><b>ISO/IEC10646-1:2000CharacterName</b></font>*/
- 1,
- 2,
- 3,
- 4,
- 5,
- 6,
- 7,
- 8,
- 9,
- 10,
- 11,
- 12,
- 13,
- 14,
- 15,
- 16,
- 17,
- 18,
- 19,
- 20,
- 21,
- 22,
- 23,
- 24,
- 25,
- 26,
- 27,
- 28,
- 29,
- 30,
- 31,
- /* 32 */ 32,/*SPACE*/
- /* 33 */ 33,/*EXCLAMATIONMARK*/
- /* 34 */ 34,/*QUOTATIONMARK*/
- /* 35 */ 35,/*NUMBERSIGN*/
- /* 36 */ 36,/*DOLLARSIGN*/
- /* 37 */ 37,/*PERCENTSIGN*/
- /* 38 */ 38,/*AMPERSAND*/
- /* 39 */ 39,/*APOSTROPHE*/
- /* 40 */ 40,/*LEFTPARENTHESIS*/
- /* 41 */ 41,/*RIGHTPARENTHESIS*/
- /* 42 */ 42,/*ASTERISK*/
- /* 43 */ 43,/*PLUSSIGN*/
- /* 44 */ 44,/*COMMA*/
- /* 45 */ 45,/*HYPHEN-MINUS*/
- /* 46 */ 46,/*FULLSTOP*/
- /* 47 */ 47,/*SOLIDUS*/
- /* 48 */ 48,/*DIGITZERO*/
- /* 49 */ 49,/*DIGITONE*/
- /* 50 */ 50,/*DIGITTWO*/
- /* 51 */ 51,/*DIGITTHREE*/
- /* 52 */ 52,/*DIGITFOUR*/
- /* 53 */ 53,/*DIGITFIVE*/
- /* 54 */ 54,/*DIGITSIX*/
- /* 55 */ 55,/*DIGITSEVEN*/
- /* 56 */ 56,/*DIGITEIGHT*/
- /* 57 */ 57,/*DIGITNINE*/
- /* 58 */ 58,/*COLON*/
- /* 59 */ 59,/*SEMICOLON*/
- /* 60 */ 60,/*LESS-THANSIGN*/
- /* 61 */ 61,/*EQUALSSIGN*/
- /* 62 */ 62,/*GREATER-THANSIGN*/
- /* 63 */ 63,/*QUESTIONMARK*/
- /* 64 */ 64,/*COMMERCIALAT*/
- /* 65 */ 65,/*LATINCAPITALLETTERA*/
- /* 66 */ 66,/*LATINCAPITALLETTERB*/
- /* 67 */ 67,/*LATINCAPITALLETTERC*/
- /* 68 */ 68,/*LATINCAPITALLETTERD*/
- /* 69 */ 69,/*LATINCAPITALLETTERE*/
- /* 70 */ 70,/*LATINCAPITALLETTERF*/
- /* 71 */ 71,/*LATINCAPITALLETTERG*/
- /* 72 */ 72,/*LATINCAPITALLETTERH*/
- /* 73 */ 73,/*LATINCAPITALLETTERI*/
- /* 74 */ 74,/*LATINCAPITALLETTERJ*/
- /* 75 */ 75,/*LATINCAPITALLETTERK*/
- /* 76 */ 76,/*LATINCAPITALLETTERL*/
- /* 77 */ 77,/*LATINCAPITALLETTERM*/
- /* 78 */ 78,/*LATINCAPITALLETTERN*/
- /* 79 */ 79,/*LATINCAPITALLETTERO*/
- /* 80 */ 80,/*LATINCAPITALLETTERP*/
- /* 81 */ 81,/*LATINCAPITALLETTERQ*/
- /* 82 */ 82,/*LATINCAPITALLETTERR*/
- /* 83 */ 83,/*LATINCAPITALLETTERS*/
- /* 84 */ 84,/*LATINCAPITALLETTERT*/
- /* 85 */ 85,/*LATINCAPITALLETTERU*/
- /* 86 */ 86,/*LATINCAPITALLETTERV*/
- /* 87 */ 87,/*LATINCAPITALLETTERW*/
- /* 88 */ 88,/*LATINCAPITALLETTERX*/
- /* 89 */ 89,/*LATINCAPITALLETTERY*/
- /* 90 */ 90,/*LATINCAPITALLETTERZ*/
- /* 91 */ 91,/*LEFTSQUAREBRACKET*/
- /* 92 */ 92,/*REVERSESOLIDUS*/
- /* 93 */ 93,/*RIGHTSQUAREBRACKET*/
- /* 94 */ 94,/*CIRCUMFLEXACCENT*/
- /* 95 */ 95,/*LOWLINE*/
- /* 96 */ 96,/*GRAVEACCENT*/
- /* 97 */ 97,/*LATINSMALLLETTERA*/
- /* 98 */ 98,/*LATINSMALLLETTERB*/
- /* 99 */ 99,/*LATINSMALLLETTERC*/
- /* 100 */ 100,/*LATINSMALLLETTERD*/
- /* 101 */ 101,/*LATINSMALLLETTERE*/
- /* 102 */ 102,/*LATINSMALLLETTERF*/
- /* 103 */ 103,/*LATINSMALLLETTERG*/
- /* 104 */ 104,/*LATINSMALLLETTERH*/
- /* 105 */ 105,/*LATINSMALLLETTERI*/
- /* 106 */ 106,/*LATINSMALLLETTERJ*/
- /* 107 */ 107,/*LATINSMALLLETTERK*/
- /* 108 */ 108,/*LATINSMALLLETTERL*/
- /* 109 */ 109,/*LATINSMALLLETTERM*/
- /* 110 */ 110,/*LATINSMALLLETTERN*/
- /* 111 */ 111,/*LATINSMALLLETTERO*/
- /* 112 */ 112,/*LATINSMALLLETTERP*/
- /* 113 */ 113,/*LATINSMALLLETTERQ*/
- /* 114 */ 114,/*LATINSMALLLETTERR*/
- /* 115 */ 115,/*LATINSMALLLETTERS*/
- /* 116 */ 116,/*LATINSMALLLETTERT*/
- /* 117 */ 117,/*LATINSMALLLETTERU*/
- /* 118 */ 118,/*LATINSMALLLETTERV*/
- /* 119 */ 119,/*LATINSMALLLETTERW*/
- /* 120 */ 120,/*LATINSMALLLETTERX*/
- /* 121 */ 121,/*LATINSMALLLETTERY*/
- /* 122 */ 122,/*LATINSMALLLETTERZ*/
- /* 123 */ 123,/*LEFTCURLYBRACKET*/
- /* 124 */ 124,/*VERTICALLINE*/
- /* 125 */ 125,/*RIGHTCURLYBRACKET*/
- /* 126 */ 126,/*TILDE*/
- 127,
- /* 128 */ 199,/*LATINCAPITALLETTERCWITHCEDILLA*/
- /* 129 */ 252,/*LATINSMALLLETTERUWITHDIAERESIS*/
- /* 130 */ 233,/*LATINSMALLLETTEREWITHACUTE*/
- /* 131 */ 226,/*LATINSMALLLETTERAWITHCIRCUMFLEX*/
- /* 132 */ 228,/*LATINSMALLLETTERAWITHDIAERESIS*/
- /* 133 */ 224,/*LATINSMALLLETTERAWITHGRAVE*/
- /* 134 */ 229,/*LATINSMALLLETTERAWITHRINGABOVE*/
- /* 135 */ 231,/*LATINSMALLLETTERCWITHCEDILLA*/
- /* 136 */ 234,/*LATINSMALLLETTEREWITHCIRCUMFLEX*/
- /* 137 */ 235,/*LATINSMALLLETTEREWITHDIAERESIS*/
- /* 138 */ 232,/*LATINSMALLLETTEREWITHGRAVE*/
- /* 139 */ 208,/*LATINCAPITALLETTERETH*/
- /* 140 */ 240,/*LATINSMALLLETTERETH*/
- /* 141 */ 222,/*LATINCAPITALLETTERTHORN*/
- /* 142 */ 196,/*LATINCAPITALLETTERAWITHDIAERESIS*/
- /* 143 */ 197,/*LATINCAPITALLETTERAWITHRINGABOVE*/
- /* 144 */ 201,/*LATINCAPITALLETTEREWITHACUTE*/
- /* 145 */ 230,/*LATINSMALLLETTERAE*/
- /* 146 */ 198,/*LATINCAPITALLETTERAE*/
- /* 147 */ 244,/*LATINSMALLLETTEROWITHCIRCUMFLEX*/
- /* 148 */ 246,/*LATINSMALLLETTEROWITHDIAERESIS*/
- /* 149 */ 254,/*LATINSMALLLETTERTHORN*/
- /* 150 */ 251,/*LATINSMALLLETTERUWITHCIRCUMFLEX*/
- /* 151 */ 221,/*LATINCAPITALLETTERYWITHACUTE*/
- /* 152 */ 253,/*LATINSMALLLETTERYWITHACUTE*/
- /* 153 */ 214,/*LATINCAPITALLETTEROWITHDIAERESIS*/
- /* 154 */ 220,/*LATINCAPITALLETTERUWITHDIAERESIS*/
- /* 155 */ 248,/*LATINSMALLLETTEROWITHSTROKE*/
- /* 156 */ 163,/*POUNDSIGN*/
- /* 157 */ 216,/*LATINCAPITALLETTEROWITHSTROKE*/
- /* 158 */ 8359,/*PESETASIGN*/
- /* 159 */ 402,/*LATINSMALLLETTERFWITHHOOK*/
- /* 160 */ 225,/*LATINSMALLLETTERAWITHACUTE*/
- /* 161 */ 237,/*LATINSMALLLETTERIWITHACUTE*/
- /* 162 */ 243,/*LATINSMALLLETTEROWITHACUTE*/
- /* 163 */ 250,/*LATINSMALLLETTERUWITHACUTE*/
- /* 164 */ 193,/*LATINCAPITALLETTERAWITHACUTE*/
- /* 165 */ 205,/*LATINCAPITALLETTERIWITHACUTE*/
- /* 166 */ 211,/*LATINCAPITALLETTEROWITHACUTE*/
- /* 167 */ 218,/*LATINCAPITALLETTERUWITHACUTE*/
- /* 168 */ 191,/*INVERTEDQUESTIONMARK*/
- /* 169 */ 8976,/*REVERSEDNOTSIGN*/
- /* 170 */ 172,/*NOTSIGN*/
- /* 171 */ 189,/*VULGARFRACTIONONEHALF*/
- /* 172 */ 188,/*VULGARFRACTIONONEQUARTER*/
- /* 173 */ 161,/*INVERTEDEXCLAMATIONMARK*/
- /* 174 */ 171,/*LEFT-POINTINGDOUBLEANGLEQUOTATIONMARK*/
- /* 175 */ 187,/*RIGHT-POINTINGDOUBLEANGLEQUOTATIONMARK*/
- /* 176 */ 9617,/*LIGHTSHADE*/
- /* 177 */ 9618,/*MEDIUMSHADE*/
- /* 178 */ 9619,/*DARKSHADE*/
- /* 179 */ 9474,/*BOXDRAWINGSLIGHTVERTICAL*/
- /* 180 */ 9508,/*BOXDRAWINGSLIGHTVERTICALANDLEFT*/
- /* 181 */ 9569,/*BOXDRAWINGSVERTICALSINGLEANDLEFTDOUBLE*/
- /* 182 */ 9570,/*BOXDRAWINGSVERTICALDOUBLEANDLEFTSINGLE*/
- /* 183 */ 9558,/*BOXDRAWINGSDOWNDOUBLEANDLEFTSINGLE*/
- /* 184 */ 9557,/*BOXDRAWINGSDOWNSINGLEANDLEFTDOUBLE*/
- /* 185 */ 9571,/*BOXDRAWINGSDOUBLEVERTICALANDLEFT*/
- /* 186 */ 9553,/*BOXDRAWINGSDOUBLEVERTICAL*/
- /* 187 */ 9559,/*BOXDRAWINGSDOUBLEDOWNANDLEFT*/
- /* 188 */ 9565,/*BOXDRAWINGSDOUBLEUPANDLEFT*/
- /* 189 */ 9564,/*BOXDRAWINGSUPDOUBLEANDLEFTSINGLE*/
- /* 190 */ 9563,/*BOXDRAWINGSUPSINGLEANDLEFTDOUBLE*/
- /* 191 */ 9488,/*BOXDRAWINGSLIGHTDOWNANDLEFT*/
- /* 192 */ 9492,/*BOXDRAWINGSLIGHTUPANDRIGHT*/
- /* 193 */ 9524,/*BOXDRAWINGSLIGHTUPANDHORIZONTAL*/
- /* 194 */ 9516,/*BOXDRAWINGSLIGHTDOWNANDHORIZONTAL*/
- /* 195 */ 9500,/*BOXDRAWINGSLIGHTVERTICALANDRIGHT*/
- /* 196 */ 9472,/*BOXDRAWINGSLIGHTHORIZONTAL*/
- /* 197 */ 9532,/*BOXDRAWINGSLIGHTVERTICALANDHORIZONTAL*/
- /* 198 */ 9566,/*BOXDRAWINGSVERTICALSINGLEANDRIGHTDOUBLE*/
- /* 199 */ 9567,/*BOXDRAWINGSVERTICALDOUBLEANDRIGHTSINGLE*/
- /* 200 */ 9562,/*BOXDRAWINGSDOUBLEUPANDRIGHT*/
- /* 201 */ 9556,/*BOXDRAWINGSDOUBLEDOWNANDRIGHT*/
- /* 202 */ 9577,/*BOXDRAWINGSDOUBLEUPANDHORIZONTAL*/
- /* 203 */ 9574,/*BOXDRAWINGSDOUBLEDOWNANDHORIZONTAL*/
- /* 204 */ 9568,/*BOXDRAWINGSDOUBLEVERTICALANDRIGHT*/
- /* 205 */ 9552,/*BOXDRAWINGSDOUBLEHORIZONTAL*/
- /* 206 */ 9580,/*BOXDRAWINGSDOUBLEVERTICALANDHORIZONTAL*/
- /* 207 */ 9575,/*BOXDRAWINGSUPSINGLEANDHORIZONTALDOUBLE*/
- /* 208 */ 9576,/*BOXDRAWINGSUPDOUBLEANDHORIZONTALSINGLE*/
- /* 209 */ 9572,/*BOXDRAWINGSDOWNSINGLEANDHORIZONTALDOUBLE*/
- /* 210 */ 9573,/*BOXDRAWINGSDOWNDOUBLEANDHORIZONTALSINGLE*/
- /* 211 */ 9561,/*BOXDRAWINGSUPDOUBLEANDRIGHTSINGLE*/
- /* 212 */ 9560,/*BOXDRAWINGSUPSINGLEANDRIGHTDOUBLE*/
- /* 213 */ 9554,/*BOXDRAWINGSDOWNSINGLEANDRIGHTDOUBLE*/
- /* 214 */ 9555,/*BOXDRAWINGSDOWNDOUBLEANDRIGHTSINGLE*/
- /* 215 */ 9579,/*BOXDRAWINGSVERTICALDOUBLEANDHORIZONTALSINGLE*/
- /* 216 */ 9578,/*BOXDRAWINGSVERTICALSINGLEANDHORIZONTALDOUBLE*/
- /* 217 */ 9496,/*BOXDRAWINGSLIGHTUPANDLEFT*/
- /* 218 */ 9484,/*BOXDRAWINGSLIGHTDOWNANDRIGHT*/
- /* 219 */ 9608,/*FULLBLOCK*/
- /* 220 */ 9604,/*LOWERHALFBLOCK*/
- /* 221 */ 9612,/*LEFTHALFBLOCK*/
- /* 222 */ 9616,/*RIGHTHALFBLOCK*/
- /* 223 */ 9600,/*UPPERHALFBLOCK*/
- /* 224 */ 945,/*GREEKSMALLLETTERALPHA*/
- /* 225 */ 223,/*LATINSMALLLETTERSHARPS*/
- /* 226 */ 915,/*GREEKCAPITALLETTERGAMMA*/
- /* 227 */ 960,/*GREEKSMALLLETTERPI*/
- /* 228 */ 931,/*GREEKCAPITALLETTERSIGMA*/
- /* 229 */ 963,/*GREEKSMALLLETTERSIGMA*/
- /* 230 */ 181,/*MICROSIGN*/
- /* 231 */ 964,/*GREEKSMALLLETTERTAU*/
- /* 232 */ 934,/*GREEKCAPITALLETTERPHI*/
- /* 233 */ 920,/*GREEKCAPITALLETTERTHETA*/
- /* 234 */ 937,/*GREEKCAPITALLETTEROMEGA*/
- /* 235 */ 948,/*GREEKSMALLLETTERDELTA*/
- /* 236 */ 8734,/*INFINITY*/
- /* 237 */ 966,/*GREEKSMALLLETTERPHI*/
- /* 238 */ 949,/*GREEKSMALLLETTEREPSILON*/
- /* 239 */ 8745,/*INTERSECTION*/
- /* 240 */ 8801,/*IDENTICALTO*/
- /* 241 */ 177,/*PLUS-MINUSSIGN*/
- /* 242 */ 8805,/*GREATER-THANOREQUALTO*/
- /* 243 */ 8804,/*LESS-THANOREQUALTO*/
- /* 244 */ 8992,/*TOPHALFINTEGRAL*/
- /* 245 */ 8993,/*BOTTOMHALFINTEGRAL*/
- /* 246 */ 247,/*DIVISIONSIGN*/
- /* 247 */ 8776,/*ALMOSTEQUALTO*/
- /* 248 */ 176,/*DEGREESIGN*/
- /* 249 */ 8729,/*BULLETOPERATOR*/
- /* 250 */ 183,/*MIDDLEDOT*/
- /* 251 */ 8730,/*SQUAREROOT*/
- /* 252 */ 8319,/*SUPERSCRIPTLATINSMALLLETTERN*/
- /* 253 */ 178,/*SUPERSCRIPTTWO*/
- /* 254 */ 9632,/*BLACKSQUARE*/
- /* 255 */ 160/*NO-BREAKSPACE*/
+static convert_t cp1253[] = {
+	{ 0, 0 },
+	{ 1, 1 },
+	{ 2, 2 },
+	{ 3, 3 },
+	{ 4, 4 },
+	{ 5, 5 },
+	{ 6, 6 },
+	{ 7, 7 },
+	{ 8, 8 },
+	{ 9, 9 },
+	{ 10, 10 },
+	{ 11, 11 },
+	{ 12, 12 },
+	{ 13, 13 },
+	{ 14, 14 },
+	{ 15, 15 },
+	{ 16, 16 },
+	{ 17, 17 },
+	{ 18, 18 },
+	{ 19, 19 },
+	{ 20, 20 },
+	{ 21, 21 },
+	{ 22, 22 },
+	{ 23, 23 },
+	{ 24, 24 },
+	{ 25, 25 },
+	{ 26, 26 },
+	{ 27, 27 },
+	{ 28, 28 },
+	{ 29, 29 },
+	{ 30, 30 },
+	{ 31, 31 },
+	{ 32, 32 },
+	{ 33, 33 },
+	{ 34, 34 },
+	{ 35, 35 },
+	{ 36, 36 },
+	{ 37, 37 },
+	{ 38, 38 },
+	{ 39, 39 },
+	{ 40, 40 },
+	{ 41, 41 },
+	{ 42, 42 },
+	{ 43, 43 },
+	{ 44, 44 },
+	{ 45, 45 },
+	{ 46, 46 },
+	{ 47, 47 },
+	{ 48, 48 },
+	{ 49, 49 },
+	{ 50, 50 },
+	{ 51, 51 },
+	{ 52, 52 },
+	{ 53, 53 },
+	{ 54, 54 },
+	{ 55, 55 },
+	{ 56, 56 },
+	{ 57, 57 },
+	{ 58, 58 },
+	{ 59, 59 },
+	{ 60, 60 },
+	{ 61, 61 },
+	{ 62, 62 },
+	{ 63, 63 },
+	{ 64, 64 },
+	{ 65, 65 },
+	{ 66, 66 },
+	{ 67, 67 },
+	{ 68, 68 },
+	{ 69, 69 },
+	{ 70, 70 },
+	{ 71, 71 },
+	{ 72, 72 },
+	{ 73, 73 },
+	{ 74, 74 },
+	{ 75, 75 },
+	{ 76, 76 },
+	{ 77, 77 },
+	{ 78, 78 },
+	{ 79, 79 },
+	{ 80, 80 },
+	{ 81, 81 },
+	{ 82, 82 },
+	{ 83, 83 },
+	{ 84, 84 },
+	{ 85, 85 },
+	{ 86, 86 },
+	{ 87, 87 },
+	{ 88, 88 },
+	{ 89, 89 },
+	{ 90, 90 },
+	{ 91, 91 },
+	{ 92, 92 },
+	{ 93, 93 },
+	{ 94, 94 },
+	{ 95, 95 },
+	{ 96, 96 },
+	{ 97, 97 },
+	{ 98, 98 },
+	{ 99, 99 },
+	{ 100, 100 },
+	{ 101, 101 },
+	{ 102, 102 },
+	{ 103, 103 },
+	{ 104, 104 },
+	{ 105, 105 },
+	{ 106, 106 },
+	{ 107, 107 },
+	{ 108, 108 },
+	{ 109, 109 },
+	{ 110, 110 },
+	{ 111, 111 },
+	{ 112, 112 },
+	{ 113, 113 },
+	{ 114, 114 },
+	{ 115, 115 },
+	{ 116, 116 },
+	{ 117, 117 },
+	{ 118, 118 },
+	{ 119, 119 },
+	{ 120, 120 },
+	{ 121, 121 },
+	{ 122, 122 },
+	{ 123, 123 },
+	{ 124, 124 },
+	{ 125, 125 },
+	{ 126, 126 },
+	{ 127, 127 },
+	{ 128, 8364 },
+	{ 129, 129 },
+	{ 130, 8218 },
+	{ 131, 402 },
+	{ 132, 8222 },
+	{ 133, 8230 },
+	{ 134, 8224 },
+	{ 135, 8225 },
+	{ 136, 136 },
+	{ 137, 8240 },
+	{ 138, 138 },
+	{ 139, 8249 },
+	{ 140, 140 },
+	{ 141, 141 },
+	{ 142, 142 },
+	{ 143, 143 },
+	{ 144, 144 },
+	{ 145, 8216 },
+	{ 146, 8217 },
+	{ 147, 8220 },
+	{ 148, 8221 },
+	{ 149, 8226 },
+	{ 150, 8211 },
+	{ 151, 8212 },
+	{ 152, 152 },
+	{ 153, 8482 },
+	{ 154, 154 },
+	{ 155, 8250 },
+	{ 156, 156 },
+	{ 157, 157 },
+	{ 158, 158 },
+	{ 159, 159 },
+	{ 160, 160 },
+	{ 161, 901 },
+	{ 162, 902 },
+	{ 163, 163 },
+	{ 164, 164 },
+	{ 165, 165 },
+	{ 166, 166 },
+	{ 167, 167 },
+	{ 168, 168 },
+	{ 169, 169 },
+	{ 170, 170 },
+	{ 171, 171 },
+	{ 172, 172 },
+	{ 173, 173 },
+	{ 174, 174 },
+	{ 175, 8213 },
+	{ 176, 176 },
+	{ 177, 177 },
+	{ 178, 178 },
+	{ 179, 179 },
+	{ 180, 900 },
+	{ 181, 181 },
+	{ 182, 182 },
+	{ 183, 183 },
+	{ 184, 904 },
+	{ 185, 905 },
+	{ 186, 906 },
+	{ 187, 187 },
+	{ 188, 908 },
+	{ 189, 189 },
+	{ 190, 910 },
+	{ 191, 911 },
+	{ 192, 912 },
+	{ 193, 913 },
+	{ 194, 914 },
+	{ 195, 915 },
+	{ 196, 916 },
+	{ 197, 917 },
+	{ 198, 918 },
+	{ 199, 919 },
+	{ 200, 920 },
+	{ 201, 921 },
+	{ 202, 922 },
+	{ 203, 923 },
+	{ 204, 924 },
+	{ 205, 925 },
+	{ 206, 926 },
+	{ 207, 927 },
+	{ 208, 928 },
+	{ 209, 929 },
+	{ 210, 210 },
+	{ 211, 931 },
+	{ 212, 932 },
+	{ 213, 933 },
+	{ 214, 934 },
+	{ 215, 935 },
+	{ 216, 936 },
+	{ 217, 937 },
+	{ 218, 938 },
+	{ 219, 939 },
+	{ 220, 940 },
+	{ 221, 941 },
+	{ 222, 942 },
+	{ 223, 943 },
+	{ 224, 944 },
+	{ 225, 945 },
+	{ 226, 946 },
+	{ 227, 947 },
+	{ 228, 948 },
+	{ 229, 949 },
+	{ 230, 950 },
+	{ 231, 951 },
+	{ 232, 952 },
+	{ 233, 953 },
+	{ 234, 954 },
+	{ 235, 955 },
+	{ 236, 956 },
+	{ 237, 957 },
+	{ 238, 958 },
+	{ 239, 959 },
+	{ 240, 960 },
+	{ 241, 961 },
+	{ 242, 962 },
+	{ 243, 963 },
+	{ 244, 964 },
+	{ 245, 965 },
+	{ 246, 966 },
+	{ 247, 967 },
+	{ 248, 968 },
+	{ 249, 969 },
+	{ 250, 970 },
+	{ 251, 971 },
+	{ 252, 972 },
+	{ 253, 973 },
+	{ 254, 974 },
+	{ 255, 255 },
+	{ 32, 8194 },
+	{ 32, 8195 },
+	{ 32, 8201 },
+	{ 65, 192 },
+	{ 65, 193 },
+	{ 65, 194 },
+	{ 65, 195 },
+	{ 65, 196 },
+	{ 65, 197 },
+	{ 65, 256 },
+	{ 65, 258 },
+	{ 65, 260 },
+	{ 65, 461 },
+	{ 97, 224 },
+	{ 97, 225 },
+	{ 97, 226 },
+	{ 97, 227 },
+	{ 97, 228 },
+	{ 97, 229 },
+	{ 97, 257 },
+	{ 97, 259 },
+	{ 97, 261 },
+	{ 97, 462 },
+	{ 67, 199 },
+	{ 67, 262 },
+	{ 67, 264 },
+	{ 67, 266 },
+	{ 67, 268 },
+	{ 99, 231 },
+	{ 99, 263 },
+	{ 99, 265 },
+	{ 99, 267 },
+	{ 99, 269 },
+	{ 68, 270 },
+	{ 100, 271 },
+	{ 69, 200 },
+	{ 69, 201 },
+	{ 69, 202 },
+	{ 69, 203 },
+	{ 69, 274 },
+	{ 69, 276 },
+	{ 69, 278 },
+	{ 69, 280 },
+	{ 69, 282 },
+	{ 101, 232 },
+	{ 101, 233 },
+	{ 101, 234 },
+	{ 101, 235 },
+	{ 101, 275 },
+	{ 101, 277 },
+	{ 101, 279 },
+	{ 101, 281 },
+	{ 101, 283 },
+	{ 71, 284 },
+	{ 71, 286 },
+	{ 71, 288 },
+	{ 71, 290 },
+	{ 71, 486 },
+	{ 71, 500 },
+	{ 103, 285 },
+	{ 103, 287 },
+	{ 103, 289 },
+	{ 103, 291 },
+	{ 103, 487 },
+	{ 103, 501 },
+	{ 72, 292 },
+	{ 104, 293 },
+	{ 73, 204 },
+	{ 73, 205 },
+	{ 73, 206 },
+	{ 73, 207 },
+	{ 73, 296 },
+	{ 73, 298 },
+	{ 73, 300 },
+	{ 73, 302 },
+	{ 73, 304 },
+	{ 73, 463 },
+	{ 105, 236 },
+	{ 105, 237 },
+	{ 105, 238 },
+	{ 105, 239 },
+	{ 105, 297 },
+	{ 105, 299 },
+	{ 105, 301 },
+	{ 105, 303 },
+	{ 105, 305 },
+	{ 105, 464 },
+	{ 74, 308 },
+	{ 106, 309 },
+	{ 75, 310 },
+	{ 75, 488 },
+	{ 107, 311 },
+	{ 107, 489 },
+	{ 76, 313 },
+	{ 76, 315 },
+	{ 76, 317 },
+	{ 76, 319 },
+	{ 76, 321 },
+	{ 108, 314 },
+	{ 108, 316 },
+	{ 108, 318 },
+	{ 108, 320 },
+	{ 108, 322 },
+	{ 77, 209 },
+	{ 77, 323 },
+	{ 77, 325 },
+	{ 77, 327 },
+	{ 109, 241 },
+	{ 109, 324 },
+	{ 109, 326 },
+	{ 109, 328 },
+	{ 109, 329 },
+	{ 78, 211 },
+	{ 78, 212 },
+	{ 78, 213 },
+	{ 78, 214 },
+	{ 78, 216 },
+	{ 78, 332 },
+	{ 78, 334 },
+	{ 78, 336 },
+	{ 78, 465 },
+	{ 78, 490 },
+	{ 110, 242 },
+	{ 110, 243 },
+	{ 110, 244 },
+	{ 110, 245 },
+	{ 110, 246 },
+	{ 110, 248 },
+	{ 110, 333 },
+	{ 110, 335 },
+	{ 110, 337 },
+	{ 110, 466 },
+	{ 110, 491 },
+	{ 82, 340 },
+	{ 82, 342 },
+	{ 82, 344 },
+	{ 114, 341 },
+	{ 114, 343 },
+	{ 114, 345 },
+	{ 83, 346 },
+	{ 83, 348 },
+	{ 83, 350 },
+	{ 83, 352 },
+	{ 115, 347 },
+	{ 115, 349 },
+	{ 115, 351 },
+	{ 115, 353 },
+	{ 84, 354 },
+	{ 84, 356 },
+	{ 116, 355 },
+	{ 116, 357 },
+	{ 85, 217 },
+	{ 85, 218 },
+	{ 85, 219 },
+	{ 85, 220 },
+	{ 85, 360 },
+	{ 85, 362 },
+	{ 85, 364 },
+	{ 85, 366 },
+	{ 85, 368 },
+	{ 85, 370 },
+	{ 85, 467 },
+	{ 117, 249 },
+	{ 117, 250 },
+	{ 117, 251 },
+	{ 117, 252 },
+	{ 117, 361 },
+	{ 117, 363 },
+	{ 117, 365 },
+	{ 117, 367 },
+	{ 117, 369 },
+	{ 117, 371 },
+	{ 117, 468 },
+	{ 87, 372 },
+	{ 119, 373 },
+	{ 89, 221 },
+	{ 89, 374 },
+	{ 89, 376 },
+	{ 121, 253 },
+	{ 121, 375 },
+	{ 90, 377 },
+	{ 90, 379 },
+	{ 90, 381 },
+	{ 122, 378 },
+	{ 122, 380 },
+	{ 122, 382 },
 };
-charconvert cp862[] = {
- /* 0 */ 0,/*<tdbgcolor="C0C0C0"><fontface="Arial"color="000000"><b>ISO/IEC10646-1:2000CharacterName</b></font>*/
- 1,
- 2,
- 3,
- 4,
- 5,
- 6,
- 7,
- 8,
- 9,
- 10,
- 11,
- 12,
- 13,
- 14,
- 15,
- 16,
- 17,
- 18,
- 19,
- 20,
- 21,
- 22,
- 23,
- 24,
- 25,
- 26,
- 27,
- 28,
- 29,
- 30,
- 31,
- /* 32 */ 32,/*SPACE*/
- /* 33 */ 33,/*EXCLAMATIONMARK*/
- /* 34 */ 34,/*QUOTATIONMARK*/
- /* 35 */ 35,/*NUMBERSIGN*/
- /* 36 */ 36,/*DOLLARSIGN*/
- /* 37 */ 37,/*PERCENTSIGN*/
- /* 38 */ 38,/*AMPERSAND*/
- /* 39 */ 39,/*APOSTROPHE*/
- /* 40 */ 40,/*LEFTPARENTHESIS*/
- /* 41 */ 41,/*RIGHTPARENTHESIS*/
- /* 42 */ 42,/*ASTERISK*/
- /* 43 */ 43,/*PLUSSIGN*/
- /* 44 */ 44,/*COMMA*/
- /* 45 */ 45,/*HYPHEN-MINUS*/
- /* 46 */ 46,/*FULLSTOP*/
- /* 47 */ 47,/*SOLIDUS*/
- /* 48 */ 48,/*DIGITZERO*/
- /* 49 */ 49,/*DIGITONE*/
- /* 50 */ 50,/*DIGITTWO*/
- /* 51 */ 51,/*DIGITTHREE*/
- /* 52 */ 52,/*DIGITFOUR*/
- /* 53 */ 53,/*DIGITFIVE*/
- /* 54 */ 54,/*DIGITSIX*/
- /* 55 */ 55,/*DIGITSEVEN*/
- /* 56 */ 56,/*DIGITEIGHT*/
- /* 57 */ 57,/*DIGITNINE*/
- /* 58 */ 58,/*COLON*/
- /* 59 */ 59,/*SEMICOLON*/
- /* 60 */ 60,/*LESS-THANSIGN*/
- /* 61 */ 61,/*EQUALSSIGN*/
- /* 62 */ 62,/*GREATER-THANSIGN*/
- /* 63 */ 63,/*QUESTIONMARK*/
- /* 64 */ 64,/*COMMERCIALAT*/
- /* 65 */ 65,/*LATINCAPITALLETTERA*/
- /* 66 */ 66,/*LATINCAPITALLETTERB*/
- /* 67 */ 67,/*LATINCAPITALLETTERC*/
- /* 68 */ 68,/*LATINCAPITALLETTERD*/
- /* 69 */ 69,/*LATINCAPITALLETTERE*/
- /* 70 */ 70,/*LATINCAPITALLETTERF*/
- /* 71 */ 71,/*LATINCAPITALLETTERG*/
- /* 72 */ 72,/*LATINCAPITALLETTERH*/
- /* 73 */ 73,/*LATINCAPITALLETTERI*/
- /* 74 */ 74,/*LATINCAPITALLETTERJ*/
- /* 75 */ 75,/*LATINCAPITALLETTERK*/
- /* 76 */ 76,/*LATINCAPITALLETTERL*/
- /* 77 */ 77,/*LATINCAPITALLETTERM*/
- /* 78 */ 78,/*LATINCAPITALLETTERN*/
- /* 79 */ 79,/*LATINCAPITALLETTERO*/
- /* 80 */ 80,/*LATINCAPITALLETTERP*/
- /* 81 */ 81,/*LATINCAPITALLETTERQ*/
- /* 82 */ 82,/*LATINCAPITALLETTERR*/
- /* 83 */ 83,/*LATINCAPITALLETTERS*/
- /* 84 */ 84,/*LATINCAPITALLETTERT*/
- /* 85 */ 85,/*LATINCAPITALLETTERU*/
- /* 86 */ 86,/*LATINCAPITALLETTERV*/
- /* 87 */ 87,/*LATINCAPITALLETTERW*/
- /* 88 */ 88,/*LATINCAPITALLETTERX*/
- /* 89 */ 89,/*LATINCAPITALLETTERY*/
- /* 90 */ 90,/*LATINCAPITALLETTERZ*/
- /* 91 */ 91,/*LEFTSQUAREBRACKET*/
- /* 92 */ 92,/*REVERSESOLIDUS*/
- /* 93 */ 93,/*RIGHTSQUAREBRACKET*/
- /* 94 */ 94,/*CIRCUMFLEXACCENT*/
- /* 95 */ 95,/*LOWLINE*/
- /* 96 */ 96,/*GRAVEACCENT*/
- /* 97 */ 97,/*LATINSMALLLETTERA*/
- /* 98 */ 98,/*LATINSMALLLETTERB*/
- /* 99 */ 99,/*LATINSMALLLETTERC*/
- /* 100 */ 100,/*LATINSMALLLETTERD*/
- /* 101 */ 101,/*LATINSMALLLETTERE*/
- /* 102 */ 102,/*LATINSMALLLETTERF*/
- /* 103 */ 103,/*LATINSMALLLETTERG*/
- /* 104 */ 104,/*LATINSMALLLETTERH*/
- /* 105 */ 105,/*LATINSMALLLETTERI*/
- /* 106 */ 106,/*LATINSMALLLETTERJ*/
- /* 107 */ 107,/*LATINSMALLLETTERK*/
- /* 108 */ 108,/*LATINSMALLLETTERL*/
- /* 109 */ 109,/*LATINSMALLLETTERM*/
- /* 110 */ 110,/*LATINSMALLLETTERN*/
- /* 111 */ 111,/*LATINSMALLLETTERO*/
- /* 112 */ 112,/*LATINSMALLLETTERP*/
- /* 113 */ 113,/*LATINSMALLLETTERQ*/
- /* 114 */ 114,/*LATINSMALLLETTERR*/
- /* 115 */ 115,/*LATINSMALLLETTERS*/
- /* 116 */ 116,/*LATINSMALLLETTERT*/
- /* 117 */ 117,/*LATINSMALLLETTERU*/
- /* 118 */ 118,/*LATINSMALLLETTERV*/
- /* 119 */ 119,/*LATINSMALLLETTERW*/
- /* 120 */ 120,/*LATINSMALLLETTERX*/
- /* 121 */ 121,/*LATINSMALLLETTERY*/
- /* 122 */ 122,/*LATINSMALLLETTERZ*/
- /* 123 */ 123,/*LEFTCURLYBRACKET*/
- /* 124 */ 124,/*VERTICALLINE*/
- /* 125 */ 125,/*RIGHTCURLYBRACKET*/
- /* 126 */ 126,/*TILDE*/
- 127,
- /* 128 */ 1488,/*HEBREWLETTERALEF*/
- /* 129 */ 1489,/*HEBREWLETTERBET*/
- /* 130 */ 1490,/*HEBREWLETTERGIMEL*/
- /* 131 */ 1491,/*HEBREWLETTERDALET*/
- /* 132 */ 1492,/*HEBREWLETTERHE*/
- /* 133 */ 1493,/*HEBREWLETTERVAV*/
- /* 134 */ 1494,/*HEBREWLETTERZAYIN*/
- /* 135 */ 1495,/*HEBREWLETTERHET*/
- /* 136 */ 1496,/*HEBREWLETTERTET*/
- /* 137 */ 1497,/*HEBREWLETTERYOD*/
- /* 138 */ 1498,/*HEBREWLETTERFINALKAF*/
- /* 139 */ 1499,/*HEBREWLETTERKAF*/
- /* 140 */ 1500,/*HEBREWLETTERLAMED*/
- /* 141 */ 1501,/*HEBREWLETTERFINALMEM*/
- /* 142 */ 1502,/*HEBREWLETTERMEM*/
- /* 143 */ 1503,/*HEBREWLETTERFINALNUN*/
- /* 144 */ 1504,/*HEBREWLETTERNUN*/
- /* 145 */ 1505,/*HEBREWLETTERSAMEKH*/
- /* 146 */ 1506,/*HEBREWLETTERAYIN*/
- /* 147 */ 1507,/*HEBREWLETTERFINALPE*/
- /* 148 */ 1508,/*HEBREWLETTERPE*/
- /* 149 */ 1509,/*HEBREWLETTERFINALTSADI*/
- /* 150 */ 1510,/*HEBREWLETTERTSADI*/
- /* 151 */ 1511,/*HEBREWLETTERQOF*/
- /* 152 */ 1512,/*HEBREWLETTERRESH*/
- /* 153 */ 1513,/*HEBREWLETTERSHIN*/
- /* 154 */ 1514,/*HEBREWLETTERTAV*/
- /* 155 */ 162,/*CENTSIGN*/
- /* 156 */ 163,/*POUNDSIGN*/
- /* 157 */ 165,/*YENSIGN*/
- /* 158 */ 8359,/*PESETASIGN*/
- /* 159 */ 402,/*LATINSMALLLETTERFWITHHOOK*/
- /* 160 */ 225,/*LATINSMALLLETTERAWITHACUTE*/
- /* 161 */ 237,/*LATINSMALLLETTERIWITHACUTE*/
- /* 162 */ 243,/*LATINSMALLLETTEROWITHACUTE*/
- /* 163 */ 250,/*LATINSMALLLETTERUWITHACUTE*/
- /* 164 */ 241,/*LATINSMALLLETTERNWITHTILDE*/
- /* 165 */ 209,/*LATINCAPITALLETTERNWITHTILDE*/
- /* 166 */ 170,/*FEMININEORDINALINDICATOR*/
- /* 167 */ 186,/*MASCULINEORDINALINDICATOR*/
- /* 168 */ 191,/*INVERTEDQUESTIONMARK*/
- /* 169 */ 8976,/*REVERSEDNOTSIGN*/
- /* 170 */ 172,/*NOTSIGN*/
- /* 171 */ 189,/*VULGARFRACTIONONEHALF*/
- /* 172 */ 188,/*VULGARFRACTIONONEQUARTER*/
- /* 173 */ 161,/*INVERTEDEXCLAMATIONMARK*/
- /* 174 */ 171,/*LEFT-POINTINGDOUBLEANGLEQUOTATIONMARK*/
- /* 175 */ 187,/*RIGHT-POINTINGDOUBLEANGLEQUOTATIONMARK*/
- /* 176 */ 9617,/*LIGHTSHADE*/
- /* 177 */ 9618,/*MEDIUMSHADE*/
- /* 178 */ 9619,/*DARKSHADE*/
- /* 179 */ 9474,/*BOXDRAWINGSLIGHTVERTICAL*/
- /* 180 */ 9508,/*BOXDRAWINGSLIGHTVERTICALANDLEFT*/
- /* 181 */ 9569,/*BOXDRAWINGSVERTICALSINGLEANDLEFTDOUBLE*/
- /* 182 */ 9570,/*BOXDRAWINGSVERTICALDOUBLEANDLEFTSINGLE*/
- /* 183 */ 9558,/*BOXDRAWINGSDOWNDOUBLEANDLEFTSINGLE*/
- /* 184 */ 9557,/*BOXDRAWINGSDOWNSINGLEANDLEFTDOUBLE*/
- /* 185 */ 9571,/*BOXDRAWINGSDOUBLEVERTICALANDLEFT*/
- /* 186 */ 9553,/*BOXDRAWINGSDOUBLEVERTICAL*/
- /* 187 */ 9559,/*BOXDRAWINGSDOUBLEDOWNANDLEFT*/
- /* 188 */ 9565,/*BOXDRAWINGSDOUBLEUPANDLEFT*/
- /* 189 */ 9564,/*BOXDRAWINGSUPDOUBLEANDLEFTSINGLE*/
- /* 190 */ 9563,/*BOXDRAWINGSUPSINGLEANDLEFTDOUBLE*/
- /* 191 */ 9488,/*BOXDRAWINGSLIGHTDOWNANDLEFT*/
- /* 192 */ 9492,/*BOXDRAWINGSLIGHTUPANDRIGHT*/
- /* 193 */ 9524,/*BOXDRAWINGSLIGHTUPANDHORIZONTAL*/
- /* 194 */ 9516,/*BOXDRAWINGSLIGHTDOWNANDHORIZONTAL*/
- /* 195 */ 9500,/*BOXDRAWINGSLIGHTVERTICALANDRIGHT*/
- /* 196 */ 9472,/*BOXDRAWINGSLIGHTHORIZONTAL*/
- /* 197 */ 9532,/*BOXDRAWINGSLIGHTVERTICALANDHORIZONTAL*/
- /* 198 */ 9566,/*BOXDRAWINGSVERTICALSINGLEANDRIGHTDOUBLE*/
- /* 199 */ 9567,/*BOXDRAWINGSVERTICALDOUBLEANDRIGHTSINGLE*/
- /* 200 */ 9562,/*BOXDRAWINGSDOUBLEUPANDRIGHT*/
- /* 201 */ 9556,/*BOXDRAWINGSDOUBLEDOWNANDRIGHT*/
- /* 202 */ 9577,/*BOXDRAWINGSDOUBLEUPANDHORIZONTAL*/
- /* 203 */ 9574,/*BOXDRAWINGSDOUBLEDOWNANDHORIZONTAL*/
- /* 204 */ 9568,/*BOXDRAWINGSDOUBLEVERTICALANDRIGHT*/
- /* 205 */ 9552,/*BOXDRAWINGSDOUBLEHORIZONTAL*/
- /* 206 */ 9580,/*BOXDRAWINGSDOUBLEVERTICALANDHORIZONTAL*/
- /* 207 */ 9575,/*BOXDRAWINGSUPSINGLEANDHORIZONTALDOUBLE*/
- /* 208 */ 9576,/*BOXDRAWINGSUPDOUBLEANDHORIZONTALSINGLE*/
- /* 209 */ 9572,/*BOXDRAWINGSDOWNSINGLEANDHORIZONTALDOUBLE*/
- /* 210 */ 9573,/*BOXDRAWINGSDOWNDOUBLEANDHORIZONTALSINGLE*/
- /* 211 */ 9561,/*BOXDRAWINGSUPDOUBLEANDRIGHTSINGLE*/
- /* 212 */ 9560,/*BOXDRAWINGSUPSINGLEANDRIGHTDOUBLE*/
- /* 213 */ 9554,/*BOXDRAWINGSDOWNSINGLEANDRIGHTDOUBLE*/
- /* 214 */ 9555,/*BOXDRAWINGSDOWNDOUBLEANDRIGHTSINGLE*/
- /* 215 */ 9579,/*BOXDRAWINGSVERTICALDOUBLEANDHORIZONTALSINGLE*/
- /* 216 */ 9578,/*BOXDRAWINGSVERTICALSINGLEANDHORIZONTALDOUBLE*/
- /* 217 */ 9496,/*BOXDRAWINGSLIGHTUPANDLEFT*/
- /* 218 */ 9484,/*BOXDRAWINGSLIGHTDOWNANDRIGHT*/
- /* 219 */ 9608,/*FULLBLOCK*/
- /* 220 */ 9604,/*LOWERHALFBLOCK*/
- /* 221 */ 9612,/*LEFTHALFBLOCK*/
- /* 222 */ 9616,/*RIGHTHALFBLOCK*/
- /* 223 */ 9600,/*UPPERHALFBLOCK*/
- /* 224 */ 945,/*GREEKSMALLLETTERALPHA*/
- /* 225 */ 223,/*LATINSMALLLETTERSHARPS*/
- /* 226 */ 915,/*GREEKCAPITALLETTERGAMMA*/
- /* 227 */ 960,/*GREEKSMALLLETTERPI*/
- /* 228 */ 931,/*GREEKCAPITALLETTERSIGMA*/
- /* 229 */ 963,/*GREEKSMALLLETTERSIGMA*/
- /* 230 */ 181,/*MICROSIGN*/
- /* 231 */ 964,/*GREEKSMALLLETTERTAU*/
- /* 232 */ 934,/*GREEKCAPITALLETTERPHI*/
- /* 233 */ 920,/*GREEKCAPITALLETTERTHETA*/
- /* 234 */ 937,/*GREEKCAPITALLETTEROMEGA*/
- /* 235 */ 948,/*GREEKSMALLLETTERDELTA*/
- /* 236 */ 8734,/*INFINITY*/
- /* 237 */ 966,/*GREEKSMALLLETTERPHI*/
- /* 238 */ 949,/*GREEKSMALLLETTEREPSILON*/
- /* 239 */ 8745,/*INTERSECTION*/
- /* 240 */ 8801,/*IDENTICALTO*/
- /* 241 */ 177,/*PLUS-MINUSSIGN*/
- /* 242 */ 8805,/*GREATER-THANOREQUALTO*/
- /* 243 */ 8804,/*LESS-THANOREQUALTO*/
- /* 244 */ 8992,/*TOPHALFINTEGRAL*/
- /* 245 */ 8993,/*BOTTOMHALFINTEGRAL*/
- /* 246 */ 247,/*DIVISIONSIGN*/
- /* 247 */ 8776,/*ALMOSTEQUALTO*/
- /* 248 */ 176,/*DEGREESIGN*/
- /* 249 */ 8729,/*BULLETOPERATOR*/
- /* 250 */ 183,/*MIDDLEDOT*/
- /* 251 */ 8730,/*SQUAREROOT*/
- /* 252 */ 8319,/*SUPERSCRIPTLATINSMALLLETTERN*/
- /* 253 */ 178,/*SUPERSCRIPTTWO*/
- /* 254 */ 9632,/*BLACKSQUARE*/
- /* 255 */ 160/*NO-BREAKSPACE*/
+static convert_t cp1254[] = {
+	{ 0, 0 },
+	{ 1, 1 },
+	{ 2, 2 },
+	{ 3, 3 },
+	{ 4, 4 },
+	{ 5, 5 },
+	{ 6, 6 },
+	{ 7, 7 },
+	{ 8, 8 },
+	{ 9, 9 },
+	{ 10, 10 },
+	{ 11, 11 },
+	{ 12, 12 },
+	{ 13, 13 },
+	{ 14, 14 },
+	{ 15, 15 },
+	{ 16, 16 },
+	{ 17, 17 },
+	{ 18, 18 },
+	{ 19, 19 },
+	{ 20, 20 },
+	{ 21, 21 },
+	{ 22, 22 },
+	{ 23, 23 },
+	{ 24, 24 },
+	{ 25, 25 },
+	{ 26, 26 },
+	{ 27, 27 },
+	{ 28, 28 },
+	{ 29, 29 },
+	{ 30, 30 },
+	{ 31, 31 },
+	{ 32, 32 },
+	{ 33, 33 },
+	{ 34, 34 },
+	{ 35, 35 },
+	{ 36, 36 },
+	{ 37, 37 },
+	{ 38, 38 },
+	{ 39, 39 },
+	{ 40, 40 },
+	{ 41, 41 },
+	{ 42, 42 },
+	{ 43, 43 },
+	{ 44, 44 },
+	{ 45, 45 },
+	{ 46, 46 },
+	{ 47, 47 },
+	{ 48, 48 },
+	{ 49, 49 },
+	{ 50, 50 },
+	{ 51, 51 },
+	{ 52, 52 },
+	{ 53, 53 },
+	{ 54, 54 },
+	{ 55, 55 },
+	{ 56, 56 },
+	{ 57, 57 },
+	{ 58, 58 },
+	{ 59, 59 },
+	{ 60, 60 },
+	{ 61, 61 },
+	{ 62, 62 },
+	{ 63, 63 },
+	{ 64, 64 },
+	{ 65, 65 },
+	{ 66, 66 },
+	{ 67, 67 },
+	{ 68, 68 },
+	{ 69, 69 },
+	{ 70, 70 },
+	{ 71, 71 },
+	{ 72, 72 },
+	{ 73, 73 },
+	{ 74, 74 },
+	{ 75, 75 },
+	{ 76, 76 },
+	{ 77, 77 },
+	{ 78, 78 },
+	{ 79, 79 },
+	{ 80, 80 },
+	{ 81, 81 },
+	{ 82, 82 },
+	{ 83, 83 },
+	{ 84, 84 },
+	{ 85, 85 },
+	{ 86, 86 },
+	{ 87, 87 },
+	{ 88, 88 },
+	{ 89, 89 },
+	{ 90, 90 },
+	{ 91, 91 },
+	{ 92, 92 },
+	{ 93, 93 },
+	{ 94, 94 },
+	{ 95, 95 },
+	{ 96, 96 },
+	{ 97, 97 },
+	{ 98, 98 },
+	{ 99, 99 },
+	{ 100, 100 },
+	{ 101, 101 },
+	{ 102, 102 },
+	{ 103, 103 },
+	{ 104, 104 },
+	{ 105, 105 },
+	{ 106, 106 },
+	{ 107, 107 },
+	{ 108, 108 },
+	{ 109, 109 },
+	{ 110, 110 },
+	{ 111, 111 },
+	{ 112, 112 },
+	{ 113, 113 },
+	{ 114, 114 },
+	{ 115, 115 },
+	{ 116, 116 },
+	{ 117, 117 },
+	{ 118, 118 },
+	{ 119, 119 },
+	{ 120, 120 },
+	{ 121, 121 },
+	{ 122, 122 },
+	{ 123, 123 },
+	{ 124, 124 },
+	{ 125, 125 },
+	{ 126, 126 },
+	{ 127, 127 },
+	{ 128, 8364 },
+	{ 129, 129 },
+	{ 130, 8218 },
+	{ 131, 402 },
+	{ 132, 8222 },
+	{ 133, 8230 },
+	{ 134, 8224 },
+	{ 135, 8225 },
+	{ 136, 710 },
+	{ 137, 8240 },
+	{ 138, 352 },
+	{ 139, 8249 },
+	{ 140, 338 },
+	{ 141, 141 },
+	{ 142, 142 },
+	{ 143, 143 },
+	{ 144, 144 },
+	{ 145, 8216 },
+	{ 146, 8217 },
+	{ 147, 8220 },
+	{ 148, 8221 },
+	{ 149, 8226 },
+	{ 150, 8211 },
+	{ 151, 8212 },
+	{ 152, 732 },
+	{ 153, 8482 },
+	{ 154, 353 },
+	{ 155, 8250 },
+	{ 156, 339 },
+	{ 157, 157 },
+	{ 158, 158 },
+	{ 159, 376 },
+	{ 160, 160 },
+	{ 161, 161 },
+	{ 162, 162 },
+	{ 163, 163 },
+	{ 164, 164 },
+	{ 165, 165 },
+	{ 166, 166 },
+	{ 167, 167 },
+	{ 168, 168 },
+	{ 169, 169 },
+	{ 170, 170 },
+	{ 171, 171 },
+	{ 172, 172 },
+	{ 173, 173 },
+	{ 174, 174 },
+	{ 175, 175 },
+	{ 176, 176 },
+	{ 177, 177 },
+	{ 178, 178 },
+	{ 179, 179 },
+	{ 180, 180 },
+	{ 181, 181 },
+	{ 182, 182 },
+	{ 183, 183 },
+	{ 184, 184 },
+	{ 185, 185 },
+	{ 186, 186 },
+	{ 187, 187 },
+	{ 188, 188 },
+	{ 189, 189 },
+	{ 190, 190 },
+	{ 191, 191 },
+	{ 192, 192 },
+	{ 193, 193 },
+	{ 194, 194 },
+	{ 195, 195 },
+	{ 196, 196 },
+	{ 197, 197 },
+	{ 198, 198 },
+	{ 199, 199 },
+	{ 200, 200 },
+	{ 201, 201 },
+	{ 202, 202 },
+	{ 203, 203 },
+	{ 204, 204 },
+	{ 205, 205 },
+	{ 206, 206 },
+	{ 207, 207 },
+	{ 208, 286 },
+	{ 209, 209 },
+	{ 210, 210 },
+	{ 211, 211 },
+	{ 212, 212 },
+	{ 213, 213 },
+	{ 214, 214 },
+	{ 215, 215 },
+	{ 216, 216 },
+	{ 217, 217 },
+	{ 218, 218 },
+	{ 219, 219 },
+	{ 220, 220 },
+	{ 221, 304 },
+	{ 222, 350 },
+	{ 223, 223 },
+	{ 224, 224 },
+	{ 225, 225 },
+	{ 226, 226 },
+	{ 227, 227 },
+	{ 228, 228 },
+	{ 229, 229 },
+	{ 230, 230 },
+	{ 231, 231 },
+	{ 232, 232 },
+	{ 233, 233 },
+	{ 234, 234 },
+	{ 235, 235 },
+	{ 236, 236 },
+	{ 237, 237 },
+	{ 238, 238 },
+	{ 239, 239 },
+	{ 240, 287 },
+	{ 241, 241 },
+	{ 242, 242 },
+	{ 243, 243 },
+	{ 244, 244 },
+	{ 245, 245 },
+	{ 246, 246 },
+	{ 247, 247 },
+	{ 248, 248 },
+	{ 249, 249 },
+	{ 250, 250 },
+	{ 251, 251 },
+	{ 252, 252 },
+	{ 253, 305 },
+	{ 254, 351 },
+	{ 255, 255 },
+	{ 32, 8194 },
+	{ 32, 8195 },
+	{ 32, 8201 },
+	{ 65, 256 },
+	{ 65, 258 },
+	{ 65, 260 },
+	{ 65, 461 },
+	{ 97, 257 },
+	{ 97, 259 },
+	{ 97, 261 },
+	{ 97, 462 },
+	{ 67, 262 },
+	{ 67, 264 },
+	{ 67, 266 },
+	{ 67, 268 },
+	{ 99, 263 },
+	{ 99, 265 },
+	{ 99, 267 },
+	{ 99, 269 },
+	{ 68, 270 },
+	{ 100, 271 },
+	{ 69, 274 },
+	{ 69, 276 },
+	{ 69, 278 },
+	{ 69, 280 },
+	{ 69, 282 },
+	{ 101, 275 },
+	{ 101, 277 },
+	{ 101, 279 },
+	{ 101, 281 },
+	{ 101, 283 },
+	{ 71, 284 },
+	{ 71, 288 },
+	{ 71, 290 },
+	{ 71, 486 },
+	{ 71, 500 },
+	{ 103, 285 },
+	{ 103, 289 },
+	{ 103, 291 },
+	{ 103, 487 },
+	{ 103, 501 },
+	{ 72, 292 },
+	{ 104, 293 },
+	{ 73, 296 },
+	{ 73, 298 },
+	{ 73, 300 },
+	{ 73, 302 },
+	{ 73, 463 },
+	{ 105, 297 },
+	{ 105, 299 },
+	{ 105, 301 },
+	{ 105, 303 },
+	{ 105, 464 },
+	{ 74, 308 },
+	{ 106, 309 },
+	{ 75, 310 },
+	{ 75, 488 },
+	{ 107, 311 },
+	{ 107, 489 },
+	{ 76, 313 },
+	{ 76, 315 },
+	{ 76, 317 },
+	{ 76, 319 },
+	{ 76, 321 },
+	{ 108, 314 },
+	{ 108, 316 },
+	{ 108, 318 },
+	{ 108, 320 },
+	{ 108, 322 },
+	{ 77, 323 },
+	{ 77, 325 },
+	{ 77, 327 },
+	{ 109, 324 },
+	{ 109, 326 },
+	{ 109, 328 },
+	{ 109, 329 },
+	{ 78, 332 },
+	{ 78, 334 },
+	{ 78, 336 },
+	{ 78, 465 },
+	{ 78, 490 },
+	{ 110, 333 },
+	{ 110, 335 },
+	{ 110, 337 },
+	{ 110, 466 },
+	{ 110, 491 },
+	{ 82, 340 },
+	{ 82, 342 },
+	{ 82, 344 },
+	{ 114, 341 },
+	{ 114, 343 },
+	{ 114, 345 },
+	{ 83, 346 },
+	{ 83, 348 },
+	{ 115, 347 },
+	{ 115, 349 },
+	{ 84, 354 },
+	{ 84, 356 },
+	{ 116, 355 },
+	{ 116, 357 },
+	{ 85, 360 },
+	{ 85, 362 },
+	{ 85, 364 },
+	{ 85, 366 },
+	{ 85, 368 },
+	{ 85, 370 },
+	{ 85, 467 },
+	{ 117, 361 },
+	{ 117, 363 },
+	{ 117, 365 },
+	{ 117, 367 },
+	{ 117, 369 },
+	{ 117, 371 },
+	{ 117, 468 },
+	{ 87, 372 },
+	{ 119, 373 },
+	{ 89, 221 },
+	{ 89, 374 },
+	{ 121, 253 },
+	{ 121, 375 },
+	{ 90, 377 },
+	{ 90, 379 },
+	{ 90, 381 },
+	{ 122, 378 },
+	{ 122, 380 },
+	{ 122, 382 },
 };
-charconvert cp863[] = {
- /* 0 */ 0,/*<tdbgcolor="C0C0C0"><fontface="Arial"color="000000"><b>ISO/IEC10646-1:2000CharacterName</b></font>*/
- 1,
- 2,
- 3,
- 4,
- 5,
- 6,
- 7,
- 8,
- 9,
- 10,
- 11,
- 12,
- 13,
- 14,
- 15,
- 16,
- 17,
- 18,
- 19,
- 20,
- 21,
- 22,
- 23,
- 24,
- 25,
- 26,
- 27,
- 28,
- 29,
- 30,
- 31,
- /* 32 */ 32,/*SPACE*/
- /* 33 */ 33,/*EXCLAMATIONMARK*/
- /* 34 */ 34,/*QUOTATIONMARK*/
- /* 35 */ 35,/*NUMBERSIGN*/
- /* 36 */ 36,/*DOLLARSIGN*/
- /* 37 */ 37,/*PERCENTSIGN*/
- /* 38 */ 38,/*AMPERSAND*/
- /* 39 */ 39,/*APOSTROPHE*/
- /* 40 */ 40,/*LEFTPARENTHESIS*/
- /* 41 */ 41,/*RIGHTPARENTHESIS*/
- /* 42 */ 42,/*ASTERISK*/
- /* 43 */ 43,/*PLUSSIGN*/
- /* 44 */ 44,/*COMMA*/
- /* 45 */ 45,/*HYPHEN-MINUS*/
- /* 46 */ 46,/*FULLSTOP*/
- /* 47 */ 47,/*SOLIDUS*/
- /* 48 */ 48,/*DIGITZERO*/
- /* 49 */ 49,/*DIGITONE*/
- /* 50 */ 50,/*DIGITTWO*/
- /* 51 */ 51,/*DIGITTHREE*/
- /* 52 */ 52,/*DIGITFOUR*/
- /* 53 */ 53,/*DIGITFIVE*/
- /* 54 */ 54,/*DIGITSIX*/
- /* 55 */ 55,/*DIGITSEVEN*/
- /* 56 */ 56,/*DIGITEIGHT*/
- /* 57 */ 57,/*DIGITNINE*/
- /* 58 */ 58,/*COLON*/
- /* 59 */ 59,/*SEMICOLON*/
- /* 60 */ 60,/*LESS-THANSIGN*/
- /* 61 */ 61,/*EQUALSSIGN*/
- /* 62 */ 62,/*GREATER-THANSIGN*/
- /* 63 */ 63,/*QUESTIONMARK*/
- /* 64 */ 64,/*COMMERCIALAT*/
- /* 65 */ 65,/*LATINCAPITALLETTERA*/
- /* 66 */ 66,/*LATINCAPITALLETTERB*/
- /* 67 */ 67,/*LATINCAPITALLETTERC*/
- /* 68 */ 68,/*LATINCAPITALLETTERD*/
- /* 69 */ 69,/*LATINCAPITALLETTERE*/
- /* 70 */ 70,/*LATINCAPITALLETTERF*/
- /* 71 */ 71,/*LATINCAPITALLETTERG*/
- /* 72 */ 72,/*LATINCAPITALLETTERH*/
- /* 73 */ 73,/*LATINCAPITALLETTERI*/
- /* 74 */ 74,/*LATINCAPITALLETTERJ*/
- /* 75 */ 75,/*LATINCAPITALLETTERK*/
- /* 76 */ 76,/*LATINCAPITALLETTERL*/
- /* 77 */ 77,/*LATINCAPITALLETTERM*/
- /* 78 */ 78,/*LATINCAPITALLETTERN*/
- /* 79 */ 79,/*LATINCAPITALLETTERO*/
- /* 80 */ 80,/*LATINCAPITALLETTERP*/
- /* 81 */ 81,/*LATINCAPITALLETTERQ*/
- /* 82 */ 82,/*LATINCAPITALLETTERR*/
- /* 83 */ 83,/*LATINCAPITALLETTERS*/
- /* 84 */ 84,/*LATINCAPITALLETTERT*/
- /* 85 */ 85,/*LATINCAPITALLETTERU*/
- /* 86 */ 86,/*LATINCAPITALLETTERV*/
- /* 87 */ 87,/*LATINCAPITALLETTERW*/
- /* 88 */ 88,/*LATINCAPITALLETTERX*/
- /* 89 */ 89,/*LATINCAPITALLETTERY*/
- /* 90 */ 90,/*LATINCAPITALLETTERZ*/
- /* 91 */ 91,/*LEFTSQUAREBRACKET*/
- /* 92 */ 92,/*REVERSESOLIDUS*/
- /* 93 */ 93,/*RIGHTSQUAREBRACKET*/
- /* 94 */ 94,/*CIRCUMFLEXACCENT*/
- /* 95 */ 95,/*LOWLINE*/
- /* 96 */ 96,/*GRAVEACCENT*/
- /* 97 */ 97,/*LATINSMALLLETTERA*/
- /* 98 */ 98,/*LATINSMALLLETTERB*/
- /* 99 */ 99,/*LATINSMALLLETTERC*/
- /* 100 */ 100,/*LATINSMALLLETTERD*/
- /* 101 */ 101,/*LATINSMALLLETTERE*/
- /* 102 */ 102,/*LATINSMALLLETTERF*/
- /* 103 */ 103,/*LATINSMALLLETTERG*/
- /* 104 */ 104,/*LATINSMALLLETTERH*/
- /* 105 */ 105,/*LATINSMALLLETTERI*/
- /* 106 */ 106,/*LATINSMALLLETTERJ*/
- /* 107 */ 107,/*LATINSMALLLETTERK*/
- /* 108 */ 108,/*LATINSMALLLETTERL*/
- /* 109 */ 109,/*LATINSMALLLETTERM*/
- /* 110 */ 110,/*LATINSMALLLETTERN*/
- /* 111 */ 111,/*LATINSMALLLETTERO*/
- /* 112 */ 112,/*LATINSMALLLETTERP*/
- /* 113 */ 113,/*LATINSMALLLETTERQ*/
- /* 114 */ 114,/*LATINSMALLLETTERR*/
- /* 115 */ 115,/*LATINSMALLLETTERS*/
- /* 116 */ 116,/*LATINSMALLLETTERT*/
- /* 117 */ 117,/*LATINSMALLLETTERU*/
- /* 118 */ 118,/*LATINSMALLLETTERV*/
- /* 119 */ 119,/*LATINSMALLLETTERW*/
- /* 120 */ 120,/*LATINSMALLLETTERX*/
- /* 121 */ 121,/*LATINSMALLLETTERY*/
- /* 122 */ 122,/*LATINSMALLLETTERZ*/
- /* 123 */ 123,/*LEFTCURLYBRACKET*/
- /* 124 */ 124,/*VERTICALLINE*/
- /* 125 */ 125,/*RIGHTCURLYBRACKET*/
- /* 126 */ 126,/*TILDE*/
- 127,
- /* 128 */ 199,/*LATINCAPITALLETTERCWITHCEDILLA*/
- /* 129 */ 252,/*LATINSMALLLETTERUWITHDIAERESIS*/
- /* 130 */ 233,/*LATINSMALLLETTEREWITHACUTE*/
- /* 131 */ 226,/*LATINSMALLLETTERAWITHCIRCUMFLEX*/
- /* 132 */ 194,/*LATINCAPITALLETTERAWITHCIRCUMFLEX*/
- /* 133 */ 224,/*LATINSMALLLETTERAWITHGRAVE*/
- /* 134 */ 182,/*PILCROWSIGN*/
- /* 135 */ 231,/*LATINSMALLLETTERCWITHCEDILLA*/
- /* 136 */ 234,/*LATINSMALLLETTEREWITHCIRCUMFLEX*/
- /* 137 */ 235,/*LATINSMALLLETTEREWITHDIAERESIS*/
- /* 138 */ 232,/*LATINSMALLLETTEREWITHGRAVE*/
- /* 139 */ 239,/*LATINSMALLLETTERIWITHDIAERESIS*/
- /* 140 */ 238,/*LATINSMALLLETTERIWITHCIRCUMFLEX*/
- /* 141 */ 8215,/*DOUBLELOWLINE*/
- /* 142 */ 192,/*LATINCAPITALLETTERAWITHGRAVE*/
- /* 143 */ 167,/*SECTIONSIGN*/
- /* 144 */ 201,/*LATINCAPITALLETTEREWITHACUTE*/
- /* 145 */ 200,/*LATINCAPITALLETTEREWITHGRAVE*/
- /* 146 */ 202,/*LATINCAPITALLETTEREWITHCIRCUMFLEX*/
- /* 147 */ 244,/*LATINSMALLLETTEROWITHCIRCUMFLEX*/
- /* 148 */ 203,/*LATINCAPITALLETTEREWITHDIAERESIS*/
- /* 149 */ 207,/*LATINCAPITALLETTERIWITHDIAERESIS*/
- /* 150 */ 251,/*LATINSMALLLETTERUWITHCIRCUMFLEX*/
- /* 151 */ 249,/*LATINSMALLLETTERUWITHGRAVE*/
- /* 152 */ 164,/*CURRENCYSIGN*/
- /* 153 */ 212,/*LATINCAPITALLETTEROWITHCIRCUMFLEX*/
- /* 154 */ 220,/*LATINCAPITALLETTERUWITHDIAERESIS*/
- /* 155 */ 162,/*CENTSIGN*/
- /* 156 */ 163,/*POUNDSIGN*/
- /* 157 */ 217,/*LATINCAPITALLETTERUWITHGRAVE*/
- /* 158 */ 219,/*LATINCAPITALLETTERUWITHCIRCUMFLEX*/
- /* 159 */ 402,/*LATINSMALLLETTERFWITHHOOK*/
- /* 160 */ 166,/*BROKENBAR*/
- /* 161 */ 180,/*ACUTEACCENT*/
- /* 162 */ 243,/*LATINSMALLLETTEROWITHACUTE*/
- /* 163 */ 250,/*LATINSMALLLETTERUWITHACUTE*/
- /* 164 */ 168,/*DIAERESIS*/
- /* 165 */ 184,/*CEDILLA*/
- /* 166 */ 179,/*SUPERSCRIPTTHREE*/
- /* 167 */ 175,/*MACRON*/
- /* 168 */ 206,/*LATINCAPITALLETTERIWITHCIRCUMFLEX*/
- /* 169 */ 8976,/*REVERSEDNOTSIGN*/
- /* 170 */ 172,/*NOTSIGN*/
- /* 171 */ 189,/*VULGARFRACTIONONEHALF*/
- /* 172 */ 188,/*VULGARFRACTIONONEQUARTER*/
- /* 173 */ 190,/*VULGARFRACTIONTHREEQUARTERS*/
- /* 174 */ 171,/*LEFT-POINTINGDOUBLEANGLEQUOTATIONMARK*/
- /* 175 */ 187,/*RIGHT-POINTINGDOUBLEANGLEQUOTATIONMARK*/
- /* 176 */ 9617,/*LIGHTSHADE*/
- /* 177 */ 9618,/*MEDIUMSHADE*/
- /* 178 */ 9619,/*DARKSHADE*/
- /* 179 */ 9474,/*BOXDRAWINGSLIGHTVERTICAL*/
- /* 180 */ 9508,/*BOXDRAWINGSLIGHTVERTICALANDLEFT*/
- /* 181 */ 9569,/*BOXDRAWINGSVERTICALSINGLEANDLEFTDOUBLE*/
- /* 182 */ 9570,/*BOXDRAWINGSVERTICALDOUBLEANDLEFTSINGLE*/
- /* 183 */ 9558,/*BOXDRAWINGSDOWNDOUBLEANDLEFTSINGLE*/
- /* 184 */ 9557,/*BOXDRAWINGSDOWNSINGLEANDLEFTDOUBLE*/
- /* 185 */ 9571,/*BOXDRAWINGSDOUBLEVERTICALANDLEFT*/
- /* 186 */ 9553,/*BOXDRAWINGSDOUBLEVERTICAL*/
- /* 187 */ 9559,/*BOXDRAWINGSDOUBLEDOWNANDLEFT*/
- /* 188 */ 9565,/*BOXDRAWINGSDOUBLEUPANDLEFT*/
- /* 189 */ 9564,/*BOXDRAWINGSUPDOUBLEANDLEFTSINGLE*/
- /* 190 */ 9563,/*BOXDRAWINGSUPSINGLEANDLEFTDOUBLE*/
- /* 191 */ 9488,/*BOXDRAWINGSLIGHTDOWNANDLEFT*/
- /* 192 */ 9492,/*BOXDRAWINGSLIGHTUPANDRIGHT*/
- /* 193 */ 9524,/*BOXDRAWINGSLIGHTUPANDHORIZONTAL*/
- /* 194 */ 9516,/*BOXDRAWINGSLIGHTDOWNANDHORIZONTAL*/
- /* 195 */ 9500,/*BOXDRAWINGSLIGHTVERTICALANDRIGHT*/
- /* 196 */ 9472,/*BOXDRAWINGSLIGHTHORIZONTAL*/
- /* 197 */ 9532,/*BOXDRAWINGSLIGHTVERTICALANDHORIZONTAL*/
- /* 198 */ 9566,/*BOXDRAWINGSVERTICALSINGLEANDRIGHTDOUBLE*/
- /* 199 */ 9567,/*BOXDRAWINGSVERTICALDOUBLEANDRIGHTSINGLE*/
- /* 200 */ 9562,/*BOXDRAWINGSDOUBLEUPANDRIGHT*/
- /* 201 */ 9556,/*BOXDRAWINGSDOUBLEDOWNANDRIGHT*/
- /* 202 */ 9577,/*BOXDRAWINGSDOUBLEUPANDHORIZONTAL*/
- /* 203 */ 9574,/*BOXDRAWINGSDOUBLEDOWNANDHORIZONTAL*/
- /* 204 */ 9568,/*BOXDRAWINGSDOUBLEVERTICALANDRIGHT*/
- /* 205 */ 9552,/*BOXDRAWINGSDOUBLEHORIZONTAL*/
- /* 206 */ 9580,/*BOXDRAWINGSDOUBLEVERTICALANDHORIZONTAL*/
- /* 207 */ 9575,/*BOXDRAWINGSUPSINGLEANDHORIZONTALDOUBLE*/
- /* 208 */ 9576,/*BOXDRAWINGSUPDOUBLEANDHORIZONTALSINGLE*/
- /* 209 */ 9572,/*BOXDRAWINGSDOWNSINGLEANDHORIZONTALDOUBLE*/
- /* 210 */ 9573,/*BOXDRAWINGSDOWNDOUBLEANDHORIZONTALSINGLE*/
- /* 211 */ 9561,/*BOXDRAWINGSUPDOUBLEANDRIGHTSINGLE*/
- /* 212 */ 9560,/*BOXDRAWINGSUPSINGLEANDRIGHTDOUBLE*/
- /* 213 */ 9554,/*BOXDRAWINGSDOWNSINGLEANDRIGHTDOUBLE*/
- /* 214 */ 9555,/*BOXDRAWINGSDOWNDOUBLEANDRIGHTSINGLE*/
- /* 215 */ 9579,/*BOXDRAWINGSVERTICALDOUBLEANDHORIZONTALSINGLE*/
- /* 216 */ 9578,/*BOXDRAWINGSVERTICALSINGLEANDHORIZONTALDOUBLE*/
- /* 217 */ 9496,/*BOXDRAWINGSLIGHTUPANDLEFT*/
- /* 218 */ 9484,/*BOXDRAWINGSLIGHTDOWNANDRIGHT*/
- /* 219 */ 9608,/*FULLBLOCK*/
- /* 220 */ 9604,/*LOWERHALFBLOCK*/
- /* 221 */ 9612,/*LEFTHALFBLOCK*/
- /* 222 */ 9616,/*RIGHTHALFBLOCK*/
- /* 223 */ 9600,/*UPPERHALFBLOCK*/
- /* 224 */ 945,/*GREEKSMALLLETTERALPHA*/
- /* 225 */ 223,/*LATINSMALLLETTERSHARPS*/
- /* 226 */ 915,/*GREEKCAPITALLETTERGAMMA*/
- /* 227 */ 960,/*GREEKSMALLLETTERPI*/
- /* 228 */ 931,/*GREEKCAPITALLETTERSIGMA*/
- /* 229 */ 963,/*GREEKSMALLLETTERSIGMA*/
- /* 230 */ 181,/*MICROSIGN*/
- /* 231 */ 964,/*GREEKSMALLLETTERTAU*/
- /* 232 */ 934,/*GREEKCAPITALLETTERPHI*/
- /* 233 */ 920,/*GREEKCAPITALLETTERTHETA*/
- /* 234 */ 937,/*GREEKCAPITALLETTEROMEGA*/
- /* 235 */ 948,/*GREEKSMALLLETTERDELTA*/
- /* 236 */ 8734,/*INFINITY*/
- /* 237 */ 966,/*GREEKSMALLLETTERPHI*/
- /* 238 */ 949,/*GREEKSMALLLETTEREPSILON*/
- /* 239 */ 8745,/*INTERSECTION*/
- /* 240 */ 8801,/*IDENTICALTO*/
- /* 241 */ 177,/*PLUS-MINUSSIGN*/
- /* 242 */ 8805,/*GREATER-THANOREQUALTO*/
- /* 243 */ 8804,/*LESS-THANOREQUALTO*/
- /* 244 */ 8992,/*TOPHALFINTEGRAL*/
- /* 245 */ 8993,/*BOTTOMHALFINTEGRAL*/
- /* 246 */ 247,/*DIVISIONSIGN*/
- /* 247 */ 8776,/*ALMOSTEQUALTO*/
- /* 248 */ 176,/*DEGREESIGN*/
- /* 249 */ 8729,/*BULLETOPERATOR*/
- /* 250 */ 183,/*MIDDLEDOT*/
- /* 251 */ 8730,/*SQUAREROOT*/
- /* 252 */ 8319,/*SUPERSCRIPTLATINSMALLLETTERN*/
- /* 253 */ 178,/*SUPERSCRIPTTWO*/
- /* 254 */ 9632,/*BLACKSQUARE*/
- /* 255 */ 160/*NO-BREAKSPACE*/
+static convert_t cp1255[] = {
+	{ 0, 0 },
+	{ 1, 1 },
+	{ 2, 2 },
+	{ 3, 3 },
+	{ 4, 4 },
+	{ 5, 5 },
+	{ 6, 6 },
+	{ 7, 7 },
+	{ 8, 8 },
+	{ 9, 9 },
+	{ 10, 10 },
+	{ 11, 11 },
+	{ 12, 12 },
+	{ 13, 13 },
+	{ 14, 14 },
+	{ 15, 15 },
+	{ 16, 16 },
+	{ 17, 17 },
+	{ 18, 18 },
+	{ 19, 19 },
+	{ 20, 20 },
+	{ 21, 21 },
+	{ 22, 22 },
+	{ 23, 23 },
+	{ 24, 24 },
+	{ 25, 25 },
+	{ 26, 26 },
+	{ 27, 27 },
+	{ 28, 28 },
+	{ 29, 29 },
+	{ 30, 30 },
+	{ 31, 31 },
+	{ 32, 32 },
+	{ 33, 33 },
+	{ 34, 34 },
+	{ 35, 35 },
+	{ 36, 36 },
+	{ 37, 37 },
+	{ 38, 38 },
+	{ 39, 39 },
+	{ 40, 40 },
+	{ 41, 41 },
+	{ 42, 42 },
+	{ 43, 43 },
+	{ 44, 44 },
+	{ 45, 45 },
+	{ 46, 46 },
+	{ 47, 47 },
+	{ 48, 48 },
+	{ 49, 49 },
+	{ 50, 50 },
+	{ 51, 51 },
+	{ 52, 52 },
+	{ 53, 53 },
+	{ 54, 54 },
+	{ 55, 55 },
+	{ 56, 56 },
+	{ 57, 57 },
+	{ 58, 58 },
+	{ 59, 59 },
+	{ 60, 60 },
+	{ 61, 61 },
+	{ 62, 62 },
+	{ 63, 63 },
+	{ 64, 64 },
+	{ 65, 65 },
+	{ 66, 66 },
+	{ 67, 67 },
+	{ 68, 68 },
+	{ 69, 69 },
+	{ 70, 70 },
+	{ 71, 71 },
+	{ 72, 72 },
+	{ 73, 73 },
+	{ 74, 74 },
+	{ 75, 75 },
+	{ 76, 76 },
+	{ 77, 77 },
+	{ 78, 78 },
+	{ 79, 79 },
+	{ 80, 80 },
+	{ 81, 81 },
+	{ 82, 82 },
+	{ 83, 83 },
+	{ 84, 84 },
+	{ 85, 85 },
+	{ 86, 86 },
+	{ 87, 87 },
+	{ 88, 88 },
+	{ 89, 89 },
+	{ 90, 90 },
+	{ 91, 91 },
+	{ 92, 92 },
+	{ 93, 93 },
+	{ 94, 94 },
+	{ 95, 95 },
+	{ 96, 96 },
+	{ 97, 97 },
+	{ 98, 98 },
+	{ 99, 99 },
+	{ 100, 100 },
+	{ 101, 101 },
+	{ 102, 102 },
+	{ 103, 103 },
+	{ 104, 104 },
+	{ 105, 105 },
+	{ 106, 106 },
+	{ 107, 107 },
+	{ 108, 108 },
+	{ 109, 109 },
+	{ 110, 110 },
+	{ 111, 111 },
+	{ 112, 112 },
+	{ 113, 113 },
+	{ 114, 114 },
+	{ 115, 115 },
+	{ 116, 116 },
+	{ 117, 117 },
+	{ 118, 118 },
+	{ 119, 119 },
+	{ 120, 120 },
+	{ 121, 121 },
+	{ 122, 122 },
+	{ 123, 123 },
+	{ 124, 124 },
+	{ 125, 125 },
+	{ 126, 126 },
+	{ 127, 127 },
+	{ 128, 8364 },
+	{ 129, 129 },
+	{ 130, 8218 },
+	{ 131, 402 },
+	{ 132, 8222 },
+	{ 133, 8230 },
+	{ 134, 8224 },
+	{ 135, 8225 },
+	{ 136, 136 },
+	{ 137, 8240 },
+	{ 138, 138 },
+	{ 139, 8249 },
+	{ 140, 140 },
+	{ 141, 141 },
+	{ 142, 142 },
+	{ 143, 143 },
+	{ 144, 144 },
+	{ 145, 8216 },
+	{ 146, 8217 },
+	{ 147, 8220 },
+	{ 148, 8221 },
+	{ 149, 8226 },
+	{ 150, 8211 },
+	{ 151, 8212 },
+	{ 152, 152 },
+	{ 153, 8482 },
+	{ 154, 154 },
+	{ 155, 8250 },
+	{ 156, 156 },
+	{ 157, 157 },
+	{ 158, 158 },
+	{ 159, 159 },
+	{ 160, 160 },
+	{ 161, 161 },
+	{ 162, 162 },
+	{ 163, 163 },
+	{ 164, 164 },
+	{ 165, 165 },
+	{ 166, 166 },
+	{ 167, 167 },
+	{ 168, 168 },
+	{ 169, 169 },
+	{ 170, 215 },
+	{ 171, 171 },
+	{ 172, 172 },
+	{ 173, 173 },
+	{ 174, 174 },
+	{ 175, 781 },
+	{ 176, 176 },
+	{ 177, 177 },
+	{ 178, 178 },
+	{ 179, 179 },
+	{ 180, 180 },
+	{ 181, 181 },
+	{ 182, 182 },
+	{ 183, 183 },
+	{ 184, 184 },
+	{ 185, 185 },
+	{ 186, 247 },
+	{ 187, 187 },
+	{ 188, 188 },
+	{ 189, 189 },
+	{ 190, 190 },
+	{ 191, 191 },
+	{ 192, 192 },
+	{ 193, 193 },
+	{ 194, 194 },
+	{ 195, 195 },
+	{ 196, 196 },
+	{ 197, 197 },
+	{ 198, 198 },
+	{ 199, 199 },
+	{ 200, 200 },
+	{ 201, 201 },
+	{ 202, 202 },
+	{ 203, 203 },
+	{ 204, 204 },
+	{ 205, 205 },
+	{ 206, 206 },
+	{ 207, 207 },
+	{ 208, 208 },
+	{ 209, 209 },
+	{ 210, 210 },
+	{ 211, 211 },
+	{ 212, 212 },
+	{ 213, 213 },
+	{ 214, 214 },
+	{ 215, 215 },
+	{ 216, 216 },
+	{ 217, 217 },
+	{ 218, 218 },
+	{ 219, 219 },
+	{ 220, 220 },
+	{ 221, 221 },
+	{ 222, 222 },
+	{ 223, 8215 },
+	{ 224, 1488 },
+	{ 225, 1489 },
+	{ 226, 1490 },
+	{ 227, 1491 },
+	{ 228, 1492 },
+	{ 229, 1493 },
+	{ 230, 1494 },
+	{ 231, 1495 },
+	{ 232, 1496 },
+	{ 233, 1497 },
+	{ 234, 1498 },
+	{ 235, 1499 },
+	{ 236, 1500 },
+	{ 237, 1501 },
+	{ 238, 1502 },
+	{ 239, 1503 },
+	{ 240, 1504 },
+	{ 241, 1505 },
+	{ 242, 1506 },
+	{ 243, 1507 },
+	{ 244, 1508 },
+	{ 245, 1509 },
+	{ 246, 1510 },
+	{ 247, 1511 },
+	{ 248, 1512 },
+	{ 249, 1513 },
+	{ 250, 1514 },
+	{ 251, 251 },
+	{ 252, 252 },
+	{ 253, 253 },
+	{ 254, 254 },
+	{ 255, 255 },
+	{ 32, 8194 },
+	{ 32, 8195 },
+	{ 32, 8201 },
+	{ 65, 256 },
+	{ 65, 258 },
+	{ 65, 260 },
+	{ 65, 461 },
+	{ 97, 224 },
+	{ 97, 225 },
+	{ 97, 226 },
+	{ 97, 227 },
+	{ 97, 228 },
+	{ 97, 229 },
+	{ 97, 257 },
+	{ 97, 259 },
+	{ 97, 261 },
+	{ 97, 462 },
+	{ 67, 262 },
+	{ 67, 264 },
+	{ 67, 266 },
+	{ 67, 268 },
+	{ 99, 231 },
+	{ 99, 263 },
+	{ 99, 265 },
+	{ 99, 267 },
+	{ 99, 269 },
+	{ 68, 270 },
+	{ 100, 271 },
+	{ 69, 274 },
+	{ 69, 276 },
+	{ 69, 278 },
+	{ 69, 280 },
+	{ 69, 282 },
+	{ 101, 232 },
+	{ 101, 233 },
+	{ 101, 234 },
+	{ 101, 235 },
+	{ 101, 275 },
+	{ 101, 277 },
+	{ 101, 279 },
+	{ 101, 281 },
+	{ 101, 283 },
+	{ 71, 284 },
+	{ 71, 286 },
+	{ 71, 288 },
+	{ 71, 290 },
+	{ 71, 486 },
+	{ 71, 500 },
+	{ 103, 285 },
+	{ 103, 287 },
+	{ 103, 289 },
+	{ 103, 291 },
+	{ 103, 487 },
+	{ 103, 501 },
+	{ 72, 292 },
+	{ 104, 293 },
+	{ 73, 296 },
+	{ 73, 298 },
+	{ 73, 300 },
+	{ 73, 302 },
+	{ 73, 304 },
+	{ 73, 463 },
+	{ 105, 236 },
+	{ 105, 237 },
+	{ 105, 238 },
+	{ 105, 239 },
+	{ 105, 297 },
+	{ 105, 299 },
+	{ 105, 301 },
+	{ 105, 303 },
+	{ 105, 305 },
+	{ 105, 464 },
+	{ 74, 308 },
+	{ 106, 309 },
+	{ 75, 310 },
+	{ 75, 488 },
+	{ 107, 311 },
+	{ 107, 489 },
+	{ 76, 313 },
+	{ 76, 315 },
+	{ 76, 317 },
+	{ 76, 319 },
+	{ 76, 321 },
+	{ 108, 314 },
+	{ 108, 316 },
+	{ 108, 318 },
+	{ 108, 320 },
+	{ 108, 322 },
+	{ 77, 323 },
+	{ 77, 325 },
+	{ 77, 327 },
+	{ 109, 241 },
+	{ 109, 324 },
+	{ 109, 326 },
+	{ 109, 328 },
+	{ 109, 329 },
+	{ 78, 332 },
+	{ 78, 334 },
+	{ 78, 336 },
+	{ 78, 465 },
+	{ 78, 490 },
+	{ 110, 242 },
+	{ 110, 243 },
+	{ 110, 244 },
+	{ 110, 245 },
+	{ 110, 246 },
+	{ 110, 248 },
+	{ 110, 333 },
+	{ 110, 335 },
+	{ 110, 337 },
+	{ 110, 466 },
+	{ 110, 491 },
+	{ 82, 340 },
+	{ 82, 342 },
+	{ 82, 344 },
+	{ 114, 341 },
+	{ 114, 343 },
+	{ 114, 345 },
+	{ 83, 346 },
+	{ 83, 348 },
+	{ 83, 350 },
+	{ 83, 352 },
+	{ 115, 347 },
+	{ 115, 349 },
+	{ 115, 351 },
+	{ 115, 353 },
+	{ 84, 354 },
+	{ 84, 356 },
+	{ 116, 355 },
+	{ 116, 357 },
+	{ 85, 360 },
+	{ 85, 362 },
+	{ 85, 364 },
+	{ 85, 366 },
+	{ 85, 368 },
+	{ 85, 370 },
+	{ 85, 467 },
+	{ 117, 249 },
+	{ 117, 250 },
+	{ 117, 361 },
+	{ 117, 363 },
+	{ 117, 365 },
+	{ 117, 367 },
+	{ 117, 369 },
+	{ 117, 371 },
+	{ 117, 468 },
+	{ 87, 372 },
+	{ 119, 373 },
+	{ 89, 374 },
+	{ 89, 376 },
+	{ 121, 375 },
+	{ 90, 377 },
+	{ 90, 379 },
+	{ 90, 381 },
+	{ 122, 378 },
+	{ 122, 380 },
+	{ 122, 382 },
 };
-charconvert cp864[] = {
- /* 0 */ 0,/*<tdbgcolor="C0C0C0"><fontface="Arial"color="000000"><b>ISO/IEC10646-1:2000CharacterName</b></font>*/
- 1,
- 2,
- 3,
- 4,
- 5,
- 6,
- 7,
- 8,
- 9,
- 10,
- 11,
- 12,
- 13,
- 14,
- 15,
- 16,
- 17,
- 18,
- 19,
- 20,
- 21,
- 22,
- 23,
- 24,
- 25,
- 26,
- 27,
- 28,
- 29,
- 30,
- 31,
- /* 32 */ 32,/*SPACE*/
- /* 33 */ 33,/*EXCLAMATIONMARK*/
- /* 34 */ 34,/*QUOTATIONMARK*/
- /* 35 */ 35,/*NUMBERSIGN*/
- /* 36 */ 36,/*DOLLARSIGN*/
- /* 37 */ 37,/*PERCENTSIGN*/
- /* 38 */ 38,/*AMPERSAND*/
- /* 39 */ 39,/*APOSTROPHE*/
- /* 40 */ 40,/*LEFTPARENTHESIS*/
- /* 41 */ 41,/*RIGHTPARENTHESIS*/
- /* 42 */ 42,/*ASTERISK*/
- /* 43 */ 43,/*PLUSSIGN*/
- /* 44 */ 44,/*COMMA*/
- /* 45 */ 45,/*HYPHEN-MINUS*/
- /* 46 */ 46,/*FULLSTOP*/
- /* 47 */ 47,/*SOLIDUS*/
- /* 48 */ 48,/*DIGITZERO*/
- /* 49 */ 49,/*DIGITONE*/
- /* 50 */ 50,/*DIGITTWO*/
- /* 51 */ 51,/*DIGITTHREE*/
- /* 52 */ 52,/*DIGITFOUR*/
- /* 53 */ 53,/*DIGITFIVE*/
- /* 54 */ 54,/*DIGITSIX*/
- /* 55 */ 55,/*DIGITSEVEN*/
- /* 56 */ 56,/*DIGITEIGHT*/
- /* 57 */ 57,/*DIGITNINE*/
- /* 58 */ 58,/*COLON*/
- /* 59 */ 59,/*SEMICOLON*/
- /* 60 */ 60,/*LESS-THANSIGN*/
- /* 61 */ 61,/*EQUALSSIGN*/
- /* 62 */ 62,/*GREATER-THANSIGN*/
- /* 63 */ 63,/*QUESTIONMARK*/
- /* 64 */ 64,/*COMMERCIALAT*/
- /* 65 */ 65,/*LATINCAPITALLETTERA*/
- /* 66 */ 66,/*LATINCAPITALLETTERB*/
- /* 67 */ 67,/*LATINCAPITALLETTERC*/
- /* 68 */ 68,/*LATINCAPITALLETTERD*/
- /* 69 */ 69,/*LATINCAPITALLETTERE*/
- /* 70 */ 70,/*LATINCAPITALLETTERF*/
- /* 71 */ 71,/*LATINCAPITALLETTERG*/
- /* 72 */ 72,/*LATINCAPITALLETTERH*/
- /* 73 */ 73,/*LATINCAPITALLETTERI*/
- /* 74 */ 74,/*LATINCAPITALLETTERJ*/
- /* 75 */ 75,/*LATINCAPITALLETTERK*/
- /* 76 */ 76,/*LATINCAPITALLETTERL*/
- /* 77 */ 77,/*LATINCAPITALLETTERM*/
- /* 78 */ 78,/*LATINCAPITALLETTERN*/
- /* 79 */ 79,/*LATINCAPITALLETTERO*/
- /* 80 */ 80,/*LATINCAPITALLETTERP*/
- /* 81 */ 81,/*LATINCAPITALLETTERQ*/
- /* 82 */ 82,/*LATINCAPITALLETTERR*/
- /* 83 */ 83,/*LATINCAPITALLETTERS*/
- /* 84 */ 84,/*LATINCAPITALLETTERT*/
- /* 85 */ 85,/*LATINCAPITALLETTERU*/
- /* 86 */ 86,/*LATINCAPITALLETTERV*/
- /* 87 */ 87,/*LATINCAPITALLETTERW*/
- /* 88 */ 88,/*LATINCAPITALLETTERX*/
- /* 89 */ 89,/*LATINCAPITALLETTERY*/
- /* 90 */ 90,/*LATINCAPITALLETTERZ*/
- /* 91 */ 91,/*LEFTSQUAREBRACKET*/
- /* 92 */ 92,/*REVERSESOLIDUS*/
- /* 93 */ 93,/*RIGHTSQUAREBRACKET*/
- /* 94 */ 94,/*CIRCUMFLEXACCENT*/
- /* 95 */ 95,/*LOWLINE*/
- /* 96 */ 96,/*GRAVEACCENT*/
- /* 97 */ 97,/*LATINSMALLLETTERA*/
- /* 98 */ 98,/*LATINSMALLLETTERB*/
- /* 99 */ 99,/*LATINSMALLLETTERC*/
- /* 100 */ 100,/*LATINSMALLLETTERD*/
- /* 101 */ 101,/*LATINSMALLLETTERE*/
- /* 102 */ 102,/*LATINSMALLLETTERF*/
- /* 103 */ 103,/*LATINSMALLLETTERG*/
- /* 104 */ 104,/*LATINSMALLLETTERH*/
- /* 105 */ 105,/*LATINSMALLLETTERI*/
- /* 106 */ 106,/*LATINSMALLLETTERJ*/
- /* 107 */ 107,/*LATINSMALLLETTERK*/
- /* 108 */ 108,/*LATINSMALLLETTERL*/
- /* 109 */ 109,/*LATINSMALLLETTERM*/
- /* 110 */ 110,/*LATINSMALLLETTERN*/
- /* 111 */ 111,/*LATINSMALLLETTERO*/
- /* 112 */ 112,/*LATINSMALLLETTERP*/
- /* 113 */ 113,/*LATINSMALLLETTERQ*/
- /* 114 */ 114,/*LATINSMALLLETTERR*/
- /* 115 */ 115,/*LATINSMALLLETTERS*/
- /* 116 */ 116,/*LATINSMALLLETTERT*/
- /* 117 */ 117,/*LATINSMALLLETTERU*/
- /* 118 */ 118,/*LATINSMALLLETTERV*/
- /* 119 */ 119,/*LATINSMALLLETTERW*/
- /* 120 */ 120,/*LATINSMALLLETTERX*/
- /* 121 */ 121,/*LATINSMALLLETTERY*/
- /* 122 */ 122,/*LATINSMALLLETTERZ*/
- /* 123 */ 123,/*LEFTCURLYBRACKET*/
- /* 124 */ 124,/*VERTICALLINE*/
- /* 125 */ 125,/*RIGHTCURLYBRACKET*/
- /* 126 */ 126,/*TILDE*/
- 127,
- /* 128 */ 176,/*DEGREESIGN*/
- /* 129 */ 183,/*MIDDLEDOT*/
- /* 130 */ 8729,/*BULLETOPERATOR*/
- /* 131 */ 8730,/*SQUAREROOT*/
- /* 132 */ 9618,/*MEDIUMSHADE*/
- /* 133 */ 9472,/*BOXDRAWINGSLIGHTHORIZONTAL*/
- /* 134 */ 9474,/*BOXDRAWINGSLIGHTVERTICAL*/
- /* 135 */ 9532,/*BOXDRAWINGSLIGHTVERTICALANDHORIZONTAL*/
- /* 136 */ 9508,/*BOXDRAWINGSLIGHTVERTICALANDLEFT*/
- /* 137 */ 9516,/*BOXDRAWINGSLIGHTDOWNANDHORIZONTAL*/
- /* 138 */ 9500,/*BOXDRAWINGSLIGHTVERTICALANDRIGHT*/
- /* 139 */ 9524,/*BOXDRAWINGSLIGHTUPANDHORIZONTAL*/
- /* 140 */ 9488,/*BOXDRAWINGSLIGHTDOWNANDLEFT*/
- /* 141 */ 9484,/*BOXDRAWINGSLIGHTDOWNANDRIGHT*/
- /* 142 */ 9492,/*BOXDRAWINGSLIGHTUPANDRIGHT*/
- /* 143 */ 9496,/*BOXDRAWINGSLIGHTUPANDLEFT*/
- /* 144 */ 946,/*GREEKSMALLLETTERBETA*/
- /* 145 */ 8734,/*INFINITY*/
- /* 146 */ 966,/*GREEKSMALLLETTERPHI*/
- /* 147 */ 177,/*PLUS-MINUSSIGN*/
- /* 148 */ 189,/*VULGARFRACTIONONEHALF*/
- /* 149 */ 188,/*VULGARFRACTIONONEQUARTER*/
- /* 150 */ 8776,/*ALMOSTEQUALTO*/
- /* 151 */ 171,/*LEFT-POINTINGDOUBLEANGLEQUOTATIONMARK*/
- /* 152 */ 187,/*RIGHT-POINTINGDOUBLEANGLEQUOTATIONMARK*/
- /* 153 */ 65271,/*ARABICLIGATURELAMWITHALEFWITHHAMZAABOVEISOLATEDFORM*/
- /* 154 */ 65272,/*ARABICLIGATURELAMWITHALEFWITHHAMZAABOVEFINALFORM*/
- 155,
- 156,
- /* 157 */ 65275,/*ARABICLIGATURELAMWITHALEFISOLATEDFORM*/
- /* 158 */ 65276,/*ARABICLIGATURELAMWITHALEFFINALFORM*/
- 159,
- /* 160 */ 160,/*NO-BREAKSPACE*/
- /* 161 */ 173,/*SOFTHYPHEN*/
- /* 162 */ 65154,/*ARABICLETTERALEFWITHMADDAABOVEFINALFORM*/
- /* 163 */ 163,/*POUNDSIGN*/
- /* 164 */ 164,/*CURRENCYSIGN*/
- /* 165 */ 65156,/*ARABICLETTERALEFWITHHAMZAABOVEFINALFORM*/
- 166,
- 167,
- /* 168 */ 65166,/*ARABICLETTERALEFFINALFORM*/
- /* 169 */ 1576,/*ARABICLETTERBEH*/
- /* 170 */ 1578,/*ARABICLETTERTEH*/
- /* 171 */ 1579,/*ARABICLETTERTHEH*/
- /* 172 */ 1548,/*ARABICCOMMA*/
- /* 173 */ 1580,/*ARABICLETTERJEEM*/
- /* 174 */ 1581,/*ARABICLETTERHAH*/
- /* 175 */ 1582,/*ARABICLETTERKHAH*/
- /* 176 */ 1632,/*ARABIC-INDICDIGITZERO*/
- /* 177 */ 1633,/*ARABIC-INDICDIGITONE*/
- /* 178 */ 1634,/*ARABIC-INDICDIGITTWO*/
- /* 179 */ 1635,/*ARABIC-INDICDIGITTHREE*/
- /* 180 */ 1636,/*ARABIC-INDICDIGITFOUR*/
- /* 181 */ 1637,/*ARABIC-INDICDIGITFIVE*/
- /* 182 */ 1638,/*ARABIC-INDICDIGITSIX*/
- /* 183 */ 1639,/*ARABIC-INDICDIGITSEVEN*/
- /* 184 */ 1640,/*ARABIC-INDICDIGITEIGHT*/
- /* 185 */ 1641,/*ARABIC-INDICDIGITNINE*/
- /* 186 */ 1601,/*ARABICLETTERFEH*/
- /* 187 */ 1563,/*ARABICSEMICOLON*/
- /* 188 */ 1587,/*ARABICLETTERSEEN*/
- /* 189 */ 1588,/*ARABICLETTERSHEEN*/
- /* 190 */ 1589,/*ARABICLETTERSAD*/
- /* 191 */ 1567,/*ARABICQUESTIONMARK*/
- /* 192 */ 162,/*CENTSIGN*/
- /* 193 */ 1569,/*ARABICLETTERHAMZA*/
- /* 194 */ 1570,/*ARABICLETTERALEFWITHMADDAABOVE*/
- /* 195 */ 1571,/*ARABICLETTERALEFWITHHAMZAABOVE*/
- /* 196 */ 1572,/*ARABICLETTERWAWWITHHAMZAABOVE*/
- /* 197 */ 65226,/*ARABICLETTERAINFINALFORM*/
- /* 198 */ 65163,/*ARABICLETTERYEHWITHHAMZAABOVEINITIALFORM*/
- /* 199 */ 1575,/*ARABICLETTERALEF*/
- /* 200 */ 65169,/*ARABICLETTERBEHINITIALFORM*/
- /* 201 */ 1577,/*ARABICLETTERTEHMARBUTA*/
- /* 202 */ 65175,/*ARABICLETTERTEHINITIALFORM*/
- /* 203 */ 65179,/*ARABICLETTERTHEHINITIALFORM*/
- /* 204 */ 65183,/*ARABICLETTERJEEMINITIALFORM*/
- /* 205 */ 65187,/*ARABICLETTERHAHINITIALFORM*/
- /* 206 */ 65191,/*ARABICLETTERKHAHINITIALFORM*/
- /* 207 */ 1583,/*ARABICLETTERDAL*/
- /* 208 */ 1584,/*ARABICLETTERTHAL*/
- /* 209 */ 1585,/*ARABICLETTERREH*/
- /* 210 */ 1586,/*ARABICLETTERZAIN*/
- /* 211 */ 65203,/*ARABICLETTERSEENINITIALFORM*/
- /* 212 */ 65207,/*ARABICLETTERSHEENINITIALFORM*/
- /* 213 */ 65211,/*ARABICLETTERSADINITIALFORM*/
- /* 214 */ 65215,/*ARABICLETTERDADINITIALFORM*/
- /* 215 */ 1591,/*ARABICLETTERTAH*/
- /* 216 */ 1592,/*ARABICLETTERZAH*/
- /* 217 */ 65227,/*ARABICLETTERAININITIALFORM*/
- /* 218 */ 65231,/*ARABICLETTERGHAININITIALFORM*/
- /* 219 */ 166,/*BROKENBAR*/
- /* 220 */ 172,/*NOTSIGN*/
- /* 221 */ 247,/*DIVISIONSIGN*/
- /* 222 */ 215,/*MULTIPLICATIONSIGN*/
- /* 223 */ 1593,/*ARABICLETTERAIN*/
- /* 224 */ 1600,/*ARABICTATWEEL*/
- /* 225 */ 65235,/*ARABICLETTERFEHINITIALFORM*/
- /* 226 */ 65239,/*ARABICLETTERQAFINITIALFORM*/
- /* 227 */ 65243,/*ARABICLETTERKAFINITIALFORM*/
- /* 228 */ 65247,/*ARABICLETTERLAMINITIALFORM*/
- /* 229 */ 65251,/*ARABICLETTERMEEMINITIALFORM*/
- /* 230 */ 65255,/*ARABICLETTERNOONINITIALFORM*/
- /* 231 */ 65259,/*ARABICLETTERHEHINITIALFORM*/
- /* 232 */ 1608,/*ARABICLETTERWAW*/
- /* 233 */ 1609,/*ARABICLETTERALEFMAKSURA*/
- /* 234 */ 65267,/*ARABICLETTERYEHINITIALFORM*/
- /* 235 */ 1590,/*ARABICLETTERDAD*/
- /* 236 */ 65228,/*ARABICLETTERAINMEDIALFORM*/
- /* 237 */ 65230,/*ARABICLETTERGHAINFINALFORM*/
- /* 238 */ 1594,/*ARABICLETTERGHAIN*/
- /* 239 */ 1605,/*ARABICLETTERMEEM*/
- /* 240 */ 65149,/*ARABICSHADDAMEDIALFORM*/
- /* 241 */ 1617,/*ARABICSHADDA*/
- /* 242 */ 1606,/*ARABICLETTERNOON*/
- /* 243 */ 1607,/*ARABICLETTERHEH*/
- /* 244 */ 65260,/*ARABICLETTERHEHMEDIALFORM*/
- /* 245 */ 65264,/*ARABICLETTERALEFMAKSURAFINALFORM*/
- /* 246 */ 65266,/*ARABICLETTERYEHFINALFORM*/
- /* 247 */ 65232,/*ARABICLETTERGHAINMEDIALFORM*/
- /* 248 */ 1602,/*ARABICLETTERQAF*/
- /* 249 */ 65269,/*ARABICLIGATURELAMWITHALEFWITHMADDAABOVEISOLATEDFORM*/
- /* 250 */ 65270,/*ARABICLIGATURELAMWITHALEFWITHMADDAABOVEFINALFORM*/
- /* 251 */ 1604,/*ARABICLETTERLAM*/
- /* 252 */ 1603,/*ARABICLETTERKAF*/
- /* 253 */ 1610,/*ARABICLETTERYEH*/
- /* 254 */ 9632,/*BLACKSQUARE*/
- 255
+static convert_t cp1256[] = {
+	{ 0, 0 },
+	{ 1, 1 },
+	{ 2, 2 },
+	{ 3, 3 },
+	{ 4, 4 },
+	{ 5, 5 },
+	{ 6, 6 },
+	{ 7, 7 },
+	{ 8, 8 },
+	{ 9, 9 },
+	{ 10, 10 },
+	{ 11, 11 },
+	{ 12, 12 },
+	{ 13, 13 },
+	{ 14, 14 },
+	{ 15, 15 },
+	{ 16, 16 },
+	{ 17, 17 },
+	{ 18, 18 },
+	{ 19, 19 },
+	{ 20, 20 },
+	{ 21, 21 },
+	{ 22, 22 },
+	{ 23, 23 },
+	{ 24, 24 },
+	{ 25, 25 },
+	{ 26, 26 },
+	{ 27, 27 },
+	{ 28, 28 },
+	{ 29, 29 },
+	{ 30, 30 },
+	{ 31, 31 },
+	{ 32, 32 },
+	{ 33, 33 },
+	{ 34, 34 },
+	{ 35, 35 },
+	{ 36, 36 },
+	{ 37, 37 },
+	{ 38, 38 },
+	{ 39, 39 },
+	{ 40, 40 },
+	{ 41, 41 },
+	{ 42, 42 },
+	{ 43, 43 },
+	{ 44, 44 },
+	{ 45, 45 },
+	{ 46, 46 },
+	{ 47, 47 },
+	{ 48, 48 },
+	{ 49, 49 },
+	{ 50, 50 },
+	{ 51, 51 },
+	{ 52, 52 },
+	{ 53, 53 },
+	{ 54, 54 },
+	{ 55, 55 },
+	{ 56, 56 },
+	{ 57, 57 },
+	{ 58, 58 },
+	{ 59, 59 },
+	{ 60, 60 },
+	{ 61, 61 },
+	{ 62, 62 },
+	{ 63, 63 },
+	{ 64, 64 },
+	{ 65, 65 },
+	{ 66, 66 },
+	{ 67, 67 },
+	{ 68, 68 },
+	{ 69, 69 },
+	{ 70, 70 },
+	{ 71, 71 },
+	{ 72, 72 },
+	{ 73, 73 },
+	{ 74, 74 },
+	{ 75, 75 },
+	{ 76, 76 },
+	{ 77, 77 },
+	{ 78, 78 },
+	{ 79, 79 },
+	{ 80, 80 },
+	{ 81, 81 },
+	{ 82, 82 },
+	{ 83, 83 },
+	{ 84, 84 },
+	{ 85, 85 },
+	{ 86, 86 },
+	{ 87, 87 },
+	{ 88, 88 },
+	{ 89, 89 },
+	{ 90, 90 },
+	{ 91, 91 },
+	{ 92, 92 },
+	{ 93, 93 },
+	{ 94, 94 },
+	{ 95, 95 },
+	{ 96, 96 },
+	{ 97, 97 },
+	{ 98, 98 },
+	{ 99, 99 },
+	{ 100, 100 },
+	{ 101, 101 },
+	{ 102, 102 },
+	{ 103, 103 },
+	{ 104, 104 },
+	{ 105, 105 },
+	{ 106, 106 },
+	{ 107, 107 },
+	{ 108, 108 },
+	{ 109, 109 },
+	{ 110, 110 },
+	{ 111, 111 },
+	{ 112, 112 },
+	{ 113, 113 },
+	{ 114, 114 },
+	{ 115, 115 },
+	{ 116, 116 },
+	{ 117, 117 },
+	{ 118, 118 },
+	{ 119, 119 },
+	{ 120, 120 },
+	{ 121, 121 },
+	{ 122, 122 },
+	{ 123, 123 },
+	{ 124, 124 },
+	{ 125, 125 },
+	{ 126, 126 },
+	{ 127, 127 },
+	{ 128, 1548 },
+	{ 129, 129 },
+	{ 130, 8218 },
+	{ 131, 131 },
+	{ 132, 8222 },
+	{ 133, 8230 },
+	{ 134, 8224 },
+	{ 135, 8225 },
+	{ 136, 136 },
+	{ 137, 8240 },
+	{ 138, 138 },
+	{ 139, 8249 },
+	{ 140, 140 },
+	{ 141, 141 },
+	{ 142, 142 },
+	{ 143, 143 },
+	{ 144, 144 },
+	{ 145, 8216 },
+	{ 146, 8217 },
+	{ 147, 8220 },
+	{ 148, 8221 },
+	{ 149, 8226 },
+	{ 150, 8211 },
+	{ 151, 8212 },
+	{ 152, 1563 },
+	{ 153, 8482 },
+	{ 154, 1567 },
+	{ 155, 8250 },
+	{ 156, 1569 },
+	{ 157, 1570 },
+	{ 158, 1571 },
+	{ 159, 376 },
+	{ 160, 160 },
+	{ 161, 1572 },
+	{ 162, 1573 },
+	{ 163, 163 },
+	{ 164, 164 },
+	{ 165, 1574 },
+	{ 166, 166 },
+	{ 167, 167 },
+	{ 168, 1575 },
+	{ 169, 169 },
+	{ 170, 1576 },
+	{ 171, 171 },
+	{ 172, 172 },
+	{ 173, 173 },
+	{ 174, 174 },
+	{ 175, 175 },
+	{ 176, 176 },
+	{ 177, 177 },
+	{ 178, 1577 },
+	{ 179, 1578 },
+	{ 180, 1579 },
+	{ 181, 181 },
+	{ 182, 182 },
+	{ 183, 183 },
+	{ 184, 1580 },
+	{ 185, 185 },
+	{ 186, 1581 },
+	{ 187, 187 },
+	{ 188, 1582 },
+	{ 189, 1583 },
+	{ 190, 1584 },
+	{ 191, 1585 },
+	{ 192, 192 },
+	{ 193, 1586 },
+	{ 194, 194 },
+	{ 195, 195 },
+	{ 196, 1587 },
+	{ 197, 1588 },
+	{ 198, 1589 },
+	{ 199, 199 },
+	{ 200, 200 },
+	{ 201, 201 },
+	{ 202, 202 },
+	{ 203, 203 },
+	{ 204, 1590 },
+	{ 205, 1591 },
+	{ 206, 206 },
+	{ 207, 207 },
+	{ 208, 1592 },
+	{ 209, 1593 },
+	{ 210, 1594 },
+	{ 211, 1600 },
+	{ 212, 212 },
+	{ 213, 1601 },
+	{ 214, 1602 },
+	{ 215, 215 },
+	{ 216, 1603 },
+	{ 217, 217 },
+	{ 218, 1711 },
+	{ 219, 219 },
+	{ 220, 220 },
+	{ 221, 1604 },
+	{ 222, 1605 },
+	{ 223, 1606 },
+	{ 224, 224 },
+	{ 225, 1607 },
+	{ 226, 226 },
+	{ 227, 227 },
+	{ 228, 1608 },
+	{ 229, 1609 },
+	{ 230, 1610 },
+	{ 231, 231 },
+	{ 232, 232 },
+	{ 233, 233 },
+	{ 234, 234 },
+	{ 235, 235 },
+	{ 236, 1611 },
+	{ 237, 1612 },
+	{ 238, 238 },
+	{ 239, 239 },
+	{ 240, 1613 },
+	{ 241, 1614 },
+	{ 242, 1615 },
+	{ 243, 1616 },
+	{ 244, 244 },
+	{ 245, 1617 },
+	{ 246, 1618 },
+	{ 247, 247 },
+	{ 248, 248 },
+	{ 249, 249 },
+	{ 250, 250 },
+	{ 251, 251 },
+	{ 252, 252 },
+	{ 253, 253 },
+	{ 254, 254 },
+	{ 255, 255 },
+	{ 32, 8194 },
+	{ 32, 8195 },
+	{ 32, 8201 },
+	{ 65, 193 },
+	{ 65, 196 },
+	{ 65, 197 },
+	{ 65, 256 },
+	{ 65, 258 },
+	{ 65, 260 },
+	{ 65, 461 },
+	{ 97, 225 },
+	{ 97, 228 },
+	{ 97, 229 },
+	{ 97, 257 },
+	{ 97, 259 },
+	{ 97, 261 },
+	{ 97, 462 },
+	{ 67, 262 },
+	{ 67, 264 },
+	{ 67, 266 },
+	{ 67, 268 },
+	{ 99, 263 },
+	{ 99, 265 },
+	{ 99, 267 },
+	{ 99, 269 },
+	{ 68, 270 },
+	{ 100, 271 },
+	{ 69, 274 },
+	{ 69, 276 },
+	{ 69, 278 },
+	{ 69, 280 },
+	{ 69, 282 },
+	{ 101, 275 },
+	{ 101, 277 },
+	{ 101, 279 },
+	{ 101, 281 },
+	{ 101, 283 },
+	{ 71, 284 },
+	{ 71, 286 },
+	{ 71, 288 },
+	{ 71, 290 },
+	{ 71, 486 },
+	{ 71, 500 },
+	{ 103, 285 },
+	{ 103, 287 },
+	{ 103, 289 },
+	{ 103, 291 },
+	{ 103, 487 },
+	{ 103, 501 },
+	{ 72, 292 },
+	{ 104, 293 },
+	{ 73, 204 },
+	{ 73, 205 },
+	{ 73, 296 },
+	{ 73, 298 },
+	{ 73, 300 },
+	{ 73, 302 },
+	{ 73, 304 },
+	{ 73, 463 },
+	{ 105, 236 },
+	{ 105, 237 },
+	{ 105, 297 },
+	{ 105, 299 },
+	{ 105, 301 },
+	{ 105, 303 },
+	{ 105, 305 },
+	{ 105, 464 },
+	{ 74, 308 },
+	{ 106, 309 },
+	{ 75, 310 },
+	{ 75, 488 },
+	{ 107, 311 },
+	{ 107, 489 },
+	{ 76, 313 },
+	{ 76, 315 },
+	{ 76, 317 },
+	{ 76, 319 },
+	{ 76, 321 },
+	{ 108, 314 },
+	{ 108, 316 },
+	{ 108, 318 },
+	{ 108, 320 },
+	{ 108, 322 },
+	{ 77, 209 },
+	{ 77, 323 },
+	{ 77, 325 },
+	{ 77, 327 },
+	{ 109, 241 },
+	{ 109, 324 },
+	{ 109, 326 },
+	{ 109, 328 },
+	{ 109, 329 },
+	{ 78, 210 },
+	{ 78, 211 },
+	{ 78, 213 },
+	{ 78, 214 },
+	{ 78, 216 },
+	{ 78, 332 },
+	{ 78, 334 },
+	{ 78, 336 },
+	{ 78, 465 },
+	{ 78, 490 },
+	{ 110, 242 },
+	{ 110, 243 },
+	{ 110, 245 },
+	{ 110, 246 },
+	{ 110, 333 },
+	{ 110, 335 },
+	{ 110, 337 },
+	{ 110, 466 },
+	{ 110, 491 },
+	{ 82, 340 },
+	{ 82, 342 },
+	{ 82, 344 },
+	{ 114, 341 },
+	{ 114, 343 },
+	{ 114, 345 },
+	{ 83, 346 },
+	{ 83, 348 },
+	{ 83, 350 },
+	{ 83, 352 },
+	{ 115, 347 },
+	{ 115, 349 },
+	{ 115, 351 },
+	{ 115, 353 },
+	{ 84, 354 },
+	{ 84, 356 },
+	{ 116, 355 },
+	{ 116, 357 },
+	{ 85, 218 },
+	{ 85, 360 },
+	{ 85, 362 },
+	{ 85, 364 },
+	{ 85, 366 },
+	{ 85, 368 },
+	{ 85, 370 },
+	{ 85, 467 },
+	{ 117, 361 },
+	{ 117, 363 },
+	{ 117, 365 },
+	{ 117, 367 },
+	{ 117, 369 },
+	{ 117, 371 },
+	{ 117, 468 },
+	{ 87, 372 },
+	{ 119, 373 },
+	{ 89, 221 },
+	{ 89, 374 },
+	{ 121, 375 },
+	{ 90, 377 },
+	{ 90, 379 },
+	{ 90, 381 },
+	{ 122, 378 },
+	{ 122, 380 },
+	{ 122, 382 },
 };
-charconvert cp865[] = {
- /* 0 */ 0,/*<tdbgcolor="C0C0C0"><fontface="Arial"color="000000"><b>ISO/IEC10646-1:2000CharacterName</b></font>*/
- 1,
- 2,
- 3,
- 4,
- 5,
- 6,
- 7,
- 8,
- 9,
- 10,
- 11,
- 12,
- 13,
- 14,
- 15,
- 16,
- 17,
- 18,
- 19,
- 20,
- 21,
- 22,
- 23,
- 24,
- 25,
- 26,
- 27,
- 28,
- 29,
- 30,
- 31,
- /* 32 */ 32,/*SPACE*/
- /* 33 */ 33,/*EXCLAMATIONMARK*/
- /* 34 */ 34,/*QUOTATIONMARK*/
- /* 35 */ 35,/*NUMBERSIGN*/
- /* 36 */ 36,/*DOLLARSIGN*/
- /* 37 */ 37,/*PERCENTSIGN*/
- /* 38 */ 38,/*AMPERSAND*/
- /* 39 */ 39,/*APOSTROPHE*/
- /* 40 */ 40,/*LEFTPARENTHESIS*/
- /* 41 */ 41,/*RIGHTPARENTHESIS*/
- /* 42 */ 42,/*ASTERISK*/
- /* 43 */ 43,/*PLUSSIGN*/
- /* 44 */ 44,/*COMMA*/
- /* 45 */ 45,/*HYPHEN-MINUS*/
- /* 46 */ 46,/*FULLSTOP*/
- /* 47 */ 47,/*SOLIDUS*/
- /* 48 */ 48,/*DIGITZERO*/
- /* 49 */ 49,/*DIGITONE*/
- /* 50 */ 50,/*DIGITTWO*/
- /* 51 */ 51,/*DIGITTHREE*/
- /* 52 */ 52,/*DIGITFOUR*/
- /* 53 */ 53,/*DIGITFIVE*/
- /* 54 */ 54,/*DIGITSIX*/
- /* 55 */ 55,/*DIGITSEVEN*/
- /* 56 */ 56,/*DIGITEIGHT*/
- /* 57 */ 57,/*DIGITNINE*/
- /* 58 */ 58,/*COLON*/
- /* 59 */ 59,/*SEMICOLON*/
- /* 60 */ 60,/*LESS-THANSIGN*/
- /* 61 */ 61,/*EQUALSSIGN*/
- /* 62 */ 62,/*GREATER-THANSIGN*/
- /* 63 */ 63,/*QUESTIONMARK*/
- /* 64 */ 64,/*COMMERCIALAT*/
- /* 65 */ 65,/*LATINCAPITALLETTERA*/
- /* 66 */ 66,/*LATINCAPITALLETTERB*/
- /* 67 */ 67,/*LATINCAPITALLETTERC*/
- /* 68 */ 68,/*LATINCAPITALLETTERD*/
- /* 69 */ 69,/*LATINCAPITALLETTERE*/
- /* 70 */ 70,/*LATINCAPITALLETTERF*/
- /* 71 */ 71,/*LATINCAPITALLETTERG*/
- /* 72 */ 72,/*LATINCAPITALLETTERH*/
- /* 73 */ 73,/*LATINCAPITALLETTERI*/
- /* 74 */ 74,/*LATINCAPITALLETTERJ*/
- /* 75 */ 75,/*LATINCAPITALLETTERK*/
- /* 76 */ 76,/*LATINCAPITALLETTERL*/
- /* 77 */ 77,/*LATINCAPITALLETTERM*/
- /* 78 */ 78,/*LATINCAPITALLETTERN*/
- /* 79 */ 79,/*LATINCAPITALLETTERO*/
- /* 80 */ 80,/*LATINCAPITALLETTERP*/
- /* 81 */ 81,/*LATINCAPITALLETTERQ*/
- /* 82 */ 82,/*LATINCAPITALLETTERR*/
- /* 83 */ 83,/*LATINCAPITALLETTERS*/
- /* 84 */ 84,/*LATINCAPITALLETTERT*/
- /* 85 */ 85,/*LATINCAPITALLETTERU*/
- /* 86 */ 86,/*LATINCAPITALLETTERV*/
- /* 87 */ 87,/*LATINCAPITALLETTERW*/
- /* 88 */ 88,/*LATINCAPITALLETTERX*/
- /* 89 */ 89,/*LATINCAPITALLETTERY*/
- /* 90 */ 90,/*LATINCAPITALLETTERZ*/
- /* 91 */ 91,/*LEFTSQUAREBRACKET*/
- /* 92 */ 92,/*REVERSESOLIDUS*/
- /* 93 */ 93,/*RIGHTSQUAREBRACKET*/
- /* 94 */ 94,/*CIRCUMFLEXACCENT*/
- /* 95 */ 95,/*LOWLINE*/
- /* 96 */ 96,/*GRAVEACCENT*/
- /* 97 */ 97,/*LATINSMALLLETTERA*/
- /* 98 */ 98,/*LATINSMALLLETTERB*/
- /* 99 */ 99,/*LATINSMALLLETTERC*/
- /* 100 */ 100,/*LATINSMALLLETTERD*/
- /* 101 */ 101,/*LATINSMALLLETTERE*/
- /* 102 */ 102,/*LATINSMALLLETTERF*/
- /* 103 */ 103,/*LATINSMALLLETTERG*/
- /* 104 */ 104,/*LATINSMALLLETTERH*/
- /* 105 */ 105,/*LATINSMALLLETTERI*/
- /* 106 */ 106,/*LATINSMALLLETTERJ*/
- /* 107 */ 107,/*LATINSMALLLETTERK*/
- /* 108 */ 108,/*LATINSMALLLETTERL*/
- /* 109 */ 109,/*LATINSMALLLETTERM*/
- /* 110 */ 110,/*LATINSMALLLETTERN*/
- /* 111 */ 111,/*LATINSMALLLETTERO*/
- /* 112 */ 112,/*LATINSMALLLETTERP*/
- /* 113 */ 113,/*LATINSMALLLETTERQ*/
- /* 114 */ 114,/*LATINSMALLLETTERR*/
- /* 115 */ 115,/*LATINSMALLLETTERS*/
- /* 116 */ 116,/*LATINSMALLLETTERT*/
- /* 117 */ 117,/*LATINSMALLLETTERU*/
- /* 118 */ 118,/*LATINSMALLLETTERV*/
- /* 119 */ 119,/*LATINSMALLLETTERW*/
- /* 120 */ 120,/*LATINSMALLLETTERX*/
- /* 121 */ 121,/*LATINSMALLLETTERY*/
- /* 122 */ 122,/*LATINSMALLLETTERZ*/
- /* 123 */ 123,/*LEFTCURLYBRACKET*/
- /* 124 */ 124,/*VERTICALLINE*/
- /* 125 */ 125,/*RIGHTCURLYBRACKET*/
- /* 126 */ 126,/*TILDE*/
- 127,
- /* 128 */ 199,/*LATINCAPITALLETTERCWITHCEDILLA*/
- /* 129 */ 252,/*LATINSMALLLETTERUWITHDIAERESIS*/
- /* 130 */ 233,/*LATINSMALLLETTEREWITHACUTE*/
- /* 131 */ 226,/*LATINSMALLLETTERAWITHCIRCUMFLEX*/
- /* 132 */ 228,/*LATINSMALLLETTERAWITHDIAERESIS*/
- /* 133 */ 224,/*LATINSMALLLETTERAWITHGRAVE*/
- /* 134 */ 229,/*LATINSMALLLETTERAWITHRINGABOVE*/
- /* 135 */ 231,/*LATINSMALLLETTERCWITHCEDILLA*/
- /* 136 */ 234,/*LATINSMALLLETTEREWITHCIRCUMFLEX*/
- /* 137 */ 235,/*LATINSMALLLETTEREWITHDIAERESIS*/
- /* 138 */ 232,/*LATINSMALLLETTEREWITHGRAVE*/
- /* 139 */ 239,/*LATINSMALLLETTERIWITHDIAERESIS*/
- /* 140 */ 238,/*LATINSMALLLETTERIWITHCIRCUMFLEX*/
- /* 141 */ 236,/*LATINSMALLLETTERIWITHGRAVE*/
- /* 142 */ 196,/*LATINCAPITALLETTERAWITHDIAERESIS*/
- /* 143 */ 197,/*LATINCAPITALLETTERAWITHRINGABOVE*/
- /* 144 */ 201,/*LATINCAPITALLETTEREWITHACUTE*/
- /* 145 */ 230,/*LATINSMALLLETTERAE*/
- /* 146 */ 198,/*LATINCAPITALLETTERAE*/
- /* 147 */ 244,/*LATINSMALLLETTEROWITHCIRCUMFLEX*/
- /* 148 */ 246,/*LATINSMALLLETTEROWITHDIAERESIS*/
- /* 149 */ 242,/*LATINSMALLLETTEROWITHGRAVE*/
- /* 150 */ 251,/*LATINSMALLLETTERUWITHCIRCUMFLEX*/
- /* 151 */ 249,/*LATINSMALLLETTERUWITHGRAVE*/
- /* 152 */ 255,/*LATINSMALLLETTERYWITHDIAERESIS*/
- /* 153 */ 214,/*LATINCAPITALLETTEROWITHDIAERESIS*/
- /* 154 */ 220,/*LATINCAPITALLETTERUWITHDIAERESIS*/
- /* 155 */ 248,/*LATINSMALLLETTEROWITHSTROKE*/
- /* 156 */ 163,/*POUNDSIGN*/
- /* 157 */ 216,/*LATINCAPITALLETTEROWITHSTROKE*/
- /* 158 */ 8359,/*PESETASIGN*/
- /* 159 */ 402,/*LATINSMALLLETTERFWITHHOOK*/
- /* 160 */ 225,/*LATINSMALLLETTERAWITHACUTE*/
- /* 161 */ 237,/*LATINSMALLLETTERIWITHACUTE*/
- /* 162 */ 243,/*LATINSMALLLETTEROWITHACUTE*/
- /* 163 */ 250,/*LATINSMALLLETTERUWITHACUTE*/
- /* 164 */ 241,/*LATINSMALLLETTERNWITHTILDE*/
- /* 165 */ 209,/*LATINCAPITALLETTERNWITHTILDE*/
- /* 166 */ 170,/*FEMININEORDINALINDICATOR*/
- /* 167 */ 186,/*MASCULINEORDINALINDICATOR*/
- /* 168 */ 191,/*INVERTEDQUESTIONMARK*/
- /* 169 */ 8976,/*REVERSEDNOTSIGN*/
- /* 170 */ 172,/*NOTSIGN*/
- /* 171 */ 189,/*VULGARFRACTIONONEHALF*/
- /* 172 */ 188,/*VULGARFRACTIONONEQUARTER*/
- /* 173 */ 161,/*INVERTEDEXCLAMATIONMARK*/
- /* 174 */ 171,/*LEFT-POINTINGDOUBLEANGLEQUOTATIONMARK*/
- /* 175 */ 164,/*CURRENCYSIGN*/
- /* 176 */ 9617,/*LIGHTSHADE*/
- /* 177 */ 9618,/*MEDIUMSHADE*/
- /* 178 */ 9619,/*DARKSHADE*/
- /* 179 */ 9474,/*BOXDRAWINGSLIGHTVERTICAL*/
- /* 180 */ 9508,/*BOXDRAWINGSLIGHTVERTICALANDLEFT*/
- /* 181 */ 9569,/*BOXDRAWINGSVERTICALSINGLEANDLEFTDOUBLE*/
- /* 182 */ 9570,/*BOXDRAWINGSVERTICALDOUBLEANDLEFTSINGLE*/
- /* 183 */ 9558,/*BOXDRAWINGSDOWNDOUBLEANDLEFTSINGLE*/
- /* 184 */ 9557,/*BOXDRAWINGSDOWNSINGLEANDLEFTDOUBLE*/
- /* 185 */ 9571,/*BOXDRAWINGSDOUBLEVERTICALANDLEFT*/
- /* 186 */ 9553,/*BOXDRAWINGSDOUBLEVERTICAL*/
- /* 187 */ 9559,/*BOXDRAWINGSDOUBLEDOWNANDLEFT*/
- /* 188 */ 9565,/*BOXDRAWINGSDOUBLEUPANDLEFT*/
- /* 189 */ 9564,/*BOXDRAWINGSUPDOUBLEANDLEFTSINGLE*/
- /* 190 */ 9563,/*BOXDRAWINGSUPSINGLEANDLEFTDOUBLE*/
- /* 191 */ 9488,/*BOXDRAWINGSLIGHTDOWNANDLEFT*/
- /* 192 */ 9492,/*BOXDRAWINGSLIGHTUPANDRIGHT*/
- /* 193 */ 9524,/*BOXDRAWINGSLIGHTUPANDHORIZONTAL*/
- /* 194 */ 9516,/*BOXDRAWINGSLIGHTDOWNANDHORIZONTAL*/
- /* 195 */ 9500,/*BOXDRAWINGSLIGHTVERTICALANDRIGHT*/
- /* 196 */ 9472,/*BOXDRAWINGSLIGHTHORIZONTAL*/
- /* 197 */ 9532,/*BOXDRAWINGSLIGHTVERTICALANDHORIZONTAL*/
- /* 198 */ 9566,/*BOXDRAWINGSVERTICALSINGLEANDRIGHTDOUBLE*/
- /* 199 */ 9567,/*BOXDRAWINGSVERTICALDOUBLEANDRIGHTSINGLE*/
- /* 200 */ 9562,/*BOXDRAWINGSDOUBLEUPANDRIGHT*/
- /* 201 */ 9556,/*BOXDRAWINGSDOUBLEDOWNANDRIGHT*/
- /* 202 */ 9577,/*BOXDRAWINGSDOUBLEUPANDHORIZONTAL*/
- /* 203 */ 9574,/*BOXDRAWINGSDOUBLEDOWNANDHORIZONTAL*/
- /* 204 */ 9568,/*BOXDRAWINGSDOUBLEVERTICALANDRIGHT*/
- /* 205 */ 9552,/*BOXDRAWINGSDOUBLEHORIZONTAL*/
- /* 206 */ 9580,/*BOXDRAWINGSDOUBLEVERTICALANDHORIZONTAL*/
- /* 207 */ 9575,/*BOXDRAWINGSUPSINGLEANDHORIZONTALDOUBLE*/
- /* 208 */ 9576,/*BOXDRAWINGSUPDOUBLEANDHORIZONTALSINGLE*/
- /* 209 */ 9572,/*BOXDRAWINGSDOWNSINGLEANDHORIZONTALDOUBLE*/
- /* 210 */ 9573,/*BOXDRAWINGSDOWNDOUBLEANDHORIZONTALSINGLE*/
- /* 211 */ 9561,/*BOXDRAWINGSUPDOUBLEANDRIGHTSINGLE*/
- /* 212 */ 9560,/*BOXDRAWINGSUPSINGLEANDRIGHTDOUBLE*/
- /* 213 */ 9554,/*BOXDRAWINGSDOWNSINGLEANDRIGHTDOUBLE*/
- /* 214 */ 9555,/*BOXDRAWINGSDOWNDOUBLEANDRIGHTSINGLE*/
- /* 215 */ 9579,/*BOXDRAWINGSVERTICALDOUBLEANDHORIZONTALSINGLE*/
- /* 216 */ 9578,/*BOXDRAWINGSVERTICALSINGLEANDHORIZONTALDOUBLE*/
- /* 217 */ 9496,/*BOXDRAWINGSLIGHTUPANDLEFT*/
- /* 218 */ 9484,/*BOXDRAWINGSLIGHTDOWNANDRIGHT*/
- /* 219 */ 9608,/*FULLBLOCK*/
- /* 220 */ 9604,/*LOWERHALFBLOCK*/
- /* 221 */ 9612,/*LEFTHALFBLOCK*/
- /* 222 */ 9616,/*RIGHTHALFBLOCK*/
- /* 223 */ 9600,/*UPPERHALFBLOCK*/
- /* 224 */ 945,/*GREEKSMALLLETTERALPHA*/
- /* 225 */ 223,/*LATINSMALLLETTERSHARPS*/
- /* 226 */ 915,/*GREEKCAPITALLETTERGAMMA*/
- /* 227 */ 960,/*GREEKSMALLLETTERPI*/
- /* 228 */ 931,/*GREEKCAPITALLETTERSIGMA*/
- /* 229 */ 963,/*GREEKSMALLLETTERSIGMA*/
- /* 230 */ 181,/*MICROSIGN*/
- /* 231 */ 964,/*GREEKSMALLLETTERTAU*/
- /* 232 */ 934,/*GREEKCAPITALLETTERPHI*/
- /* 233 */ 920,/*GREEKCAPITALLETTERTHETA*/
- /* 234 */ 937,/*GREEKCAPITALLETTEROMEGA*/
- /* 235 */ 948,/*GREEKSMALLLETTERDELTA*/
- /* 236 */ 8734,/*INFINITY*/
- /* 237 */ 966,/*GREEKSMALLLETTERPHI*/
- /* 238 */ 949,/*GREEKSMALLLETTEREPSILON*/
- /* 239 */ 8745,/*INTERSECTION*/
- /* 240 */ 8801,/*IDENTICALTO*/
- /* 241 */ 177,/*PLUS-MINUSSIGN*/
- /* 242 */ 8805,/*GREATER-THANOREQUALTO*/
- /* 243 */ 8804,/*LESS-THANOREQUALTO*/
- /* 244 */ 8992,/*TOPHALFINTEGRAL*/
- /* 245 */ 8993,/*BOTTOMHALFINTEGRAL*/
- /* 246 */ 247,/*DIVISIONSIGN*/
- /* 247 */ 8776,/*ALMOSTEQUALTO*/
- /* 248 */ 176,/*DEGREESIGN*/
- /* 249 */ 8729,/*BULLETOPERATOR*/
- /* 250 */ 183,/*MIDDLEDOT*/
- /* 251 */ 8730,/*SQUAREROOT*/
- /* 252 */ 8319,/*SUPERSCRIPTLATINSMALLLETTERN*/
- /* 253 */ 178,/*SUPERSCRIPTTWO*/
- /* 254 */ 9632,/*BLACKSQUARE*/
- /* 255 */ 160/*NO-BREAKSPACE*/
+static convert_t cp1257[] = {
+	{ 0, 0 },
+	{ 1, 1 },
+	{ 2, 2 },
+	{ 3, 3 },
+	{ 4, 4 },
+	{ 5, 5 },
+	{ 6, 6 },
+	{ 7, 7 },
+	{ 8, 8 },
+	{ 9, 9 },
+	{ 10, 10 },
+	{ 11, 11 },
+	{ 12, 12 },
+	{ 13, 13 },
+	{ 14, 14 },
+	{ 15, 15 },
+	{ 16, 16 },
+	{ 17, 17 },
+	{ 18, 18 },
+	{ 19, 19 },
+	{ 20, 20 },
+	{ 21, 21 },
+	{ 22, 22 },
+	{ 23, 23 },
+	{ 24, 24 },
+	{ 25, 25 },
+	{ 26, 26 },
+	{ 27, 27 },
+	{ 28, 28 },
+	{ 29, 29 },
+	{ 30, 30 },
+	{ 31, 31 },
+	{ 32, 32 },
+	{ 33, 33 },
+	{ 34, 34 },
+	{ 35, 35 },
+	{ 36, 36 },
+	{ 37, 37 },
+	{ 38, 38 },
+	{ 39, 39 },
+	{ 40, 40 },
+	{ 41, 41 },
+	{ 42, 42 },
+	{ 43, 43 },
+	{ 44, 44 },
+	{ 45, 45 },
+	{ 46, 46 },
+	{ 47, 47 },
+	{ 48, 48 },
+	{ 49, 49 },
+	{ 50, 50 },
+	{ 51, 51 },
+	{ 52, 52 },
+	{ 53, 53 },
+	{ 54, 54 },
+	{ 55, 55 },
+	{ 56, 56 },
+	{ 57, 57 },
+	{ 58, 58 },
+	{ 59, 59 },
+	{ 60, 60 },
+	{ 61, 61 },
+	{ 62, 62 },
+	{ 63, 63 },
+	{ 64, 64 },
+	{ 65, 65 },
+	{ 66, 66 },
+	{ 67, 67 },
+	{ 68, 68 },
+	{ 69, 69 },
+	{ 70, 70 },
+	{ 71, 71 },
+	{ 72, 72 },
+	{ 73, 73 },
+	{ 74, 74 },
+	{ 75, 75 },
+	{ 76, 76 },
+	{ 77, 77 },
+	{ 78, 78 },
+	{ 79, 79 },
+	{ 80, 80 },
+	{ 81, 81 },
+	{ 82, 82 },
+	{ 83, 83 },
+	{ 84, 84 },
+	{ 85, 85 },
+	{ 86, 86 },
+	{ 87, 87 },
+	{ 88, 88 },
+	{ 89, 89 },
+	{ 90, 90 },
+	{ 91, 91 },
+	{ 92, 92 },
+	{ 93, 93 },
+	{ 94, 94 },
+	{ 95, 95 },
+	{ 96, 96 },
+	{ 97, 97 },
+	{ 98, 98 },
+	{ 99, 99 },
+	{ 100, 100 },
+	{ 101, 101 },
+	{ 102, 102 },
+	{ 103, 103 },
+	{ 104, 104 },
+	{ 105, 105 },
+	{ 106, 106 },
+	{ 107, 107 },
+	{ 108, 108 },
+	{ 109, 109 },
+	{ 110, 110 },
+	{ 111, 111 },
+	{ 112, 112 },
+	{ 113, 113 },
+	{ 114, 114 },
+	{ 115, 115 },
+	{ 116, 116 },
+	{ 117, 117 },
+	{ 118, 118 },
+	{ 119, 119 },
+	{ 120, 120 },
+	{ 121, 121 },
+	{ 122, 122 },
+	{ 123, 123 },
+	{ 124, 124 },
+	{ 125, 125 },
+	{ 126, 126 },
+	{ 127, 127 },
+	{ 128, 8364 },
+	{ 129, 129 },
+	{ 130, 8218 },
+	{ 131, 131 },
+	{ 132, 8222 },
+	{ 133, 8230 },
+	{ 134, 8224 },
+	{ 135, 8225 },
+	{ 136, 136 },
+	{ 137, 8240 },
+	{ 138, 138 },
+	{ 139, 8249 },
+	{ 140, 140 },
+	{ 141, 168 },
+	{ 142, 711 },
+	{ 143, 184 },
+	{ 144, 144 },
+	{ 145, 8216 },
+	{ 146, 8217 },
+	{ 147, 8220 },
+	{ 148, 8221 },
+	{ 149, 8226 },
+	{ 150, 8211 },
+	{ 151, 8212 },
+	{ 152, 152 },
+	{ 153, 8482 },
+	{ 154, 154 },
+	{ 155, 8250 },
+	{ 156, 156 },
+	{ 157, 175 },
+	{ 158, 731 },
+	{ 159, 159 },
+	{ 160, 160 },
+	{ 161, 161 },
+	{ 162, 162 },
+	{ 163, 163 },
+	{ 164, 164 },
+	{ 165, 165 },
+	{ 166, 166 },
+	{ 167, 167 },
+	{ 168, 216 },
+	{ 169, 169 },
+	{ 170, 342 },
+	{ 171, 171 },
+	{ 172, 172 },
+	{ 173, 173 },
+	{ 174, 174 },
+	{ 175, 198 },
+	{ 176, 176 },
+	{ 177, 177 },
+	{ 178, 178 },
+	{ 179, 179 },
+	{ 180, 180 },
+	{ 181, 181 },
+	{ 182, 182 },
+	{ 183, 183 },
+	{ 184, 248 },
+	{ 185, 185 },
+	{ 186, 343 },
+	{ 187, 187 },
+	{ 188, 188 },
+	{ 189, 189 },
+	{ 190, 190 },
+	{ 191, 230 },
+	{ 192, 260 },
+	{ 193, 302 },
+	{ 194, 256 },
+	{ 195, 262 },
+	{ 196, 196 },
+	{ 197, 197 },
+	{ 198, 280 },
+	{ 199, 274 },
+	{ 200, 268 },
+	{ 201, 201 },
+	{ 202, 377 },
+	{ 203, 278 },
+	{ 204, 290 },
+	{ 205, 310 },
+	{ 206, 298 },
+	{ 207, 315 },
+	{ 208, 352 },
+	{ 209, 323 },
+	{ 210, 325 },
+	{ 211, 211 },
+	{ 212, 332 },
+	{ 213, 213 },
+	{ 214, 214 },
+	{ 215, 215 },
+	{ 216, 370 },
+	{ 217, 321 },
+	{ 218, 340 },
+	{ 219, 362 },
+	{ 220, 220 },
+	{ 221, 379 },
+	{ 222, 381 },
+	{ 223, 223 },
+	{ 224, 261 },
+	{ 225, 303 },
+	{ 226, 257 },
+	{ 227, 263 },
+	{ 228, 228 },
+	{ 229, 229 },
+	{ 230, 281 },
+	{ 231, 275 },
+	{ 232, 269 },
+	{ 233, 233 },
+	{ 234, 378 },
+	{ 235, 279 },
+	{ 236, 291 },
+	{ 237, 311 },
+	{ 238, 299 },
+	{ 239, 316 },
+	{ 240, 353 },
+	{ 241, 324 },
+	{ 242, 326 },
+	{ 243, 243 },
+	{ 244, 333 },
+	{ 245, 245 },
+	{ 246, 246 },
+	{ 247, 247 },
+	{ 248, 371 },
+	{ 249, 322 },
+	{ 250, 347 },
+	{ 251, 363 },
+	{ 252, 252 },
+	{ 253, 380 },
+	{ 254, 382 },
+	{ 255, 729 },
+	{ 32, 8194 },
+	{ 32, 8195 },
+	{ 32, 8201 },
+	{ 65, 192 },
+	{ 65, 193 },
+	{ 65, 194 },
+	{ 65, 195 },
+	{ 65, 258 },
+	{ 65, 461 },
+	{ 97, 224 },
+	{ 97, 225 },
+	{ 97, 226 },
+	{ 97, 227 },
+	{ 97, 259 },
+	{ 97, 462 },
+	{ 67, 199 },
+	{ 67, 264 },
+	{ 67, 266 },
+	{ 99, 231 },
+	{ 99, 265 },
+	{ 99, 267 },
+	{ 68, 270 },
+	{ 100, 271 },
+	{ 69, 200 },
+	{ 69, 202 },
+	{ 69, 203 },
+	{ 69, 276 },
+	{ 69, 282 },
+	{ 101, 232 },
+	{ 101, 234 },
+	{ 101, 235 },
+	{ 101, 277 },
+	{ 101, 283 },
+	{ 71, 284 },
+	{ 71, 286 },
+	{ 71, 288 },
+	{ 71, 486 },
+	{ 71, 500 },
+	{ 103, 285 },
+	{ 103, 287 },
+	{ 103, 289 },
+	{ 103, 487 },
+	{ 103, 501 },
+	{ 72, 292 },
+	{ 104, 293 },
+	{ 73, 204 },
+	{ 73, 205 },
+	{ 73, 206 },
+	{ 73, 207 },
+	{ 73, 296 },
+	{ 73, 300 },
+	{ 73, 304 },
+	{ 73, 463 },
+	{ 105, 236 },
+	{ 105, 237 },
+	{ 105, 238 },
+	{ 105, 239 },
+	{ 105, 297 },
+	{ 105, 301 },
+	{ 105, 305 },
+	{ 105, 464 },
+	{ 74, 308 },
+	{ 106, 309 },
+	{ 75, 488 },
+	{ 107, 489 },
+	{ 76, 313 },
+	{ 76, 317 },
+	{ 76, 319 },
+	{ 108, 314 },
+	{ 108, 318 },
+	{ 108, 320 },
+	{ 77, 209 },
+	{ 77, 327 },
+	{ 109, 241 },
+	{ 109, 328 },
+	{ 109, 329 },
+	{ 78, 210 },
+	{ 78, 212 },
+	{ 78, 334 },
+	{ 78, 336 },
+	{ 78, 465 },
+	{ 78, 490 },
+	{ 110, 242 },
+	{ 110, 244 },
+	{ 110, 335 },
+	{ 110, 337 },
+	{ 110, 466 },
+	{ 110, 491 },
+	{ 82, 344 },
+	{ 114, 341 },
+	{ 114, 345 },
+	{ 83, 346 },
+	{ 83, 348 },
+	{ 83, 350 },
+	{ 115, 349 },
+	{ 115, 351 },
+	{ 84, 354 },
+	{ 84, 356 },
+	{ 116, 355 },
+	{ 116, 357 },
+	{ 85, 217 },
+	{ 85, 218 },
+	{ 85, 219 },
+	{ 85, 360 },
+	{ 85, 364 },
+	{ 85, 366 },
+	{ 85, 368 },
+	{ 85, 467 },
+	{ 117, 249 },
+	{ 117, 250 },
+	{ 117, 251 },
+	{ 117, 361 },
+	{ 117, 365 },
+	{ 117, 367 },
+	{ 117, 369 },
+	{ 117, 468 },
+	{ 87, 372 },
+	{ 119, 373 },
+	{ 89, 221 },
+	{ 89, 374 },
+	{ 89, 376 },
+	{ 121, 253 },
+	{ 121, 255 },
+	{ 121, 375 },
 };
-charconvert cp866[] = {
- /* 0 */ 0,/*<tdbgcolor="C0C0C0"><fontface="Arial"color="000000"><b>ISO/IEC10646-1:2000CharacterName</b></font>*/
- 1,
- 2,
- 3,
- 4,
- 5,
- 6,
- 7,
- 8,
- 9,
- 10,
- 11,
- 12,
- 13,
- 14,
- 15,
- 16,
- 17,
- 18,
- 19,
- 20,
- 21,
- 22,
- 23,
- 24,
- 25,
- 26,
- 27,
- 28,
- 29,
- 30,
- 31,
- /* 32 */ 32,/*SPACE*/
- /* 33 */ 33,/*EXCLAMATIONMARK*/
- /* 34 */ 34,/*QUOTATIONMARK*/
- /* 35 */ 35,/*NUMBERSIGN*/
- /* 36 */ 36,/*DOLLARSIGN*/
- /* 37 */ 37,/*PERCENTSIGN*/
- /* 38 */ 38,/*AMPERSAND*/
- /* 39 */ 39,/*APOSTROPHE*/
- /* 40 */ 40,/*LEFTPARENTHESIS*/
- /* 41 */ 41,/*RIGHTPARENTHESIS*/
- /* 42 */ 42,/*ASTERISK*/
- /* 43 */ 43,/*PLUSSIGN*/
- /* 44 */ 44,/*COMMA*/
- /* 45 */ 45,/*HYPHEN-MINUS*/
- /* 46 */ 46,/*FULLSTOP*/
- /* 47 */ 47,/*SOLIDUS*/
- /* 48 */ 48,/*DIGITZERO*/
- /* 49 */ 49,/*DIGITONE*/
- /* 50 */ 50,/*DIGITTWO*/
- /* 51 */ 51,/*DIGITTHREE*/
- /* 52 */ 52,/*DIGITFOUR*/
- /* 53 */ 53,/*DIGITFIVE*/
- /* 54 */ 54,/*DIGITSIX*/
- /* 55 */ 55,/*DIGITSEVEN*/
- /* 56 */ 56,/*DIGITEIGHT*/
- /* 57 */ 57,/*DIGITNINE*/
- /* 58 */ 58,/*COLON*/
- /* 59 */ 59,/*SEMICOLON*/
- /* 60 */ 60,/*LESS-THANSIGN*/
- /* 61 */ 61,/*EQUALSSIGN*/
- /* 62 */ 62,/*GREATER-THANSIGN*/
- /* 63 */ 63,/*QUESTIONMARK*/
- /* 64 */ 64,/*COMMERCIALAT*/
- /* 65 */ 65,/*LATINCAPITALLETTERA*/
- /* 66 */ 66,/*LATINCAPITALLETTERB*/
- /* 67 */ 67,/*LATINCAPITALLETTERC*/
- /* 68 */ 68,/*LATINCAPITALLETTERD*/
- /* 69 */ 69,/*LATINCAPITALLETTERE*/
- /* 70 */ 70,/*LATINCAPITALLETTERF*/
- /* 71 */ 71,/*LATINCAPITALLETTERG*/
- /* 72 */ 72,/*LATINCAPITALLETTERH*/
- /* 73 */ 73,/*LATINCAPITALLETTERI*/
- /* 74 */ 74,/*LATINCAPITALLETTERJ*/
- /* 75 */ 75,/*LATINCAPITALLETTERK*/
- /* 76 */ 76,/*LATINCAPITALLETTERL*/
- /* 77 */ 77,/*LATINCAPITALLETTERM*/
- /* 78 */ 78,/*LATINCAPITALLETTERN*/
- /* 79 */ 79,/*LATINCAPITALLETTERO*/
- /* 80 */ 80,/*LATINCAPITALLETTERP*/
- /* 81 */ 81,/*LATINCAPITALLETTERQ*/
- /* 82 */ 82,/*LATINCAPITALLETTERR*/
- /* 83 */ 83,/*LATINCAPITALLETTERS*/
- /* 84 */ 84,/*LATINCAPITALLETTERT*/
- /* 85 */ 85,/*LATINCAPITALLETTERU*/
- /* 86 */ 86,/*LATINCAPITALLETTERV*/
- /* 87 */ 87,/*LATINCAPITALLETTERW*/
- /* 88 */ 88,/*LATINCAPITALLETTERX*/
- /* 89 */ 89,/*LATINCAPITALLETTERY*/
- /* 90 */ 90,/*LATINCAPITALLETTERZ*/
- /* 91 */ 91,/*LEFTSQUAREBRACKET*/
- /* 92 */ 92,/*REVERSESOLIDUS*/
- /* 93 */ 93,/*RIGHTSQUAREBRACKET*/
- /* 94 */ 94,/*CIRCUMFLEXACCENT*/
- /* 95 */ 95,/*LOWLINE*/
- /* 96 */ 96,/*GRAVEACCENT*/
- /* 97 */ 97,/*LATINSMALLLETTERA*/
- /* 98 */ 98,/*LATINSMALLLETTERB*/
- /* 99 */ 99,/*LATINSMALLLETTERC*/
- /* 100 */ 100,/*LATINSMALLLETTERD*/
- /* 101 */ 101,/*LATINSMALLLETTERE*/
- /* 102 */ 102,/*LATINSMALLLETTERF*/
- /* 103 */ 103,/*LATINSMALLLETTERG*/
- /* 104 */ 104,/*LATINSMALLLETTERH*/
- /* 105 */ 105,/*LATINSMALLLETTERI*/
- /* 106 */ 106,/*LATINSMALLLETTERJ*/
- /* 107 */ 107,/*LATINSMALLLETTERK*/
- /* 108 */ 108,/*LATINSMALLLETTERL*/
- /* 109 */ 109,/*LATINSMALLLETTERM*/
- /* 110 */ 110,/*LATINSMALLLETTERN*/
- /* 111 */ 111,/*LATINSMALLLETTERO*/
- /* 112 */ 112,/*LATINSMALLLETTERP*/
- /* 113 */ 113,/*LATINSMALLLETTERQ*/
- /* 114 */ 114,/*LATINSMALLLETTERR*/
- /* 115 */ 115,/*LATINSMALLLETTERS*/
- /* 116 */ 116,/*LATINSMALLLETTERT*/
- /* 117 */ 117,/*LATINSMALLLETTERU*/
- /* 118 */ 118,/*LATINSMALLLETTERV*/
- /* 119 */ 119,/*LATINSMALLLETTERW*/
- /* 120 */ 120,/*LATINSMALLLETTERX*/
- /* 121 */ 121,/*LATINSMALLLETTERY*/
- /* 122 */ 122,/*LATINSMALLLETTERZ*/
- /* 123 */ 123,/*LEFTCURLYBRACKET*/
- /* 124 */ 124,/*VERTICALLINE*/
- /* 125 */ 125,/*RIGHTCURLYBRACKET*/
- /* 126 */ 126,/*TILDE*/
- 127,
- /* 128 */ 1040,/*CYRILLICCAPITALLETTERA*/
- /* 129 */ 1041,/*CYRILLICCAPITALLETTERBE*/
- /* 130 */ 1042,/*CYRILLICCAPITALLETTERVE*/
- /* 131 */ 1043,/*CYRILLICCAPITALLETTERGHE*/
- /* 132 */ 1044,/*CYRILLICCAPITALLETTERDE*/
- /* 133 */ 1045,/*CYRILLICCAPITALLETTERIE*/
- /* 134 */ 1046,/*CYRILLICCAPITALLETTERZHE*/
- /* 135 */ 1047,/*CYRILLICCAPITALLETTERZE*/
- /* 136 */ 1048,/*CYRILLICCAPITALLETTERI*/
- /* 137 */ 1049,/*CYRILLICCAPITALLETTERSHORTI*/
- /* 138 */ 1050,/*CYRILLICCAPITALLETTERKA*/
- /* 139 */ 1051,/*CYRILLICCAPITALLETTEREL*/
- /* 140 */ 1052,/*CYRILLICCAPITALLETTEREM*/
- /* 141 */ 1053,/*CYRILLICCAPITALLETTEREN*/
- /* 142 */ 1054,/*CYRILLICCAPITALLETTERO*/
- /* 143 */ 1055,/*CYRILLICCAPITALLETTERPE*/
- /* 144 */ 1056,/*CYRILLICCAPITALLETTERER*/
- /* 145 */ 1057,/*CYRILLICCAPITALLETTERES*/
- /* 146 */ 1058,/*CYRILLICCAPITALLETTERTE*/
- /* 147 */ 1059,/*CYRILLICCAPITALLETTERU*/
- /* 148 */ 1060,/*CYRILLICCAPITALLETTEREF*/
- /* 149 */ 1061,/*CYRILLICCAPITALLETTERHA*/
- /* 150 */ 1062,/*CYRILLICCAPITALLETTERTSE*/
- /* 151 */ 1063,/*CYRILLICCAPITALLETTERCHE*/
- /* 152 */ 1064,/*CYRILLICCAPITALLETTERSHA*/
- /* 153 */ 1065,/*CYRILLICCAPITALLETTERSHCHA*/
- /* 154 */ 1066,/*CYRILLICCAPITALLETTERHARDSIGN*/
- /* 155 */ 1067,/*CYRILLICCAPITALLETTERYERU*/
- /* 156 */ 1068,/*CYRILLICCAPITALLETTERSOFTSIGN*/
- /* 157 */ 1069,/*CYRILLICCAPITALLETTERE*/
- /* 158 */ 1070,/*CYRILLICCAPITALLETTERYU*/
- /* 159 */ 1071,/*CYRILLICCAPITALLETTERYA*/
- /* 160 */ 1072,/*CYRILLICSMALLLETTERA*/
- /* 161 */ 1073,/*CYRILLICSMALLLETTERBE*/
- /* 162 */ 1074,/*CYRILLICSMALLLETTERVE*/
- /* 163 */ 1075,/*CYRILLICSMALLLETTERGHE*/
- /* 164 */ 1076,/*CYRILLICSMALLLETTERDE*/
- /* 165 */ 1077,/*CYRILLICSMALLLETTERIE*/
- /* 166 */ 1078,/*CYRILLICSMALLLETTERZHE*/
- /* 167 */ 1079,/*CYRILLICSMALLLETTERZE*/
- /* 168 */ 1080,/*CYRILLICSMALLLETTERI*/
- /* 169 */ 1081,/*CYRILLICSMALLLETTERSHORTI*/
- /* 170 */ 1082,/*CYRILLICSMALLLETTERKA*/
- /* 171 */ 1083,/*CYRILLICSMALLLETTEREL*/
- /* 172 */ 1084,/*CYRILLICSMALLLETTEREM*/
- /* 173 */ 1085,/*CYRILLICSMALLLETTEREN*/
- /* 174 */ 1086,/*CYRILLICSMALLLETTERO*/
- /* 175 */ 1087,/*CYRILLICSMALLLETTERPE*/
- /* 176 */ 9617,/*LIGHTSHADE*/
- /* 177 */ 9618,/*MEDIUMSHADE*/
- /* 178 */ 9619,/*DARKSHADE*/
- /* 179 */ 9474,/*BOXDRAWINGSLIGHTVERTICAL*/
- /* 180 */ 9508,/*BOXDRAWINGSLIGHTVERTICALANDLEFT*/
- /* 181 */ 9569,/*BOXDRAWINGSVERTICALSINGLEANDLEFTDOUBLE*/
- /* 182 */ 9570,/*BOXDRAWINGSVERTICALDOUBLEANDLEFTSINGLE*/
- /* 183 */ 9558,/*BOXDRAWINGSDOWNDOUBLEANDLEFTSINGLE*/
- /* 184 */ 9557,/*BOXDRAWINGSDOWNSINGLEANDLEFTDOUBLE*/
- /* 185 */ 9571,/*BOXDRAWINGSDOUBLEVERTICALANDLEFT*/
- /* 186 */ 9553,/*BOXDRAWINGSDOUBLEVERTICAL*/
- /* 187 */ 9559,/*BOXDRAWINGSDOUBLEDOWNANDLEFT*/
- /* 188 */ 9565,/*BOXDRAWINGSDOUBLEUPANDLEFT*/
- /* 189 */ 9564,/*BOXDRAWINGSUPDOUBLEANDLEFTSINGLE*/
- /* 190 */ 9563,/*BOXDRAWINGSUPSINGLEANDLEFTDOUBLE*/
- /* 191 */ 9488,/*BOXDRAWINGSLIGHTDOWNANDLEFT*/
- /* 192 */ 9492,/*BOXDRAWINGSLIGHTUPANDRIGHT*/
- /* 193 */ 9524,/*BOXDRAWINGSLIGHTUPANDHORIZONTAL*/
- /* 194 */ 9516,/*BOXDRAWINGSLIGHTDOWNANDHORIZONTAL*/
- /* 195 */ 9500,/*BOXDRAWINGSLIGHTVERTICALANDRIGHT*/
- /* 196 */ 9472,/*BOXDRAWINGSLIGHTHORIZONTAL*/
- /* 197 */ 9532,/*BOXDRAWINGSLIGHTVERTICALANDHORIZONTAL*/
- /* 198 */ 9566,/*BOXDRAWINGSVERTICALSINGLEANDRIGHTDOUBLE*/
- /* 199 */ 9567,/*BOXDRAWINGSVERTICALDOUBLEANDRIGHTSINGLE*/
- /* 200 */ 9562,/*BOXDRAWINGSDOUBLEUPANDRIGHT*/
- /* 201 */ 9556,/*BOXDRAWINGSDOUBLEDOWNANDRIGHT*/
- /* 202 */ 9577,/*BOXDRAWINGSDOUBLEUPANDHORIZONTAL*/
- /* 203 */ 9574,/*BOXDRAWINGSDOUBLEDOWNANDHORIZONTAL*/
- /* 204 */ 9568,/*BOXDRAWINGSDOUBLEVERTICALANDRIGHT*/
- /* 205 */ 9552,/*BOXDRAWINGSDOUBLEHORIZONTAL*/
- /* 206 */ 9580,/*BOXDRAWINGSDOUBLEVERTICALANDHORIZONTAL*/
- /* 207 */ 9575,/*BOXDRAWINGSUPSINGLEANDHORIZONTALDOUBLE*/
- /* 208 */ 9576,/*BOXDRAWINGSUPDOUBLEANDHORIZONTALSINGLE*/
- /* 209 */ 9572,/*BOXDRAWINGSDOWNSINGLEANDHORIZONTALDOUBLE*/
- /* 210 */ 9573,/*BOXDRAWINGSDOWNDOUBLEANDHORIZONTALSINGLE*/
- /* 211 */ 9561,/*BOXDRAWINGSUPDOUBLEANDRIGHTSINGLE*/
- /* 212 */ 9560,/*BOXDRAWINGSUPSINGLEANDRIGHTDOUBLE*/
- /* 213 */ 9554,/*BOXDRAWINGSDOWNSINGLEANDRIGHTDOUBLE*/
- /* 214 */ 9555,/*BOXDRAWINGSDOWNDOUBLEANDRIGHTSINGLE*/
- /* 215 */ 9579,/*BOXDRAWINGSVERTICALDOUBLEANDHORIZONTALSINGLE*/
- /* 216 */ 9578,/*BOXDRAWINGSVERTICALSINGLEANDHORIZONTALDOUBLE*/
- /* 217 */ 9496,/*BOXDRAWINGSLIGHTUPANDLEFT*/
- /* 218 */ 9484,/*BOXDRAWINGSLIGHTDOWNANDRIGHT*/
- /* 219 */ 9608,/*FULLBLOCK*/
- /* 220 */ 9604,/*LOWERHALFBLOCK*/
- /* 221 */ 9612,/*LEFTHALFBLOCK*/
- /* 222 */ 9616,/*RIGHTHALFBLOCK*/
- /* 223 */ 9600,/*UPPERHALFBLOCK*/
- /* 224 */ 1088,/*CYRILLICSMALLLETTERER*/
- /* 225 */ 1089,/*CYRILLICSMALLLETTERES*/
- /* 226 */ 1090,/*CYRILLICSMALLLETTERTE*/
- /* 227 */ 1091,/*CYRILLICSMALLLETTERU*/
- /* 228 */ 1092,/*CYRILLICSMALLLETTEREF*/
- /* 229 */ 1093,/*CYRILLICSMALLLETTERHA*/
- /* 230 */ 1094,/*CYRILLICSMALLLETTERTSE*/
- /* 231 */ 1095,/*CYRILLICSMALLLETTERCHE*/
- /* 232 */ 1096,/*CYRILLICSMALLLETTERSHA*/
- /* 233 */ 1097,/*CYRILLICSMALLLETTERSHCHA*/
- /* 234 */ 1098,/*CYRILLICSMALLLETTERHARDSIGN*/
- /* 235 */ 1099,/*CYRILLICSMALLLETTERYERU*/
- /* 236 */ 1100,/*CYRILLICSMALLLETTERSOFTSIGN*/
- /* 237 */ 1101,/*CYRILLICSMALLLETTERE*/
- /* 238 */ 1102,/*CYRILLICSMALLLETTERYU*/
- /* 239 */ 1103,/*CYRILLICSMALLLETTERYA*/
- /* 240 */ 1025,/*CYRILLICCAPITALLETTERIO*/
- /* 241 */ 1105,/*CYRILLICSMALLLETTERIO*/
- /* 242 */ 1028,/*CYRILLICCAPITALLETTERUKRAINIANIE*/
- /* 243 */ 1108,/*CYRILLICSMALLLETTERUKRAINIANIE*/
- /* 244 */ 1031,/*CYRILLICCAPITALLETTERYI*/
- /* 245 */ 1111,/*CYRILLICSMALLLETTERYI*/
- /* 246 */ 1038,/*CYRILLICCAPITALLETTERSHORTU*/
- /* 247 */ 1118,/*CYRILLICSMALLLETTERSHORTU*/
- /* 248 */ 176,/*DEGREESIGN*/
- /* 249 */ 8729,/*BULLETOPERATOR*/
- /* 250 */ 183,/*MIDDLEDOT*/
- /* 251 */ 8730,/*SQUAREROOT*/
- /* 252 */ 8470,/*NUMEROSIGN*/
- /* 253 */ 164,/*CURRENCYSIGN*/
- /* 254 */ 9632,/*BLACKSQUARE*/
- /* 255 */ 160/*NO-BREAKSPACE*/
+static convert_t cp1258[] = {
+	{ 0, 0 },
+	{ 1, 1 },
+	{ 2, 2 },
+	{ 3, 3 },
+	{ 4, 4 },
+	{ 5, 5 },
+	{ 6, 6 },
+	{ 7, 7 },
+	{ 8, 8 },
+	{ 9, 9 },
+	{ 10, 10 },
+	{ 11, 11 },
+	{ 12, 12 },
+	{ 13, 13 },
+	{ 14, 14 },
+	{ 15, 15 },
+	{ 16, 16 },
+	{ 17, 17 },
+	{ 18, 18 },
+	{ 19, 19 },
+	{ 20, 20 },
+	{ 21, 21 },
+	{ 22, 22 },
+	{ 23, 23 },
+	{ 24, 24 },
+	{ 25, 25 },
+	{ 26, 26 },
+	{ 27, 27 },
+	{ 28, 28 },
+	{ 29, 29 },
+	{ 30, 30 },
+	{ 31, 31 },
+	{ 32, 32 },
+	{ 33, 33 },
+	{ 34, 34 },
+	{ 35, 35 },
+	{ 36, 36 },
+	{ 37, 37 },
+	{ 38, 38 },
+	{ 39, 39 },
+	{ 40, 40 },
+	{ 41, 41 },
+	{ 42, 42 },
+	{ 43, 43 },
+	{ 44, 44 },
+	{ 45, 45 },
+	{ 46, 46 },
+	{ 47, 47 },
+	{ 48, 48 },
+	{ 49, 49 },
+	{ 50, 50 },
+	{ 51, 51 },
+	{ 52, 52 },
+	{ 53, 53 },
+	{ 54, 54 },
+	{ 55, 55 },
+	{ 56, 56 },
+	{ 57, 57 },
+	{ 58, 58 },
+	{ 59, 59 },
+	{ 60, 60 },
+	{ 61, 61 },
+	{ 62, 62 },
+	{ 63, 63 },
+	{ 64, 64 },
+	{ 65, 65 },
+	{ 66, 66 },
+	{ 67, 67 },
+	{ 68, 68 },
+	{ 69, 69 },
+	{ 70, 70 },
+	{ 71, 71 },
+	{ 72, 72 },
+	{ 73, 73 },
+	{ 74, 74 },
+	{ 75, 75 },
+	{ 76, 76 },
+	{ 77, 77 },
+	{ 78, 78 },
+	{ 79, 79 },
+	{ 80, 80 },
+	{ 81, 81 },
+	{ 82, 82 },
+	{ 83, 83 },
+	{ 84, 84 },
+	{ 85, 85 },
+	{ 86, 86 },
+	{ 87, 87 },
+	{ 88, 88 },
+	{ 89, 89 },
+	{ 90, 90 },
+	{ 91, 91 },
+	{ 92, 92 },
+	{ 93, 93 },
+	{ 94, 94 },
+	{ 95, 95 },
+	{ 96, 96 },
+	{ 97, 97 },
+	{ 98, 98 },
+	{ 99, 99 },
+	{ 100, 100 },
+	{ 101, 101 },
+	{ 102, 102 },
+	{ 103, 103 },
+	{ 104, 104 },
+	{ 105, 105 },
+	{ 106, 106 },
+	{ 107, 107 },
+	{ 108, 108 },
+	{ 109, 109 },
+	{ 110, 110 },
+	{ 111, 111 },
+	{ 112, 112 },
+	{ 113, 113 },
+	{ 114, 114 },
+	{ 115, 115 },
+	{ 116, 116 },
+	{ 117, 117 },
+	{ 118, 118 },
+	{ 119, 119 },
+	{ 120, 120 },
+	{ 121, 121 },
+	{ 122, 122 },
+	{ 123, 123 },
+	{ 124, 124 },
+	{ 125, 125 },
+	{ 126, 126 },
+	{ 127, 127 },
+	{ 128, 8364 },
+	{ 129, 129 },
+	{ 130, 8218 },
+	{ 131, 402 },
+	{ 132, 8222 },
+	{ 133, 8230 },
+	{ 134, 8224 },
+	{ 135, 8225 },
+	{ 136, 710 },
+	{ 137, 8240 },
+	{ 138, 138 },
+	{ 139, 8249 },
+	{ 140, 338 },
+	{ 141, 141 },
+	{ 142, 142 },
+	{ 143, 143 },
+	{ 144, 144 },
+	{ 145, 8216 },
+	{ 146, 8217 },
+	{ 147, 8220 },
+	{ 148, 8221 },
+	{ 149, 8226 },
+	{ 150, 8211 },
+	{ 151, 8212 },
+	{ 152, 732 },
+	{ 153, 8482 },
+	{ 154, 154 },
+	{ 155, 8250 },
+	{ 156, 339 },
+	{ 157, 157 },
+	{ 158, 158 },
+	{ 159, 376 },
+	{ 160, 160 },
+	{ 161, 161 },
+	{ 162, 162 },
+	{ 163, 163 },
+	{ 164, 164 },
+	{ 165, 165 },
+	{ 166, 166 },
+	{ 167, 167 },
+	{ 168, 168 },
+	{ 169, 169 },
+	{ 170, 170 },
+	{ 171, 171 },
+	{ 172, 172 },
+	{ 173, 173 },
+	{ 174, 174 },
+	{ 175, 175 },
+	{ 176, 176 },
+	{ 177, 177 },
+	{ 178, 178 },
+	{ 179, 179 },
+	{ 180, 180 },
+	{ 181, 181 },
+	{ 182, 182 },
+	{ 183, 183 },
+	{ 184, 184 },
+	{ 185, 185 },
+	{ 186, 186 },
+	{ 187, 187 },
+	{ 188, 188 },
+	{ 189, 189 },
+	{ 190, 190 },
+	{ 191, 191 },
+	{ 192, 192 },
+	{ 193, 193 },
+	{ 194, 194 },
+	{ 195, 258 },
+	{ 196, 196 },
+	{ 197, 197 },
+	{ 198, 198 },
+	{ 199, 199 },
+	{ 200, 200 },
+	{ 201, 201 },
+	{ 202, 202 },
+	{ 203, 203 },
+	{ 204, 832 },
+	{ 205, 205 },
+	{ 206, 206 },
+	{ 207, 207 },
+	{ 208, 272 },
+	{ 209, 209 },
+	{ 210, 777 },
+	{ 211, 211 },
+	{ 212, 212 },
+	{ 213, 416 },
+	{ 214, 214 },
+	{ 215, 215 },
+	{ 216, 216 },
+	{ 217, 217 },
+	{ 218, 218 },
+	{ 219, 219 },
+	{ 220, 220 },
+	{ 221, 431 },
+	{ 222, 771 },
+	{ 223, 223 },
+	{ 224, 224 },
+	{ 225, 225 },
+	{ 226, 226 },
+	{ 227, 259 },
+	{ 228, 228 },
+	{ 229, 229 },
+	{ 230, 230 },
+	{ 231, 231 },
+	{ 232, 232 },
+	{ 233, 233 },
+	{ 234, 234 },
+	{ 235, 235 },
+	{ 236, 833 },
+	{ 237, 237 },
+	{ 238, 238 },
+	{ 239, 239 },
+	{ 240, 273 },
+	{ 241, 241 },
+	{ 242, 803 },
+	{ 243, 243 },
+	{ 244, 244 },
+	{ 245, 417 },
+	{ 246, 246 },
+	{ 247, 247 },
+	{ 248, 248 },
+	{ 249, 249 },
+	{ 250, 250 },
+	{ 251, 251 },
+	{ 252, 252 },
+	{ 253, 432 },
+	{ 254, 8363 },
+	{ 255, 255 },
+	{ 32, 8194 },
+	{ 32, 8195 },
+	{ 32, 8201 },
+	{ 65, 195 },
+	{ 65, 256 },
+	{ 65, 260 },
+	{ 65, 461 },
+	{ 97, 227 },
+	{ 97, 257 },
+	{ 97, 261 },
+	{ 97, 462 },
+	{ 67, 262 },
+	{ 67, 264 },
+	{ 67, 266 },
+	{ 67, 268 },
+	{ 99, 263 },
+	{ 99, 265 },
+	{ 99, 267 },
+	{ 99, 269 },
+	{ 68, 270 },
+	{ 100, 271 },
+	{ 69, 274 },
+	{ 69, 276 },
+	{ 69, 278 },
+	{ 69, 280 },
+	{ 69, 282 },
+	{ 101, 275 },
+	{ 101, 277 },
+	{ 101, 279 },
+	{ 101, 281 },
+	{ 101, 283 },
+	{ 71, 284 },
+	{ 71, 286 },
+	{ 71, 288 },
+	{ 71, 290 },
+	{ 71, 486 },
+	{ 71, 500 },
+	{ 103, 285 },
+	{ 103, 287 },
+	{ 103, 289 },
+	{ 103, 291 },
+	{ 103, 487 },
+	{ 103, 501 },
+	{ 72, 292 },
+	{ 104, 293 },
+	{ 73, 204 },
+	{ 73, 296 },
+	{ 73, 298 },
+	{ 73, 300 },
+	{ 73, 302 },
+	{ 73, 304 },
+	{ 73, 463 },
+	{ 105, 236 },
+	{ 105, 297 },
+	{ 105, 299 },
+	{ 105, 301 },
+	{ 105, 303 },
+	{ 105, 305 },
+	{ 105, 464 },
+	{ 74, 308 },
+	{ 106, 309 },
+	{ 75, 310 },
+	{ 75, 488 },
+	{ 107, 311 },
+	{ 107, 489 },
+	{ 76, 313 },
+	{ 76, 315 },
+	{ 76, 317 },
+	{ 76, 319 },
+	{ 76, 321 },
+	{ 108, 314 },
+	{ 108, 316 },
+	{ 108, 318 },
+	{ 108, 320 },
+	{ 108, 322 },
+	{ 77, 323 },
+	{ 77, 325 },
+	{ 77, 327 },
+	{ 109, 324 },
+	{ 109, 326 },
+	{ 109, 328 },
+	{ 109, 329 },
+	{ 78, 210 },
+	{ 78, 213 },
+	{ 78, 332 },
+	{ 78, 334 },
+	{ 78, 336 },
+	{ 78, 465 },
+	{ 78, 490 },
+	{ 110, 242 },
+	{ 110, 245 },
+	{ 110, 333 },
+	{ 110, 335 },
+	{ 110, 337 },
+	{ 110, 466 },
+	{ 110, 491 },
+	{ 82, 340 },
+	{ 82, 342 },
+	{ 82, 344 },
+	{ 114, 341 },
+	{ 114, 343 },
+	{ 114, 345 },
+	{ 83, 346 },
+	{ 83, 348 },
+	{ 83, 350 },
+	{ 83, 352 },
+	{ 115, 347 },
+	{ 115, 349 },
+	{ 115, 351 },
+	{ 115, 353 },
+	{ 84, 354 },
+	{ 84, 356 },
+	{ 116, 355 },
+	{ 116, 357 },
+	{ 85, 360 },
+	{ 85, 362 },
+	{ 85, 364 },
+	{ 85, 366 },
+	{ 85, 368 },
+	{ 85, 370 },
+	{ 85, 467 },
+	{ 117, 361 },
+	{ 117, 363 },
+	{ 117, 365 },
+	{ 117, 367 },
+	{ 117, 369 },
+	{ 117, 371 },
+	{ 117, 468 },
+	{ 87, 372 },
+	{ 119, 373 },
+	{ 89, 221 },
+	{ 89, 374 },
+	{ 121, 253 },
+	{ 121, 375 },
+	{ 90, 377 },
+	{ 90, 379 },
+	{ 90, 381 },
+	{ 122, 378 },
+	{ 122, 380 },
+	{ 122, 382 },
 };
-charconvert cp869[] = {
- /* 0 */ 0,/*<tdbgcolor="C0C0C0"><fontface="Arial"color="000000"><b>ISO/IEC10646-1:2000CharacterName</b></font>*/
- 1,
- 2,
- 3,
- 4,
- 5,
- 6,
- 7,
- 8,
- 9,
- 10,
- 11,
- 12,
- 13,
- 14,
- 15,
- 16,
- 17,
- 18,
- 19,
- 20,
- 21,
- 22,
- 23,
- 24,
- 25,
- 26,
- 27,
- 28,
- 29,
- 30,
- 31,
- /* 32 */ 32,/*SPACE*/
- /* 33 */ 33,/*EXCLAMATIONMARK*/
- /* 34 */ 34,/*QUOTATIONMARK*/
- /* 35 */ 35,/*NUMBERSIGN*/
- /* 36 */ 36,/*DOLLARSIGN*/
- /* 37 */ 37,/*PERCENTSIGN*/
- /* 38 */ 38,/*AMPERSAND*/
- /* 39 */ 39,/*APOSTROPHE*/
- /* 40 */ 40,/*LEFTPARENTHESIS*/
- /* 41 */ 41,/*RIGHTPARENTHESIS*/
- /* 42 */ 42,/*ASTERISK*/
- /* 43 */ 43,/*PLUSSIGN*/
- /* 44 */ 44,/*COMMA*/
- /* 45 */ 45,/*HYPHEN-MINUS*/
- /* 46 */ 46,/*FULLSTOP*/
- /* 47 */ 47,/*SOLIDUS*/
- /* 48 */ 48,/*DIGITZERO*/
- /* 49 */ 49,/*DIGITONE*/
- /* 50 */ 50,/*DIGITTWO*/
- /* 51 */ 51,/*DIGITTHREE*/
- /* 52 */ 52,/*DIGITFOUR*/
- /* 53 */ 53,/*DIGITFIVE*/
- /* 54 */ 54,/*DIGITSIX*/
- /* 55 */ 55,/*DIGITSEVEN*/
- /* 56 */ 56,/*DIGITEIGHT*/
- /* 57 */ 57,/*DIGITNINE*/
- /* 58 */ 58,/*COLON*/
- /* 59 */ 59,/*SEMICOLON*/
- /* 60 */ 60,/*LESS-THANSIGN*/
- /* 61 */ 61,/*EQUALSSIGN*/
- /* 62 */ 62,/*GREATER-THANSIGN*/
- /* 63 */ 63,/*QUESTIONMARK*/
- /* 64 */ 64,/*COMMERCIALAT*/
- /* 65 */ 65,/*LATINCAPITALLETTERA*/
- /* 66 */ 66,/*LATINCAPITALLETTERB*/
- /* 67 */ 67,/*LATINCAPITALLETTERC*/
- /* 68 */ 68,/*LATINCAPITALLETTERD*/
- /* 69 */ 69,/*LATINCAPITALLETTERE*/
- /* 70 */ 70,/*LATINCAPITALLETTERF*/
- /* 71 */ 71,/*LATINCAPITALLETTERG*/
- /* 72 */ 72,/*LATINCAPITALLETTERH*/
- /* 73 */ 73,/*LATINCAPITALLETTERI*/
- /* 74 */ 74,/*LATINCAPITALLETTERJ*/
- /* 75 */ 75,/*LATINCAPITALLETTERK*/
- /* 76 */ 76,/*LATINCAPITALLETTERL*/
- /* 77 */ 77,/*LATINCAPITALLETTERM*/
- /* 78 */ 78,/*LATINCAPITALLETTERN*/
- /* 79 */ 79,/*LATINCAPITALLETTERO*/
- /* 80 */ 80,/*LATINCAPITALLETTERP*/
- /* 81 */ 81,/*LATINCAPITALLETTERQ*/
- /* 82 */ 82,/*LATINCAPITALLETTERR*/
- /* 83 */ 83,/*LATINCAPITALLETTERS*/
- /* 84 */ 84,/*LATINCAPITALLETTERT*/
- /* 85 */ 85,/*LATINCAPITALLETTERU*/
- /* 86 */ 86,/*LATINCAPITALLETTERV*/
- /* 87 */ 87,/*LATINCAPITALLETTERW*/
- /* 88 */ 88,/*LATINCAPITALLETTERX*/
- /* 89 */ 89,/*LATINCAPITALLETTERY*/
- /* 90 */ 90,/*LATINCAPITALLETTERZ*/
- /* 91 */ 91,/*LEFTSQUAREBRACKET*/
- /* 92 */ 92,/*REVERSESOLIDUS*/
- /* 93 */ 93,/*RIGHTSQUAREBRACKET*/
- /* 94 */ 94,/*CIRCUMFLEXACCENT*/
- /* 95 */ 95,/*LOWLINE*/
- /* 96 */ 96,/*GRAVEACCENT*/
- /* 97 */ 97,/*LATINSMALLLETTERA*/
- /* 98 */ 98,/*LATINSMALLLETTERB*/
- /* 99 */ 99,/*LATINSMALLLETTERC*/
- /* 100 */ 100,/*LATINSMALLLETTERD*/
- /* 101 */ 101,/*LATINSMALLLETTERE*/
- /* 102 */ 102,/*LATINSMALLLETTERF*/
- /* 103 */ 103,/*LATINSMALLLETTERG*/
- /* 104 */ 104,/*LATINSMALLLETTERH*/
- /* 105 */ 105,/*LATINSMALLLETTERI*/
- /* 106 */ 106,/*LATINSMALLLETTERJ*/
- /* 107 */ 107,/*LATINSMALLLETTERK*/
- /* 108 */ 108,/*LATINSMALLLETTERL*/
- /* 109 */ 109,/*LATINSMALLLETTERM*/
- /* 110 */ 110,/*LATINSMALLLETTERN*/
- /* 111 */ 111,/*LATINSMALLLETTERO*/
- /* 112 */ 112,/*LATINSMALLLETTERP*/
- /* 113 */ 113,/*LATINSMALLLETTERQ*/
- /* 114 */ 114,/*LATINSMALLLETTERR*/
- /* 115 */ 115,/*LATINSMALLLETTERS*/
- /* 116 */ 116,/*LATINSMALLLETTERT*/
- /* 117 */ 117,/*LATINSMALLLETTERU*/
- /* 118 */ 118,/*LATINSMALLLETTERV*/
- /* 119 */ 119,/*LATINSMALLLETTERW*/
- /* 120 */ 120,/*LATINSMALLLETTERX*/
- /* 121 */ 121,/*LATINSMALLLETTERY*/
- /* 122 */ 122,/*LATINSMALLLETTERZ*/
- /* 123 */ 123,/*LEFTCURLYBRACKET*/
- /* 124 */ 124,/*VERTICALLINE*/
- /* 125 */ 125,/*RIGHTCURLYBRACKET*/
- /* 126 */ 126,/*TILDE*/
- 127,
- 128,
- 129,
- 130,
- 131,
- 132,
- 133,
- /* 134 */ 902,/*GREEKCAPITALLETTERALPHAWITHTONOS*/
- 135,
- /* 136 */ 183,/*MIDDLEDOT*/
- /* 137 */ 172,/*NOTSIGN*/
- /* 138 */ 166,/*BROKENBAR*/
- /* 139 */ 8216,/*LEFTSINGLEQUOTATIONMARK*/
- /* 140 */ 8217,/*RIGHTSINGLEQUOTATIONMARK*/
- /* 141 */ 904,/*GREEKCAPITALLETTEREPSILONWITHTONOS*/
- /* 142 */ 8213,/*HORIZONTALBAR*/
- /* 143 */ 905,/*GREEKCAPITALLETTERETAWITHTONOS*/
- /* 144 */ 906,/*GREEKCAPITALLETTERIOTAWITHTONOS*/
- /* 145 */ 938,/*GREEKCAPITALLETTERIOTAWITHDIALYTIKA*/
- /* 146 */ 908,/*GREEKCAPITALLETTEROMICRONWITHTONOS*/
- 147,
- 148,
- /* 149 */ 910,/*GREEKCAPITALLETTERUPSILONWITHTONOS*/
- /* 150 */ 939,/*GREEKCAPITALLETTERUPSILONWITHDIALYTIKA*/
- /* 151 */ 169,/*COPYRIGHTSIGN*/
- /* 152 */ 911,/*GREEKCAPITALLETTEROMEGAWITHTONOS*/
- /* 153 */ 178,/*SUPERSCRIPTTWO*/
- /* 154 */ 179,/*SUPERSCRIPTTHREE*/
- /* 155 */ 940,/*GREEKSMALLLETTERALPHAWITHTONOS*/
- /* 156 */ 163,/*POUNDSIGN*/
- /* 157 */ 941,/*GREEKSMALLLETTEREPSILONWITHTONOS*/
- /* 158 */ 942,/*GREEKSMALLLETTERETAWITHTONOS*/
- /* 159 */ 943,/*GREEKSMALLLETTERIOTAWITHTONOS*/
- /* 160 */ 970,/*GREEKSMALLLETTERIOTAWITHDIALYTIKA*/
- /* 161 */ 912,/*GREEKSMALLLETTERIOTAWITHDIALYTIKAANDTONOS*/
- /* 162 */ 972,/*GREEKSMALLLETTEROMICRONWITHTONOS*/
- /* 163 */ 973,/*GREEKSMALLLETTERUPSILONWITHTONOS*/
- /* 164 */ 913,/*GREEKCAPITALLETTERALPHA*/
- /* 165 */ 914,/*GREEKCAPITALLETTERBETA*/
- /* 166 */ 915,/*GREEKCAPITALLETTERGAMMA*/
- /* 167 */ 916,/*GREEKCAPITALLETTERDELTA*/
- /* 168 */ 917,/*GREEKCAPITALLETTEREPSILON*/
- /* 169 */ 918,/*GREEKCAPITALLETTERZETA*/
- /* 170 */ 919,/*GREEKCAPITALLETTERETA*/
- /* 171 */ 189,/*VULGARFRACTIONONEHALF*/
- /* 172 */ 920,/*GREEKCAPITALLETTERTHETA*/
- /* 173 */ 921,/*GREEKCAPITALLETTERIOTA*/
- /* 174 */ 171,/*LEFT-POINTINGDOUBLEANGLEQUOTATIONMARK*/
- /* 175 */ 187,/*RIGHT-POINTINGDOUBLEANGLEQUOTATIONMARK*/
- /* 176 */ 9617,/*LIGHTSHADE*/
- /* 177 */ 9618,/*MEDIUMSHADE*/
- /* 178 */ 9619,/*DARKSHADE*/
- /* 179 */ 9474,/*BOXDRAWINGSLIGHTVERTICAL*/
- /* 180 */ 9508,/*BOXDRAWINGSLIGHTVERTICALANDLEFT*/
- /* 181 */ 922,/*GREEKCAPITALLETTERKAPPA*/
- /* 182 */ 923,/*GREEKCAPITALLETTERLAMDA*/
- /* 183 */ 924,/*GREEKCAPITALLETTERMU*/
- /* 184 */ 925,/*GREEKCAPITALLETTERNU*/
- /* 185 */ 9571,/*BOXDRAWINGSDOUBLEVERTICALANDLEFT*/
- /* 186 */ 9553,/*BOXDRAWINGSDOUBLEVERTICAL*/
- /* 187 */ 9559,/*BOXDRAWINGSDOUBLEDOWNANDLEFT*/
- /* 188 */ 9565,/*BOXDRAWINGSDOUBLEUPANDLEFT*/
- /* 189 */ 926,/*GREEKCAPITALLETTERXI*/
- /* 190 */ 927,/*GREEKCAPITALLETTEROMICRON*/
- /* 191 */ 9488,/*BOXDRAWINGSLIGHTDOWNANDLEFT*/
- /* 192 */ 9492,/*BOXDRAWINGSLIGHTUPANDRIGHT*/
- /* 193 */ 9524,/*BOXDRAWINGSLIGHTUPANDHORIZONTAL*/
- /* 194 */ 9516,/*BOXDRAWINGSLIGHTDOWNANDHORIZONTAL*/
- /* 195 */ 9500,/*BOXDRAWINGSLIGHTVERTICALANDRIGHT*/
- /* 196 */ 9472,/*BOXDRAWINGSLIGHTHORIZONTAL*/
- /* 197 */ 9532,/*BOXDRAWINGSLIGHTVERTICALANDHORIZONTAL*/
- /* 198 */ 928,/*GREEKCAPITALLETTERPI*/
- /* 199 */ 929,/*GREEKCAPITALLETTERRHO*/
- /* 200 */ 9562,/*BOXDRAWINGSDOUBLEUPANDRIGHT*/
- /* 201 */ 9556,/*BOXDRAWINGSDOUBLEDOWNANDRIGHT*/
- /* 202 */ 9577,/*BOXDRAWINGSDOUBLEUPANDHORIZONTAL*/
- /* 203 */ 9574,/*BOXDRAWINGSDOUBLEDOWNANDHORIZONTAL*/
- /* 204 */ 9568,/*BOXDRAWINGSDOUBLEVERTICALANDRIGHT*/
- /* 205 */ 9552,/*BOXDRAWINGSDOUBLEHORIZONTAL*/
- /* 206 */ 9580,/*BOXDRAWINGSDOUBLEVERTICALANDHORIZONTAL*/
- /* 207 */ 931,/*GREEKCAPITALLETTERSIGMA*/
- /* 208 */ 932,/*GREEKCAPITALLETTERTAU*/
- /* 209 */ 933,/*GREEKCAPITALLETTERUPSILON*/
- /* 210 */ 934,/*GREEKCAPITALLETTERPHI*/
- /* 211 */ 935,/*GREEKCAPITALLETTERCHI*/
- /* 212 */ 936,/*GREEKCAPITALLETTERPSI*/
- /* 213 */ 937,/*GREEKCAPITALLETTEROMEGA*/
- /* 214 */ 945,/*GREEKSMALLLETTERALPHA*/
- /* 215 */ 946,/*GREEKSMALLLETTERBETA*/
- /* 216 */ 947,/*GREEKSMALLLETTERGAMMA*/
- /* 217 */ 9496,/*BOXDRAWINGSLIGHTUPANDLEFT*/
- /* 218 */ 9484,/*BOXDRAWINGSLIGHTDOWNANDRIGHT*/
- /* 219 */ 9608,/*FULLBLOCK*/
- /* 220 */ 9604,/*LOWERHALFBLOCK*/
- /* 221 */ 948,/*GREEKSMALLLETTERDELTA*/
- /* 222 */ 949,/*GREEKSMALLLETTEREPSILON*/
- /* 223 */ 9600,/*UPPERHALFBLOCK*/
- /* 224 */ 950,/*GREEKSMALLLETTERZETA*/
- /* 225 */ 951,/*GREEKSMALLLETTERETA*/
- /* 226 */ 952,/*GREEKSMALLLETTERTHETA*/
- /* 227 */ 953,/*GREEKSMALLLETTERIOTA*/
- /* 228 */ 954,/*GREEKSMALLLETTERKAPPA*/
- /* 229 */ 955,/*GREEKSMALLLETTERLAMDA*/
- /* 230 */ 956,/*GREEKSMALLLETTERMU*/
- /* 231 */ 957,/*GREEKSMALLLETTERNU*/
- /* 232 */ 958,/*GREEKSMALLLETTERXI*/
- /* 233 */ 959,/*GREEKSMALLLETTEROMICRON*/
- /* 234 */ 960,/*GREEKSMALLLETTERPI*/
- /* 235 */ 961,/*GREEKSMALLLETTERRHO*/
- /* 236 */ 963,/*GREEKSMALLLETTERSIGMA*/
- /* 237 */ 962,/*GREEKSMALLLETTERFINALSIGMA*/
- /* 238 */ 964,/*GREEKSMALLLETTERTAU*/
- /* 239 */ 900,/*GREEKTONOS*/
- /* 240 */ 173,/*SOFTHYPHEN*/
- /* 241 */ 177,/*PLUS-MINUSSIGN*/
- /* 242 */ 965,/*GREEKSMALLLETTERUPSILON*/
- /* 243 */ 966,/*GREEKSMALLLETTERPHI*/
- /* 244 */ 967,/*GREEKSMALLLETTERCHI*/
- /* 245 */ 167,/*SECTIONSIGN*/
- /* 246 */ 968,/*GREEKSMALLLETTERPSI*/
- /* 247 */ 901,/*GREEKDIALYTIKATONOS*/
- /* 248 */ 176,/*DEGREESIGN*/
- /* 249 */ 168,/*DIAERESIS*/
- /* 250 */ 969,/*GREEKSMALLLETTEROMEGA*/
- /* 251 */ 971,/*GREEKSMALLLETTERUPSILONWITHDIALYTIKA*/
- /* 252 */ 944,/*GREEKSMALLLETTERUPSILONWITHDIALYTIKAANDTONOS*/
- /* 253 */ 974,/*GREEKSMALLLETTEROMEGAWITHTONOS*/
- /* 254 */ 9632,/*BLACKSQUARE*/
- /* 255 */ 160/*NO-BREAKSPACE*/
+static convert_t decmcs[] = {
+	{ 0, 0 },
+	{ 1, 1 },
+	{ 2, 2 },
+	{ 3, 3 },
+	{ 4, 4 },
+	{ 5, 5 },
+	{ 6, 6 },
+	{ 7, 7 },
+	{ 8, 8 },
+	{ 9, 9 },
+	{ 10, 10 },
+	{ 11, 11 },
+	{ 12, 12 },
+	{ 13, 13 },
+	{ 14, 14 },
+	{ 15, 15 },
+	{ 16, 16 },
+	{ 17, 17 },
+	{ 18, 18 },
+	{ 19, 19 },
+	{ 20, 20 },
+	{ 21, 21 },
+	{ 22, 22 },
+	{ 23, 23 },
+	{ 24, 24 },
+	{ 25, 25 },
+	{ 26, 26 },
+	{ 27, 27 },
+	{ 28, 28 },
+	{ 29, 29 },
+	{ 30, 30 },
+	{ 31, 31 },
+	{ 32, 32 },
+	{ 33, 33 },
+	{ 34, 34 },
+	{ 35, 35 },
+	{ 36, 36 },
+	{ 37, 37 },
+	{ 38, 38 },
+	{ 39, 39 },
+	{ 40, 40 },
+	{ 41, 41 },
+	{ 42, 42 },
+	{ 43, 43 },
+	{ 44, 44 },
+	{ 45, 45 },
+	{ 46, 46 },
+	{ 47, 47 },
+	{ 48, 48 },
+	{ 49, 49 },
+	{ 50, 50 },
+	{ 51, 51 },
+	{ 52, 52 },
+	{ 53, 53 },
+	{ 54, 54 },
+	{ 55, 55 },
+	{ 56, 56 },
+	{ 57, 57 },
+	{ 58, 58 },
+	{ 59, 59 },
+	{ 60, 60 },
+	{ 61, 61 },
+	{ 62, 62 },
+	{ 63, 63 },
+	{ 64, 64 },
+	{ 65, 65 },
+	{ 66, 66 },
+	{ 67, 67 },
+	{ 68, 68 },
+	{ 69, 69 },
+	{ 70, 70 },
+	{ 71, 71 },
+	{ 72, 72 },
+	{ 73, 73 },
+	{ 74, 74 },
+	{ 75, 75 },
+	{ 76, 76 },
+	{ 77, 77 },
+	{ 78, 78 },
+	{ 79, 79 },
+	{ 80, 80 },
+	{ 81, 81 },
+	{ 82, 82 },
+	{ 83, 83 },
+	{ 84, 84 },
+	{ 85, 85 },
+	{ 86, 86 },
+	{ 87, 87 },
+	{ 88, 88 },
+	{ 89, 89 },
+	{ 90, 90 },
+	{ 91, 91 },
+	{ 92, 92 },
+	{ 93, 93 },
+	{ 94, 94 },
+	{ 95, 95 },
+	{ 96, 96 },
+	{ 97, 97 },
+	{ 98, 98 },
+	{ 99, 99 },
+	{ 100, 100 },
+	{ 101, 101 },
+	{ 102, 102 },
+	{ 103, 103 },
+	{ 104, 104 },
+	{ 105, 105 },
+	{ 106, 106 },
+	{ 107, 107 },
+	{ 108, 108 },
+	{ 109, 109 },
+	{ 110, 110 },
+	{ 111, 111 },
+	{ 112, 112 },
+	{ 113, 113 },
+	{ 114, 114 },
+	{ 115, 115 },
+	{ 116, 116 },
+	{ 117, 117 },
+	{ 118, 118 },
+	{ 119, 119 },
+	{ 120, 120 },
+	{ 121, 121 },
+	{ 122, 122 },
+	{ 123, 123 },
+	{ 124, 124 },
+	{ 125, 125 },
+	{ 126, 126 },
+	{ 127, 127 },
+	{ 128, 128 },
+	{ 129, 129 },
+	{ 130, 130 },
+	{ 131, 131 },
+	{ 132, 132 },
+	{ 133, 133 },
+	{ 134, 134 },
+	{ 135, 135 },
+	{ 136, 136 },
+	{ 137, 137 },
+	{ 138, 138 },
+	{ 139, 139 },
+	{ 140, 140 },
+	{ 141, 141 },
+	{ 142, 142 },
+	{ 143, 143 },
+	{ 144, 144 },
+	{ 145, 145 },
+	{ 146, 146 },
+	{ 147, 147 },
+	{ 148, 148 },
+	{ 149, 149 },
+	{ 150, 150 },
+	{ 151, 151 },
+	{ 152, 152 },
+	{ 153, 153 },
+	{ 154, 154 },
+	{ 155, 155 },
+	{ 156, 156 },
+	{ 157, 157 },
+	{ 158, 158 },
+	{ 159, 159 },
+	{ 160, 160 },
+	{ 161, 161 },
+	{ 162, 162 },
+	{ 163, 163 },
+	{ 164, 164 },
+	{ 165, 165 },
+	{ 166, 166 },
+	{ 167, 167 },
+	{ 168, 164 },
+	{ 169, 169 },
+	{ 170, 170 },
+	{ 171, 171 },
+	{ 172, 172 },
+	{ 173, 173 },
+	{ 174, 174 },
+	{ 175, 175 },
+	{ 176, 176 },
+	{ 177, 177 },
+	{ 178, 178 },
+	{ 179, 179 },
+	{ 180, 180 },
+	{ 181, 181 },
+	{ 182, 182 },
+	{ 183, 183 },
+	{ 184, 184 },
+	{ 185, 185 },
+	{ 186, 186 },
+	{ 187, 187 },
+	{ 188, 188 },
+	{ 189, 189 },
+	{ 190, 190 },
+	{ 191, 191 },
+	{ 192, 192 },
+	{ 193, 193 },
+	{ 194, 194 },
+	{ 195, 195 },
+	{ 196, 196 },
+	{ 197, 197 },
+	{ 198, 198 },
+	{ 199, 199 },
+	{ 200, 200 },
+	{ 201, 201 },
+	{ 202, 202 },
+	{ 203, 203 },
+	{ 204, 204 },
+	{ 205, 205 },
+	{ 206, 206 },
+	{ 207, 207 },
+	{ 208, 208 },
+	{ 209, 209 },
+	{ 210, 210 },
+	{ 211, 211 },
+	{ 212, 212 },
+	{ 213, 213 },
+	{ 214, 214 },
+	{ 215, 338 },
+	{ 216, 216 },
+	{ 217, 217 },
+	{ 218, 218 },
+	{ 219, 219 },
+	{ 220, 220 },
+	{ 221, 376 },
+	{ 222, 222 },
+	{ 223, 223 },
+	{ 224, 224 },
+	{ 225, 225 },
+	{ 226, 226 },
+	{ 227, 227 },
+	{ 228, 228 },
+	{ 229, 229 },
+	{ 230, 230 },
+	{ 231, 231 },
+	{ 232, 232 },
+	{ 233, 233 },
+	{ 234, 234 },
+	{ 235, 235 },
+	{ 236, 236 },
+	{ 237, 237 },
+	{ 238, 238 },
+	{ 239, 239 },
+	{ 240, 240 },
+	{ 241, 241 },
+	{ 242, 242 },
+	{ 243, 243 },
+	{ 244, 244 },
+	{ 245, 245 },
+	{ 246, 246 },
+	{ 247, 339 },
+	{ 248, 248 },
+	{ 249, 249 },
+	{ 250, 250 },
+	{ 251, 251 },
+	{ 252, 252 },
+	{ 253, 255 },
+	{ 254, 254 },
+	{ 255, 255 },
+	{ 34, 8220 },
+	{ 34, 8221 },
+	{ 39, 8216 },
+	{ 39, 8217 },
+	{ 45, 8211 },
+	{ 45, 8212 },
+	{ 32, 8194 },
+	{ 32, 8195 },
+	{ 32, 8201 },
+	{ 65, 256 },
+	{ 65, 258 },
+	{ 65, 260 },
+	{ 65, 461 },
+	{ 97, 257 },
+	{ 97, 259 },
+	{ 97, 261 },
+	{ 97, 462 },
+	{ 67, 262 },
+	{ 67, 264 },
+	{ 67, 266 },
+	{ 67, 268 },
+	{ 99, 263 },
+	{ 99, 265 },
+	{ 99, 267 },
+	{ 99, 269 },
+	{ 68, 270 },
+	{ 100, 271 },
+	{ 69, 274 },
+	{ 69, 276 },
+	{ 69, 278 },
+	{ 69, 280 },
+	{ 69, 282 },
+	{ 101, 275 },
+	{ 101, 277 },
+	{ 101, 279 },
+	{ 101, 281 },
+	{ 101, 283 },
+	{ 71, 284 },
+	{ 71, 286 },
+	{ 71, 288 },
+	{ 71, 290 },
+	{ 71, 486 },
+	{ 71, 500 },
+	{ 103, 285 },
+	{ 103, 287 },
+	{ 103, 289 },
+	{ 103, 291 },
+	{ 103, 487 },
+	{ 103, 501 },
+	{ 72, 292 },
+	{ 104, 293 },
+	{ 73, 296 },
+	{ 73, 298 },
+	{ 73, 300 },
+	{ 73, 302 },
+	{ 73, 304 },
+	{ 73, 463 },
+	{ 105, 297 },
+	{ 105, 299 },
+	{ 105, 301 },
+	{ 105, 303 },
+	{ 105, 305 },
+	{ 105, 464 },
+	{ 74, 308 },
+	{ 106, 309 },
+	{ 75, 310 },
+	{ 75, 488 },
+	{ 107, 311 },
+	{ 107, 489 },
+	{ 76, 313 },
+	{ 76, 315 },
+	{ 76, 317 },
+	{ 76, 319 },
+	{ 76, 321 },
+	{ 108, 314 },
+	{ 108, 316 },
+	{ 108, 318 },
+	{ 108, 320 },
+	{ 108, 322 },
+	{ 77, 323 },
+	{ 77, 325 },
+	{ 77, 327 },
+	{ 109, 324 },
+	{ 109, 326 },
+	{ 109, 328 },
+	{ 109, 329 },
+	{ 78, 332 },
+	{ 78, 334 },
+	{ 78, 336 },
+	{ 78, 465 },
+	{ 78, 490 },
+	{ 110, 333 },
+	{ 110, 335 },
+	{ 110, 337 },
+	{ 110, 466 },
+	{ 110, 491 },
+	{ 82, 340 },
+	{ 82, 342 },
+	{ 82, 344 },
+	{ 114, 341 },
+	{ 114, 343 },
+	{ 114, 345 },
+	{ 83, 346 },
+	{ 83, 348 },
+	{ 83, 350 },
+	{ 83, 352 },
+	{ 115, 347 },
+	{ 115, 349 },
+	{ 115, 351 },
+	{ 115, 353 },
+	{ 84, 354 },
+	{ 84, 356 },
+	{ 116, 355 },
+	{ 116, 357 },
+	{ 85, 360 },
+	{ 85, 362 },
+	{ 85, 364 },
+	{ 85, 366 },
+	{ 85, 368 },
+	{ 85, 370 },
+	{ 85, 467 },
+	{ 117, 361 },
+	{ 117, 363 },
+	{ 117, 365 },
+	{ 117, 367 },
+	{ 117, 369 },
+	{ 117, 371 },
+	{ 117, 468 },
+	{ 87, 372 },
+	{ 119, 373 },
+	{ 89, 221 },
+	{ 89, 374 },
+	{ 121, 253 },
+	{ 121, 375 },
+	{ 90, 377 },
+	{ 90, 379 },
+	{ 90, 381 },
+	{ 122, 378 },
+	{ 122, 380 },
+	{ 122, 382 },
 };
-charconvert cp874[] = {
- /* 0 */ 0,/*<tdbgcolor="C0C0C0"><fontface="Arial"color="000000"><b>ISO/IEC10646-1:2000CharacterName</b></font>*/
- 1,
- 2,
- 3,
- 4,
- 5,
- 6,
- 7,
- 8,
- 9,
- 10,
- 11,
- 12,
- 13,
- 14,
- 15,
- 16,
- 17,
- 18,
- 19,
- 20,
- 21,
- 22,
- 23,
- 24,
- 25,
- 26,
- 27,
- 28,
- 29,
- 30,
- 31,
- /* 32 */ 32,/*SPACE*/
- /* 33 */ 33,/*EXCLAMATIONMARK*/
- /* 34 */ 34,/*QUOTATIONMARK*/
- /* 35 */ 35,/*NUMBERSIGN*/
- /* 36 */ 36,/*DOLLARSIGN*/
- /* 37 */ 37,/*PERCENTSIGN*/
- /* 38 */ 38,/*AMPERSAND*/
- /* 39 */ 39,/*APOSTROPHE*/
- /* 40 */ 40,/*LEFTPARENTHESIS*/
- /* 41 */ 41,/*RIGHTPARENTHESIS*/
- /* 42 */ 42,/*ASTERISK*/
- /* 43 */ 43,/*PLUSSIGN*/
- /* 44 */ 44,/*COMMA*/
- /* 45 */ 45,/*HYPHEN-MINUS*/
- /* 46 */ 46,/*FULLSTOP*/
- /* 47 */ 47,/*SOLIDUS*/
- /* 48 */ 48,/*DIGITZERO*/
- /* 49 */ 49,/*DIGITONE*/
- /* 50 */ 50,/*DIGITTWO*/
- /* 51 */ 51,/*DIGITTHREE*/
- /* 52 */ 52,/*DIGITFOUR*/
- /* 53 */ 53,/*DIGITFIVE*/
- /* 54 */ 54,/*DIGITSIX*/
- /* 55 */ 55,/*DIGITSEVEN*/
- /* 56 */ 56,/*DIGITEIGHT*/
- /* 57 */ 57,/*DIGITNINE*/
- /* 58 */ 58,/*COLON*/
- /* 59 */ 59,/*SEMICOLON*/
- /* 60 */ 60,/*LESS-THANSIGN*/
- /* 61 */ 61,/*EQUALSSIGN*/
- /* 62 */ 62,/*GREATER-THANSIGN*/
- /* 63 */ 63,/*QUESTIONMARK*/
- /* 64 */ 64,/*COMMERCIALAT*/
- /* 65 */ 65,/*LATINCAPITALLETTERA*/
- /* 66 */ 66,/*LATINCAPITALLETTERB*/
- /* 67 */ 67,/*LATINCAPITALLETTERC*/
- /* 68 */ 68,/*LATINCAPITALLETTERD*/
- /* 69 */ 69,/*LATINCAPITALLETTERE*/
- /* 70 */ 70,/*LATINCAPITALLETTERF*/
- /* 71 */ 71,/*LATINCAPITALLETTERG*/
- /* 72 */ 72,/*LATINCAPITALLETTERH*/
- /* 73 */ 73,/*LATINCAPITALLETTERI*/
- /* 74 */ 74,/*LATINCAPITALLETTERJ*/
- /* 75 */ 75,/*LATINCAPITALLETTERK*/
- /* 76 */ 76,/*LATINCAPITALLETTERL*/
- /* 77 */ 77,/*LATINCAPITALLETTERM*/
- /* 78 */ 78,/*LATINCAPITALLETTERN*/
- /* 79 */ 79,/*LATINCAPITALLETTERO*/
- /* 80 */ 80,/*LATINCAPITALLETTERP*/
- /* 81 */ 81,/*LATINCAPITALLETTERQ*/
- /* 82 */ 82,/*LATINCAPITALLETTERR*/
- /* 83 */ 83,/*LATINCAPITALLETTERS*/
- /* 84 */ 84,/*LATINCAPITALLETTERT*/
- /* 85 */ 85,/*LATINCAPITALLETTERU*/
- /* 86 */ 86,/*LATINCAPITALLETTERV*/
- /* 87 */ 87,/*LATINCAPITALLETTERW*/
- /* 88 */ 88,/*LATINCAPITALLETTERX*/
- /* 89 */ 89,/*LATINCAPITALLETTERY*/
- /* 90 */ 90,/*LATINCAPITALLETTERZ*/
- /* 91 */ 91,/*LEFTSQUAREBRACKET*/
- /* 92 */ 92,/*REVERSESOLIDUS*/
- /* 93 */ 93,/*RIGHTSQUAREBRACKET*/
- /* 94 */ 94,/*CIRCUMFLEXACCENT*/
- /* 95 */ 95,/*LOWLINE*/
- /* 96 */ 96,/*GRAVEACCENT*/
- /* 97 */ 97,/*LATINSMALLLETTERA*/
- /* 98 */ 98,/*LATINSMALLLETTERB*/
- /* 99 */ 99,/*LATINSMALLLETTERC*/
- /* 100 */ 100,/*LATINSMALLLETTERD*/
- /* 101 */ 101,/*LATINSMALLLETTERE*/
- /* 102 */ 102,/*LATINSMALLLETTERF*/
- /* 103 */ 103,/*LATINSMALLLETTERG*/
- /* 104 */ 104,/*LATINSMALLLETTERH*/
- /* 105 */ 105,/*LATINSMALLLETTERI*/
- /* 106 */ 106,/*LATINSMALLLETTERJ*/
- /* 107 */ 107,/*LATINSMALLLETTERK*/
- /* 108 */ 108,/*LATINSMALLLETTERL*/
- /* 109 */ 109,/*LATINSMALLLETTERM*/
- /* 110 */ 110,/*LATINSMALLLETTERN*/
- /* 111 */ 111,/*LATINSMALLLETTERO*/
- /* 112 */ 112,/*LATINSMALLLETTERP*/
- /* 113 */ 113,/*LATINSMALLLETTERQ*/
- /* 114 */ 114,/*LATINSMALLLETTERR*/
- /* 115 */ 115,/*LATINSMALLLETTERS*/
- /* 116 */ 116,/*LATINSMALLLETTERT*/
- /* 117 */ 117,/*LATINSMALLLETTERU*/
- /* 118 */ 118,/*LATINSMALLLETTERV*/
- /* 119 */ 119,/*LATINSMALLLETTERW*/
- /* 120 */ 120,/*LATINSMALLLETTERX*/
- /* 121 */ 121,/*LATINSMALLLETTERY*/
- /* 122 */ 122,/*LATINSMALLLETTERZ*/
- /* 123 */ 123,/*LEFTCURLYBRACKET*/
- /* 124 */ 124,/*VERTICALLINE*/
- /* 125 */ 125,/*RIGHTCURLYBRACKET*/
- /* 126 */ 126,/*TILDE*/
- 127,
- /* 128 */ 8364,/*EUROSIGN*/
- 129,
- 130,
- 131,
- 132,
- /* 133 */ 8230,/*HORIZONTALELLIPSIS*/
- 134,
- 135,
- 136,
- 137,
- 138,
- 139,
- 140,
- 141,
- 142,
- 143,
- 144,
- /* 145 */ 8216,/*LEFTSINGLEQUOTATIONMARK*/
- /* 146 */ 8217,/*RIGHTSINGLEQUOTATIONMARK*/
- /* 147 */ 8220,/*LEFTDOUBLEQUOTATIONMARK*/
- /* 148 */ 8221,/*RIGHTDOUBLEQUOTATIONMARK*/
- /* 149 */ 8226,/*BULLET*/
- /* 150 */ 8211,/*ENDASH*/
- /* 151 */ 8212,/*EMDASH*/
- 152,
- 153,
- 154,
- 155,
- 156,
- 157,
- 158,
- 159,
- /* 160 */ 160,/*NO-BREAKSPACE*/
- /* 161 */ 3585,/*THAICHARACTERKOKAI*/
- /* 162 */ 3586,/*THAICHARACTERKHOKHAI*/
- /* 163 */ 3587,/*THAICHARACTERKHOKHUAT*/
- /* 164 */ 3588,/*THAICHARACTERKHOKHWAI*/
- /* 165 */ 3589,/*THAICHARACTERKHOKHON*/
- /* 166 */ 3590,/*THAICHARACTERKHORAKHANG*/
- /* 167 */ 3591,/*THAICHARACTERNGONGU*/
- /* 168 */ 3592,/*THAICHARACTERCHOCHAN*/
- /* 169 */ 3593,/*THAICHARACTERCHOCHING*/
- /* 170 */ 3594,/*THAICHARACTERCHOCHANG*/
- /* 171 */ 3595,/*THAICHARACTERSOSO*/
- /* 172 */ 3596,/*THAICHARACTERCHOCHOE*/
- /* 173 */ 3597,/*THAICHARACTERYOYING*/
- /* 174 */ 3598,/*THAICHARACTERDOCHADA*/
- /* 175 */ 3599,/*THAICHARACTERTOPATAK*/
- /* 176 */ 3600,/*THAICHARACTERTHOTHAN*/
- /* 177 */ 3601,/*THAICHARACTERTHONANGMONTHO*/
- /* 178 */ 3602,/*THAICHARACTERTHOPHUTHAO*/
- /* 179 */ 3603,/*THAICHARACTERNONEN*/
- /* 180 */ 3604,/*THAICHARACTERDODEK*/
- /* 181 */ 3605,/*THAICHARACTERTOTAO*/
- /* 182 */ 3606,/*THAICHARACTERTHOTHUNG*/
- /* 183 */ 3607,/*THAICHARACTERTHOTHAHAN*/
- /* 184 */ 3608,/*THAICHARACTERTHOTHONG*/
- /* 185 */ 3609,/*THAICHARACTERNONU*/
- /* 186 */ 3610,/*THAICHARACTERBOBAIMAI*/
- /* 187 */ 3611,/*THAICHARACTERPOPLA*/
- /* 188 */ 3612,/*THAICHARACTERPHOPHUNG*/
- /* 189 */ 3613,/*THAICHARACTERFOFA*/
- /* 190 */ 3614,/*THAICHARACTERPHOPHAN*/
- /* 191 */ 3615,/*THAICHARACTERFOFAN*/
- /* 192 */ 3616,/*THAICHARACTERPHOSAMPHAO*/
- /* 193 */ 3617,/*THAICHARACTERMOMA*/
- /* 194 */ 3618,/*THAICHARACTERYOYAK*/
- /* 195 */ 3619,/*THAICHARACTERRORUA*/
- /* 196 */ 3620,/*THAICHARACTERRU*/
- /* 197 */ 3621,/*THAICHARACTERLOLING*/
- /* 198 */ 3622,/*THAICHARACTERLU*/
- /* 199 */ 3623,/*THAICHARACTERWOWAEN*/
- /* 200 */ 3624,/*THAICHARACTERSOSALA*/
- /* 201 */ 3625,/*THAICHARACTERSORUSI*/
- /* 202 */ 3626,/*THAICHARACTERSOSUA*/
- /* 203 */ 3627,/*THAICHARACTERHOHIP*/
- /* 204 */ 3628,/*THAICHARACTERLOCHULA*/
- /* 205 */ 3629,/*THAICHARACTEROANG*/
- /* 206 */ 3630,/*THAICHARACTERHONOKHUK*/
- /* 207 */ 3631,/*THAICHARACTERPAIYANNOI*/
- /* 208 */ 3632,/*THAICHARACTERSARAA*/
- /* 209 */ 3633,/*THAICHARACTERMAIHAN-AKAT*/
- /* 210 */ 3634,/*THAICHARACTERSARAAA*/
- /* 211 */ 3635,/*THAICHARACTERSARAAM*/
- /* 212 */ 3636,/*THAICHARACTERSARAI*/
- /* 213 */ 3637,/*THAICHARACTERSARAII*/
- /* 214 */ 3638,/*THAICHARACTERSARAUE*/
- /* 215 */ 3639,/*THAICHARACTERSARAUEE*/
- /* 216 */ 3640,/*THAICHARACTERSARAU*/
- /* 217 */ 3641,/*THAICHARACTERSARAUU*/
- /* 218 */ 3642,/*THAICHARACTERPHINTHU*/
- 219,
- 220,
- 221,
- 222,
- /* 223 */ 3647,/*THAICURRENCYSYMBOLBAHT*/
- /* 224 */ 3648,/*THAICHARACTERSARAE*/
- /* 225 */ 3649,/*THAICHARACTERSARAAE*/
- /* 226 */ 3650,/*THAICHARACTERSARAO*/
- /* 227 */ 3651,/*THAICHARACTERSARAAIMAIMUAN*/
- /* 228 */ 3652,/*THAICHARACTERSARAAIMAIMALAI*/
- /* 229 */ 3653,/*THAICHARACTERLAKKHANGYAO*/
- /* 230 */ 3654,/*THAICHARACTERMAIYAMOK*/
- /* 231 */ 3655,/*THAICHARACTERMAITAIKHU*/
- /* 232 */ 3656,/*THAICHARACTERMAIEK*/
- /* 233 */ 3657,/*THAICHARACTERMAITHO*/
- /* 234 */ 3658,/*THAICHARACTERMAITRI*/
- /* 235 */ 3659,/*THAICHARACTERMAICHATTAWA*/
- /* 236 */ 3660,/*THAICHARACTERTHANTHAKHAT*/
- /* 237 */ 3661,/*THAICHARACTERNIKHAHIT*/
- /* 238 */ 3662,/*THAICHARACTERYAMAKKAN*/
- /* 239 */ 3663,/*THAICHARACTERFONGMAN*/
- /* 240 */ 3664,/*THAIDIGITZERO*/
- /* 241 */ 3665,/*THAIDIGITONE*/
- /* 242 */ 3666,/*THAIDIGITTWO*/
- /* 243 */ 3667,/*THAIDIGITTHREE*/
- /* 244 */ 3668,/*THAIDIGITFOUR*/
- /* 245 */ 3669,/*THAIDIGITFIVE*/
- /* 246 */ 3670,/*THAIDIGITSIX*/
- /* 247 */ 3671,/*THAIDIGITSEVEN*/
- /* 248 */ 3672,/*THAIDIGITEIGHT*/
- /* 249 */ 3673,/*THAIDIGITNINE*/
- /* 250 */ 3674,/*THAICHARACTERANGKHANKHU*/
- /* 251 */ 3675,/*THAICHARACTERKHOMUT*/
- 252,
- 253,
- 254,
- 255
+static convert_t ebc037[] = {
+	{ 0, 0 },
+	{ 1, 1 },
+	{ 2, 2 },
+	{ 3, 3 },
+	{ 4, 4 },
+	{ 5, 5 },
+	{ 6, 6 },
+	{ 7, 7 },
+	{ 8, 8 },
+	{ 9, 9 },
+	{ 10, 10 },
+	{ 11, 11 },
+	{ 12, 12 },
+	{ 13, 13 },
+	{ 14, 14 },
+	{ 15, 15 },
+	{ 16, 16 },
+	{ 17, 17 },
+	{ 18, 18 },
+	{ 19, 19 },
+	{ 20, 20 },
+	{ 21, 21 },
+	{ 22, 22 },
+	{ 23, 23 },
+	{ 24, 24 },
+	{ 25, 25 },
+	{ 26, 26 },
+	{ 27, 27 },
+	{ 28, 28 },
+	{ 29, 29 },
+	{ 30, 30 },
+	{ 31, 31 },
+	{ 32, 32 },
+	{ 33, 33 },
+	{ 34, 34 },
+	{ 35, 35 },
+	{ 36, 36 },
+	{ 37, 37 },
+	{ 38, 38 },
+	{ 39, 39 },
+	{ 40, 40 },
+	{ 41, 41 },
+	{ 42, 42 },
+	{ 43, 43 },
+	{ 44, 44 },
+	{ 45, 45 },
+	{ 46, 46 },
+	{ 47, 47 },
+	{ 48, 48 },
+	{ 49, 49 },
+	{ 50, 50 },
+	{ 51, 51 },
+	{ 52, 52 },
+	{ 53, 53 },
+	{ 54, 54 },
+	{ 55, 55 },
+	{ 56, 56 },
+	{ 57, 57 },
+	{ 58, 58 },
+	{ 59, 59 },
+	{ 60, 60 },
+	{ 61, 61 },
+	{ 62, 62 },
+	{ 63, 63 },
+	{ 64, 32 },
+	{ 65, 160 },
+	{ 66, 226 },
+	{ 67, 228 },
+	{ 68, 224 },
+	{ 69, 225 },
+	{ 70, 227 },
+	{ 71, 229 },
+	{ 72, 231 },
+	{ 73, 241 },
+	{ 74, 162 },
+	{ 75, 46 },
+	{ 76, 60 },
+	{ 77, 40 },
+	{ 78, 43 },
+	{ 79, 124 },
+	{ 80, 38 },
+	{ 81, 233 },
+	{ 82, 234 },
+	{ 83, 235 },
+	{ 84, 232 },
+	{ 85, 237 },
+	{ 86, 238 },
+	{ 87, 239 },
+	{ 88, 236 },
+	{ 89, 223 },
+	{ 90, 33 },
+	{ 91, 36 },
+	{ 92, 42 },
+	{ 93, 41 },
+	{ 94, 59 },
+	{ 95, 172 },
+	{ 96, 45 },
+	{ 97, 47 },
+	{ 98, 194 },
+	{ 99, 196 },
+	{ 100, 192 },
+	{ 101, 193 },
+	{ 102, 195 },
+	{ 103, 197 },
+	{ 104, 199 },
+	{ 105, 209 },
+	{ 106, 166 },
+	{ 107, 44 },
+	{ 108, 37 },
+	{ 109, 95 },
+	{ 110, 62 },
+	{ 111, 63 },
+	{ 112, 248 },
+	{ 113, 201 },
+	{ 114, 202 },
+	{ 115, 203 },
+	{ 116, 200 },
+	{ 117, 205 },
+	{ 118, 206 },
+	{ 119, 207 },
+	{ 120, 204 },
+	{ 121, 96 },
+	{ 122, 58 },
+	{ 123, 35 },
+	{ 124, 64 },
+	{ 125, 39 },
+	{ 126, 61 },
+	{ 127, 34 },
+	{ 128, 216 },
+	{ 129, 97 },
+	{ 130, 98 },
+	{ 131, 99 },
+	{ 132, 100 },
+	{ 133, 101 },
+	{ 134, 102 },
+	{ 135, 103 },
+	{ 136, 104 },
+	{ 137, 105 },
+	{ 138, 171 },
+	{ 139, 187 },
+	{ 140, 240 },
+	{ 141, 253 },
+	{ 142, 254 },
+	{ 143, 177 },
+	{ 144, 176 },
+	{ 145, 106 },
+	{ 146, 107 },
+	{ 147, 108 },
+	{ 148, 109 },
+	{ 149, 110 },
+	{ 150, 111 },
+	{ 151, 112 },
+	{ 152, 113 },
+	{ 153, 114 },
+	{ 154, 170 },
+	{ 155, 186 },
+	{ 156, 230 },
+	{ 157, 184 },
+	{ 158, 198 },
+	{ 159, 164 },
+	{ 160, 181 },
+	{ 161, 126 },
+	{ 162, 115 },
+	{ 163, 116 },
+	{ 164, 117 },
+	{ 165, 118 },
+	{ 166, 119 },
+	{ 167, 120 },
+	{ 168, 121 },
+	{ 169, 122 },
+	{ 170, 161 },
+	{ 171, 191 },
+	{ 172, 208 },
+	{ 173, 221 },
+	{ 174, 222 },
+	{ 175, 174 },
+	{ 176, 94 },
+	{ 177, 163 },
+	{ 178, 165 },
+	{ 179, 183 },
+	{ 180, 169 },
+	{ 181, 167 },
+	{ 182, 182 },
+	{ 183, 188 },
+	{ 184, 189 },
+	{ 185, 190 },
+	{ 186, 91 },
+	{ 187, 93 },
+	{ 188, 175 },
+	{ 189, 168 },
+	{ 190, 180 },
+	{ 191, 215 },
+	{ 192, 123 },
+	{ 193, 65 },
+	{ 194, 66 },
+	{ 195, 67 },
+	{ 196, 68 },
+	{ 197, 69 },
+	{ 198, 70 },
+	{ 199, 71 },
+	{ 200, 72 },
+	{ 201, 73 },
+	{ 202, 173 },
+	{ 203, 244 },
+	{ 204, 246 },
+	{ 205, 242 },
+	{ 206, 243 },
+	{ 207, 245 },
+	{ 208, 125 },
+	{ 209, 74 },
+	{ 210, 75 },
+	{ 211, 76 },
+	{ 212, 77 },
+	{ 213, 78 },
+	{ 214, 79 },
+	{ 215, 80 },
+	{ 216, 81 },
+	{ 217, 82 },
+	{ 218, 185 },
+	{ 219, 251 },
+	{ 220, 252 },
+	{ 221, 249 },
+	{ 222, 250 },
+	{ 223, 255 },
+	{ 224, 92 },
+	{ 225, 247 },
+	{ 226, 83 },
+	{ 227, 84 },
+	{ 228, 85 },
+	{ 229, 86 },
+	{ 230, 87 },
+	{ 231, 88 },
+	{ 232, 89 },
+	{ 233, 90 },
+	{ 234, 178 },
+	{ 235, 212 },
+	{ 236, 214 },
+	{ 237, 210 },
+	{ 238, 211 },
+	{ 239, 213 },
+	{ 240, 48 },
+	{ 241, 49 },
+	{ 242, 50 },
+	{ 243, 51 },
+	{ 244, 52 },
+	{ 245, 53 },
+	{ 246, 54 },
+	{ 247, 55 },
+	{ 248, 56 },
+	{ 249, 57 },
+	{ 250, 179 },
+	{ 251, 219 },
+	{ 252, 220 },
+	{ 253, 217 },
+	{ 254, 218 },
+	{ 255, 255 },
+	{ 34, 8220 },
+	{ 34, 8221 },
+	{ 39, 8216 },
+	{ 39, 8217 },
+	{ 45, 8211 },
+	{ 45, 8212 },
+	{ 32, 8194 },
+	{ 32, 8195 },
+	{ 32, 8201 },
+	{ 193, 256 },
+	{ 193, 258 },
+	{ 193, 260 },
+	{ 193, 461 },
+	{ 129, 257 },
+	{ 129, 259 },
+	{ 129, 261 },
+	{ 129, 462 },
+	{ 195, 262 },
+	{ 195, 264 },
+	{ 195, 266 },
+	{ 195, 268 },
+	{ 131, 263 },
+	{ 131, 265 },
+	{ 131, 267 },
+	{ 131, 269 },
+	{ 196, 270 },
+	{ 132, 271 },
+	{ 197, 274 },
+	{ 197, 276 },
+	{ 197, 278 },
+	{ 197, 280 },
+	{ 197, 282 },
+	{ 133, 275 },
+	{ 133, 277 },
+	{ 133, 279 },
+	{ 133, 281 },
+	{ 133, 283 },
+	{ 199, 284 },
+	{ 199, 286 },
+	{ 199, 288 },
+	{ 199, 290 },
+	{ 199, 486 },
+	{ 199, 500 },
+	{ 135, 285 },
+	{ 135, 287 },
+	{ 135, 289 },
+	{ 135, 291 },
+	{ 135, 487 },
+	{ 135, 501 },
+	{ 200, 292 },
+	{ 136, 293 },
+	{ 201, 296 },
+	{ 201, 298 },
+	{ 201, 300 },
+	{ 201, 302 },
+	{ 201, 304 },
+	{ 201, 463 },
+	{ 137, 297 },
+	{ 137, 299 },
+	{ 137, 301 },
+	{ 137, 303 },
+	{ 137, 305 },
+	{ 137, 464 },
+	{ 209, 308 },
+	{ 145, 309 },
+	{ 210, 310 },
+	{ 210, 488 },
+	{ 146, 311 },
+	{ 146, 489 },
+	{ 211, 313 },
+	{ 211, 315 },
+	{ 211, 317 },
+	{ 211, 319 },
+	{ 211, 321 },
+	{ 147, 314 },
+	{ 147, 316 },
+	{ 147, 318 },
+	{ 147, 320 },
+	{ 147, 322 },
+	{ 212, 323 },
+	{ 212, 325 },
+	{ 212, 327 },
+	{ 148, 324 },
+	{ 148, 326 },
+	{ 148, 328 },
+	{ 148, 329 },
+	{ 213, 332 },
+	{ 213, 334 },
+	{ 213, 336 },
+	{ 213, 465 },
+	{ 213, 490 },
+	{ 149, 333 },
+	{ 149, 335 },
+	{ 149, 337 },
+	{ 149, 466 },
+	{ 149, 491 },
+	{ 217, 340 },
+	{ 217, 342 },
+	{ 217, 344 },
+	{ 153, 341 },
+	{ 153, 343 },
+	{ 153, 345 },
+	{ 226, 346 },
+	{ 226, 348 },
+	{ 226, 350 },
+	{ 226, 352 },
+	{ 162, 347 },
+	{ 162, 349 },
+	{ 162, 351 },
+	{ 162, 353 },
+	{ 227, 354 },
+	{ 227, 356 },
+	{ 163, 355 },
+	{ 163, 357 },
+	{ 228, 360 },
+	{ 228, 362 },
+	{ 228, 364 },
+	{ 228, 366 },
+	{ 228, 368 },
+	{ 228, 370 },
+	{ 228, 467 },
+	{ 164, 361 },
+	{ 164, 363 },
+	{ 164, 365 },
+	{ 164, 367 },
+	{ 164, 369 },
+	{ 164, 371 },
+	{ 164, 468 },
+	{ 230, 372 },
+	{ 166, 373 },
+	{ 232, 374 },
+	{ 232, 376 },
+	{ 168, 375 },
+	{ 233, 377 },
+	{ 233, 379 },
+	{ 233, 381 },
+	{ 169, 378 },
+	{ 169, 380 },
+	{ 169, 382 },
 };
-charconvert cp895[] = {
- /* 0 */ 0,/*<tdbgcolor="C0C0C0"><fontface="Arial"color="000000"><b>ISO/IEC10646-1:2000CharacterName</b></font>*/
- 1,
- 2,
- 3,
- 4,
- 5,
- 6,
- 7,
- 8,
- 9,
- 10,
- 11,
- 12,
- 13,
- 14,
- 15,
- 16,
- 17,
- 18,
- 19,
- 20,
- 21,
- 22,
- 23,
- 24,
- 25,
- 26,
- 27,
- 28,
- 29,
- 30,
- 31,
- /* 32 */ 32,/*SPACE*/
- /* 33 */ 33,/*EXCLAMATIONMARK*/
- /* 34 */ 34,/*QUOTATIONMARK*/
- /* 35 */ 35,/*NUMBERSIGN*/
- /* 36 */ 36,/*DOLLARSIGN*/
- /* 37 */ 37,/*PERCENTSIGN*/
- /* 38 */ 38,/*AMPERSAND*/
- /* 39 */ 39,/*APOSTROPHE*/
- /* 40 */ 40,/*LEFTPARENTHESIS*/
- /* 41 */ 41,/*RIGHTPARENTHESIS*/
- /* 42 */ 42,/*ASTERISK*/
- /* 43 */ 43,/*PLUSSIGN*/
- /* 44 */ 44,/*COMMA*/
- /* 45 */ 45,/*HYPHEN-MINUS*/
- /* 46 */ 46,/*FULLSTOP*/
- /* 47 */ 47,/*SOLIDUS*/
- /* 48 */ 48,/*DIGITZERO*/
- /* 49 */ 49,/*DIGITONE*/
- /* 50 */ 50,/*DIGITTWO*/
- /* 51 */ 51,/*DIGITTHREE*/
- /* 52 */ 52,/*DIGITFOUR*/
- /* 53 */ 53,/*DIGITFIVE*/
- /* 54 */ 54,/*DIGITSIX*/
- /* 55 */ 55,/*DIGITSEVEN*/
- /* 56 */ 56,/*DIGITEIGHT*/
- /* 57 */ 57,/*DIGITNINE*/
- /* 58 */ 58,/*COLON*/
- /* 59 */ 59,/*SEMICOLON*/
- /* 60 */ 60,/*LESS-THANSIGN*/
- /* 61 */ 61,/*EQUALSSIGN*/
- /* 62 */ 62,/*GREATER-THANSIGN*/
- /* 63 */ 63,/*QUESTIONMARK*/
- /* 64 */ 64,/*COMMERCIALAT*/
- /* 65 */ 65,/*LATINCAPITALLETTERA*/
- /* 66 */ 66,/*LATINCAPITALLETTERB*/
- /* 67 */ 67,/*LATINCAPITALLETTERC*/
- /* 68 */ 68,/*LATINCAPITALLETTERD*/
- /* 69 */ 69,/*LATINCAPITALLETTERE*/
- /* 70 */ 70,/*LATINCAPITALLETTERF*/
- /* 71 */ 71,/*LATINCAPITALLETTERG*/
- /* 72 */ 72,/*LATINCAPITALLETTERH*/
- /* 73 */ 73,/*LATINCAPITALLETTERI*/
- /* 74 */ 74,/*LATINCAPITALLETTERJ*/
- /* 75 */ 75,/*LATINCAPITALLETTERK*/
- /* 76 */ 76,/*LATINCAPITALLETTERL*/
- /* 77 */ 77,/*LATINCAPITALLETTERM*/
- /* 78 */ 78,/*LATINCAPITALLETTERN*/
- /* 79 */ 79,/*LATINCAPITALLETTERO*/
- /* 80 */ 80,/*LATINCAPITALLETTERP*/
- /* 81 */ 81,/*LATINCAPITALLETTERQ*/
- /* 82 */ 82,/*LATINCAPITALLETTERR*/
- /* 83 */ 83,/*LATINCAPITALLETTERS*/
- /* 84 */ 84,/*LATINCAPITALLETTERT*/
- /* 85 */ 85,/*LATINCAPITALLETTERU*/
- /* 86 */ 86,/*LATINCAPITALLETTERV*/
- /* 87 */ 87,/*LATINCAPITALLETTERW*/
- /* 88 */ 88,/*LATINCAPITALLETTERX*/
- /* 89 */ 89,/*LATINCAPITALLETTERY*/
- /* 90 */ 90,/*LATINCAPITALLETTERZ*/
- /* 91 */ 91,/*LEFTSQUAREBRACKET*/
- /* 92 */ 92,/*REVERSESOLIDUS*/
- /* 93 */ 93,/*RIGHTSQUAREBRACKET*/
- /* 94 */ 94,/*CIRCUMFLEXACCENT*/
- /* 95 */ 95,/*LOWLINE*/
- /* 96 */ 96,/*GRAVEACCENT*/
- /* 97 */ 97,/*LATINSMALLLETTERA*/
- /* 98 */ 98,/*LATINSMALLLETTERB*/
- /* 99 */ 99,/*LATINSMALLLETTERC*/
- /* 100 */ 100,/*LATINSMALLLETTERD*/
- /* 101 */ 101,/*LATINSMALLLETTERE*/
- /* 102 */ 102,/*LATINSMALLLETTERF*/
- /* 103 */ 103,/*LATINSMALLLETTERG*/
- /* 104 */ 104,/*LATINSMALLLETTERH*/
- /* 105 */ 105,/*LATINSMALLLETTERI*/
- /* 106 */ 106,/*LATINSMALLLETTERJ*/
- /* 107 */ 107,/*LATINSMALLLETTERK*/
- /* 108 */ 108,/*LATINSMALLLETTERL*/
- /* 109 */ 109,/*LATINSMALLLETTERM*/
- /* 110 */ 110,/*LATINSMALLLETTERN*/
- /* 111 */ 111,/*LATINSMALLLETTERO*/
- /* 112 */ 112,/*LATINSMALLLETTERP*/
- /* 113 */ 113,/*LATINSMALLLETTERQ*/
- /* 114 */ 114,/*LATINSMALLLETTERR*/
- /* 115 */ 115,/*LATINSMALLLETTERS*/
- /* 116 */ 116,/*LATINSMALLLETTERT*/
- /* 117 */ 117,/*LATINSMALLLETTERU*/
- /* 118 */ 118,/*LATINSMALLLETTERV*/
- /* 119 */ 119,/*LATINSMALLLETTERW*/
- /* 120 */ 120,/*LATINSMALLLETTERX*/
- /* 121 */ 121,/*LATINSMALLLETTERY*/
- /* 122 */ 122,/*LATINSMALLLETTERZ*/
- /* 123 */ 123,/*LEFTCURLYBRACKET*/
- /* 124 */ 124,/*VERTICALLINE*/
- /* 125 */ 125,/*RIGHTCURLYBRACKET*/
- /* 126 */ 126,/*TILDE*/
- 127,
- /* 128 */ 268,/*LATINCAPITALLETTERCWITHCARON*/
- /* 129 */ 252,/*LATINSMALLLETTERUWITHDIAERESIS*/
- /* 130 */ 233,/*LATINSMALLLETTEREWITHACUTE*/
- /* 131 */ 271,/*LATINSMALLLETTERDWITHCARON*/
- /* 132 */ 228,/*LATINSMALLLETTERAWITHDIAERESIS*/
- /* 133 */ 270,/*LATINCAPITALLETTERDWITHCARON*/
- /* 134 */ 356,/*LATINCAPITALLETTERTWITHCARON*/
- /* 135 */ 269,/*LATINSMALLLETTERCWITHCARON*/
- /* 136 */ 283,/*LATINSMALLLETTEREWITHCARON*/
- /* 137 */ 282,/*LATINCAPITALLETTEREWITHCARON*/
- /* 138 */ 313,/*LATINCAPITALLETTERLWITHACUTE*/
- /* 139 */ 205,/*LATINCAPITALLETTERIWITHACUTE*/
- /* 140 */ 318,/*LATINSMALLLETTERLWITHCARON*/
- /* 141 */ 314,/*LATINSMALLLETTERLWITHACUTE*/
- /* 142 */ 196,/*LATINCAPITALLETTERAWITHDIAERESIS*/
- /* 143 */ 193,/*LATINCAPITALLETTERAWITHACUTE*/
- /* 144 */ 201,/*LATINCAPITALLETTEREWITHACUTE*/
- /* 145 */ 382,/*LATINSMALLLETTERZWITHCARON*/
- /* 146 */ 381,/*LATINCAPITALLETTERZWITHCARON*/
- /* 147 */ 244,/*LATINSMALLLETTEROWITHCIRCUMFLEX*/
- /* 148 */ 246,/*LATINSMALLLETTEROWITHDIAERESIS*/
- /* 149 */ 211,/*LATINCAPITALLETTEROWITHACUTE*/
- /* 150 */ 367,/*LATINSMALLLETTERUWITHRINGABOVE*/
- /* 151 */ 218,/*LATINCAPITALLETTERUWITHACUTE*/
- /* 152 */ 253,/*LATINSMALLLETTERYWITHACUTE*/
- /* 153 */ 214,/*LATINCAPITALLETTEROWITHDIAERESIS*/
- /* 154 */ 220,/*LATINCAPITALLETTERUWITHDIAERESIS*/
- /* 155 */ 352,/*LATINCAPITALLETTERSWITHCARON*/
- /* 156 */ 317,/*LATINCAPITALLETTERLWITHCARON*/
- /* 157 */ 221,/*LATINCAPITALLETTERYWITHACUTE*/
- /* 158 */ 344,/*LATINCAPITALLETTERRWITHCARON*/
- /* 159 */ 357,/*LATINSMALLLETTERTWITHCARON*/
- /* 160 */ 225,/*LATINSMALLLETTERAWITHACUTE*/
- /* 161 */ 237,/*LATINSMALLLETTERIWITHACUTE*/
- /* 162 */ 243,/*LATINSMALLLETTEROWITHACUTE*/
- /* 163 */ 250,/*LATINSMALLLETTERUWITHACUTE*/
- /* 164 */ 328,/*LATINSMALLLETTERNWITHCARON*/
- /* 165 */ 327,/*LATINCAPITALLETTERNWITHCARON*/
- /* 166 */ 366,/*LATINCAPITALLETTERUWITHRINGABOVE*/
- /* 167 */ 212,/*LATINCAPITALLETTEROWITHCIRCUMFLEX*/
- /* 168 */ 353,/*LATINSMALLLETTERSWITHCARON*/
- /* 169 */ 345,/*LATINSMALLLETTERRWITHCARON*/
- /* 170 */ 341,/*LATINSMALLLETTERRWITHACUTE*/
- /* 171 */ 340,/*LATINCAPITALLETTERRWITHACUTE*/
- /* 172 */ 188,/*VULGARFRACTIONONEQUARTER*/
- /* 173 */ 161,/*INVERTEDEXCLAMATIONMARK*/
- /* 174 */ 171,/*LEFT-POINTINGDOUBLEANGLEQUOTATIONMARK*/
- /* 175 */ 187,/*RIGHT-POINTINGDOUBLEANGLEQUOTATIONMARK*/
- /* 176 */ 9617,/*LIGHTSHADE*/
- /* 177 */ 9618,/*MEDIUMSHADE*/
- /* 178 */ 9619,/*DARKSHADE*/
- /* 179 */ 9474,/*BOXDRAWINGSLIGHTVERTICAL*/
- /* 180 */ 9508,/*BOXDRAWINGSLIGHTVERTICALANDLEFT*/
- /* 181 */ 9569,/*BOXDRAWINGSVERTICALSINGLEANDLEFTDOUBLE*/
- /* 182 */ 9570,/*BOXDRAWINGSVERTICALDOUBLEANDLEFTSINGLE*/
- /* 183 */ 9558,/*BOXDRAWINGSDOWNDOUBLEANDLEFTSINGLE*/
- /* 184 */ 9557,/*BOXDRAWINGSDOWNSINGLEANDLEFTDOUBLE*/
- /* 185 */ 9571,/*BOXDRAWINGSDOUBLEVERTICALANDLEFT*/
- /* 186 */ 9553,/*BOXDRAWINGSDOUBLEVERTICAL*/
- /* 187 */ 9559,/*BOXDRAWINGSDOUBLEDOWNANDLEFT*/
- /* 188 */ 9565,/*BOXDRAWINGSDOUBLEUPANDLEFT*/
- /* 189 */ 9564,/*BOXDRAWINGSUPDOUBLEANDLEFTSINGLE*/
- /* 190 */ 9563,/*BOXDRAWINGSUPSINGLEANDLEFTDOUBLE*/
- /* 191 */ 9488,/*BOXDRAWINGSLIGHTDOWNANDLEFT*/
- /* 192 */ 9492,/*BOXDRAWINGSLIGHTUPANDRIGHT*/
- /* 193 */ 9524,/*BOXDRAWINGSLIGHTUPANDHORIZONTAL*/
- /* 194 */ 9516,/*BOXDRAWINGSLIGHTDOWNANDHORIZONTAL*/
- /* 195 */ 9500,/*BOXDRAWINGSLIGHTVERTICALANDRIGHT*/
- /* 196 */ 9472,/*BOXDRAWINGSLIGHTHORIZONTAL*/
- /* 197 */ 9532,/*BOXDRAWINGSLIGHTVERTICALANDHORIZONTAL*/
- /* 198 */ 9566,/*BOXDRAWINGSVERTICALSINGLEANDRIGHTDOUBLE*/
- /* 199 */ 9567,/*BOXDRAWINGSVERTICALDOUBLEANDRIGHTSINGLE*/
- /* 200 */ 9562,/*BOXDRAWINGSDOUBLEUPANDRIGHT*/
- /* 201 */ 9556,/*BOXDRAWINGSDOUBLEDOWNANDRIGHT*/
- /* 202 */ 9577,/*BOXDRAWINGSDOUBLEUPANDHORIZONTAL*/
- /* 203 */ 9574,/*BOXDRAWINGSDOUBLEDOWNANDHORIZONTAL*/
- /* 204 */ 9568,/*BOXDRAWINGSDOUBLEVERTICALANDRIGHT*/
- /* 205 */ 9552,/*BOXDRAWINGSDOUBLEHORIZONTAL*/
- /* 206 */ 9580,/*BOXDRAWINGSDOUBLEVERTICALANDHORIZONTAL*/
- /* 207 */ 9575,/*BOXDRAWINGSUPSINGLEANDHORIZONTALDOUBLE*/
- /* 208 */ 9576,/*BOXDRAWINGSUPDOUBLEANDHORIZONTALSINGLE*/
- /* 209 */ 9572,/*BOXDRAWINGSDOWNSINGLEANDHORIZONTALDOUBLE*/
- /* 210 */ 9573,/*BOXDRAWINGSDOWNDOUBLEANDHORIZONTALSINGLE*/
- /* 211 */ 9561,/*BOXDRAWINGSUPDOUBLEANDRIGHTSINGLE*/
- /* 212 */ 9560,/*BOXDRAWINGSUPSINGLEANDRIGHTDOUBLE*/
- /* 213 */ 9554,/*BOXDRAWINGSDOWNSINGLEANDRIGHTDOUBLE*/
- /* 214 */ 9555,/*BOXDRAWINGSDOWNDOUBLEANDRIGHTSINGLE*/
- /* 215 */ 9579,/*BOXDRAWINGSVERTICALDOUBLEANDHORIZONTALSINGLE*/
- /* 216 */ 9578,/*BOXDRAWINGSVERTICALSINGLEANDHORIZONTALDOUBLE*/
- /* 217 */ 9496,/*BOXDRAWINGSLIGHTUPANDLEFT*/
- /* 218 */ 9484,/*BOXDRAWINGSLIGHTDOWNANDRIGHT*/
- /* 219 */ 9608,/*FULLBLOCK*/
- /* 220 */ 9604,/*LOWERHALFBLOCK*/
- /* 221 */ 9612,/*LEFTHALFBLOCK*/
- /* 222 */ 9616,/*RIGHTHALFBLOCK*/
- /* 223 */ 9600,/*UPPERHALFBLOCK*/
- /* 224 */ 945,/*GREEKSMALLLETTERALPHA*/
- /* 225 */ 223,/*LATINSMALLLETTERSHARPS*/
- /* 226 */ 915,/*GREEKCAPITALLETTERGAMMA*/
- /* 227 */ 960,/*GREEKSMALLLETTERPI*/
- /* 228 */ 931,/*GREEKCAPITALLETTERSIGMA*/
- /* 229 */ 963,/*GREEKSMALLLETTERSIGMA*/
- /* 230 */ 181,/*MICROSIGN*/
- /* 231 */ 964,/*GREEKSMALLLETTERTAU*/
- /* 232 */ 934,/*GREEKCAPITALLETTERPHI*/
- /* 233 */ 920,/*GREEKCAPITALLETTERTHETA*/
- /* 234 */ 937,/*GREEKCAPITALLETTEROMEGA*/
- /* 235 */ 948,/*GREEKSMALLLETTERDELTA*/
- /* 236 */ 8734,/*INFINITY*/
- /* 237 */ 966,/*GREEKSMALLLETTERPHI*/
- /* 238 */ 949,/*GREEKSMALLLETTEREPSILON*/
- /* 239 */ 8745,/*INTERSECTION*/
- /* 240 */ 8801,/*IDENTICALTO*/
- /* 241 */ 177,/*PLUS-MINUSSIGN*/
- /* 242 */ 8805,/*GREATER-THANOREQUALTO*/
- /* 243 */ 8804,/*LESS-THANOREQUALTO*/
- /* 244 */ 8992,/*TOPHALFINTEGRAL*/
- /* 245 */ 8993,/*BOTTOMHALFINTEGRAL*/
- /* 246 */ 247,/*DIVISIONSIGN*/
- /* 247 */ 8776,/*ALMOSTEQUALTO*/
- /* 248 */ 176,/*DEGREESIGN*/
- /* 249 */ 8729,/*BULLETOPERATOR*/
- /* 250 */ 183,/*MIDDLEDOT*/
- /* 251 */ 8730,/*SQUAREROOT*/
- /* 252 */ 8319,/*SUPERSCRIPTLATINSMALLLETTERN*/
- /* 253 */ 178,/*SUPERSCRIPTTWO*/
- /* 254 */ 9632,/*BLACKSQUARE*/
- /* 255 */ 160/*NO-BREAKSPACE*/
+static convert_t ebc1026[] = {
+	{ 0, 0 },
+	{ 1, 1 },
+	{ 2, 2 },
+	{ 3, 3 },
+	{ 4, 4 },
+	{ 5, 5 },
+	{ 6, 6 },
+	{ 7, 7 },
+	{ 8, 8 },
+	{ 9, 9 },
+	{ 10, 10 },
+	{ 11, 11 },
+	{ 12, 12 },
+	{ 13, 13 },
+	{ 14, 14 },
+	{ 15, 15 },
+	{ 16, 16 },
+	{ 17, 17 },
+	{ 18, 18 },
+	{ 19, 19 },
+	{ 20, 20 },
+	{ 21, 21 },
+	{ 22, 22 },
+	{ 23, 23 },
+	{ 24, 24 },
+	{ 25, 25 },
+	{ 26, 26 },
+	{ 27, 27 },
+	{ 28, 28 },
+	{ 29, 29 },
+	{ 30, 30 },
+	{ 31, 31 },
+	{ 32, 32 },
+	{ 33, 33 },
+	{ 34, 34 },
+	{ 35, 35 },
+	{ 36, 36 },
+	{ 37, 37 },
+	{ 38, 38 },
+	{ 39, 39 },
+	{ 40, 40 },
+	{ 41, 41 },
+	{ 42, 42 },
+	{ 43, 43 },
+	{ 44, 44 },
+	{ 45, 45 },
+	{ 46, 46 },
+	{ 47, 47 },
+	{ 48, 48 },
+	{ 49, 49 },
+	{ 50, 50 },
+	{ 51, 51 },
+	{ 52, 52 },
+	{ 53, 53 },
+	{ 54, 54 },
+	{ 55, 55 },
+	{ 56, 56 },
+	{ 57, 57 },
+	{ 58, 58 },
+	{ 59, 59 },
+	{ 60, 60 },
+	{ 61, 61 },
+	{ 62, 62 },
+	{ 63, 63 },
+	{ 64, 32 },
+	{ 65, 160 },
+	{ 66, 226 },
+	{ 67, 228 },
+	{ 68, 224 },
+	{ 69, 225 },
+	{ 70, 227 },
+	{ 71, 229 },
+	{ 72, 123 },
+	{ 73, 241 },
+	{ 74, 199 },
+	{ 75, 46 },
+	{ 76, 60 },
+	{ 77, 40 },
+	{ 78, 43 },
+	{ 79, 33 },
+	{ 80, 38 },
+	{ 81, 233 },
+	{ 82, 234 },
+	{ 83, 235 },
+	{ 84, 232 },
+	{ 85, 237 },
+	{ 86, 238 },
+	{ 87, 239 },
+	{ 88, 236 },
+	{ 89, 223 },
+	{ 90, 286 },
+	{ 91, 304 },
+	{ 92, 42 },
+	{ 93, 41 },
+	{ 94, 59 },
+	{ 95, 94 },
+	{ 96, 45 },
+	{ 97, 47 },
+	{ 98, 194 },
+	{ 99, 196 },
+	{ 100, 192 },
+	{ 101, 193 },
+	{ 102, 195 },
+	{ 103, 197 },
+	{ 104, 91 },
+	{ 105, 209 },
+	{ 106, 351 },
+	{ 107, 44 },
+	{ 108, 37 },
+	{ 109, 95 },
+	{ 110, 62 },
+	{ 111, 63 },
+	{ 112, 248 },
+	{ 113, 201 },
+	{ 114, 202 },
+	{ 115, 203 },
+	{ 116, 200 },
+	{ 117, 205 },
+	{ 118, 206 },
+	{ 119, 207 },
+	{ 120, 204 },
+	{ 121, 305 },
+	{ 122, 58 },
+	{ 123, 214 },
+	{ 124, 350 },
+	{ 125, 39 },
+	{ 126, 61 },
+	{ 127, 220 },
+	{ 128, 216 },
+	{ 129, 97 },
+	{ 130, 98 },
+	{ 131, 99 },
+	{ 132, 100 },
+	{ 133, 101 },
+	{ 134, 102 },
+	{ 135, 103 },
+	{ 136, 104 },
+	{ 137, 105 },
+	{ 138, 171 },
+	{ 139, 187 },
+	{ 140, 125 },
+	{ 141, 96 },
+	{ 142, 166 },
+	{ 143, 177 },
+	{ 144, 176 },
+	{ 145, 106 },
+	{ 146, 107 },
+	{ 147, 108 },
+	{ 148, 109 },
+	{ 149, 110 },
+	{ 150, 111 },
+	{ 151, 112 },
+	{ 152, 113 },
+	{ 153, 114 },
+	{ 154, 170 },
+	{ 155, 186 },
+	{ 156, 230 },
+	{ 157, 184 },
+	{ 158, 198 },
+	{ 159, 164 },
+	{ 160, 181 },
+	{ 161, 246 },
+	{ 162, 115 },
+	{ 163, 116 },
+	{ 164, 117 },
+	{ 165, 118 },
+	{ 166, 119 },
+	{ 167, 120 },
+	{ 168, 121 },
+	{ 169, 122 },
+	{ 170, 161 },
+	{ 171, 191 },
+	{ 172, 93 },
+	{ 173, 36 },
+	{ 174, 64 },
+	{ 175, 174 },
+	{ 176, 162 },
+	{ 177, 163 },
+	{ 178, 165 },
+	{ 179, 183 },
+	{ 180, 169 },
+	{ 181, 167 },
+	{ 182, 182 },
+	{ 183, 188 },
+	{ 184, 189 },
+	{ 185, 190 },
+	{ 186, 172 },
+	{ 187, 124 },
+	{ 188, 175 },
+	{ 189, 168 },
+	{ 190, 180 },
+	{ 191, 215 },
+	{ 192, 231 },
+	{ 193, 65 },
+	{ 194, 66 },
+	{ 195, 67 },
+	{ 196, 68 },
+	{ 197, 69 },
+	{ 198, 70 },
+	{ 199, 71 },
+	{ 200, 72 },
+	{ 201, 73 },
+	{ 202, 173 },
+	{ 203, 244 },
+	{ 204, 126 },
+	{ 205, 242 },
+	{ 206, 243 },
+	{ 207, 245 },
+	{ 208, 287 },
+	{ 209, 74 },
+	{ 210, 75 },
+	{ 211, 76 },
+	{ 212, 77 },
+	{ 213, 78 },
+	{ 214, 79 },
+	{ 215, 80 },
+	{ 216, 81 },
+	{ 217, 82 },
+	{ 218, 185 },
+	{ 219, 251 },
+	{ 220, 92 },
+	{ 221, 249 },
+	{ 222, 250 },
+	{ 223, 255 },
+	{ 224, 252 },
+	{ 225, 247 },
+	{ 226, 83 },
+	{ 227, 84 },
+	{ 228, 85 },
+	{ 229, 86 },
+	{ 230, 87 },
+	{ 231, 88 },
+	{ 232, 89 },
+	{ 233, 90 },
+	{ 234, 178 },
+	{ 235, 212 },
+	{ 236, 35 },
+	{ 237, 210 },
+	{ 238, 211 },
+	{ 239, 213 },
+	{ 240, 48 },
+	{ 241, 49 },
+	{ 242, 50 },
+	{ 243, 51 },
+	{ 244, 52 },
+	{ 245, 53 },
+	{ 246, 54 },
+	{ 247, 55 },
+	{ 248, 56 },
+	{ 249, 57 },
+	{ 250, 179 },
+	{ 251, 219 },
+	{ 252, 34 },
+	{ 253, 217 },
+	{ 254, 218 },
+	{ 255, 255 },
+	{ 34, 8220 },
+	{ 34, 8221 },
+	{ 39, 8216 },
+	{ 39, 8217 },
+	{ 45, 8211 },
+	{ 45, 8212 },
+	{ 32, 8194 },
+	{ 32, 8195 },
+	{ 32, 8201 },
+	{ 193, 256 },
+	{ 193, 258 },
+	{ 193, 260 },
+	{ 193, 461 },
+	{ 129, 257 },
+	{ 129, 259 },
+	{ 129, 261 },
+	{ 129, 462 },
+	{ 195, 262 },
+	{ 195, 264 },
+	{ 195, 266 },
+	{ 195, 268 },
+	{ 131, 263 },
+	{ 131, 265 },
+	{ 131, 267 },
+	{ 131, 269 },
+	{ 196, 270 },
+	{ 132, 271 },
+	{ 197, 274 },
+	{ 197, 276 },
+	{ 197, 278 },
+	{ 197, 280 },
+	{ 197, 282 },
+	{ 133, 275 },
+	{ 133, 277 },
+	{ 133, 279 },
+	{ 133, 281 },
+	{ 133, 283 },
+	{ 199, 284 },
+	{ 199, 288 },
+	{ 199, 290 },
+	{ 199, 486 },
+	{ 199, 500 },
+	{ 135, 285 },
+	{ 135, 289 },
+	{ 135, 291 },
+	{ 135, 487 },
+	{ 135, 501 },
+	{ 200, 292 },
+	{ 136, 293 },
+	{ 201, 296 },
+	{ 201, 298 },
+	{ 201, 300 },
+	{ 201, 302 },
+	{ 201, 463 },
+	{ 137, 297 },
+	{ 137, 299 },
+	{ 137, 301 },
+	{ 137, 303 },
+	{ 137, 464 },
+	{ 209, 308 },
+	{ 145, 309 },
+	{ 210, 310 },
+	{ 210, 488 },
+	{ 146, 311 },
+	{ 146, 489 },
+	{ 211, 313 },
+	{ 211, 315 },
+	{ 211, 317 },
+	{ 211, 319 },
+	{ 211, 321 },
+	{ 147, 314 },
+	{ 147, 316 },
+	{ 147, 318 },
+	{ 147, 320 },
+	{ 147, 322 },
+	{ 212, 323 },
+	{ 212, 325 },
+	{ 212, 327 },
+	{ 148, 324 },
+	{ 148, 326 },
+	{ 148, 328 },
+	{ 148, 329 },
+	{ 213, 332 },
+	{ 213, 334 },
+	{ 213, 336 },
+	{ 213, 465 },
+	{ 213, 490 },
+	{ 149, 333 },
+	{ 149, 335 },
+	{ 149, 337 },
+	{ 149, 466 },
+	{ 149, 491 },
+	{ 217, 340 },
+	{ 217, 342 },
+	{ 217, 344 },
+	{ 153, 341 },
+	{ 153, 343 },
+	{ 153, 345 },
+	{ 226, 346 },
+	{ 226, 348 },
+	{ 226, 352 },
+	{ 162, 347 },
+	{ 162, 349 },
+	{ 162, 353 },
+	{ 227, 354 },
+	{ 227, 356 },
+	{ 163, 355 },
+	{ 163, 357 },
+	{ 228, 360 },
+	{ 228, 362 },
+	{ 228, 364 },
+	{ 228, 366 },
+	{ 228, 368 },
+	{ 228, 370 },
+	{ 228, 467 },
+	{ 164, 361 },
+	{ 164, 363 },
+	{ 164, 365 },
+	{ 164, 367 },
+	{ 164, 369 },
+	{ 164, 371 },
+	{ 164, 468 },
+	{ 230, 372 },
+	{ 166, 373 },
+	{ 232, 221 },
+	{ 232, 374 },
+	{ 232, 376 },
+	{ 168, 253 },
+	{ 168, 375 },
+	{ 233, 377 },
+	{ 233, 379 },
+	{ 233, 381 },
+	{ 169, 378 },
+	{ 169, 380 },
+	{ 169, 382 },
 };
-charconvert decmcs[] = {
- /* 0 */ 0,/*<tdbgcolor="C0C0C0"><fontface="Arial"color="000000"><b>ISO/IEC10646-1:2000CharacterName</b></font>*/
- 1,
- 2,
- 3,
- 4,
- 5,
- 6,
- 7,
- 8,
- 9,
- 10,
- 11,
- 12,
- 13,
- 14,
- 15,
- 16,
- 17,
- 18,
- 19,
- 20,
- 21,
- 22,
- 23,
- 24,
- 25,
- 26,
- 27,
- 28,
- 29,
- 30,
- 31,
- /* 32 */ 32,/*SPACE*/
- /* 33 */ 33,/*EXCLAMATIONMARK*/
- /* 34 */ 34,/*QUOTATIONMARK*/
- /* 35 */ 35,/*NUMBERSIGN*/
- /* 36 */ 36,/*DOLLARSIGN*/
- /* 37 */ 37,/*PERCENTSIGN*/
- /* 38 */ 38,/*AMPERSAND*/
- /* 39 */ 39,/*APOSTROPHE*/
- /* 40 */ 40,/*LEFTPARENTHESIS*/
- /* 41 */ 41,/*RIGHTPARENTHESIS*/
- /* 42 */ 42,/*ASTERISK*/
- /* 43 */ 43,/*PLUSSIGN*/
- /* 44 */ 44,/*COMMA*/
- /* 45 */ 45,/*HYPHEN-MINUS*/
- /* 46 */ 46,/*FULLSTOP*/
- /* 47 */ 47,/*SOLIDUS*/
- /* 48 */ 48,/*DIGITZERO*/
- /* 49 */ 49,/*DIGITONE*/
- /* 50 */ 50,/*DIGITTWO*/
- /* 51 */ 51,/*DIGITTHREE*/
- /* 52 */ 52,/*DIGITFOUR*/
- /* 53 */ 53,/*DIGITFIVE*/
- /* 54 */ 54,/*DIGITSIX*/
- /* 55 */ 55,/*DIGITSEVEN*/
- /* 56 */ 56,/*DIGITEIGHT*/
- /* 57 */ 57,/*DIGITNINE*/
- /* 58 */ 58,/*COLON*/
- /* 59 */ 59,/*SEMICOLON*/
- /* 60 */ 60,/*LESS-THANSIGN*/
- /* 61 */ 61,/*EQUALSSIGN*/
- /* 62 */ 62,/*GREATER-THANSIGN*/
- /* 63 */ 63,/*QUESTIONMARK*/
- /* 64 */ 64,/*COMMERCIALAT*/
- /* 65 */ 65,/*LATINCAPITALLETTERA*/
- /* 66 */ 66,/*LATINCAPITALLETTERB*/
- /* 67 */ 67,/*LATINCAPITALLETTERC*/
- /* 68 */ 68,/*LATINCAPITALLETTERD*/
- /* 69 */ 69,/*LATINCAPITALLETTERE*/
- /* 70 */ 70,/*LATINCAPITALLETTERF*/
- /* 71 */ 71,/*LATINCAPITALLETTERG*/
- /* 72 */ 72,/*LATINCAPITALLETTERH*/
- /* 73 */ 73,/*LATINCAPITALLETTERI*/
- /* 74 */ 74,/*LATINCAPITALLETTERJ*/
- /* 75 */ 75,/*LATINCAPITALLETTERK*/
- /* 76 */ 76,/*LATINCAPITALLETTERL*/
- /* 77 */ 77,/*LATINCAPITALLETTERM*/
- /* 78 */ 78,/*LATINCAPITALLETTERN*/
- /* 79 */ 79,/*LATINCAPITALLETTERO*/
- /* 80 */ 80,/*LATINCAPITALLETTERP*/
- /* 81 */ 81,/*LATINCAPITALLETTERQ*/
- /* 82 */ 82,/*LATINCAPITALLETTERR*/
- /* 83 */ 83,/*LATINCAPITALLETTERS*/
- /* 84 */ 84,/*LATINCAPITALLETTERT*/
- /* 85 */ 85,/*LATINCAPITALLETTERU*/
- /* 86 */ 86,/*LATINCAPITALLETTERV*/
- /* 87 */ 87,/*LATINCAPITALLETTERW*/
- /* 88 */ 88,/*LATINCAPITALLETTERX*/
- /* 89 */ 89,/*LATINCAPITALLETTERY*/
- /* 90 */ 90,/*LATINCAPITALLETTERZ*/
- /* 91 */ 91,/*LEFTSQUAREBRACKET*/
- /* 92 */ 92,/*REVERSESOLIDUS*/
- /* 93 */ 93,/*RIGHTSQUAREBRACKET*/
- /* 94 */ 94,/*CIRCUMFLEXACCENT*/
- /* 95 */ 95,/*LOWLINE*/
- /* 96 */ 96,/*GRAVEACCENT*/
- /* 97 */ 97,/*LATINSMALLLETTERA*/
- /* 98 */ 98,/*LATINSMALLLETTERB*/
- /* 99 */ 99,/*LATINSMALLLETTERC*/
- /* 100 */ 100,/*LATINSMALLLETTERD*/
- /* 101 */ 101,/*LATINSMALLLETTERE*/
- /* 102 */ 102,/*LATINSMALLLETTERF*/
- /* 103 */ 103,/*LATINSMALLLETTERG*/
- /* 104 */ 104,/*LATINSMALLLETTERH*/
- /* 105 */ 105,/*LATINSMALLLETTERI*/
- /* 106 */ 106,/*LATINSMALLLETTERJ*/
- /* 107 */ 107,/*LATINSMALLLETTERK*/
- /* 108 */ 108,/*LATINSMALLLETTERL*/
- /* 109 */ 109,/*LATINSMALLLETTERM*/
- /* 110 */ 110,/*LATINSMALLLETTERN*/
- /* 111 */ 111,/*LATINSMALLLETTERO*/
- /* 112 */ 112,/*LATINSMALLLETTERP*/
- /* 113 */ 113,/*LATINSMALLLETTERQ*/
- /* 114 */ 114,/*LATINSMALLLETTERR*/
- /* 115 */ 115,/*LATINSMALLLETTERS*/
- /* 116 */ 116,/*LATINSMALLLETTERT*/
- /* 117 */ 117,/*LATINSMALLLETTERU*/
- /* 118 */ 118,/*LATINSMALLLETTERV*/
- /* 119 */ 119,/*LATINSMALLLETTERW*/
- /* 120 */ 120,/*LATINSMALLLETTERX*/
- /* 121 */ 121,/*LATINSMALLLETTERY*/
- /* 122 */ 122,/*LATINSMALLLETTERZ*/
- /* 123 */ 123,/*LEFTCURLYBRACKET*/
- /* 124 */ 124,/*VERTICALLINE*/
- /* 125 */ 125,/*RIGHTCURLYBRACKET*/
- /* 126 */ 126,/*TILDE*/
- 127,
- 128,
- 129,
- 130,
- 131,
- 132,
- 133,
- 134,
- 135,
- 136,
- 137,
- 138,
- 139,
- 140,
- 141,
- 142,
- 143,
- 144,
- 145,
- 146,
- 147,
- 148,
- 149,
- 150,
- 151,
- 152,
- 153,
- 154,
- 155,
- 156,
- 157,
- 158,
- 159,
- /* 160 */ 160,/*NO-BREAKSPACE*/
- /* 161 */ 161,/*INVERTEDEXCLAMATIONMARK*/
- /* 162 */ 162,/*CENTSIGN*/
- /* 163 */ 163,/*POUNDSIGN*/
- 164,
- /* 165 */ 165,/*YENSIGN*/
- 166,
- /* 167 */ 167,/*SECTIONSIGN*/
- /* 168 */ 164,/*CURRENCYSIGN*/
- /* 169 */ 169,/*COPYRIGHTSIGN*/
- /* 170 */ 170,/*FEMININEORDINALINDICATOR*/
- /* 171 */ 171,/*LEFT-POINTINGDOUBLEANGLEQUOTATIONMARK*/
- 172,
- 173,
- 174,
- 175,
- /* 176 */ 176,/*DEGREESIGN*/
- /* 177 */ 177,/*PLUS-MINUSSIGN*/
- /* 178 */ 178,/*SUPERSCRIPTTWO*/
- /* 179 */ 179,/*SUPERSCRIPTTHREE*/
- 180,
- /* 181 */ 181,/*MICROSIGN*/
- /* 182 */ 182,/*PILCROWSIGN*/
- /* 183 */ 183,/*MIDDLEDOT*/
- 184,
- /* 185 */ 185,/*SUPERSCRIPTONE*/
- /* 186 */ 186,/*MASCULINEORDINALINDICATOR*/
- /* 187 */ 187,/*RIGHT-POINTINGDOUBLEANGLEQUOTATIONMARK*/
- /* 188 */ 188,/*VULGARFRACTIONONEQUARTER*/
- /* 189 */ 189,/*VULGARFRACTIONONEHALF*/
- 190,
- /* 191 */ 191,/*INVERTEDQUESTIONMARK*/
- /* 192 */ 192,/*LATINCAPITALLETTERAWITHGRAVE*/
- /* 193 */ 193,/*LATINCAPITALLETTERAWITHACUTE*/
- /* 194 */ 194,/*LATINCAPITALLETTERAWITHCIRCUMFLEX*/
- /* 195 */ 195,/*LATINCAPITALLETTERAWITHTILDE*/
- /* 196 */ 196,/*LATINCAPITALLETTERAWITHDIAERESIS*/
- /* 197 */ 197,/*LATINCAPITALLETTERAWITHRINGABOVE*/
- /* 198 */ 198,/*LATINCAPITALLETTERAE*/
- /* 199 */ 199,/*LATINCAPITALLETTERCWITHCEDILLA*/
- /* 200 */ 200,/*LATINCAPITALLETTEREWITHGRAVE*/
- /* 201 */ 201,/*LATINCAPITALLETTEREWITHACUTE*/
- /* 202 */ 202,/*LATINCAPITALLETTEREWITHCIRCUMFLEX*/
- /* 203 */ 203,/*LATINCAPITALLETTEREWITHDIAERESIS*/
- /* 204 */ 204,/*LATINCAPITALLETTERIWITHGRAVE*/
- /* 205 */ 205,/*LATINCAPITALLETTERIWITHACUTE*/
- /* 206 */ 206,/*LATINCAPITALLETTERIWITHCIRCUMFLEX*/
- /* 207 */ 207,/*LATINCAPITALLETTERIWITHDIAERESIS*/
- 208,
- /* 209 */ 209,/*LATINCAPITALLETTERNWITHTILDE*/
- /* 210 */ 210,/*LATINCAPITALLETTEROWITHGRAVE*/
- /* 211 */ 211,/*LATINCAPITALLETTEROWITHACUTE*/
- /* 212 */ 212,/*LATINCAPITALLETTEROWITHCIRCUMFLEX*/
- /* 213 */ 213,/*LATINCAPITALLETTEROWITHTILDE*/
- /* 214 */ 214,/*LATINCAPITALLETTEROWITHDIAERESIS*/
- /* 215 */ 338,/*LATINCAPITALLIGATUREOE*/
- /* 216 */ 216,/*LATINCAPITALLETTEROWITHSTROKE*/
- /* 217 */ 217,/*LATINCAPITALLETTERUWITHGRAVE*/
- /* 218 */ 218,/*LATINCAPITALLETTERUWITHACUTE*/
- /* 219 */ 219,/*LATINCAPITALLETTERUWITHCIRCUMFLEX*/
- /* 220 */ 220,/*LATINCAPITALLETTERUWITHDIAERESIS*/
- /* 221 */ 376,/*LATINCAPITALLETTERYWITHDIAERESIS*/
- 222,
- /* 223 */ 223,/*LATINSMALLLETTERSHARPS*/
- /* 224 */ 224,/*LATINSMALLLETTERAWITHGRAVE*/
- /* 225 */ 225,/*LATINSMALLLETTERAWITHACUTE*/
- /* 226 */ 226,/*LATINSMALLLETTERAWITHCIRCUMFLEX*/
- /* 227 */ 227,/*LATINSMALLLETTERAWITHTILDE*/
- /* 228 */ 228,/*LATINSMALLLETTERAWITHDIAERESIS*/
- /* 229 */ 229,/*LATINSMALLLETTERAWITHRINGABOVE*/
- /* 230 */ 230,/*LATINSMALLLETTERAE*/
- /* 231 */ 231,/*LATINSMALLLETTERCWITHCEDILLA*/
- /* 232 */ 232,/*LATINSMALLLETTEREWITHGRAVE*/
- /* 233 */ 233,/*LATINSMALLLETTEREWITHACUTE*/
- /* 234 */ 234,/*LATINSMALLLETTEREWITHCIRCUMFLEX*/
- /* 235 */ 235,/*LATINSMALLLETTEREWITHDIAERESIS*/
- /* 236 */ 236,/*LATINSMALLLETTERIWITHGRAVE*/
- /* 237 */ 237,/*LATINSMALLLETTERIWITHACUTE*/
- /* 238 */ 238,/*LATINSMALLLETTERIWITHCIRCUMFLEX*/
- /* 239 */ 239,/*LATINSMALLLETTERIWITHDIAERESIS*/
- 240,
- /* 241 */ 241,/*LATINSMALLLETTERNWITHTILDE*/
- /* 242 */ 242,/*LATINSMALLLETTEROWITHGRAVE*/
- /* 243 */ 243,/*LATINSMALLLETTEROWITHACUTE*/
- /* 244 */ 244,/*LATINSMALLLETTEROWITHCIRCUMFLEX*/
- /* 245 */ 245,/*LATINSMALLLETTEROWITHTILDE*/
- /* 246 */ 246,/*LATINSMALLLETTEROWITHDIAERESIS*/
- /* 247 */ 339,/*LATINSMALLLIGATUREOE*/
- /* 248 */ 248,/*LATINSMALLLETTEROWITHSTROKE*/
- /* 249 */ 249,/*LATINSMALLLETTERUWITHGRAVE*/
- /* 250 */ 250,/*LATINSMALLLETTERUWITHACUTE*/
- /* 251 */ 251,/*LATINSMALLLETTERUWITHCIRCUMFLEX*/
- /* 252 */ 252,/*LATINSMALLLETTERUWITHDIAERESIS*/
- /* 253 */ 255,/*LATINSMALLLETTERYWITHDIAERESIS*/
- 254,
- 255
+static convert_t ebc1047[] = {
+	{ 0, 0 },
+	{ 1, 1 },
+	{ 2, 2 },
+	{ 3, 3 },
+	{ 4, 4 },
+	{ 5, 5 },
+	{ 6, 6 },
+	{ 7, 7 },
+	{ 8, 8 },
+	{ 9, 9 },
+	{ 10, 10 },
+	{ 11, 11 },
+	{ 12, 12 },
+	{ 13, 13 },
+	{ 14, 14 },
+	{ 15, 15 },
+	{ 16, 16 },
+	{ 17, 17 },
+	{ 18, 18 },
+	{ 19, 19 },
+	{ 20, 20 },
+	{ 21, 21 },
+	{ 22, 22 },
+	{ 23, 23 },
+	{ 24, 24 },
+	{ 25, 25 },
+	{ 26, 26 },
+	{ 27, 27 },
+	{ 28, 28 },
+	{ 29, 29 },
+	{ 30, 30 },
+	{ 31, 31 },
+	{ 32, 32 },
+	{ 33, 33 },
+	{ 34, 34 },
+	{ 35, 35 },
+	{ 36, 36 },
+	{ 37, 37 },
+	{ 38, 38 },
+	{ 39, 39 },
+	{ 40, 40 },
+	{ 41, 41 },
+	{ 42, 42 },
+	{ 43, 43 },
+	{ 44, 44 },
+	{ 45, 45 },
+	{ 46, 46 },
+	{ 47, 47 },
+	{ 48, 48 },
+	{ 49, 49 },
+	{ 50, 50 },
+	{ 51, 51 },
+	{ 52, 52 },
+	{ 53, 53 },
+	{ 54, 54 },
+	{ 55, 55 },
+	{ 56, 56 },
+	{ 57, 57 },
+	{ 58, 58 },
+	{ 59, 59 },
+	{ 60, 60 },
+	{ 61, 61 },
+	{ 62, 62 },
+	{ 63, 63 },
+	{ 64, 32 },
+	{ 65, 160 },
+	{ 66, 226 },
+	{ 67, 228 },
+	{ 68, 224 },
+	{ 69, 225 },
+	{ 70, 227 },
+	{ 71, 229 },
+	{ 72, 231 },
+	{ 73, 241 },
+	{ 74, 162 },
+	{ 75, 46 },
+	{ 76, 60 },
+	{ 77, 40 },
+	{ 78, 43 },
+	{ 79, 124 },
+	{ 80, 38 },
+	{ 81, 233 },
+	{ 82, 234 },
+	{ 83, 235 },
+	{ 84, 232 },
+	{ 85, 237 },
+	{ 86, 238 },
+	{ 87, 239 },
+	{ 88, 236 },
+	{ 89, 223 },
+	{ 90, 33 },
+	{ 91, 36 },
+	{ 92, 42 },
+	{ 93, 41 },
+	{ 94, 59 },
+	{ 95, 94 },
+	{ 96, 45 },
+	{ 97, 47 },
+	{ 98, 194 },
+	{ 99, 196 },
+	{ 100, 192 },
+	{ 101, 193 },
+	{ 102, 195 },
+	{ 103, 197 },
+	{ 104, 199 },
+	{ 105, 209 },
+	{ 106, 166 },
+	{ 107, 44 },
+	{ 108, 37 },
+	{ 109, 95 },
+	{ 110, 62 },
+	{ 111, 63 },
+	{ 112, 248 },
+	{ 113, 201 },
+	{ 114, 202 },
+	{ 115, 203 },
+	{ 116, 200 },
+	{ 117, 205 },
+	{ 118, 206 },
+	{ 119, 207 },
+	{ 120, 204 },
+	{ 121, 96 },
+	{ 122, 58 },
+	{ 123, 35 },
+	{ 124, 64 },
+	{ 125, 39 },
+	{ 126, 61 },
+	{ 127, 34 },
+	{ 128, 216 },
+	{ 129, 97 },
+	{ 130, 98 },
+	{ 131, 99 },
+	{ 132, 100 },
+	{ 133, 101 },
+	{ 134, 102 },
+	{ 135, 103 },
+	{ 136, 104 },
+	{ 137, 105 },
+	{ 138, 171 },
+	{ 139, 187 },
+	{ 140, 240 },
+	{ 141, 253 },
+	{ 142, 254 },
+	{ 143, 177 },
+	{ 144, 176 },
+	{ 145, 106 },
+	{ 146, 107 },
+	{ 147, 108 },
+	{ 148, 109 },
+	{ 149, 110 },
+	{ 150, 111 },
+	{ 151, 112 },
+	{ 152, 113 },
+	{ 153, 114 },
+	{ 154, 170 },
+	{ 155, 186 },
+	{ 156, 230 },
+	{ 157, 184 },
+	{ 158, 198 },
+	{ 159, 164 },
+	{ 160, 181 },
+	{ 161, 126 },
+	{ 162, 115 },
+	{ 163, 116 },
+	{ 164, 117 },
+	{ 165, 118 },
+	{ 166, 119 },
+	{ 167, 120 },
+	{ 168, 121 },
+	{ 169, 122 },
+	{ 170, 161 },
+	{ 171, 191 },
+	{ 172, 208 },
+	{ 173, 91 },
+	{ 174, 222 },
+	{ 175, 174 },
+	{ 176, 172 },
+	{ 177, 163 },
+	{ 178, 165 },
+	{ 179, 183 },
+	{ 180, 169 },
+	{ 181, 167 },
+	{ 182, 182 },
+	{ 183, 188 },
+	{ 184, 189 },
+	{ 185, 190 },
+	{ 186, 221 },
+	{ 187, 168 },
+	{ 188, 175 },
+	{ 189, 93 },
+	{ 190, 180 },
+	{ 191, 215 },
+	{ 192, 123 },
+	{ 193, 65 },
+	{ 194, 66 },
+	{ 195, 67 },
+	{ 196, 68 },
+	{ 197, 69 },
+	{ 198, 70 },
+	{ 199, 71 },
+	{ 200, 72 },
+	{ 201, 73 },
+	{ 202, 173 },
+	{ 203, 244 },
+	{ 204, 246 },
+	{ 205, 242 },
+	{ 206, 243 },
+	{ 207, 245 },
+	{ 208, 125 },
+	{ 209, 74 },
+	{ 210, 75 },
+	{ 211, 76 },
+	{ 212, 77 },
+	{ 213, 78 },
+	{ 214, 79 },
+	{ 215, 80 },
+	{ 216, 81 },
+	{ 217, 82 },
+	{ 218, 185 },
+	{ 219, 251 },
+	{ 220, 252 },
+	{ 221, 249 },
+	{ 222, 250 },
+	{ 223, 255 },
+	{ 224, 92 },
+	{ 225, 247 },
+	{ 226, 83 },
+	{ 227, 84 },
+	{ 228, 85 },
+	{ 229, 86 },
+	{ 230, 87 },
+	{ 231, 88 },
+	{ 232, 89 },
+	{ 233, 90 },
+	{ 234, 178 },
+	{ 235, 212 },
+	{ 236, 214 },
+	{ 237, 210 },
+	{ 238, 211 },
+	{ 239, 213 },
+	{ 240, 48 },
+	{ 241, 49 },
+	{ 242, 50 },
+	{ 243, 51 },
+	{ 244, 52 },
+	{ 245, 53 },
+	{ 246, 54 },
+	{ 247, 55 },
+	{ 248, 56 },
+	{ 249, 57 },
+	{ 250, 179 },
+	{ 251, 219 },
+	{ 252, 220 },
+	{ 253, 217 },
+	{ 254, 218 },
+	{ 255, 255 },
+	{ 34, 8220 },
+	{ 34, 8221 },
+	{ 39, 8216 },
+	{ 39, 8217 },
+	{ 45, 8211 },
+	{ 45, 8212 },
+	{ 32, 8194 },
+	{ 32, 8195 },
+	{ 32, 8201 },
+	{ 193, 256 },
+	{ 193, 258 },
+	{ 193, 260 },
+	{ 193, 461 },
+	{ 129, 257 },
+	{ 129, 259 },
+	{ 129, 261 },
+	{ 129, 462 },
+	{ 195, 262 },
+	{ 195, 264 },
+	{ 195, 266 },
+	{ 195, 268 },
+	{ 131, 263 },
+	{ 131, 265 },
+	{ 131, 267 },
+	{ 131, 269 },
+	{ 196, 270 },
+	{ 132, 271 },
+	{ 197, 274 },
+	{ 197, 276 },
+	{ 197, 278 },
+	{ 197, 280 },
+	{ 197, 282 },
+	{ 133, 275 },
+	{ 133, 277 },
+	{ 133, 279 },
+	{ 133, 281 },
+	{ 133, 283 },
+	{ 199, 284 },
+	{ 199, 286 },
+	{ 199, 288 },
+	{ 199, 290 },
+	{ 199, 486 },
+	{ 199, 500 },
+	{ 135, 285 },
+	{ 135, 287 },
+	{ 135, 289 },
+	{ 135, 291 },
+	{ 135, 487 },
+	{ 135, 501 },
+	{ 200, 292 },
+	{ 136, 293 },
+	{ 201, 296 },
+	{ 201, 298 },
+	{ 201, 300 },
+	{ 201, 302 },
+	{ 201, 304 },
+	{ 201, 463 },
+	{ 137, 297 },
+	{ 137, 299 },
+	{ 137, 301 },
+	{ 137, 303 },
+	{ 137, 305 },
+	{ 137, 464 },
+	{ 209, 308 },
+	{ 145, 309 },
+	{ 210, 310 },
+	{ 210, 488 },
+	{ 146, 311 },
+	{ 146, 489 },
+	{ 211, 313 },
+	{ 211, 315 },
+	{ 211, 317 },
+	{ 211, 319 },
+	{ 211, 321 },
+	{ 147, 314 },
+	{ 147, 316 },
+	{ 147, 318 },
+	{ 147, 320 },
+	{ 147, 322 },
+	{ 212, 323 },
+	{ 212, 325 },
+	{ 212, 327 },
+	{ 148, 324 },
+	{ 148, 326 },
+	{ 148, 328 },
+	{ 148, 329 },
+	{ 213, 332 },
+	{ 213, 334 },
+	{ 213, 336 },
+	{ 213, 465 },
+	{ 213, 490 },
+	{ 149, 333 },
+	{ 149, 335 },
+	{ 149, 337 },
+	{ 149, 466 },
+	{ 149, 491 },
+	{ 217, 340 },
+	{ 217, 342 },
+	{ 217, 344 },
+	{ 153, 341 },
+	{ 153, 343 },
+	{ 153, 345 },
+	{ 226, 346 },
+	{ 226, 348 },
+	{ 226, 350 },
+	{ 226, 352 },
+	{ 162, 347 },
+	{ 162, 349 },
+	{ 162, 351 },
+	{ 162, 353 },
+	{ 227, 354 },
+	{ 227, 356 },
+	{ 163, 355 },
+	{ 163, 357 },
+	{ 228, 360 },
+	{ 228, 362 },
+	{ 228, 364 },
+	{ 228, 366 },
+	{ 228, 368 },
+	{ 228, 370 },
+	{ 228, 467 },
+	{ 164, 361 },
+	{ 164, 363 },
+	{ 164, 365 },
+	{ 164, 367 },
+	{ 164, 369 },
+	{ 164, 371 },
+	{ 164, 468 },
+	{ 230, 372 },
+	{ 166, 373 },
+	{ 232, 374 },
+	{ 232, 376 },
+	{ 168, 375 },
+	{ 233, 377 },
+	{ 233, 379 },
+	{ 233, 381 },
+	{ 169, 378 },
+	{ 169, 380 },
+	{ 169, 382 },
 };
-charconvert ebc037[] = {
- /* 0 */ 0,/*<tdbgcolor="C0C0C0"><fontface="Arial"color="000000"><b>ISO/IEC10646-1:2000CharacterName</b></font>*/
- 1,
- 2,
- 3,
- 4,
- 5,
- 6,
- 7,
- 8,
- 9,
- 10,
- 11,
- 12,
- 13,
- 14,
- 15,
- 16,
- 17,
- 18,
- 19,
- 20,
- 21,
- 22,
- 23,
- 24,
- 25,
- 26,
- 27,
- 28,
- 29,
- 30,
- 31,
- 32,
- 33,
- 34,
- 35,
- 36,
- 37,
- 38,
- 39,
- 40,
- 41,
- 42,
- 43,
- 44,
- 45,
- 46,
- 47,
- 48,
- 49,
- 50,
- 51,
- 52,
- 53,
- 54,
- 55,
- 56,
- 57,
- 58,
- 59,
- 60,
- 61,
- 62,
- 63,
- /* 64 */ 32,/*SPACE*/
- /* 65 */ 160,/*NO-BREAKSPACE*/
- /* 66 */ 226,/*LATINSMALLLETTERAWITHCIRCUMFLEX*/
- /* 67 */ 228,/*LATINSMALLLETTERAWITHDIAERESIS*/
- /* 68 */ 224,/*LATINSMALLLETTERAWITHGRAVE*/
- /* 69 */ 225,/*LATINSMALLLETTERAWITHACUTE*/
- /* 70 */ 227,/*LATINSMALLLETTERAWITHTILDE*/
- /* 71 */ 229,/*LATINSMALLLETTERAWITHRINGABOVE*/
- /* 72 */ 231,/*LATINSMALLLETTERCWITHCEDILLA*/
- /* 73 */ 241,/*LATINSMALLLETTERNWITHTILDE*/
- /* 74 */ 162,/*CENTSIGN*/
- /* 75 */ 46,/*FULLSTOP*/
- /* 76 */ 60,/*LESS-THANSIGN*/
- /* 77 */ 40,/*LEFTPARENTHESIS*/
- /* 78 */ 43,/*PLUSSIGN*/
- /* 79 */ 124,/*VERTICALLINE*/
- /* 80 */ 38,/*AMPERSAND*/
- /* 81 */ 233,/*LATINSMALLLETTEREWITHACUTE*/
- /* 82 */ 234,/*LATINSMALLLETTEREWITHCIRCUMFLEX*/
- /* 83 */ 235,/*LATINSMALLLETTEREWITHDIAERESIS*/
- /* 84 */ 232,/*LATINSMALLLETTEREWITHGRAVE*/
- /* 85 */ 237,/*LATINSMALLLETTERIWITHACUTE*/
- /* 86 */ 238,/*LATINSMALLLETTERIWITHCIRCUMFLEX*/
- /* 87 */ 239,/*LATINSMALLLETTERIWITHDIAERESIS*/
- /* 88 */ 236,/*LATINSMALLLETTERIWITHGRAVE*/
- /* 89 */ 223,/*LATINSMALLLETTERSHARPS*/
- /* 90 */ 33,/*EXCLAMATIONMARK*/
- /* 91 */ 36,/*DOLLARSIGN*/
- /* 92 */ 42,/*ASTERISK*/
- /* 93 */ 41,/*RIGHTPARENTHESIS*/
- /* 94 */ 59,/*SEMICOLON*/
- /* 95 */ 172,/*NOTSIGN*/
- /* 96 */ 45,/*HYPHEN-MINUS*/
- /* 97 */ 47,/*SOLIDUS*/
- /* 98 */ 194,/*LATINCAPITALLETTERAWITHCIRCUMFLEX*/
- /* 99 */ 196,/*LATINCAPITALLETTERAWITHDIAERESIS*/
- /* 100 */ 192,/*LATINCAPITALLETTERAWITHGRAVE*/
- /* 101 */ 193,/*LATINCAPITALLETTERAWITHACUTE*/
- /* 102 */ 195,/*LATINCAPITALLETTERAWITHTILDE*/
- /* 103 */ 197,/*LATINCAPITALLETTERAWITHRINGABOVE*/
- /* 104 */ 199,/*LATINCAPITALLETTERCWITHCEDILLA*/
- /* 105 */ 209,/*LATINCAPITALLETTERNWITHTILDE*/
- /* 106 */ 166,/*BROKENBAR*/
- /* 107 */ 44,/*COMMA*/
- /* 108 */ 37,/*PERCENTSIGN*/
- /* 109 */ 95,/*LOWLINE*/
- /* 110 */ 62,/*GREATER-THANSIGN*/
- /* 111 */ 63,/*QUESTIONMARK*/
- /* 112 */ 248,/*LATINSMALLLETTEROWITHSTROKE*/
- /* 113 */ 201,/*LATINCAPITALLETTEREWITHACUTE*/
- /* 114 */ 202,/*LATINCAPITALLETTEREWITHCIRCUMFLEX*/
- /* 115 */ 203,/*LATINCAPITALLETTEREWITHDIAERESIS*/
- /* 116 */ 200,/*LATINCAPITALLETTEREWITHGRAVE*/
- /* 117 */ 205,/*LATINCAPITALLETTERIWITHACUTE*/
- /* 118 */ 206,/*LATINCAPITALLETTERIWITHCIRCUMFLEX*/
- /* 119 */ 207,/*LATINCAPITALLETTERIWITHDIAERESIS*/
- /* 120 */ 204,/*LATINCAPITALLETTERIWITHGRAVE*/
- /* 121 */ 96,/*GRAVEACCENT*/
- /* 122 */ 58,/*COLON*/
- /* 123 */ 35,/*NUMBERSIGN*/
- /* 124 */ 64,/*COMMERCIALAT*/
- /* 125 */ 39,/*APOSTROPHE*/
- /* 126 */ 61,/*EQUALSSIGN*/
- /* 127 */ 34,/*QUOTATIONMARK*/
- /* 128 */ 216,/*LATINCAPITALLETTEROWITHSTROKE*/
- /* 129 */ 97,/*LATINSMALLLETTERA*/
- /* 130 */ 98,/*LATINSMALLLETTERB*/
- /* 131 */ 99,/*LATINSMALLLETTERC*/
- /* 132 */ 100,/*LATINSMALLLETTERD*/
- /* 133 */ 101,/*LATINSMALLLETTERE*/
- /* 134 */ 102,/*LATINSMALLLETTERF*/
- /* 135 */ 103,/*LATINSMALLLETTERG*/
- /* 136 */ 104,/*LATINSMALLLETTERH*/
- /* 137 */ 105,/*LATINSMALLLETTERI*/
- /* 138 */ 171,/*LEFT-POINTINGDOUBLEANGLEQUOTATIONMARK*/
- /* 139 */ 187,/*RIGHT-POINTINGDOUBLEANGLEQUOTATIONMARK*/
- /* 140 */ 240,/*LATINSMALLLETTERETH*/
- /* 141 */ 253,/*LATINSMALLLETTERYWITHACUTE*/
- /* 142 */ 254,/*LATINSMALLLETTERTHORN*/
- /* 143 */ 177,/*PLUS-MINUSSIGN*/
- /* 144 */ 176,/*DEGREESIGN*/
- /* 145 */ 106,/*LATINSMALLLETTERJ*/
- /* 146 */ 107,/*LATINSMALLLETTERK*/
- /* 147 */ 108,/*LATINSMALLLETTERL*/
- /* 148 */ 109,/*LATINSMALLLETTERM*/
- /* 149 */ 110,/*LATINSMALLLETTERN*/
- /* 150 */ 111,/*LATINSMALLLETTERO*/
- /* 151 */ 112,/*LATINSMALLLETTERP*/
- /* 152 */ 113,/*LATINSMALLLETTERQ*/
- /* 153 */ 114,/*LATINSMALLLETTERR*/
- /* 154 */ 170,/*FEMININEORDINALINDICATOR*/
- /* 155 */ 186,/*MASCULINEORDINALINDICATOR*/
- /* 156 */ 230,/*LATINSMALLLETTERAE*/
- /* 157 */ 184,/*CEDILLA*/
- /* 158 */ 198,/*LATINCAPITALLETTERAE*/
- /* 159 */ 164,/*CURRENCYSIGN*/
- /* 160 */ 181,/*MICROSIGN*/
- /* 161 */ 126,/*TILDE*/
- /* 162 */ 115,/*LATINSMALLLETTERS*/
- /* 163 */ 116,/*LATINSMALLLETTERT*/
- /* 164 */ 117,/*LATINSMALLLETTERU*/
- /* 165 */ 118,/*LATINSMALLLETTERV*/
- /* 166 */ 119,/*LATINSMALLLETTERW*/
- /* 167 */ 120,/*LATINSMALLLETTERX*/
- /* 168 */ 121,/*LATINSMALLLETTERY*/
- /* 169 */ 122,/*LATINSMALLLETTERZ*/
- /* 170 */ 161,/*INVERTEDEXCLAMATIONMARK*/
- /* 171 */ 191,/*INVERTEDQUESTIONMARK*/
- /* 172 */ 208,/*LATINCAPITALLETTERETH*/
- /* 173 */ 221,/*LATINCAPITALLETTERYWITHACUTE*/
- /* 174 */ 222,/*LATINCAPITALLETTERTHORN*/
- /* 175 */ 174,/*REGISTEREDSIGN*/
- /* 176 */ 94,/*CIRCUMFLEXACCENT*/
- /* 177 */ 163,/*POUNDSIGN*/
- /* 178 */ 165,/*YENSIGN*/
- /* 179 */ 183,/*MIDDLEDOT*/
- /* 180 */ 169,/*COPYRIGHTSIGN*/
- /* 181 */ 167,/*SECTIONSIGN*/
- /* 182 */ 182,/*PILCROWSIGN*/
- /* 183 */ 188,/*VULGARFRACTIONONEQUARTER*/
- /* 184 */ 189,/*VULGARFRACTIONONEHALF*/
- /* 185 */ 190,/*VULGARFRACTIONTHREEQUARTERS*/
- /* 186 */ 91,/*LEFTSQUAREBRACKET*/
- /* 187 */ 93,/*RIGHTSQUAREBRACKET*/
- /* 188 */ 175,/*MACRON*/
- /* 189 */ 168,/*DIAERESIS*/
- /* 190 */ 180,/*ACUTEACCENT*/
- /* 191 */ 215,/*MULTIPLICATIONSIGN*/
- /* 192 */ 123,/*LEFTCURLYBRACKET*/
- /* 193 */ 65,/*LATINCAPITALLETTERA*/
- /* 194 */ 66,/*LATINCAPITALLETTERB*/
- /* 195 */ 67,/*LATINCAPITALLETTERC*/
- /* 196 */ 68,/*LATINCAPITALLETTERD*/
- /* 197 */ 69,/*LATINCAPITALLETTERE*/
- /* 198 */ 70,/*LATINCAPITALLETTERF*/
- /* 199 */ 71,/*LATINCAPITALLETTERG*/
- /* 200 */ 72,/*LATINCAPITALLETTERH*/
- /* 201 */ 73,/*LATINCAPITALLETTERI*/
- /* 202 */ 173,/*SOFTHYPHEN*/
- /* 203 */ 244,/*LATINSMALLLETTEROWITHCIRCUMFLEX*/
- /* 204 */ 246,/*LATINSMALLLETTEROWITHDIAERESIS*/
- /* 205 */ 242,/*LATINSMALLLETTEROWITHGRAVE*/
- /* 206 */ 243,/*LATINSMALLLETTEROWITHACUTE*/
- /* 207 */ 245,/*LATINSMALLLETTEROWITHTILDE*/
- /* 208 */ 125,/*RIGHTCURLYBRACKET*/
- /* 209 */ 74,/*LATINCAPITALLETTERJ*/
- /* 210 */ 75,/*LATINCAPITALLETTERK*/
- /* 211 */ 76,/*LATINCAPITALLETTERL*/
- /* 212 */ 77,/*LATINCAPITALLETTERM*/
- /* 213 */ 78,/*LATINCAPITALLETTERN*/
- /* 214 */ 79,/*LATINCAPITALLETTERO*/
- /* 215 */ 80,/*LATINCAPITALLETTERP*/
- /* 216 */ 81,/*LATINCAPITALLETTERQ*/
- /* 217 */ 82,/*LATINCAPITALLETTERR*/
- /* 218 */ 185,/*SUPERSCRIPTONE*/
- /* 219 */ 251,/*LATINSMALLLETTERUWITHCIRCUMFLEX*/
- /* 220 */ 252,/*LATINSMALLLETTERUWITHDIAERESIS*/
- /* 221 */ 249,/*LATINSMALLLETTERUWITHGRAVE*/
- /* 222 */ 250,/*LATINSMALLLETTERUWITHACUTE*/
- /* 223 */ 255,/*LATINSMALLLETTERYWITHDIAERESIS*/
- /* 224 */ 92,/*REVERSESOLIDUS*/
- /* 225 */ 247,/*DIVISIONSIGN*/
- /* 226 */ 83,/*LATINCAPITALLETTERS*/
- /* 227 */ 84,/*LATINCAPITALLETTERT*/
- /* 228 */ 85,/*LATINCAPITALLETTERU*/
- /* 229 */ 86,/*LATINCAPITALLETTERV*/
- /* 230 */ 87,/*LATINCAPITALLETTERW*/
- /* 231 */ 88,/*LATINCAPITALLETTERX*/
- /* 232 */ 89,/*LATINCAPITALLETTERY*/
- /* 233 */ 90,/*LATINCAPITALLETTERZ*/
- /* 234 */ 178,/*SUPERSCRIPTTWO*/
- /* 235 */ 212,/*LATINCAPITALLETTEROWITHCIRCUMFLEX*/
- /* 236 */ 214,/*LATINCAPITALLETTEROWITHDIAERESIS*/
- /* 237 */ 210,/*LATINCAPITALLETTEROWITHGRAVE*/
- /* 238 */ 211,/*LATINCAPITALLETTEROWITHACUTE*/
- /* 239 */ 213,/*LATINCAPITALLETTEROWITHTILDE*/
- /* 240 */ 48,/*DIGITZERO*/
- /* 241 */ 49,/*DIGITONE*/
- /* 242 */ 50,/*DIGITTWO*/
- /* 243 */ 51,/*DIGITTHREE*/
- /* 244 */ 52,/*DIGITFOUR*/
- /* 245 */ 53,/*DIGITFIVE*/
- /* 246 */ 54,/*DIGITSIX*/
- /* 247 */ 55,/*DIGITSEVEN*/
- /* 248 */ 56,/*DIGITEIGHT*/
- /* 249 */ 57,/*DIGITNINE*/
- /* 250 */ 179,/*SUPERSCRIPTTHREE*/
- /* 251 */ 219,/*LATINCAPITALLETTERUWITHCIRCUMFLEX*/
- /* 252 */ 220,/*LATINCAPITALLETTERUWITHDIAERESIS*/
- /* 253 */ 217,/*LATINCAPITALLETTERUWITHGRAVE*/
- /* 254 */ 218,/*LATINCAPITALLETTERUWITHACUTE*/
- 255
+static convert_t ebc500[] = {
+	{ 0, 0 },
+	{ 1, 1 },
+	{ 2, 2 },
+	{ 3, 3 },
+	{ 4, 4 },
+	{ 5, 5 },
+	{ 6, 6 },
+	{ 7, 7 },
+	{ 8, 8 },
+	{ 9, 9 },
+	{ 10, 10 },
+	{ 11, 11 },
+	{ 12, 12 },
+	{ 13, 13 },
+	{ 14, 14 },
+	{ 15, 15 },
+	{ 16, 16 },
+	{ 17, 17 },
+	{ 18, 18 },
+	{ 19, 19 },
+	{ 20, 20 },
+	{ 21, 21 },
+	{ 22, 22 },
+	{ 23, 23 },
+	{ 24, 24 },
+	{ 25, 25 },
+	{ 26, 26 },
+	{ 27, 27 },
+	{ 28, 28 },
+	{ 29, 29 },
+	{ 30, 30 },
+	{ 31, 31 },
+	{ 32, 32 },
+	{ 33, 33 },
+	{ 34, 34 },
+	{ 35, 35 },
+	{ 36, 36 },
+	{ 37, 37 },
+	{ 38, 38 },
+	{ 39, 39 },
+	{ 40, 40 },
+	{ 41, 41 },
+	{ 42, 42 },
+	{ 43, 43 },
+	{ 44, 44 },
+	{ 45, 45 },
+	{ 46, 46 },
+	{ 47, 47 },
+	{ 48, 48 },
+	{ 49, 49 },
+	{ 50, 50 },
+	{ 51, 51 },
+	{ 52, 52 },
+	{ 53, 53 },
+	{ 54, 54 },
+	{ 55, 55 },
+	{ 56, 56 },
+	{ 57, 57 },
+	{ 58, 58 },
+	{ 59, 59 },
+	{ 60, 60 },
+	{ 61, 61 },
+	{ 62, 62 },
+	{ 63, 63 },
+	{ 64, 32 },
+	{ 65, 160 },
+	{ 66, 226 },
+	{ 67, 228 },
+	{ 68, 224 },
+	{ 69, 225 },
+	{ 70, 227 },
+	{ 71, 229 },
+	{ 72, 231 },
+	{ 73, 241 },
+	{ 74, 91 },
+	{ 75, 46 },
+	{ 76, 60 },
+	{ 77, 40 },
+	{ 78, 43 },
+	{ 79, 33 },
+	{ 80, 38 },
+	{ 81, 233 },
+	{ 82, 234 },
+	{ 83, 235 },
+	{ 84, 232 },
+	{ 85, 237 },
+	{ 86, 238 },
+	{ 87, 239 },
+	{ 88, 236 },
+	{ 89, 223 },
+	{ 90, 93 },
+	{ 91, 36 },
+	{ 92, 42 },
+	{ 93, 41 },
+	{ 94, 59 },
+	{ 95, 94 },
+	{ 96, 45 },
+	{ 97, 47 },
+	{ 98, 194 },
+	{ 99, 196 },
+	{ 100, 192 },
+	{ 101, 193 },
+	{ 102, 195 },
+	{ 103, 197 },
+	{ 104, 199 },
+	{ 105, 209 },
+	{ 106, 166 },
+	{ 107, 44 },
+	{ 108, 37 },
+	{ 109, 95 },
+	{ 110, 62 },
+	{ 111, 63 },
+	{ 112, 248 },
+	{ 113, 201 },
+	{ 114, 202 },
+	{ 115, 203 },
+	{ 116, 200 },
+	{ 117, 205 },
+	{ 118, 206 },
+	{ 119, 207 },
+	{ 120, 204 },
+	{ 121, 96 },
+	{ 122, 58 },
+	{ 123, 35 },
+	{ 124, 64 },
+	{ 125, 39 },
+	{ 126, 61 },
+	{ 127, 34 },
+	{ 128, 216 },
+	{ 129, 97 },
+	{ 130, 98 },
+	{ 131, 99 },
+	{ 132, 100 },
+	{ 133, 101 },
+	{ 134, 102 },
+	{ 135, 103 },
+	{ 136, 104 },
+	{ 137, 105 },
+	{ 138, 171 },
+	{ 139, 187 },
+	{ 140, 240 },
+	{ 141, 253 },
+	{ 142, 254 },
+	{ 143, 177 },
+	{ 144, 176 },
+	{ 145, 106 },
+	{ 146, 107 },
+	{ 147, 108 },
+	{ 148, 109 },
+	{ 149, 110 },
+	{ 150, 111 },
+	{ 151, 112 },
+	{ 152, 113 },
+	{ 153, 114 },
+	{ 154, 170 },
+	{ 155, 186 },
+	{ 156, 230 },
+	{ 157, 184 },
+	{ 158, 198 },
+	{ 159, 164 },
+	{ 160, 181 },
+	{ 161, 126 },
+	{ 162, 115 },
+	{ 163, 116 },
+	{ 164, 117 },
+	{ 165, 118 },
+	{ 166, 119 },
+	{ 167, 120 },
+	{ 168, 121 },
+	{ 169, 122 },
+	{ 170, 161 },
+	{ 171, 191 },
+	{ 172, 208 },
+	{ 173, 221 },
+	{ 174, 222 },
+	{ 175, 174 },
+	{ 176, 162 },
+	{ 177, 163 },
+	{ 178, 165 },
+	{ 179, 183 },
+	{ 180, 169 },
+	{ 181, 167 },
+	{ 182, 182 },
+	{ 183, 188 },
+	{ 184, 189 },
+	{ 185, 190 },
+	{ 186, 172 },
+	{ 187, 124 },
+	{ 188, 175 },
+	{ 189, 168 },
+	{ 190, 180 },
+	{ 191, 215 },
+	{ 192, 123 },
+	{ 193, 65 },
+	{ 194, 66 },
+	{ 195, 67 },
+	{ 196, 68 },
+	{ 197, 69 },
+	{ 198, 70 },
+	{ 199, 71 },
+	{ 200, 72 },
+	{ 201, 73 },
+	{ 202, 173 },
+	{ 203, 244 },
+	{ 204, 246 },
+	{ 205, 242 },
+	{ 206, 243 },
+	{ 207, 245 },
+	{ 208, 125 },
+	{ 209, 74 },
+	{ 210, 75 },
+	{ 211, 76 },
+	{ 212, 77 },
+	{ 213, 78 },
+	{ 214, 79 },
+	{ 215, 80 },
+	{ 216, 81 },
+	{ 217, 82 },
+	{ 218, 185 },
+	{ 219, 251 },
+	{ 220, 252 },
+	{ 221, 249 },
+	{ 222, 250 },
+	{ 223, 255 },
+	{ 224, 92 },
+	{ 225, 247 },
+	{ 226, 83 },
+	{ 227, 84 },
+	{ 228, 85 },
+	{ 229, 86 },
+	{ 230, 87 },
+	{ 231, 88 },
+	{ 232, 89 },
+	{ 233, 90 },
+	{ 234, 178 },
+	{ 235, 212 },
+	{ 236, 214 },
+	{ 237, 210 },
+	{ 238, 211 },
+	{ 239, 213 },
+	{ 240, 48 },
+	{ 241, 49 },
+	{ 242, 50 },
+	{ 243, 51 },
+	{ 244, 52 },
+	{ 245, 53 },
+	{ 246, 54 },
+	{ 247, 55 },
+	{ 248, 56 },
+	{ 249, 57 },
+	{ 250, 179 },
+	{ 251, 219 },
+	{ 252, 220 },
+	{ 253, 217 },
+	{ 254, 218 },
+	{ 255, 255 },
+	{ 34, 8220 },
+	{ 34, 8221 },
+	{ 39, 8216 },
+	{ 39, 8217 },
+	{ 45, 8211 },
+	{ 45, 8212 },
+	{ 32, 8194 },
+	{ 32, 8195 },
+	{ 32, 8201 },
+	{ 193, 256 },
+	{ 193, 258 },
+	{ 193, 260 },
+	{ 193, 461 },
+	{ 129, 257 },
+	{ 129, 259 },
+	{ 129, 261 },
+	{ 129, 462 },
+	{ 195, 262 },
+	{ 195, 264 },
+	{ 195, 266 },
+	{ 195, 268 },
+	{ 131, 263 },
+	{ 131, 265 },
+	{ 131, 267 },
+	{ 131, 269 },
+	{ 196, 270 },
+	{ 132, 271 },
+	{ 197, 274 },
+	{ 197, 276 },
+	{ 197, 278 },
+	{ 197, 280 },
+	{ 197, 282 },
+	{ 133, 275 },
+	{ 133, 277 },
+	{ 133, 279 },
+	{ 133, 281 },
+	{ 133, 283 },
+	{ 199, 284 },
+	{ 199, 286 },
+	{ 199, 288 },
+	{ 199, 290 },
+	{ 199, 486 },
+	{ 199, 500 },
+	{ 135, 285 },
+	{ 135, 287 },
+	{ 135, 289 },
+	{ 135, 291 },
+	{ 135, 487 },
+	{ 135, 501 },
+	{ 200, 292 },
+	{ 136, 293 },
+	{ 201, 296 },
+	{ 201, 298 },
+	{ 201, 300 },
+	{ 201, 302 },
+	{ 201, 304 },
+	{ 201, 463 },
+	{ 137, 297 },
+	{ 137, 299 },
+	{ 137, 301 },
+	{ 137, 303 },
+	{ 137, 305 },
+	{ 137, 464 },
+	{ 209, 308 },
+	{ 145, 309 },
+	{ 210, 310 },
+	{ 210, 488 },
+	{ 146, 311 },
+	{ 146, 489 },
+	{ 211, 313 },
+	{ 211, 315 },
+	{ 211, 317 },
+	{ 211, 319 },
+	{ 211, 321 },
+	{ 147, 314 },
+	{ 147, 316 },
+	{ 147, 318 },
+	{ 147, 320 },
+	{ 147, 322 },
+	{ 212, 323 },
+	{ 212, 325 },
+	{ 212, 327 },
+	{ 148, 324 },
+	{ 148, 326 },
+	{ 148, 328 },
+	{ 148, 329 },
+	{ 213, 332 },
+	{ 213, 334 },
+	{ 213, 336 },
+	{ 213, 465 },
+	{ 213, 490 },
+	{ 149, 333 },
+	{ 149, 335 },
+	{ 149, 337 },
+	{ 149, 466 },
+	{ 149, 491 },
+	{ 217, 340 },
+	{ 217, 342 },
+	{ 217, 344 },
+	{ 153, 341 },
+	{ 153, 343 },
+	{ 153, 345 },
+	{ 226, 346 },
+	{ 226, 348 },
+	{ 226, 350 },
+	{ 226, 352 },
+	{ 162, 347 },
+	{ 162, 349 },
+	{ 162, 351 },
+	{ 162, 353 },
+	{ 227, 354 },
+	{ 227, 356 },
+	{ 163, 355 },
+	{ 163, 357 },
+	{ 228, 360 },
+	{ 228, 362 },
+	{ 228, 364 },
+	{ 228, 366 },
+	{ 228, 368 },
+	{ 228, 370 },
+	{ 228, 467 },
+	{ 164, 361 },
+	{ 164, 363 },
+	{ 164, 365 },
+	{ 164, 367 },
+	{ 164, 369 },
+	{ 164, 371 },
+	{ 164, 468 },
+	{ 230, 372 },
+	{ 166, 373 },
+	{ 232, 374 },
+	{ 232, 376 },
+	{ 168, 375 },
+	{ 233, 377 },
+	{ 233, 379 },
+	{ 233, 381 },
+	{ 169, 378 },
+	{ 169, 380 },
+	{ 169, 382 },
 };
-charconvert ebc1026[] = {
- /* 0 */ 0,/*<tdbgcolor="C0C0C0"><fontface="Arial"color="000000"><b>ISO/IEC10646-1:2000CharacterName</b></font>*/
- 1,
- 2,
- 3,
- 4,
- 5,
- 6,
- 7,
- 8,
- 9,
- 10,
- 11,
- 12,
- 13,
- 14,
- 15,
- 16,
- 17,
- 18,
- 19,
- 20,
- 21,
- 22,
- 23,
- 24,
- 25,
- 26,
- 27,
- 28,
- 29,
- 30,
- 31,
- 32,
- 33,
- 34,
- 35,
- 36,
- 37,
- 38,
- 39,
- 40,
- 41,
- 42,
- 43,
- 44,
- 45,
- 46,
- 47,
- 48,
- 49,
- 50,
- 51,
- 52,
- 53,
- 54,
- 55,
- 56,
- 57,
- 58,
- 59,
- 60,
- 61,
- 62,
- 63,
- /* 64 */ 32,/*SPACE*/
- /* 65 */ 160,/*NO-BREAKSPACE*/
- /* 66 */ 226,/*LATINSMALLLETTERAWITHCIRCUMFLEX*/
- /* 67 */ 228,/*LATINSMALLLETTERAWITHDIAERESIS*/
- /* 68 */ 224,/*LATINSMALLLETTERAWITHGRAVE*/
- /* 69 */ 225,/*LATINSMALLLETTERAWITHACUTE*/
- /* 70 */ 227,/*LATINSMALLLETTERAWITHTILDE*/
- /* 71 */ 229,/*LATINSMALLLETTERAWITHRINGABOVE*/
- /* 72 */ 123,/*LEFTCURLYBRACKET*/
- /* 73 */ 241,/*LATINSMALLLETTERNWITHTILDE*/
- /* 74 */ 199,/*LATINCAPITALLETTERCWITHCEDILLA*/
- /* 75 */ 46,/*FULLSTOP*/
- /* 76 */ 60,/*LESS-THANSIGN*/
- /* 77 */ 40,/*LEFTPARENTHESIS*/
- /* 78 */ 43,/*PLUSSIGN*/
- /* 79 */ 33,/*EXCLAMATIONMARK*/
- /* 80 */ 38,/*AMPERSAND*/
- /* 81 */ 233,/*LATINSMALLLETTEREWITHACUTE*/
- /* 82 */ 234,/*LATINSMALLLETTEREWITHCIRCUMFLEX*/
- /* 83 */ 235,/*LATINSMALLLETTEREWITHDIAERESIS*/
- /* 84 */ 232,/*LATINSMALLLETTEREWITHGRAVE*/
- /* 85 */ 237,/*LATINSMALLLETTERIWITHACUTE*/
- /* 86 */ 238,/*LATINSMALLLETTERIWITHCIRCUMFLEX*/
- /* 87 */ 239,/*LATINSMALLLETTERIWITHDIAERESIS*/
- /* 88 */ 236,/*LATINSMALLLETTERIWITHGRAVE*/
- /* 89 */ 223,/*LATINSMALLLETTERSHARPS*/
- /* 90 */ 286,/*LATINCAPITALLETTERGWITHBREVE*/
- /* 91 */ 304,/*LATINCAPITALLETTERIWITHDOTABOVE*/
- /* 92 */ 42,/*ASTERISK*/
- /* 93 */ 41,/*RIGHTPARENTHESIS*/
- /* 94 */ 59,/*SEMICOLON*/
- /* 95 */ 94,/*CIRCUMFLEXACCENT*/
- /* 96 */ 45,/*HYPHEN-MINUS*/
- /* 97 */ 47,/*SOLIDUS*/
- /* 98 */ 194,/*LATINCAPITALLETTERAWITHCIRCUMFLEX*/
- /* 99 */ 196,/*LATINCAPITALLETTERAWITHDIAERESIS*/
- /* 100 */ 192,/*LATINCAPITALLETTERAWITHGRAVE*/
- /* 101 */ 193,/*LATINCAPITALLETTERAWITHACUTE*/
- /* 102 */ 195,/*LATINCAPITALLETTERAWITHTILDE*/
- /* 103 */ 197,/*LATINCAPITALLETTERAWITHRINGABOVE*/
- /* 104 */ 91,/*LEFTSQUAREBRACKET*/
- /* 105 */ 209,/*LATINCAPITALLETTERNWITHTILDE*/
- /* 106 */ 351,/*LATINSMALLLETTERSWITHCEDILLA*/
- /* 107 */ 44,/*COMMA*/
- /* 108 */ 37,/*PERCENTSIGN*/
- /* 109 */ 95,/*LOWLINE*/
- /* 110 */ 62,/*GREATER-THANSIGN*/
- /* 111 */ 63,/*QUESTIONMARK*/
- /* 112 */ 248,/*LATINSMALLLETTEROWITHSTROKE*/
- /* 113 */ 201,/*LATINCAPITALLETTEREWITHACUTE*/
- /* 114 */ 202,/*LATINCAPITALLETTEREWITHCIRCUMFLEX*/
- /* 115 */ 203,/*LATINCAPITALLETTEREWITHDIAERESIS*/
- /* 116 */ 200,/*LATINCAPITALLETTEREWITHGRAVE*/
- /* 117 */ 205,/*LATINCAPITALLETTERIWITHACUTE*/
- /* 118 */ 206,/*LATINCAPITALLETTERIWITHCIRCUMFLEX*/
- /* 119 */ 207,/*LATINCAPITALLETTERIWITHDIAERESIS*/
- /* 120 */ 204,/*LATINCAPITALLETTERIWITHGRAVE*/
- /* 121 */ 305,/*LATINSMALLLETTERDOTLESSI*/
- /* 122 */ 58,/*COLON*/
- /* 123 */ 214,/*LATINCAPITALLETTEROWITHDIAERESIS*/
- /* 124 */ 350,/*LATINCAPITALLETTERSWITHCEDILLA*/
- /* 125 */ 39,/*APOSTROPHE*/
- /* 126 */ 61,/*EQUALSSIGN*/
- /* 127 */ 220,/*LATINCAPITALLETTERUWITHDIAERESIS*/
- /* 128 */ 216,/*LATINCAPITALLETTEROWITHSTROKE*/
- /* 129 */ 97,/*LATINSMALLLETTERA*/
- /* 130 */ 98,/*LATINSMALLLETTERB*/
- /* 131 */ 99,/*LATINSMALLLETTERC*/
- /* 132 */ 100,/*LATINSMALLLETTERD*/
- /* 133 */ 101,/*LATINSMALLLETTERE*/
- /* 134 */ 102,/*LATINSMALLLETTERF*/
- /* 135 */ 103,/*LATINSMALLLETTERG*/
- /* 136 */ 104,/*LATINSMALLLETTERH*/
- /* 137 */ 105,/*LATINSMALLLETTERI*/
- /* 138 */ 171,/*LEFT-POINTINGDOUBLEANGLEQUOTATIONMARK*/
- /* 139 */ 187,/*RIGHT-POINTINGDOUBLEANGLEQUOTATIONMARK*/
- /* 140 */ 125,/*RIGHTCURLYBRACKET*/
- /* 141 */ 96,/*GRAVEACCENT*/
- /* 142 */ 166,/*BROKENBAR*/
- /* 143 */ 177,/*PLUS-MINUSSIGN*/
- /* 144 */ 176,/*DEGREESIGN*/
- /* 145 */ 106,/*LATINSMALLLETTERJ*/
- /* 146 */ 107,/*LATINSMALLLETTERK*/
- /* 147 */ 108,/*LATINSMALLLETTERL*/
- /* 148 */ 109,/*LATINSMALLLETTERM*/
- /* 149 */ 110,/*LATINSMALLLETTERN*/
- /* 150 */ 111,/*LATINSMALLLETTERO*/
- /* 151 */ 112,/*LATINSMALLLETTERP*/
- /* 152 */ 113,/*LATINSMALLLETTERQ*/
- /* 153 */ 114,/*LATINSMALLLETTERR*/
- /* 154 */ 170,/*FEMININEORDINALINDICATOR*/
- /* 155 */ 186,/*MASCULINEORDINALINDICATOR*/
- /* 156 */ 230,/*LATINSMALLLETTERAE*/
- /* 157 */ 184,/*CEDILLA*/
- /* 158 */ 198,/*LATINCAPITALLETTERAE*/
- /* 159 */ 164,/*CURRENCYSIGN*/
- /* 160 */ 181,/*MICROSIGN*/
- /* 161 */ 246,/*LATINSMALLLETTEROWITHDIAERESIS*/
- /* 162 */ 115,/*LATINSMALLLETTERS*/
- /* 163 */ 116,/*LATINSMALLLETTERT*/
- /* 164 */ 117,/*LATINSMALLLETTERU*/
- /* 165 */ 118,/*LATINSMALLLETTERV*/
- /* 166 */ 119,/*LATINSMALLLETTERW*/
- /* 167 */ 120,/*LATINSMALLLETTERX*/
- /* 168 */ 121,/*LATINSMALLLETTERY*/
- /* 169 */ 122,/*LATINSMALLLETTERZ*/
- /* 170 */ 161,/*INVERTEDEXCLAMATIONMARK*/
- /* 171 */ 191,/*INVERTEDQUESTIONMARK*/
- /* 172 */ 93,/*RIGHTSQUAREBRACKET*/
- /* 173 */ 36,/*DOLLARSIGN*/
- /* 174 */ 64,/*COMMERCIALAT*/
- /* 175 */ 174,/*REGISTEREDSIGN*/
- /* 176 */ 162,/*CENTSIGN*/
- /* 177 */ 163,/*POUNDSIGN*/
- /* 178 */ 165,/*YENSIGN*/
- /* 179 */ 183,/*MIDDLEDOT*/
- /* 180 */ 169,/*COPYRIGHTSIGN*/
- /* 181 */ 167,/*SECTIONSIGN*/
- /* 182 */ 182,/*PILCROWSIGN*/
- /* 183 */ 188,/*VULGARFRACTIONONEQUARTER*/
- /* 184 */ 189,/*VULGARFRACTIONONEHALF*/
- /* 185 */ 190,/*VULGARFRACTIONTHREEQUARTERS*/
- /* 186 */ 172,/*NOTSIGN*/
- /* 187 */ 124,/*VERTICALLINE*/
- /* 188 */ 175,/*MACRON*/
- /* 189 */ 168,/*DIAERESIS*/
- /* 190 */ 180,/*ACUTEACCENT*/
- /* 191 */ 215,/*MULTIPLICATIONSIGN*/
- /* 192 */ 231,/*LATINSMALLLETTERCWITHCEDILLA*/
- /* 193 */ 65,/*LATINCAPITALLETTERA*/
- /* 194 */ 66,/*LATINCAPITALLETTERB*/
- /* 195 */ 67,/*LATINCAPITALLETTERC*/
- /* 196 */ 68,/*LATINCAPITALLETTERD*/
- /* 197 */ 69,/*LATINCAPITALLETTERE*/
- /* 198 */ 70,/*LATINCAPITALLETTERF*/
- /* 199 */ 71,/*LATINCAPITALLETTERG*/
- /* 200 */ 72,/*LATINCAPITALLETTERH*/
- /* 201 */ 73,/*LATINCAPITALLETTERI*/
- /* 202 */ 173,/*SOFTHYPHEN*/
- /* 203 */ 244,/*LATINSMALLLETTEROWITHCIRCUMFLEX*/
- /* 204 */ 126,/*TILDE*/
- /* 205 */ 242,/*LATINSMALLLETTEROWITHGRAVE*/
- /* 206 */ 243,/*LATINSMALLLETTEROWITHACUTE*/
- /* 207 */ 245,/*LATINSMALLLETTEROWITHTILDE*/
- /* 208 */ 287,/*LATINSMALLLETTERGWITHBREVE*/
- /* 209 */ 74,/*LATINCAPITALLETTERJ*/
- /* 210 */ 75,/*LATINCAPITALLETTERK*/
- /* 211 */ 76,/*LATINCAPITALLETTERL*/
- /* 212 */ 77,/*LATINCAPITALLETTERM*/
- /* 213 */ 78,/*LATINCAPITALLETTERN*/
- /* 214 */ 79,/*LATINCAPITALLETTERO*/
- /* 215 */ 80,/*LATINCAPITALLETTERP*/
- /* 216 */ 81,/*LATINCAPITALLETTERQ*/
- /* 217 */ 82,/*LATINCAPITALLETTERR*/
- /* 218 */ 185,/*SUPERSCRIPTONE*/
- /* 219 */ 251,/*LATINSMALLLETTERUWITHCIRCUMFLEX*/
- /* 220 */ 92,/*REVERSESOLIDUS*/
- /* 221 */ 249,/*LATINSMALLLETTERUWITHGRAVE*/
- /* 222 */ 250,/*LATINSMALLLETTERUWITHACUTE*/
- /* 223 */ 255,/*LATINSMALLLETTERYWITHDIAERESIS*/
- /* 224 */ 252,/*LATINSMALLLETTERUWITHDIAERESIS*/
- /* 225 */ 247,/*DIVISIONSIGN*/
- /* 226 */ 83,/*LATINCAPITALLETTERS*/
- /* 227 */ 84,/*LATINCAPITALLETTERT*/
- /* 228 */ 85,/*LATINCAPITALLETTERU*/
- /* 229 */ 86,/*LATINCAPITALLETTERV*/
- /* 230 */ 87,/*LATINCAPITALLETTERW*/
- /* 231 */ 88,/*LATINCAPITALLETTERX*/
- /* 232 */ 89,/*LATINCAPITALLETTERY*/
- /* 233 */ 90,/*LATINCAPITALLETTERZ*/
- /* 234 */ 178,/*SUPERSCRIPTTWO*/
- /* 235 */ 212,/*LATINCAPITALLETTEROWITHCIRCUMFLEX*/
- /* 236 */ 35,/*NUMBERSIGN*/
- /* 237 */ 210,/*LATINCAPITALLETTEROWITHGRAVE*/
- /* 238 */ 211,/*LATINCAPITALLETTEROWITHACUTE*/
- /* 239 */ 213,/*LATINCAPITALLETTEROWITHTILDE*/
- /* 240 */ 48,/*DIGITZERO*/
- /* 241 */ 49,/*DIGITONE*/
- /* 242 */ 50,/*DIGITTWO*/
- /* 243 */ 51,/*DIGITTHREE*/
- /* 244 */ 52,/*DIGITFOUR*/
- /* 245 */ 53,/*DIGITFIVE*/
- /* 246 */ 54,/*DIGITSIX*/
- /* 247 */ 55,/*DIGITSEVEN*/
- /* 248 */ 56,/*DIGITEIGHT*/
- /* 249 */ 57,/*DIGITNINE*/
- /* 250 */ 179,/*SUPERSCRIPTTHREE*/
- /* 251 */ 219,/*LATINCAPITALLETTERUWITHCIRCUMFLEX*/
- /* 252 */ 34,/*QUOTATIONMARK*/
- /* 253 */ 217,/*LATINCAPITALLETTERUWITHGRAVE*/
- /* 254 */ 218,/*LATINCAPITALLETTERUWITHACUTE*/
- 255
+static convert_t ebc875[] = {
+	{ 0, 0 },
+	{ 1, 1 },
+	{ 2, 2 },
+	{ 3, 3 },
+	{ 4, 4 },
+	{ 5, 5 },
+	{ 6, 6 },
+	{ 7, 7 },
+	{ 8, 8 },
+	{ 9, 9 },
+	{ 10, 10 },
+	{ 11, 11 },
+	{ 12, 12 },
+	{ 13, 13 },
+	{ 14, 14 },
+	{ 15, 15 },
+	{ 16, 16 },
+	{ 17, 17 },
+	{ 18, 18 },
+	{ 19, 19 },
+	{ 20, 20 },
+	{ 21, 21 },
+	{ 22, 22 },
+	{ 23, 23 },
+	{ 24, 24 },
+	{ 25, 25 },
+	{ 26, 26 },
+	{ 27, 27 },
+	{ 28, 28 },
+	{ 29, 29 },
+	{ 30, 30 },
+	{ 31, 31 },
+	{ 32, 32 },
+	{ 33, 33 },
+	{ 34, 34 },
+	{ 35, 35 },
+	{ 36, 36 },
+	{ 37, 37 },
+	{ 38, 38 },
+	{ 39, 39 },
+	{ 40, 40 },
+	{ 41, 41 },
+	{ 42, 42 },
+	{ 43, 43 },
+	{ 44, 44 },
+	{ 45, 45 },
+	{ 46, 46 },
+	{ 47, 47 },
+	{ 48, 48 },
+	{ 49, 49 },
+	{ 50, 50 },
+	{ 51, 51 },
+	{ 52, 52 },
+	{ 53, 53 },
+	{ 54, 54 },
+	{ 55, 55 },
+	{ 56, 56 },
+	{ 57, 57 },
+	{ 58, 58 },
+	{ 59, 59 },
+	{ 60, 60 },
+	{ 61, 61 },
+	{ 62, 62 },
+	{ 63, 63 },
+	{ 64, 32 },
+	{ 65, 913 },
+	{ 66, 914 },
+	{ 67, 915 },
+	{ 68, 916 },
+	{ 69, 917 },
+	{ 70, 918 },
+	{ 71, 919 },
+	{ 72, 920 },
+	{ 73, 921 },
+	{ 74, 91 },
+	{ 75, 46 },
+	{ 76, 60 },
+	{ 77, 40 },
+	{ 78, 43 },
+	{ 79, 33 },
+	{ 80, 38 },
+	{ 81, 922 },
+	{ 82, 923 },
+	{ 83, 924 },
+	{ 84, 925 },
+	{ 85, 926 },
+	{ 86, 927 },
+	{ 87, 928 },
+	{ 88, 929 },
+	{ 89, 931 },
+	{ 90, 93 },
+	{ 91, 36 },
+	{ 92, 42 },
+	{ 93, 41 },
+	{ 94, 59 },
+	{ 95, 94 },
+	{ 96, 45 },
+	{ 97, 47 },
+	{ 98, 932 },
+	{ 99, 933 },
+	{ 100, 934 },
+	{ 101, 935 },
+	{ 102, 936 },
+	{ 103, 937 },
+	{ 104, 938 },
+	{ 105, 939 },
+	{ 106, 124 },
+	{ 107, 44 },
+	{ 108, 37 },
+	{ 109, 95 },
+	{ 110, 62 },
+	{ 111, 63 },
+	{ 112, 168 },
+	{ 113, 902 },
+	{ 114, 904 },
+	{ 115, 905 },
+	{ 116, 160 },
+	{ 117, 906 },
+	{ 118, 908 },
+	{ 119, 910 },
+	{ 120, 911 },
+	{ 121, 96 },
+	{ 122, 58 },
+	{ 123, 35 },
+	{ 124, 64 },
+	{ 125, 39 },
+	{ 126, 61 },
+	{ 127, 34 },
+	{ 128, 901 },
+	{ 129, 97 },
+	{ 130, 98 },
+	{ 131, 99 },
+	{ 132, 100 },
+	{ 133, 101 },
+	{ 134, 102 },
+	{ 135, 103 },
+	{ 136, 104 },
+	{ 137, 105 },
+	{ 138, 945 },
+	{ 139, 946 },
+	{ 140, 947 },
+	{ 141, 948 },
+	{ 142, 949 },
+	{ 143, 950 },
+	{ 144, 176 },
+	{ 145, 106 },
+	{ 146, 107 },
+	{ 147, 108 },
+	{ 148, 109 },
+	{ 149, 110 },
+	{ 150, 111 },
+	{ 151, 112 },
+	{ 152, 113 },
+	{ 153, 114 },
+	{ 154, 951 },
+	{ 155, 952 },
+	{ 156, 953 },
+	{ 157, 954 },
+	{ 158, 955 },
+	{ 159, 956 },
+	{ 160, 180 },
+	{ 161, 126 },
+	{ 162, 115 },
+	{ 163, 116 },
+	{ 164, 117 },
+	{ 165, 118 },
+	{ 166, 119 },
+	{ 167, 120 },
+	{ 168, 121 },
+	{ 169, 122 },
+	{ 170, 957 },
+	{ 171, 958 },
+	{ 172, 959 },
+	{ 173, 960 },
+	{ 174, 961 },
+	{ 175, 963 },
+	{ 176, 163 },
+	{ 177, 940 },
+	{ 178, 941 },
+	{ 179, 942 },
+	{ 180, 970 },
+	{ 181, 943 },
+	{ 182, 972 },
+	{ 183, 973 },
+	{ 184, 971 },
+	{ 185, 974 },
+	{ 186, 962 },
+	{ 187, 964 },
+	{ 188, 965 },
+	{ 189, 966 },
+	{ 190, 967 },
+	{ 191, 968 },
+	{ 192, 123 },
+	{ 193, 65 },
+	{ 194, 66 },
+	{ 195, 67 },
+	{ 196, 68 },
+	{ 197, 69 },
+	{ 198, 70 },
+	{ 199, 71 },
+	{ 200, 72 },
+	{ 201, 73 },
+	{ 202, 173 },
+	{ 203, 969 },
+	{ 204, 912 },
+	{ 205, 944 },
+	{ 206, 206 },
+	{ 207, 207 },
+	{ 208, 125 },
+	{ 209, 74 },
+	{ 210, 75 },
+	{ 211, 76 },
+	{ 212, 77 },
+	{ 213, 78 },
+	{ 214, 79 },
+	{ 215, 80 },
+	{ 216, 81 },
+	{ 217, 82 },
+	{ 218, 177 },
+	{ 219, 189 },
+	{ 220, 220 },
+	{ 221, 183 },
+	{ 222, 222 },
+	{ 223, 166 },
+	{ 224, 92 },
+	{ 225, 225 },
+	{ 226, 83 },
+	{ 227, 84 },
+	{ 228, 85 },
+	{ 229, 86 },
+	{ 230, 87 },
+	{ 231, 88 },
+	{ 232, 89 },
+	{ 233, 90 },
+	{ 234, 178 },
+	{ 235, 167 },
+	{ 236, 236 },
+	{ 237, 237 },
+	{ 238, 171 },
+	{ 239, 172 },
+	{ 240, 48 },
+	{ 241, 49 },
+	{ 242, 50 },
+	{ 243, 51 },
+	{ 244, 52 },
+	{ 245, 53 },
+	{ 246, 54 },
+	{ 247, 55 },
+	{ 248, 56 },
+	{ 249, 57 },
+	{ 250, 179 },
+	{ 251, 169 },
+	{ 252, 252 },
+	{ 253, 253 },
+	{ 254, 187 },
+	{ 255, 255 },
+	{ 34, 8220 },
+	{ 34, 8221 },
+	{ 39, 8216 },
+	{ 39, 8217 },
+	{ 45, 8211 },
+	{ 45, 8212 },
+	{ 32, 8194 },
+	{ 32, 8195 },
+	{ 32, 8201 },
+	{ 193, 192 },
+	{ 193, 193 },
+	{ 193, 194 },
+	{ 193, 195 },
+	{ 193, 196 },
+	{ 193, 197 },
+	{ 193, 256 },
+	{ 193, 258 },
+	{ 193, 260 },
+	{ 193, 461 },
+	{ 129, 224 },
+	{ 129, 226 },
+	{ 129, 227 },
+	{ 129, 228 },
+	{ 129, 229 },
+	{ 129, 257 },
+	{ 129, 259 },
+	{ 129, 261 },
+	{ 129, 462 },
+	{ 195, 199 },
+	{ 195, 262 },
+	{ 195, 264 },
+	{ 195, 266 },
+	{ 195, 268 },
+	{ 131, 231 },
+	{ 131, 263 },
+	{ 131, 265 },
+	{ 131, 267 },
+	{ 131, 269 },
+	{ 196, 270 },
+	{ 132, 271 },
+	{ 197, 200 },
+	{ 197, 201 },
+	{ 197, 202 },
+	{ 197, 203 },
+	{ 197, 274 },
+	{ 197, 276 },
+	{ 197, 278 },
+	{ 197, 280 },
+	{ 197, 282 },
+	{ 133, 232 },
+	{ 133, 233 },
+	{ 133, 234 },
+	{ 133, 235 },
+	{ 133, 275 },
+	{ 133, 277 },
+	{ 133, 279 },
+	{ 133, 281 },
+	{ 133, 283 },
+	{ 199, 284 },
+	{ 199, 286 },
+	{ 199, 288 },
+	{ 199, 290 },
+	{ 199, 486 },
+	{ 199, 500 },
+	{ 135, 285 },
+	{ 135, 287 },
+	{ 135, 289 },
+	{ 135, 291 },
+	{ 135, 487 },
+	{ 135, 501 },
+	{ 200, 292 },
+	{ 136, 293 },
+	{ 201, 204 },
+	{ 201, 205 },
+	{ 201, 296 },
+	{ 201, 298 },
+	{ 201, 300 },
+	{ 201, 302 },
+	{ 201, 304 },
+	{ 201, 463 },
+	{ 137, 238 },
+	{ 137, 239 },
+	{ 137, 297 },
+	{ 137, 299 },
+	{ 137, 301 },
+	{ 137, 303 },
+	{ 137, 305 },
+	{ 137, 464 },
+	{ 209, 308 },
+	{ 145, 309 },
+	{ 210, 310 },
+	{ 210, 488 },
+	{ 146, 311 },
+	{ 146, 489 },
+	{ 211, 313 },
+	{ 211, 315 },
+	{ 211, 317 },
+	{ 211, 319 },
+	{ 211, 321 },
+	{ 147, 314 },
+	{ 147, 316 },
+	{ 147, 318 },
+	{ 147, 320 },
+	{ 147, 322 },
+	{ 212, 209 },
+	{ 212, 323 },
+	{ 212, 325 },
+	{ 212, 327 },
+	{ 148, 241 },
+	{ 148, 324 },
+	{ 148, 326 },
+	{ 148, 328 },
+	{ 148, 329 },
+	{ 213, 210 },
+	{ 213, 211 },
+	{ 213, 212 },
+	{ 213, 213 },
+	{ 213, 214 },
+	{ 213, 216 },
+	{ 213, 332 },
+	{ 213, 334 },
+	{ 213, 336 },
+	{ 213, 465 },
+	{ 213, 490 },
+	{ 149, 242 },
+	{ 149, 243 },
+	{ 149, 244 },
+	{ 149, 245 },
+	{ 149, 246 },
+	{ 149, 248 },
+	{ 149, 333 },
+	{ 149, 335 },
+	{ 149, 337 },
+	{ 149, 466 },
+	{ 149, 491 },
+	{ 217, 340 },
+	{ 217, 342 },
+	{ 217, 344 },
+	{ 153, 341 },
+	{ 153, 343 },
+	{ 153, 345 },
+	{ 226, 346 },
+	{ 226, 348 },
+	{ 226, 350 },
+	{ 226, 352 },
+	{ 162, 347 },
+	{ 162, 349 },
+	{ 162, 351 },
+	{ 162, 353 },
+	{ 227, 354 },
+	{ 227, 356 },
+	{ 163, 355 },
+	{ 163, 357 },
+	{ 228, 217 },
+	{ 228, 218 },
+	{ 228, 219 },
+	{ 228, 360 },
+	{ 228, 362 },
+	{ 228, 364 },
+	{ 228, 366 },
+	{ 228, 368 },
+	{ 228, 370 },
+	{ 228, 467 },
+	{ 164, 249 },
+	{ 164, 250 },
+	{ 164, 251 },
+	{ 164, 361 },
+	{ 164, 363 },
+	{ 164, 365 },
+	{ 164, 367 },
+	{ 164, 369 },
+	{ 164, 371 },
+	{ 164, 468 },
+	{ 230, 372 },
+	{ 166, 373 },
+	{ 232, 221 },
+	{ 232, 374 },
+	{ 232, 376 },
+	{ 168, 375 },
+	{ 233, 377 },
+	{ 233, 379 },
+	{ 233, 381 },
+	{ 169, 378 },
+	{ 169, 380 },
+	{ 169, 382 },
 };
-charconvert ebc1047[] = {
- /* 0 */ 0,/*<tdbgcolor="C0C0C0"><fontface="Arial"color="000000"><b>ISO/IEC10646-1:2000CharacterName</b></font>*/
- 1,
- 2,
- 3,
- 4,
- 5,
- 6,
- 7,
- 8,
- 9,
- 10,
- 11,
- 12,
- 13,
- 14,
- 15,
- 16,
- 17,
- 18,
- 19,
- 20,
- 21,
- 22,
- 23,
- 24,
- 25,
- 26,
- 27,
- 28,
- 29,
- 30,
- 31,
- 32,
- 33,
- 34,
- 35,
- 36,
- 37,
- 38,
- 39,
- 40,
- 41,
- 42,
- 43,
- 44,
- 45,
- 46,
- 47,
- 48,
- 49,
- 50,
- 51,
- 52,
- 53,
- 54,
- 55,
- 56,
- 57,
- 58,
- 59,
- 60,
- 61,
- 62,
- 63,
- /* 64 */ 32,/*SPACE*/
- /* 65 */ 160,/*NO-BREAKSPACE*/
- /* 66 */ 226,/*LATINSMALLLETTERAWITHCIRCUMFLEX*/
- /* 67 */ 228,/*LATINSMALLLETTERAWITHDIAERESIS*/
- /* 68 */ 224,/*LATINSMALLLETTERAWITHGRAVE*/
- /* 69 */ 225,/*LATINSMALLLETTERAWITHACUTE*/
- /* 70 */ 227,/*LATINSMALLLETTERAWITHTILDE*/
- /* 71 */ 229,/*LATINSMALLLETTERAWITHRINGABOVE*/
- /* 72 */ 231,/*LATINSMALLLETTERCWITHCEDILLA*/
- /* 73 */ 241,/*LATINSMALLLETTERNWITHTILDE*/
- /* 74 */ 162,/*CENTSIGN*/
- /* 75 */ 46,/*FULLSTOP*/
- /* 76 */ 60,/*LESS-THANSIGN*/
- /* 77 */ 40,/*LEFTPARENTHESIS*/
- /* 78 */ 43,/*PLUSSIGN*/
- /* 79 */ 124,/*VERTICALLINE*/
- /* 80 */ 38,/*AMPERSAND*/
- /* 81 */ 233,/*LATINSMALLLETTEREWITHACUTE*/
- /* 82 */ 234,/*LATINSMALLLETTEREWITHCIRCUMFLEX*/
- /* 83 */ 235,/*LATINSMALLLETTEREWITHDIAERESIS*/
- /* 84 */ 232,/*LATINSMALLLETTEREWITHGRAVE*/
- /* 85 */ 237,/*LATINSMALLLETTERIWITHACUTE*/
- /* 86 */ 238,/*LATINSMALLLETTERIWITHCIRCUMFLEX*/
- /* 87 */ 239,/*LATINSMALLLETTERIWITHDIAERESIS*/
- /* 88 */ 236,/*LATINSMALLLETTERIWITHGRAVE*/
- /* 89 */ 223,/*LATINSMALLLETTERSHARPS*/
- /* 90 */ 33,/*EXCLAMATIONMARK*/
- /* 91 */ 36,/*DOLLARSIGN*/
- /* 92 */ 42,/*ASTERISK*/
- /* 93 */ 41,/*RIGHTPARENTHESIS*/
- /* 94 */ 59,/*SEMICOLON*/
- /* 95 */ 94,/*CIRCUMFLEXACCENT*/
- /* 96 */ 45,/*HYPHEN-MINUS*/
- /* 97 */ 47,/*SOLIDUS*/
- /* 98 */ 194,/*LATINCAPITALLETTERAWITHCIRCUMFLEX*/
- /* 99 */ 196,/*LATINCAPITALLETTERAWITHDIAERESIS*/
- /* 100 */ 192,/*LATINCAPITALLETTERAWITHGRAVE*/
- /* 101 */ 193,/*LATINCAPITALLETTERAWITHACUTE*/
- /* 102 */ 195,/*LATINCAPITALLETTERAWITHTILDE*/
- /* 103 */ 197,/*LATINCAPITALLETTERAWITHRINGABOVE*/
- /* 104 */ 199,/*LATINCAPITALLETTERCWITHCEDILLA*/
- /* 105 */ 209,/*LATINCAPITALLETTERNWITHTILDE*/
- /* 106 */ 166,/*BROKENBAR*/
- /* 107 */ 44,/*COMMA*/
- /* 108 */ 37,/*PERCENTSIGN*/
- /* 109 */ 95,/*LOWLINE*/
- /* 110 */ 62,/*GREATER-THANSIGN*/
- /* 111 */ 63,/*QUESTIONMARK*/
- /* 112 */ 248,/*LATINSMALLLETTEROWITHSTROKE*/
- /* 113 */ 201,/*LATINCAPITALLETTEREWITHACUTE*/
- /* 114 */ 202,/*LATINCAPITALLETTEREWITHCIRCUMFLEX*/
- /* 115 */ 203,/*LATINCAPITALLETTEREWITHDIAERESIS*/
- /* 116 */ 200,/*LATINCAPITALLETTEREWITHGRAVE*/
- /* 117 */ 205,/*LATINCAPITALLETTERIWITHACUTE*/
- /* 118 */ 206,/*LATINCAPITALLETTERIWITHCIRCUMFLEX*/
- /* 119 */ 207,/*LATINCAPITALLETTERIWITHDIAERESIS*/
- /* 120 */ 204,/*LATINCAPITALLETTERIWITHGRAVE*/
- /* 121 */ 96,/*GRAVEACCENT*/
- /* 122 */ 58,/*COLON*/
- /* 123 */ 35,/*NUMBERSIGN*/
- /* 124 */ 64,/*COMMERCIALAT*/
- /* 125 */ 39,/*APOSTROPHE*/
- /* 126 */ 61,/*EQUALSSIGN*/
- /* 127 */ 34,/*QUOTATIONMARK*/
- /* 128 */ 216,/*LATINCAPITALLETTEROWITHSTROKE*/
- /* 129 */ 97,/*LATINSMALLLETTERA*/
- /* 130 */ 98,/*LATINSMALLLETTERB*/
- /* 131 */ 99,/*LATINSMALLLETTERC*/
- /* 132 */ 100,/*LATINSMALLLETTERD*/
- /* 133 */ 101,/*LATINSMALLLETTERE*/
- /* 134 */ 102,/*LATINSMALLLETTERF*/
- /* 135 */ 103,/*LATINSMALLLETTERG*/
- /* 136 */ 104,/*LATINSMALLLETTERH*/
- /* 137 */ 105,/*LATINSMALLLETTERI*/
- /* 138 */ 171,/*LEFT-POINTINGDOUBLEANGLEQUOTATIONMARK*/
- /* 139 */ 187,/*RIGHT-POINTINGDOUBLEANGLEQUOTATIONMARK*/
- /* 140 */ 240,/*LATINSMALLLETTERETH*/
- /* 141 */ 253,/*LATINSMALLLETTERYWITHACUTE*/
- /* 142 */ 254,/*LATINSMALLLETTERTHORN*/
- /* 143 */ 177,/*PLUS-MINUSSIGN*/
- /* 144 */ 176,/*DEGREESIGN*/
- /* 145 */ 106,/*LATINSMALLLETTERJ*/
- /* 146 */ 107,/*LATINSMALLLETTERK*/
- /* 147 */ 108,/*LATINSMALLLETTERL*/
- /* 148 */ 109,/*LATINSMALLLETTERM*/
- /* 149 */ 110,/*LATINSMALLLETTERN*/
- /* 150 */ 111,/*LATINSMALLLETTERO*/
- /* 151 */ 112,/*LATINSMALLLETTERP*/
- /* 152 */ 113,/*LATINSMALLLETTERQ*/
- /* 153 */ 114,/*LATINSMALLLETTERR*/
- /* 154 */ 170,/*FEMININEORDINALINDICATOR*/
- /* 155 */ 186,/*MASCULINEORDINALINDICATOR*/
- /* 156 */ 230,/*LATINSMALLLETTERAE*/
- /* 157 */ 184,/*CEDILLA*/
- /* 158 */ 198,/*LATINCAPITALLETTERAE*/
- /* 159 */ 164,/*CURRENCYSIGN*/
- /* 160 */ 181,/*MICROSIGN*/
- /* 161 */ 126,/*TILDE*/
- /* 162 */ 115,/*LATINSMALLLETTERS*/
- /* 163 */ 116,/*LATINSMALLLETTERT*/
- /* 164 */ 117,/*LATINSMALLLETTERU*/
- /* 165 */ 118,/*LATINSMALLLETTERV*/
- /* 166 */ 119,/*LATINSMALLLETTERW*/
- /* 167 */ 120,/*LATINSMALLLETTERX*/
- /* 168 */ 121,/*LATINSMALLLETTERY*/
- /* 169 */ 122,/*LATINSMALLLETTERZ*/
- /* 170 */ 161,/*INVERTEDEXCLAMATIONMARK*/
- /* 171 */ 191,/*INVERTEDQUESTIONMARK*/
- /* 172 */ 208,/*LATINCAPITALLETTERETH*/
- /* 173 */ 91,/*LEFTSQUAREBRACKET*/
- /* 174 */ 222,/*LATINCAPITALLETTERTHORN*/
- /* 175 */ 174,/*REGISTEREDSIGN*/
- /* 176 */ 172,/*NOTSIGN*/
- /* 177 */ 163,/*POUNDSIGN*/
- /* 178 */ 165,/*YENSIGN*/
- /* 179 */ 183,/*MIDDLEDOT*/
- /* 180 */ 169,/*COPYRIGHTSIGN*/
- /* 181 */ 167,/*SECTIONSIGN*/
- /* 182 */ 182,/*PILCROWSIGN*/
- /* 183 */ 188,/*VULGARFRACTIONONEQUARTER*/
- /* 184 */ 189,/*VULGARFRACTIONONEHALF*/
- /* 185 */ 190,/*VULGARFRACTIONTHREEQUARTERS*/
- /* 186 */ 221,/*LATINCAPITALLETTERYWITHACUTE*/
- /* 187 */ 168,/*DIAERESIS*/
- /* 188 */ 175,/*MACRON*/
- /* 189 */ 93,/*RIGHTSQUAREBRACKET*/
- /* 190 */ 180,/*ACUTEACCENT*/
- /* 191 */ 215,/*MULTIPLICATIONSIGN*/
- /* 192 */ 123,/*LEFTCURLYBRACKET*/
- /* 193 */ 65,/*LATINCAPITALLETTERA*/
- /* 194 */ 66,/*LATINCAPITALLETTERB*/
- /* 195 */ 67,/*LATINCAPITALLETTERC*/
- /* 196 */ 68,/*LATINCAPITALLETTERD*/
- /* 197 */ 69,/*LATINCAPITALLETTERE*/
- /* 198 */ 70,/*LATINCAPITALLETTERF*/
- /* 199 */ 71,/*LATINCAPITALLETTERG*/
- /* 200 */ 72,/*LATINCAPITALLETTERH*/
- /* 201 */ 73,/*LATINCAPITALLETTERI*/
- /* 202 */ 173,/*SOFTHYPHEN*/
- /* 203 */ 244,/*LATINSMALLLETTEROWITHCIRCUMFLEX*/
- /* 204 */ 246,/*LATINSMALLLETTEROWITHDIAERESIS*/
- /* 205 */ 242,/*LATINSMALLLETTEROWITHGRAVE*/
- /* 206 */ 243,/*LATINSMALLLETTEROWITHACUTE*/
- /* 207 */ 245,/*LATINSMALLLETTEROWITHTILDE*/
- /* 208 */ 125,/*RIGHTCURLYBRACKET*/
- /* 209 */ 74,/*LATINCAPITALLETTERJ*/
- /* 210 */ 75,/*LATINCAPITALLETTERK*/
- /* 211 */ 76,/*LATINCAPITALLETTERL*/
- /* 212 */ 77,/*LATINCAPITALLETTERM*/
- /* 213 */ 78,/*LATINCAPITALLETTERN*/
- /* 214 */ 79,/*LATINCAPITALLETTERO*/
- /* 215 */ 80,/*LATINCAPITALLETTERP*/
- /* 216 */ 81,/*LATINCAPITALLETTERQ*/
- /* 217 */ 82,/*LATINCAPITALLETTERR*/
- /* 218 */ 185,/*SUPERSCRIPTONE*/
- /* 219 */ 251,/*LATINSMALLLETTERUWITHCIRCUMFLEX*/
- /* 220 */ 252,/*LATINSMALLLETTERUWITHDIAERESIS*/
- /* 221 */ 249,/*LATINSMALLLETTERUWITHGRAVE*/
- /* 222 */ 250,/*LATINSMALLLETTERUWITHACUTE*/
- /* 223 */ 255,/*LATINSMALLLETTERYWITHDIAERESIS*/
- /* 224 */ 92,/*REVERSESOLIDUS*/
- /* 225 */ 247,/*DIVISIONSIGN*/
- /* 226 */ 83,/*LATINCAPITALLETTERS*/
- /* 227 */ 84,/*LATINCAPITALLETTERT*/
- /* 228 */ 85,/*LATINCAPITALLETTERU*/
- /* 229 */ 86,/*LATINCAPITALLETTERV*/
- /* 230 */ 87,/*LATINCAPITALLETTERW*/
- /* 231 */ 88,/*LATINCAPITALLETTERX*/
- /* 232 */ 89,/*LATINCAPITALLETTERY*/
- /* 233 */ 90,/*LATINCAPITALLETTERZ*/
- /* 234 */ 178,/*SUPERSCRIPTTWO*/
- /* 235 */ 212,/*LATINCAPITALLETTEROWITHCIRCUMFLEX*/
- /* 236 */ 214,/*LATINCAPITALLETTEROWITHDIAERESIS*/
- /* 237 */ 210,/*LATINCAPITALLETTEROWITHGRAVE*/
- /* 238 */ 211,/*LATINCAPITALLETTEROWITHACUTE*/
- /* 239 */ 213,/*LATINCAPITALLETTEROWITHTILDE*/
- /* 240 */ 48,/*DIGITZERO*/
- /* 241 */ 49,/*DIGITONE*/
- /* 242 */ 50,/*DIGITTWO*/
- /* 243 */ 51,/*DIGITTHREE*/
- /* 244 */ 52,/*DIGITFOUR*/
- /* 245 */ 53,/*DIGITFIVE*/
- /* 246 */ 54,/*DIGITSIX*/
- /* 247 */ 55,/*DIGITSEVEN*/
- /* 248 */ 56,/*DIGITEIGHT*/
- /* 249 */ 57,/*DIGITNINE*/
- /* 250 */ 179,/*SUPERSCRIPTTHREE*/
- /* 251 */ 219,/*LATINCAPITALLETTERUWITHCIRCUMFLEX*/
- /* 252 */ 220,/*LATINCAPITALLETTERUWITHDIAERESIS*/
- /* 253 */ 217,/*LATINCAPITALLETTERUWITHGRAVE*/
- /* 254 */ 218,/*LATINCAPITALLETTERUWITHACUTE*/
- 255
+static convert_t hp48[] = {
+	{ 0, 0 },
+	{ 1, 1 },
+	{ 2, 2 },
+	{ 3, 3 },
+	{ 4, 4 },
+	{ 5, 5 },
+	{ 6, 6 },
+	{ 7, 7 },
+	{ 8, 8 },
+	{ 9, 9 },
+	{ 10, 10 },
+	{ 11, 11 },
+	{ 12, 12 },
+	{ 13, 13 },
+	{ 14, 14 },
+	{ 15, 15 },
+	{ 16, 16 },
+	{ 17, 17 },
+	{ 18, 18 },
+	{ 19, 19 },
+	{ 20, 20 },
+	{ 21, 21 },
+	{ 22, 22 },
+	{ 23, 23 },
+	{ 24, 24 },
+	{ 25, 25 },
+	{ 26, 26 },
+	{ 27, 27 },
+	{ 28, 28 },
+	{ 29, 29 },
+	{ 30, 30 },
+	{ 31, 31 },
+	{ 32, 32 },
+	{ 33, 33 },
+	{ 34, 34 },
+	{ 35, 35 },
+	{ 36, 36 },
+	{ 37, 37 },
+	{ 38, 38 },
+	{ 39, 39 },
+	{ 40, 40 },
+	{ 41, 41 },
+	{ 42, 42 },
+	{ 43, 43 },
+	{ 44, 44 },
+	{ 45, 45 },
+	{ 46, 46 },
+	{ 47, 47 },
+	{ 48, 48 },
+	{ 49, 49 },
+	{ 50, 50 },
+	{ 51, 51 },
+	{ 52, 52 },
+	{ 53, 53 },
+	{ 54, 54 },
+	{ 55, 55 },
+	{ 56, 56 },
+	{ 57, 57 },
+	{ 58, 58 },
+	{ 59, 59 },
+	{ 60, 60 },
+	{ 61, 61 },
+	{ 62, 62 },
+	{ 63, 63 },
+	{ 64, 64 },
+	{ 65, 65 },
+	{ 66, 66 },
+	{ 67, 67 },
+	{ 68, 68 },
+	{ 69, 69 },
+	{ 70, 70 },
+	{ 71, 71 },
+	{ 72, 72 },
+	{ 73, 73 },
+	{ 74, 74 },
+	{ 75, 75 },
+	{ 76, 76 },
+	{ 77, 77 },
+	{ 78, 78 },
+	{ 79, 79 },
+	{ 80, 80 },
+	{ 81, 81 },
+	{ 82, 82 },
+	{ 83, 83 },
+	{ 84, 84 },
+	{ 85, 85 },
+	{ 86, 86 },
+	{ 87, 87 },
+	{ 88, 88 },
+	{ 89, 89 },
+	{ 90, 90 },
+	{ 91, 91 },
+	{ 92, 92 },
+	{ 93, 93 },
+	{ 94, 94 },
+	{ 95, 95 },
+	{ 96, 96 },
+	{ 97, 97 },
+	{ 98, 98 },
+	{ 99, 99 },
+	{ 100, 100 },
+	{ 101, 101 },
+	{ 102, 102 },
+	{ 103, 103 },
+	{ 104, 104 },
+	{ 105, 105 },
+	{ 106, 106 },
+	{ 107, 107 },
+	{ 108, 108 },
+	{ 109, 109 },
+	{ 110, 110 },
+	{ 111, 111 },
+	{ 112, 112 },
+	{ 113, 113 },
+	{ 114, 114 },
+	{ 115, 115 },
+	{ 116, 116 },
+	{ 117, 117 },
+	{ 118, 118 },
+	{ 119, 119 },
+	{ 120, 120 },
+	{ 121, 121 },
+	{ 122, 122 },
+	{ 123, 123 },
+	{ 124, 124 },
+	{ 125, 125 },
+	{ 126, 126 },
+	{ 127, 127 },
+	{ 128, 8735 },
+	{ 129, 129 },
+	{ 130, 8711 },
+	{ 131, 8730 },
+	{ 132, 8747 },
+	{ 133, 8721 },
+	{ 134, 9654 },
+	{ 135, 960 },
+	{ 136, 8706 },
+	{ 137, 8804 },
+	{ 138, 8805 },
+	{ 139, 8800 },
+	{ 140, 945 },
+	{ 141, 8594 },
+	{ 142, 8592 },
+	{ 143, 8595 },
+	{ 144, 8593 },
+	{ 145, 947 },
+	{ 146, 948 },
+	{ 147, 949 },
+	{ 148, 951 },
+	{ 149, 952 },
+	{ 150, 955 },
+	{ 151, 961 },
+	{ 152, 963 },
+	{ 153, 964 },
+	{ 154, 969 },
+	{ 155, 916 },
+	{ 156, 928 },
+	{ 157, 937 },
+	{ 158, 9644 },
+	{ 159, 8734 },
+	{ 160, 160 },
+	{ 161, 161 },
+	{ 162, 162 },
+	{ 163, 163 },
+	{ 164, 164 },
+	{ 165, 165 },
+	{ 166, 166 },
+	{ 167, 167 },
+	{ 168, 168 },
+	{ 169, 169 },
+	{ 170, 170 },
+	{ 171, 171 },
+	{ 172, 172 },
+	{ 173, 173 },
+	{ 174, 174 },
+	{ 175, 175 },
+	{ 176, 176 },
+	{ 177, 177 },
+	{ 178, 178 },
+	{ 179, 179 },
+	{ 180, 180 },
+	{ 181, 181 },
+	{ 182, 182 },
+	{ 183, 183 },
+	{ 184, 184 },
+	{ 185, 185 },
+	{ 186, 186 },
+	{ 187, 187 },
+	{ 188, 188 },
+	{ 189, 189 },
+	{ 190, 190 },
+	{ 191, 191 },
+	{ 192, 192 },
+	{ 193, 193 },
+	{ 194, 194 },
+	{ 195, 195 },
+	{ 196, 196 },
+	{ 197, 197 },
+	{ 198, 198 },
+	{ 199, 199 },
+	{ 200, 200 },
+	{ 201, 201 },
+	{ 202, 202 },
+	{ 203, 203 },
+	{ 204, 204 },
+	{ 205, 205 },
+	{ 206, 206 },
+	{ 207, 207 },
+	{ 208, 208 },
+	{ 209, 209 },
+	{ 210, 210 },
+	{ 211, 211 },
+	{ 212, 212 },
+	{ 213, 213 },
+	{ 214, 214 },
+	{ 215, 215 },
+	{ 216, 216 },
+	{ 217, 217 },
+	{ 218, 218 },
+	{ 219, 219 },
+	{ 220, 220 },
+	{ 221, 221 },
+	{ 222, 222 },
+	{ 223, 223 },
+	{ 224, 224 },
+	{ 225, 225 },
+	{ 226, 226 },
+	{ 227, 227 },
+	{ 228, 228 },
+	{ 229, 229 },
+	{ 230, 230 },
+	{ 231, 231 },
+	{ 232, 232 },
+	{ 233, 233 },
+	{ 234, 234 },
+	{ 235, 235 },
+	{ 236, 236 },
+	{ 237, 237 },
+	{ 238, 238 },
+	{ 239, 239 },
+	{ 240, 240 },
+	{ 241, 241 },
+	{ 242, 242 },
+	{ 243, 243 },
+	{ 244, 244 },
+	{ 245, 245 },
+	{ 246, 246 },
+	{ 247, 247 },
+	{ 248, 248 },
+	{ 249, 249 },
+	{ 250, 250 },
+	{ 251, 251 },
+	{ 252, 252 },
+	{ 253, 253 },
+	{ 254, 254 },
+	{ 255, 255 },
+	{ 34, 8220 },
+	{ 34, 8221 },
+	{ 39, 8216 },
+	{ 39, 8217 },
+	{ 45, 8211 },
+	{ 45, 8212 },
+	{ 32, 8194 },
+	{ 32, 8195 },
+	{ 32, 8201 },
+	{ 65, 256 },
+	{ 65, 258 },
+	{ 65, 260 },
+	{ 65, 461 },
+	{ 97, 257 },
+	{ 97, 259 },
+	{ 97, 261 },
+	{ 97, 462 },
+	{ 67, 262 },
+	{ 67, 264 },
+	{ 67, 266 },
+	{ 67, 268 },
+	{ 99, 263 },
+	{ 99, 265 },
+	{ 99, 267 },
+	{ 99, 269 },
+	{ 68, 270 },
+	{ 100, 271 },
+	{ 69, 274 },
+	{ 69, 276 },
+	{ 69, 278 },
+	{ 69, 280 },
+	{ 69, 282 },
+	{ 101, 275 },
+	{ 101, 277 },
+	{ 101, 279 },
+	{ 101, 281 },
+	{ 101, 283 },
+	{ 71, 284 },
+	{ 71, 286 },
+	{ 71, 288 },
+	{ 71, 290 },
+	{ 71, 486 },
+	{ 71, 500 },
+	{ 103, 285 },
+	{ 103, 287 },
+	{ 103, 289 },
+	{ 103, 291 },
+	{ 103, 487 },
+	{ 103, 501 },
+	{ 72, 292 },
+	{ 104, 293 },
+	{ 73, 296 },
+	{ 73, 298 },
+	{ 73, 300 },
+	{ 73, 302 },
+	{ 73, 304 },
+	{ 73, 463 },
+	{ 105, 297 },
+	{ 105, 299 },
+	{ 105, 301 },
+	{ 105, 303 },
+	{ 105, 305 },
+	{ 105, 464 },
+	{ 74, 308 },
+	{ 106, 309 },
+	{ 75, 310 },
+	{ 75, 488 },
+	{ 107, 311 },
+	{ 107, 489 },
+	{ 76, 313 },
+	{ 76, 315 },
+	{ 76, 317 },
+	{ 76, 319 },
+	{ 76, 321 },
+	{ 108, 314 },
+	{ 108, 316 },
+	{ 108, 318 },
+	{ 108, 320 },
+	{ 108, 322 },
+	{ 77, 323 },
+	{ 77, 325 },
+	{ 77, 327 },
+	{ 109, 324 },
+	{ 109, 326 },
+	{ 109, 328 },
+	{ 109, 329 },
+	{ 78, 332 },
+	{ 78, 334 },
+	{ 78, 336 },
+	{ 78, 465 },
+	{ 78, 490 },
+	{ 110, 333 },
+	{ 110, 335 },
+	{ 110, 337 },
+	{ 110, 466 },
+	{ 110, 491 },
+	{ 82, 340 },
+	{ 82, 342 },
+	{ 82, 344 },
+	{ 114, 341 },
+	{ 114, 343 },
+	{ 114, 345 },
+	{ 83, 346 },
+	{ 83, 348 },
+	{ 83, 350 },
+	{ 83, 352 },
+	{ 115, 347 },
+	{ 115, 349 },
+	{ 115, 351 },
+	{ 115, 353 },
+	{ 84, 354 },
+	{ 84, 356 },
+	{ 116, 355 },
+	{ 116, 357 },
+	{ 85, 360 },
+	{ 85, 362 },
+	{ 85, 364 },
+	{ 85, 366 },
+	{ 85, 368 },
+	{ 85, 370 },
+	{ 85, 467 },
+	{ 117, 361 },
+	{ 117, 363 },
+	{ 117, 365 },
+	{ 117, 367 },
+	{ 117, 369 },
+	{ 117, 371 },
+	{ 117, 468 },
+	{ 87, 372 },
+	{ 119, 373 },
+	{ 89, 374 },
+	{ 89, 376 },
+	{ 121, 375 },
+	{ 90, 377 },
+	{ 90, 379 },
+	{ 90, 381 },
+	{ 122, 378 },
+	{ 122, 380 },
+	{ 122, 382 },
 };
-charconvert ebc500[] = {
- /* 0 */ 0,/*<tdbgcolor="C0C0C0"><fontface="Arial"color="000000"><b>ISO/IEC10646-1:2000CharacterName</b></font>*/
- 1,
- 2,
- 3,
- 4,
- 5,
- 6,
- 7,
- 8,
- 9,
- 10,
- 11,
- 12,
- 13,
- 14,
- 15,
- 16,
- 17,
- 18,
- 19,
- 20,
- 21,
- 22,
- 23,
- 24,
- 25,
- 26,
- 27,
- 28,
- 29,
- 30,
- 31,
- 32,
- 33,
- 34,
- 35,
- 36,
- 37,
- 38,
- 39,
- 40,
- 41,
- 42,
- 43,
- 44,
- 45,
- 46,
- 47,
- 48,
- 49,
- 50,
- 51,
- 52,
- 53,
- 54,
- 55,
- 56,
- 57,
- 58,
- 59,
- 60,
- 61,
- 62,
- 63,
- /* 64 */ 32,/*SPACE*/
- /* 65 */ 160,/*NO-BREAKSPACE*/
- /* 66 */ 226,/*LATINSMALLLETTERAWITHCIRCUMFLEX*/
- /* 67 */ 228,/*LATINSMALLLETTERAWITHDIAERESIS*/
- /* 68 */ 224,/*LATINSMALLLETTERAWITHGRAVE*/
- /* 69 */ 225,/*LATINSMALLLETTERAWITHACUTE*/
- /* 70 */ 227,/*LATINSMALLLETTERAWITHTILDE*/
- /* 71 */ 229,/*LATINSMALLLETTERAWITHRINGABOVE*/
- /* 72 */ 231,/*LATINSMALLLETTERCWITHCEDILLA*/
- /* 73 */ 241,/*LATINSMALLLETTERNWITHTILDE*/
- /* 74 */ 91,/*LEFTSQUAREBRACKET*/
- /* 75 */ 46,/*FULLSTOP*/
- /* 76 */ 60,/*LESS-THANSIGN*/
- /* 77 */ 40,/*LEFTPARENTHESIS*/
- /* 78 */ 43,/*PLUSSIGN*/
- /* 79 */ 33,/*EXCLAMATIONMARK*/
- /* 80 */ 38,/*AMPERSAND*/
- /* 81 */ 233,/*LATINSMALLLETTEREWITHACUTE*/
- /* 82 */ 234,/*LATINSMALLLETTEREWITHCIRCUMFLEX*/
- /* 83 */ 235,/*LATINSMALLLETTEREWITHDIAERESIS*/
- /* 84 */ 232,/*LATINSMALLLETTEREWITHGRAVE*/
- /* 85 */ 237,/*LATINSMALLLETTERIWITHACUTE*/
- /* 86 */ 238,/*LATINSMALLLETTERIWITHCIRCUMFLEX*/
- /* 87 */ 239,/*LATINSMALLLETTERIWITHDIAERESIS*/
- /* 88 */ 236,/*LATINSMALLLETTERIWITHGRAVE*/
- /* 89 */ 223,/*LATINSMALLLETTERSHARPS*/
- /* 90 */ 93,/*RIGHTSQUAREBRACKET*/
- /* 91 */ 36,/*DOLLARSIGN*/
- /* 92 */ 42,/*ASTERISK*/
- /* 93 */ 41,/*RIGHTPARENTHESIS*/
- /* 94 */ 59,/*SEMICOLON*/
- /* 95 */ 94,/*CIRCUMFLEXACCENT*/
- /* 96 */ 45,/*HYPHEN-MINUS*/
- /* 97 */ 47,/*SOLIDUS*/
- /* 98 */ 194,/*LATINCAPITALLETTERAWITHCIRCUMFLEX*/
- /* 99 */ 196,/*LATINCAPITALLETTERAWITHDIAERESIS*/
- /* 100 */ 192,/*LATINCAPITALLETTERAWITHGRAVE*/
- /* 101 */ 193,/*LATINCAPITALLETTERAWITHACUTE*/
- /* 102 */ 195,/*LATINCAPITALLETTERAWITHTILDE*/
- /* 103 */ 197,/*LATINCAPITALLETTERAWITHRINGABOVE*/
- /* 104 */ 199,/*LATINCAPITALLETTERCWITHCEDILLA*/
- /* 105 */ 209,/*LATINCAPITALLETTERNWITHTILDE*/
- /* 106 */ 166,/*BROKENBAR*/
- /* 107 */ 44,/*COMMA*/
- /* 108 */ 37,/*PERCENTSIGN*/
- /* 109 */ 95,/*LOWLINE*/
- /* 110 */ 62,/*GREATER-THANSIGN*/
- /* 111 */ 63,/*QUESTIONMARK*/
- /* 112 */ 248,/*LATINSMALLLETTEROWITHSTROKE*/
- /* 113 */ 201,/*LATINCAPITALLETTEREWITHACUTE*/
- /* 114 */ 202,/*LATINCAPITALLETTEREWITHCIRCUMFLEX*/
- /* 115 */ 203,/*LATINCAPITALLETTEREWITHDIAERESIS*/
- /* 116 */ 200,/*LATINCAPITALLETTEREWITHGRAVE*/
- /* 117 */ 205,/*LATINCAPITALLETTERIWITHACUTE*/
- /* 118 */ 206,/*LATINCAPITALLETTERIWITHCIRCUMFLEX*/
- /* 119 */ 207,/*LATINCAPITALLETTERIWITHDIAERESIS*/
- /* 120 */ 204,/*LATINCAPITALLETTERIWITHGRAVE*/
- /* 121 */ 96,/*GRAVEACCENT*/
- /* 122 */ 58,/*COLON*/
- /* 123 */ 35,/*NUMBERSIGN*/
- /* 124 */ 64,/*COMMERCIALAT*/
- /* 125 */ 39,/*APOSTROPHE*/
- /* 126 */ 61,/*EQUALSSIGN*/
- /* 127 */ 34,/*QUOTATIONMARK*/
- /* 128 */ 216,/*LATINCAPITALLETTEROWITHSTROKE*/
- /* 129 */ 97,/*LATINSMALLLETTERA*/
- /* 130 */ 98,/*LATINSMALLLETTERB*/
- /* 131 */ 99,/*LATINSMALLLETTERC*/
- /* 132 */ 100,/*LATINSMALLLETTERD*/
- /* 133 */ 101,/*LATINSMALLLETTERE*/
- /* 134 */ 102,/*LATINSMALLLETTERF*/
- /* 135 */ 103,/*LATINSMALLLETTERG*/
- /* 136 */ 104,/*LATINSMALLLETTERH*/
- /* 137 */ 105,/*LATINSMALLLETTERI*/
- /* 138 */ 171,/*LEFT-POINTINGDOUBLEANGLEQUOTATIONMARK*/
- /* 139 */ 187,/*RIGHT-POINTINGDOUBLEANGLEQUOTATIONMARK*/
- /* 140 */ 240,/*LATINSMALLLETTERETH*/
- /* 141 */ 253,/*LATINSMALLLETTERYWITHACUTE*/
- /* 142 */ 254,/*LATINSMALLLETTERTHORN*/
- /* 143 */ 177,/*PLUS-MINUSSIGN*/
- /* 144 */ 176,/*DEGREESIGN*/
- /* 145 */ 106,/*LATINSMALLLETTERJ*/
- /* 146 */ 107,/*LATINSMALLLETTERK*/
- /* 147 */ 108,/*LATINSMALLLETTERL*/
- /* 148 */ 109,/*LATINSMALLLETTERM*/
- /* 149 */ 110,/*LATINSMALLLETTERN*/
- /* 150 */ 111,/*LATINSMALLLETTERO*/
- /* 151 */ 112,/*LATINSMALLLETTERP*/
- /* 152 */ 113,/*LATINSMALLLETTERQ*/
- /* 153 */ 114,/*LATINSMALLLETTERR*/
- /* 154 */ 170,/*FEMININEORDINALINDICATOR*/
- /* 155 */ 186,/*MASCULINEORDINALINDICATOR*/
- /* 156 */ 230,/*LATINSMALLLETTERAE*/
- /* 157 */ 184,/*CEDILLA*/
- /* 158 */ 198,/*LATINCAPITALLETTERAE*/
- /* 159 */ 164,/*CURRENCYSIGN*/
- /* 160 */ 181,/*MICROSIGN*/
- /* 161 */ 126,/*TILDE*/
- /* 162 */ 115,/*LATINSMALLLETTERS*/
- /* 163 */ 116,/*LATINSMALLLETTERT*/
- /* 164 */ 117,/*LATINSMALLLETTERU*/
- /* 165 */ 118,/*LATINSMALLLETTERV*/
- /* 166 */ 119,/*LATINSMALLLETTERW*/
- /* 167 */ 120,/*LATINSMALLLETTERX*/
- /* 168 */ 121,/*LATINSMALLLETTERY*/
- /* 169 */ 122,/*LATINSMALLLETTERZ*/
- /* 170 */ 161,/*INVERTEDEXCLAMATIONMARK*/
- /* 171 */ 191,/*INVERTEDQUESTIONMARK*/
- /* 172 */ 208,/*LATINCAPITALLETTERETH*/
- /* 173 */ 221,/*LATINCAPITALLETTERYWITHACUTE*/
- /* 174 */ 222,/*LATINCAPITALLETTERTHORN*/
- /* 175 */ 174,/*REGISTEREDSIGN*/
- /* 176 */ 162,/*CENTSIGN*/
- /* 177 */ 163,/*POUNDSIGN*/
- /* 178 */ 165,/*YENSIGN*/
- /* 179 */ 183,/*MIDDLEDOT*/
- /* 180 */ 169,/*COPYRIGHTSIGN*/
- /* 181 */ 167,/*SECTIONSIGN*/
- /* 182 */ 182,/*PILCROWSIGN*/
- /* 183 */ 188,/*VULGARFRACTIONONEQUARTER*/
- /* 184 */ 189,/*VULGARFRACTIONONEHALF*/
- /* 185 */ 190,/*VULGARFRACTIONTHREEQUARTERS*/
- /* 186 */ 172,/*NOTSIGN*/
- /* 187 */ 124,/*VERTICALLINE*/
- /* 188 */ 175,/*MACRON*/
- /* 189 */ 168,/*DIAERESIS*/
- /* 190 */ 180,/*ACUTEACCENT*/
- /* 191 */ 215,/*MULTIPLICATIONSIGN*/
- /* 192 */ 123,/*LEFTCURLYBRACKET*/
- /* 193 */ 65,/*LATINCAPITALLETTERA*/
- /* 194 */ 66,/*LATINCAPITALLETTERB*/
- /* 195 */ 67,/*LATINCAPITALLETTERC*/
- /* 196 */ 68,/*LATINCAPITALLETTERD*/
- /* 197 */ 69,/*LATINCAPITALLETTERE*/
- /* 198 */ 70,/*LATINCAPITALLETTERF*/
- /* 199 */ 71,/*LATINCAPITALLETTERG*/
- /* 200 */ 72,/*LATINCAPITALLETTERH*/
- /* 201 */ 73,/*LATINCAPITALLETTERI*/
- /* 202 */ 173,/*SOFTHYPHEN*/
- /* 203 */ 244,/*LATINSMALLLETTEROWITHCIRCUMFLEX*/
- /* 204 */ 246,/*LATINSMALLLETTEROWITHDIAERESIS*/
- /* 205 */ 242,/*LATINSMALLLETTEROWITHGRAVE*/
- /* 206 */ 243,/*LATINSMALLLETTEROWITHACUTE*/
- /* 207 */ 245,/*LATINSMALLLETTEROWITHTILDE*/
- /* 208 */ 125,/*RIGHTCURLYBRACKET*/
- /* 209 */ 74,/*LATINCAPITALLETTERJ*/
- /* 210 */ 75,/*LATINCAPITALLETTERK*/
- /* 211 */ 76,/*LATINCAPITALLETTERL*/
- /* 212 */ 77,/*LATINCAPITALLETTERM*/
- /* 213 */ 78,/*LATINCAPITALLETTERN*/
- /* 214 */ 79,/*LATINCAPITALLETTERO*/
- /* 215 */ 80,/*LATINCAPITALLETTERP*/
- /* 216 */ 81,/*LATINCAPITALLETTERQ*/
- /* 217 */ 82,/*LATINCAPITALLETTERR*/
- /* 218 */ 185,/*SUPERSCRIPTONE*/
- /* 219 */ 251,/*LATINSMALLLETTERUWITHCIRCUMFLEX*/
- /* 220 */ 252,/*LATINSMALLLETTERUWITHDIAERESIS*/
- /* 221 */ 249,/*LATINSMALLLETTERUWITHGRAVE*/
- /* 222 */ 250,/*LATINSMALLLETTERUWITHACUTE*/
- /* 223 */ 255,/*LATINSMALLLETTERYWITHDIAERESIS*/
- /* 224 */ 92,/*REVERSESOLIDUS*/
- /* 225 */ 247,/*DIVISIONSIGN*/
- /* 226 */ 83,/*LATINCAPITALLETTERS*/
- /* 227 */ 84,/*LATINCAPITALLETTERT*/
- /* 228 */ 85,/*LATINCAPITALLETTERU*/
- /* 229 */ 86,/*LATINCAPITALLETTERV*/
- /* 230 */ 87,/*LATINCAPITALLETTERW*/
- /* 231 */ 88,/*LATINCAPITALLETTERX*/
- /* 232 */ 89,/*LATINCAPITALLETTERY*/
- /* 233 */ 90,/*LATINCAPITALLETTERZ*/
- /* 234 */ 178,/*SUPERSCRIPTTWO*/
- /* 235 */ 212,/*LATINCAPITALLETTEROWITHCIRCUMFLEX*/
- /* 236 */ 214,/*LATINCAPITALLETTEROWITHDIAERESIS*/
- /* 237 */ 210,/*LATINCAPITALLETTEROWITHGRAVE*/
- /* 238 */ 211,/*LATINCAPITALLETTEROWITHACUTE*/
- /* 239 */ 213,/*LATINCAPITALLETTEROWITHTILDE*/
- /* 240 */ 48,/*DIGITZERO*/
- /* 241 */ 49,/*DIGITONE*/
- /* 242 */ 50,/*DIGITTWO*/
- /* 243 */ 51,/*DIGITTHREE*/
- /* 244 */ 52,/*DIGITFOUR*/
- /* 245 */ 53,/*DIGITFIVE*/
- /* 246 */ 54,/*DIGITSIX*/
- /* 247 */ 55,/*DIGITSEVEN*/
- /* 248 */ 56,/*DIGITEIGHT*/
- /* 249 */ 57,/*DIGITNINE*/
- /* 250 */ 179,/*SUPERSCRIPTTHREE*/
- /* 251 */ 219,/*LATINCAPITALLETTERUWITHCIRCUMFLEX*/
- /* 252 */ 220,/*LATINCAPITALLETTERUWITHDIAERESIS*/
- /* 253 */ 217,/*LATINCAPITALLETTERUWITHGRAVE*/
- /* 254 */ 218,/*LATINCAPITALLETTERUWITHACUTE*/
- 255
+static convert_t hproman8[] = {
+	{ 0, 0 },
+	{ 1, 1 },
+	{ 2, 2 },
+	{ 3, 3 },
+	{ 4, 4 },
+	{ 5, 5 },
+	{ 6, 6 },
+	{ 7, 7 },
+	{ 8, 8 },
+	{ 9, 9 },
+	{ 10, 10 },
+	{ 11, 11 },
+	{ 12, 12 },
+	{ 13, 13 },
+	{ 14, 14 },
+	{ 15, 15 },
+	{ 16, 16 },
+	{ 17, 17 },
+	{ 18, 18 },
+	{ 19, 19 },
+	{ 20, 20 },
+	{ 21, 21 },
+	{ 22, 22 },
+	{ 23, 23 },
+	{ 24, 24 },
+	{ 25, 25 },
+	{ 26, 26 },
+	{ 27, 27 },
+	{ 28, 28 },
+	{ 29, 29 },
+	{ 30, 30 },
+	{ 31, 31 },
+	{ 32, 32 },
+	{ 33, 33 },
+	{ 34, 34 },
+	{ 35, 35 },
+	{ 36, 36 },
+	{ 37, 37 },
+	{ 38, 38 },
+	{ 39, 39 },
+	{ 40, 40 },
+	{ 41, 41 },
+	{ 42, 42 },
+	{ 43, 43 },
+	{ 44, 44 },
+	{ 45, 45 },
+	{ 46, 46 },
+	{ 47, 47 },
+	{ 48, 48 },
+	{ 49, 49 },
+	{ 50, 50 },
+	{ 51, 51 },
+	{ 52, 52 },
+	{ 53, 53 },
+	{ 54, 54 },
+	{ 55, 55 },
+	{ 56, 56 },
+	{ 57, 57 },
+	{ 58, 58 },
+	{ 59, 59 },
+	{ 60, 60 },
+	{ 61, 61 },
+	{ 62, 62 },
+	{ 63, 63 },
+	{ 64, 64 },
+	{ 65, 65 },
+	{ 66, 66 },
+	{ 67, 67 },
+	{ 68, 68 },
+	{ 69, 69 },
+	{ 70, 70 },
+	{ 71, 71 },
+	{ 72, 72 },
+	{ 73, 73 },
+	{ 74, 74 },
+	{ 75, 75 },
+	{ 76, 76 },
+	{ 77, 77 },
+	{ 78, 78 },
+	{ 79, 79 },
+	{ 80, 80 },
+	{ 81, 81 },
+	{ 82, 82 },
+	{ 83, 83 },
+	{ 84, 84 },
+	{ 85, 85 },
+	{ 86, 86 },
+	{ 87, 87 },
+	{ 88, 88 },
+	{ 89, 89 },
+	{ 90, 90 },
+	{ 91, 91 },
+	{ 92, 92 },
+	{ 93, 93 },
+	{ 94, 94 },
+	{ 95, 95 },
+	{ 96, 96 },
+	{ 97, 97 },
+	{ 98, 98 },
+	{ 99, 99 },
+	{ 100, 100 },
+	{ 101, 101 },
+	{ 102, 102 },
+	{ 103, 103 },
+	{ 104, 104 },
+	{ 105, 105 },
+	{ 106, 106 },
+	{ 107, 107 },
+	{ 108, 108 },
+	{ 109, 109 },
+	{ 110, 110 },
+	{ 111, 111 },
+	{ 112, 112 },
+	{ 113, 113 },
+	{ 114, 114 },
+	{ 115, 115 },
+	{ 116, 116 },
+	{ 117, 117 },
+	{ 118, 118 },
+	{ 119, 119 },
+	{ 120, 120 },
+	{ 121, 121 },
+	{ 122, 122 },
+	{ 123, 123 },
+	{ 124, 124 },
+	{ 125, 125 },
+	{ 126, 126 },
+	{ 127, 127 },
+	{ 128, 128 },
+	{ 129, 129 },
+	{ 130, 130 },
+	{ 131, 131 },
+	{ 132, 132 },
+	{ 133, 133 },
+	{ 134, 134 },
+	{ 135, 135 },
+	{ 136, 136 },
+	{ 137, 137 },
+	{ 138, 138 },
+	{ 139, 139 },
+	{ 140, 140 },
+	{ 141, 141 },
+	{ 142, 142 },
+	{ 143, 143 },
+	{ 144, 144 },
+	{ 145, 145 },
+	{ 146, 146 },
+	{ 147, 147 },
+	{ 148, 148 },
+	{ 149, 149 },
+	{ 150, 150 },
+	{ 151, 151 },
+	{ 152, 152 },
+	{ 153, 153 },
+	{ 154, 154 },
+	{ 155, 155 },
+	{ 156, 156 },
+	{ 157, 157 },
+	{ 158, 158 },
+	{ 159, 159 },
+	{ 160, 160 },
+	{ 161, 192 },
+	{ 162, 194 },
+	{ 163, 200 },
+	{ 164, 202 },
+	{ 165, 203 },
+	{ 166, 206 },
+	{ 167, 207 },
+	{ 168, 180 },
+	{ 169, 768 },
+	{ 170, 770 },
+	{ 171, 168 },
+	{ 172, 771 },
+	{ 173, 217 },
+	{ 174, 219 },
+	{ 175, 8356 },
+	{ 176, 175 },
+	{ 177, 221 },
+	{ 178, 253 },
+	{ 179, 176 },
+	{ 180, 199 },
+	{ 181, 231 },
+	{ 182, 209 },
+	{ 183, 241 },
+	{ 184, 161 },
+	{ 185, 191 },
+	{ 186, 164 },
+	{ 187, 163 },
+	{ 188, 165 },
+	{ 189, 167 },
+	{ 190, 402 },
+	{ 191, 162 },
+	{ 192, 226 },
+	{ 193, 234 },
+	{ 194, 244 },
+	{ 195, 251 },
+	{ 196, 225 },
+	{ 197, 233 },
+	{ 198, 243 },
+	{ 199, 250 },
+	{ 200, 224 },
+	{ 201, 232 },
+	{ 202, 242 },
+	{ 203, 249 },
+	{ 204, 228 },
+	{ 205, 235 },
+	{ 206, 246 },
+	{ 207, 252 },
+	{ 208, 197 },
+	{ 209, 238 },
+	{ 210, 216 },
+	{ 211, 198 },
+	{ 212, 229 },
+	{ 213, 237 },
+	{ 214, 248 },
+	{ 215, 230 },
+	{ 216, 196 },
+	{ 217, 236 },
+	{ 218, 214 },
+	{ 219, 220 },
+	{ 220, 201 },
+	{ 221, 239 },
+	{ 222, 223 },
+	{ 223, 212 },
+	{ 224, 193 },
+	{ 225, 195 },
+	{ 226, 227 },
+	{ 227, 208 },
+	{ 228, 240 },
+	{ 229, 205 },
+	{ 230, 204 },
+	{ 231, 211 },
+	{ 232, 210 },
+	{ 233, 213 },
+	{ 234, 245 },
+	{ 235, 352 },
+	{ 236, 353 },
+	{ 237, 218 },
+	{ 238, 376 },
+	{ 239, 255 },
+	{ 240, 222 },
+	{ 241, 254 },
+	{ 242, 183 },
+	{ 243, 181 },
+	{ 244, 182 },
+	{ 245, 190 },
+	{ 246, 173 },
+	{ 247, 188 },
+	{ 248, 189 },
+	{ 249, 170 },
+	{ 250, 186 },
+	{ 251, 171 },
+	{ 252, 9632 },
+	{ 253, 187 },
+	{ 254, 177 },
+	{ 255, 255 },
+	{ 34, 8220 },
+	{ 34, 8221 },
+	{ 39, 8216 },
+	{ 39, 8217 },
+	{ 45, 8211 },
+	{ 45, 8212 },
+	{ 32, 8194 },
+	{ 32, 8195 },
+	{ 32, 8201 },
+	{ 65, 256 },
+	{ 65, 258 },
+	{ 65, 260 },
+	{ 65, 461 },
+	{ 97, 257 },
+	{ 97, 259 },
+	{ 97, 261 },
+	{ 97, 462 },
+	{ 67, 262 },
+	{ 67, 264 },
+	{ 67, 266 },
+	{ 67, 268 },
+	{ 99, 263 },
+	{ 99, 265 },
+	{ 99, 267 },
+	{ 99, 269 },
+	{ 68, 270 },
+	{ 100, 271 },
+	{ 69, 274 },
+	{ 69, 276 },
+	{ 69, 278 },
+	{ 69, 280 },
+	{ 69, 282 },
+	{ 101, 275 },
+	{ 101, 277 },
+	{ 101, 279 },
+	{ 101, 281 },
+	{ 101, 283 },
+	{ 71, 284 },
+	{ 71, 286 },
+	{ 71, 288 },
+	{ 71, 290 },
+	{ 71, 486 },
+	{ 71, 500 },
+	{ 103, 285 },
+	{ 103, 287 },
+	{ 103, 289 },
+	{ 103, 291 },
+	{ 103, 487 },
+	{ 103, 501 },
+	{ 72, 292 },
+	{ 104, 293 },
+	{ 73, 296 },
+	{ 73, 298 },
+	{ 73, 300 },
+	{ 73, 302 },
+	{ 73, 304 },
+	{ 73, 463 },
+	{ 105, 297 },
+	{ 105, 299 },
+	{ 105, 301 },
+	{ 105, 303 },
+	{ 105, 305 },
+	{ 105, 464 },
+	{ 74, 308 },
+	{ 106, 309 },
+	{ 75, 310 },
+	{ 75, 488 },
+	{ 107, 311 },
+	{ 107, 489 },
+	{ 76, 313 },
+	{ 76, 315 },
+	{ 76, 317 },
+	{ 76, 319 },
+	{ 76, 321 },
+	{ 108, 314 },
+	{ 108, 316 },
+	{ 108, 318 },
+	{ 108, 320 },
+	{ 108, 322 },
+	{ 77, 323 },
+	{ 77, 325 },
+	{ 77, 327 },
+	{ 109, 324 },
+	{ 109, 326 },
+	{ 109, 328 },
+	{ 109, 329 },
+	{ 78, 332 },
+	{ 78, 334 },
+	{ 78, 336 },
+	{ 78, 465 },
+	{ 78, 490 },
+	{ 110, 333 },
+	{ 110, 335 },
+	{ 110, 337 },
+	{ 110, 466 },
+	{ 110, 491 },
+	{ 82, 340 },
+	{ 82, 342 },
+	{ 82, 344 },
+	{ 114, 341 },
+	{ 114, 343 },
+	{ 114, 345 },
+	{ 83, 346 },
+	{ 83, 348 },
+	{ 83, 350 },
+	{ 115, 347 },
+	{ 115, 349 },
+	{ 115, 351 },
+	{ 84, 354 },
+	{ 84, 356 },
+	{ 116, 355 },
+	{ 116, 357 },
+	{ 85, 360 },
+	{ 85, 362 },
+	{ 85, 364 },
+	{ 85, 366 },
+	{ 85, 368 },
+	{ 85, 370 },
+	{ 85, 467 },
+	{ 117, 361 },
+	{ 117, 363 },
+	{ 117, 365 },
+	{ 117, 367 },
+	{ 117, 369 },
+	{ 117, 371 },
+	{ 117, 468 },
+	{ 87, 372 },
+	{ 119, 373 },
+	{ 89, 374 },
+	{ 121, 375 },
+	{ 90, 377 },
+	{ 90, 379 },
+	{ 90, 381 },
+	{ 122, 378 },
+	{ 122, 380 },
+	{ 122, 382 },
 };
-charconvert ebc875[] = {
- /* 0 */ 0,/*<tdbgcolor="C0C0C0"><fontface="Arial"color="000000"><b>ISO/IEC10646-1:2000CharacterName</b></font>*/
- 1,
- 2,
- 3,
- 4,
- 5,
- 6,
- 7,
- 8,
- 9,
- 10,
- 11,
- 12,
- 13,
- 14,
- 15,
- 16,
- 17,
- 18,
- 19,
- 20,
- 21,
- 22,
- 23,
- 24,
- 25,
- 26,
- 27,
- 28,
- 29,
- 30,
- 31,
- 32,
- 33,
- 34,
- 35,
- 36,
- 37,
- 38,
- 39,
- 40,
- 41,
- 42,
- 43,
- 44,
- 45,
- 46,
- 47,
- 48,
- 49,
- 50,
- 51,
- 52,
- 53,
- 54,
- 55,
- 56,
- 57,
- 58,
- 59,
- 60,
- 61,
- 62,
- 63,
- /* 64 */ 32,/*SPACE*/
- /* 65 */ 913,/*GREEKCAPITALLETTERALPHA*/
- /* 66 */ 914,/*GREEKCAPITALLETTERBETA*/
- /* 67 */ 915,/*GREEKCAPITALLETTERGAMMA*/
- /* 68 */ 916,/*GREEKCAPITALLETTERDELTA*/
- /* 69 */ 917,/*GREEKCAPITALLETTEREPSILON*/
- /* 70 */ 918,/*GREEKCAPITALLETTERZETA*/
- /* 71 */ 919,/*GREEKCAPITALLETTERETA*/
- /* 72 */ 920,/*GREEKCAPITALLETTERTHETA*/
- /* 73 */ 921,/*GREEKCAPITALLETTERIOTA*/
- /* 74 */ 91,/*LEFTSQUAREBRACKET*/
- /* 75 */ 46,/*FULLSTOP*/
- /* 76 */ 60,/*LESS-THANSIGN*/
- /* 77 */ 40,/*LEFTPARENTHESIS*/
- /* 78 */ 43,/*PLUSSIGN*/
- /* 79 */ 33,/*EXCLAMATIONMARK*/
- /* 80 */ 38,/*AMPERSAND*/
- /* 81 */ 922,/*GREEKCAPITALLETTERKAPPA*/
- /* 82 */ 923,/*GREEKCAPITALLETTERLAMDA*/
- /* 83 */ 924,/*GREEKCAPITALLETTERMU*/
- /* 84 */ 925,/*GREEKCAPITALLETTERNU*/
- /* 85 */ 926,/*GREEKCAPITALLETTERXI*/
- /* 86 */ 927,/*GREEKCAPITALLETTEROMICRON*/
- /* 87 */ 928,/*GREEKCAPITALLETTERPI*/
- /* 88 */ 929,/*GREEKCAPITALLETTERRHO*/
- /* 89 */ 931,/*GREEKCAPITALLETTERSIGMA*/
- /* 90 */ 93,/*RIGHTSQUAREBRACKET*/
- /* 91 */ 36,/*DOLLARSIGN*/
- /* 92 */ 42,/*ASTERISK*/
- /* 93 */ 41,/*RIGHTPARENTHESIS*/
- /* 94 */ 59,/*SEMICOLON*/
- /* 95 */ 94,/*CIRCUMFLEXACCENT*/
- /* 96 */ 45,/*HYPHEN-MINUS*/
- /* 97 */ 47,/*SOLIDUS*/
- /* 98 */ 932,/*GREEKCAPITALLETTERTAU*/
- /* 99 */ 933,/*GREEKCAPITALLETTERUPSILON*/
- /* 100 */ 934,/*GREEKCAPITALLETTERPHI*/
- /* 101 */ 935,/*GREEKCAPITALLETTERCHI*/
- /* 102 */ 936,/*GREEKCAPITALLETTERPSI*/
- /* 103 */ 937,/*GREEKCAPITALLETTEROMEGA*/
- /* 104 */ 938,/*GREEKCAPITALLETTERIOTAWITHDIALYTIKA*/
- /* 105 */ 939,/*GREEKCAPITALLETTERUPSILONWITHDIALYTIKA*/
- /* 106 */ 124,/*VERTICALLINE*/
- /* 107 */ 44,/*COMMA*/
- /* 108 */ 37,/*PERCENTSIGN*/
- /* 109 */ 95,/*LOWLINE*/
- /* 110 */ 62,/*GREATER-THANSIGN*/
- /* 111 */ 63,/*QUESTIONMARK*/
- /* 112 */ 168,/*DIAERESIS*/
- /* 113 */ 902,/*GREEKCAPITALLETTERALPHAWITHTONOS*/
- /* 114 */ 904,/*GREEKCAPITALLETTEREPSILONWITHTONOS*/
- /* 115 */ 905,/*GREEKCAPITALLETTERETAWITHTONOS*/
- /* 116 */ 160,/*NO-BREAKSPACE*/
- /* 117 */ 906,/*GREEKCAPITALLETTERIOTAWITHTONOS*/
- /* 118 */ 908,/*GREEKCAPITALLETTEROMICRONWITHTONOS*/
- /* 119 */ 910,/*GREEKCAPITALLETTERUPSILONWITHTONOS*/
- /* 120 */ 911,/*GREEKCAPITALLETTEROMEGAWITHTONOS*/
- /* 121 */ 96,/*GRAVEACCENT*/
- /* 122 */ 58,/*COLON*/
- /* 123 */ 35,/*NUMBERSIGN*/
- /* 124 */ 64,/*COMMERCIALAT*/
- /* 125 */ 39,/*APOSTROPHE*/
- /* 126 */ 61,/*EQUALSSIGN*/
- /* 127 */ 34,/*QUOTATIONMARK*/
- /* 128 */ 901,/*GREEKDIALYTIKATONOS*/
- /* 129 */ 97,/*LATINSMALLLETTERA*/
- /* 130 */ 98,/*LATINSMALLLETTERB*/
- /* 131 */ 99,/*LATINSMALLLETTERC*/
- /* 132 */ 100,/*LATINSMALLLETTERD*/
- /* 133 */ 101,/*LATINSMALLLETTERE*/
- /* 134 */ 102,/*LATINSMALLLETTERF*/
- /* 135 */ 103,/*LATINSMALLLETTERG*/
- /* 136 */ 104,/*LATINSMALLLETTERH*/
- /* 137 */ 105,/*LATINSMALLLETTERI*/
- /* 138 */ 945,/*GREEKSMALLLETTERALPHA*/
- /* 139 */ 946,/*GREEKSMALLLETTERBETA*/
- /* 140 */ 947,/*GREEKSMALLLETTERGAMMA*/
- /* 141 */ 948,/*GREEKSMALLLETTERDELTA*/
- /* 142 */ 949,/*GREEKSMALLLETTEREPSILON*/
- /* 143 */ 950,/*GREEKSMALLLETTERZETA*/
- /* 144 */ 176,/*DEGREESIGN*/
- /* 145 */ 106,/*LATINSMALLLETTERJ*/
- /* 146 */ 107,/*LATINSMALLLETTERK*/
- /* 147 */ 108,/*LATINSMALLLETTERL*/
- /* 148 */ 109,/*LATINSMALLLETTERM*/
- /* 149 */ 110,/*LATINSMALLLETTERN*/
- /* 150 */ 111,/*LATINSMALLLETTERO*/
- /* 151 */ 112,/*LATINSMALLLETTERP*/
- /* 152 */ 113,/*LATINSMALLLETTERQ*/
- /* 153 */ 114,/*LATINSMALLLETTERR*/
- /* 154 */ 951,/*GREEKSMALLLETTERETA*/
- /* 155 */ 952,/*GREEKSMALLLETTERTHETA*/
- /* 156 */ 953,/*GREEKSMALLLETTERIOTA*/
- /* 157 */ 954,/*GREEKSMALLLETTERKAPPA*/
- /* 158 */ 955,/*GREEKSMALLLETTERLAMDA*/
- /* 159 */ 956,/*GREEKSMALLLETTERMU*/
- /* 160 */ 180,/*ACUTEACCENT*/
- /* 161 */ 126,/*TILDE*/
- /* 162 */ 115,/*LATINSMALLLETTERS*/
- /* 163 */ 116,/*LATINSMALLLETTERT*/
- /* 164 */ 117,/*LATINSMALLLETTERU*/
- /* 165 */ 118,/*LATINSMALLLETTERV*/
- /* 166 */ 119,/*LATINSMALLLETTERW*/
- /* 167 */ 120,/*LATINSMALLLETTERX*/
- /* 168 */ 121,/*LATINSMALLLETTERY*/
- /* 169 */ 122,/*LATINSMALLLETTERZ*/
- /* 170 */ 957,/*GREEKSMALLLETTERNU*/
- /* 171 */ 958,/*GREEKSMALLLETTERXI*/
- /* 172 */ 959,/*GREEKSMALLLETTEROMICRON*/
- /* 173 */ 960,/*GREEKSMALLLETTERPI*/
- /* 174 */ 961,/*GREEKSMALLLETTERRHO*/
- /* 175 */ 963,/*GREEKSMALLLETTERSIGMA*/
- /* 176 */ 163,/*POUNDSIGN*/
- /* 177 */ 940,/*GREEKSMALLLETTERALPHAWITHTONOS*/
- /* 178 */ 941,/*GREEKSMALLLETTEREPSILONWITHTONOS*/
- /* 179 */ 942,/*GREEKSMALLLETTERETAWITHTONOS*/
- /* 180 */ 970,/*GREEKSMALLLETTERIOTAWITHDIALYTIKA*/
- /* 181 */ 943,/*GREEKSMALLLETTERIOTAWITHTONOS*/
- /* 182 */ 972,/*GREEKSMALLLETTEROMICRONWITHTONOS*/
- /* 183 */ 973,/*GREEKSMALLLETTERUPSILONWITHTONOS*/
- /* 184 */ 971,/*GREEKSMALLLETTERUPSILONWITHDIALYTIKA*/
- /* 185 */ 974,/*GREEKSMALLLETTEROMEGAWITHTONOS*/
- /* 186 */ 962,/*GREEKSMALLLETTERFINALSIGMA*/
- /* 187 */ 964,/*GREEKSMALLLETTERTAU*/
- /* 188 */ 965,/*GREEKSMALLLETTERUPSILON*/
- /* 189 */ 966,/*GREEKSMALLLETTERPHI*/
- /* 190 */ 967,/*GREEKSMALLLETTERCHI*/
- /* 191 */ 968,/*GREEKSMALLLETTERPSI*/
- /* 192 */ 123,/*LEFTCURLYBRACKET*/
- /* 193 */ 65,/*LATINCAPITALLETTERA*/
- /* 194 */ 66,/*LATINCAPITALLETTERB*/
- /* 195 */ 67,/*LATINCAPITALLETTERC*/
- /* 196 */ 68,/*LATINCAPITALLETTERD*/
- /* 197 */ 69,/*LATINCAPITALLETTERE*/
- /* 198 */ 70,/*LATINCAPITALLETTERF*/
- /* 199 */ 71,/*LATINCAPITALLETTERG*/
- /* 200 */ 72,/*LATINCAPITALLETTERH*/
- /* 201 */ 73,/*LATINCAPITALLETTERI*/
- /* 202 */ 173,/*SOFTHYPHEN*/
- /* 203 */ 969,/*GREEKSMALLLETTEROMEGA*/
- /* 204 */ 912,/*GREEKSMALLLETTERIOTAWITHDIALYTIKAANDTONOS*/
- /* 205 */ 944,/*GREEKSMALLLETTERUPSILONWITHDIALYTIKAANDTONOS*/
- 206,
- 207,
- /* 208 */ 125,/*RIGHTCURLYBRACKET*/
- /* 209 */ 74,/*LATINCAPITALLETTERJ*/
- /* 210 */ 75,/*LATINCAPITALLETTERK*/
- /* 211 */ 76,/*LATINCAPITALLETTERL*/
- /* 212 */ 77,/*LATINCAPITALLETTERM*/
- /* 213 */ 78,/*LATINCAPITALLETTERN*/
- /* 214 */ 79,/*LATINCAPITALLETTERO*/
- /* 215 */ 80,/*LATINCAPITALLETTERP*/
- /* 216 */ 81,/*LATINCAPITALLETTERQ*/
- /* 217 */ 82,/*LATINCAPITALLETTERR*/
- /* 218 */ 177,/*PLUS-MINUSSIGN*/
- /* 219 */ 189,/*VULGARFRACTIONONEHALF*/
- 220,
- /* 221 */ 183,/*MIDDLEDOT*/
- 222,
- /* 223 */ 166,/*BROKENBAR*/
- /* 224 */ 92,/*REVERSESOLIDUS*/
- 225,
- /* 226 */ 83,/*LATINCAPITALLETTERS*/
- /* 227 */ 84,/*LATINCAPITALLETTERT*/
- /* 228 */ 85,/*LATINCAPITALLETTERU*/
- /* 229 */ 86,/*LATINCAPITALLETTERV*/
- /* 230 */ 87,/*LATINCAPITALLETTERW*/
- /* 231 */ 88,/*LATINCAPITALLETTERX*/
- /* 232 */ 89,/*LATINCAPITALLETTERY*/
- /* 233 */ 90,/*LATINCAPITALLETTERZ*/
- /* 234 */ 178,/*SUPERSCRIPTTWO*/
- /* 235 */ 167,/*SECTIONSIGN*/
- 236,
- 237,
- /* 238 */ 171,/*LEFT-POINTINGDOUBLEANGLEQUOTATIONMARK*/
- /* 239 */ 172,/*NOTSIGN*/
- /* 240 */ 48,/*DIGITZERO*/
- /* 241 */ 49,/*DIGITONE*/
- /* 242 */ 50,/*DIGITTWO*/
- /* 243 */ 51,/*DIGITTHREE*/
- /* 244 */ 52,/*DIGITFOUR*/
- /* 245 */ 53,/*DIGITFIVE*/
- /* 246 */ 54,/*DIGITSIX*/
- /* 247 */ 55,/*DIGITSEVEN*/
- /* 248 */ 56,/*DIGITEIGHT*/
- /* 249 */ 57,/*DIGITNINE*/
- /* 250 */ 179,/*SUPERSCRIPTTHREE*/
- /* 251 */ 169,/*COPYRIGHTSIGN*/
- 252,
- 253,
- /* 254 */ 187,/*RIGHT-POINTINGDOUBLEANGLEQUOTATIONMARK*/
- 255
+static convert_t iso646[] = {
+	{ 0, 0 },
+	{ 1, 1 },
+	{ 2, 2 },
+	{ 3, 3 },
+	{ 4, 4 },
+	{ 5, 5 },
+	{ 6, 6 },
+	{ 7, 7 },
+	{ 8, 8 },
+	{ 9, 9 },
+	{ 10, 10 },
+	{ 11, 11 },
+	{ 12, 12 },
+	{ 13, 13 },
+	{ 14, 14 },
+	{ 15, 15 },
+	{ 16, 16 },
+	{ 17, 17 },
+	{ 18, 18 },
+	{ 19, 19 },
+	{ 20, 20 },
+	{ 21, 21 },
+	{ 22, 22 },
+	{ 23, 23 },
+	{ 24, 24 },
+	{ 25, 25 },
+	{ 26, 26 },
+	{ 27, 27 },
+	{ 28, 28 },
+	{ 29, 29 },
+	{ 30, 30 },
+	{ 31, 31 },
+	{ 32, 32 },
+	{ 33, 33 },
+	{ 34, 34 },
+	{ 35, 35 },
+	{ 36, 36 },
+	{ 37, 37 },
+	{ 38, 38 },
+	{ 39, 39 },
+	{ 40, 40 },
+	{ 41, 41 },
+	{ 42, 42 },
+	{ 43, 43 },
+	{ 44, 44 },
+	{ 45, 45 },
+	{ 46, 46 },
+	{ 47, 47 },
+	{ 48, 48 },
+	{ 49, 49 },
+	{ 50, 50 },
+	{ 51, 51 },
+	{ 52, 52 },
+	{ 53, 53 },
+	{ 54, 54 },
+	{ 55, 55 },
+	{ 56, 56 },
+	{ 57, 57 },
+	{ 58, 58 },
+	{ 59, 59 },
+	{ 60, 60 },
+	{ 61, 61 },
+	{ 62, 62 },
+	{ 63, 63 },
+	{ 64, 64 },
+	{ 65, 65 },
+	{ 66, 66 },
+	{ 67, 67 },
+	{ 68, 68 },
+	{ 69, 69 },
+	{ 70, 70 },
+	{ 71, 71 },
+	{ 72, 72 },
+	{ 73, 73 },
+	{ 74, 74 },
+	{ 75, 75 },
+	{ 76, 76 },
+	{ 77, 77 },
+	{ 78, 78 },
+	{ 79, 79 },
+	{ 80, 80 },
+	{ 81, 81 },
+	{ 82, 82 },
+	{ 83, 83 },
+	{ 84, 84 },
+	{ 85, 85 },
+	{ 86, 86 },
+	{ 87, 87 },
+	{ 88, 88 },
+	{ 89, 89 },
+	{ 90, 90 },
+	{ 91, 91 },
+	{ 92, 92 },
+	{ 93, 93 },
+	{ 94, 94 },
+	{ 95, 95 },
+	{ 96, 96 },
+	{ 97, 97 },
+	{ 98, 98 },
+	{ 99, 99 },
+	{ 100, 100 },
+	{ 101, 101 },
+	{ 102, 102 },
+	{ 103, 103 },
+	{ 104, 104 },
+	{ 105, 105 },
+	{ 106, 106 },
+	{ 107, 107 },
+	{ 108, 108 },
+	{ 109, 109 },
+	{ 110, 110 },
+	{ 111, 111 },
+	{ 112, 112 },
+	{ 113, 113 },
+	{ 114, 114 },
+	{ 115, 115 },
+	{ 116, 116 },
+	{ 117, 117 },
+	{ 118, 118 },
+	{ 119, 119 },
+	{ 120, 120 },
+	{ 121, 121 },
+	{ 122, 122 },
+	{ 123, 123 },
+	{ 124, 124 },
+	{ 125, 125 },
+	{ 126, 126 },
+	{ 127, 127 },
+	{ 128, 128 },
+	{ 129, 129 },
+	{ 130, 130 },
+	{ 131, 131 },
+	{ 132, 132 },
+	{ 133, 133 },
+	{ 134, 134 },
+	{ 135, 135 },
+	{ 136, 136 },
+	{ 137, 137 },
+	{ 138, 138 },
+	{ 139, 139 },
+	{ 140, 140 },
+	{ 141, 141 },
+	{ 142, 142 },
+	{ 143, 143 },
+	{ 144, 144 },
+	{ 145, 145 },
+	{ 146, 146 },
+	{ 147, 147 },
+	{ 148, 148 },
+	{ 149, 149 },
+	{ 150, 150 },
+	{ 151, 151 },
+	{ 152, 152 },
+	{ 153, 153 },
+	{ 154, 154 },
+	{ 155, 155 },
+	{ 156, 156 },
+	{ 157, 157 },
+	{ 158, 158 },
+	{ 159, 159 },
+	{ 160, 160 },
+	{ 161, 161 },
+	{ 162, 162 },
+	{ 163, 163 },
+	{ 164, 164 },
+	{ 165, 165 },
+	{ 166, 166 },
+	{ 167, 167 },
+	{ 168, 168 },
+	{ 169, 169 },
+	{ 170, 170 },
+	{ 171, 171 },
+	{ 172, 172 },
+	{ 173, 173 },
+	{ 174, 174 },
+	{ 175, 175 },
+	{ 176, 176 },
+	{ 177, 177 },
+	{ 178, 178 },
+	{ 179, 179 },
+	{ 180, 180 },
+	{ 181, 181 },
+	{ 182, 182 },
+	{ 183, 183 },
+	{ 184, 184 },
+	{ 185, 185 },
+	{ 186, 186 },
+	{ 187, 187 },
+	{ 188, 188 },
+	{ 189, 189 },
+	{ 190, 190 },
+	{ 191, 191 },
+	{ 192, 192 },
+	{ 193, 193 },
+	{ 194, 194 },
+	{ 195, 195 },
+	{ 196, 196 },
+	{ 197, 197 },
+	{ 198, 198 },
+	{ 199, 199 },
+	{ 200, 200 },
+	{ 201, 201 },
+	{ 202, 202 },
+	{ 203, 203 },
+	{ 204, 204 },
+	{ 205, 205 },
+	{ 206, 206 },
+	{ 207, 207 },
+	{ 208, 208 },
+	{ 209, 209 },
+	{ 210, 210 },
+	{ 211, 211 },
+	{ 212, 212 },
+	{ 213, 213 },
+	{ 214, 214 },
+	{ 215, 215 },
+	{ 216, 216 },
+	{ 217, 217 },
+	{ 218, 218 },
+	{ 219, 219 },
+	{ 220, 220 },
+	{ 221, 221 },
+	{ 222, 222 },
+	{ 223, 223 },
+	{ 224, 224 },
+	{ 225, 225 },
+	{ 226, 226 },
+	{ 227, 227 },
+	{ 228, 228 },
+	{ 229, 229 },
+	{ 230, 230 },
+	{ 231, 231 },
+	{ 232, 232 },
+	{ 233, 233 },
+	{ 234, 234 },
+	{ 235, 235 },
+	{ 236, 236 },
+	{ 237, 237 },
+	{ 238, 238 },
+	{ 239, 239 },
+	{ 240, 240 },
+	{ 241, 241 },
+	{ 242, 242 },
+	{ 243, 243 },
+	{ 244, 244 },
+	{ 245, 245 },
+	{ 246, 246 },
+	{ 247, 247 },
+	{ 248, 248 },
+	{ 249, 249 },
+	{ 250, 250 },
+	{ 251, 251 },
+	{ 252, 252 },
+	{ 253, 253 },
+	{ 254, 254 },
+	{ 255, 255 },
+	{ 34, 8220 },
+	{ 34, 8221 },
+	{ 39, 8216 },
+	{ 39, 8217 },
+	{ 45, 8211 },
+	{ 45, 8212 },
+	{ 32, 8194 },
+	{ 32, 8195 },
+	{ 32, 8201 },
+	{ 65, 256 },
+	{ 65, 258 },
+	{ 65, 260 },
+	{ 65, 461 },
+	{ 97, 257 },
+	{ 97, 259 },
+	{ 97, 261 },
+	{ 97, 462 },
+	{ 67, 262 },
+	{ 67, 264 },
+	{ 67, 266 },
+	{ 67, 268 },
+	{ 99, 263 },
+	{ 99, 265 },
+	{ 99, 267 },
+	{ 99, 269 },
+	{ 68, 270 },
+	{ 100, 271 },
+	{ 69, 274 },
+	{ 69, 276 },
+	{ 69, 278 },
+	{ 69, 280 },
+	{ 69, 282 },
+	{ 101, 275 },
+	{ 101, 277 },
+	{ 101, 279 },
+	{ 101, 281 },
+	{ 101, 283 },
+	{ 71, 284 },
+	{ 71, 286 },
+	{ 71, 288 },
+	{ 71, 290 },
+	{ 71, 486 },
+	{ 71, 500 },
+	{ 103, 285 },
+	{ 103, 287 },
+	{ 103, 289 },
+	{ 103, 291 },
+	{ 103, 487 },
+	{ 103, 501 },
+	{ 72, 292 },
+	{ 104, 293 },
+	{ 73, 296 },
+	{ 73, 298 },
+	{ 73, 300 },
+	{ 73, 302 },
+	{ 73, 304 },
+	{ 73, 463 },
+	{ 105, 297 },
+	{ 105, 299 },
+	{ 105, 301 },
+	{ 105, 303 },
+	{ 105, 305 },
+	{ 105, 464 },
+	{ 74, 308 },
+	{ 106, 309 },
+	{ 75, 310 },
+	{ 75, 488 },
+	{ 107, 311 },
+	{ 107, 489 },
+	{ 76, 313 },
+	{ 76, 315 },
+	{ 76, 317 },
+	{ 76, 319 },
+	{ 76, 321 },
+	{ 108, 314 },
+	{ 108, 316 },
+	{ 108, 318 },
+	{ 108, 320 },
+	{ 108, 322 },
+	{ 77, 323 },
+	{ 77, 325 },
+	{ 77, 327 },
+	{ 109, 324 },
+	{ 109, 326 },
+	{ 109, 328 },
+	{ 109, 329 },
+	{ 78, 332 },
+	{ 78, 334 },
+	{ 78, 336 },
+	{ 78, 465 },
+	{ 78, 490 },
+	{ 110, 333 },
+	{ 110, 335 },
+	{ 110, 337 },
+	{ 110, 466 },
+	{ 110, 491 },
+	{ 82, 340 },
+	{ 82, 342 },
+	{ 82, 344 },
+	{ 114, 341 },
+	{ 114, 343 },
+	{ 114, 345 },
+	{ 83, 346 },
+	{ 83, 348 },
+	{ 83, 350 },
+	{ 83, 352 },
+	{ 115, 347 },
+	{ 115, 349 },
+	{ 115, 351 },
+	{ 115, 353 },
+	{ 84, 354 },
+	{ 84, 356 },
+	{ 116, 355 },
+	{ 116, 357 },
+	{ 85, 360 },
+	{ 85, 362 },
+	{ 85, 364 },
+	{ 85, 366 },
+	{ 85, 368 },
+	{ 85, 370 },
+	{ 85, 467 },
+	{ 117, 361 },
+	{ 117, 363 },
+	{ 117, 365 },
+	{ 117, 367 },
+	{ 117, 369 },
+	{ 117, 371 },
+	{ 117, 468 },
+	{ 87, 372 },
+	{ 119, 373 },
+	{ 89, 374 },
+	{ 89, 376 },
+	{ 121, 375 },
+	{ 90, 377 },
+	{ 90, 379 },
+	{ 90, 381 },
+	{ 122, 378 },
+	{ 122, 380 },
+	{ 122, 382 },
 };
-charconvert hp48[] = {
- /* 0 */ 0,/*<tdbgcolor="C0C0C0"><fontface="Arial"color="000000"><b>ISO/IEC10646-1:2000CharacterName</b></font>*/
- 1,
- 2,
- 3,
- 4,
- 5,
- 6,
- 7,
- 8,
- 9,
- 10,
- 11,
- 12,
- 13,
- 14,
- 15,
- 16,
- 17,
- 18,
- 19,
- 20,
- 21,
- 22,
- 23,
- 24,
- 25,
- 26,
- 27,
- 28,
- 29,
- 30,
- 31,
- /* 32 */ 32,/*SPACE*/
- /* 33 */ 33,/*EXCLAMATIONMARK*/
- /* 34 */ 34,/*QUOTATIONMARK*/
- /* 35 */ 35,/*NUMBERSIGN*/
- /* 36 */ 36,/*DOLLARSIGN*/
- /* 37 */ 37,/*PERCENTSIGN*/
- /* 38 */ 38,/*AMPERSAND*/
- /* 39 */ 39,/*APOSTROPHE*/
- /* 40 */ 40,/*LEFTPARENTHESIS*/
- /* 41 */ 41,/*RIGHTPARENTHESIS*/
- /* 42 */ 42,/*ASTERISK*/
- /* 43 */ 43,/*PLUSSIGN*/
- /* 44 */ 44,/*COMMA*/
- /* 45 */ 45,/*HYPHEN-MINUS*/
- /* 46 */ 46,/*FULLSTOP*/
- /* 47 */ 47,/*SOLIDUS*/
- /* 48 */ 48,/*DIGITZERO*/
- /* 49 */ 49,/*DIGITONE*/
- /* 50 */ 50,/*DIGITTWO*/
- /* 51 */ 51,/*DIGITTHREE*/
- /* 52 */ 52,/*DIGITFOUR*/
- /* 53 */ 53,/*DIGITFIVE*/
- /* 54 */ 54,/*DIGITSIX*/
- /* 55 */ 55,/*DIGITSEVEN*/
- /* 56 */ 56,/*DIGITEIGHT*/
- /* 57 */ 57,/*DIGITNINE*/
- /* 58 */ 58,/*COLON*/
- /* 59 */ 59,/*SEMICOLON*/
- /* 60 */ 60,/*LESS-THANSIGN*/
- /* 61 */ 61,/*EQUALSSIGN*/
- /* 62 */ 62,/*GREATER-THANSIGN*/
- /* 63 */ 63,/*QUESTIONMARK*/
- /* 64 */ 64,/*COMMERCIALAT*/
- /* 65 */ 65,/*LATINCAPITALLETTERA*/
- /* 66 */ 66,/*LATINCAPITALLETTERB*/
- /* 67 */ 67,/*LATINCAPITALLETTERC*/
- /* 68 */ 68,/*LATINCAPITALLETTERD*/
- /* 69 */ 69,/*LATINCAPITALLETTERE*/
- /* 70 */ 70,/*LATINCAPITALLETTERF*/
- /* 71 */ 71,/*LATINCAPITALLETTERG*/
- /* 72 */ 72,/*LATINCAPITALLETTERH*/
- /* 73 */ 73,/*LATINCAPITALLETTERI*/
- /* 74 */ 74,/*LATINCAPITALLETTERJ*/
- /* 75 */ 75,/*LATINCAPITALLETTERK*/
- /* 76 */ 76,/*LATINCAPITALLETTERL*/
- /* 77 */ 77,/*LATINCAPITALLETTERM*/
- /* 78 */ 78,/*LATINCAPITALLETTERN*/
- /* 79 */ 79,/*LATINCAPITALLETTERO*/
- /* 80 */ 80,/*LATINCAPITALLETTERP*/
- /* 81 */ 81,/*LATINCAPITALLETTERQ*/
- /* 82 */ 82,/*LATINCAPITALLETTERR*/
- /* 83 */ 83,/*LATINCAPITALLETTERS*/
- /* 84 */ 84,/*LATINCAPITALLETTERT*/
- /* 85 */ 85,/*LATINCAPITALLETTERU*/
- /* 86 */ 86,/*LATINCAPITALLETTERV*/
- /* 87 */ 87,/*LATINCAPITALLETTERW*/
- /* 88 */ 88,/*LATINCAPITALLETTERX*/
- /* 89 */ 89,/*LATINCAPITALLETTERY*/
- /* 90 */ 90,/*LATINCAPITALLETTERZ*/
- /* 91 */ 91,/*LEFTSQUAREBRACKET*/
- /* 92 */ 92,/*REVERSESOLIDUS*/
- /* 93 */ 93,/*RIGHTSQUAREBRACKET*/
- /* 94 */ 94,/*CIRCUMFLEXACCENT*/
- /* 95 */ 95,/*LOWLINE*/
- /* 96 */ 96,/*GRAVEACCENT*/
- /* 97 */ 97,/*LATINSMALLLETTERA*/
- /* 98 */ 98,/*LATINSMALLLETTERB*/
- /* 99 */ 99,/*LATINSMALLLETTERC*/
- /* 100 */ 100,/*LATINSMALLLETTERD*/
- /* 101 */ 101,/*LATINSMALLLETTERE*/
- /* 102 */ 102,/*LATINSMALLLETTERF*/
- /* 103 */ 103,/*LATINSMALLLETTERG*/
- /* 104 */ 104,/*LATINSMALLLETTERH*/
- /* 105 */ 105,/*LATINSMALLLETTERI*/
- /* 106 */ 106,/*LATINSMALLLETTERJ*/
- /* 107 */ 107,/*LATINSMALLLETTERK*/
- /* 108 */ 108,/*LATINSMALLLETTERL*/
- /* 109 */ 109,/*LATINSMALLLETTERM*/
- /* 110 */ 110,/*LATINSMALLLETTERN*/
- /* 111 */ 111,/*LATINSMALLLETTERO*/
- /* 112 */ 112,/*LATINSMALLLETTERP*/
- /* 113 */ 113,/*LATINSMALLLETTERQ*/
- /* 114 */ 114,/*LATINSMALLLETTERR*/
- /* 115 */ 115,/*LATINSMALLLETTERS*/
- /* 116 */ 116,/*LATINSMALLLETTERT*/
- /* 117 */ 117,/*LATINSMALLLETTERU*/
- /* 118 */ 118,/*LATINSMALLLETTERV*/
- /* 119 */ 119,/*LATINSMALLLETTERW*/
- /* 120 */ 120,/*LATINSMALLLETTERX*/
- /* 121 */ 121,/*LATINSMALLLETTERY*/
- /* 122 */ 122,/*LATINSMALLLETTERZ*/
- /* 123 */ 123,/*LEFTCURLYBRACKET*/
- /* 124 */ 124,/*VERTICALLINE*/
- /* 125 */ 125,/*RIGHTCURLYBRACKET*/
- /* 126 */ 126,/*TILDE*/
- 127,
- /* 128 */ 8735,/*RIGHTANGLE*/
- 129,
- /* 130 */ 8711,/*NABLA*/
- /* 131 */ 8730,/*SQUAREROOT*/
- /* 132 */ 8747,/*INTEGRAL*/
- /* 133 */ 8721,/*N-ARYSUMMATION*/
- /* 134 */ 9654,/*BLACKRIGHT-POINTINGTRIANGLE*/
- /* 135 */ 960,/*GREEKSMALLLETTERPI*/
- /* 136 */ 8706,/*PARTIALDIFFERENTIAL*/
- /* 137 */ 8804,/*LESS-THANOREQUALTO*/
- /* 138 */ 8805,/*GREATER-THANOREQUALTO*/
- /* 139 */ 8800,/*NOTEQUALTO*/
- /* 140 */ 945,/*GREEKSMALLLETTERALPHA*/
- /* 141 */ 8594,/*RIGHTWARDSARROW*/
- /* 142 */ 8592,/*LEFTWARDSARROW*/
- /* 143 */ 8595,/*DOWNWARDSARROW*/
- /* 144 */ 8593,/*UPWARDSARROW*/
- /* 145 */ 947,/*GREEKSMALLLETTERGAMMA*/
- /* 146 */ 948,/*GREEKSMALLLETTERDELTA*/
- /* 147 */ 949,/*GREEKSMALLLETTEREPSILON*/
- /* 148 */ 951,/*GREEKSMALLLETTERETA*/
- /* 149 */ 952,/*GREEKSMALLLETTERTHETA*/
- /* 150 */ 955,/*GREEKSMALLLETTERLAMDA*/
- /* 151 */ 961,/*GREEKSMALLLETTERRHO*/
- /* 152 */ 963,/*GREEKSMALLLETTERSIGMA*/
- /* 153 */ 964,/*GREEKSMALLLETTERTAU*/
- /* 154 */ 969,/*GREEKSMALLLETTEROMEGA*/
- /* 155 */ 916,/*GREEKCAPITALLETTERDELTA*/
- /* 156 */ 928,/*GREEKCAPITALLETTERPI*/
- /* 157 */ 937,/*GREEKCAPITALLETTEROMEGA*/
- /* 158 */ 9644,/*BLACKRECTANGLE*/
- /* 159 */ 8734,/*INFINITY*/
- /* 160 */ 160,/*NO-BREAKSPACE*/
- /* 161 */ 161,/*INVERTEDEXCLAMATIONMARK*/
- /* 162 */ 162,/*CENTSIGN*/
- /* 163 */ 163,/*POUNDSIGN*/
- /* 164 */ 164,/*CURRENCYSIGN*/
- /* 165 */ 165,/*YENSIGN*/
- /* 166 */ 166,/*BROKENBAR*/
- /* 167 */ 167,/*SECTIONSIGN*/
- /* 168 */ 168,/*DIAERESIS*/
- /* 169 */ 169,/*COPYRIGHTSIGN*/
- /* 170 */ 170,/*FEMININEORDINALINDICATOR*/
- /* 171 */ 171,/*LEFT-POINTINGDOUBLEANGLEQUOTATIONMARK*/
- /* 172 */ 172,/*NOTSIGN*/
- /* 173 */ 173,/*SOFTHYPHEN*/
- /* 174 */ 174,/*REGISTEREDSIGN*/
- /* 175 */ 175,/*MACRON*/
- /* 176 */ 176,/*DEGREESIGN*/
- /* 177 */ 177,/*PLUS-MINUSSIGN*/
- /* 178 */ 178,/*SUPERSCRIPTTWO*/
- /* 179 */ 179,/*SUPERSCRIPTTHREE*/
- /* 180 */ 180,/*ACUTEACCENT*/
- /* 181 */ 181,/*MICROSIGN*/
- /* 182 */ 182,/*PILCROWSIGN*/
- /* 183 */ 183,/*MIDDLEDOT*/
- /* 184 */ 184,/*CEDILLA*/
- /* 185 */ 185,/*SUPERSCRIPTONE*/
- /* 186 */ 186,/*MASCULINEORDINALINDICATOR*/
- /* 187 */ 187,/*RIGHT-POINTINGDOUBLEANGLEQUOTATIONMARK*/
- /* 188 */ 188,/*VULGARFRACTIONONEQUARTER*/
- /* 189 */ 189,/*VULGARFRACTIONONEHALF*/
- /* 190 */ 190,/*VULGARFRACTIONTHREEQUARTERS*/
- /* 191 */ 191,/*INVERTEDQUESTIONMARK*/
- /* 192 */ 192,/*LATINCAPITALLETTERAWITHGRAVE*/
- /* 193 */ 193,/*LATINCAPITALLETTERAWITHACUTE*/
- /* 194 */ 194,/*LATINCAPITALLETTERAWITHCIRCUMFLEX*/
- /* 195 */ 195,/*LATINCAPITALLETTERAWITHTILDE*/
- /* 196 */ 196,/*LATINCAPITALLETTERAWITHDIAERESIS*/
- /* 197 */ 197,/*LATINCAPITALLETTERAWITHRINGABOVE*/
- /* 198 */ 198,/*LATINCAPITALLETTERAE*/
- /* 199 */ 199,/*LATINCAPITALLETTERCWITHCEDILLA*/
- /* 200 */ 200,/*LATINCAPITALLETTEREWITHGRAVE*/
- /* 201 */ 201,/*LATINCAPITALLETTEREWITHACUTE*/
- /* 202 */ 202,/*LATINCAPITALLETTEREWITHCIRCUMFLEX*/
- /* 203 */ 203,/*LATINCAPITALLETTEREWITHDIAERESIS*/
- /* 204 */ 204,/*LATINCAPITALLETTERIWITHGRAVE*/
- /* 205 */ 205,/*LATINCAPITALLETTERIWITHACUTE*/
- /* 206 */ 206,/*LATINCAPITALLETTERIWITHCIRCUMFLEX*/
- /* 207 */ 207,/*LATINCAPITALLETTERIWITHDIAERESIS*/
- /* 208 */ 208,/*LATINCAPITALLETTERETH*/
- /* 209 */ 209,/*LATINCAPITALLETTERNWITHTILDE*/
- /* 210 */ 210,/*LATINCAPITALLETTEROWITHGRAVE*/
- /* 211 */ 211,/*LATINCAPITALLETTEROWITHACUTE*/
- /* 212 */ 212,/*LATINCAPITALLETTEROWITHCIRCUMFLEX*/
- /* 213 */ 213,/*LATINCAPITALLETTEROWITHTILDE*/
- /* 214 */ 214,/*LATINCAPITALLETTEROWITHDIAERESIS*/
- /* 215 */ 215,/*MULTIPLICATIONSIGN*/
- /* 216 */ 216,/*LATINCAPITALLETTEROWITHSTROKE*/
- /* 217 */ 217,/*LATINCAPITALLETTERUWITHGRAVE*/
- /* 218 */ 218,/*LATINCAPITALLETTERUWITHACUTE*/
- /* 219 */ 219,/*LATINCAPITALLETTERUWITHCIRCUMFLEX*/
- /* 220 */ 220,/*LATINCAPITALLETTERUWITHDIAERESIS*/
- /* 221 */ 221,/*LATINCAPITALLETTERYWITHACUTE*/
- /* 222 */ 222,/*LATINCAPITALLETTERTHORN*/
- /* 223 */ 223,/*LATINSMALLLETTERSHARPS*/
- /* 224 */ 224,/*LATINSMALLLETTERAWITHGRAVE*/
- /* 225 */ 225,/*LATINSMALLLETTERAWITHACUTE*/
- /* 226 */ 226,/*LATINSMALLLETTERAWITHCIRCUMFLEX*/
- /* 227 */ 227,/*LATINSMALLLETTERAWITHTILDE*/
- /* 228 */ 228,/*LATINSMALLLETTERAWITHDIAERESIS*/
- /* 229 */ 229,/*LATINSMALLLETTERAWITHRINGABOVE*/
- /* 230 */ 230,/*LATINSMALLLETTERAE*/
- /* 231 */ 231,/*LATINSMALLLETTERCWITHCEDILLA*/
- /* 232 */ 232,/*LATINSMALLLETTEREWITHGRAVE*/
- /* 233 */ 233,/*LATINSMALLLETTEREWITHACUTE*/
- /* 234 */ 234,/*LATINSMALLLETTEREWITHCIRCUMFLEX*/
- /* 235 */ 235,/*LATINSMALLLETTEREWITHDIAERESIS*/
- /* 236 */ 236,/*LATINSMALLLETTERIWITHGRAVE*/
- /* 237 */ 237,/*LATINSMALLLETTERIWITHACUTE*/
- /* 238 */ 238,/*LATINSMALLLETTERIWITHCIRCUMFLEX*/
- /* 239 */ 239,/*LATINSMALLLETTERIWITHDIAERESIS*/
- /* 240 */ 240,/*LATINSMALLLETTERETH*/
- /* 241 */ 241,/*LATINSMALLLETTERNWITHTILDE*/
- /* 242 */ 242,/*LATINSMALLLETTEROWITHGRAVE*/
- /* 243 */ 243,/*LATINSMALLLETTEROWITHACUTE*/
- /* 244 */ 244,/*LATINSMALLLETTEROWITHCIRCUMFLEX*/
- /* 245 */ 245,/*LATINSMALLLETTEROWITHTILDE*/
- /* 246 */ 246,/*LATINSMALLLETTEROWITHDIAERESIS*/
- /* 247 */ 247,/*DIVISIONSIGN*/
- /* 248 */ 248,/*LATINSMALLLETTEROWITHSTROKE*/
- /* 249 */ 249,/*LATINSMALLLETTERUWITHGRAVE*/
- /* 250 */ 250,/*LATINSMALLLETTERUWITHACUTE*/
- /* 251 */ 251,/*LATINSMALLLETTERUWITHCIRCUMFLEX*/
- /* 252 */ 252,/*LATINSMALLLETTERUWITHDIAERESIS*/
- /* 253 */ 253,/*LATINSMALLLETTERYWITHACUTE*/
- /* 254 */ 254,/*LATINSMALLLETTERTHORN*/
- /* 255 */ 255/*LATINSMALLLETTERYWITHDIAERESIS*/
+static convert_t iso646_irv[] = {
+	{ 0, 0 },
+	{ 1, 1 },
+	{ 2, 2 },
+	{ 3, 3 },
+	{ 4, 4 },
+	{ 5, 5 },
+	{ 6, 6 },
+	{ 7, 7 },
+	{ 8, 8 },
+	{ 9, 9 },
+	{ 10, 10 },
+	{ 11, 11 },
+	{ 12, 12 },
+	{ 13, 13 },
+	{ 14, 14 },
+	{ 15, 15 },
+	{ 16, 16 },
+	{ 17, 17 },
+	{ 18, 18 },
+	{ 19, 19 },
+	{ 20, 20 },
+	{ 21, 21 },
+	{ 22, 22 },
+	{ 23, 23 },
+	{ 24, 24 },
+	{ 25, 25 },
+	{ 26, 26 },
+	{ 27, 27 },
+	{ 28, 28 },
+	{ 29, 29 },
+	{ 30, 30 },
+	{ 31, 31 },
+	{ 32, 32 },
+	{ 33, 33 },
+	{ 34, 34 },
+	{ 35, 35 },
+	{ 36, 36 },
+	{ 37, 37 },
+	{ 38, 38 },
+	{ 39, 39 },
+	{ 40, 40 },
+	{ 41, 41 },
+	{ 42, 42 },
+	{ 43, 43 },
+	{ 44, 44 },
+	{ 45, 45 },
+	{ 46, 46 },
+	{ 47, 47 },
+	{ 48, 48 },
+	{ 49, 49 },
+	{ 50, 50 },
+	{ 51, 51 },
+	{ 52, 52 },
+	{ 53, 53 },
+	{ 54, 54 },
+	{ 55, 55 },
+	{ 56, 56 },
+	{ 57, 57 },
+	{ 58, 58 },
+	{ 59, 59 },
+	{ 60, 60 },
+	{ 61, 61 },
+	{ 62, 62 },
+	{ 63, 63 },
+	{ 64, 64 },
+	{ 65, 65 },
+	{ 66, 66 },
+	{ 67, 67 },
+	{ 68, 68 },
+	{ 69, 69 },
+	{ 70, 70 },
+	{ 71, 71 },
+	{ 72, 72 },
+	{ 73, 73 },
+	{ 74, 74 },
+	{ 75, 75 },
+	{ 76, 76 },
+	{ 77, 77 },
+	{ 78, 78 },
+	{ 79, 79 },
+	{ 80, 80 },
+	{ 81, 81 },
+	{ 82, 82 },
+	{ 83, 83 },
+	{ 84, 84 },
+	{ 85, 85 },
+	{ 86, 86 },
+	{ 87, 87 },
+	{ 88, 88 },
+	{ 89, 89 },
+	{ 90, 90 },
+	{ 91, 91 },
+	{ 92, 92 },
+	{ 93, 93 },
+	{ 94, 94 },
+	{ 95, 95 },
+	{ 96, 96 },
+	{ 97, 97 },
+	{ 98, 98 },
+	{ 99, 99 },
+	{ 100, 100 },
+	{ 101, 101 },
+	{ 102, 102 },
+	{ 103, 103 },
+	{ 104, 104 },
+	{ 105, 105 },
+	{ 106, 106 },
+	{ 107, 107 },
+	{ 108, 108 },
+	{ 109, 109 },
+	{ 110, 110 },
+	{ 111, 111 },
+	{ 112, 112 },
+	{ 113, 113 },
+	{ 114, 114 },
+	{ 115, 115 },
+	{ 116, 116 },
+	{ 117, 117 },
+	{ 118, 118 },
+	{ 119, 119 },
+	{ 120, 120 },
+	{ 121, 121 },
+	{ 122, 122 },
+	{ 123, 123 },
+	{ 124, 124 },
+	{ 125, 125 },
+	{ 126, 126 },
+	{ 127, 127 },
+	{ 128, 128 },
+	{ 129, 129 },
+	{ 130, 130 },
+	{ 131, 131 },
+	{ 132, 132 },
+	{ 133, 133 },
+	{ 134, 134 },
+	{ 135, 135 },
+	{ 136, 136 },
+	{ 137, 137 },
+	{ 138, 138 },
+	{ 139, 139 },
+	{ 140, 140 },
+	{ 141, 141 },
+	{ 142, 142 },
+	{ 143, 143 },
+	{ 144, 144 },
+	{ 145, 145 },
+	{ 146, 146 },
+	{ 147, 147 },
+	{ 148, 148 },
+	{ 149, 149 },
+	{ 150, 150 },
+	{ 151, 151 },
+	{ 152, 152 },
+	{ 153, 153 },
+	{ 154, 154 },
+	{ 155, 155 },
+	{ 156, 156 },
+	{ 157, 157 },
+	{ 158, 158 },
+	{ 159, 159 },
+	{ 160, 160 },
+	{ 161, 161 },
+	{ 162, 162 },
+	{ 163, 163 },
+	{ 164, 164 },
+	{ 165, 165 },
+	{ 166, 166 },
+	{ 167, 167 },
+	{ 168, 168 },
+	{ 169, 169 },
+	{ 170, 170 },
+	{ 171, 171 },
+	{ 172, 172 },
+	{ 173, 173 },
+	{ 174, 174 },
+	{ 175, 175 },
+	{ 176, 176 },
+	{ 177, 177 },
+	{ 178, 178 },
+	{ 179, 179 },
+	{ 180, 180 },
+	{ 181, 181 },
+	{ 182, 182 },
+	{ 183, 183 },
+	{ 184, 184 },
+	{ 185, 185 },
+	{ 186, 186 },
+	{ 187, 187 },
+	{ 188, 188 },
+	{ 189, 189 },
+	{ 190, 190 },
+	{ 191, 191 },
+	{ 192, 192 },
+	{ 193, 193 },
+	{ 194, 194 },
+	{ 195, 195 },
+	{ 196, 196 },
+	{ 197, 197 },
+	{ 198, 198 },
+	{ 199, 199 },
+	{ 200, 200 },
+	{ 201, 201 },
+	{ 202, 202 },
+	{ 203, 203 },
+	{ 204, 204 },
+	{ 205, 205 },
+	{ 206, 206 },
+	{ 207, 207 },
+	{ 208, 208 },
+	{ 209, 209 },
+	{ 210, 210 },
+	{ 211, 211 },
+	{ 212, 212 },
+	{ 213, 213 },
+	{ 214, 214 },
+	{ 215, 215 },
+	{ 216, 216 },
+	{ 217, 217 },
+	{ 218, 218 },
+	{ 219, 219 },
+	{ 220, 220 },
+	{ 221, 221 },
+	{ 222, 222 },
+	{ 223, 223 },
+	{ 224, 224 },
+	{ 225, 225 },
+	{ 226, 226 },
+	{ 227, 227 },
+	{ 228, 228 },
+	{ 229, 229 },
+	{ 230, 230 },
+	{ 231, 231 },
+	{ 232, 232 },
+	{ 233, 233 },
+	{ 234, 234 },
+	{ 235, 235 },
+	{ 236, 236 },
+	{ 237, 237 },
+	{ 238, 238 },
+	{ 239, 239 },
+	{ 240, 240 },
+	{ 241, 241 },
+	{ 242, 242 },
+	{ 243, 243 },
+	{ 244, 244 },
+	{ 245, 245 },
+	{ 246, 246 },
+	{ 247, 247 },
+	{ 248, 248 },
+	{ 249, 249 },
+	{ 250, 250 },
+	{ 251, 251 },
+	{ 252, 252 },
+	{ 253, 253 },
+	{ 254, 254 },
+	{ 255, 255 },
+	{ 34, 8220 },
+	{ 34, 8221 },
+	{ 39, 8216 },
+	{ 39, 8217 },
+	{ 45, 8211 },
+	{ 45, 8212 },
+	{ 32, 8194 },
+	{ 32, 8195 },
+	{ 32, 8201 },
+	{ 65, 256 },
+	{ 65, 258 },
+	{ 65, 260 },
+	{ 65, 461 },
+	{ 97, 257 },
+	{ 97, 259 },
+	{ 97, 261 },
+	{ 97, 462 },
+	{ 67, 262 },
+	{ 67, 264 },
+	{ 67, 266 },
+	{ 67, 268 },
+	{ 99, 263 },
+	{ 99, 265 },
+	{ 99, 267 },
+	{ 99, 269 },
+	{ 68, 270 },
+	{ 100, 271 },
+	{ 69, 274 },
+	{ 69, 276 },
+	{ 69, 278 },
+	{ 69, 280 },
+	{ 69, 282 },
+	{ 101, 275 },
+	{ 101, 277 },
+	{ 101, 279 },
+	{ 101, 281 },
+	{ 101, 283 },
+	{ 71, 284 },
+	{ 71, 286 },
+	{ 71, 288 },
+	{ 71, 290 },
+	{ 71, 486 },
+	{ 71, 500 },
+	{ 103, 285 },
+	{ 103, 287 },
+	{ 103, 289 },
+	{ 103, 291 },
+	{ 103, 487 },
+	{ 103, 501 },
+	{ 72, 292 },
+	{ 104, 293 },
+	{ 73, 296 },
+	{ 73, 298 },
+	{ 73, 300 },
+	{ 73, 302 },
+	{ 73, 304 },
+	{ 73, 463 },
+	{ 105, 297 },
+	{ 105, 299 },
+	{ 105, 301 },
+	{ 105, 303 },
+	{ 105, 305 },
+	{ 105, 464 },
+	{ 74, 308 },
+	{ 106, 309 },
+	{ 75, 310 },
+	{ 75, 488 },
+	{ 107, 311 },
+	{ 107, 489 },
+	{ 76, 313 },
+	{ 76, 315 },
+	{ 76, 317 },
+	{ 76, 319 },
+	{ 76, 321 },
+	{ 108, 314 },
+	{ 108, 316 },
+	{ 108, 318 },
+	{ 108, 320 },
+	{ 108, 322 },
+	{ 77, 323 },
+	{ 77, 325 },
+	{ 77, 327 },
+	{ 109, 324 },
+	{ 109, 326 },
+	{ 109, 328 },
+	{ 109, 329 },
+	{ 78, 332 },
+	{ 78, 334 },
+	{ 78, 336 },
+	{ 78, 465 },
+	{ 78, 490 },
+	{ 110, 333 },
+	{ 110, 335 },
+	{ 110, 337 },
+	{ 110, 466 },
+	{ 110, 491 },
+	{ 82, 340 },
+	{ 82, 342 },
+	{ 82, 344 },
+	{ 114, 341 },
+	{ 114, 343 },
+	{ 114, 345 },
+	{ 83, 346 },
+	{ 83, 348 },
+	{ 83, 350 },
+	{ 83, 352 },
+	{ 115, 347 },
+	{ 115, 349 },
+	{ 115, 351 },
+	{ 115, 353 },
+	{ 84, 354 },
+	{ 84, 356 },
+	{ 116, 355 },
+	{ 116, 357 },
+	{ 85, 360 },
+	{ 85, 362 },
+	{ 85, 364 },
+	{ 85, 366 },
+	{ 85, 368 },
+	{ 85, 370 },
+	{ 85, 467 },
+	{ 117, 361 },
+	{ 117, 363 },
+	{ 117, 365 },
+	{ 117, 367 },
+	{ 117, 369 },
+	{ 117, 371 },
+	{ 117, 468 },
+	{ 87, 372 },
+	{ 119, 373 },
+	{ 89, 374 },
+	{ 89, 376 },
+	{ 121, 375 },
+	{ 90, 377 },
+	{ 90, 379 },
+	{ 90, 381 },
+	{ 122, 378 },
+	{ 122, 380 },
+	{ 122, 382 },
 };
-charconvert hproman8[] = {
- /* 0 */ 0,/*<tdbgcolor="C0C0C0"><fontface="Arial"color="000000"><b>ISO/IEC10646-1:2000CharacterName</b></font>*/
- 1,
- 2,
- 3,
- 4,
- 5,
- 6,
- 7,
- 8,
- 9,
- 10,
- 11,
- 12,
- 13,
- 14,
- 15,
- 16,
- 17,
- 18,
- 19,
- 20,
- 21,
- 22,
- 23,
- 24,
- 25,
- 26,
- 27,
- 28,
- 29,
- 30,
- 31,
- /* 32 */ 32,/*SPACE*/
- /* 33 */ 33,/*EXCLAMATIONMARK*/
- /* 34 */ 34,/*QUOTATIONMARK*/
- /* 35 */ 35,/*NUMBERSIGN*/
- /* 36 */ 36,/*DOLLARSIGN*/
- /* 37 */ 37,/*PERCENTSIGN*/
- /* 38 */ 38,/*AMPERSAND*/
- /* 39 */ 39,/*APOSTROPHE*/
- /* 40 */ 40,/*LEFTPARENTHESIS*/
- /* 41 */ 41,/*RIGHTPARENTHESIS*/
- /* 42 */ 42,/*ASTERISK*/
- /* 43 */ 43,/*PLUSSIGN*/
- /* 44 */ 44,/*COMMA*/
- /* 45 */ 45,/*HYPHEN-MINUS*/
- /* 46 */ 46,/*FULLSTOP*/
- /* 47 */ 47,/*SOLIDUS*/
- /* 48 */ 48,/*DIGITZERO*/
- /* 49 */ 49,/*DIGITONE*/
- /* 50 */ 50,/*DIGITTWO*/
- /* 51 */ 51,/*DIGITTHREE*/
- /* 52 */ 52,/*DIGITFOUR*/
- /* 53 */ 53,/*DIGITFIVE*/
- /* 54 */ 54,/*DIGITSIX*/
- /* 55 */ 55,/*DIGITSEVEN*/
- /* 56 */ 56,/*DIGITEIGHT*/
- /* 57 */ 57,/*DIGITNINE*/
- /* 58 */ 58,/*COLON*/
- /* 59 */ 59,/*SEMICOLON*/
- /* 60 */ 60,/*LESS-THANSIGN*/
- /* 61 */ 61,/*EQUALSSIGN*/
- /* 62 */ 62,/*GREATER-THANSIGN*/
- /* 63 */ 63,/*QUESTIONMARK*/
- /* 64 */ 64,/*COMMERCIALAT*/
- /* 65 */ 65,/*LATINCAPITALLETTERA*/
- /* 66 */ 66,/*LATINCAPITALLETTERB*/
- /* 67 */ 67,/*LATINCAPITALLETTERC*/
- /* 68 */ 68,/*LATINCAPITALLETTERD*/
- /* 69 */ 69,/*LATINCAPITALLETTERE*/
- /* 70 */ 70,/*LATINCAPITALLETTERF*/
- /* 71 */ 71,/*LATINCAPITALLETTERG*/
- /* 72 */ 72,/*LATINCAPITALLETTERH*/
- /* 73 */ 73,/*LATINCAPITALLETTERI*/
- /* 74 */ 74,/*LATINCAPITALLETTERJ*/
- /* 75 */ 75,/*LATINCAPITALLETTERK*/
- /* 76 */ 76,/*LATINCAPITALLETTERL*/
- /* 77 */ 77,/*LATINCAPITALLETTERM*/
- /* 78 */ 78,/*LATINCAPITALLETTERN*/
- /* 79 */ 79,/*LATINCAPITALLETTERO*/
- /* 80 */ 80,/*LATINCAPITALLETTERP*/
- /* 81 */ 81,/*LATINCAPITALLETTERQ*/
- /* 82 */ 82,/*LATINCAPITALLETTERR*/
- /* 83 */ 83,/*LATINCAPITALLETTERS*/
- /* 84 */ 84,/*LATINCAPITALLETTERT*/
- /* 85 */ 85,/*LATINCAPITALLETTERU*/
- /* 86 */ 86,/*LATINCAPITALLETTERV*/
- /* 87 */ 87,/*LATINCAPITALLETTERW*/
- /* 88 */ 88,/*LATINCAPITALLETTERX*/
- /* 89 */ 89,/*LATINCAPITALLETTERY*/
- /* 90 */ 90,/*LATINCAPITALLETTERZ*/
- /* 91 */ 91,/*LEFTSQUAREBRACKET*/
- /* 92 */ 92,/*REVERSESOLIDUS*/
- /* 93 */ 93,/*RIGHTSQUAREBRACKET*/
- /* 94 */ 94,/*CIRCUMFLEXACCENT*/
- /* 95 */ 95,/*LOWLINE*/
- /* 96 */ 96,/*GRAVEACCENT*/
- /* 97 */ 97,/*LATINSMALLLETTERA*/
- /* 98 */ 98,/*LATINSMALLLETTERB*/
- /* 99 */ 99,/*LATINSMALLLETTERC*/
- /* 100 */ 100,/*LATINSMALLLETTERD*/
- /* 101 */ 101,/*LATINSMALLLETTERE*/
- /* 102 */ 102,/*LATINSMALLLETTERF*/
- /* 103 */ 103,/*LATINSMALLLETTERG*/
- /* 104 */ 104,/*LATINSMALLLETTERH*/
- /* 105 */ 105,/*LATINSMALLLETTERI*/
- /* 106 */ 106,/*LATINSMALLLETTERJ*/
- /* 107 */ 107,/*LATINSMALLLETTERK*/
- /* 108 */ 108,/*LATINSMALLLETTERL*/
- /* 109 */ 109,/*LATINSMALLLETTERM*/
- /* 110 */ 110,/*LATINSMALLLETTERN*/
- /* 111 */ 111,/*LATINSMALLLETTERO*/
- /* 112 */ 112,/*LATINSMALLLETTERP*/
- /* 113 */ 113,/*LATINSMALLLETTERQ*/
- /* 114 */ 114,/*LATINSMALLLETTERR*/
- /* 115 */ 115,/*LATINSMALLLETTERS*/
- /* 116 */ 116,/*LATINSMALLLETTERT*/
- /* 117 */ 117,/*LATINSMALLLETTERU*/
- /* 118 */ 118,/*LATINSMALLLETTERV*/
- /* 119 */ 119,/*LATINSMALLLETTERW*/
- /* 120 */ 120,/*LATINSMALLLETTERX*/
- /* 121 */ 121,/*LATINSMALLLETTERY*/
- /* 122 */ 122,/*LATINSMALLLETTERZ*/
- /* 123 */ 123,/*LEFTCURLYBRACKET*/
- /* 124 */ 124,/*VERTICALLINE*/
- /* 125 */ 125,/*RIGHTCURLYBRACKET*/
- /* 126 */ 126,/*TILDE*/
- 127,
- 128,
- 129,
- 130,
- 131,
- 132,
- 133,
- 134,
- 135,
- 136,
- 137,
- 138,
- 139,
- 140,
- 141,
- 142,
- 143,
- 144,
- 145,
- 146,
- 147,
- 148,
- 149,
- 150,
- 151,
- 152,
- 153,
- 154,
- 155,
- 156,
- 157,
- 158,
- 159,
- /* 160 */ 160,/*NO-BREAKSPACE*/
- /* 161 */ 192,/*LATINCAPITALLETTERAWITHGRAVE*/
- /* 162 */ 194,/*LATINCAPITALLETTERAWITHCIRCUMFLEX*/
- /* 163 */ 200,/*LATINCAPITALLETTEREWITHGRAVE*/
- /* 164 */ 202,/*LATINCAPITALLETTEREWITHCIRCUMFLEX*/
- /* 165 */ 203,/*LATINCAPITALLETTEREWITHDIAERESIS*/
- /* 166 */ 206,/*LATINCAPITALLETTERIWITHCIRCUMFLEX*/
- /* 167 */ 207,/*LATINCAPITALLETTERIWITHDIAERESIS*/
- /* 168 */ 180,/*ACUTEACCENT*/
- /* 169 */ 768,/*COMBININGGRAVEACCENT*/
- /* 170 */ 770,/*COMBININGCIRCUMFLEXACCENT*/
- /* 171 */ 168,/*DIAERESIS*/
- /* 172 */ 771,/*COMBININGTILDE*/
- /* 173 */ 217,/*LATINCAPITALLETTERUWITHGRAVE*/
- /* 174 */ 219,/*LATINCAPITALLETTERUWITHCIRCUMFLEX*/
- /* 175 */ 8356,/*LIRASIGN*/
- /* 176 */ 175,/*MACRON*/
- /* 177 */ 221,/*LATINCAPITALLETTERYWITHACUTE*/
- /* 178 */ 253,/*LATINSMALLLETTERYWITHACUTE*/
- /* 179 */ 176,/*DEGREESIGN*/
- /* 180 */ 199,/*LATINCAPITALLETTERCWITHCEDILLA*/
- /* 181 */ 231,/*LATINSMALLLETTERCWITHCEDILLA*/
- /* 182 */ 209,/*LATINCAPITALLETTERNWITHTILDE*/
- /* 183 */ 241,/*LATINSMALLLETTERNWITHTILDE*/
- /* 184 */ 161,/*INVERTEDEXCLAMATIONMARK*/
- /* 185 */ 191,/*INVERTEDQUESTIONMARK*/
- /* 186 */ 164,/*CURRENCYSIGN*/
- /* 187 */ 163,/*POUNDSIGN*/
- /* 188 */ 165,/*YENSIGN*/
- /* 189 */ 167,/*SECTIONSIGN*/
- /* 190 */ 402,/*LATINSMALLLETTERFWITHHOOK*/
- /* 191 */ 162,/*CENTSIGN*/
- /* 192 */ 226,/*LATINSMALLLETTERAWITHCIRCUMFLEX*/
- /* 193 */ 234,/*LATINSMALLLETTEREWITHCIRCUMFLEX*/
- /* 194 */ 244,/*LATINSMALLLETTEROWITHCIRCUMFLEX*/
- /* 195 */ 251,/*LATINSMALLLETTERUWITHCIRCUMFLEX*/
- /* 196 */ 225,/*LATINSMALLLETTERAWITHACUTE*/
- /* 197 */ 233,/*LATINSMALLLETTEREWITHACUTE*/
- /* 198 */ 243,/*LATINSMALLLETTEROWITHACUTE*/
- /* 199 */ 250,/*LATINSMALLLETTERUWITHACUTE*/
- /* 200 */ 224,/*LATINSMALLLETTERAWITHGRAVE*/
- /* 201 */ 232,/*LATINSMALLLETTEREWITHGRAVE*/
- /* 202 */ 242,/*LATINSMALLLETTEROWITHGRAVE*/
- /* 203 */ 249,/*LATINSMALLLETTERUWITHGRAVE*/
- /* 204 */ 228,/*LATINSMALLLETTERAWITHDIAERESIS*/
- /* 205 */ 235,/*LATINSMALLLETTEREWITHDIAERESIS*/
- /* 206 */ 246,/*LATINSMALLLETTEROWITHDIAERESIS*/
- /* 207 */ 252,/*LATINSMALLLETTERUWITHDIAERESIS*/
- /* 208 */ 197,/*LATINCAPITALLETTERAWITHRINGABOVE*/
- /* 209 */ 238,/*LATINSMALLLETTERIWITHCIRCUMFLEX*/
- /* 210 */ 216,/*LATINCAPITALLETTEROWITHSTROKE*/
- /* 211 */ 198,/*LATINCAPITALLETTERAE*/
- /* 212 */ 229,/*LATINSMALLLETTERAWITHRINGABOVE*/
- /* 213 */ 237,/*LATINSMALLLETTERIWITHACUTE*/
- /* 214 */ 248,/*LATINSMALLLETTEROWITHSTROKE*/
- /* 215 */ 230,/*LATINSMALLLETTERAE*/
- /* 216 */ 196,/*LATINCAPITALLETTERAWITHDIAERESIS*/
- /* 217 */ 236,/*LATINSMALLLETTERIWITHGRAVE*/
- /* 218 */ 214,/*LATINCAPITALLETTEROWITHDIAERESIS*/
- /* 219 */ 220,/*LATINCAPITALLETTERUWITHDIAERESIS*/
- /* 220 */ 201,/*LATINCAPITALLETTEREWITHACUTE*/
- /* 221 */ 239,/*LATINSMALLLETTERIWITHDIAERESIS*/
- /* 222 */ 223,/*LATINSMALLLETTERSHARPS*/
- /* 223 */ 212,/*LATINCAPITALLETTEROWITHCIRCUMFLEX*/
- /* 224 */ 193,/*LATINCAPITALLETTERAWITHACUTE*/
- /* 225 */ 195,/*LATINCAPITALLETTERAWITHTILDE*/
- /* 226 */ 227,/*LATINSMALLLETTERAWITHTILDE*/
- /* 227 */ 208,/*LATINCAPITALLETTERETH*/
- /* 228 */ 240,/*LATINSMALLLETTERETH*/
- /* 229 */ 205,/*LATINCAPITALLETTERIWITHACUTE*/
- /* 230 */ 204,/*LATINCAPITALLETTERIWITHGRAVE*/
- /* 231 */ 211,/*LATINCAPITALLETTEROWITHACUTE*/
- /* 232 */ 210,/*LATINCAPITALLETTEROWITHGRAVE*/
- /* 233 */ 213,/*LATINCAPITALLETTEROWITHTILDE*/
- /* 234 */ 245,/*LATINSMALLLETTEROWITHTILDE*/
- /* 235 */ 352,/*LATINCAPITALLETTERSWITHCARON*/
- /* 236 */ 353,/*LATINSMALLLETTERSWITHCARON*/
- /* 237 */ 218,/*LATINCAPITALLETTERUWITHACUTE*/
- /* 238 */ 376,/*LATINCAPITALLETTERYWITHDIAERESIS*/
- /* 239 */ 255,/*LATINSMALLLETTERYWITHDIAERESIS*/
- /* 240 */ 222,/*LATINCAPITALLETTERTHORN*/
- /* 241 */ 254,/*LATINSMALLLETTERTHORN*/
- /* 242 */ 183,/*MIDDLEDOT*/
- /* 243 */ 181,/*MICROSIGN*/
- /* 244 */ 182,/*PILCROWSIGN*/
- /* 245 */ 190,/*VULGARFRACTIONTHREEQUARTERS*/
- /* 246 */ 173,/*SOFTHYPHEN*/
- /* 247 */ 188,/*VULGARFRACTIONONEQUARTER*/
- /* 248 */ 189,/*VULGARFRACTIONONEHALF*/
- /* 249 */ 170,/*FEMININEORDINALINDICATOR*/
- /* 250 */ 186,/*MASCULINEORDINALINDICATOR*/
- /* 251 */ 171,/*LEFT-POINTINGDOUBLEANGLEQUOTATIONMARK*/
- /* 252 */ 9632,/*BLACKSQUARE*/
- /* 253 */ 187,/*RIGHT-POINTINGDOUBLEANGLEQUOTATIONMARK*/
- /* 254 */ 177,/*PLUS-MINUSSIGN*/
- 255
+static convert_t iso646_ca[] = {
+	{ 0, 0 },
+	{ 1, 1 },
+	{ 2, 2 },
+	{ 3, 3 },
+	{ 4, 4 },
+	{ 5, 5 },
+	{ 6, 6 },
+	{ 7, 7 },
+	{ 8, 8 },
+	{ 9, 9 },
+	{ 10, 10 },
+	{ 11, 11 },
+	{ 12, 12 },
+	{ 13, 13 },
+	{ 14, 14 },
+	{ 15, 15 },
+	{ 16, 16 },
+	{ 17, 17 },
+	{ 18, 18 },
+	{ 19, 19 },
+	{ 20, 20 },
+	{ 21, 21 },
+	{ 22, 22 },
+	{ 23, 23 },
+	{ 24, 24 },
+	{ 25, 25 },
+	{ 26, 26 },
+	{ 27, 27 },
+	{ 28, 28 },
+	{ 29, 29 },
+	{ 30, 30 },
+	{ 31, 31 },
+	{ 32, 32 },
+	{ 33, 33 },
+	{ 34, 34 },
+	{ 35, 35 },
+	{ 36, 36 },
+	{ 37, 37 },
+	{ 38, 38 },
+	{ 39, 39 },
+	{ 40, 40 },
+	{ 41, 41 },
+	{ 42, 42 },
+	{ 43, 43 },
+	{ 44, 44 },
+	{ 45, 45 },
+	{ 46, 46 },
+	{ 47, 47 },
+	{ 48, 48 },
+	{ 49, 49 },
+	{ 50, 50 },
+	{ 51, 51 },
+	{ 52, 52 },
+	{ 53, 53 },
+	{ 54, 54 },
+	{ 55, 55 },
+	{ 56, 56 },
+	{ 57, 57 },
+	{ 58, 58 },
+	{ 59, 59 },
+	{ 60, 60 },
+	{ 61, 61 },
+	{ 62, 62 },
+	{ 63, 63 },
+	{ 64, 224 },
+	{ 65, 65 },
+	{ 66, 66 },
+	{ 67, 67 },
+	{ 68, 68 },
+	{ 69, 69 },
+	{ 70, 70 },
+	{ 71, 71 },
+	{ 72, 72 },
+	{ 73, 73 },
+	{ 74, 74 },
+	{ 75, 75 },
+	{ 76, 76 },
+	{ 77, 77 },
+	{ 78, 78 },
+	{ 79, 79 },
+	{ 80, 80 },
+	{ 81, 81 },
+	{ 82, 82 },
+	{ 83, 83 },
+	{ 84, 84 },
+	{ 85, 85 },
+	{ 86, 86 },
+	{ 87, 87 },
+	{ 88, 88 },
+	{ 89, 89 },
+	{ 90, 90 },
+	{ 91, 226 },
+	{ 92, 231 },
+	{ 93, 234 },
+	{ 94, 238 },
+	{ 95, 95 },
+	{ 96, 244 },
+	{ 97, 97 },
+	{ 98, 98 },
+	{ 99, 99 },
+	{ 100, 100 },
+	{ 101, 101 },
+	{ 102, 102 },
+	{ 103, 103 },
+	{ 104, 104 },
+	{ 105, 105 },
+	{ 106, 106 },
+	{ 107, 107 },
+	{ 108, 108 },
+	{ 109, 109 },
+	{ 110, 110 },
+	{ 111, 111 },
+	{ 112, 112 },
+	{ 113, 113 },
+	{ 114, 114 },
+	{ 115, 115 },
+	{ 116, 116 },
+	{ 117, 117 },
+	{ 118, 118 },
+	{ 119, 119 },
+	{ 120, 120 },
+	{ 121, 121 },
+	{ 122, 122 },
+	{ 123, 233 },
+	{ 124, 249 },
+	{ 125, 232 },
+	{ 126, 251 },
+	{ 127, 127 },
+	{ 128, 128 },
+	{ 129, 129 },
+	{ 130, 130 },
+	{ 131, 131 },
+	{ 132, 132 },
+	{ 133, 133 },
+	{ 134, 134 },
+	{ 135, 135 },
+	{ 136, 136 },
+	{ 137, 137 },
+	{ 138, 138 },
+	{ 139, 139 },
+	{ 140, 140 },
+	{ 141, 141 },
+	{ 142, 142 },
+	{ 143, 143 },
+	{ 144, 144 },
+	{ 145, 145 },
+	{ 146, 146 },
+	{ 147, 147 },
+	{ 148, 148 },
+	{ 149, 149 },
+	{ 150, 150 },
+	{ 151, 151 },
+	{ 152, 152 },
+	{ 153, 153 },
+	{ 154, 154 },
+	{ 155, 155 },
+	{ 156, 156 },
+	{ 157, 157 },
+	{ 158, 158 },
+	{ 159, 159 },
+	{ 160, 160 },
+	{ 161, 161 },
+	{ 162, 162 },
+	{ 163, 163 },
+	{ 164, 164 },
+	{ 165, 165 },
+	{ 166, 166 },
+	{ 167, 167 },
+	{ 168, 168 },
+	{ 169, 169 },
+	{ 170, 170 },
+	{ 171, 171 },
+	{ 172, 172 },
+	{ 173, 173 },
+	{ 174, 174 },
+	{ 175, 175 },
+	{ 176, 176 },
+	{ 177, 177 },
+	{ 178, 178 },
+	{ 179, 179 },
+	{ 180, 180 },
+	{ 181, 181 },
+	{ 182, 182 },
+	{ 183, 183 },
+	{ 184, 184 },
+	{ 185, 185 },
+	{ 186, 186 },
+	{ 187, 187 },
+	{ 188, 188 },
+	{ 189, 189 },
+	{ 190, 190 },
+	{ 191, 191 },
+	{ 192, 192 },
+	{ 193, 193 },
+	{ 194, 194 },
+	{ 195, 195 },
+	{ 196, 196 },
+	{ 197, 197 },
+	{ 198, 198 },
+	{ 199, 199 },
+	{ 200, 200 },
+	{ 201, 201 },
+	{ 202, 202 },
+	{ 203, 203 },
+	{ 204, 204 },
+	{ 205, 205 },
+	{ 206, 206 },
+	{ 207, 207 },
+	{ 208, 208 },
+	{ 209, 209 },
+	{ 210, 210 },
+	{ 211, 211 },
+	{ 212, 212 },
+	{ 213, 213 },
+	{ 214, 214 },
+	{ 215, 215 },
+	{ 216, 216 },
+	{ 217, 217 },
+	{ 218, 218 },
+	{ 219, 219 },
+	{ 220, 220 },
+	{ 221, 221 },
+	{ 222, 222 },
+	{ 223, 223 },
+	{ 224, 224 },
+	{ 225, 225 },
+	{ 226, 226 },
+	{ 227, 227 },
+	{ 228, 228 },
+	{ 229, 229 },
+	{ 230, 230 },
+	{ 231, 231 },
+	{ 232, 232 },
+	{ 233, 233 },
+	{ 234, 234 },
+	{ 235, 235 },
+	{ 236, 236 },
+	{ 237, 237 },
+	{ 238, 238 },
+	{ 239, 239 },
+	{ 240, 240 },
+	{ 241, 241 },
+	{ 242, 242 },
+	{ 243, 243 },
+	{ 244, 244 },
+	{ 245, 245 },
+	{ 246, 246 },
+	{ 247, 247 },
+	{ 248, 248 },
+	{ 249, 249 },
+	{ 250, 250 },
+	{ 251, 251 },
+	{ 252, 252 },
+	{ 253, 253 },
+	{ 254, 254 },
+	{ 255, 255 },
+	{ 34, 8220 },
+	{ 34, 8221 },
+	{ 39, 8216 },
+	{ 39, 8217 },
+	{ 45, 8211 },
+	{ 45, 8212 },
+	{ 32, 8194 },
+	{ 32, 8195 },
+	{ 32, 8201 },
+	{ 65, 256 },
+	{ 65, 258 },
+	{ 65, 260 },
+	{ 65, 461 },
+	{ 97, 257 },
+	{ 97, 259 },
+	{ 97, 261 },
+	{ 97, 462 },
+	{ 67, 262 },
+	{ 67, 264 },
+	{ 67, 266 },
+	{ 67, 268 },
+	{ 99, 263 },
+	{ 99, 265 },
+	{ 99, 267 },
+	{ 99, 269 },
+	{ 68, 270 },
+	{ 100, 271 },
+	{ 69, 274 },
+	{ 69, 276 },
+	{ 69, 278 },
+	{ 69, 280 },
+	{ 69, 282 },
+	{ 101, 275 },
+	{ 101, 277 },
+	{ 101, 279 },
+	{ 101, 281 },
+	{ 101, 283 },
+	{ 71, 284 },
+	{ 71, 286 },
+	{ 71, 288 },
+	{ 71, 290 },
+	{ 71, 486 },
+	{ 71, 500 },
+	{ 103, 285 },
+	{ 103, 287 },
+	{ 103, 289 },
+	{ 103, 291 },
+	{ 103, 487 },
+	{ 103, 501 },
+	{ 72, 292 },
+	{ 104, 293 },
+	{ 73, 296 },
+	{ 73, 298 },
+	{ 73, 300 },
+	{ 73, 302 },
+	{ 73, 304 },
+	{ 73, 463 },
+	{ 105, 297 },
+	{ 105, 299 },
+	{ 105, 301 },
+	{ 105, 303 },
+	{ 105, 305 },
+	{ 105, 464 },
+	{ 74, 308 },
+	{ 106, 309 },
+	{ 75, 310 },
+	{ 75, 488 },
+	{ 107, 311 },
+	{ 107, 489 },
+	{ 76, 313 },
+	{ 76, 315 },
+	{ 76, 317 },
+	{ 76, 319 },
+	{ 76, 321 },
+	{ 108, 314 },
+	{ 108, 316 },
+	{ 108, 318 },
+	{ 108, 320 },
+	{ 108, 322 },
+	{ 77, 323 },
+	{ 77, 325 },
+	{ 77, 327 },
+	{ 109, 324 },
+	{ 109, 326 },
+	{ 109, 328 },
+	{ 109, 329 },
+	{ 78, 332 },
+	{ 78, 334 },
+	{ 78, 336 },
+	{ 78, 465 },
+	{ 78, 490 },
+	{ 110, 333 },
+	{ 110, 335 },
+	{ 110, 337 },
+	{ 110, 466 },
+	{ 110, 491 },
+	{ 82, 340 },
+	{ 82, 342 },
+	{ 82, 344 },
+	{ 114, 341 },
+	{ 114, 343 },
+	{ 114, 345 },
+	{ 83, 346 },
+	{ 83, 348 },
+	{ 83, 350 },
+	{ 83, 352 },
+	{ 115, 347 },
+	{ 115, 349 },
+	{ 115, 351 },
+	{ 115, 353 },
+	{ 84, 354 },
+	{ 84, 356 },
+	{ 116, 355 },
+	{ 116, 357 },
+	{ 85, 360 },
+	{ 85, 362 },
+	{ 85, 364 },
+	{ 85, 366 },
+	{ 85, 368 },
+	{ 85, 370 },
+	{ 85, 467 },
+	{ 117, 361 },
+	{ 117, 363 },
+	{ 117, 365 },
+	{ 117, 367 },
+	{ 117, 369 },
+	{ 117, 371 },
+	{ 117, 468 },
+	{ 87, 372 },
+	{ 119, 373 },
+	{ 89, 374 },
+	{ 89, 376 },
+	{ 121, 375 },
+	{ 90, 377 },
+	{ 90, 379 },
+	{ 90, 381 },
+	{ 122, 378 },
+	{ 122, 380 },
+	{ 122, 382 },
 };
-charconvert iso646_ca[] = {
- /* 0 */ 0,/*<tdbgcolor="C0C0C0"><fontface="Arial"color="000000"><b>ISO/IEC10646-1:2000CharacterName</b></font>*/
- 1,
- 2,
- 3,
- 4,
- 5,
- 6,
- 7,
- 8,
- 9,
- 10,
- 11,
- 12,
- 13,
- 14,
- 15,
- 16,
- 17,
- 18,
- 19,
- 20,
- 21,
- 22,
- 23,
- 24,
- 25,
- 26,
- 27,
- 28,
- 29,
- 30,
- 31,
- /* 32 */ 32,/*SPACE*/
- /* 33 */ 33,/*EXCLAMATIONMARK*/
- /* 34 */ 34,/*QUOTATIONMARK*/
- /* 35 */ 35,/*NUMBERSIGN*/
- /* 36 */ 36,/*DOLLARSIGN*/
- /* 37 */ 37,/*PERCENTSIGN*/
- /* 38 */ 38,/*AMPERSAND*/
- /* 39 */ 39,/*APOSTROPHE*/
- /* 40 */ 40,/*LEFTPARENTHESIS*/
- /* 41 */ 41,/*RIGHTPARENTHESIS*/
- /* 42 */ 42,/*ASTERISK*/
- /* 43 */ 43,/*PLUSSIGN*/
- /* 44 */ 44,/*COMMA*/
- /* 45 */ 45,/*HYPHEN-MINUS*/
- /* 46 */ 46,/*FULLSTOP*/
- /* 47 */ 47,/*SOLIDUS*/
- /* 48 */ 48,/*DIGITZERO*/
- /* 49 */ 49,/*DIGITONE*/
- /* 50 */ 50,/*DIGITTWO*/
- /* 51 */ 51,/*DIGITTHREE*/
- /* 52 */ 52,/*DIGITFOUR*/
- /* 53 */ 53,/*DIGITFIVE*/
- /* 54 */ 54,/*DIGITSIX*/
- /* 55 */ 55,/*DIGITSEVEN*/
- /* 56 */ 56,/*DIGITEIGHT*/
- /* 57 */ 57,/*DIGITNINE*/
- /* 58 */ 58,/*COLON*/
- /* 59 */ 59,/*SEMICOLON*/
- /* 60 */ 60,/*LESS-THANSIGN*/
- /* 61 */ 61,/*EQUALSSIGN*/
- /* 62 */ 62,/*GREATER-THANSIGN*/
- /* 63 */ 63,/*QUESTIONMARK*/
- /* 64 */ 224,/*LATINSMALLLETTERAWITHGRAVE*/
- /* 65 */ 65,/*LATINCAPITALLETTERA*/
- /* 66 */ 66,/*LATINCAPITALLETTERB*/
- /* 67 */ 67,/*LATINCAPITALLETTERC*/
- /* 68 */ 68,/*LATINCAPITALLETTERD*/
- /* 69 */ 69,/*LATINCAPITALLETTERE*/
- /* 70 */ 70,/*LATINCAPITALLETTERF*/
- /* 71 */ 71,/*LATINCAPITALLETTERG*/
- /* 72 */ 72,/*LATINCAPITALLETTERH*/
- /* 73 */ 73,/*LATINCAPITALLETTERI*/
- /* 74 */ 74,/*LATINCAPITALLETTERJ*/
- /* 75 */ 75,/*LATINCAPITALLETTERK*/
- /* 76 */ 76,/*LATINCAPITALLETTERL*/
- /* 77 */ 77,/*LATINCAPITALLETTERM*/
- /* 78 */ 78,/*LATINCAPITALLETTERN*/
- /* 79 */ 79,/*LATINCAPITALLETTERO*/
- /* 80 */ 80,/*LATINCAPITALLETTERP*/
- /* 81 */ 81,/*LATINCAPITALLETTERQ*/
- /* 82 */ 82,/*LATINCAPITALLETTERR*/
- /* 83 */ 83,/*LATINCAPITALLETTERS*/
- /* 84 */ 84,/*LATINCAPITALLETTERT*/
- /* 85 */ 85,/*LATINCAPITALLETTERU*/
- /* 86 */ 86,/*LATINCAPITALLETTERV*/
- /* 87 */ 87,/*LATINCAPITALLETTERW*/
- /* 88 */ 88,/*LATINCAPITALLETTERX*/
- /* 89 */ 89,/*LATINCAPITALLETTERY*/
- /* 90 */ 90,/*LATINCAPITALLETTERZ*/
- /* 91 */ 226,/*LATINSMALLLETTERAWITHCIRCUMFLEX*/
- /* 92 */ 231,/*LATINSMALLLETTERCWITHCEDILLA*/
- /* 93 */ 234,/*LATINSMALLLETTEREWITHCIRCUMFLEX*/
- /* 94 */ 238,/*LATINSMALLLETTERIWITHCIRCUMFLEX*/
- /* 95 */ 95,/*LOWLINE*/
- /* 96 */ 244,/*LATINSMALLLETTEROWITHCIRCUMFLEX*/
- /* 97 */ 97,/*LATINSMALLLETTERA*/
- /* 98 */ 98,/*LATINSMALLLETTERB*/
- /* 99 */ 99,/*LATINSMALLLETTERC*/
- /* 100 */ 100,/*LATINSMALLLETTERD*/
- /* 101 */ 101,/*LATINSMALLLETTERE*/
- /* 102 */ 102,/*LATINSMALLLETTERF*/
- /* 103 */ 103,/*LATINSMALLLETTERG*/
- /* 104 */ 104,/*LATINSMALLLETTERH*/
- /* 105 */ 105,/*LATINSMALLLETTERI*/
- /* 106 */ 106,/*LATINSMALLLETTERJ*/
- /* 107 */ 107,/*LATINSMALLLETTERK*/
- /* 108 */ 108,/*LATINSMALLLETTERL*/
- /* 109 */ 109,/*LATINSMALLLETTERM*/
- /* 110 */ 110,/*LATINSMALLLETTERN*/
- /* 111 */ 111,/*LATINSMALLLETTERO*/
- /* 112 */ 112,/*LATINSMALLLETTERP*/
- /* 113 */ 113,/*LATINSMALLLETTERQ*/
- /* 114 */ 114,/*LATINSMALLLETTERR*/
- /* 115 */ 115,/*LATINSMALLLETTERS*/
- /* 116 */ 116,/*LATINSMALLLETTERT*/
- /* 117 */ 117,/*LATINSMALLLETTERU*/
- /* 118 */ 118,/*LATINSMALLLETTERV*/
- /* 119 */ 119,/*LATINSMALLLETTERW*/
- /* 120 */ 120,/*LATINSMALLLETTERX*/
- /* 121 */ 121,/*LATINSMALLLETTERY*/
- /* 122 */ 122,/*LATINSMALLLETTERZ*/
- /* 123 */ 233,/*LATINSMALLLETTEREWITHACUTE*/
- /* 124 */ 249,/*LATINSMALLLETTERUWITHGRAVE*/
- /* 125 */ 232,/*LATINSMALLLETTEREWITHGRAVE*/
- /* 126 */ 251,/*LATINSMALLLETTERUWITHCIRCUMFLEX*/
- 127,
- 128,
- 129,
- 130,
- 131,
- 132,
- 133,
- 134,
- 135,
- 136,
- 137,
- 138,
- 139,
- 140,
- 141,
- 142,
- 143,
- 144,
- 145,
- 146,
- 147,
- 148,
- 149,
- 150,
- 151,
- 152,
- 153,
- 154,
- 155,
- 156,
- 157,
- 158,
- 159,
- 160,
- 161,
- 162,
- 163,
- 164,
- 165,
- 166,
- 167,
- 168,
- 169,
- 170,
- 171,
- 172,
- 173,
- 174,
- 175,
- 176,
- 177,
- 178,
- 179,
- 180,
- 181,
- 182,
- 183,
- 184,
- 185,
- 186,
- 187,
- 188,
- 189,
- 190,
- 191,
- 192,
- 193,
- 194,
- 195,
- 196,
- 197,
- 198,
- 199,
- 200,
- 201,
- 202,
- 203,
- 204,
- 205,
- 206,
- 207,
- 208,
- 209,
- 210,
- 211,
- 212,
- 213,
- 214,
- 215,
- 216,
- 217,
- 218,
- 219,
- 220,
- 221,
- 222,
- 223,
- 224,
- 225,
- 226,
- 227,
- 228,
- 229,
- 230,
- 231,
- 232,
- 233,
- 234,
- 235,
- 236,
- 237,
- 238,
- 239,
- 240,
- 241,
- 242,
- 243,
- 244,
- 245,
- 246,
- 247,
- 248,
- 249,
- 250,
- 251,
- 252,
- 253,
- 254,
- 255
+static convert_t iso646_ch[] = {
+	{ 0, 0 },
+	{ 1, 1 },
+	{ 2, 2 },
+	{ 3, 3 },
+	{ 4, 4 },
+	{ 5, 5 },
+	{ 6, 6 },
+	{ 7, 7 },
+	{ 8, 8 },
+	{ 9, 9 },
+	{ 10, 10 },
+	{ 11, 11 },
+	{ 12, 12 },
+	{ 13, 13 },
+	{ 14, 14 },
+	{ 15, 15 },
+	{ 16, 16 },
+	{ 17, 17 },
+	{ 18, 18 },
+	{ 19, 19 },
+	{ 20, 20 },
+	{ 21, 21 },
+	{ 22, 22 },
+	{ 23, 23 },
+	{ 24, 24 },
+	{ 25, 25 },
+	{ 26, 26 },
+	{ 27, 27 },
+	{ 28, 28 },
+	{ 29, 29 },
+	{ 30, 30 },
+	{ 31, 31 },
+	{ 32, 32 },
+	{ 33, 33 },
+	{ 34, 34 },
+	{ 35, 249 },
+	{ 36, 36 },
+	{ 37, 37 },
+	{ 38, 38 },
+	{ 39, 39 },
+	{ 40, 40 },
+	{ 41, 41 },
+	{ 42, 42 },
+	{ 43, 43 },
+	{ 44, 44 },
+	{ 45, 45 },
+	{ 46, 46 },
+	{ 47, 47 },
+	{ 48, 48 },
+	{ 49, 49 },
+	{ 50, 50 },
+	{ 51, 51 },
+	{ 52, 52 },
+	{ 53, 53 },
+	{ 54, 54 },
+	{ 55, 55 },
+	{ 56, 56 },
+	{ 57, 57 },
+	{ 58, 58 },
+	{ 59, 59 },
+	{ 60, 60 },
+	{ 61, 61 },
+	{ 62, 62 },
+	{ 63, 63 },
+	{ 64, 224 },
+	{ 65, 65 },
+	{ 66, 66 },
+	{ 67, 67 },
+	{ 68, 68 },
+	{ 69, 69 },
+	{ 70, 70 },
+	{ 71, 71 },
+	{ 72, 72 },
+	{ 73, 73 },
+	{ 74, 74 },
+	{ 75, 75 },
+	{ 76, 76 },
+	{ 77, 77 },
+	{ 78, 78 },
+	{ 79, 79 },
+	{ 80, 80 },
+	{ 81, 81 },
+	{ 82, 82 },
+	{ 83, 83 },
+	{ 84, 84 },
+	{ 85, 85 },
+	{ 86, 86 },
+	{ 87, 87 },
+	{ 88, 88 },
+	{ 89, 89 },
+	{ 90, 90 },
+	{ 91, 233 },
+	{ 92, 231 },
+	{ 93, 234 },
+	{ 94, 238 },
+	{ 95, 232 },
+	{ 96, 244 },
+	{ 97, 97 },
+	{ 98, 98 },
+	{ 99, 99 },
+	{ 100, 100 },
+	{ 101, 101 },
+	{ 102, 102 },
+	{ 103, 103 },
+	{ 104, 104 },
+	{ 105, 105 },
+	{ 106, 106 },
+	{ 107, 107 },
+	{ 108, 108 },
+	{ 109, 109 },
+	{ 110, 110 },
+	{ 111, 111 },
+	{ 112, 112 },
+	{ 113, 113 },
+	{ 114, 114 },
+	{ 115, 115 },
+	{ 116, 116 },
+	{ 117, 117 },
+	{ 118, 118 },
+	{ 119, 119 },
+	{ 120, 120 },
+	{ 121, 121 },
+	{ 122, 122 },
+	{ 123, 228 },
+	{ 124, 246 },
+	{ 125, 252 },
+	{ 126, 251 },
+	{ 127, 127 },
+	{ 128, 128 },
+	{ 129, 129 },
+	{ 130, 130 },
+	{ 131, 131 },
+	{ 132, 132 },
+	{ 133, 133 },
+	{ 134, 134 },
+	{ 135, 135 },
+	{ 136, 136 },
+	{ 137, 137 },
+	{ 138, 138 },
+	{ 139, 139 },
+	{ 140, 140 },
+	{ 141, 141 },
+	{ 142, 142 },
+	{ 143, 143 },
+	{ 144, 144 },
+	{ 145, 145 },
+	{ 146, 146 },
+	{ 147, 147 },
+	{ 148, 148 },
+	{ 149, 149 },
+	{ 150, 150 },
+	{ 151, 151 },
+	{ 152, 152 },
+	{ 153, 153 },
+	{ 154, 154 },
+	{ 155, 155 },
+	{ 156, 156 },
+	{ 157, 157 },
+	{ 158, 158 },
+	{ 159, 159 },
+	{ 160, 160 },
+	{ 161, 161 },
+	{ 162, 162 },
+	{ 163, 163 },
+	{ 164, 164 },
+	{ 165, 165 },
+	{ 166, 166 },
+	{ 167, 167 },
+	{ 168, 168 },
+	{ 169, 169 },
+	{ 170, 170 },
+	{ 171, 171 },
+	{ 172, 172 },
+	{ 173, 173 },
+	{ 174, 174 },
+	{ 175, 175 },
+	{ 176, 176 },
+	{ 177, 177 },
+	{ 178, 178 },
+	{ 179, 179 },
+	{ 180, 180 },
+	{ 181, 181 },
+	{ 182, 182 },
+	{ 183, 183 },
+	{ 184, 184 },
+	{ 185, 185 },
+	{ 186, 186 },
+	{ 187, 187 },
+	{ 188, 188 },
+	{ 189, 189 },
+	{ 190, 190 },
+	{ 191, 191 },
+	{ 192, 192 },
+	{ 193, 193 },
+	{ 194, 194 },
+	{ 195, 195 },
+	{ 196, 196 },
+	{ 197, 197 },
+	{ 198, 198 },
+	{ 199, 199 },
+	{ 200, 200 },
+	{ 201, 201 },
+	{ 202, 202 },
+	{ 203, 203 },
+	{ 204, 204 },
+	{ 205, 205 },
+	{ 206, 206 },
+	{ 207, 207 },
+	{ 208, 208 },
+	{ 209, 209 },
+	{ 210, 210 },
+	{ 211, 211 },
+	{ 212, 212 },
+	{ 213, 213 },
+	{ 214, 214 },
+	{ 215, 215 },
+	{ 216, 216 },
+	{ 217, 217 },
+	{ 218, 218 },
+	{ 219, 219 },
+	{ 220, 220 },
+	{ 221, 221 },
+	{ 222, 222 },
+	{ 223, 223 },
+	{ 224, 224 },
+	{ 225, 225 },
+	{ 226, 226 },
+	{ 227, 227 },
+	{ 228, 228 },
+	{ 229, 229 },
+	{ 230, 230 },
+	{ 231, 231 },
+	{ 232, 232 },
+	{ 233, 233 },
+	{ 234, 234 },
+	{ 235, 235 },
+	{ 236, 236 },
+	{ 237, 237 },
+	{ 238, 238 },
+	{ 239, 239 },
+	{ 240, 240 },
+	{ 241, 241 },
+	{ 242, 242 },
+	{ 243, 243 },
+	{ 244, 244 },
+	{ 245, 245 },
+	{ 246, 246 },
+	{ 247, 247 },
+	{ 248, 248 },
+	{ 249, 249 },
+	{ 250, 250 },
+	{ 251, 251 },
+	{ 252, 252 },
+	{ 253, 253 },
+	{ 254, 254 },
+	{ 255, 255 },
+	{ 34, 8220 },
+	{ 34, 8221 },
+	{ 39, 8216 },
+	{ 39, 8217 },
+	{ 45, 8211 },
+	{ 45, 8212 },
+	{ 32, 8194 },
+	{ 32, 8195 },
+	{ 32, 8201 },
+	{ 65, 256 },
+	{ 65, 258 },
+	{ 65, 260 },
+	{ 65, 461 },
+	{ 97, 257 },
+	{ 97, 259 },
+	{ 97, 261 },
+	{ 97, 462 },
+	{ 67, 262 },
+	{ 67, 264 },
+	{ 67, 266 },
+	{ 67, 268 },
+	{ 99, 263 },
+	{ 99, 265 },
+	{ 99, 267 },
+	{ 99, 269 },
+	{ 68, 270 },
+	{ 100, 271 },
+	{ 69, 274 },
+	{ 69, 276 },
+	{ 69, 278 },
+	{ 69, 280 },
+	{ 69, 282 },
+	{ 101, 275 },
+	{ 101, 277 },
+	{ 101, 279 },
+	{ 101, 281 },
+	{ 101, 283 },
+	{ 71, 284 },
+	{ 71, 286 },
+	{ 71, 288 },
+	{ 71, 290 },
+	{ 71, 486 },
+	{ 71, 500 },
+	{ 103, 285 },
+	{ 103, 287 },
+	{ 103, 289 },
+	{ 103, 291 },
+	{ 103, 487 },
+	{ 103, 501 },
+	{ 72, 292 },
+	{ 104, 293 },
+	{ 73, 296 },
+	{ 73, 298 },
+	{ 73, 300 },
+	{ 73, 302 },
+	{ 73, 304 },
+	{ 73, 463 },
+	{ 105, 297 },
+	{ 105, 299 },
+	{ 105, 301 },
+	{ 105, 303 },
+	{ 105, 305 },
+	{ 105, 464 },
+	{ 74, 308 },
+	{ 106, 309 },
+	{ 75, 310 },
+	{ 75, 488 },
+	{ 107, 311 },
+	{ 107, 489 },
+	{ 76, 313 },
+	{ 76, 315 },
+	{ 76, 317 },
+	{ 76, 319 },
+	{ 76, 321 },
+	{ 108, 314 },
+	{ 108, 316 },
+	{ 108, 318 },
+	{ 108, 320 },
+	{ 108, 322 },
+	{ 77, 323 },
+	{ 77, 325 },
+	{ 77, 327 },
+	{ 109, 324 },
+	{ 109, 326 },
+	{ 109, 328 },
+	{ 109, 329 },
+	{ 78, 332 },
+	{ 78, 334 },
+	{ 78, 336 },
+	{ 78, 465 },
+	{ 78, 490 },
+	{ 110, 333 },
+	{ 110, 335 },
+	{ 110, 337 },
+	{ 110, 466 },
+	{ 110, 491 },
+	{ 82, 340 },
+	{ 82, 342 },
+	{ 82, 344 },
+	{ 114, 341 },
+	{ 114, 343 },
+	{ 114, 345 },
+	{ 83, 346 },
+	{ 83, 348 },
+	{ 83, 350 },
+	{ 83, 352 },
+	{ 115, 347 },
+	{ 115, 349 },
+	{ 115, 351 },
+	{ 115, 353 },
+	{ 84, 354 },
+	{ 84, 356 },
+	{ 116, 355 },
+	{ 116, 357 },
+	{ 85, 360 },
+	{ 85, 362 },
+	{ 85, 364 },
+	{ 85, 366 },
+	{ 85, 368 },
+	{ 85, 370 },
+	{ 85, 467 },
+	{ 117, 361 },
+	{ 117, 363 },
+	{ 117, 365 },
+	{ 117, 367 },
+	{ 117, 369 },
+	{ 117, 371 },
+	{ 117, 468 },
+	{ 87, 372 },
+	{ 119, 373 },
+	{ 89, 374 },
+	{ 89, 376 },
+	{ 121, 375 },
+	{ 90, 377 },
+	{ 90, 379 },
+	{ 90, 381 },
+	{ 122, 378 },
+	{ 122, 380 },
+	{ 122, 382 },
 };
-charconvert iso646_ch[] = {
- /* 0 */ 0,/*<tdbgcolor="C0C0C0"><fontface="Arial"color="000000"><b>ISO/IEC10646-1:2000CharacterName</b></font>*/
- 1,
- 2,
- 3,
- 4,
- 5,
- 6,
- 7,
- 8,
- 9,
- 10,
- 11,
- 12,
- 13,
- 14,
- 15,
- 16,
- 17,
- 18,
- 19,
- 20,
- 21,
- 22,
- 23,
- 24,
- 25,
- 26,
- 27,
- 28,
- 29,
- 30,
- 31,
- /* 32 */ 32,/*SPACE*/
- /* 33 */ 33,/*EXCLAMATIONMARK*/
- /* 34 */ 34,/*QUOTATIONMARK*/
- /* 35 */ 249,/*LATINSMALLLETTERUWITHGRAVE*/
- /* 36 */ 36,/*DOLLARSIGN*/
- /* 37 */ 37,/*PERCENTSIGN*/
- /* 38 */ 38,/*AMPERSAND*/
- /* 39 */ 39,/*APOSTROPHE*/
- /* 40 */ 40,/*LEFTPARENTHESIS*/
- /* 41 */ 41,/*RIGHTPARENTHESIS*/
- /* 42 */ 42,/*ASTERISK*/
- /* 43 */ 43,/*PLUSSIGN*/
- /* 44 */ 44,/*COMMA*/
- /* 45 */ 45,/*HYPHEN-MINUS*/
- /* 46 */ 46,/*FULLSTOP*/
- /* 47 */ 47,/*SOLIDUS*/
- /* 48 */ 48,/*DIGITZERO*/
- /* 49 */ 49,/*DIGITONE*/
- /* 50 */ 50,/*DIGITTWO*/
- /* 51 */ 51,/*DIGITTHREE*/
- /* 52 */ 52,/*DIGITFOUR*/
- /* 53 */ 53,/*DIGITFIVE*/
- /* 54 */ 54,/*DIGITSIX*/
- /* 55 */ 55,/*DIGITSEVEN*/
- /* 56 */ 56,/*DIGITEIGHT*/
- /* 57 */ 57,/*DIGITNINE*/
- /* 58 */ 58,/*COLON*/
- /* 59 */ 59,/*SEMICOLON*/
- /* 60 */ 60,/*LESS-THANSIGN*/
- /* 61 */ 61,/*EQUALSSIGN*/
- /* 62 */ 62,/*GREATER-THANSIGN*/
- /* 63 */ 63,/*QUESTIONMARK*/
- /* 64 */ 224,/*LATINSMALLLETTERAWITHGRAVE*/
- /* 65 */ 65,/*LATINCAPITALLETTERA*/
- /* 66 */ 66,/*LATINCAPITALLETTERB*/
- /* 67 */ 67,/*LATINCAPITALLETTERC*/
- /* 68 */ 68,/*LATINCAPITALLETTERD*/
- /* 69 */ 69,/*LATINCAPITALLETTERE*/
- /* 70 */ 70,/*LATINCAPITALLETTERF*/
- /* 71 */ 71,/*LATINCAPITALLETTERG*/
- /* 72 */ 72,/*LATINCAPITALLETTERH*/
- /* 73 */ 73,/*LATINCAPITALLETTERI*/
- /* 74 */ 74,/*LATINCAPITALLETTERJ*/
- /* 75 */ 75,/*LATINCAPITALLETTERK*/
- /* 76 */ 76,/*LATINCAPITALLETTERL*/
- /* 77 */ 77,/*LATINCAPITALLETTERM*/
- /* 78 */ 78,/*LATINCAPITALLETTERN*/
- /* 79 */ 79,/*LATINCAPITALLETTERO*/
- /* 80 */ 80,/*LATINCAPITALLETTERP*/
- /* 81 */ 81,/*LATINCAPITALLETTERQ*/
- /* 82 */ 82,/*LATINCAPITALLETTERR*/
- /* 83 */ 83,/*LATINCAPITALLETTERS*/
- /* 84 */ 84,/*LATINCAPITALLETTERT*/
- /* 85 */ 85,/*LATINCAPITALLETTERU*/
- /* 86 */ 86,/*LATINCAPITALLETTERV*/
- /* 87 */ 87,/*LATINCAPITALLETTERW*/
- /* 88 */ 88,/*LATINCAPITALLETTERX*/
- /* 89 */ 89,/*LATINCAPITALLETTERY*/
- /* 90 */ 90,/*LATINCAPITALLETTERZ*/
- /* 91 */ 233,/*LATINSMALLLETTEREWITHACUTE*/
- /* 92 */ 231,/*LATINSMALLLETTERCWITHCEDILLA*/
- /* 93 */ 234,/*LATINSMALLLETTEREWITHCIRCUMFLEX*/
- /* 94 */ 238,/*LATINSMALLLETTERIWITHCIRCUMFLEX*/
- /* 95 */ 232,/*LATINSMALLLETTEREWITHGRAVE*/
- /* 96 */ 244,/*LATINSMALLLETTEROWITHCIRCUMFLEX*/
- /* 97 */ 97,/*LATINSMALLLETTERA*/
- /* 98 */ 98,/*LATINSMALLLETTERB*/
- /* 99 */ 99,/*LATINSMALLLETTERC*/
- /* 100 */ 100,/*LATINSMALLLETTERD*/
- /* 101 */ 101,/*LATINSMALLLETTERE*/
- /* 102 */ 102,/*LATINSMALLLETTERF*/
- /* 103 */ 103,/*LATINSMALLLETTERG*/
- /* 104 */ 104,/*LATINSMALLLETTERH*/
- /* 105 */ 105,/*LATINSMALLLETTERI*/
- /* 106 */ 106,/*LATINSMALLLETTERJ*/
- /* 107 */ 107,/*LATINSMALLLETTERK*/
- /* 108 */ 108,/*LATINSMALLLETTERL*/
- /* 109 */ 109,/*LATINSMALLLETTERM*/
- /* 110 */ 110,/*LATINSMALLLETTERN*/
- /* 111 */ 111,/*LATINSMALLLETTERO*/
- /* 112 */ 112,/*LATINSMALLLETTERP*/
- /* 113 */ 113,/*LATINSMALLLETTERQ*/
- /* 114 */ 114,/*LATINSMALLLETTERR*/
- /* 115 */ 115,/*LATINSMALLLETTERS*/
- /* 116 */ 116,/*LATINSMALLLETTERT*/
- /* 117 */ 117,/*LATINSMALLLETTERU*/
- /* 118 */ 118,/*LATINSMALLLETTERV*/
- /* 119 */ 119,/*LATINSMALLLETTERW*/
- /* 120 */ 120,/*LATINSMALLLETTERX*/
- /* 121 */ 121,/*LATINSMALLLETTERY*/
- /* 122 */ 122,/*LATINSMALLLETTERZ*/
- /* 123 */ 228,/*LATINSMALLLETTERAWITHDIAERESIS*/
- /* 124 */ 246,/*LATINSMALLLETTEROWITHDIAERESIS*/
- /* 125 */ 252,/*LATINSMALLLETTERUWITHDIAERESIS*/
- /* 126 */ 251,/*LATINSMALLLETTERUWITHCIRCUMFLEX*/
- 127,
- 128,
- 129,
- 130,
- 131,
- 132,
- 133,
- 134,
- 135,
- 136,
- 137,
- 138,
- 139,
- 140,
- 141,
- 142,
- 143,
- 144,
- 145,
- 146,
- 147,
- 148,
- 149,
- 150,
- 151,
- 152,
- 153,
- 154,
- 155,
- 156,
- 157,
- 158,
- 159,
- 160,
- 161,
- 162,
- 163,
- 164,
- 165,
- 166,
- 167,
- 168,
- 169,
- 170,
- 171,
- 172,
- 173,
- 174,
- 175,
- 176,
- 177,
- 178,
- 179,
- 180,
- 181,
- 182,
- 183,
- 184,
- 185,
- 186,
- 187,
- 188,
- 189,
- 190,
- 191,
- 192,
- 193,
- 194,
- 195,
- 196,
- 197,
- 198,
- 199,
- 200,
- 201,
- 202,
- 203,
- 204,
- 205,
- 206,
- 207,
- 208,
- 209,
- 210,
- 211,
- 212,
- 213,
- 214,
- 215,
- 216,
- 217,
- 218,
- 219,
- 220,
- 221,
- 222,
- 223,
- 224,
- 225,
- 226,
- 227,
- 228,
- 229,
- 230,
- 231,
- 232,
- 233,
- 234,
- 235,
- 236,
- 237,
- 238,
- 239,
- 240,
- 241,
- 242,
- 243,
- 244,
- 245,
- 246,
- 247,
- 248,
- 249,
- 250,
- 251,
- 252,
- 253,
- 254,
- 255
+static convert_t iso646_de[] = {
+	{ 0, 0 },
+	{ 1, 1 },
+	{ 2, 2 },
+	{ 3, 3 },
+	{ 4, 4 },
+	{ 5, 5 },
+	{ 6, 6 },
+	{ 7, 7 },
+	{ 8, 8 },
+	{ 9, 9 },
+	{ 10, 10 },
+	{ 11, 11 },
+	{ 12, 12 },
+	{ 13, 13 },
+	{ 14, 14 },
+	{ 15, 15 },
+	{ 16, 16 },
+	{ 17, 17 },
+	{ 18, 18 },
+	{ 19, 19 },
+	{ 20, 20 },
+	{ 21, 21 },
+	{ 22, 22 },
+	{ 23, 23 },
+	{ 24, 24 },
+	{ 25, 25 },
+	{ 26, 26 },
+	{ 27, 27 },
+	{ 28, 28 },
+	{ 29, 29 },
+	{ 30, 30 },
+	{ 31, 31 },
+	{ 32, 32 },
+	{ 33, 33 },
+	{ 34, 34 },
+	{ 35, 35 },
+	{ 36, 36 },
+	{ 37, 37 },
+	{ 38, 38 },
+	{ 39, 39 },
+	{ 40, 40 },
+	{ 41, 41 },
+	{ 42, 42 },
+	{ 43, 43 },
+	{ 44, 44 },
+	{ 45, 45 },
+	{ 46, 46 },
+	{ 47, 47 },
+	{ 48, 48 },
+	{ 49, 49 },
+	{ 50, 50 },
+	{ 51, 51 },
+	{ 52, 52 },
+	{ 53, 53 },
+	{ 54, 54 },
+	{ 55, 55 },
+	{ 56, 56 },
+	{ 57, 57 },
+	{ 58, 58 },
+	{ 59, 59 },
+	{ 60, 60 },
+	{ 61, 61 },
+	{ 62, 62 },
+	{ 63, 63 },
+	{ 64, 167 },
+	{ 65, 65 },
+	{ 66, 66 },
+	{ 67, 67 },
+	{ 68, 68 },
+	{ 69, 69 },
+	{ 70, 70 },
+	{ 71, 71 },
+	{ 72, 72 },
+	{ 73, 73 },
+	{ 74, 74 },
+	{ 75, 75 },
+	{ 76, 76 },
+	{ 77, 77 },
+	{ 78, 78 },
+	{ 79, 79 },
+	{ 80, 80 },
+	{ 81, 81 },
+	{ 82, 82 },
+	{ 83, 83 },
+	{ 84, 84 },
+	{ 85, 85 },
+	{ 86, 86 },
+	{ 87, 87 },
+	{ 88, 88 },
+	{ 89, 89 },
+	{ 90, 90 },
+	{ 91, 196 },
+	{ 92, 214 },
+	{ 93, 220 },
+	{ 94, 94 },
+	{ 95, 95 },
+	{ 96, 96 },
+	{ 97, 97 },
+	{ 98, 98 },
+	{ 99, 99 },
+	{ 100, 100 },
+	{ 101, 101 },
+	{ 102, 102 },
+	{ 103, 103 },
+	{ 104, 104 },
+	{ 105, 105 },
+	{ 106, 106 },
+	{ 107, 107 },
+	{ 108, 108 },
+	{ 109, 109 },
+	{ 110, 110 },
+	{ 111, 111 },
+	{ 112, 112 },
+	{ 113, 113 },
+	{ 114, 114 },
+	{ 115, 115 },
+	{ 116, 116 },
+	{ 117, 117 },
+	{ 118, 118 },
+	{ 119, 119 },
+	{ 120, 120 },
+	{ 121, 121 },
+	{ 122, 122 },
+	{ 123, 228 },
+	{ 124, 246 },
+	{ 125, 252 },
+	{ 126, 223 },
+	{ 127, 127 },
+	{ 128, 128 },
+	{ 129, 129 },
+	{ 130, 130 },
+	{ 131, 131 },
+	{ 132, 132 },
+	{ 133, 133 },
+	{ 134, 134 },
+	{ 135, 135 },
+	{ 136, 136 },
+	{ 137, 137 },
+	{ 138, 138 },
+	{ 139, 139 },
+	{ 140, 140 },
+	{ 141, 141 },
+	{ 142, 142 },
+	{ 143, 143 },
+	{ 144, 144 },
+	{ 145, 145 },
+	{ 146, 146 },
+	{ 147, 147 },
+	{ 148, 148 },
+	{ 149, 149 },
+	{ 150, 150 },
+	{ 151, 151 },
+	{ 152, 152 },
+	{ 153, 153 },
+	{ 154, 154 },
+	{ 155, 155 },
+	{ 156, 156 },
+	{ 157, 157 },
+	{ 158, 158 },
+	{ 159, 159 },
+	{ 160, 160 },
+	{ 161, 161 },
+	{ 162, 162 },
+	{ 163, 163 },
+	{ 164, 164 },
+	{ 165, 165 },
+	{ 166, 166 },
+	{ 167, 167 },
+	{ 168, 168 },
+	{ 169, 169 },
+	{ 170, 170 },
+	{ 171, 171 },
+	{ 172, 172 },
+	{ 173, 173 },
+	{ 174, 174 },
+	{ 175, 175 },
+	{ 176, 176 },
+	{ 177, 177 },
+	{ 178, 178 },
+	{ 179, 179 },
+	{ 180, 180 },
+	{ 181, 181 },
+	{ 182, 182 },
+	{ 183, 183 },
+	{ 184, 184 },
+	{ 185, 185 },
+	{ 186, 186 },
+	{ 187, 187 },
+	{ 188, 188 },
+	{ 189, 189 },
+	{ 190, 190 },
+	{ 191, 191 },
+	{ 192, 192 },
+	{ 193, 193 },
+	{ 194, 194 },
+	{ 195, 195 },
+	{ 196, 196 },
+	{ 197, 197 },
+	{ 198, 198 },
+	{ 199, 199 },
+	{ 200, 200 },
+	{ 201, 201 },
+	{ 202, 202 },
+	{ 203, 203 },
+	{ 204, 204 },
+	{ 205, 205 },
+	{ 206, 206 },
+	{ 207, 207 },
+	{ 208, 208 },
+	{ 209, 209 },
+	{ 210, 210 },
+	{ 211, 211 },
+	{ 212, 212 },
+	{ 213, 213 },
+	{ 214, 214 },
+	{ 215, 215 },
+	{ 216, 216 },
+	{ 217, 217 },
+	{ 218, 218 },
+	{ 219, 219 },
+	{ 220, 220 },
+	{ 221, 221 },
+	{ 222, 222 },
+	{ 223, 223 },
+	{ 224, 224 },
+	{ 225, 225 },
+	{ 226, 226 },
+	{ 227, 227 },
+	{ 228, 228 },
+	{ 229, 229 },
+	{ 230, 230 },
+	{ 231, 231 },
+	{ 232, 232 },
+	{ 233, 233 },
+	{ 234, 234 },
+	{ 235, 235 },
+	{ 236, 236 },
+	{ 237, 237 },
+	{ 238, 238 },
+	{ 239, 239 },
+	{ 240, 240 },
+	{ 241, 241 },
+	{ 242, 242 },
+	{ 243, 243 },
+	{ 244, 244 },
+	{ 245, 245 },
+	{ 246, 246 },
+	{ 247, 247 },
+	{ 248, 248 },
+	{ 249, 249 },
+	{ 250, 250 },
+	{ 251, 251 },
+	{ 252, 252 },
+	{ 253, 253 },
+	{ 254, 254 },
+	{ 255, 255 },
+	{ 34, 8220 },
+	{ 34, 8221 },
+	{ 39, 8216 },
+	{ 39, 8217 },
+	{ 45, 8211 },
+	{ 45, 8212 },
+	{ 32, 8194 },
+	{ 32, 8195 },
+	{ 32, 8201 },
+	{ 65, 256 },
+	{ 65, 258 },
+	{ 65, 260 },
+	{ 65, 461 },
+	{ 97, 257 },
+	{ 97, 259 },
+	{ 97, 261 },
+	{ 97, 462 },
+	{ 67, 262 },
+	{ 67, 264 },
+	{ 67, 266 },
+	{ 67, 268 },
+	{ 99, 263 },
+	{ 99, 265 },
+	{ 99, 267 },
+	{ 99, 269 },
+	{ 68, 270 },
+	{ 100, 271 },
+	{ 69, 274 },
+	{ 69, 276 },
+	{ 69, 278 },
+	{ 69, 280 },
+	{ 69, 282 },
+	{ 101, 275 },
+	{ 101, 277 },
+	{ 101, 279 },
+	{ 101, 281 },
+	{ 101, 283 },
+	{ 71, 284 },
+	{ 71, 286 },
+	{ 71, 288 },
+	{ 71, 290 },
+	{ 71, 486 },
+	{ 71, 500 },
+	{ 103, 285 },
+	{ 103, 287 },
+	{ 103, 289 },
+	{ 103, 291 },
+	{ 103, 487 },
+	{ 103, 501 },
+	{ 72, 292 },
+	{ 104, 293 },
+	{ 73, 296 },
+	{ 73, 298 },
+	{ 73, 300 },
+	{ 73, 302 },
+	{ 73, 304 },
+	{ 73, 463 },
+	{ 105, 297 },
+	{ 105, 299 },
+	{ 105, 301 },
+	{ 105, 303 },
+	{ 105, 305 },
+	{ 105, 464 },
+	{ 74, 308 },
+	{ 106, 309 },
+	{ 75, 310 },
+	{ 75, 488 },
+	{ 107, 311 },
+	{ 107, 489 },
+	{ 76, 313 },
+	{ 76, 315 },
+	{ 76, 317 },
+	{ 76, 319 },
+	{ 76, 321 },
+	{ 108, 314 },
+	{ 108, 316 },
+	{ 108, 318 },
+	{ 108, 320 },
+	{ 108, 322 },
+	{ 77, 323 },
+	{ 77, 325 },
+	{ 77, 327 },
+	{ 109, 324 },
+	{ 109, 326 },
+	{ 109, 328 },
+	{ 109, 329 },
+	{ 78, 332 },
+	{ 78, 334 },
+	{ 78, 336 },
+	{ 78, 465 },
+	{ 78, 490 },
+	{ 110, 333 },
+	{ 110, 335 },
+	{ 110, 337 },
+	{ 110, 466 },
+	{ 110, 491 },
+	{ 82, 340 },
+	{ 82, 342 },
+	{ 82, 344 },
+	{ 114, 341 },
+	{ 114, 343 },
+	{ 114, 345 },
+	{ 83, 346 },
+	{ 83, 348 },
+	{ 83, 350 },
+	{ 83, 352 },
+	{ 115, 347 },
+	{ 115, 349 },
+	{ 115, 351 },
+	{ 115, 353 },
+	{ 84, 354 },
+	{ 84, 356 },
+	{ 116, 355 },
+	{ 116, 357 },
+	{ 85, 360 },
+	{ 85, 362 },
+	{ 85, 364 },
+	{ 85, 366 },
+	{ 85, 368 },
+	{ 85, 370 },
+	{ 85, 467 },
+	{ 117, 361 },
+	{ 117, 363 },
+	{ 117, 365 },
+	{ 117, 367 },
+	{ 117, 369 },
+	{ 117, 371 },
+	{ 117, 468 },
+	{ 87, 372 },
+	{ 119, 373 },
+	{ 89, 374 },
+	{ 89, 376 },
+	{ 121, 375 },
+	{ 90, 377 },
+	{ 90, 379 },
+	{ 90, 381 },
+	{ 122, 378 },
+	{ 122, 380 },
+	{ 122, 382 },
 };
-charconvert iso646_de[] = {
- /* 0 */ 0,/*<tdbgcolor="C0C0C0"><fontface="Arial"color="000000"><b>ISO/IEC10646-1:2000CharacterName</b></font>*/
- 1,
- 2,
- 3,
- 4,
- 5,
- 6,
- 7,
- 8,
- 9,
- 10,
- 11,
- 12,
- 13,
- 14,
- 15,
- 16,
- 17,
- 18,
- 19,
- 20,
- 21,
- 22,
- 23,
- 24,
- 25,
- 26,
- 27,
- 28,
- 29,
- 30,
- 31,
- /* 32 */ 32,/*SPACE*/
- /* 33 */ 33,/*EXCLAMATIONMARK*/
- /* 34 */ 34,/*QUOTATIONMARK*/
- /* 35 */ 35,/*NUMBERSIGN*/
- /* 36 */ 36,/*DOLLARSIGN*/
- /* 37 */ 37,/*PERCENTSIGN*/
- /* 38 */ 38,/*AMPERSAND*/
- /* 39 */ 39,/*APOSTROPHE*/
- /* 40 */ 40,/*LEFTPARENTHESIS*/
- /* 41 */ 41,/*RIGHTPARENTHESIS*/
- /* 42 */ 42,/*ASTERISK*/
- /* 43 */ 43,/*PLUSSIGN*/
- /* 44 */ 44,/*COMMA*/
- /* 45 */ 45,/*HYPHEN-MINUS*/
- /* 46 */ 46,/*FULLSTOP*/
- /* 47 */ 47,/*SOLIDUS*/
- /* 48 */ 48,/*DIGITZERO*/
- /* 49 */ 49,/*DIGITONE*/
- /* 50 */ 50,/*DIGITTWO*/
- /* 51 */ 51,/*DIGITTHREE*/
- /* 52 */ 52,/*DIGITFOUR*/
- /* 53 */ 53,/*DIGITFIVE*/
- /* 54 */ 54,/*DIGITSIX*/
- /* 55 */ 55,/*DIGITSEVEN*/
- /* 56 */ 56,/*DIGITEIGHT*/
- /* 57 */ 57,/*DIGITNINE*/
- /* 58 */ 58,/*COLON*/
- /* 59 */ 59,/*SEMICOLON*/
- /* 60 */ 60,/*LESS-THANSIGN*/
- /* 61 */ 61,/*EQUALSSIGN*/
- /* 62 */ 62,/*GREATER-THANSIGN*/
- /* 63 */ 63,/*QUESTIONMARK*/
- /* 64 */ 167,/*SECTIONSIGN*/
- /* 65 */ 65,/*LATINCAPITALLETTERA*/
- /* 66 */ 66,/*LATINCAPITALLETTERB*/
- /* 67 */ 67,/*LATINCAPITALLETTERC*/
- /* 68 */ 68,/*LATINCAPITALLETTERD*/
- /* 69 */ 69,/*LATINCAPITALLETTERE*/
- /* 70 */ 70,/*LATINCAPITALLETTERF*/
- /* 71 */ 71,/*LATINCAPITALLETTERG*/
- /* 72 */ 72,/*LATINCAPITALLETTERH*/
- /* 73 */ 73,/*LATINCAPITALLETTERI*/
- /* 74 */ 74,/*LATINCAPITALLETTERJ*/
- /* 75 */ 75,/*LATINCAPITALLETTERK*/
- /* 76 */ 76,/*LATINCAPITALLETTERL*/
- /* 77 */ 77,/*LATINCAPITALLETTERM*/
- /* 78 */ 78,/*LATINCAPITALLETTERN*/
- /* 79 */ 79,/*LATINCAPITALLETTERO*/
- /* 80 */ 80,/*LATINCAPITALLETTERP*/
- /* 81 */ 81,/*LATINCAPITALLETTERQ*/
- /* 82 */ 82,/*LATINCAPITALLETTERR*/
- /* 83 */ 83,/*LATINCAPITALLETTERS*/
- /* 84 */ 84,/*LATINCAPITALLETTERT*/
- /* 85 */ 85,/*LATINCAPITALLETTERU*/
- /* 86 */ 86,/*LATINCAPITALLETTERV*/
- /* 87 */ 87,/*LATINCAPITALLETTERW*/
- /* 88 */ 88,/*LATINCAPITALLETTERX*/
- /* 89 */ 89,/*LATINCAPITALLETTERY*/
- /* 90 */ 90,/*LATINCAPITALLETTERZ*/
- /* 91 */ 196,/*LATINCAPITALLETTERAWITHDIAERESIS*/
- /* 92 */ 214,/*LATINCAPITALLETTEROWITHDIAERESIS*/
- /* 93 */ 220,/*LATINCAPITALLETTERUWITHDIAERESIS*/
- /* 94 */ 94,/*CIRCUMFLEXACCENT*/
- /* 95 */ 95,/*LOWLINE*/
- /* 96 */ 96,/*GRAVEACCENT*/
- /* 97 */ 97,/*LATINSMALLLETTERA*/
- /* 98 */ 98,/*LATINSMALLLETTERB*/
- /* 99 */ 99,/*LATINSMALLLETTERC*/
- /* 100 */ 100,/*LATINSMALLLETTERD*/
- /* 101 */ 101,/*LATINSMALLLETTERE*/
- /* 102 */ 102,/*LATINSMALLLETTERF*/
- /* 103 */ 103,/*LATINSMALLLETTERG*/
- /* 104 */ 104,/*LATINSMALLLETTERH*/
- /* 105 */ 105,/*LATINSMALLLETTERI*/
- /* 106 */ 106,/*LATINSMALLLETTERJ*/
- /* 107 */ 107,/*LATINSMALLLETTERK*/
- /* 108 */ 108,/*LATINSMALLLETTERL*/
- /* 109 */ 109,/*LATINSMALLLETTERM*/
- /* 110 */ 110,/*LATINSMALLLETTERN*/
- /* 111 */ 111,/*LATINSMALLLETTERO*/
- /* 112 */ 112,/*LATINSMALLLETTERP*/
- /* 113 */ 113,/*LATINSMALLLETTERQ*/
- /* 114 */ 114,/*LATINSMALLLETTERR*/
- /* 115 */ 115,/*LATINSMALLLETTERS*/
- /* 116 */ 116,/*LATINSMALLLETTERT*/
- /* 117 */ 117,/*LATINSMALLLETTERU*/
- /* 118 */ 118,/*LATINSMALLLETTERV*/
- /* 119 */ 119,/*LATINSMALLLETTERW*/
- /* 120 */ 120,/*LATINSMALLLETTERX*/
- /* 121 */ 121,/*LATINSMALLLETTERY*/
- /* 122 */ 122,/*LATINSMALLLETTERZ*/
- /* 123 */ 228,/*LATINSMALLLETTERAWITHDIAERESIS*/
- /* 124 */ 246,/*LATINSMALLLETTEROWITHDIAERESIS*/
- /* 125 */ 252,/*LATINSMALLLETTERUWITHDIAERESIS*/
- /* 126 */ 223,/*LATINSMALLLETTERSHARPS*/
- 127,
- 128,
- 129,
- 130,
- 131,
- 132,
- 133,
- 134,
- 135,
- 136,
- 137,
- 138,
- 139,
- 140,
- 141,
- 142,
- 143,
- 144,
- 145,
- 146,
- 147,
- 148,
- 149,
- 150,
- 151,
- 152,
- 153,
- 154,
- 155,
- 156,
- 157,
- 158,
- 159,
- 160,
- 161,
- 162,
- 163,
- 164,
- 165,
- 166,
- 167,
- 168,
- 169,
- 170,
- 171,
- 172,
- 173,
- 174,
- 175,
- 176,
- 177,
- 178,
- 179,
- 180,
- 181,
- 182,
- 183,
- 184,
- 185,
- 186,
- 187,
- 188,
- 189,
- 190,
- 191,
- 192,
- 193,
- 194,
- 195,
- 196,
- 197,
- 198,
- 199,
- 200,
- 201,
- 202,
- 203,
- 204,
- 205,
- 206,
- 207,
- 208,
- 209,
- 210,
- 211,
- 212,
- 213,
- 214,
- 215,
- 216,
- 217,
- 218,
- 219,
- 220,
- 221,
- 222,
- 223,
- 224,
- 225,
- 226,
- 227,
- 228,
- 229,
- 230,
- 231,
- 232,
- 233,
- 234,
- 235,
- 236,
- 237,
- 238,
- 239,
- 240,
- 241,
- 242,
- 243,
- 244,
- 245,
- 246,
- 247,
- 248,
- 249,
- 250,
- 251,
- 252,
- 253,
- 254,
- 255
+static convert_t iso646_es[] = {
+	{ 0, 0 },
+	{ 1, 1 },
+	{ 2, 2 },
+	{ 3, 3 },
+	{ 4, 4 },
+	{ 5, 5 },
+	{ 6, 6 },
+	{ 7, 7 },
+	{ 8, 8 },
+	{ 9, 9 },
+	{ 10, 10 },
+	{ 11, 11 },
+	{ 12, 12 },
+	{ 13, 13 },
+	{ 14, 14 },
+	{ 15, 15 },
+	{ 16, 16 },
+	{ 17, 17 },
+	{ 18, 18 },
+	{ 19, 19 },
+	{ 20, 20 },
+	{ 21, 21 },
+	{ 22, 22 },
+	{ 23, 23 },
+	{ 24, 24 },
+	{ 25, 25 },
+	{ 26, 26 },
+	{ 27, 27 },
+	{ 28, 28 },
+	{ 29, 29 },
+	{ 30, 30 },
+	{ 31, 31 },
+	{ 32, 32 },
+	{ 33, 33 },
+	{ 34, 34 },
+	{ 35, 163 },
+	{ 36, 36 },
+	{ 37, 37 },
+	{ 38, 38 },
+	{ 39, 39 },
+	{ 40, 40 },
+	{ 41, 41 },
+	{ 42, 42 },
+	{ 43, 43 },
+	{ 44, 44 },
+	{ 45, 45 },
+	{ 46, 46 },
+	{ 47, 47 },
+	{ 48, 48 },
+	{ 49, 49 },
+	{ 50, 50 },
+	{ 51, 51 },
+	{ 52, 52 },
+	{ 53, 53 },
+	{ 54, 54 },
+	{ 55, 55 },
+	{ 56, 56 },
+	{ 57, 57 },
+	{ 58, 58 },
+	{ 59, 59 },
+	{ 60, 60 },
+	{ 61, 61 },
+	{ 62, 62 },
+	{ 63, 63 },
+	{ 64, 167 },
+	{ 65, 65 },
+	{ 66, 66 },
+	{ 67, 67 },
+	{ 68, 68 },
+	{ 69, 69 },
+	{ 70, 70 },
+	{ 71, 71 },
+	{ 72, 72 },
+	{ 73, 73 },
+	{ 74, 74 },
+	{ 75, 75 },
+	{ 76, 76 },
+	{ 77, 77 },
+	{ 78, 78 },
+	{ 79, 79 },
+	{ 80, 80 },
+	{ 81, 81 },
+	{ 82, 82 },
+	{ 83, 83 },
+	{ 84, 84 },
+	{ 85, 85 },
+	{ 86, 86 },
+	{ 87, 87 },
+	{ 88, 88 },
+	{ 89, 89 },
+	{ 90, 90 },
+	{ 91, 161 },
+	{ 92, 209 },
+	{ 93, 191 },
+	{ 94, 94 },
+	{ 95, 95 },
+	{ 96, 96 },
+	{ 97, 97 },
+	{ 98, 98 },
+	{ 99, 99 },
+	{ 100, 100 },
+	{ 101, 101 },
+	{ 102, 102 },
+	{ 103, 103 },
+	{ 104, 104 },
+	{ 105, 105 },
+	{ 106, 106 },
+	{ 107, 107 },
+	{ 108, 108 },
+	{ 109, 109 },
+	{ 110, 110 },
+	{ 111, 111 },
+	{ 112, 112 },
+	{ 113, 113 },
+	{ 114, 114 },
+	{ 115, 115 },
+	{ 116, 116 },
+	{ 117, 117 },
+	{ 118, 118 },
+	{ 119, 119 },
+	{ 120, 120 },
+	{ 121, 121 },
+	{ 122, 122 },
+	{ 123, 176 },
+	{ 124, 241 },
+	{ 125, 231 },
+	{ 126, 126 },
+	{ 127, 127 },
+	{ 128, 128 },
+	{ 129, 129 },
+	{ 130, 130 },
+	{ 131, 131 },
+	{ 132, 132 },
+	{ 133, 133 },
+	{ 134, 134 },
+	{ 135, 135 },
+	{ 136, 136 },
+	{ 137, 137 },
+	{ 138, 138 },
+	{ 139, 139 },
+	{ 140, 140 },
+	{ 141, 141 },
+	{ 142, 142 },
+	{ 143, 143 },
+	{ 144, 144 },
+	{ 145, 145 },
+	{ 146, 146 },
+	{ 147, 147 },
+	{ 148, 148 },
+	{ 149, 149 },
+	{ 150, 150 },
+	{ 151, 151 },
+	{ 152, 152 },
+	{ 153, 153 },
+	{ 154, 154 },
+	{ 155, 155 },
+	{ 156, 156 },
+	{ 157, 157 },
+	{ 158, 158 },
+	{ 159, 159 },
+	{ 160, 160 },
+	{ 161, 161 },
+	{ 162, 162 },
+	{ 163, 163 },
+	{ 164, 164 },
+	{ 165, 165 },
+	{ 166, 166 },
+	{ 167, 167 },
+	{ 168, 168 },
+	{ 169, 169 },
+	{ 170, 170 },
+	{ 171, 171 },
+	{ 172, 172 },
+	{ 173, 173 },
+	{ 174, 174 },
+	{ 175, 175 },
+	{ 176, 176 },
+	{ 177, 177 },
+	{ 178, 178 },
+	{ 179, 179 },
+	{ 180, 180 },
+	{ 181, 181 },
+	{ 182, 182 },
+	{ 183, 183 },
+	{ 184, 184 },
+	{ 185, 185 },
+	{ 186, 186 },
+	{ 187, 187 },
+	{ 188, 188 },
+	{ 189, 189 },
+	{ 190, 190 },
+	{ 191, 191 },
+	{ 192, 192 },
+	{ 193, 193 },
+	{ 194, 194 },
+	{ 195, 195 },
+	{ 196, 196 },
+	{ 197, 197 },
+	{ 198, 198 },
+	{ 199, 199 },
+	{ 200, 200 },
+	{ 201, 201 },
+	{ 202, 202 },
+	{ 203, 203 },
+	{ 204, 204 },
+	{ 205, 205 },
+	{ 206, 206 },
+	{ 207, 207 },
+	{ 208, 208 },
+	{ 209, 209 },
+	{ 210, 210 },
+	{ 211, 211 },
+	{ 212, 212 },
+	{ 213, 213 },
+	{ 214, 214 },
+	{ 215, 215 },
+	{ 216, 216 },
+	{ 217, 217 },
+	{ 218, 218 },
+	{ 219, 219 },
+	{ 220, 220 },
+	{ 221, 221 },
+	{ 222, 222 },
+	{ 223, 223 },
+	{ 224, 224 },
+	{ 225, 225 },
+	{ 226, 226 },
+	{ 227, 227 },
+	{ 228, 228 },
+	{ 229, 229 },
+	{ 230, 230 },
+	{ 231, 231 },
+	{ 232, 232 },
+	{ 233, 233 },
+	{ 234, 234 },
+	{ 235, 235 },
+	{ 236, 236 },
+	{ 237, 237 },
+	{ 238, 238 },
+	{ 239, 239 },
+	{ 240, 240 },
+	{ 241, 241 },
+	{ 242, 242 },
+	{ 243, 243 },
+	{ 244, 244 },
+	{ 245, 245 },
+	{ 246, 246 },
+	{ 247, 247 },
+	{ 248, 248 },
+	{ 249, 249 },
+	{ 250, 250 },
+	{ 251, 251 },
+	{ 252, 252 },
+	{ 253, 253 },
+	{ 254, 254 },
+	{ 255, 255 },
+	{ 34, 8220 },
+	{ 34, 8221 },
+	{ 39, 8216 },
+	{ 39, 8217 },
+	{ 45, 8211 },
+	{ 45, 8212 },
+	{ 32, 8194 },
+	{ 32, 8195 },
+	{ 32, 8201 },
+	{ 65, 256 },
+	{ 65, 258 },
+	{ 65, 260 },
+	{ 65, 461 },
+	{ 97, 257 },
+	{ 97, 259 },
+	{ 97, 261 },
+	{ 97, 462 },
+	{ 67, 262 },
+	{ 67, 264 },
+	{ 67, 266 },
+	{ 67, 268 },
+	{ 99, 263 },
+	{ 99, 265 },
+	{ 99, 267 },
+	{ 99, 269 },
+	{ 68, 270 },
+	{ 100, 271 },
+	{ 69, 274 },
+	{ 69, 276 },
+	{ 69, 278 },
+	{ 69, 280 },
+	{ 69, 282 },
+	{ 101, 275 },
+	{ 101, 277 },
+	{ 101, 279 },
+	{ 101, 281 },
+	{ 101, 283 },
+	{ 71, 284 },
+	{ 71, 286 },
+	{ 71, 288 },
+	{ 71, 290 },
+	{ 71, 486 },
+	{ 71, 500 },
+	{ 103, 285 },
+	{ 103, 287 },
+	{ 103, 289 },
+	{ 103, 291 },
+	{ 103, 487 },
+	{ 103, 501 },
+	{ 72, 292 },
+	{ 104, 293 },
+	{ 73, 296 },
+	{ 73, 298 },
+	{ 73, 300 },
+	{ 73, 302 },
+	{ 73, 304 },
+	{ 73, 463 },
+	{ 105, 297 },
+	{ 105, 299 },
+	{ 105, 301 },
+	{ 105, 303 },
+	{ 105, 305 },
+	{ 105, 464 },
+	{ 74, 308 },
+	{ 106, 309 },
+	{ 75, 310 },
+	{ 75, 488 },
+	{ 107, 311 },
+	{ 107, 489 },
+	{ 76, 313 },
+	{ 76, 315 },
+	{ 76, 317 },
+	{ 76, 319 },
+	{ 76, 321 },
+	{ 108, 314 },
+	{ 108, 316 },
+	{ 108, 318 },
+	{ 108, 320 },
+	{ 108, 322 },
+	{ 77, 323 },
+	{ 77, 325 },
+	{ 77, 327 },
+	{ 109, 324 },
+	{ 109, 326 },
+	{ 109, 328 },
+	{ 109, 329 },
+	{ 78, 332 },
+	{ 78, 334 },
+	{ 78, 336 },
+	{ 78, 465 },
+	{ 78, 490 },
+	{ 110, 333 },
+	{ 110, 335 },
+	{ 110, 337 },
+	{ 110, 466 },
+	{ 110, 491 },
+	{ 82, 340 },
+	{ 82, 342 },
+	{ 82, 344 },
+	{ 114, 341 },
+	{ 114, 343 },
+	{ 114, 345 },
+	{ 83, 346 },
+	{ 83, 348 },
+	{ 83, 350 },
+	{ 83, 352 },
+	{ 115, 347 },
+	{ 115, 349 },
+	{ 115, 351 },
+	{ 115, 353 },
+	{ 84, 354 },
+	{ 84, 356 },
+	{ 116, 355 },
+	{ 116, 357 },
+	{ 85, 360 },
+	{ 85, 362 },
+	{ 85, 364 },
+	{ 85, 366 },
+	{ 85, 368 },
+	{ 85, 370 },
+	{ 85, 467 },
+	{ 117, 361 },
+	{ 117, 363 },
+	{ 117, 365 },
+	{ 117, 367 },
+	{ 117, 369 },
+	{ 117, 371 },
+	{ 117, 468 },
+	{ 87, 372 },
+	{ 119, 373 },
+	{ 89, 374 },
+	{ 89, 376 },
+	{ 121, 375 },
+	{ 90, 377 },
+	{ 90, 379 },
+	{ 90, 381 },
+	{ 122, 378 },
+	{ 122, 380 },
+	{ 122, 382 },
 };
-charconvert iso646_es[] = {
- /* 0 */ 0,/*<tdbgcolor="C0C0C0"><fontface="Arial"color="000000"><b>ISO/IEC10646-1:2000CharacterName</b></font>*/
- 1,
- 2,
- 3,
- 4,
- 5,
- 6,
- 7,
- 8,
- 9,
- 10,
- 11,
- 12,
- 13,
- 14,
- 15,
- 16,
- 17,
- 18,
- 19,
- 20,
- 21,
- 22,
- 23,
- 24,
- 25,
- 26,
- 27,
- 28,
- 29,
- 30,
- 31,
- /* 32 */ 32,/*SPACE*/
- /* 33 */ 33,/*EXCLAMATIONMARK*/
- /* 34 */ 34,/*QUOTATIONMARK*/
- /* 35 */ 163,/*POUNDSIGN*/
- /* 36 */ 36,/*DOLLARSIGN*/
- /* 37 */ 37,/*PERCENTSIGN*/
- /* 38 */ 38,/*AMPERSAND*/
- /* 39 */ 39,/*APOSTROPHE*/
- /* 40 */ 40,/*LEFTPARENTHESIS*/
- /* 41 */ 41,/*RIGHTPARENTHESIS*/
- /* 42 */ 42,/*ASTERISK*/
- /* 43 */ 43,/*PLUSSIGN*/
- /* 44 */ 44,/*COMMA*/
- /* 45 */ 45,/*HYPHEN-MINUS*/
- /* 46 */ 46,/*FULLSTOP*/
- /* 47 */ 47,/*SOLIDUS*/
- /* 48 */ 48,/*DIGITZERO*/
- /* 49 */ 49,/*DIGITONE*/
- /* 50 */ 50,/*DIGITTWO*/
- /* 51 */ 51,/*DIGITTHREE*/
- /* 52 */ 52,/*DIGITFOUR*/
- /* 53 */ 53,/*DIGITFIVE*/
- /* 54 */ 54,/*DIGITSIX*/
- /* 55 */ 55,/*DIGITSEVEN*/
- /* 56 */ 56,/*DIGITEIGHT*/
- /* 57 */ 57,/*DIGITNINE*/
- /* 58 */ 58,/*COLON*/
- /* 59 */ 59,/*SEMICOLON*/
- /* 60 */ 60,/*LESS-THANSIGN*/
- /* 61 */ 61,/*EQUALSSIGN*/
- /* 62 */ 62,/*GREATER-THANSIGN*/
- /* 63 */ 63,/*QUESTIONMARK*/
- /* 64 */ 167,/*SECTIONSIGN*/
- /* 65 */ 65,/*LATINCAPITALLETTERA*/
- /* 66 */ 66,/*LATINCAPITALLETTERB*/
- /* 67 */ 67,/*LATINCAPITALLETTERC*/
- /* 68 */ 68,/*LATINCAPITALLETTERD*/
- /* 69 */ 69,/*LATINCAPITALLETTERE*/
- /* 70 */ 70,/*LATINCAPITALLETTERF*/
- /* 71 */ 71,/*LATINCAPITALLETTERG*/
- /* 72 */ 72,/*LATINCAPITALLETTERH*/
- /* 73 */ 73,/*LATINCAPITALLETTERI*/
- /* 74 */ 74,/*LATINCAPITALLETTERJ*/
- /* 75 */ 75,/*LATINCAPITALLETTERK*/
- /* 76 */ 76,/*LATINCAPITALLETTERL*/
- /* 77 */ 77,/*LATINCAPITALLETTERM*/
- /* 78 */ 78,/*LATINCAPITALLETTERN*/
- /* 79 */ 79,/*LATINCAPITALLETTERO*/
- /* 80 */ 80,/*LATINCAPITALLETTERP*/
- /* 81 */ 81,/*LATINCAPITALLETTERQ*/
- /* 82 */ 82,/*LATINCAPITALLETTERR*/
- /* 83 */ 83,/*LATINCAPITALLETTERS*/
- /* 84 */ 84,/*LATINCAPITALLETTERT*/
- /* 85 */ 85,/*LATINCAPITALLETTERU*/
- /* 86 */ 86,/*LATINCAPITALLETTERV*/
- /* 87 */ 87,/*LATINCAPITALLETTERW*/
- /* 88 */ 88,/*LATINCAPITALLETTERX*/
- /* 89 */ 89,/*LATINCAPITALLETTERY*/
- /* 90 */ 90,/*LATINCAPITALLETTERZ*/
- /* 91 */ 161,/*INVERTEDEXCLAMATIONMARK*/
- /* 92 */ 209,/*LATINCAPITALLETTERNWITHTILDE*/
- /* 93 */ 191,/*INVERTEDQUESTIONMARK*/
- /* 94 */ 94,/*CIRCUMFLEXACCENT*/
- /* 95 */ 95,/*LOWLINE*/
- /* 96 */ 96,/*GRAVEACCENT*/
- /* 97 */ 97,/*LATINSMALLLETTERA*/
- /* 98 */ 98,/*LATINSMALLLETTERB*/
- /* 99 */ 99,/*LATINSMALLLETTERC*/
- /* 100 */ 100,/*LATINSMALLLETTERD*/
- /* 101 */ 101,/*LATINSMALLLETTERE*/
- /* 102 */ 102,/*LATINSMALLLETTERF*/
- /* 103 */ 103,/*LATINSMALLLETTERG*/
- /* 104 */ 104,/*LATINSMALLLETTERH*/
- /* 105 */ 105,/*LATINSMALLLETTERI*/
- /* 106 */ 106,/*LATINSMALLLETTERJ*/
- /* 107 */ 107,/*LATINSMALLLETTERK*/
- /* 108 */ 108,/*LATINSMALLLETTERL*/
- /* 109 */ 109,/*LATINSMALLLETTERM*/
- /* 110 */ 110,/*LATINSMALLLETTERN*/
- /* 111 */ 111,/*LATINSMALLLETTERO*/
- /* 112 */ 112,/*LATINSMALLLETTERP*/
- /* 113 */ 113,/*LATINSMALLLETTERQ*/
- /* 114 */ 114,/*LATINSMALLLETTERR*/
- /* 115 */ 115,/*LATINSMALLLETTERS*/
- /* 116 */ 116,/*LATINSMALLLETTERT*/
- /* 117 */ 117,/*LATINSMALLLETTERU*/
- /* 118 */ 118,/*LATINSMALLLETTERV*/
- /* 119 */ 119,/*LATINSMALLLETTERW*/
- /* 120 */ 120,/*LATINSMALLLETTERX*/
- /* 121 */ 121,/*LATINSMALLLETTERY*/
- /* 122 */ 122,/*LATINSMALLLETTERZ*/
- /* 123 */ 176,/*DEGREESIGN*/
- /* 124 */ 241,/*LATINSMALLLETTERNWITHTILDE*/
- /* 125 */ 231,/*LATINSMALLLETTERCWITHCEDILLA*/
- /* 126 */ 126,/*TILDE*/
- 127,
- 128,
- 129,
- 130,
- 131,
- 132,
- 133,
- 134,
- 135,
- 136,
- 137,
- 138,
- 139,
- 140,
- 141,
- 142,
- 143,
- 144,
- 145,
- 146,
- 147,
- 148,
- 149,
- 150,
- 151,
- 152,
- 153,
- 154,
- 155,
- 156,
- 157,
- 158,
- 159,
- 160,
- 161,
- 162,
- 163,
- 164,
- 165,
- 166,
- 167,
- 168,
- 169,
- 170,
- 171,
- 172,
- 173,
- 174,
- 175,
- 176,
- 177,
- 178,
- 179,
- 180,
- 181,
- 182,
- 183,
- 184,
- 185,
- 186,
- 187,
- 188,
- 189,
- 190,
- 191,
- 192,
- 193,
- 194,
- 195,
- 196,
- 197,
- 198,
- 199,
- 200,
- 201,
- 202,
- 203,
- 204,
- 205,
- 206,
- 207,
- 208,
- 209,
- 210,
- 211,
- 212,
- 213,
- 214,
- 215,
- 216,
- 217,
- 218,
- 219,
- 220,
- 221,
- 222,
- 223,
- 224,
- 225,
- 226,
- 227,
- 228,
- 229,
- 230,
- 231,
- 232,
- 233,
- 234,
- 235,
- 236,
- 237,
- 238,
- 239,
- 240,
- 241,
- 242,
- 243,
- 244,
- 245,
- 246,
- 247,
- 248,
- 249,
- 250,
- 251,
- 252,
- 253,
- 254,
- 255
+static convert_t iso646_fi[] = {
+	{ 0, 0 },
+	{ 1, 1 },
+	{ 2, 2 },
+	{ 3, 3 },
+	{ 4, 4 },
+	{ 5, 5 },
+	{ 6, 6 },
+	{ 7, 7 },
+	{ 8, 8 },
+	{ 9, 9 },
+	{ 10, 10 },
+	{ 11, 11 },
+	{ 12, 12 },
+	{ 13, 13 },
+	{ 14, 14 },
+	{ 15, 15 },
+	{ 16, 16 },
+	{ 17, 17 },
+	{ 18, 18 },
+	{ 19, 19 },
+	{ 20, 20 },
+	{ 21, 21 },
+	{ 22, 22 },
+	{ 23, 23 },
+	{ 24, 24 },
+	{ 25, 25 },
+	{ 26, 26 },
+	{ 27, 27 },
+	{ 28, 28 },
+	{ 29, 29 },
+	{ 30, 30 },
+	{ 31, 31 },
+	{ 32, 32 },
+	{ 33, 33 },
+	{ 34, 34 },
+	{ 35, 35 },
+	{ 36, 36 },
+	{ 37, 37 },
+	{ 38, 38 },
+	{ 39, 39 },
+	{ 40, 40 },
+	{ 41, 41 },
+	{ 42, 42 },
+	{ 43, 43 },
+	{ 44, 44 },
+	{ 45, 45 },
+	{ 46, 46 },
+	{ 47, 47 },
+	{ 48, 48 },
+	{ 49, 49 },
+	{ 50, 50 },
+	{ 51, 51 },
+	{ 52, 52 },
+	{ 53, 53 },
+	{ 54, 54 },
+	{ 55, 55 },
+	{ 56, 56 },
+	{ 57, 57 },
+	{ 58, 58 },
+	{ 59, 59 },
+	{ 60, 60 },
+	{ 61, 61 },
+	{ 62, 62 },
+	{ 63, 63 },
+	{ 64, 64 },
+	{ 65, 65 },
+	{ 66, 66 },
+	{ 67, 67 },
+	{ 68, 68 },
+	{ 69, 69 },
+	{ 70, 70 },
+	{ 71, 71 },
+	{ 72, 72 },
+	{ 73, 73 },
+	{ 74, 74 },
+	{ 75, 75 },
+	{ 76, 76 },
+	{ 77, 77 },
+	{ 78, 78 },
+	{ 79, 79 },
+	{ 80, 80 },
+	{ 81, 81 },
+	{ 82, 82 },
+	{ 83, 83 },
+	{ 84, 84 },
+	{ 85, 85 },
+	{ 86, 86 },
+	{ 87, 87 },
+	{ 88, 88 },
+	{ 89, 89 },
+	{ 90, 90 },
+	{ 91, 196 },
+	{ 92, 214 },
+	{ 93, 197 },
+	{ 94, 220 },
+	{ 95, 95 },
+	{ 96, 233 },
+	{ 97, 97 },
+	{ 98, 98 },
+	{ 99, 99 },
+	{ 100, 100 },
+	{ 101, 101 },
+	{ 102, 102 },
+	{ 103, 103 },
+	{ 104, 104 },
+	{ 105, 105 },
+	{ 106, 106 },
+	{ 107, 107 },
+	{ 108, 108 },
+	{ 109, 109 },
+	{ 110, 110 },
+	{ 111, 111 },
+	{ 112, 112 },
+	{ 113, 113 },
+	{ 114, 114 },
+	{ 115, 115 },
+	{ 116, 116 },
+	{ 117, 117 },
+	{ 118, 118 },
+	{ 119, 119 },
+	{ 120, 120 },
+	{ 121, 121 },
+	{ 122, 122 },
+	{ 123, 228 },
+	{ 124, 246 },
+	{ 125, 229 },
+	{ 126, 252 },
+	{ 127, 127 },
+	{ 128, 128 },
+	{ 129, 129 },
+	{ 130, 130 },
+	{ 131, 131 },
+	{ 132, 132 },
+	{ 133, 133 },
+	{ 134, 134 },
+	{ 135, 135 },
+	{ 136, 136 },
+	{ 137, 137 },
+	{ 138, 138 },
+	{ 139, 139 },
+	{ 140, 140 },
+	{ 141, 141 },
+	{ 142, 142 },
+	{ 143, 143 },
+	{ 144, 144 },
+	{ 145, 145 },
+	{ 146, 146 },
+	{ 147, 147 },
+	{ 148, 148 },
+	{ 149, 149 },
+	{ 150, 150 },
+	{ 151, 151 },
+	{ 152, 152 },
+	{ 153, 153 },
+	{ 154, 154 },
+	{ 155, 155 },
+	{ 156, 156 },
+	{ 157, 157 },
+	{ 158, 158 },
+	{ 159, 159 },
+	{ 160, 160 },
+	{ 161, 161 },
+	{ 162, 162 },
+	{ 163, 163 },
+	{ 164, 164 },
+	{ 165, 165 },
+	{ 166, 166 },
+	{ 167, 167 },
+	{ 168, 168 },
+	{ 169, 169 },
+	{ 170, 170 },
+	{ 171, 171 },
+	{ 172, 172 },
+	{ 173, 173 },
+	{ 174, 174 },
+	{ 175, 175 },
+	{ 176, 176 },
+	{ 177, 177 },
+	{ 178, 178 },
+	{ 179, 179 },
+	{ 180, 180 },
+	{ 181, 181 },
+	{ 182, 182 },
+	{ 183, 183 },
+	{ 184, 184 },
+	{ 185, 185 },
+	{ 186, 186 },
+	{ 187, 187 },
+	{ 188, 188 },
+	{ 189, 189 },
+	{ 190, 190 },
+	{ 191, 191 },
+	{ 192, 192 },
+	{ 193, 193 },
+	{ 194, 194 },
+	{ 195, 195 },
+	{ 196, 196 },
+	{ 197, 197 },
+	{ 198, 198 },
+	{ 199, 199 },
+	{ 200, 200 },
+	{ 201, 201 },
+	{ 202, 202 },
+	{ 203, 203 },
+	{ 204, 204 },
+	{ 205, 205 },
+	{ 206, 206 },
+	{ 207, 207 },
+	{ 208, 208 },
+	{ 209, 209 },
+	{ 210, 210 },
+	{ 211, 211 },
+	{ 212, 212 },
+	{ 213, 213 },
+	{ 214, 214 },
+	{ 215, 215 },
+	{ 216, 216 },
+	{ 217, 217 },
+	{ 218, 218 },
+	{ 219, 219 },
+	{ 220, 220 },
+	{ 221, 221 },
+	{ 222, 222 },
+	{ 223, 223 },
+	{ 224, 224 },
+	{ 225, 225 },
+	{ 226, 226 },
+	{ 227, 227 },
+	{ 228, 228 },
+	{ 229, 229 },
+	{ 230, 230 },
+	{ 231, 231 },
+	{ 232, 232 },
+	{ 233, 233 },
+	{ 234, 234 },
+	{ 235, 235 },
+	{ 236, 236 },
+	{ 237, 237 },
+	{ 238, 238 },
+	{ 239, 239 },
+	{ 240, 240 },
+	{ 241, 241 },
+	{ 242, 242 },
+	{ 243, 243 },
+	{ 244, 244 },
+	{ 245, 245 },
+	{ 246, 246 },
+	{ 247, 247 },
+	{ 248, 248 },
+	{ 249, 249 },
+	{ 250, 250 },
+	{ 251, 251 },
+	{ 252, 252 },
+	{ 253, 253 },
+	{ 254, 254 },
+	{ 255, 255 },
+	{ 34, 8220 },
+	{ 34, 8221 },
+	{ 39, 8216 },
+	{ 39, 8217 },
+	{ 45, 8211 },
+	{ 45, 8212 },
+	{ 32, 8194 },
+	{ 32, 8195 },
+	{ 32, 8201 },
+	{ 65, 256 },
+	{ 65, 258 },
+	{ 65, 260 },
+	{ 65, 461 },
+	{ 97, 257 },
+	{ 97, 259 },
+	{ 97, 261 },
+	{ 97, 462 },
+	{ 67, 262 },
+	{ 67, 264 },
+	{ 67, 266 },
+	{ 67, 268 },
+	{ 99, 263 },
+	{ 99, 265 },
+	{ 99, 267 },
+	{ 99, 269 },
+	{ 68, 270 },
+	{ 100, 271 },
+	{ 69, 274 },
+	{ 69, 276 },
+	{ 69, 278 },
+	{ 69, 280 },
+	{ 69, 282 },
+	{ 101, 275 },
+	{ 101, 277 },
+	{ 101, 279 },
+	{ 101, 281 },
+	{ 101, 283 },
+	{ 71, 284 },
+	{ 71, 286 },
+	{ 71, 288 },
+	{ 71, 290 },
+	{ 71, 486 },
+	{ 71, 500 },
+	{ 103, 285 },
+	{ 103, 287 },
+	{ 103, 289 },
+	{ 103, 291 },
+	{ 103, 487 },
+	{ 103, 501 },
+	{ 72, 292 },
+	{ 104, 293 },
+	{ 73, 296 },
+	{ 73, 298 },
+	{ 73, 300 },
+	{ 73, 302 },
+	{ 73, 304 },
+	{ 73, 463 },
+	{ 105, 297 },
+	{ 105, 299 },
+	{ 105, 301 },
+	{ 105, 303 },
+	{ 105, 305 },
+	{ 105, 464 },
+	{ 74, 308 },
+	{ 106, 309 },
+	{ 75, 310 },
+	{ 75, 488 },
+	{ 107, 311 },
+	{ 107, 489 },
+	{ 76, 313 },
+	{ 76, 315 },
+	{ 76, 317 },
+	{ 76, 319 },
+	{ 76, 321 },
+	{ 108, 314 },
+	{ 108, 316 },
+	{ 108, 318 },
+	{ 108, 320 },
+	{ 108, 322 },
+	{ 77, 323 },
+	{ 77, 325 },
+	{ 77, 327 },
+	{ 109, 324 },
+	{ 109, 326 },
+	{ 109, 328 },
+	{ 109, 329 },
+	{ 78, 332 },
+	{ 78, 334 },
+	{ 78, 336 },
+	{ 78, 465 },
+	{ 78, 490 },
+	{ 110, 333 },
+	{ 110, 335 },
+	{ 110, 337 },
+	{ 110, 466 },
+	{ 110, 491 },
+	{ 82, 340 },
+	{ 82, 342 },
+	{ 82, 344 },
+	{ 114, 341 },
+	{ 114, 343 },
+	{ 114, 345 },
+	{ 83, 346 },
+	{ 83, 348 },
+	{ 83, 350 },
+	{ 83, 352 },
+	{ 115, 347 },
+	{ 115, 349 },
+	{ 115, 351 },
+	{ 115, 353 },
+	{ 84, 354 },
+	{ 84, 356 },
+	{ 116, 355 },
+	{ 116, 357 },
+	{ 85, 360 },
+	{ 85, 362 },
+	{ 85, 364 },
+	{ 85, 366 },
+	{ 85, 368 },
+	{ 85, 370 },
+	{ 85, 467 },
+	{ 117, 361 },
+	{ 117, 363 },
+	{ 117, 365 },
+	{ 117, 367 },
+	{ 117, 369 },
+	{ 117, 371 },
+	{ 117, 468 },
+	{ 87, 372 },
+	{ 119, 373 },
+	{ 89, 374 },
+	{ 89, 376 },
+	{ 121, 375 },
+	{ 90, 377 },
+	{ 90, 379 },
+	{ 90, 381 },
+	{ 122, 378 },
+	{ 122, 380 },
+	{ 122, 382 },
 };
-charconvert iso646_fi[] = {
- /* 0 */ 0,/*<tdbgcolor="C0C0C0"><fontface="Arial"color="000000"><b>ISO/IEC10646-1:2000CharacterName</b></font>*/
- 1,
- 2,
- 3,
- 4,
- 5,
- 6,
- 7,
- 8,
- 9,
- 10,
- 11,
- 12,
- 13,
- 14,
- 15,
- 16,
- 17,
- 18,
- 19,
- 20,
- 21,
- 22,
- 23,
- 24,
- 25,
- 26,
- 27,
- 28,
- 29,
- 30,
- 31,
- /* 32 */ 32,/*SPACE*/
- /* 33 */ 33,/*EXCLAMATIONMARK*/
- /* 34 */ 34,/*QUOTATIONMARK*/
- /* 35 */ 35,/*NUMBERSIGN*/
- /* 36 */ 36,/*DOLLARSIGN*/
- /* 37 */ 37,/*PERCENTSIGN*/
- /* 38 */ 38,/*AMPERSAND*/
- /* 39 */ 39,/*APOSTROPHE*/
- /* 40 */ 40,/*LEFTPARENTHESIS*/
- /* 41 */ 41,/*RIGHTPARENTHESIS*/
- /* 42 */ 42,/*ASTERISK*/
- /* 43 */ 43,/*PLUSSIGN*/
- /* 44 */ 44,/*COMMA*/
- /* 45 */ 45,/*HYPHEN-MINUS*/
- /* 46 */ 46,/*FULLSTOP*/
- /* 47 */ 47,/*SOLIDUS*/
- /* 48 */ 48,/*DIGITZERO*/
- /* 49 */ 49,/*DIGITONE*/
- /* 50 */ 50,/*DIGITTWO*/
- /* 51 */ 51,/*DIGITTHREE*/
- /* 52 */ 52,/*DIGITFOUR*/
- /* 53 */ 53,/*DIGITFIVE*/
- /* 54 */ 54,/*DIGITSIX*/
- /* 55 */ 55,/*DIGITSEVEN*/
- /* 56 */ 56,/*DIGITEIGHT*/
- /* 57 */ 57,/*DIGITNINE*/
- /* 58 */ 58,/*COLON*/
- /* 59 */ 59,/*SEMICOLON*/
- /* 60 */ 60,/*LESS-THANSIGN*/
- /* 61 */ 61,/*EQUALSSIGN*/
- /* 62 */ 62,/*GREATER-THANSIGN*/
- /* 63 */ 63,/*QUESTIONMARK*/
- /* 64 */ 64,/*COMMERCIALAT*/
- /* 65 */ 65,/*LATINCAPITALLETTERA*/
- /* 66 */ 66,/*LATINCAPITALLETTERB*/
- /* 67 */ 67,/*LATINCAPITALLETTERC*/
- /* 68 */ 68,/*LATINCAPITALLETTERD*/
- /* 69 */ 69,/*LATINCAPITALLETTERE*/
- /* 70 */ 70,/*LATINCAPITALLETTERF*/
- /* 71 */ 71,/*LATINCAPITALLETTERG*/
- /* 72 */ 72,/*LATINCAPITALLETTERH*/
- /* 73 */ 73,/*LATINCAPITALLETTERI*/
- /* 74 */ 74,/*LATINCAPITALLETTERJ*/
- /* 75 */ 75,/*LATINCAPITALLETTERK*/
- /* 76 */ 76,/*LATINCAPITALLETTERL*/
- /* 77 */ 77,/*LATINCAPITALLETTERM*/
- /* 78 */ 78,/*LATINCAPITALLETTERN*/
- /* 79 */ 79,/*LATINCAPITALLETTERO*/
- /* 80 */ 80,/*LATINCAPITALLETTERP*/
- /* 81 */ 81,/*LATINCAPITALLETTERQ*/
- /* 82 */ 82,/*LATINCAPITALLETTERR*/
- /* 83 */ 83,/*LATINCAPITALLETTERS*/
- /* 84 */ 84,/*LATINCAPITALLETTERT*/
- /* 85 */ 85,/*LATINCAPITALLETTERU*/
- /* 86 */ 86,/*LATINCAPITALLETTERV*/
- /* 87 */ 87,/*LATINCAPITALLETTERW*/
- /* 88 */ 88,/*LATINCAPITALLETTERX*/
- /* 89 */ 89,/*LATINCAPITALLETTERY*/
- /* 90 */ 90,/*LATINCAPITALLETTERZ*/
- /* 91 */ 196,/*LATINCAPITALLETTERAWITHDIAERESIS*/
- /* 92 */ 214,/*LATINCAPITALLETTEROWITHDIAERESIS*/
- /* 93 */ 197,/*LATINCAPITALLETTERAWITHRINGABOVE*/
- /* 94 */ 220,/*LATINCAPITALLETTERUWITHDIAERESIS*/
- /* 95 */ 95,/*LOWLINE*/
- /* 96 */ 233,/*LATINSMALLLETTEREWITHACUTE*/
- /* 97 */ 97,/*LATINSMALLLETTERA*/
- /* 98 */ 98,/*LATINSMALLLETTERB*/
- /* 99 */ 99,/*LATINSMALLLETTERC*/
- /* 100 */ 100,/*LATINSMALLLETTERD*/
- /* 101 */ 101,/*LATINSMALLLETTERE*/
- /* 102 */ 102,/*LATINSMALLLETTERF*/
- /* 103 */ 103,/*LATINSMALLLETTERG*/
- /* 104 */ 104,/*LATINSMALLLETTERH*/
- /* 105 */ 105,/*LATINSMALLLETTERI*/
- /* 106 */ 106,/*LATINSMALLLETTERJ*/
- /* 107 */ 107,/*LATINSMALLLETTERK*/
- /* 108 */ 108,/*LATINSMALLLETTERL*/
- /* 109 */ 109,/*LATINSMALLLETTERM*/
- /* 110 */ 110,/*LATINSMALLLETTERN*/
- /* 111 */ 111,/*LATINSMALLLETTERO*/
- /* 112 */ 112,/*LATINSMALLLETTERP*/
- /* 113 */ 113,/*LATINSMALLLETTERQ*/
- /* 114 */ 114,/*LATINSMALLLETTERR*/
- /* 115 */ 115,/*LATINSMALLLETTERS*/
- /* 116 */ 116,/*LATINSMALLLETTERT*/
- /* 117 */ 117,/*LATINSMALLLETTERU*/
- /* 118 */ 118,/*LATINSMALLLETTERV*/
- /* 119 */ 119,/*LATINSMALLLETTERW*/
- /* 120 */ 120,/*LATINSMALLLETTERX*/
- /* 121 */ 121,/*LATINSMALLLETTERY*/
- /* 122 */ 122,/*LATINSMALLLETTERZ*/
- /* 123 */ 228,/*LATINSMALLLETTERAWITHDIAERESIS*/
- /* 124 */ 246,/*LATINSMALLLETTEROWITHDIAERESIS*/
- /* 125 */ 229,/*LATINSMALLLETTERAWITHRINGABOVE*/
- /* 126 */ 252,/*LATINSMALLLETTERUWITHDIAERESIS*/
- 127,
- 128,
- 129,
- 130,
- 131,
- 132,
- 133,
- 134,
- 135,
- 136,
- 137,
- 138,
- 139,
- 140,
- 141,
- 142,
- 143,
- 144,
- 145,
- 146,
- 147,
- 148,
- 149,
- 150,
- 151,
- 152,
- 153,
- 154,
- 155,
- 156,
- 157,
- 158,
- 159,
- 160,
- 161,
- 162,
- 163,
- 164,
- 165,
- 166,
- 167,
- 168,
- 169,
- 170,
- 171,
- 172,
- 173,
- 174,
- 175,
- 176,
- 177,
- 178,
- 179,
- 180,
- 181,
- 182,
- 183,
- 184,
- 185,
- 186,
- 187,
- 188,
- 189,
- 190,
- 191,
- 192,
- 193,
- 194,
- 195,
- 196,
- 197,
- 198,
- 199,
- 200,
- 201,
- 202,
- 203,
- 204,
- 205,
- 206,
- 207,
- 208,
- 209,
- 210,
- 211,
- 212,
- 213,
- 214,
- 215,
- 216,
- 217,
- 218,
- 219,
- 220,
- 221,
- 222,
- 223,
- 224,
- 225,
- 226,
- 227,
- 228,
- 229,
- 230,
- 231,
- 232,
- 233,
- 234,
- 235,
- 236,
- 237,
- 238,
- 239,
- 240,
- 241,
- 242,
- 243,
- 244,
- 245,
- 246,
- 247,
- 248,
- 249,
- 250,
- 251,
- 252,
- 253,
- 254,
- 255
+static convert_t iso646_fr[] = {
+	{ 0, 0 },
+	{ 1, 1 },
+	{ 2, 2 },
+	{ 3, 3 },
+	{ 4, 4 },
+	{ 5, 5 },
+	{ 6, 6 },
+	{ 7, 7 },
+	{ 8, 8 },
+	{ 9, 9 },
+	{ 10, 10 },
+	{ 11, 11 },
+	{ 12, 12 },
+	{ 13, 13 },
+	{ 14, 14 },
+	{ 15, 15 },
+	{ 16, 16 },
+	{ 17, 17 },
+	{ 18, 18 },
+	{ 19, 19 },
+	{ 20, 20 },
+	{ 21, 21 },
+	{ 22, 22 },
+	{ 23, 23 },
+	{ 24, 24 },
+	{ 25, 25 },
+	{ 26, 26 },
+	{ 27, 27 },
+	{ 28, 28 },
+	{ 29, 29 },
+	{ 30, 30 },
+	{ 31, 31 },
+	{ 32, 32 },
+	{ 33, 33 },
+	{ 34, 34 },
+	{ 35, 163 },
+	{ 36, 36 },
+	{ 37, 37 },
+	{ 38, 38 },
+	{ 39, 39 },
+	{ 40, 40 },
+	{ 41, 41 },
+	{ 42, 42 },
+	{ 43, 43 },
+	{ 44, 44 },
+	{ 45, 45 },
+	{ 46, 46 },
+	{ 47, 47 },
+	{ 48, 48 },
+	{ 49, 49 },
+	{ 50, 50 },
+	{ 51, 51 },
+	{ 52, 52 },
+	{ 53, 53 },
+	{ 54, 54 },
+	{ 55, 55 },
+	{ 56, 56 },
+	{ 57, 57 },
+	{ 58, 58 },
+	{ 59, 59 },
+	{ 60, 60 },
+	{ 61, 61 },
+	{ 62, 62 },
+	{ 63, 63 },
+	{ 64, 224 },
+	{ 65, 65 },
+	{ 66, 66 },
+	{ 67, 67 },
+	{ 68, 68 },
+	{ 69, 69 },
+	{ 70, 70 },
+	{ 71, 71 },
+	{ 72, 72 },
+	{ 73, 73 },
+	{ 74, 74 },
+	{ 75, 75 },
+	{ 76, 76 },
+	{ 77, 77 },
+	{ 78, 78 },
+	{ 79, 79 },
+	{ 80, 80 },
+	{ 81, 81 },
+	{ 82, 82 },
+	{ 83, 83 },
+	{ 84, 84 },
+	{ 85, 85 },
+	{ 86, 86 },
+	{ 87, 87 },
+	{ 88, 88 },
+	{ 89, 89 },
+	{ 90, 90 },
+	{ 91, 176 },
+	{ 92, 231 },
+	{ 93, 167 },
+	{ 94, 94 },
+	{ 95, 95 },
+	{ 96, 96 },
+	{ 97, 97 },
+	{ 98, 98 },
+	{ 99, 99 },
+	{ 100, 100 },
+	{ 101, 101 },
+	{ 102, 102 },
+	{ 103, 103 },
+	{ 104, 104 },
+	{ 105, 105 },
+	{ 106, 106 },
+	{ 107, 107 },
+	{ 108, 108 },
+	{ 109, 109 },
+	{ 110, 110 },
+	{ 111, 111 },
+	{ 112, 112 },
+	{ 113, 113 },
+	{ 114, 114 },
+	{ 115, 115 },
+	{ 116, 116 },
+	{ 117, 117 },
+	{ 118, 118 },
+	{ 119, 119 },
+	{ 120, 120 },
+	{ 121, 121 },
+	{ 122, 122 },
+	{ 123, 233 },
+	{ 124, 249 },
+	{ 125, 232 },
+	{ 126, 168 },
+	{ 127, 127 },
+	{ 128, 128 },
+	{ 129, 129 },
+	{ 130, 130 },
+	{ 131, 131 },
+	{ 132, 132 },
+	{ 133, 133 },
+	{ 134, 134 },
+	{ 135, 135 },
+	{ 136, 136 },
+	{ 137, 137 },
+	{ 138, 138 },
+	{ 139, 139 },
+	{ 140, 140 },
+	{ 141, 141 },
+	{ 142, 142 },
+	{ 143, 143 },
+	{ 144, 144 },
+	{ 145, 145 },
+	{ 146, 146 },
+	{ 147, 147 },
+	{ 148, 148 },
+	{ 149, 149 },
+	{ 150, 150 },
+	{ 151, 151 },
+	{ 152, 152 },
+	{ 153, 153 },
+	{ 154, 154 },
+	{ 155, 155 },
+	{ 156, 156 },
+	{ 157, 157 },
+	{ 158, 158 },
+	{ 159, 159 },
+	{ 160, 160 },
+	{ 161, 161 },
+	{ 162, 162 },
+	{ 163, 163 },
+	{ 164, 164 },
+	{ 165, 165 },
+	{ 166, 166 },
+	{ 167, 167 },
+	{ 168, 168 },
+	{ 169, 169 },
+	{ 170, 170 },
+	{ 171, 171 },
+	{ 172, 172 },
+	{ 173, 173 },
+	{ 174, 174 },
+	{ 175, 175 },
+	{ 176, 176 },
+	{ 177, 177 },
+	{ 178, 178 },
+	{ 179, 179 },
+	{ 180, 180 },
+	{ 181, 181 },
+	{ 182, 182 },
+	{ 183, 183 },
+	{ 184, 184 },
+	{ 185, 185 },
+	{ 186, 186 },
+	{ 187, 187 },
+	{ 188, 188 },
+	{ 189, 189 },
+	{ 190, 190 },
+	{ 191, 191 },
+	{ 192, 192 },
+	{ 193, 193 },
+	{ 194, 194 },
+	{ 195, 195 },
+	{ 196, 196 },
+	{ 197, 197 },
+	{ 198, 198 },
+	{ 199, 199 },
+	{ 200, 200 },
+	{ 201, 201 },
+	{ 202, 202 },
+	{ 203, 203 },
+	{ 204, 204 },
+	{ 205, 205 },
+	{ 206, 206 },
+	{ 207, 207 },
+	{ 208, 208 },
+	{ 209, 209 },
+	{ 210, 210 },
+	{ 211, 211 },
+	{ 212, 212 },
+	{ 213, 213 },
+	{ 214, 214 },
+	{ 215, 215 },
+	{ 216, 216 },
+	{ 217, 217 },
+	{ 218, 218 },
+	{ 219, 219 },
+	{ 220, 220 },
+	{ 221, 221 },
+	{ 222, 222 },
+	{ 223, 223 },
+	{ 224, 224 },
+	{ 225, 225 },
+	{ 226, 226 },
+	{ 227, 227 },
+	{ 228, 228 },
+	{ 229, 229 },
+	{ 230, 230 },
+	{ 231, 231 },
+	{ 232, 232 },
+	{ 233, 233 },
+	{ 234, 234 },
+	{ 235, 235 },
+	{ 236, 236 },
+	{ 237, 237 },
+	{ 238, 238 },
+	{ 239, 239 },
+	{ 240, 240 },
+	{ 241, 241 },
+	{ 242, 242 },
+	{ 243, 243 },
+	{ 244, 244 },
+	{ 245, 245 },
+	{ 246, 246 },
+	{ 247, 247 },
+	{ 248, 248 },
+	{ 249, 249 },
+	{ 250, 250 },
+	{ 251, 251 },
+	{ 252, 252 },
+	{ 253, 253 },
+	{ 254, 254 },
+	{ 255, 255 },
+	{ 34, 8220 },
+	{ 34, 8221 },
+	{ 39, 8216 },
+	{ 39, 8217 },
+	{ 45, 8211 },
+	{ 45, 8212 },
+	{ 32, 8194 },
+	{ 32, 8195 },
+	{ 32, 8201 },
+	{ 65, 256 },
+	{ 65, 258 },
+	{ 65, 260 },
+	{ 65, 461 },
+	{ 97, 257 },
+	{ 97, 259 },
+	{ 97, 261 },
+	{ 97, 462 },
+	{ 67, 262 },
+	{ 67, 264 },
+	{ 67, 266 },
+	{ 67, 268 },
+	{ 99, 263 },
+	{ 99, 265 },
+	{ 99, 267 },
+	{ 99, 269 },
+	{ 68, 270 },
+	{ 100, 271 },
+	{ 69, 274 },
+	{ 69, 276 },
+	{ 69, 278 },
+	{ 69, 280 },
+	{ 69, 282 },
+	{ 101, 275 },
+	{ 101, 277 },
+	{ 101, 279 },
+	{ 101, 281 },
+	{ 101, 283 },
+	{ 71, 284 },
+	{ 71, 286 },
+	{ 71, 288 },
+	{ 71, 290 },
+	{ 71, 486 },
+	{ 71, 500 },
+	{ 103, 285 },
+	{ 103, 287 },
+	{ 103, 289 },
+	{ 103, 291 },
+	{ 103, 487 },
+	{ 103, 501 },
+	{ 72, 292 },
+	{ 104, 293 },
+	{ 73, 296 },
+	{ 73, 298 },
+	{ 73, 300 },
+	{ 73, 302 },
+	{ 73, 304 },
+	{ 73, 463 },
+	{ 105, 297 },
+	{ 105, 299 },
+	{ 105, 301 },
+	{ 105, 303 },
+	{ 105, 305 },
+	{ 105, 464 },
+	{ 74, 308 },
+	{ 106, 309 },
+	{ 75, 310 },
+	{ 75, 488 },
+	{ 107, 311 },
+	{ 107, 489 },
+	{ 76, 313 },
+	{ 76, 315 },
+	{ 76, 317 },
+	{ 76, 319 },
+	{ 76, 321 },
+	{ 108, 314 },
+	{ 108, 316 },
+	{ 108, 318 },
+	{ 108, 320 },
+	{ 108, 322 },
+	{ 77, 323 },
+	{ 77, 325 },
+	{ 77, 327 },
+	{ 109, 324 },
+	{ 109, 326 },
+	{ 109, 328 },
+	{ 109, 329 },
+	{ 78, 332 },
+	{ 78, 334 },
+	{ 78, 336 },
+	{ 78, 465 },
+	{ 78, 490 },
+	{ 110, 333 },
+	{ 110, 335 },
+	{ 110, 337 },
+	{ 110, 466 },
+	{ 110, 491 },
+	{ 82, 340 },
+	{ 82, 342 },
+	{ 82, 344 },
+	{ 114, 341 },
+	{ 114, 343 },
+	{ 114, 345 },
+	{ 83, 346 },
+	{ 83, 348 },
+	{ 83, 350 },
+	{ 83, 352 },
+	{ 115, 347 },
+	{ 115, 349 },
+	{ 115, 351 },
+	{ 115, 353 },
+	{ 84, 354 },
+	{ 84, 356 },
+	{ 116, 355 },
+	{ 116, 357 },
+	{ 85, 360 },
+	{ 85, 362 },
+	{ 85, 364 },
+	{ 85, 366 },
+	{ 85, 368 },
+	{ 85, 370 },
+	{ 85, 467 },
+	{ 117, 361 },
+	{ 117, 363 },
+	{ 117, 365 },
+	{ 117, 367 },
+	{ 117, 369 },
+	{ 117, 371 },
+	{ 117, 468 },
+	{ 87, 372 },
+	{ 119, 373 },
+	{ 89, 374 },
+	{ 89, 376 },
+	{ 121, 375 },
+	{ 90, 377 },
+	{ 90, 379 },
+	{ 90, 381 },
+	{ 122, 378 },
+	{ 122, 380 },
+	{ 122, 382 },
 };
-charconvert iso646_fr[] = {
- /* 0 */ 0,/*<tdbgcolor="C0C0C0"><fontface="Arial"color="000000"><b>ISO/IEC10646-1:2000CharacterName</b></font>*/
- 1,
- 2,
- 3,
- 4,
- 5,
- 6,
- 7,
- 8,
- 9,
- 10,
- 11,
- 12,
- 13,
- 14,
- 15,
- 16,
- 17,
- 18,
- 19,
- 20,
- 21,
- 22,
- 23,
- 24,
- 25,
- 26,
- 27,
- 28,
- 29,
- 30,
- 31,
- /* 32 */ 32,/*SPACE*/
- /* 33 */ 33,/*EXCLAMATIONMARK*/
- /* 34 */ 34,/*QUOTATIONMARK*/
- /* 35 */ 163,/*POUNDSIGN*/
- /* 36 */ 36,/*DOLLARSIGN*/
- /* 37 */ 37,/*PERCENTSIGN*/
- /* 38 */ 38,/*AMPERSAND*/
- /* 39 */ 39,/*APOSTROPHE*/
- /* 40 */ 40,/*LEFTPARENTHESIS*/
- /* 41 */ 41,/*RIGHTPARENTHESIS*/
- /* 42 */ 42,/*ASTERISK*/
- /* 43 */ 43,/*PLUSSIGN*/
- /* 44 */ 44,/*COMMA*/
- /* 45 */ 45,/*HYPHEN-MINUS*/
- /* 46 */ 46,/*FULLSTOP*/
- /* 47 */ 47,/*SOLIDUS*/
- /* 48 */ 48,/*DIGITZERO*/
- /* 49 */ 49,/*DIGITONE*/
- /* 50 */ 50,/*DIGITTWO*/
- /* 51 */ 51,/*DIGITTHREE*/
- /* 52 */ 52,/*DIGITFOUR*/
- /* 53 */ 53,/*DIGITFIVE*/
- /* 54 */ 54,/*DIGITSIX*/
- /* 55 */ 55,/*DIGITSEVEN*/
- /* 56 */ 56,/*DIGITEIGHT*/
- /* 57 */ 57,/*DIGITNINE*/
- /* 58 */ 58,/*COLON*/
- /* 59 */ 59,/*SEMICOLON*/
- /* 60 */ 60,/*LESS-THANSIGN*/
- /* 61 */ 61,/*EQUALSSIGN*/
- /* 62 */ 62,/*GREATER-THANSIGN*/
- /* 63 */ 63,/*QUESTIONMARK*/
- /* 64 */ 224,/*LATINSMALLLETTERAWITHGRAVE*/
- /* 65 */ 65,/*LATINCAPITALLETTERA*/
- /* 66 */ 66,/*LATINCAPITALLETTERB*/
- /* 67 */ 67,/*LATINCAPITALLETTERC*/
- /* 68 */ 68,/*LATINCAPITALLETTERD*/
- /* 69 */ 69,/*LATINCAPITALLETTERE*/
- /* 70 */ 70,/*LATINCAPITALLETTERF*/
- /* 71 */ 71,/*LATINCAPITALLETTERG*/
- /* 72 */ 72,/*LATINCAPITALLETTERH*/
- /* 73 */ 73,/*LATINCAPITALLETTERI*/
- /* 74 */ 74,/*LATINCAPITALLETTERJ*/
- /* 75 */ 75,/*LATINCAPITALLETTERK*/
- /* 76 */ 76,/*LATINCAPITALLETTERL*/
- /* 77 */ 77,/*LATINCAPITALLETTERM*/
- /* 78 */ 78,/*LATINCAPITALLETTERN*/
- /* 79 */ 79,/*LATINCAPITALLETTERO*/
- /* 80 */ 80,/*LATINCAPITALLETTERP*/
- /* 81 */ 81,/*LATINCAPITALLETTERQ*/
- /* 82 */ 82,/*LATINCAPITALLETTERR*/
- /* 83 */ 83,/*LATINCAPITALLETTERS*/
- /* 84 */ 84,/*LATINCAPITALLETTERT*/
- /* 85 */ 85,/*LATINCAPITALLETTERU*/
- /* 86 */ 86,/*LATINCAPITALLETTERV*/
- /* 87 */ 87,/*LATINCAPITALLETTERW*/
- /* 88 */ 88,/*LATINCAPITALLETTERX*/
- /* 89 */ 89,/*LATINCAPITALLETTERY*/
- /* 90 */ 90,/*LATINCAPITALLETTERZ*/
- /* 91 */ 176,/*DEGREESIGN*/
- /* 92 */ 231,/*LATINSMALLLETTERCWITHCEDILLA*/
- /* 93 */ 167,/*SECTIONSIGN*/
- /* 94 */ 94,/*CIRCUMFLEXACCENT*/
- /* 95 */ 95,/*LOWLINE*/
- /* 96 */ 96,/*GRAVEACCENT*/
- /* 97 */ 97,/*LATINSMALLLETTERA*/
- /* 98 */ 98,/*LATINSMALLLETTERB*/
- /* 99 */ 99,/*LATINSMALLLETTERC*/
- /* 100 */ 100,/*LATINSMALLLETTERD*/
- /* 101 */ 101,/*LATINSMALLLETTERE*/
- /* 102 */ 102,/*LATINSMALLLETTERF*/
- /* 103 */ 103,/*LATINSMALLLETTERG*/
- /* 104 */ 104,/*LATINSMALLLETTERH*/
- /* 105 */ 105,/*LATINSMALLLETTERI*/
- /* 106 */ 106,/*LATINSMALLLETTERJ*/
- /* 107 */ 107,/*LATINSMALLLETTERK*/
- /* 108 */ 108,/*LATINSMALLLETTERL*/
- /* 109 */ 109,/*LATINSMALLLETTERM*/
- /* 110 */ 110,/*LATINSMALLLETTERN*/
- /* 111 */ 111,/*LATINSMALLLETTERO*/
- /* 112 */ 112,/*LATINSMALLLETTERP*/
- /* 113 */ 113,/*LATINSMALLLETTERQ*/
- /* 114 */ 114,/*LATINSMALLLETTERR*/
- /* 115 */ 115,/*LATINSMALLLETTERS*/
- /* 116 */ 116,/*LATINSMALLLETTERT*/
- /* 117 */ 117,/*LATINSMALLLETTERU*/
- /* 118 */ 118,/*LATINSMALLLETTERV*/
- /* 119 */ 119,/*LATINSMALLLETTERW*/
- /* 120 */ 120,/*LATINSMALLLETTERX*/
- /* 121 */ 121,/*LATINSMALLLETTERY*/
- /* 122 */ 122,/*LATINSMALLLETTERZ*/
- /* 123 */ 233,/*LATINSMALLLETTEREWITHACUTE*/
- /* 124 */ 249,/*LATINSMALLLETTERUWITHGRAVE*/
- /* 125 */ 232,/*LATINSMALLLETTEREWITHGRAVE*/
- /* 126 */ 168,/*DIAERESIS*/
- 127,
- 128,
- 129,
- 130,
- 131,
- 132,
- 133,
- 134,
- 135,
- 136,
- 137,
- 138,
- 139,
- 140,
- 141,
- 142,
- 143,
- 144,
- 145,
- 146,
- 147,
- 148,
- 149,
- 150,
- 151,
- 152,
- 153,
- 154,
- 155,
- 156,
- 157,
- 158,
- 159,
- 160,
- 161,
- 162,
- 163,
- 164,
- 165,
- 166,
- 167,
- 168,
- 169,
- 170,
- 171,
- 172,
- 173,
- 174,
- 175,
- 176,
- 177,
- 178,
- 179,
- 180,
- 181,
- 182,
- 183,
- 184,
- 185,
- 186,
- 187,
- 188,
- 189,
- 190,
- 191,
- 192,
- 193,
- 194,
- 195,
- 196,
- 197,
- 198,
- 199,
- 200,
- 201,
- 202,
- 203,
- 204,
- 205,
- 206,
- 207,
- 208,
- 209,
- 210,
- 211,
- 212,
- 213,
- 214,
- 215,
- 216,
- 217,
- 218,
- 219,
- 220,
- 221,
- 222,
- 223,
- 224,
- 225,
- 226,
- 227,
- 228,
- 229,
- 230,
- 231,
- 232,
- 233,
- 234,
- 235,
- 236,
- 237,
- 238,
- 239,
- 240,
- 241,
- 242,
- 243,
- 244,
- 245,
- 246,
- 247,
- 248,
- 249,
- 250,
- 251,
- 252,
- 253,
- 254,
- 255
+static convert_t iso646_gb[] = {
+	{ 0, 0 },
+	{ 1, 1 },
+	{ 2, 2 },
+	{ 3, 3 },
+	{ 4, 4 },
+	{ 5, 5 },
+	{ 6, 6 },
+	{ 7, 7 },
+	{ 8, 8 },
+	{ 9, 9 },
+	{ 10, 10 },
+	{ 11, 11 },
+	{ 12, 12 },
+	{ 13, 13 },
+	{ 14, 14 },
+	{ 15, 15 },
+	{ 16, 16 },
+	{ 17, 17 },
+	{ 18, 18 },
+	{ 19, 19 },
+	{ 20, 20 },
+	{ 21, 21 },
+	{ 22, 22 },
+	{ 23, 23 },
+	{ 24, 24 },
+	{ 25, 25 },
+	{ 26, 26 },
+	{ 27, 27 },
+	{ 28, 28 },
+	{ 29, 29 },
+	{ 30, 30 },
+	{ 31, 31 },
+	{ 32, 32 },
+	{ 33, 33 },
+	{ 34, 34 },
+	{ 35, 163 },
+	{ 36, 36 },
+	{ 37, 37 },
+	{ 38, 38 },
+	{ 39, 39 },
+	{ 40, 40 },
+	{ 41, 41 },
+	{ 42, 42 },
+	{ 43, 43 },
+	{ 44, 44 },
+	{ 45, 45 },
+	{ 46, 46 },
+	{ 47, 47 },
+	{ 48, 48 },
+	{ 49, 49 },
+	{ 50, 50 },
+	{ 51, 51 },
+	{ 52, 52 },
+	{ 53, 53 },
+	{ 54, 54 },
+	{ 55, 55 },
+	{ 56, 56 },
+	{ 57, 57 },
+	{ 58, 58 },
+	{ 59, 59 },
+	{ 60, 60 },
+	{ 61, 61 },
+	{ 62, 62 },
+	{ 63, 63 },
+	{ 64, 64 },
+	{ 65, 65 },
+	{ 66, 66 },
+	{ 67, 67 },
+	{ 68, 68 },
+	{ 69, 69 },
+	{ 70, 70 },
+	{ 71, 71 },
+	{ 72, 72 },
+	{ 73, 73 },
+	{ 74, 74 },
+	{ 75, 75 },
+	{ 76, 76 },
+	{ 77, 77 },
+	{ 78, 78 },
+	{ 79, 79 },
+	{ 80, 80 },
+	{ 81, 81 },
+	{ 82, 82 },
+	{ 83, 83 },
+	{ 84, 84 },
+	{ 85, 85 },
+	{ 86, 86 },
+	{ 87, 87 },
+	{ 88, 88 },
+	{ 89, 89 },
+	{ 90, 90 },
+	{ 91, 91 },
+	{ 92, 92 },
+	{ 93, 93 },
+	{ 94, 94 },
+	{ 95, 95 },
+	{ 96, 96 },
+	{ 97, 97 },
+	{ 98, 98 },
+	{ 99, 99 },
+	{ 100, 100 },
+	{ 101, 101 },
+	{ 102, 102 },
+	{ 103, 103 },
+	{ 104, 104 },
+	{ 105, 105 },
+	{ 106, 106 },
+	{ 107, 107 },
+	{ 108, 108 },
+	{ 109, 109 },
+	{ 110, 110 },
+	{ 111, 111 },
+	{ 112, 112 },
+	{ 113, 113 },
+	{ 114, 114 },
+	{ 115, 115 },
+	{ 116, 116 },
+	{ 117, 117 },
+	{ 118, 118 },
+	{ 119, 119 },
+	{ 120, 120 },
+	{ 121, 121 },
+	{ 122, 122 },
+	{ 123, 123 },
+	{ 124, 124 },
+	{ 125, 125 },
+	{ 126, 126 },
+	{ 127, 127 },
+	{ 128, 128 },
+	{ 129, 129 },
+	{ 130, 130 },
+	{ 131, 131 },
+	{ 132, 132 },
+	{ 133, 133 },
+	{ 134, 134 },
+	{ 135, 135 },
+	{ 136, 136 },
+	{ 137, 137 },
+	{ 138, 138 },
+	{ 139, 139 },
+	{ 140, 140 },
+	{ 141, 141 },
+	{ 142, 142 },
+	{ 143, 143 },
+	{ 144, 144 },
+	{ 145, 145 },
+	{ 146, 146 },
+	{ 147, 147 },
+	{ 148, 148 },
+	{ 149, 149 },
+	{ 150, 150 },
+	{ 151, 151 },
+	{ 152, 152 },
+	{ 153, 153 },
+	{ 154, 154 },
+	{ 155, 155 },
+	{ 156, 156 },
+	{ 157, 157 },
+	{ 158, 158 },
+	{ 159, 159 },
+	{ 160, 160 },
+	{ 161, 161 },
+	{ 162, 162 },
+	{ 163, 163 },
+	{ 164, 164 },
+	{ 165, 165 },
+	{ 166, 166 },
+	{ 167, 167 },
+	{ 168, 168 },
+	{ 169, 169 },
+	{ 170, 170 },
+	{ 171, 171 },
+	{ 172, 172 },
+	{ 173, 173 },
+	{ 174, 174 },
+	{ 175, 175 },
+	{ 176, 176 },
+	{ 177, 177 },
+	{ 178, 178 },
+	{ 179, 179 },
+	{ 180, 180 },
+	{ 181, 181 },
+	{ 182, 182 },
+	{ 183, 183 },
+	{ 184, 184 },
+	{ 185, 185 },
+	{ 186, 186 },
+	{ 187, 187 },
+	{ 188, 188 },
+	{ 189, 189 },
+	{ 190, 190 },
+	{ 191, 191 },
+	{ 192, 192 },
+	{ 193, 193 },
+	{ 194, 194 },
+	{ 195, 195 },
+	{ 196, 196 },
+	{ 197, 197 },
+	{ 198, 198 },
+	{ 199, 199 },
+	{ 200, 200 },
+	{ 201, 201 },
+	{ 202, 202 },
+	{ 203, 203 },
+	{ 204, 204 },
+	{ 205, 205 },
+	{ 206, 206 },
+	{ 207, 207 },
+	{ 208, 208 },
+	{ 209, 209 },
+	{ 210, 210 },
+	{ 211, 211 },
+	{ 212, 212 },
+	{ 213, 213 },
+	{ 214, 214 },
+	{ 215, 215 },
+	{ 216, 216 },
+	{ 217, 217 },
+	{ 218, 218 },
+	{ 219, 219 },
+	{ 220, 220 },
+	{ 221, 221 },
+	{ 222, 222 },
+	{ 223, 223 },
+	{ 224, 224 },
+	{ 225, 225 },
+	{ 226, 226 },
+	{ 227, 227 },
+	{ 228, 228 },
+	{ 229, 229 },
+	{ 230, 230 },
+	{ 231, 231 },
+	{ 232, 232 },
+	{ 233, 233 },
+	{ 234, 234 },
+	{ 235, 235 },
+	{ 236, 236 },
+	{ 237, 237 },
+	{ 238, 238 },
+	{ 239, 239 },
+	{ 240, 240 },
+	{ 241, 241 },
+	{ 242, 242 },
+	{ 243, 243 },
+	{ 244, 244 },
+	{ 245, 245 },
+	{ 246, 246 },
+	{ 247, 247 },
+	{ 248, 248 },
+	{ 249, 249 },
+	{ 250, 250 },
+	{ 251, 251 },
+	{ 252, 252 },
+	{ 253, 253 },
+	{ 254, 254 },
+	{ 255, 255 },
+	{ 34, 8220 },
+	{ 34, 8221 },
+	{ 39, 8216 },
+	{ 39, 8217 },
+	{ 45, 8211 },
+	{ 45, 8212 },
+	{ 32, 8194 },
+	{ 32, 8195 },
+	{ 32, 8201 },
+	{ 65, 256 },
+	{ 65, 258 },
+	{ 65, 260 },
+	{ 65, 461 },
+	{ 97, 257 },
+	{ 97, 259 },
+	{ 97, 261 },
+	{ 97, 462 },
+	{ 67, 262 },
+	{ 67, 264 },
+	{ 67, 266 },
+	{ 67, 268 },
+	{ 99, 263 },
+	{ 99, 265 },
+	{ 99, 267 },
+	{ 99, 269 },
+	{ 68, 270 },
+	{ 100, 271 },
+	{ 69, 274 },
+	{ 69, 276 },
+	{ 69, 278 },
+	{ 69, 280 },
+	{ 69, 282 },
+	{ 101, 275 },
+	{ 101, 277 },
+	{ 101, 279 },
+	{ 101, 281 },
+	{ 101, 283 },
+	{ 71, 284 },
+	{ 71, 286 },
+	{ 71, 288 },
+	{ 71, 290 },
+	{ 71, 486 },
+	{ 71, 500 },
+	{ 103, 285 },
+	{ 103, 287 },
+	{ 103, 289 },
+	{ 103, 291 },
+	{ 103, 487 },
+	{ 103, 501 },
+	{ 72, 292 },
+	{ 104, 293 },
+	{ 73, 296 },
+	{ 73, 298 },
+	{ 73, 300 },
+	{ 73, 302 },
+	{ 73, 304 },
+	{ 73, 463 },
+	{ 105, 297 },
+	{ 105, 299 },
+	{ 105, 301 },
+	{ 105, 303 },
+	{ 105, 305 },
+	{ 105, 464 },
+	{ 74, 308 },
+	{ 106, 309 },
+	{ 75, 310 },
+	{ 75, 488 },
+	{ 107, 311 },
+	{ 107, 489 },
+	{ 76, 313 },
+	{ 76, 315 },
+	{ 76, 317 },
+	{ 76, 319 },
+	{ 76, 321 },
+	{ 108, 314 },
+	{ 108, 316 },
+	{ 108, 318 },
+	{ 108, 320 },
+	{ 108, 322 },
+	{ 77, 323 },
+	{ 77, 325 },
+	{ 77, 327 },
+	{ 109, 324 },
+	{ 109, 326 },
+	{ 109, 328 },
+	{ 109, 329 },
+	{ 78, 332 },
+	{ 78, 334 },
+	{ 78, 336 },
+	{ 78, 465 },
+	{ 78, 490 },
+	{ 110, 333 },
+	{ 110, 335 },
+	{ 110, 337 },
+	{ 110, 466 },
+	{ 110, 491 },
+	{ 82, 340 },
+	{ 82, 342 },
+	{ 82, 344 },
+	{ 114, 341 },
+	{ 114, 343 },
+	{ 114, 345 },
+	{ 83, 346 },
+	{ 83, 348 },
+	{ 83, 350 },
+	{ 83, 352 },
+	{ 115, 347 },
+	{ 115, 349 },
+	{ 115, 351 },
+	{ 115, 353 },
+	{ 84, 354 },
+	{ 84, 356 },
+	{ 116, 355 },
+	{ 116, 357 },
+	{ 85, 360 },
+	{ 85, 362 },
+	{ 85, 364 },
+	{ 85, 366 },
+	{ 85, 368 },
+	{ 85, 370 },
+	{ 85, 467 },
+	{ 117, 361 },
+	{ 117, 363 },
+	{ 117, 365 },
+	{ 117, 367 },
+	{ 117, 369 },
+	{ 117, 371 },
+	{ 117, 468 },
+	{ 87, 372 },
+	{ 119, 373 },
+	{ 89, 374 },
+	{ 89, 376 },
+	{ 121, 375 },
+	{ 90, 377 },
+	{ 90, 379 },
+	{ 90, 381 },
+	{ 122, 378 },
+	{ 122, 380 },
+	{ 122, 382 },
 };
-charconvert iso646_gb[] = {
- /* 0 */ 0,/*<tdbgcolor="C0C0C0"><fontface="Arial"color="000000"><b>ISO/IEC10646-1:2000CharacterName</b></font>*/
- 1,
- 2,
- 3,
- 4,
- 5,
- 6,
- 7,
- 8,
- 9,
- 10,
- 11,
- 12,
- 13,
- 14,
- 15,
- 16,
- 17,
- 18,
- 19,
- 20,
- 21,
- 22,
- 23,
- 24,
- 25,
- 26,
- 27,
- 28,
- 29,
- 30,
- 31,
- /* 32 */ 32,/*SPACE*/
- /* 33 */ 33,/*EXCLAMATIONMARK*/
- /* 34 */ 34,/*QUOTATIONMARK*/
- /* 35 */ 163,/*POUNDSIGN*/
- /* 36 */ 36,/*DOLLARSIGN*/
- /* 37 */ 37,/*PERCENTSIGN*/
- /* 38 */ 38,/*AMPERSAND*/
- /* 39 */ 39,/*APOSTROPHE*/
- /* 40 */ 40,/*LEFTPARENTHESIS*/
- /* 41 */ 41,/*RIGHTPARENTHESIS*/
- /* 42 */ 42,/*ASTERISK*/
- /* 43 */ 43,/*PLUSSIGN*/
- /* 44 */ 44,/*COMMA*/
- /* 45 */ 45,/*HYPHEN-MINUS*/
- /* 46 */ 46,/*FULLSTOP*/
- /* 47 */ 47,/*SOLIDUS*/
- /* 48 */ 48,/*DIGITZERO*/
- /* 49 */ 49,/*DIGITONE*/
- /* 50 */ 50,/*DIGITTWO*/
- /* 51 */ 51,/*DIGITTHREE*/
- /* 52 */ 52,/*DIGITFOUR*/
- /* 53 */ 53,/*DIGITFIVE*/
- /* 54 */ 54,/*DIGITSIX*/
- /* 55 */ 55,/*DIGITSEVEN*/
- /* 56 */ 56,/*DIGITEIGHT*/
- /* 57 */ 57,/*DIGITNINE*/
- /* 58 */ 58,/*COLON*/
- /* 59 */ 59,/*SEMICOLON*/
- /* 60 */ 60,/*LESS-THANSIGN*/
- /* 61 */ 61,/*EQUALSSIGN*/
- /* 62 */ 62,/*GREATER-THANSIGN*/
- /* 63 */ 63,/*QUESTIONMARK*/
- /* 64 */ 64,/*COMMERCIALAT*/
- /* 65 */ 65,/*LATINCAPITALLETTERA*/
- /* 66 */ 66,/*LATINCAPITALLETTERB*/
- /* 67 */ 67,/*LATINCAPITALLETTERC*/
- /* 68 */ 68,/*LATINCAPITALLETTERD*/
- /* 69 */ 69,/*LATINCAPITALLETTERE*/
- /* 70 */ 70,/*LATINCAPITALLETTERF*/
- /* 71 */ 71,/*LATINCAPITALLETTERG*/
- /* 72 */ 72,/*LATINCAPITALLETTERH*/
- /* 73 */ 73,/*LATINCAPITALLETTERI*/
- /* 74 */ 74,/*LATINCAPITALLETTERJ*/
- /* 75 */ 75,/*LATINCAPITALLETTERK*/
- /* 76 */ 76,/*LATINCAPITALLETTERL*/
- /* 77 */ 77,/*LATINCAPITALLETTERM*/
- /* 78 */ 78,/*LATINCAPITALLETTERN*/
- /* 79 */ 79,/*LATINCAPITALLETTERO*/
- /* 80 */ 80,/*LATINCAPITALLETTERP*/
- /* 81 */ 81,/*LATINCAPITALLETTERQ*/
- /* 82 */ 82,/*LATINCAPITALLETTERR*/
- /* 83 */ 83,/*LATINCAPITALLETTERS*/
- /* 84 */ 84,/*LATINCAPITALLETTERT*/
- /* 85 */ 85,/*LATINCAPITALLETTERU*/
- /* 86 */ 86,/*LATINCAPITALLETTERV*/
- /* 87 */ 87,/*LATINCAPITALLETTERW*/
- /* 88 */ 88,/*LATINCAPITALLETTERX*/
- /* 89 */ 89,/*LATINCAPITALLETTERY*/
- /* 90 */ 90,/*LATINCAPITALLETTERZ*/
- /* 91 */ 91,/*LEFTSQUAREBRACKET*/
- /* 92 */ 92,/*REVERSESOLIDUS*/
- /* 93 */ 93,/*RIGHTSQUAREBRACKET*/
- /* 94 */ 94,/*CIRCUMFLEXACCENT*/
- /* 95 */ 95,/*LOWLINE*/
- /* 96 */ 96,/*GRAVEACCENT*/
- /* 97 */ 97,/*LATINSMALLLETTERA*/
- /* 98 */ 98,/*LATINSMALLLETTERB*/
- /* 99 */ 99,/*LATINSMALLLETTERC*/
- /* 100 */ 100,/*LATINSMALLLETTERD*/
- /* 101 */ 101,/*LATINSMALLLETTERE*/
- /* 102 */ 102,/*LATINSMALLLETTERF*/
- /* 103 */ 103,/*LATINSMALLLETTERG*/
- /* 104 */ 104,/*LATINSMALLLETTERH*/
- /* 105 */ 105,/*LATINSMALLLETTERI*/
- /* 106 */ 106,/*LATINSMALLLETTERJ*/
- /* 107 */ 107,/*LATINSMALLLETTERK*/
- /* 108 */ 108,/*LATINSMALLLETTERL*/
- /* 109 */ 109,/*LATINSMALLLETTERM*/
- /* 110 */ 110,/*LATINSMALLLETTERN*/
- /* 111 */ 111,/*LATINSMALLLETTERO*/
- /* 112 */ 112,/*LATINSMALLLETTERP*/
- /* 113 */ 113,/*LATINSMALLLETTERQ*/
- /* 114 */ 114,/*LATINSMALLLETTERR*/
- /* 115 */ 115,/*LATINSMALLLETTERS*/
- /* 116 */ 116,/*LATINSMALLLETTERT*/
- /* 117 */ 117,/*LATINSMALLLETTERU*/
- /* 118 */ 118,/*LATINSMALLLETTERV*/
- /* 119 */ 119,/*LATINSMALLLETTERW*/
- /* 120 */ 120,/*LATINSMALLLETTERX*/
- /* 121 */ 121,/*LATINSMALLLETTERY*/
- /* 122 */ 122,/*LATINSMALLLETTERZ*/
- /* 123 */ 123,/*LEFTCURLYBRACKET*/
- /* 124 */ 124,/*VERTICALLINE*/
- /* 125 */ 125,/*RIGHTCURLYBRACKET*/
- /* 126 */ 126,/*TILDE*/
- 127,
- 128,
- 129,
- 130,
- 131,
- 132,
- 133,
- 134,
- 135,
- 136,
- 137,
- 138,
- 139,
- 140,
- 141,
- 142,
- 143,
- 144,
- 145,
- 146,
- 147,
- 148,
- 149,
- 150,
- 151,
- 152,
- 153,
- 154,
- 155,
- 156,
- 157,
- 158,
- 159,
- 160,
- 161,
- 162,
- 163,
- 164,
- 165,
- 166,
- 167,
- 168,
- 169,
- 170,
- 171,
- 172,
- 173,
- 174,
- 175,
- 176,
- 177,
- 178,
- 179,
- 180,
- 181,
- 182,
- 183,
- 184,
- 185,
- 186,
- 187,
- 188,
- 189,
- 190,
- 191,
- 192,
- 193,
- 194,
- 195,
- 196,
- 197,
- 198,
- 199,
- 200,
- 201,
- 202,
- 203,
- 204,
- 205,
- 206,
- 207,
- 208,
- 209,
- 210,
- 211,
- 212,
- 213,
- 214,
- 215,
- 216,
- 217,
- 218,
- 219,
- 220,
- 221,
- 222,
- 223,
- 224,
- 225,
- 226,
- 227,
- 228,
- 229,
- 230,
- 231,
- 232,
- 233,
- 234,
- 235,
- 236,
- 237,
- 238,
- 239,
- 240,
- 241,
- 242,
- 243,
- 244,
- 245,
- 246,
- 247,
- 248,
- 249,
- 250,
- 251,
- 252,
- 253,
- 254,
- 255
+static convert_t iso646_it[] = {
+	{ 0, 0 },
+	{ 1, 1 },
+	{ 2, 2 },
+	{ 3, 3 },
+	{ 4, 4 },
+	{ 5, 5 },
+	{ 6, 6 },
+	{ 7, 7 },
+	{ 8, 8 },
+	{ 9, 9 },
+	{ 10, 10 },
+	{ 11, 11 },
+	{ 12, 12 },
+	{ 13, 13 },
+	{ 14, 14 },
+	{ 15, 15 },
+	{ 16, 16 },
+	{ 17, 17 },
+	{ 18, 18 },
+	{ 19, 19 },
+	{ 20, 20 },
+	{ 21, 21 },
+	{ 22, 22 },
+	{ 23, 23 },
+	{ 24, 24 },
+	{ 25, 25 },
+	{ 26, 26 },
+	{ 27, 27 },
+	{ 28, 28 },
+	{ 29, 29 },
+	{ 30, 30 },
+	{ 31, 31 },
+	{ 32, 32 },
+	{ 33, 33 },
+	{ 34, 34 },
+	{ 35, 163 },
+	{ 36, 36 },
+	{ 37, 37 },
+	{ 38, 38 },
+	{ 39, 39 },
+	{ 40, 40 },
+	{ 41, 41 },
+	{ 42, 42 },
+	{ 43, 43 },
+	{ 44, 44 },
+	{ 45, 45 },
+	{ 46, 46 },
+	{ 47, 47 },
+	{ 48, 48 },
+	{ 49, 49 },
+	{ 50, 50 },
+	{ 51, 51 },
+	{ 52, 52 },
+	{ 53, 53 },
+	{ 54, 54 },
+	{ 55, 55 },
+	{ 56, 56 },
+	{ 57, 57 },
+	{ 58, 58 },
+	{ 59, 59 },
+	{ 60, 60 },
+	{ 61, 61 },
+	{ 62, 62 },
+	{ 63, 63 },
+	{ 64, 167 },
+	{ 65, 65 },
+	{ 66, 66 },
+	{ 67, 67 },
+	{ 68, 68 },
+	{ 69, 69 },
+	{ 70, 70 },
+	{ 71, 71 },
+	{ 72, 72 },
+	{ 73, 73 },
+	{ 74, 74 },
+	{ 75, 75 },
+	{ 76, 76 },
+	{ 77, 77 },
+	{ 78, 78 },
+	{ 79, 79 },
+	{ 80, 80 },
+	{ 81, 81 },
+	{ 82, 82 },
+	{ 83, 83 },
+	{ 84, 84 },
+	{ 85, 85 },
+	{ 86, 86 },
+	{ 87, 87 },
+	{ 88, 88 },
+	{ 89, 89 },
+	{ 90, 90 },
+	{ 91, 176 },
+	{ 92, 231 },
+	{ 93, 233 },
+	{ 94, 94 },
+	{ 95, 95 },
+	{ 96, 249 },
+	{ 97, 97 },
+	{ 98, 98 },
+	{ 99, 99 },
+	{ 100, 100 },
+	{ 101, 101 },
+	{ 102, 102 },
+	{ 103, 103 },
+	{ 104, 104 },
+	{ 105, 105 },
+	{ 106, 106 },
+	{ 107, 107 },
+	{ 108, 108 },
+	{ 109, 109 },
+	{ 110, 110 },
+	{ 111, 111 },
+	{ 112, 112 },
+	{ 113, 113 },
+	{ 114, 114 },
+	{ 115, 115 },
+	{ 116, 116 },
+	{ 117, 117 },
+	{ 118, 118 },
+	{ 119, 119 },
+	{ 120, 120 },
+	{ 121, 121 },
+	{ 122, 122 },
+	{ 123, 224 },
+	{ 124, 242 },
+	{ 125, 232 },
+	{ 126, 236 },
+	{ 127, 127 },
+	{ 128, 128 },
+	{ 129, 129 },
+	{ 130, 130 },
+	{ 131, 131 },
+	{ 132, 132 },
+	{ 133, 133 },
+	{ 134, 134 },
+	{ 135, 135 },
+	{ 136, 136 },
+	{ 137, 137 },
+	{ 138, 138 },
+	{ 139, 139 },
+	{ 140, 140 },
+	{ 141, 141 },
+	{ 142, 142 },
+	{ 143, 143 },
+	{ 144, 144 },
+	{ 145, 145 },
+	{ 146, 146 },
+	{ 147, 147 },
+	{ 148, 148 },
+	{ 149, 149 },
+	{ 150, 150 },
+	{ 151, 151 },
+	{ 152, 152 },
+	{ 153, 153 },
+	{ 154, 154 },
+	{ 155, 155 },
+	{ 156, 156 },
+	{ 157, 157 },
+	{ 158, 158 },
+	{ 159, 159 },
+	{ 160, 160 },
+	{ 161, 161 },
+	{ 162, 162 },
+	{ 163, 163 },
+	{ 164, 164 },
+	{ 165, 165 },
+	{ 166, 166 },
+	{ 167, 167 },
+	{ 168, 168 },
+	{ 169, 169 },
+	{ 170, 170 },
+	{ 171, 171 },
+	{ 172, 172 },
+	{ 173, 173 },
+	{ 174, 174 },
+	{ 175, 175 },
+	{ 176, 176 },
+	{ 177, 177 },
+	{ 178, 178 },
+	{ 179, 179 },
+	{ 180, 180 },
+	{ 181, 181 },
+	{ 182, 182 },
+	{ 183, 183 },
+	{ 184, 184 },
+	{ 185, 185 },
+	{ 186, 186 },
+	{ 187, 187 },
+	{ 188, 188 },
+	{ 189, 189 },
+	{ 190, 190 },
+	{ 191, 191 },
+	{ 192, 192 },
+	{ 193, 193 },
+	{ 194, 194 },
+	{ 195, 195 },
+	{ 196, 196 },
+	{ 197, 197 },
+	{ 198, 198 },
+	{ 199, 199 },
+	{ 200, 200 },
+	{ 201, 201 },
+	{ 202, 202 },
+	{ 203, 203 },
+	{ 204, 204 },
+	{ 205, 205 },
+	{ 206, 206 },
+	{ 207, 207 },
+	{ 208, 208 },
+	{ 209, 209 },
+	{ 210, 210 },
+	{ 211, 211 },
+	{ 212, 212 },
+	{ 213, 213 },
+	{ 214, 214 },
+	{ 215, 215 },
+	{ 216, 216 },
+	{ 217, 217 },
+	{ 218, 218 },
+	{ 219, 219 },
+	{ 220, 220 },
+	{ 221, 221 },
+	{ 222, 222 },
+	{ 223, 223 },
+	{ 224, 224 },
+	{ 225, 225 },
+	{ 226, 226 },
+	{ 227, 227 },
+	{ 228, 228 },
+	{ 229, 229 },
+	{ 230, 230 },
+	{ 231, 231 },
+	{ 232, 232 },
+	{ 233, 233 },
+	{ 234, 234 },
+	{ 235, 235 },
+	{ 236, 236 },
+	{ 237, 237 },
+	{ 238, 238 },
+	{ 239, 239 },
+	{ 240, 240 },
+	{ 241, 241 },
+	{ 242, 242 },
+	{ 243, 243 },
+	{ 244, 244 },
+	{ 245, 245 },
+	{ 246, 246 },
+	{ 247, 247 },
+	{ 248, 248 },
+	{ 249, 249 },
+	{ 250, 250 },
+	{ 251, 251 },
+	{ 252, 252 },
+	{ 253, 253 },
+	{ 254, 254 },
+	{ 255, 255 },
+	{ 34, 8220 },
+	{ 34, 8221 },
+	{ 39, 8216 },
+	{ 39, 8217 },
+	{ 45, 8211 },
+	{ 45, 8212 },
+	{ 32, 8194 },
+	{ 32, 8195 },
+	{ 32, 8201 },
+	{ 65, 256 },
+	{ 65, 258 },
+	{ 65, 260 },
+	{ 65, 461 },
+	{ 97, 257 },
+	{ 97, 259 },
+	{ 97, 261 },
+	{ 97, 462 },
+	{ 67, 262 },
+	{ 67, 264 },
+	{ 67, 266 },
+	{ 67, 268 },
+	{ 99, 263 },
+	{ 99, 265 },
+	{ 99, 267 },
+	{ 99, 269 },
+	{ 68, 270 },
+	{ 100, 271 },
+	{ 69, 274 },
+	{ 69, 276 },
+	{ 69, 278 },
+	{ 69, 280 },
+	{ 69, 282 },
+	{ 101, 275 },
+	{ 101, 277 },
+	{ 101, 279 },
+	{ 101, 281 },
+	{ 101, 283 },
+	{ 71, 284 },
+	{ 71, 286 },
+	{ 71, 288 },
+	{ 71, 290 },
+	{ 71, 486 },
+	{ 71, 500 },
+	{ 103, 285 },
+	{ 103, 287 },
+	{ 103, 289 },
+	{ 103, 291 },
+	{ 103, 487 },
+	{ 103, 501 },
+	{ 72, 292 },
+	{ 104, 293 },
+	{ 73, 296 },
+	{ 73, 298 },
+	{ 73, 300 },
+	{ 73, 302 },
+	{ 73, 304 },
+	{ 73, 463 },
+	{ 105, 297 },
+	{ 105, 299 },
+	{ 105, 301 },
+	{ 105, 303 },
+	{ 105, 305 },
+	{ 105, 464 },
+	{ 74, 308 },
+	{ 106, 309 },
+	{ 75, 310 },
+	{ 75, 488 },
+	{ 107, 311 },
+	{ 107, 489 },
+	{ 76, 313 },
+	{ 76, 315 },
+	{ 76, 317 },
+	{ 76, 319 },
+	{ 76, 321 },
+	{ 108, 314 },
+	{ 108, 316 },
+	{ 108, 318 },
+	{ 108, 320 },
+	{ 108, 322 },
+	{ 77, 323 },
+	{ 77, 325 },
+	{ 77, 327 },
+	{ 109, 324 },
+	{ 109, 326 },
+	{ 109, 328 },
+	{ 109, 329 },
+	{ 78, 332 },
+	{ 78, 334 },
+	{ 78, 336 },
+	{ 78, 465 },
+	{ 78, 490 },
+	{ 110, 333 },
+	{ 110, 335 },
+	{ 110, 337 },
+	{ 110, 466 },
+	{ 110, 491 },
+	{ 82, 340 },
+	{ 82, 342 },
+	{ 82, 344 },
+	{ 114, 341 },
+	{ 114, 343 },
+	{ 114, 345 },
+	{ 83, 346 },
+	{ 83, 348 },
+	{ 83, 350 },
+	{ 83, 352 },
+	{ 115, 347 },
+	{ 115, 349 },
+	{ 115, 351 },
+	{ 115, 353 },
+	{ 84, 354 },
+	{ 84, 356 },
+	{ 116, 355 },
+	{ 116, 357 },
+	{ 85, 360 },
+	{ 85, 362 },
+	{ 85, 364 },
+	{ 85, 366 },
+	{ 85, 368 },
+	{ 85, 370 },
+	{ 85, 467 },
+	{ 117, 361 },
+	{ 117, 363 },
+	{ 117, 365 },
+	{ 117, 367 },
+	{ 117, 369 },
+	{ 117, 371 },
+	{ 117, 468 },
+	{ 87, 372 },
+	{ 119, 373 },
+	{ 89, 374 },
+	{ 89, 376 },
+	{ 121, 375 },
+	{ 90, 377 },
+	{ 90, 379 },
+	{ 90, 381 },
+	{ 122, 378 },
+	{ 122, 380 },
+	{ 122, 382 },
 };
-charconvert iso646[] = {
- /* 0 */ 0,/*<tdbgcolor="C0C0C0"><fontface="Arial"color="000000"><b>ISO/IEC10646-1:2000CharacterName</b></font>*/
- 1,
- 2,
- 3,
- 4,
- 5,
- 6,
- 7,
- 8,
- 9,
- 10,
- 11,
- 12,
- 13,
- 14,
- 15,
- 16,
- 17,
- 18,
- 19,
- 20,
- 21,
- 22,
- 23,
- 24,
- 25,
- 26,
- 27,
- 28,
- 29,
- 30,
- 31,
- /* 32 */ 32,/*SPACE*/
- /* 33 */ 33,/*EXCLAMATIONMARK*/
- /* 34 */ 34,/*QUOTATIONMARK*/
- 35,
- /* 36 */ 36,/*DOLLARSIGN*/
- /* 37 */ 37,/*PERCENTSIGN*/
- /* 38 */ 38,/*AMPERSAND*/
- /* 39 */ 39,/*APOSTROPHE*/
- /* 40 */ 40,/*LEFTPARENTHESIS*/
- /* 41 */ 41,/*RIGHTPARENTHESIS*/
- /* 42 */ 42,/*ASTERISK*/
- /* 43 */ 43,/*PLUSSIGN*/
- /* 44 */ 44,/*COMMA*/
- /* 45 */ 45,/*HYPHEN-MINUS*/
- /* 46 */ 46,/*FULLSTOP*/
- /* 47 */ 47,/*SOLIDUS*/
- /* 48 */ 48,/*DIGITZERO*/
- /* 49 */ 49,/*DIGITONE*/
- /* 50 */ 50,/*DIGITTWO*/
- /* 51 */ 51,/*DIGITTHREE*/
- /* 52 */ 52,/*DIGITFOUR*/
- /* 53 */ 53,/*DIGITFIVE*/
- /* 54 */ 54,/*DIGITSIX*/
- /* 55 */ 55,/*DIGITSEVEN*/
- /* 56 */ 56,/*DIGITEIGHT*/
- /* 57 */ 57,/*DIGITNINE*/
- /* 58 */ 58,/*COLON*/
- /* 59 */ 59,/*SEMICOLON*/
- /* 60 */ 60,/*LESS-THANSIGN*/
- /* 61 */ 61,/*EQUALSSIGN*/
- /* 62 */ 62,/*GREATER-THANSIGN*/
- /* 63 */ 63,/*QUESTIONMARK*/
- 64,
- /* 65 */ 65,/*LATINCAPITALLETTERA*/
- /* 66 */ 66,/*LATINCAPITALLETTERB*/
- /* 67 */ 67,/*LATINCAPITALLETTERC*/
- /* 68 */ 68,/*LATINCAPITALLETTERD*/
- /* 69 */ 69,/*LATINCAPITALLETTERE*/
- /* 70 */ 70,/*LATINCAPITALLETTERF*/
- /* 71 */ 71,/*LATINCAPITALLETTERG*/
- /* 72 */ 72,/*LATINCAPITALLETTERH*/
- /* 73 */ 73,/*LATINCAPITALLETTERI*/
- /* 74 */ 74,/*LATINCAPITALLETTERJ*/
- /* 75 */ 75,/*LATINCAPITALLETTERK*/
- /* 76 */ 76,/*LATINCAPITALLETTERL*/
- /* 77 */ 77,/*LATINCAPITALLETTERM*/
- /* 78 */ 78,/*LATINCAPITALLETTERN*/
- /* 79 */ 79,/*LATINCAPITALLETTERO*/
- /* 80 */ 80,/*LATINCAPITALLETTERP*/
- /* 81 */ 81,/*LATINCAPITALLETTERQ*/
- /* 82 */ 82,/*LATINCAPITALLETTERR*/
- /* 83 */ 83,/*LATINCAPITALLETTERS*/
- /* 84 */ 84,/*LATINCAPITALLETTERT*/
- /* 85 */ 85,/*LATINCAPITALLETTERU*/
- /* 86 */ 86,/*LATINCAPITALLETTERV*/
- /* 87 */ 87,/*LATINCAPITALLETTERW*/
- /* 88 */ 88,/*LATINCAPITALLETTERX*/
- /* 89 */ 89,/*LATINCAPITALLETTERY*/
- /* 90 */ 90,/*LATINCAPITALLETTERZ*/
- 91,
- 92,
- 93,
- 94,
- 95,
- 96,
- /* 97 */ 97,/*LATINSMALLLETTERA*/
- /* 98 */ 98,/*LATINSMALLLETTERB*/
- /* 99 */ 99,/*LATINSMALLLETTERC*/
- /* 100 */ 100,/*LATINSMALLLETTERD*/
- /* 101 */ 101,/*LATINSMALLLETTERE*/
- /* 102 */ 102,/*LATINSMALLLETTERF*/
- /* 103 */ 103,/*LATINSMALLLETTERG*/
- /* 104 */ 104,/*LATINSMALLLETTERH*/
- /* 105 */ 105,/*LATINSMALLLETTERI*/
- /* 106 */ 106,/*LATINSMALLLETTERJ*/
- /* 107 */ 107,/*LATINSMALLLETTERK*/
- /* 108 */ 108,/*LATINSMALLLETTERL*/
- /* 109 */ 109,/*LATINSMALLLETTERM*/
- /* 110 */ 110,/*LATINSMALLLETTERN*/
- /* 111 */ 111,/*LATINSMALLLETTERO*/
- /* 112 */ 112,/*LATINSMALLLETTERP*/
- /* 113 */ 113,/*LATINSMALLLETTERQ*/
- /* 114 */ 114,/*LATINSMALLLETTERR*/
- /* 115 */ 115,/*LATINSMALLLETTERS*/
- /* 116 */ 116,/*LATINSMALLLETTERT*/
- /* 117 */ 117,/*LATINSMALLLETTERU*/
- /* 118 */ 118,/*LATINSMALLLETTERV*/
- /* 119 */ 119,/*LATINSMALLLETTERW*/
- /* 120 */ 120,/*LATINSMALLLETTERX*/
- /* 121 */ 121,/*LATINSMALLLETTERY*/
- /* 122 */ 122,/*LATINSMALLLETTERZ*/
- 123,
- 124,
- 125,
- 126,
- 127,
- 128,
- 129,
- 130,
- 131,
- 132,
- 133,
- 134,
- 135,
- 136,
- 137,
- 138,
- 139,
- 140,
- 141,
- 142,
- 143,
- 144,
- 145,
- 146,
- 147,
- 148,
- 149,
- 150,
- 151,
- 152,
- 153,
- 154,
- 155,
- 156,
- 157,
- 158,
- 159,
- 160,
- 161,
- 162,
- 163,
- 164,
- 165,
- 166,
- 167,
- 168,
- 169,
- 170,
- 171,
- 172,
- 173,
- 174,
- 175,
- 176,
- 177,
- 178,
- 179,
- 180,
- 181,
- 182,
- 183,
- 184,
- 185,
- 186,
- 187,
- 188,
- 189,
- 190,
- 191,
- 192,
- 193,
- 194,
- 195,
- 196,
- 197,
- 198,
- 199,
- 200,
- 201,
- 202,
- 203,
- 204,
- 205,
- 206,
- 207,
- 208,
- 209,
- 210,
- 211,
- 212,
- 213,
- 214,
- 215,
- 216,
- 217,
- 218,
- 219,
- 220,
- 221,
- 222,
- 223,
- 224,
- 225,
- 226,
- 227,
- 228,
- 229,
- 230,
- 231,
- 232,
- 233,
- 234,
- 235,
- 236,
- 237,
- 238,
- 239,
- 240,
- 241,
- 242,
- 243,
- 244,
- 245,
- 246,
- 247,
- 248,
- 249,
- 250,
- 251,
- 252,
- 253,
- 254,
- 255
+static convert_t iso646_nl[] = {
+	{ 0, 0 },
+	{ 1, 1 },
+	{ 2, 2 },
+	{ 3, 3 },
+	{ 4, 4 },
+	{ 5, 5 },
+	{ 6, 6 },
+	{ 7, 7 },
+	{ 8, 8 },
+	{ 9, 9 },
+	{ 10, 10 },
+	{ 11, 11 },
+	{ 12, 12 },
+	{ 13, 13 },
+	{ 14, 14 },
+	{ 15, 15 },
+	{ 16, 16 },
+	{ 17, 17 },
+	{ 18, 18 },
+	{ 19, 19 },
+	{ 20, 20 },
+	{ 21, 21 },
+	{ 22, 22 },
+	{ 23, 23 },
+	{ 24, 24 },
+	{ 25, 25 },
+	{ 26, 26 },
+	{ 27, 27 },
+	{ 28, 28 },
+	{ 29, 29 },
+	{ 30, 30 },
+	{ 31, 31 },
+	{ 32, 32 },
+	{ 33, 33 },
+	{ 34, 34 },
+	{ 35, 163 },
+	{ 36, 36 },
+	{ 37, 37 },
+	{ 38, 38 },
+	{ 39, 39 },
+	{ 40, 40 },
+	{ 41, 41 },
+	{ 42, 42 },
+	{ 43, 43 },
+	{ 44, 44 },
+	{ 45, 45 },
+	{ 46, 46 },
+	{ 47, 47 },
+	{ 48, 48 },
+	{ 49, 49 },
+	{ 50, 50 },
+	{ 51, 51 },
+	{ 52, 52 },
+	{ 53, 53 },
+	{ 54, 54 },
+	{ 55, 55 },
+	{ 56, 56 },
+	{ 57, 57 },
+	{ 58, 58 },
+	{ 59, 59 },
+	{ 60, 60 },
+	{ 61, 61 },
+	{ 62, 62 },
+	{ 63, 63 },
+	{ 64, 190 },
+	{ 65, 65 },
+	{ 66, 66 },
+	{ 67, 67 },
+	{ 68, 68 },
+	{ 69, 69 },
+	{ 70, 70 },
+	{ 71, 71 },
+	{ 72, 72 },
+	{ 73, 73 },
+	{ 74, 74 },
+	{ 75, 75 },
+	{ 76, 76 },
+	{ 77, 77 },
+	{ 78, 78 },
+	{ 79, 79 },
+	{ 80, 80 },
+	{ 81, 81 },
+	{ 82, 82 },
+	{ 83, 83 },
+	{ 84, 84 },
+	{ 85, 85 },
+	{ 86, 86 },
+	{ 87, 87 },
+	{ 88, 88 },
+	{ 89, 89 },
+	{ 90, 90 },
+	{ 91, 255 },
+	{ 92, 189 },
+	{ 93, 124 },
+	{ 94, 94 },
+	{ 95, 95 },
+	{ 96, 96 },
+	{ 97, 97 },
+	{ 98, 98 },
+	{ 99, 99 },
+	{ 100, 100 },
+	{ 101, 101 },
+	{ 102, 102 },
+	{ 103, 103 },
+	{ 104, 104 },
+	{ 105, 105 },
+	{ 106, 106 },
+	{ 107, 107 },
+	{ 108, 108 },
+	{ 109, 109 },
+	{ 110, 110 },
+	{ 111, 111 },
+	{ 112, 112 },
+	{ 113, 113 },
+	{ 114, 114 },
+	{ 115, 115 },
+	{ 116, 116 },
+	{ 117, 117 },
+	{ 118, 118 },
+	{ 119, 119 },
+	{ 120, 120 },
+	{ 121, 121 },
+	{ 122, 122 },
+	{ 123, 168 },
+	{ 124, 402 },
+	{ 125, 188 },
+	{ 126, 180 },
+	{ 127, 127 },
+	{ 128, 128 },
+	{ 129, 129 },
+	{ 130, 130 },
+	{ 131, 131 },
+	{ 132, 132 },
+	{ 133, 133 },
+	{ 134, 134 },
+	{ 135, 135 },
+	{ 136, 136 },
+	{ 137, 137 },
+	{ 138, 138 },
+	{ 139, 139 },
+	{ 140, 140 },
+	{ 141, 141 },
+	{ 142, 142 },
+	{ 143, 143 },
+	{ 144, 144 },
+	{ 145, 145 },
+	{ 146, 146 },
+	{ 147, 147 },
+	{ 148, 148 },
+	{ 149, 149 },
+	{ 150, 150 },
+	{ 151, 151 },
+	{ 152, 152 },
+	{ 153, 153 },
+	{ 154, 154 },
+	{ 155, 155 },
+	{ 156, 156 },
+	{ 157, 157 },
+	{ 158, 158 },
+	{ 159, 159 },
+	{ 160, 160 },
+	{ 161, 161 },
+	{ 162, 162 },
+	{ 163, 163 },
+	{ 164, 164 },
+	{ 165, 165 },
+	{ 166, 166 },
+	{ 167, 167 },
+	{ 168, 168 },
+	{ 169, 169 },
+	{ 170, 170 },
+	{ 171, 171 },
+	{ 172, 172 },
+	{ 173, 173 },
+	{ 174, 174 },
+	{ 175, 175 },
+	{ 176, 176 },
+	{ 177, 177 },
+	{ 178, 178 },
+	{ 179, 179 },
+	{ 180, 180 },
+	{ 181, 181 },
+	{ 182, 182 },
+	{ 183, 183 },
+	{ 184, 184 },
+	{ 185, 185 },
+	{ 186, 186 },
+	{ 187, 187 },
+	{ 188, 188 },
+	{ 189, 189 },
+	{ 190, 190 },
+	{ 191, 191 },
+	{ 192, 192 },
+	{ 193, 193 },
+	{ 194, 194 },
+	{ 195, 195 },
+	{ 196, 196 },
+	{ 197, 197 },
+	{ 198, 198 },
+	{ 199, 199 },
+	{ 200, 200 },
+	{ 201, 201 },
+	{ 202, 202 },
+	{ 203, 203 },
+	{ 204, 204 },
+	{ 205, 205 },
+	{ 206, 206 },
+	{ 207, 207 },
+	{ 208, 208 },
+	{ 209, 209 },
+	{ 210, 210 },
+	{ 211, 211 },
+	{ 212, 212 },
+	{ 213, 213 },
+	{ 214, 214 },
+	{ 215, 215 },
+	{ 216, 216 },
+	{ 217, 217 },
+	{ 218, 218 },
+	{ 219, 219 },
+	{ 220, 220 },
+	{ 221, 221 },
+	{ 222, 222 },
+	{ 223, 223 },
+	{ 224, 224 },
+	{ 225, 225 },
+	{ 226, 226 },
+	{ 227, 227 },
+	{ 228, 228 },
+	{ 229, 229 },
+	{ 230, 230 },
+	{ 231, 231 },
+	{ 232, 232 },
+	{ 233, 233 },
+	{ 234, 234 },
+	{ 235, 235 },
+	{ 236, 236 },
+	{ 237, 237 },
+	{ 238, 238 },
+	{ 239, 239 },
+	{ 240, 240 },
+	{ 241, 241 },
+	{ 242, 242 },
+	{ 243, 243 },
+	{ 244, 244 },
+	{ 245, 245 },
+	{ 246, 246 },
+	{ 247, 247 },
+	{ 248, 248 },
+	{ 249, 249 },
+	{ 250, 250 },
+	{ 251, 251 },
+	{ 252, 252 },
+	{ 253, 253 },
+	{ 254, 254 },
+	{ 255, 255 },
+	{ 34, 8220 },
+	{ 34, 8221 },
+	{ 39, 8216 },
+	{ 39, 8217 },
+	{ 45, 8211 },
+	{ 45, 8212 },
+	{ 32, 8194 },
+	{ 32, 8195 },
+	{ 32, 8201 },
+	{ 65, 256 },
+	{ 65, 258 },
+	{ 65, 260 },
+	{ 65, 461 },
+	{ 97, 257 },
+	{ 97, 259 },
+	{ 97, 261 },
+	{ 97, 462 },
+	{ 67, 262 },
+	{ 67, 264 },
+	{ 67, 266 },
+	{ 67, 268 },
+	{ 99, 263 },
+	{ 99, 265 },
+	{ 99, 267 },
+	{ 99, 269 },
+	{ 68, 270 },
+	{ 100, 271 },
+	{ 69, 274 },
+	{ 69, 276 },
+	{ 69, 278 },
+	{ 69, 280 },
+	{ 69, 282 },
+	{ 101, 275 },
+	{ 101, 277 },
+	{ 101, 279 },
+	{ 101, 281 },
+	{ 101, 283 },
+	{ 71, 284 },
+	{ 71, 286 },
+	{ 71, 288 },
+	{ 71, 290 },
+	{ 71, 486 },
+	{ 71, 500 },
+	{ 103, 285 },
+	{ 103, 287 },
+	{ 103, 289 },
+	{ 103, 291 },
+	{ 103, 487 },
+	{ 103, 501 },
+	{ 72, 292 },
+	{ 104, 293 },
+	{ 73, 296 },
+	{ 73, 298 },
+	{ 73, 300 },
+	{ 73, 302 },
+	{ 73, 304 },
+	{ 73, 463 },
+	{ 105, 297 },
+	{ 105, 299 },
+	{ 105, 301 },
+	{ 105, 303 },
+	{ 105, 305 },
+	{ 105, 464 },
+	{ 74, 308 },
+	{ 106, 309 },
+	{ 75, 310 },
+	{ 75, 488 },
+	{ 107, 311 },
+	{ 107, 489 },
+	{ 76, 313 },
+	{ 76, 315 },
+	{ 76, 317 },
+	{ 76, 319 },
+	{ 76, 321 },
+	{ 108, 314 },
+	{ 108, 316 },
+	{ 108, 318 },
+	{ 108, 320 },
+	{ 108, 322 },
+	{ 77, 323 },
+	{ 77, 325 },
+	{ 77, 327 },
+	{ 109, 324 },
+	{ 109, 326 },
+	{ 109, 328 },
+	{ 109, 329 },
+	{ 78, 332 },
+	{ 78, 334 },
+	{ 78, 336 },
+	{ 78, 465 },
+	{ 78, 490 },
+	{ 110, 333 },
+	{ 110, 335 },
+	{ 110, 337 },
+	{ 110, 466 },
+	{ 110, 491 },
+	{ 82, 340 },
+	{ 82, 342 },
+	{ 82, 344 },
+	{ 114, 341 },
+	{ 114, 343 },
+	{ 114, 345 },
+	{ 83, 346 },
+	{ 83, 348 },
+	{ 83, 350 },
+	{ 83, 352 },
+	{ 115, 347 },
+	{ 115, 349 },
+	{ 115, 351 },
+	{ 115, 353 },
+	{ 84, 354 },
+	{ 84, 356 },
+	{ 116, 355 },
+	{ 116, 357 },
+	{ 85, 360 },
+	{ 85, 362 },
+	{ 85, 364 },
+	{ 85, 366 },
+	{ 85, 368 },
+	{ 85, 370 },
+	{ 85, 467 },
+	{ 117, 361 },
+	{ 117, 363 },
+	{ 117, 365 },
+	{ 117, 367 },
+	{ 117, 369 },
+	{ 117, 371 },
+	{ 117, 468 },
+	{ 87, 372 },
+	{ 119, 373 },
+	{ 89, 374 },
+	{ 89, 376 },
+	{ 121, 375 },
+	{ 90, 377 },
+	{ 90, 379 },
+	{ 90, 381 },
+	{ 122, 378 },
+	{ 122, 380 },
+	{ 122, 382 },
 };
-charconvert iso646_irv[] = {
- /* 0 */ 0,/*<tdbgcolor="C0C0C0"><fontface="Arial"color="000000"><b>ISO/IEC10646-1:2000CharacterName</b></font>*/
- 1,
- 2,
- 3,
- 4,
- 5,
- 6,
- 7,
- 8,
- 9,
- 10,
- 11,
- 12,
- 13,
- 14,
- 15,
- 16,
- 17,
- 18,
- 19,
- 20,
- 21,
- 22,
- 23,
- 24,
- 25,
- 26,
- 27,
- 28,
- 29,
- 30,
- 31,
- /* 32 */ 32,/*SPACE*/
- /* 33 */ 33,/*EXCLAMATIONMARK*/
- /* 34 */ 34,/*QUOTATIONMARK*/
- /* 35 */ 35,/*NUMBERSIGN*/
- /* 36 */ 36,/*DOLLARSIGN*/
- /* 37 */ 37,/*PERCENTSIGN*/
- /* 38 */ 38,/*AMPERSAND*/
- /* 39 */ 39,/*APOSTROPHE*/
- /* 40 */ 40,/*LEFTPARENTHESIS*/
- /* 41 */ 41,/*RIGHTPARENTHESIS*/
- /* 42 */ 42,/*ASTERISK*/
- /* 43 */ 43,/*PLUSSIGN*/
- /* 44 */ 44,/*COMMA*/
- /* 45 */ 45,/*HYPHEN-MINUS*/
- /* 46 */ 46,/*FULLSTOP*/
- /* 47 */ 47,/*SOLIDUS*/
- /* 48 */ 48,/*DIGITZERO*/
- /* 49 */ 49,/*DIGITONE*/
- /* 50 */ 50,/*DIGITTWO*/
- /* 51 */ 51,/*DIGITTHREE*/
- /* 52 */ 52,/*DIGITFOUR*/
- /* 53 */ 53,/*DIGITFIVE*/
- /* 54 */ 54,/*DIGITSIX*/
- /* 55 */ 55,/*DIGITSEVEN*/
- /* 56 */ 56,/*DIGITEIGHT*/
- /* 57 */ 57,/*DIGITNINE*/
- /* 58 */ 58,/*COLON*/
- /* 59 */ 59,/*SEMICOLON*/
- /* 60 */ 60,/*LESS-THANSIGN*/
- /* 61 */ 61,/*EQUALSSIGN*/
- /* 62 */ 62,/*GREATER-THANSIGN*/
- /* 63 */ 63,/*QUESTIONMARK*/
- /* 64 */ 64,/*COMMERCIALAT*/
- /* 65 */ 65,/*LATINCAPITALLETTERA*/
- /* 66 */ 66,/*LATINCAPITALLETTERB*/
- /* 67 */ 67,/*LATINCAPITALLETTERC*/
- /* 68 */ 68,/*LATINCAPITALLETTERD*/
- /* 69 */ 69,/*LATINCAPITALLETTERE*/
- /* 70 */ 70,/*LATINCAPITALLETTERF*/
- /* 71 */ 71,/*LATINCAPITALLETTERG*/
- /* 72 */ 72,/*LATINCAPITALLETTERH*/
- /* 73 */ 73,/*LATINCAPITALLETTERI*/
- /* 74 */ 74,/*LATINCAPITALLETTERJ*/
- /* 75 */ 75,/*LATINCAPITALLETTERK*/
- /* 76 */ 76,/*LATINCAPITALLETTERL*/
- /* 77 */ 77,/*LATINCAPITALLETTERM*/
- /* 78 */ 78,/*LATINCAPITALLETTERN*/
- /* 79 */ 79,/*LATINCAPITALLETTERO*/
- /* 80 */ 80,/*LATINCAPITALLETTERP*/
- /* 81 */ 81,/*LATINCAPITALLETTERQ*/
- /* 82 */ 82,/*LATINCAPITALLETTERR*/
- /* 83 */ 83,/*LATINCAPITALLETTERS*/
- /* 84 */ 84,/*LATINCAPITALLETTERT*/
- /* 85 */ 85,/*LATINCAPITALLETTERU*/
- /* 86 */ 86,/*LATINCAPITALLETTERV*/
- /* 87 */ 87,/*LATINCAPITALLETTERW*/
- /* 88 */ 88,/*LATINCAPITALLETTERX*/
- /* 89 */ 89,/*LATINCAPITALLETTERY*/
- /* 90 */ 90,/*LATINCAPITALLETTERZ*/
- /* 91 */ 91,/*LEFTSQUAREBRACKET*/
- /* 92 */ 92,/*REVERSESOLIDUS*/
- /* 93 */ 93,/*RIGHTSQUAREBRACKET*/
- /* 94 */ 94,/*CIRCUMFLEXACCENT*/
- /* 95 */ 95,/*LOWLINE*/
- /* 96 */ 96,/*GRAVEACCENT*/
- /* 97 */ 97,/*LATINSMALLLETTERA*/
- /* 98 */ 98,/*LATINSMALLLETTERB*/
- /* 99 */ 99,/*LATINSMALLLETTERC*/
- /* 100 */ 100,/*LATINSMALLLETTERD*/
- /* 101 */ 101,/*LATINSMALLLETTERE*/
- /* 102 */ 102,/*LATINSMALLLETTERF*/
- /* 103 */ 103,/*LATINSMALLLETTERG*/
- /* 104 */ 104,/*LATINSMALLLETTERH*/
- /* 105 */ 105,/*LATINSMALLLETTERI*/
- /* 106 */ 106,/*LATINSMALLLETTERJ*/
- /* 107 */ 107,/*LATINSMALLLETTERK*/
- /* 108 */ 108,/*LATINSMALLLETTERL*/
- /* 109 */ 109,/*LATINSMALLLETTERM*/
- /* 110 */ 110,/*LATINSMALLLETTERN*/
- /* 111 */ 111,/*LATINSMALLLETTERO*/
- /* 112 */ 112,/*LATINSMALLLETTERP*/
- /* 113 */ 113,/*LATINSMALLLETTERQ*/
- /* 114 */ 114,/*LATINSMALLLETTERR*/
- /* 115 */ 115,/*LATINSMALLLETTERS*/
- /* 116 */ 116,/*LATINSMALLLETTERT*/
- /* 117 */ 117,/*LATINSMALLLETTERU*/
- /* 118 */ 118,/*LATINSMALLLETTERV*/
- /* 119 */ 119,/*LATINSMALLLETTERW*/
- /* 120 */ 120,/*LATINSMALLLETTERX*/
- /* 121 */ 121,/*LATINSMALLLETTERY*/
- /* 122 */ 122,/*LATINSMALLLETTERZ*/
- /* 123 */ 123,/*LEFTCURLYBRACKET*/
- /* 124 */ 124,/*VERTICALLINE*/
- /* 125 */ 125,/*RIGHTCURLYBRACKET*/
- /* 126 */ 126,/*TILDE*/
- 127,
- 128,
- 129,
- 130,
- 131,
- 132,
- 133,
- 134,
- 135,
- 136,
- 137,
- 138,
- 139,
- 140,
- 141,
- 142,
- 143,
- 144,
- 145,
- 146,
- 147,
- 148,
- 149,
- 150,
- 151,
- 152,
- 153,
- 154,
- 155,
- 156,
- 157,
- 158,
- 159,
- 160,
- 161,
- 162,
- 163,
- 164,
- 165,
- 166,
- 167,
- 168,
- 169,
- 170,
- 171,
- 172,
- 173,
- 174,
- 175,
- 176,
- 177,
- 178,
- 179,
- 180,
- 181,
- 182,
- 183,
- 184,
- 185,
- 186,
- 187,
- 188,
- 189,
- 190,
- 191,
- 192,
- 193,
- 194,
- 195,
- 196,
- 197,
- 198,
- 199,
- 200,
- 201,
- 202,
- 203,
- 204,
- 205,
- 206,
- 207,
- 208,
- 209,
- 210,
- 211,
- 212,
- 213,
- 214,
- 215,
- 216,
- 217,
- 218,
- 219,
- 220,
- 221,
- 222,
- 223,
- 224,
- 225,
- 226,
- 227,
- 228,
- 229,
- 230,
- 231,
- 232,
- 233,
- 234,
- 235,
- 236,
- 237,
- 238,
- 239,
- 240,
- 241,
- 242,
- 243,
- 244,
- 245,
- 246,
- 247,
- 248,
- 249,
- 250,
- 251,
- 252,
- 253,
- 254,
- 255
+static convert_t iso646_no[] = {
+	{ 0, 0 },
+	{ 1, 1 },
+	{ 2, 2 },
+	{ 3, 3 },
+	{ 4, 4 },
+	{ 5, 5 },
+	{ 6, 6 },
+	{ 7, 7 },
+	{ 8, 8 },
+	{ 9, 9 },
+	{ 10, 10 },
+	{ 11, 11 },
+	{ 12, 12 },
+	{ 13, 13 },
+	{ 14, 14 },
+	{ 15, 15 },
+	{ 16, 16 },
+	{ 17, 17 },
+	{ 18, 18 },
+	{ 19, 19 },
+	{ 20, 20 },
+	{ 21, 21 },
+	{ 22, 22 },
+	{ 23, 23 },
+	{ 24, 24 },
+	{ 25, 25 },
+	{ 26, 26 },
+	{ 27, 27 },
+	{ 28, 28 },
+	{ 29, 29 },
+	{ 30, 30 },
+	{ 31, 31 },
+	{ 32, 32 },
+	{ 33, 33 },
+	{ 34, 34 },
+	{ 35, 35 },
+	{ 36, 36 },
+	{ 37, 37 },
+	{ 38, 38 },
+	{ 39, 39 },
+	{ 40, 40 },
+	{ 41, 41 },
+	{ 42, 42 },
+	{ 43, 43 },
+	{ 44, 44 },
+	{ 45, 45 },
+	{ 46, 46 },
+	{ 47, 47 },
+	{ 48, 48 },
+	{ 49, 49 },
+	{ 50, 50 },
+	{ 51, 51 },
+	{ 52, 52 },
+	{ 53, 53 },
+	{ 54, 54 },
+	{ 55, 55 },
+	{ 56, 56 },
+	{ 57, 57 },
+	{ 58, 58 },
+	{ 59, 59 },
+	{ 60, 60 },
+	{ 61, 61 },
+	{ 62, 62 },
+	{ 63, 63 },
+	{ 64, 64 },
+	{ 65, 65 },
+	{ 66, 66 },
+	{ 67, 67 },
+	{ 68, 68 },
+	{ 69, 69 },
+	{ 70, 70 },
+	{ 71, 71 },
+	{ 72, 72 },
+	{ 73, 73 },
+	{ 74, 74 },
+	{ 75, 75 },
+	{ 76, 76 },
+	{ 77, 77 },
+	{ 78, 78 },
+	{ 79, 79 },
+	{ 80, 80 },
+	{ 81, 81 },
+	{ 82, 82 },
+	{ 83, 83 },
+	{ 84, 84 },
+	{ 85, 85 },
+	{ 86, 86 },
+	{ 87, 87 },
+	{ 88, 88 },
+	{ 89, 89 },
+	{ 90, 90 },
+	{ 91, 198 },
+	{ 92, 216 },
+	{ 93, 197 },
+	{ 94, 94 },
+	{ 95, 95 },
+	{ 96, 96 },
+	{ 97, 97 },
+	{ 98, 98 },
+	{ 99, 99 },
+	{ 100, 100 },
+	{ 101, 101 },
+	{ 102, 102 },
+	{ 103, 103 },
+	{ 104, 104 },
+	{ 105, 105 },
+	{ 106, 106 },
+	{ 107, 107 },
+	{ 108, 108 },
+	{ 109, 109 },
+	{ 110, 110 },
+	{ 111, 111 },
+	{ 112, 112 },
+	{ 113, 113 },
+	{ 114, 114 },
+	{ 115, 115 },
+	{ 116, 116 },
+	{ 117, 117 },
+	{ 118, 118 },
+	{ 119, 119 },
+	{ 120, 120 },
+	{ 121, 121 },
+	{ 122, 122 },
+	{ 123, 230 },
+	{ 124, 248 },
+	{ 125, 229 },
+	{ 126, 126 },
+	{ 127, 127 },
+	{ 128, 128 },
+	{ 129, 129 },
+	{ 130, 130 },
+	{ 131, 131 },
+	{ 132, 132 },
+	{ 133, 133 },
+	{ 134, 134 },
+	{ 135, 135 },
+	{ 136, 136 },
+	{ 137, 137 },
+	{ 138, 138 },
+	{ 139, 139 },
+	{ 140, 140 },
+	{ 141, 141 },
+	{ 142, 142 },
+	{ 143, 143 },
+	{ 144, 144 },
+	{ 145, 145 },
+	{ 146, 146 },
+	{ 147, 147 },
+	{ 148, 148 },
+	{ 149, 149 },
+	{ 150, 150 },
+	{ 151, 151 },
+	{ 152, 152 },
+	{ 153, 153 },
+	{ 154, 154 },
+	{ 155, 155 },
+	{ 156, 156 },
+	{ 157, 157 },
+	{ 158, 158 },
+	{ 159, 159 },
+	{ 160, 160 },
+	{ 161, 161 },
+	{ 162, 162 },
+	{ 163, 163 },
+	{ 164, 164 },
+	{ 165, 165 },
+	{ 166, 166 },
+	{ 167, 167 },
+	{ 168, 168 },
+	{ 169, 169 },
+	{ 170, 170 },
+	{ 171, 171 },
+	{ 172, 172 },
+	{ 173, 173 },
+	{ 174, 174 },
+	{ 175, 175 },
+	{ 176, 176 },
+	{ 177, 177 },
+	{ 178, 178 },
+	{ 179, 179 },
+	{ 180, 180 },
+	{ 181, 181 },
+	{ 182, 182 },
+	{ 183, 183 },
+	{ 184, 184 },
+	{ 185, 185 },
+	{ 186, 186 },
+	{ 187, 187 },
+	{ 188, 188 },
+	{ 189, 189 },
+	{ 190, 190 },
+	{ 191, 191 },
+	{ 192, 192 },
+	{ 193, 193 },
+	{ 194, 194 },
+	{ 195, 195 },
+	{ 196, 196 },
+	{ 197, 197 },
+	{ 198, 198 },
+	{ 199, 199 },
+	{ 200, 200 },
+	{ 201, 201 },
+	{ 202, 202 },
+	{ 203, 203 },
+	{ 204, 204 },
+	{ 205, 205 },
+	{ 206, 206 },
+	{ 207, 207 },
+	{ 208, 208 },
+	{ 209, 209 },
+	{ 210, 210 },
+	{ 211, 211 },
+	{ 212, 212 },
+	{ 213, 213 },
+	{ 214, 214 },
+	{ 215, 215 },
+	{ 216, 216 },
+	{ 217, 217 },
+	{ 218, 218 },
+	{ 219, 219 },
+	{ 220, 220 },
+	{ 221, 221 },
+	{ 222, 222 },
+	{ 223, 223 },
+	{ 224, 224 },
+	{ 225, 225 },
+	{ 226, 226 },
+	{ 227, 227 },
+	{ 228, 228 },
+	{ 229, 229 },
+	{ 230, 230 },
+	{ 231, 231 },
+	{ 232, 232 },
+	{ 233, 233 },
+	{ 234, 234 },
+	{ 235, 235 },
+	{ 236, 236 },
+	{ 237, 237 },
+	{ 238, 238 },
+	{ 239, 239 },
+	{ 240, 240 },
+	{ 241, 241 },
+	{ 242, 242 },
+	{ 243, 243 },
+	{ 244, 244 },
+	{ 245, 245 },
+	{ 246, 246 },
+	{ 247, 247 },
+	{ 248, 248 },
+	{ 249, 249 },
+	{ 250, 250 },
+	{ 251, 251 },
+	{ 252, 252 },
+	{ 253, 253 },
+	{ 254, 254 },
+	{ 255, 255 },
+	{ 34, 8220 },
+	{ 34, 8221 },
+	{ 39, 8216 },
+	{ 39, 8217 },
+	{ 45, 8211 },
+	{ 45, 8212 },
+	{ 32, 8194 },
+	{ 32, 8195 },
+	{ 32, 8201 },
+	{ 65, 256 },
+	{ 65, 258 },
+	{ 65, 260 },
+	{ 65, 461 },
+	{ 97, 257 },
+	{ 97, 259 },
+	{ 97, 261 },
+	{ 97, 462 },
+	{ 67, 262 },
+	{ 67, 264 },
+	{ 67, 266 },
+	{ 67, 268 },
+	{ 99, 263 },
+	{ 99, 265 },
+	{ 99, 267 },
+	{ 99, 269 },
+	{ 68, 270 },
+	{ 100, 271 },
+	{ 69, 274 },
+	{ 69, 276 },
+	{ 69, 278 },
+	{ 69, 280 },
+	{ 69, 282 },
+	{ 101, 275 },
+	{ 101, 277 },
+	{ 101, 279 },
+	{ 101, 281 },
+	{ 101, 283 },
+	{ 71, 284 },
+	{ 71, 286 },
+	{ 71, 288 },
+	{ 71, 290 },
+	{ 71, 486 },
+	{ 71, 500 },
+	{ 103, 285 },
+	{ 103, 287 },
+	{ 103, 289 },
+	{ 103, 291 },
+	{ 103, 487 },
+	{ 103, 501 },
+	{ 72, 292 },
+	{ 104, 293 },
+	{ 73, 296 },
+	{ 73, 298 },
+	{ 73, 300 },
+	{ 73, 302 },
+	{ 73, 304 },
+	{ 73, 463 },
+	{ 105, 297 },
+	{ 105, 299 },
+	{ 105, 301 },
+	{ 105, 303 },
+	{ 105, 305 },
+	{ 105, 464 },
+	{ 74, 308 },
+	{ 106, 309 },
+	{ 75, 310 },
+	{ 75, 488 },
+	{ 107, 311 },
+	{ 107, 489 },
+	{ 76, 313 },
+	{ 76, 315 },
+	{ 76, 317 },
+	{ 76, 319 },
+	{ 76, 321 },
+	{ 108, 314 },
+	{ 108, 316 },
+	{ 108, 318 },
+	{ 108, 320 },
+	{ 108, 322 },
+	{ 77, 323 },
+	{ 77, 325 },
+	{ 77, 327 },
+	{ 109, 324 },
+	{ 109, 326 },
+	{ 109, 328 },
+	{ 109, 329 },
+	{ 78, 332 },
+	{ 78, 334 },
+	{ 78, 336 },
+	{ 78, 465 },
+	{ 78, 490 },
+	{ 110, 333 },
+	{ 110, 335 },
+	{ 110, 337 },
+	{ 110, 466 },
+	{ 110, 491 },
+	{ 82, 340 },
+	{ 82, 342 },
+	{ 82, 344 },
+	{ 114, 341 },
+	{ 114, 343 },
+	{ 114, 345 },
+	{ 83, 346 },
+	{ 83, 348 },
+	{ 83, 350 },
+	{ 83, 352 },
+	{ 115, 347 },
+	{ 115, 349 },
+	{ 115, 351 },
+	{ 115, 353 },
+	{ 84, 354 },
+	{ 84, 356 },
+	{ 116, 355 },
+	{ 116, 357 },
+	{ 85, 360 },
+	{ 85, 362 },
+	{ 85, 364 },
+	{ 85, 366 },
+	{ 85, 368 },
+	{ 85, 370 },
+	{ 85, 467 },
+	{ 117, 361 },
+	{ 117, 363 },
+	{ 117, 365 },
+	{ 117, 367 },
+	{ 117, 369 },
+	{ 117, 371 },
+	{ 117, 468 },
+	{ 87, 372 },
+	{ 119, 373 },
+	{ 89, 374 },
+	{ 89, 376 },
+	{ 121, 375 },
+	{ 90, 377 },
+	{ 90, 379 },
+	{ 90, 381 },
+	{ 122, 378 },
+	{ 122, 380 },
+	{ 122, 382 },
 };
-charconvert iso646_it[] = {
- /* 0 */ 0,/*<tdbgcolor="C0C0C0"><fontface="Arial"color="000000"><b>ISO/IEC10646-1:2000CharacterName</b></font>*/
- 1,
- 2,
- 3,
- 4,
- 5,
- 6,
- 7,
- 8,
- 9,
- 10,
- 11,
- 12,
- 13,
- 14,
- 15,
- 16,
- 17,
- 18,
- 19,
- 20,
- 21,
- 22,
- 23,
- 24,
- 25,
- 26,
- 27,
- 28,
- 29,
- 30,
- 31,
- /* 32 */ 32,/*SPACE*/
- /* 33 */ 33,/*EXCLAMATIONMARK*/
- /* 34 */ 34,/*QUOTATIONMARK*/
- /* 35 */ 163,/*POUNDSIGN*/
- /* 36 */ 36,/*DOLLARSIGN*/
- /* 37 */ 37,/*PERCENTSIGN*/
- /* 38 */ 38,/*AMPERSAND*/
- /* 39 */ 39,/*APOSTROPHE*/
- /* 40 */ 40,/*LEFTPARENTHESIS*/
- /* 41 */ 41,/*RIGHTPARENTHESIS*/
- /* 42 */ 42,/*ASTERISK*/
- /* 43 */ 43,/*PLUSSIGN*/
- /* 44 */ 44,/*COMMA*/
- /* 45 */ 45,/*HYPHEN-MINUS*/
- /* 46 */ 46,/*FULLSTOP*/
- /* 47 */ 47,/*SOLIDUS*/
- /* 48 */ 48,/*DIGITZERO*/
- /* 49 */ 49,/*DIGITONE*/
- /* 50 */ 50,/*DIGITTWO*/
- /* 51 */ 51,/*DIGITTHREE*/
- /* 52 */ 52,/*DIGITFOUR*/
- /* 53 */ 53,/*DIGITFIVE*/
- /* 54 */ 54,/*DIGITSIX*/
- /* 55 */ 55,/*DIGITSEVEN*/
- /* 56 */ 56,/*DIGITEIGHT*/
- /* 57 */ 57,/*DIGITNINE*/
- /* 58 */ 58,/*COLON*/
- /* 59 */ 59,/*SEMICOLON*/
- /* 60 */ 60,/*LESS-THANSIGN*/
- /* 61 */ 61,/*EQUALSSIGN*/
- /* 62 */ 62,/*GREATER-THANSIGN*/
- /* 63 */ 63,/*QUESTIONMARK*/
- /* 64 */ 167,/*SECTIONSIGN*/
- /* 65 */ 65,/*LATINCAPITALLETTERA*/
- /* 66 */ 66,/*LATINCAPITALLETTERB*/
- /* 67 */ 67,/*LATINCAPITALLETTERC*/
- /* 68 */ 68,/*LATINCAPITALLETTERD*/
- /* 69 */ 69,/*LATINCAPITALLETTERE*/
- /* 70 */ 70,/*LATINCAPITALLETTERF*/
- /* 71 */ 71,/*LATINCAPITALLETTERG*/
- /* 72 */ 72,/*LATINCAPITALLETTERH*/
- /* 73 */ 73,/*LATINCAPITALLETTERI*/
- /* 74 */ 74,/*LATINCAPITALLETTERJ*/
- /* 75 */ 75,/*LATINCAPITALLETTERK*/
- /* 76 */ 76,/*LATINCAPITALLETTERL*/
- /* 77 */ 77,/*LATINCAPITALLETTERM*/
- /* 78 */ 78,/*LATINCAPITALLETTERN*/
- /* 79 */ 79,/*LATINCAPITALLETTERO*/
- /* 80 */ 80,/*LATINCAPITALLETTERP*/
- /* 81 */ 81,/*LATINCAPITALLETTERQ*/
- /* 82 */ 82,/*LATINCAPITALLETTERR*/
- /* 83 */ 83,/*LATINCAPITALLETTERS*/
- /* 84 */ 84,/*LATINCAPITALLETTERT*/
- /* 85 */ 85,/*LATINCAPITALLETTERU*/
- /* 86 */ 86,/*LATINCAPITALLETTERV*/
- /* 87 */ 87,/*LATINCAPITALLETTERW*/
- /* 88 */ 88,/*LATINCAPITALLETTERX*/
- /* 89 */ 89,/*LATINCAPITALLETTERY*/
- /* 90 */ 90,/*LATINCAPITALLETTERZ*/
- /* 91 */ 176,/*DEGREESIGN*/
- /* 92 */ 231,/*LATINSMALLLETTERCWITHCEDILLA*/
- /* 93 */ 233,/*LATINSMALLLETTEREWITHACUTE*/
- /* 94 */ 94,/*CIRCUMFLEXACCENT*/
- /* 95 */ 95,/*LOWLINE*/
- /* 96 */ 249,/*LATINSMALLLETTERUWITHGRAVE*/
- /* 97 */ 97,/*LATINSMALLLETTERA*/
- /* 98 */ 98,/*LATINSMALLLETTERB*/
- /* 99 */ 99,/*LATINSMALLLETTERC*/
- /* 100 */ 100,/*LATINSMALLLETTERD*/
- /* 101 */ 101,/*LATINSMALLLETTERE*/
- /* 102 */ 102,/*LATINSMALLLETTERF*/
- /* 103 */ 103,/*LATINSMALLLETTERG*/
- /* 104 */ 104,/*LATINSMALLLETTERH*/
- /* 105 */ 105,/*LATINSMALLLETTERI*/
- /* 106 */ 106,/*LATINSMALLLETTERJ*/
- /* 107 */ 107,/*LATINSMALLLETTERK*/
- /* 108 */ 108,/*LATINSMALLLETTERL*/
- /* 109 */ 109,/*LATINSMALLLETTERM*/
- /* 110 */ 110,/*LATINSMALLLETTERN*/
- /* 111 */ 111,/*LATINSMALLLETTERO*/
- /* 112 */ 112,/*LATINSMALLLETTERP*/
- /* 113 */ 113,/*LATINSMALLLETTERQ*/
- /* 114 */ 114,/*LATINSMALLLETTERR*/
- /* 115 */ 115,/*LATINSMALLLETTERS*/
- /* 116 */ 116,/*LATINSMALLLETTERT*/
- /* 117 */ 117,/*LATINSMALLLETTERU*/
- /* 118 */ 118,/*LATINSMALLLETTERV*/
- /* 119 */ 119,/*LATINSMALLLETTERW*/
- /* 120 */ 120,/*LATINSMALLLETTERX*/
- /* 121 */ 121,/*LATINSMALLLETTERY*/
- /* 122 */ 122,/*LATINSMALLLETTERZ*/
- /* 123 */ 224,/*LATINSMALLLETTERAWITHGRAVE*/
- /* 124 */ 242,/*LATINSMALLLETTEROWITHGRAVE*/
- /* 125 */ 232,/*LATINSMALLLETTEREWITHGRAVE*/
- /* 126 */ 236,/*LATINSMALLLETTERIWITHGRAVE*/
- 127,
- 128,
- 129,
- 130,
- 131,
- 132,
- 133,
- 134,
- 135,
- 136,
- 137,
- 138,
- 139,
- 140,
- 141,
- 142,
- 143,
- 144,
- 145,
- 146,
- 147,
- 148,
- 149,
- 150,
- 151,
- 152,
- 153,
- 154,
- 155,
- 156,
- 157,
- 158,
- 159,
- 160,
- 161,
- 162,
- 163,
- 164,
- 165,
- 166,
- 167,
- 168,
- 169,
- 170,
- 171,
- 172,
- 173,
- 174,
- 175,
- 176,
- 177,
- 178,
- 179,
- 180,
- 181,
- 182,
- 183,
- 184,
- 185,
- 186,
- 187,
- 188,
- 189,
- 190,
- 191,
- 192,
- 193,
- 194,
- 195,
- 196,
- 197,
- 198,
- 199,
- 200,
- 201,
- 202,
- 203,
- 204,
- 205,
- 206,
- 207,
- 208,
- 209,
- 210,
- 211,
- 212,
- 213,
- 214,
- 215,
- 216,
- 217,
- 218,
- 219,
- 220,
- 221,
- 222,
- 223,
- 224,
- 225,
- 226,
- 227,
- 228,
- 229,
- 230,
- 231,
- 232,
- 233,
- 234,
- 235,
- 236,
- 237,
- 238,
- 239,
- 240,
- 241,
- 242,
- 243,
- 244,
- 245,
- 246,
- 247,
- 248,
- 249,
- 250,
- 251,
- 252,
- 253,
- 254,
- 255
+static convert_t iso646_pt[] = {
+	{ 0, 0 },
+	{ 1, 1 },
+	{ 2, 2 },
+	{ 3, 3 },
+	{ 4, 4 },
+	{ 5, 5 },
+	{ 6, 6 },
+	{ 7, 7 },
+	{ 8, 8 },
+	{ 9, 9 },
+	{ 10, 10 },
+	{ 11, 11 },
+	{ 12, 12 },
+	{ 13, 13 },
+	{ 14, 14 },
+	{ 15, 15 },
+	{ 16, 16 },
+	{ 17, 17 },
+	{ 18, 18 },
+	{ 19, 19 },
+	{ 20, 20 },
+	{ 21, 21 },
+	{ 22, 22 },
+	{ 23, 23 },
+	{ 24, 24 },
+	{ 25, 25 },
+	{ 26, 26 },
+	{ 27, 27 },
+	{ 28, 28 },
+	{ 29, 29 },
+	{ 30, 30 },
+	{ 31, 31 },
+	{ 32, 32 },
+	{ 33, 33 },
+	{ 34, 34 },
+	{ 35, 35 },
+	{ 36, 36 },
+	{ 37, 37 },
+	{ 38, 38 },
+	{ 39, 39 },
+	{ 40, 40 },
+	{ 41, 41 },
+	{ 42, 42 },
+	{ 43, 43 },
+	{ 44, 44 },
+	{ 45, 45 },
+	{ 46, 46 },
+	{ 47, 47 },
+	{ 48, 48 },
+	{ 49, 49 },
+	{ 50, 50 },
+	{ 51, 51 },
+	{ 52, 52 },
+	{ 53, 53 },
+	{ 54, 54 },
+	{ 55, 55 },
+	{ 56, 56 },
+	{ 57, 57 },
+	{ 58, 58 },
+	{ 59, 59 },
+	{ 60, 60 },
+	{ 61, 61 },
+	{ 62, 62 },
+	{ 63, 63 },
+	{ 64, 64 },
+	{ 65, 65 },
+	{ 66, 66 },
+	{ 67, 67 },
+	{ 68, 68 },
+	{ 69, 69 },
+	{ 70, 70 },
+	{ 71, 71 },
+	{ 72, 72 },
+	{ 73, 73 },
+	{ 74, 74 },
+	{ 75, 75 },
+	{ 76, 76 },
+	{ 77, 77 },
+	{ 78, 78 },
+	{ 79, 79 },
+	{ 80, 80 },
+	{ 81, 81 },
+	{ 82, 82 },
+	{ 83, 83 },
+	{ 84, 84 },
+	{ 85, 85 },
+	{ 86, 86 },
+	{ 87, 87 },
+	{ 88, 88 },
+	{ 89, 89 },
+	{ 90, 90 },
+	{ 91, 195 },
+	{ 92, 199 },
+	{ 93, 213 },
+	{ 94, 94 },
+	{ 95, 95 },
+	{ 96, 96 },
+	{ 97, 97 },
+	{ 98, 98 },
+	{ 99, 99 },
+	{ 100, 100 },
+	{ 101, 101 },
+	{ 102, 102 },
+	{ 103, 103 },
+	{ 104, 104 },
+	{ 105, 105 },
+	{ 106, 106 },
+	{ 107, 107 },
+	{ 108, 108 },
+	{ 109, 109 },
+	{ 110, 110 },
+	{ 111, 111 },
+	{ 112, 112 },
+	{ 113, 113 },
+	{ 114, 114 },
+	{ 115, 115 },
+	{ 116, 116 },
+	{ 117, 117 },
+	{ 118, 118 },
+	{ 119, 119 },
+	{ 120, 120 },
+	{ 121, 121 },
+	{ 122, 122 },
+	{ 123, 227 },
+	{ 124, 231 },
+	{ 125, 245 },
+	{ 126, 126 },
+	{ 127, 127 },
+	{ 128, 128 },
+	{ 129, 129 },
+	{ 130, 130 },
+	{ 131, 131 },
+	{ 132, 132 },
+	{ 133, 133 },
+	{ 134, 134 },
+	{ 135, 135 },
+	{ 136, 136 },
+	{ 137, 137 },
+	{ 138, 138 },
+	{ 139, 139 },
+	{ 140, 140 },
+	{ 141, 141 },
+	{ 142, 142 },
+	{ 143, 143 },
+	{ 144, 144 },
+	{ 145, 145 },
+	{ 146, 146 },
+	{ 147, 147 },
+	{ 148, 148 },
+	{ 149, 149 },
+	{ 150, 150 },
+	{ 151, 151 },
+	{ 152, 152 },
+	{ 153, 153 },
+	{ 154, 154 },
+	{ 155, 155 },
+	{ 156, 156 },
+	{ 157, 157 },
+	{ 158, 158 },
+	{ 159, 159 },
+	{ 160, 160 },
+	{ 161, 161 },
+	{ 162, 162 },
+	{ 163, 163 },
+	{ 164, 164 },
+	{ 165, 165 },
+	{ 166, 166 },
+	{ 167, 167 },
+	{ 168, 168 },
+	{ 169, 169 },
+	{ 170, 170 },
+	{ 171, 171 },
+	{ 172, 172 },
+	{ 173, 173 },
+	{ 174, 174 },
+	{ 175, 175 },
+	{ 176, 176 },
+	{ 177, 177 },
+	{ 178, 178 },
+	{ 179, 179 },
+	{ 180, 180 },
+	{ 181, 181 },
+	{ 182, 182 },
+	{ 183, 183 },
+	{ 184, 184 },
+	{ 185, 185 },
+	{ 186, 186 },
+	{ 187, 187 },
+	{ 188, 188 },
+	{ 189, 189 },
+	{ 190, 190 },
+	{ 191, 191 },
+	{ 192, 192 },
+	{ 193, 193 },
+	{ 194, 194 },
+	{ 195, 195 },
+	{ 196, 196 },
+	{ 197, 197 },
+	{ 198, 198 },
+	{ 199, 199 },
+	{ 200, 200 },
+	{ 201, 201 },
+	{ 202, 202 },
+	{ 203, 203 },
+	{ 204, 204 },
+	{ 205, 205 },
+	{ 206, 206 },
+	{ 207, 207 },
+	{ 208, 208 },
+	{ 209, 209 },
+	{ 210, 210 },
+	{ 211, 211 },
+	{ 212, 212 },
+	{ 213, 213 },
+	{ 214, 214 },
+	{ 215, 215 },
+	{ 216, 216 },
+	{ 217, 217 },
+	{ 218, 218 },
+	{ 219, 219 },
+	{ 220, 220 },
+	{ 221, 221 },
+	{ 222, 222 },
+	{ 223, 223 },
+	{ 224, 224 },
+	{ 225, 225 },
+	{ 226, 226 },
+	{ 227, 227 },
+	{ 228, 228 },
+	{ 229, 229 },
+	{ 230, 230 },
+	{ 231, 231 },
+	{ 232, 232 },
+	{ 233, 233 },
+	{ 234, 234 },
+	{ 235, 235 },
+	{ 236, 236 },
+	{ 237, 237 },
+	{ 238, 238 },
+	{ 239, 239 },
+	{ 240, 240 },
+	{ 241, 241 },
+	{ 242, 242 },
+	{ 243, 243 },
+	{ 244, 244 },
+	{ 245, 245 },
+	{ 246, 246 },
+	{ 247, 247 },
+	{ 248, 248 },
+	{ 249, 249 },
+	{ 250, 250 },
+	{ 251, 251 },
+	{ 252, 252 },
+	{ 253, 253 },
+	{ 254, 254 },
+	{ 255, 255 },
+	{ 34, 8220 },
+	{ 34, 8221 },
+	{ 39, 8216 },
+	{ 39, 8217 },
+	{ 45, 8211 },
+	{ 45, 8212 },
+	{ 32, 8194 },
+	{ 32, 8195 },
+	{ 32, 8201 },
+	{ 65, 256 },
+	{ 65, 258 },
+	{ 65, 260 },
+	{ 65, 461 },
+	{ 97, 257 },
+	{ 97, 259 },
+	{ 97, 261 },
+	{ 97, 462 },
+	{ 67, 262 },
+	{ 67, 264 },
+	{ 67, 266 },
+	{ 67, 268 },
+	{ 99, 263 },
+	{ 99, 265 },
+	{ 99, 267 },
+	{ 99, 269 },
+	{ 68, 270 },
+	{ 100, 271 },
+	{ 69, 274 },
+	{ 69, 276 },
+	{ 69, 278 },
+	{ 69, 280 },
+	{ 69, 282 },
+	{ 101, 275 },
+	{ 101, 277 },
+	{ 101, 279 },
+	{ 101, 281 },
+	{ 101, 283 },
+	{ 71, 284 },
+	{ 71, 286 },
+	{ 71, 288 },
+	{ 71, 290 },
+	{ 71, 486 },
+	{ 71, 500 },
+	{ 103, 285 },
+	{ 103, 287 },
+	{ 103, 289 },
+	{ 103, 291 },
+	{ 103, 487 },
+	{ 103, 501 },
+	{ 72, 292 },
+	{ 104, 293 },
+	{ 73, 296 },
+	{ 73, 298 },
+	{ 73, 300 },
+	{ 73, 302 },
+	{ 73, 304 },
+	{ 73, 463 },
+	{ 105, 297 },
+	{ 105, 299 },
+	{ 105, 301 },
+	{ 105, 303 },
+	{ 105, 305 },
+	{ 105, 464 },
+	{ 74, 308 },
+	{ 106, 309 },
+	{ 75, 310 },
+	{ 75, 488 },
+	{ 107, 311 },
+	{ 107, 489 },
+	{ 76, 313 },
+	{ 76, 315 },
+	{ 76, 317 },
+	{ 76, 319 },
+	{ 76, 321 },
+	{ 108, 314 },
+	{ 108, 316 },
+	{ 108, 318 },
+	{ 108, 320 },
+	{ 108, 322 },
+	{ 77, 323 },
+	{ 77, 325 },
+	{ 77, 327 },
+	{ 109, 324 },
+	{ 109, 326 },
+	{ 109, 328 },
+	{ 109, 329 },
+	{ 78, 332 },
+	{ 78, 334 },
+	{ 78, 336 },
+	{ 78, 465 },
+	{ 78, 490 },
+	{ 110, 333 },
+	{ 110, 335 },
+	{ 110, 337 },
+	{ 110, 466 },
+	{ 110, 491 },
+	{ 82, 340 },
+	{ 82, 342 },
+	{ 82, 344 },
+	{ 114, 341 },
+	{ 114, 343 },
+	{ 114, 345 },
+	{ 83, 346 },
+	{ 83, 348 },
+	{ 83, 350 },
+	{ 83, 352 },
+	{ 115, 347 },
+	{ 115, 349 },
+	{ 115, 351 },
+	{ 115, 353 },
+	{ 84, 354 },
+	{ 84, 356 },
+	{ 116, 355 },
+	{ 116, 357 },
+	{ 85, 360 },
+	{ 85, 362 },
+	{ 85, 364 },
+	{ 85, 366 },
+	{ 85, 368 },
+	{ 85, 370 },
+	{ 85, 467 },
+	{ 117, 361 },
+	{ 117, 363 },
+	{ 117, 365 },
+	{ 117, 367 },
+	{ 117, 369 },
+	{ 117, 371 },
+	{ 117, 468 },
+	{ 87, 372 },
+	{ 119, 373 },
+	{ 89, 374 },
+	{ 89, 376 },
+	{ 121, 375 },
+	{ 90, 377 },
+	{ 90, 379 },
+	{ 90, 381 },
+	{ 122, 378 },
+	{ 122, 380 },
+	{ 122, 382 },
 };
-charconvert iso646_nl[] = {
- /* 0 */ 0,/*<tdbgcolor="C0C0C0"><fontface="Arial"color="000000"><b>ISO/IEC10646-1:2000CharacterName</b></font>*/
- 1,
- 2,
- 3,
- 4,
- 5,
- 6,
- 7,
- 8,
- 9,
- 10,
- 11,
- 12,
- 13,
- 14,
- 15,
- 16,
- 17,
- 18,
- 19,
- 20,
- 21,
- 22,
- 23,
- 24,
- 25,
- 26,
- 27,
- 28,
- 29,
- 30,
- 31,
- /* 32 */ 32,/*SPACE*/
- /* 33 */ 33,/*EXCLAMATIONMARK*/
- /* 34 */ 34,/*QUOTATIONMARK*/
- /* 35 */ 163,/*POUNDSIGN*/
- /* 36 */ 36,/*DOLLARSIGN*/
- /* 37 */ 37,/*PERCENTSIGN*/
- /* 38 */ 38,/*AMPERSAND*/
- /* 39 */ 39,/*APOSTROPHE*/
- /* 40 */ 40,/*LEFTPARENTHESIS*/
- /* 41 */ 41,/*RIGHTPARENTHESIS*/
- /* 42 */ 42,/*ASTERISK*/
- /* 43 */ 43,/*PLUSSIGN*/
- /* 44 */ 44,/*COMMA*/
- /* 45 */ 45,/*HYPHEN-MINUS*/
- /* 46 */ 46,/*FULLSTOP*/
- /* 47 */ 47,/*SOLIDUS*/
- /* 48 */ 48,/*DIGITZERO*/
- /* 49 */ 49,/*DIGITONE*/
- /* 50 */ 50,/*DIGITTWO*/
- /* 51 */ 51,/*DIGITTHREE*/
- /* 52 */ 52,/*DIGITFOUR*/
- /* 53 */ 53,/*DIGITFIVE*/
- /* 54 */ 54,/*DIGITSIX*/
- /* 55 */ 55,/*DIGITSEVEN*/
- /* 56 */ 56,/*DIGITEIGHT*/
- /* 57 */ 57,/*DIGITNINE*/
- /* 58 */ 58,/*COLON*/
- /* 59 */ 59,/*SEMICOLON*/
- /* 60 */ 60,/*LESS-THANSIGN*/
- /* 61 */ 61,/*EQUALSSIGN*/
- /* 62 */ 62,/*GREATER-THANSIGN*/
- /* 63 */ 63,/*QUESTIONMARK*/
- /* 64 */ 190,/*VULGARFRACTIONTHREEQUARTERS*/
- /* 65 */ 65,/*LATINCAPITALLETTERA*/
- /* 66 */ 66,/*LATINCAPITALLETTERB*/
- /* 67 */ 67,/*LATINCAPITALLETTERC*/
- /* 68 */ 68,/*LATINCAPITALLETTERD*/
- /* 69 */ 69,/*LATINCAPITALLETTERE*/
- /* 70 */ 70,/*LATINCAPITALLETTERF*/
- /* 71 */ 71,/*LATINCAPITALLETTERG*/
- /* 72 */ 72,/*LATINCAPITALLETTERH*/
- /* 73 */ 73,/*LATINCAPITALLETTERI*/
- /* 74 */ 74,/*LATINCAPITALLETTERJ*/
- /* 75 */ 75,/*LATINCAPITALLETTERK*/
- /* 76 */ 76,/*LATINCAPITALLETTERL*/
- /* 77 */ 77,/*LATINCAPITALLETTERM*/
- /* 78 */ 78,/*LATINCAPITALLETTERN*/
- /* 79 */ 79,/*LATINCAPITALLETTERO*/
- /* 80 */ 80,/*LATINCAPITALLETTERP*/
- /* 81 */ 81,/*LATINCAPITALLETTERQ*/
- /* 82 */ 82,/*LATINCAPITALLETTERR*/
- /* 83 */ 83,/*LATINCAPITALLETTERS*/
- /* 84 */ 84,/*LATINCAPITALLETTERT*/
- /* 85 */ 85,/*LATINCAPITALLETTERU*/
- /* 86 */ 86,/*LATINCAPITALLETTERV*/
- /* 87 */ 87,/*LATINCAPITALLETTERW*/
- /* 88 */ 88,/*LATINCAPITALLETTERX*/
- /* 89 */ 89,/*LATINCAPITALLETTERY*/
- /* 90 */ 90,/*LATINCAPITALLETTERZ*/
- /* 91 */ 255,/*LATINSMALLLETTERYWITHDIAERESIS*/
- /* 92 */ 189,/*VULGARFRACTIONONEHALF*/
- /* 93 */ 124,/*VERTICALLINE*/
- /* 94 */ 94,/*CIRCUMFLEXACCENT*/
- /* 95 */ 95,/*LOWLINE*/
- /* 96 */ 96,/*GRAVEACCENT*/
- /* 97 */ 97,/*LATINSMALLLETTERA*/
- /* 98 */ 98,/*LATINSMALLLETTERB*/
- /* 99 */ 99,/*LATINSMALLLETTERC*/
- /* 100 */ 100,/*LATINSMALLLETTERD*/
- /* 101 */ 101,/*LATINSMALLLETTERE*/
- /* 102 */ 102,/*LATINSMALLLETTERF*/
- /* 103 */ 103,/*LATINSMALLLETTERG*/
- /* 104 */ 104,/*LATINSMALLLETTERH*/
- /* 105 */ 105,/*LATINSMALLLETTERI*/
- /* 106 */ 106,/*LATINSMALLLETTERJ*/
- /* 107 */ 107,/*LATINSMALLLETTERK*/
- /* 108 */ 108,/*LATINSMALLLETTERL*/
- /* 109 */ 109,/*LATINSMALLLETTERM*/
- /* 110 */ 110,/*LATINSMALLLETTERN*/
- /* 111 */ 111,/*LATINSMALLLETTERO*/
- /* 112 */ 112,/*LATINSMALLLETTERP*/
- /* 113 */ 113,/*LATINSMALLLETTERQ*/
- /* 114 */ 114,/*LATINSMALLLETTERR*/
- /* 115 */ 115,/*LATINSMALLLETTERS*/
- /* 116 */ 116,/*LATINSMALLLETTERT*/
- /* 117 */ 117,/*LATINSMALLLETTERU*/
- /* 118 */ 118,/*LATINSMALLLETTERV*/
- /* 119 */ 119,/*LATINSMALLLETTERW*/
- /* 120 */ 120,/*LATINSMALLLETTERX*/
- /* 121 */ 121,/*LATINSMALLLETTERY*/
- /* 122 */ 122,/*LATINSMALLLETTERZ*/
- /* 123 */ 168,/*DIAERESIS*/
- /* 124 */ 402,/*LATINSMALLLETTERFWITHHOOK*/
- /* 125 */ 188,/*VULGARFRACTIONONEQUARTER*/
- /* 126 */ 180,/*ACUTEACCENT*/
- 127,
- 128,
- 129,
- 130,
- 131,
- 132,
- 133,
- 134,
- 135,
- 136,
- 137,
- 138,
- 139,
- 140,
- 141,
- 142,
- 143,
- 144,
- 145,
- 146,
- 147,
- 148,
- 149,
- 150,
- 151,
- 152,
- 153,
- 154,
- 155,
- 156,
- 157,
- 158,
- 159,
- 160,
- 161,
- 162,
- 163,
- 164,
- 165,
- 166,
- 167,
- 168,
- 169,
- 170,
- 171,
- 172,
- 173,
- 174,
- 175,
- 176,
- 177,
- 178,
- 179,
- 180,
- 181,
- 182,
- 183,
- 184,
- 185,
- 186,
- 187,
- 188,
- 189,
- 190,
- 191,
- 192,
- 193,
- 194,
- 195,
- 196,
- 197,
- 198,
- 199,
- 200,
- 201,
- 202,
- 203,
- 204,
- 205,
- 206,
- 207,
- 208,
- 209,
- 210,
- 211,
- 212,
- 213,
- 214,
- 215,
- 216,
- 217,
- 218,
- 219,
- 220,
- 221,
- 222,
- 223,
- 224,
- 225,
- 226,
- 227,
- 228,
- 229,
- 230,
- 231,
- 232,
- 233,
- 234,
- 235,
- 236,
- 237,
- 238,
- 239,
- 240,
- 241,
- 242,
- 243,
- 244,
- 245,
- 246,
- 247,
- 248,
- 249,
- 250,
- 251,
- 252,
- 253,
- 254,
- 255
+static convert_t iso646_se[] = {
+	{ 0, 0 },
+	{ 1, 1 },
+	{ 2, 2 },
+	{ 3, 3 },
+	{ 4, 4 },
+	{ 5, 5 },
+	{ 6, 6 },
+	{ 7, 7 },
+	{ 8, 8 },
+	{ 9, 9 },
+	{ 10, 10 },
+	{ 11, 11 },
+	{ 12, 12 },
+	{ 13, 13 },
+	{ 14, 14 },
+	{ 15, 15 },
+	{ 16, 16 },
+	{ 17, 17 },
+	{ 18, 18 },
+	{ 19, 19 },
+	{ 20, 20 },
+	{ 21, 21 },
+	{ 22, 22 },
+	{ 23, 23 },
+	{ 24, 24 },
+	{ 25, 25 },
+	{ 26, 26 },
+	{ 27, 27 },
+	{ 28, 28 },
+	{ 29, 29 },
+	{ 30, 30 },
+	{ 31, 31 },
+	{ 32, 32 },
+	{ 33, 33 },
+	{ 34, 34 },
+	{ 35, 35 },
+	{ 36, 36 },
+	{ 37, 37 },
+	{ 38, 38 },
+	{ 39, 39 },
+	{ 40, 40 },
+	{ 41, 41 },
+	{ 42, 42 },
+	{ 43, 43 },
+	{ 44, 44 },
+	{ 45, 45 },
+	{ 46, 46 },
+	{ 47, 47 },
+	{ 48, 48 },
+	{ 49, 49 },
+	{ 50, 50 },
+	{ 51, 51 },
+	{ 52, 52 },
+	{ 53, 53 },
+	{ 54, 54 },
+	{ 55, 55 },
+	{ 56, 56 },
+	{ 57, 57 },
+	{ 58, 58 },
+	{ 59, 59 },
+	{ 60, 60 },
+	{ 61, 61 },
+	{ 62, 62 },
+	{ 63, 63 },
+	{ 64, 201 },
+	{ 65, 65 },
+	{ 66, 66 },
+	{ 67, 67 },
+	{ 68, 68 },
+	{ 69, 69 },
+	{ 70, 70 },
+	{ 71, 71 },
+	{ 72, 72 },
+	{ 73, 73 },
+	{ 74, 74 },
+	{ 75, 75 },
+	{ 76, 76 },
+	{ 77, 77 },
+	{ 78, 78 },
+	{ 79, 79 },
+	{ 80, 80 },
+	{ 81, 81 },
+	{ 82, 82 },
+	{ 83, 83 },
+	{ 84, 84 },
+	{ 85, 85 },
+	{ 86, 86 },
+	{ 87, 87 },
+	{ 88, 88 },
+	{ 89, 89 },
+	{ 90, 90 },
+	{ 91, 196 },
+	{ 92, 214 },
+	{ 93, 197 },
+	{ 94, 220 },
+	{ 95, 95 },
+	{ 96, 233 },
+	{ 97, 97 },
+	{ 98, 98 },
+	{ 99, 99 },
+	{ 100, 100 },
+	{ 101, 101 },
+	{ 102, 102 },
+	{ 103, 103 },
+	{ 104, 104 },
+	{ 105, 105 },
+	{ 106, 106 },
+	{ 107, 107 },
+	{ 108, 108 },
+	{ 109, 109 },
+	{ 110, 110 },
+	{ 111, 111 },
+	{ 112, 112 },
+	{ 113, 113 },
+	{ 114, 114 },
+	{ 115, 115 },
+	{ 116, 116 },
+	{ 117, 117 },
+	{ 118, 118 },
+	{ 119, 119 },
+	{ 120, 120 },
+	{ 121, 121 },
+	{ 122, 122 },
+	{ 123, 228 },
+	{ 124, 246 },
+	{ 125, 229 },
+	{ 126, 252 },
+	{ 127, 127 },
+	{ 128, 128 },
+	{ 129, 129 },
+	{ 130, 130 },
+	{ 131, 131 },
+	{ 132, 132 },
+	{ 133, 133 },
+	{ 134, 134 },
+	{ 135, 135 },
+	{ 136, 136 },
+	{ 137, 137 },
+	{ 138, 138 },
+	{ 139, 139 },
+	{ 140, 140 },
+	{ 141, 141 },
+	{ 142, 142 },
+	{ 143, 143 },
+	{ 144, 144 },
+	{ 145, 145 },
+	{ 146, 146 },
+	{ 147, 147 },
+	{ 148, 148 },
+	{ 149, 149 },
+	{ 150, 150 },
+	{ 151, 151 },
+	{ 152, 152 },
+	{ 153, 153 },
+	{ 154, 154 },
+	{ 155, 155 },
+	{ 156, 156 },
+	{ 157, 157 },
+	{ 158, 158 },
+	{ 159, 159 },
+	{ 160, 160 },
+	{ 161, 161 },
+	{ 162, 162 },
+	{ 163, 163 },
+	{ 164, 164 },
+	{ 165, 165 },
+	{ 166, 166 },
+	{ 167, 167 },
+	{ 168, 168 },
+	{ 169, 169 },
+	{ 170, 170 },
+	{ 171, 171 },
+	{ 172, 172 },
+	{ 173, 173 },
+	{ 174, 174 },
+	{ 175, 175 },
+	{ 176, 176 },
+	{ 177, 177 },
+	{ 178, 178 },
+	{ 179, 179 },
+	{ 180, 180 },
+	{ 181, 181 },
+	{ 182, 182 },
+	{ 183, 183 },
+	{ 184, 184 },
+	{ 185, 185 },
+	{ 186, 186 },
+	{ 187, 187 },
+	{ 188, 188 },
+	{ 189, 189 },
+	{ 190, 190 },
+	{ 191, 191 },
+	{ 192, 192 },
+	{ 193, 193 },
+	{ 194, 194 },
+	{ 195, 195 },
+	{ 196, 196 },
+	{ 197, 197 },
+	{ 198, 198 },
+	{ 199, 199 },
+	{ 200, 200 },
+	{ 201, 201 },
+	{ 202, 202 },
+	{ 203, 203 },
+	{ 204, 204 },
+	{ 205, 205 },
+	{ 206, 206 },
+	{ 207, 207 },
+	{ 208, 208 },
+	{ 209, 209 },
+	{ 210, 210 },
+	{ 211, 211 },
+	{ 212, 212 },
+	{ 213, 213 },
+	{ 214, 214 },
+	{ 215, 215 },
+	{ 216, 216 },
+	{ 217, 217 },
+	{ 218, 218 },
+	{ 219, 219 },
+	{ 220, 220 },
+	{ 221, 221 },
+	{ 222, 222 },
+	{ 223, 223 },
+	{ 224, 224 },
+	{ 225, 225 },
+	{ 226, 226 },
+	{ 227, 227 },
+	{ 228, 228 },
+	{ 229, 229 },
+	{ 230, 230 },
+	{ 231, 231 },
+	{ 232, 232 },
+	{ 233, 233 },
+	{ 234, 234 },
+	{ 235, 235 },
+	{ 236, 236 },
+	{ 237, 237 },
+	{ 238, 238 },
+	{ 239, 239 },
+	{ 240, 240 },
+	{ 241, 241 },
+	{ 242, 242 },
+	{ 243, 243 },
+	{ 244, 244 },
+	{ 245, 245 },
+	{ 246, 246 },
+	{ 247, 247 },
+	{ 248, 248 },
+	{ 249, 249 },
+	{ 250, 250 },
+	{ 251, 251 },
+	{ 252, 252 },
+	{ 253, 253 },
+	{ 254, 254 },
+	{ 255, 255 },
+	{ 34, 8220 },
+	{ 34, 8221 },
+	{ 39, 8216 },
+	{ 39, 8217 },
+	{ 45, 8211 },
+	{ 45, 8212 },
+	{ 32, 8194 },
+	{ 32, 8195 },
+	{ 32, 8201 },
+	{ 65, 256 },
+	{ 65, 258 },
+	{ 65, 260 },
+	{ 65, 461 },
+	{ 97, 257 },
+	{ 97, 259 },
+	{ 97, 261 },
+	{ 97, 462 },
+	{ 67, 262 },
+	{ 67, 264 },
+	{ 67, 266 },
+	{ 67, 268 },
+	{ 99, 263 },
+	{ 99, 265 },
+	{ 99, 267 },
+	{ 99, 269 },
+	{ 68, 270 },
+	{ 100, 271 },
+	{ 69, 274 },
+	{ 69, 276 },
+	{ 69, 278 },
+	{ 69, 280 },
+	{ 69, 282 },
+	{ 101, 275 },
+	{ 101, 277 },
+	{ 101, 279 },
+	{ 101, 281 },
+	{ 101, 283 },
+	{ 71, 284 },
+	{ 71, 286 },
+	{ 71, 288 },
+	{ 71, 290 },
+	{ 71, 486 },
+	{ 71, 500 },
+	{ 103, 285 },
+	{ 103, 287 },
+	{ 103, 289 },
+	{ 103, 291 },
+	{ 103, 487 },
+	{ 103, 501 },
+	{ 72, 292 },
+	{ 104, 293 },
+	{ 73, 296 },
+	{ 73, 298 },
+	{ 73, 300 },
+	{ 73, 302 },
+	{ 73, 304 },
+	{ 73, 463 },
+	{ 105, 297 },
+	{ 105, 299 },
+	{ 105, 301 },
+	{ 105, 303 },
+	{ 105, 305 },
+	{ 105, 464 },
+	{ 74, 308 },
+	{ 106, 309 },
+	{ 75, 310 },
+	{ 75, 488 },
+	{ 107, 311 },
+	{ 107, 489 },
+	{ 76, 313 },
+	{ 76, 315 },
+	{ 76, 317 },
+	{ 76, 319 },
+	{ 76, 321 },
+	{ 108, 314 },
+	{ 108, 316 },
+	{ 108, 318 },
+	{ 108, 320 },
+	{ 108, 322 },
+	{ 77, 323 },
+	{ 77, 325 },
+	{ 77, 327 },
+	{ 109, 324 },
+	{ 109, 326 },
+	{ 109, 328 },
+	{ 109, 329 },
+	{ 78, 332 },
+	{ 78, 334 },
+	{ 78, 336 },
+	{ 78, 465 },
+	{ 78, 490 },
+	{ 110, 333 },
+	{ 110, 335 },
+	{ 110, 337 },
+	{ 110, 466 },
+	{ 110, 491 },
+	{ 82, 340 },
+	{ 82, 342 },
+	{ 82, 344 },
+	{ 114, 341 },
+	{ 114, 343 },
+	{ 114, 345 },
+	{ 83, 346 },
+	{ 83, 348 },
+	{ 83, 350 },
+	{ 83, 352 },
+	{ 115, 347 },
+	{ 115, 349 },
+	{ 115, 351 },
+	{ 115, 353 },
+	{ 84, 354 },
+	{ 84, 356 },
+	{ 116, 355 },
+	{ 116, 357 },
+	{ 85, 360 },
+	{ 85, 362 },
+	{ 85, 364 },
+	{ 85, 366 },
+	{ 85, 368 },
+	{ 85, 370 },
+	{ 85, 467 },
+	{ 117, 361 },
+	{ 117, 363 },
+	{ 117, 365 },
+	{ 117, 367 },
+	{ 117, 369 },
+	{ 117, 371 },
+	{ 117, 468 },
+	{ 87, 372 },
+	{ 119, 373 },
+	{ 89, 374 },
+	{ 89, 376 },
+	{ 121, 375 },
+	{ 90, 377 },
+	{ 90, 379 },
+	{ 90, 381 },
+	{ 122, 378 },
+	{ 122, 380 },
+	{ 122, 382 },
 };
-charconvert iso646_no[] = {
- /* 0 */ 0,/*<tdbgcolor="C0C0C0"><fontface="Arial"color="000000"><b>ISO/IEC10646-1:2000CharacterName</b></font>*/
- 1,
- 2,
- 3,
- 4,
- 5,
- 6,
- 7,
- 8,
- 9,
- 10,
- 11,
- 12,
- 13,
- 14,
- 15,
- 16,
- 17,
- 18,
- 19,
- 20,
- 21,
- 22,
- 23,
- 24,
- 25,
- 26,
- 27,
- 28,
- 29,
- 30,
- 31,
- /* 32 */ 32,/*SPACE*/
- /* 33 */ 33,/*EXCLAMATIONMARK*/
- /* 34 */ 34,/*QUOTATIONMARK*/
- /* 35 */ 35,/*NUMBERSIGN*/
- /* 36 */ 36,/*DOLLARSIGN*/
- /* 37 */ 37,/*PERCENTSIGN*/
- /* 38 */ 38,/*AMPERSAND*/
- /* 39 */ 39,/*APOSTROPHE*/
- /* 40 */ 40,/*LEFTPARENTHESIS*/
- /* 41 */ 41,/*RIGHTPARENTHESIS*/
- /* 42 */ 42,/*ASTERISK*/
- /* 43 */ 43,/*PLUSSIGN*/
- /* 44 */ 44,/*COMMA*/
- /* 45 */ 45,/*HYPHEN-MINUS*/
- /* 46 */ 46,/*FULLSTOP*/
- /* 47 */ 47,/*SOLIDUS*/
- /* 48 */ 48,/*DIGITZERO*/
- /* 49 */ 49,/*DIGITONE*/
- /* 50 */ 50,/*DIGITTWO*/
- /* 51 */ 51,/*DIGITTHREE*/
- /* 52 */ 52,/*DIGITFOUR*/
- /* 53 */ 53,/*DIGITFIVE*/
- /* 54 */ 54,/*DIGITSIX*/
- /* 55 */ 55,/*DIGITSEVEN*/
- /* 56 */ 56,/*DIGITEIGHT*/
- /* 57 */ 57,/*DIGITNINE*/
- /* 58 */ 58,/*COLON*/
- /* 59 */ 59,/*SEMICOLON*/
- /* 60 */ 60,/*LESS-THANSIGN*/
- /* 61 */ 61,/*EQUALSSIGN*/
- /* 62 */ 62,/*GREATER-THANSIGN*/
- /* 63 */ 63,/*QUESTIONMARK*/
- /* 64 */ 64,/*COMMERCIALAT*/
- /* 65 */ 65,/*LATINCAPITALLETTERA*/
- /* 66 */ 66,/*LATINCAPITALLETTERB*/
- /* 67 */ 67,/*LATINCAPITALLETTERC*/
- /* 68 */ 68,/*LATINCAPITALLETTERD*/
- /* 69 */ 69,/*LATINCAPITALLETTERE*/
- /* 70 */ 70,/*LATINCAPITALLETTERF*/
- /* 71 */ 71,/*LATINCAPITALLETTERG*/
- /* 72 */ 72,/*LATINCAPITALLETTERH*/
- /* 73 */ 73,/*LATINCAPITALLETTERI*/
- /* 74 */ 74,/*LATINCAPITALLETTERJ*/
- /* 75 */ 75,/*LATINCAPITALLETTERK*/
- /* 76 */ 76,/*LATINCAPITALLETTERL*/
- /* 77 */ 77,/*LATINCAPITALLETTERM*/
- /* 78 */ 78,/*LATINCAPITALLETTERN*/
- /* 79 */ 79,/*LATINCAPITALLETTERO*/
- /* 80 */ 80,/*LATINCAPITALLETTERP*/
- /* 81 */ 81,/*LATINCAPITALLETTERQ*/
- /* 82 */ 82,/*LATINCAPITALLETTERR*/
- /* 83 */ 83,/*LATINCAPITALLETTERS*/
- /* 84 */ 84,/*LATINCAPITALLETTERT*/
- /* 85 */ 85,/*LATINCAPITALLETTERU*/
- /* 86 */ 86,/*LATINCAPITALLETTERV*/
- /* 87 */ 87,/*LATINCAPITALLETTERW*/
- /* 88 */ 88,/*LATINCAPITALLETTERX*/
- /* 89 */ 89,/*LATINCAPITALLETTERY*/
- /* 90 */ 90,/*LATINCAPITALLETTERZ*/
- /* 91 */ 198,/*LATINCAPITALLETTERAE*/
- /* 92 */ 216,/*LATINCAPITALLETTEROWITHSTROKE*/
- /* 93 */ 197,/*LATINCAPITALLETTERAWITHRINGABOVE*/
- /* 94 */ 94,/*CIRCUMFLEXACCENT*/
- /* 95 */ 95,/*LOWLINE*/
- /* 96 */ 96,/*GRAVEACCENT*/
- /* 97 */ 97,/*LATINSMALLLETTERA*/
- /* 98 */ 98,/*LATINSMALLLETTERB*/
- /* 99 */ 99,/*LATINSMALLLETTERC*/
- /* 100 */ 100,/*LATINSMALLLETTERD*/
- /* 101 */ 101,/*LATINSMALLLETTERE*/
- /* 102 */ 102,/*LATINSMALLLETTERF*/
- /* 103 */ 103,/*LATINSMALLLETTERG*/
- /* 104 */ 104,/*LATINSMALLLETTERH*/
- /* 105 */ 105,/*LATINSMALLLETTERI*/
- /* 106 */ 106,/*LATINSMALLLETTERJ*/
- /* 107 */ 107,/*LATINSMALLLETTERK*/
- /* 108 */ 108,/*LATINSMALLLETTERL*/
- /* 109 */ 109,/*LATINSMALLLETTERM*/
- /* 110 */ 110,/*LATINSMALLLETTERN*/
- /* 111 */ 111,/*LATINSMALLLETTERO*/
- /* 112 */ 112,/*LATINSMALLLETTERP*/
- /* 113 */ 113,/*LATINSMALLLETTERQ*/
- /* 114 */ 114,/*LATINSMALLLETTERR*/
- /* 115 */ 115,/*LATINSMALLLETTERS*/
- /* 116 */ 116,/*LATINSMALLLETTERT*/
- /* 117 */ 117,/*LATINSMALLLETTERU*/
- /* 118 */ 118,/*LATINSMALLLETTERV*/
- /* 119 */ 119,/*LATINSMALLLETTERW*/
- /* 120 */ 120,/*LATINSMALLLETTERX*/
- /* 121 */ 121,/*LATINSMALLLETTERY*/
- /* 122 */ 122,/*LATINSMALLLETTERZ*/
- /* 123 */ 230,/*LATINSMALLLETTERAE*/
- /* 124 */ 248,/*LATINSMALLLETTEROWITHSTROKE*/
- /* 125 */ 229,/*LATINSMALLLETTERAWITHRINGABOVE*/
- /* 126 */ 126,/*TILDE*/
- 127,
- 128,
- 129,
- 130,
- 131,
- 132,
- 133,
- 134,
- 135,
- 136,
- 137,
- 138,
- 139,
- 140,
- 141,
- 142,
- 143,
- 144,
- 145,
- 146,
- 147,
- 148,
- 149,
- 150,
- 151,
- 152,
- 153,
- 154,
- 155,
- 156,
- 157,
- 158,
- 159,
- 160,
- 161,
- 162,
- 163,
- 164,
- 165,
- 166,
- 167,
- 168,
- 169,
- 170,
- 171,
- 172,
- 173,
- 174,
- 175,
- 176,
- 177,
- 178,
- 179,
- 180,
- 181,
- 182,
- 183,
- 184,
- 185,
- 186,
- 187,
- 188,
- 189,
- 190,
- 191,
- 192,
- 193,
- 194,
- 195,
- 196,
- 197,
- 198,
- 199,
- 200,
- 201,
- 202,
- 203,
- 204,
- 205,
- 206,
- 207,
- 208,
- 209,
- 210,
- 211,
- 212,
- 213,
- 214,
- 215,
- 216,
- 217,
- 218,
- 219,
- 220,
- 221,
- 222,
- 223,
- 224,
- 225,
- 226,
- 227,
- 228,
- 229,
- 230,
- 231,
- 232,
- 233,
- 234,
- 235,
- 236,
- 237,
- 238,
- 239,
- 240,
- 241,
- 242,
- 243,
- 244,
- 245,
- 246,
- 247,
- 248,
- 249,
- 250,
- 251,
- 252,
- 253,
- 254,
- 255
+static convert_t iso8859_1[] = {
+	{ 0, 0 },
+	{ 1, 1 },
+	{ 2, 2 },
+	{ 3, 3 },
+	{ 4, 4 },
+	{ 5, 5 },
+	{ 6, 6 },
+	{ 7, 7 },
+	{ 8, 8 },
+	{ 9, 9 },
+	{ 10, 10 },
+	{ 11, 11 },
+	{ 12, 12 },
+	{ 13, 13 },
+	{ 14, 14 },
+	{ 15, 15 },
+	{ 16, 16 },
+	{ 17, 17 },
+	{ 18, 18 },
+	{ 19, 19 },
+	{ 20, 20 },
+	{ 21, 21 },
+	{ 22, 22 },
+	{ 23, 23 },
+	{ 24, 24 },
+	{ 25, 25 },
+	{ 26, 26 },
+	{ 27, 27 },
+	{ 28, 28 },
+	{ 29, 29 },
+	{ 30, 30 },
+	{ 31, 31 },
+	{ 32, 32 },
+	{ 33, 33 },
+	{ 34, 34 },
+	{ 35, 35 },
+	{ 36, 36 },
+	{ 37, 37 },
+	{ 38, 38 },
+	{ 39, 39 },
+	{ 40, 40 },
+	{ 41, 41 },
+	{ 42, 42 },
+	{ 43, 43 },
+	{ 44, 44 },
+	{ 45, 45 },
+	{ 46, 46 },
+	{ 47, 47 },
+	{ 48, 48 },
+	{ 49, 49 },
+	{ 50, 50 },
+	{ 51, 51 },
+	{ 52, 52 },
+	{ 53, 53 },
+	{ 54, 54 },
+	{ 55, 55 },
+	{ 56, 56 },
+	{ 57, 57 },
+	{ 58, 58 },
+	{ 59, 59 },
+	{ 60, 60 },
+	{ 61, 61 },
+	{ 62, 62 },
+	{ 63, 63 },
+	{ 64, 64 },
+	{ 65, 65 },
+	{ 66, 66 },
+	{ 67, 67 },
+	{ 68, 68 },
+	{ 69, 69 },
+	{ 70, 70 },
+	{ 71, 71 },
+	{ 72, 72 },
+	{ 73, 73 },
+	{ 74, 74 },
+	{ 75, 75 },
+	{ 76, 76 },
+	{ 77, 77 },
+	{ 78, 78 },
+	{ 79, 79 },
+	{ 80, 80 },
+	{ 81, 81 },
+	{ 82, 82 },
+	{ 83, 83 },
+	{ 84, 84 },
+	{ 85, 85 },
+	{ 86, 86 },
+	{ 87, 87 },
+	{ 88, 88 },
+	{ 89, 89 },
+	{ 90, 90 },
+	{ 91, 91 },
+	{ 92, 92 },
+	{ 93, 93 },
+	{ 94, 94 },
+	{ 95, 95 },
+	{ 96, 96 },
+	{ 97, 97 },
+	{ 98, 98 },
+	{ 99, 99 },
+	{ 100, 100 },
+	{ 101, 101 },
+	{ 102, 102 },
+	{ 103, 103 },
+	{ 104, 104 },
+	{ 105, 105 },
+	{ 106, 106 },
+	{ 107, 107 },
+	{ 108, 108 },
+	{ 109, 109 },
+	{ 110, 110 },
+	{ 111, 111 },
+	{ 112, 112 },
+	{ 113, 113 },
+	{ 114, 114 },
+	{ 115, 115 },
+	{ 116, 116 },
+	{ 117, 117 },
+	{ 118, 118 },
+	{ 119, 119 },
+	{ 120, 120 },
+	{ 121, 121 },
+	{ 122, 122 },
+	{ 123, 123 },
+	{ 124, 124 },
+	{ 125, 125 },
+	{ 126, 126 },
+	{ 127, 127 },
+	{ 128, 128 },
+	{ 129, 129 },
+	{ 130, 130 },
+	{ 131, 131 },
+	{ 132, 132 },
+	{ 133, 133 },
+	{ 134, 134 },
+	{ 135, 135 },
+	{ 136, 136 },
+	{ 137, 137 },
+	{ 138, 138 },
+	{ 139, 139 },
+	{ 140, 140 },
+	{ 141, 141 },
+	{ 142, 142 },
+	{ 143, 143 },
+	{ 144, 144 },
+	{ 145, 145 },
+	{ 146, 146 },
+	{ 147, 147 },
+	{ 148, 148 },
+	{ 149, 149 },
+	{ 150, 150 },
+	{ 151, 151 },
+	{ 152, 152 },
+	{ 153, 153 },
+	{ 154, 154 },
+	{ 155, 155 },
+	{ 156, 156 },
+	{ 157, 157 },
+	{ 158, 158 },
+	{ 159, 159 },
+	{ 160, 160 },
+	{ 161, 161 },
+	{ 162, 162 },
+	{ 163, 163 },
+	{ 164, 164 },
+	{ 165, 165 },
+	{ 166, 166 },
+	{ 167, 167 },
+	{ 168, 168 },
+	{ 169, 169 },
+	{ 170, 170 },
+	{ 171, 171 },
+	{ 172, 172 },
+	{ 173, 173 },
+	{ 174, 174 },
+	{ 175, 175 },
+	{ 176, 176 },
+	{ 177, 177 },
+	{ 178, 178 },
+	{ 179, 179 },
+	{ 180, 180 },
+	{ 181, 181 },
+	{ 182, 182 },
+	{ 183, 183 },
+	{ 184, 184 },
+	{ 185, 185 },
+	{ 186, 186 },
+	{ 187, 187 },
+	{ 188, 188 },
+	{ 189, 189 },
+	{ 190, 190 },
+	{ 191, 191 },
+	{ 192, 192 },
+	{ 193, 193 },
+	{ 194, 194 },
+	{ 195, 195 },
+	{ 196, 196 },
+	{ 197, 197 },
+	{ 198, 198 },
+	{ 199, 199 },
+	{ 200, 200 },
+	{ 201, 201 },
+	{ 202, 202 },
+	{ 203, 203 },
+	{ 204, 204 },
+	{ 205, 205 },
+	{ 206, 206 },
+	{ 207, 207 },
+	{ 208, 208 },
+	{ 209, 209 },
+	{ 210, 210 },
+	{ 211, 211 },
+	{ 212, 212 },
+	{ 213, 213 },
+	{ 214, 214 },
+	{ 215, 215 },
+	{ 216, 216 },
+	{ 217, 217 },
+	{ 218, 218 },
+	{ 219, 219 },
+	{ 220, 220 },
+	{ 221, 221 },
+	{ 222, 222 },
+	{ 223, 223 },
+	{ 224, 224 },
+	{ 225, 225 },
+	{ 226, 226 },
+	{ 227, 227 },
+	{ 228, 228 },
+	{ 229, 229 },
+	{ 230, 230 },
+	{ 231, 231 },
+	{ 232, 232 },
+	{ 233, 233 },
+	{ 234, 234 },
+	{ 235, 235 },
+	{ 236, 236 },
+	{ 237, 237 },
+	{ 238, 238 },
+	{ 239, 239 },
+	{ 240, 240 },
+	{ 241, 241 },
+	{ 242, 242 },
+	{ 243, 243 },
+	{ 244, 244 },
+	{ 245, 245 },
+	{ 246, 246 },
+	{ 247, 247 },
+	{ 248, 248 },
+	{ 249, 249 },
+	{ 250, 250 },
+	{ 251, 251 },
+	{ 252, 252 },
+	{ 253, 253 },
+	{ 254, 254 },
+	{ 255, 255 },
+	{ 34, 8220 },
+	{ 34, 8221 },
+	{ 39, 8216 },
+	{ 39, 8217 },
+	{ 45, 8211 },
+	{ 45, 8212 },
+	{ 32, 8194 },
+	{ 32, 8195 },
+	{ 32, 8201 },
+	{ 65, 256 },
+	{ 65, 258 },
+	{ 65, 260 },
+	{ 65, 461 },
+	{ 97, 257 },
+	{ 97, 259 },
+	{ 97, 261 },
+	{ 97, 462 },
+	{ 67, 262 },
+	{ 67, 264 },
+	{ 67, 266 },
+	{ 67, 268 },
+	{ 99, 263 },
+	{ 99, 265 },
+	{ 99, 267 },
+	{ 99, 269 },
+	{ 68, 270 },
+	{ 100, 271 },
+	{ 69, 274 },
+	{ 69, 276 },
+	{ 69, 278 },
+	{ 69, 280 },
+	{ 69, 282 },
+	{ 101, 275 },
+	{ 101, 277 },
+	{ 101, 279 },
+	{ 101, 281 },
+	{ 101, 283 },
+	{ 71, 284 },
+	{ 71, 286 },
+	{ 71, 288 },
+	{ 71, 290 },
+	{ 71, 486 },
+	{ 71, 500 },
+	{ 103, 285 },
+	{ 103, 287 },
+	{ 103, 289 },
+	{ 103, 291 },
+	{ 103, 487 },
+	{ 103, 501 },
+	{ 72, 292 },
+	{ 104, 293 },
+	{ 73, 296 },
+	{ 73, 298 },
+	{ 73, 300 },
+	{ 73, 302 },
+	{ 73, 304 },
+	{ 73, 463 },
+	{ 105, 297 },
+	{ 105, 299 },
+	{ 105, 301 },
+	{ 105, 303 },
+	{ 105, 305 },
+	{ 105, 464 },
+	{ 74, 308 },
+	{ 106, 309 },
+	{ 75, 310 },
+	{ 75, 488 },
+	{ 107, 311 },
+	{ 107, 489 },
+	{ 76, 313 },
+	{ 76, 315 },
+	{ 76, 317 },
+	{ 76, 319 },
+	{ 76, 321 },
+	{ 108, 314 },
+	{ 108, 316 },
+	{ 108, 318 },
+	{ 108, 320 },
+	{ 108, 322 },
+	{ 77, 323 },
+	{ 77, 325 },
+	{ 77, 327 },
+	{ 109, 324 },
+	{ 109, 326 },
+	{ 109, 328 },
+	{ 109, 329 },
+	{ 78, 332 },
+	{ 78, 334 },
+	{ 78, 336 },
+	{ 78, 465 },
+	{ 78, 490 },
+	{ 110, 333 },
+	{ 110, 335 },
+	{ 110, 337 },
+	{ 110, 466 },
+	{ 110, 491 },
+	{ 82, 340 },
+	{ 82, 342 },
+	{ 82, 344 },
+	{ 114, 341 },
+	{ 114, 343 },
+	{ 114, 345 },
+	{ 83, 346 },
+	{ 83, 348 },
+	{ 83, 350 },
+	{ 83, 352 },
+	{ 115, 347 },
+	{ 115, 349 },
+	{ 115, 351 },
+	{ 115, 353 },
+	{ 84, 354 },
+	{ 84, 356 },
+	{ 116, 355 },
+	{ 116, 357 },
+	{ 85, 360 },
+	{ 85, 362 },
+	{ 85, 364 },
+	{ 85, 366 },
+	{ 85, 368 },
+	{ 85, 370 },
+	{ 85, 467 },
+	{ 117, 361 },
+	{ 117, 363 },
+	{ 117, 365 },
+	{ 117, 367 },
+	{ 117, 369 },
+	{ 117, 371 },
+	{ 117, 468 },
+	{ 87, 372 },
+	{ 119, 373 },
+	{ 89, 374 },
+	{ 89, 376 },
+	{ 121, 375 },
+	{ 90, 377 },
+	{ 90, 379 },
+	{ 90, 381 },
+	{ 122, 378 },
+	{ 122, 380 },
+	{ 122, 382 },
 };
-charconvert iso646_pt[] = {
- /* 0 */ 0,/*<tdbgcolor="C0C0C0"><fontface="Arial"color="000000"><b>ISO/IEC10646-1:2000CharacterName</b></font>*/
- 1,
- 2,
- 3,
- 4,
- 5,
- 6,
- 7,
- 8,
- 9,
- 10,
- 11,
- 12,
- 13,
- 14,
- 15,
- 16,
- 17,
- 18,
- 19,
- 20,
- 21,
- 22,
- 23,
- 24,
- 25,
- 26,
- 27,
- 28,
- 29,
- 30,
- 31,
- /* 32 */ 32,/*SPACE*/
- /* 33 */ 33,/*EXCLAMATIONMARK*/
- /* 34 */ 34,/*QUOTATIONMARK*/
- /* 35 */ 35,/*NUMBERSIGN*/
- /* 36 */ 36,/*DOLLARSIGN*/
- /* 37 */ 37,/*PERCENTSIGN*/
- /* 38 */ 38,/*AMPERSAND*/
- /* 39 */ 39,/*APOSTROPHE*/
- /* 40 */ 40,/*LEFTPARENTHESIS*/
- /* 41 */ 41,/*RIGHTPARENTHESIS*/
- /* 42 */ 42,/*ASTERISK*/
- /* 43 */ 43,/*PLUSSIGN*/
- /* 44 */ 44,/*COMMA*/
- /* 45 */ 45,/*HYPHEN-MINUS*/
- /* 46 */ 46,/*FULLSTOP*/
- /* 47 */ 47,/*SOLIDUS*/
- /* 48 */ 48,/*DIGITZERO*/
- /* 49 */ 49,/*DIGITONE*/
- /* 50 */ 50,/*DIGITTWO*/
- /* 51 */ 51,/*DIGITTHREE*/
- /* 52 */ 52,/*DIGITFOUR*/
- /* 53 */ 53,/*DIGITFIVE*/
- /* 54 */ 54,/*DIGITSIX*/
- /* 55 */ 55,/*DIGITSEVEN*/
- /* 56 */ 56,/*DIGITEIGHT*/
- /* 57 */ 57,/*DIGITNINE*/
- /* 58 */ 58,/*COLON*/
- /* 59 */ 59,/*SEMICOLON*/
- /* 60 */ 60,/*LESS-THANSIGN*/
- /* 61 */ 61,/*EQUALSSIGN*/
- /* 62 */ 62,/*GREATER-THANSIGN*/
- /* 63 */ 63,/*QUESTIONMARK*/
- /* 64 */ 64,/*COMMERCIALAT*/
- /* 65 */ 65,/*LATINCAPITALLETTERA*/
- /* 66 */ 66,/*LATINCAPITALLETTERB*/
- /* 67 */ 67,/*LATINCAPITALLETTERC*/
- /* 68 */ 68,/*LATINCAPITALLETTERD*/
- /* 69 */ 69,/*LATINCAPITALLETTERE*/
- /* 70 */ 70,/*LATINCAPITALLETTERF*/
- /* 71 */ 71,/*LATINCAPITALLETTERG*/
- /* 72 */ 72,/*LATINCAPITALLETTERH*/
- /* 73 */ 73,/*LATINCAPITALLETTERI*/
- /* 74 */ 74,/*LATINCAPITALLETTERJ*/
- /* 75 */ 75,/*LATINCAPITALLETTERK*/
- /* 76 */ 76,/*LATINCAPITALLETTERL*/
- /* 77 */ 77,/*LATINCAPITALLETTERM*/
- /* 78 */ 78,/*LATINCAPITALLETTERN*/
- /* 79 */ 79,/*LATINCAPITALLETTERO*/
- /* 80 */ 80,/*LATINCAPITALLETTERP*/
- /* 81 */ 81,/*LATINCAPITALLETTERQ*/
- /* 82 */ 82,/*LATINCAPITALLETTERR*/
- /* 83 */ 83,/*LATINCAPITALLETTERS*/
- /* 84 */ 84,/*LATINCAPITALLETTERT*/
- /* 85 */ 85,/*LATINCAPITALLETTERU*/
- /* 86 */ 86,/*LATINCAPITALLETTERV*/
- /* 87 */ 87,/*LATINCAPITALLETTERW*/
- /* 88 */ 88,/*LATINCAPITALLETTERX*/
- /* 89 */ 89,/*LATINCAPITALLETTERY*/
- /* 90 */ 90,/*LATINCAPITALLETTERZ*/
- /* 91 */ 195,/*LATINCAPITALLETTERAWITHTILDE*/
- /* 92 */ 199,/*LATINCAPITALLETTERCWITHCEDILLA*/
- /* 93 */ 213,/*LATINCAPITALLETTEROWITHTILDE*/
- /* 94 */ 94,/*CIRCUMFLEXACCENT*/
- /* 95 */ 95,/*LOWLINE*/
- /* 96 */ 96,/*GRAVEACCENT*/
- /* 97 */ 97,/*LATINSMALLLETTERA*/
- /* 98 */ 98,/*LATINSMALLLETTERB*/
- /* 99 */ 99,/*LATINSMALLLETTERC*/
- /* 100 */ 100,/*LATINSMALLLETTERD*/
- /* 101 */ 101,/*LATINSMALLLETTERE*/
- /* 102 */ 102,/*LATINSMALLLETTERF*/
- /* 103 */ 103,/*LATINSMALLLETTERG*/
- /* 104 */ 104,/*LATINSMALLLETTERH*/
- /* 105 */ 105,/*LATINSMALLLETTERI*/
- /* 106 */ 106,/*LATINSMALLLETTERJ*/
- /* 107 */ 107,/*LATINSMALLLETTERK*/
- /* 108 */ 108,/*LATINSMALLLETTERL*/
- /* 109 */ 109,/*LATINSMALLLETTERM*/
- /* 110 */ 110,/*LATINSMALLLETTERN*/
- /* 111 */ 111,/*LATINSMALLLETTERO*/
- /* 112 */ 112,/*LATINSMALLLETTERP*/
- /* 113 */ 113,/*LATINSMALLLETTERQ*/
- /* 114 */ 114,/*LATINSMALLLETTERR*/
- /* 115 */ 115,/*LATINSMALLLETTERS*/
- /* 116 */ 116,/*LATINSMALLLETTERT*/
- /* 117 */ 117,/*LATINSMALLLETTERU*/
- /* 118 */ 118,/*LATINSMALLLETTERV*/
- /* 119 */ 119,/*LATINSMALLLETTERW*/
- /* 120 */ 120,/*LATINSMALLLETTERX*/
- /* 121 */ 121,/*LATINSMALLLETTERY*/
- /* 122 */ 122,/*LATINSMALLLETTERZ*/
- /* 123 */ 227,/*LATINSMALLLETTERAWITHTILDE*/
- /* 124 */ 231,/*LATINSMALLLETTERCWITHCEDILLA*/
- /* 125 */ 245,/*LATINSMALLLETTEROWITHTILDE*/
- /* 126 */ 126,/*TILDE*/
- 127,
- 128,
- 129,
- 130,
- 131,
- 132,
- 133,
- 134,
- 135,
- 136,
- 137,
- 138,
- 139,
- 140,
- 141,
- 142,
- 143,
- 144,
- 145,
- 146,
- 147,
- 148,
- 149,
- 150,
- 151,
- 152,
- 153,
- 154,
- 155,
- 156,
- 157,
- 158,
- 159,
- 160,
- 161,
- 162,
- 163,
- 164,
- 165,
- 166,
- 167,
- 168,
- 169,
- 170,
- 171,
- 172,
- 173,
- 174,
- 175,
- 176,
- 177,
- 178,
- 179,
- 180,
- 181,
- 182,
- 183,
- 184,
- 185,
- 186,
- 187,
- 188,
- 189,
- 190,
- 191,
- 192,
- 193,
- 194,
- 195,
- 196,
- 197,
- 198,
- 199,
- 200,
- 201,
- 202,
- 203,
- 204,
- 205,
- 206,
- 207,
- 208,
- 209,
- 210,
- 211,
- 212,
- 213,
- 214,
- 215,
- 216,
- 217,
- 218,
- 219,
- 220,
- 221,
- 222,
- 223,
- 224,
- 225,
- 226,
- 227,
- 228,
- 229,
- 230,
- 231,
- 232,
- 233,
- 234,
- 235,
- 236,
- 237,
- 238,
- 239,
- 240,
- 241,
- 242,
- 243,
- 244,
- 245,
- 246,
- 247,
- 248,
- 249,
- 250,
- 251,
- 252,
- 253,
- 254,
- 255
+static convert_t iso8859_2[] = {
+	{ 0, 0 },
+	{ 1, 1 },
+	{ 2, 2 },
+	{ 3, 3 },
+	{ 4, 4 },
+	{ 5, 5 },
+	{ 6, 6 },
+	{ 7, 7 },
+	{ 8, 8 },
+	{ 9, 9 },
+	{ 10, 10 },
+	{ 11, 11 },
+	{ 12, 12 },
+	{ 13, 13 },
+	{ 14, 14 },
+	{ 15, 15 },
+	{ 16, 16 },
+	{ 17, 17 },
+	{ 18, 18 },
+	{ 19, 19 },
+	{ 20, 20 },
+	{ 21, 21 },
+	{ 22, 22 },
+	{ 23, 23 },
+	{ 24, 24 },
+	{ 25, 25 },
+	{ 26, 26 },
+	{ 27, 27 },
+	{ 28, 28 },
+	{ 29, 29 },
+	{ 30, 30 },
+	{ 31, 31 },
+	{ 32, 32 },
+	{ 33, 33 },
+	{ 34, 34 },
+	{ 35, 35 },
+	{ 36, 36 },
+	{ 37, 37 },
+	{ 38, 38 },
+	{ 39, 39 },
+	{ 40, 40 },
+	{ 41, 41 },
+	{ 42, 42 },
+	{ 43, 43 },
+	{ 44, 44 },
+	{ 45, 45 },
+	{ 46, 46 },
+	{ 47, 47 },
+	{ 48, 48 },
+	{ 49, 49 },
+	{ 50, 50 },
+	{ 51, 51 },
+	{ 52, 52 },
+	{ 53, 53 },
+	{ 54, 54 },
+	{ 55, 55 },
+	{ 56, 56 },
+	{ 57, 57 },
+	{ 58, 58 },
+	{ 59, 59 },
+	{ 60, 60 },
+	{ 61, 61 },
+	{ 62, 62 },
+	{ 63, 63 },
+	{ 64, 64 },
+	{ 65, 65 },
+	{ 66, 66 },
+	{ 67, 67 },
+	{ 68, 68 },
+	{ 69, 69 },
+	{ 70, 70 },
+	{ 71, 71 },
+	{ 72, 72 },
+	{ 73, 73 },
+	{ 74, 74 },
+	{ 75, 75 },
+	{ 76, 76 },
+	{ 77, 77 },
+	{ 78, 78 },
+	{ 79, 79 },
+	{ 80, 80 },
+	{ 81, 81 },
+	{ 82, 82 },
+	{ 83, 83 },
+	{ 84, 84 },
+	{ 85, 85 },
+	{ 86, 86 },
+	{ 87, 87 },
+	{ 88, 88 },
+	{ 89, 89 },
+	{ 90, 90 },
+	{ 91, 91 },
+	{ 92, 92 },
+	{ 93, 93 },
+	{ 94, 94 },
+	{ 95, 95 },
+	{ 96, 96 },
+	{ 97, 97 },
+	{ 98, 98 },
+	{ 99, 99 },
+	{ 100, 100 },
+	{ 101, 101 },
+	{ 102, 102 },
+	{ 103, 103 },
+	{ 104, 104 },
+	{ 105, 105 },
+	{ 106, 106 },
+	{ 107, 107 },
+	{ 108, 108 },
+	{ 109, 109 },
+	{ 110, 110 },
+	{ 111, 111 },
+	{ 112, 112 },
+	{ 113, 113 },
+	{ 114, 114 },
+	{ 115, 115 },
+	{ 116, 116 },
+	{ 117, 117 },
+	{ 118, 118 },
+	{ 119, 119 },
+	{ 120, 120 },
+	{ 121, 121 },
+	{ 122, 122 },
+	{ 123, 123 },
+	{ 124, 124 },
+	{ 125, 125 },
+	{ 126, 126 },
+	{ 127, 127 },
+	{ 128, 128 },
+	{ 129, 129 },
+	{ 130, 130 },
+	{ 131, 131 },
+	{ 132, 132 },
+	{ 133, 133 },
+	{ 134, 134 },
+	{ 135, 135 },
+	{ 136, 136 },
+	{ 137, 137 },
+	{ 138, 138 },
+	{ 139, 139 },
+	{ 140, 140 },
+	{ 141, 141 },
+	{ 142, 142 },
+	{ 143, 143 },
+	{ 144, 144 },
+	{ 145, 145 },
+	{ 146, 146 },
+	{ 147, 147 },
+	{ 148, 148 },
+	{ 149, 149 },
+	{ 150, 150 },
+	{ 151, 151 },
+	{ 152, 152 },
+	{ 153, 153 },
+	{ 154, 154 },
+	{ 155, 155 },
+	{ 156, 156 },
+	{ 157, 157 },
+	{ 158, 158 },
+	{ 159, 159 },
+	{ 160, 160 },
+	{ 161, 260 },
+	{ 162, 728 },
+	{ 163, 321 },
+	{ 164, 164 },
+	{ 165, 317 },
+	{ 166, 346 },
+	{ 167, 167 },
+	{ 168, 168 },
+	{ 169, 352 },
+	{ 170, 350 },
+	{ 171, 356 },
+	{ 172, 377 },
+	{ 173, 173 },
+	{ 174, 381 },
+	{ 175, 379 },
+	{ 176, 176 },
+	{ 177, 261 },
+	{ 178, 731 },
+	{ 179, 322 },
+	{ 180, 180 },
+	{ 181, 318 },
+	{ 182, 347 },
+	{ 183, 711 },
+	{ 184, 184 },
+	{ 185, 353 },
+	{ 186, 351 },
+	{ 187, 357 },
+	{ 188, 378 },
+	{ 189, 733 },
+	{ 190, 382 },
+	{ 191, 380 },
+	{ 192, 340 },
+	{ 193, 193 },
+	{ 194, 194 },
+	{ 195, 258 },
+	{ 196, 196 },
+	{ 197, 313 },
+	{ 198, 262 },
+	{ 199, 199 },
+	{ 200, 268 },
+	{ 201, 201 },
+	{ 202, 280 },
+	{ 203, 203 },
+	{ 204, 282 },
+	{ 205, 205 },
+	{ 206, 206 },
+	{ 207, 270 },
+	{ 208, 272 },
+	{ 209, 323 },
+	{ 210, 327 },
+	{ 211, 211 },
+	{ 212, 212 },
+	{ 213, 336 },
+	{ 214, 214 },
+	{ 215, 215 },
+	{ 216, 344 },
+	{ 217, 366 },
+	{ 218, 218 },
+	{ 219, 368 },
+	{ 220, 220 },
+	{ 221, 221 },
+	{ 222, 354 },
+	{ 223, 223 },
+	{ 224, 341 },
+	{ 225, 225 },
+	{ 226, 226 },
+	{ 227, 259 },
+	{ 228, 228 },
+	{ 229, 314 },
+	{ 230, 263 },
+	{ 231, 231 },
+	{ 232, 269 },
+	{ 233, 233 },
+	{ 234, 281 },
+	{ 235, 235 },
+	{ 236, 283 },
+	{ 237, 237 },
+	{ 238, 238 },
+	{ 239, 271 },
+	{ 240, 273 },
+	{ 241, 324 },
+	{ 242, 328 },
+	{ 243, 243 },
+	{ 244, 244 },
+	{ 245, 337 },
+	{ 246, 246 },
+	{ 247, 247 },
+	{ 248, 345 },
+	{ 249, 367 },
+	{ 250, 250 },
+	{ 251, 369 },
+	{ 252, 252 },
+	{ 253, 253 },
+	{ 254, 355 },
+	{ 255, 729 },
+	{ 34, 8220 },
+	{ 34, 8221 },
+	{ 39, 8216 },
+	{ 39, 8217 },
+	{ 45, 8211 },
+	{ 45, 8212 },
+	{ 32, 8194 },
+	{ 32, 8195 },
+	{ 32, 8201 },
+	{ 65, 192 },
+	{ 65, 195 },
+	{ 65, 197 },
+	{ 65, 256 },
+	{ 65, 461 },
+	{ 97, 224 },
+	{ 97, 227 },
+	{ 97, 229 },
+	{ 97, 257 },
+	{ 97, 462 },
+	{ 67, 264 },
+	{ 67, 266 },
+	{ 99, 265 },
+	{ 99, 267 },
+	{ 69, 200 },
+	{ 69, 202 },
+	{ 69, 274 },
+	{ 69, 276 },
+	{ 69, 278 },
+	{ 101, 232 },
+	{ 101, 234 },
+	{ 101, 275 },
+	{ 101, 277 },
+	{ 101, 279 },
+	{ 71, 284 },
+	{ 71, 286 },
+	{ 71, 288 },
+	{ 71, 290 },
+	{ 71, 486 },
+	{ 71, 500 },
+	{ 103, 285 },
+	{ 103, 287 },
+	{ 103, 289 },
+	{ 103, 291 },
+	{ 103, 487 },
+	{ 103, 501 },
+	{ 72, 292 },
+	{ 104, 293 },
+	{ 73, 204 },
+	{ 73, 207 },
+	{ 73, 296 },
+	{ 73, 298 },
+	{ 73, 300 },
+	{ 73, 302 },
+	{ 73, 304 },
+	{ 73, 463 },
+	{ 105, 236 },
+	{ 105, 239 },
+	{ 105, 297 },
+	{ 105, 299 },
+	{ 105, 301 },
+	{ 105, 303 },
+	{ 105, 305 },
+	{ 105, 464 },
+	{ 74, 308 },
+	{ 106, 309 },
+	{ 75, 310 },
+	{ 75, 488 },
+	{ 107, 311 },
+	{ 107, 489 },
+	{ 76, 315 },
+	{ 76, 319 },
+	{ 108, 316 },
+	{ 108, 320 },
+	{ 77, 209 },
+	{ 77, 325 },
+	{ 109, 241 },
+	{ 109, 326 },
+	{ 109, 329 },
+	{ 78, 210 },
+	{ 78, 213 },
+	{ 78, 216 },
+	{ 78, 332 },
+	{ 78, 334 },
+	{ 78, 465 },
+	{ 78, 490 },
+	{ 110, 242 },
+	{ 110, 245 },
+	{ 110, 248 },
+	{ 110, 333 },
+	{ 110, 335 },
+	{ 110, 466 },
+	{ 110, 491 },
+	{ 82, 342 },
+	{ 114, 343 },
+	{ 83, 348 },
+	{ 115, 349 },
+	{ 85, 217 },
+	{ 85, 219 },
+	{ 85, 360 },
+	{ 85, 362 },
+	{ 85, 364 },
+	{ 85, 370 },
+	{ 85, 467 },
+	{ 117, 249 },
+	{ 117, 251 },
+	{ 117, 361 },
+	{ 117, 363 },
+	{ 117, 365 },
+	{ 117, 371 },
+	{ 117, 468 },
+	{ 87, 372 },
+	{ 119, 373 },
+	{ 89, 374 },
+	{ 89, 376 },
+	{ 121, 255 },
+	{ 121, 375 },
 };
-charconvert iso646_se[] = {
- /* 0 */ 0,/*<tdbgcolor="C0C0C0"><fontface="Arial"color="000000"><b>ISO/IEC10646-1:2000CharacterName</b></font>*/
- 1,
- 2,
- 3,
- 4,
- 5,
- 6,
- 7,
- 8,
- 9,
- 10,
- 11,
- 12,
- 13,
- 14,
- 15,
- 16,
- 17,
- 18,
- 19,
- 20,
- 21,
- 22,
- 23,
- 24,
- 25,
- 26,
- 27,
- 28,
- 29,
- 30,
- 31,
- /* 32 */ 32,/*SPACE*/
- /* 33 */ 33,/*EXCLAMATIONMARK*/
- /* 34 */ 34,/*QUOTATIONMARK*/
- /* 35 */ 35,/*NUMBERSIGN*/
- /* 36 */ 36,/*DOLLARSIGN*/
- /* 37 */ 37,/*PERCENTSIGN*/
- /* 38 */ 38,/*AMPERSAND*/
- /* 39 */ 39,/*APOSTROPHE*/
- /* 40 */ 40,/*LEFTPARENTHESIS*/
- /* 41 */ 41,/*RIGHTPARENTHESIS*/
- /* 42 */ 42,/*ASTERISK*/
- /* 43 */ 43,/*PLUSSIGN*/
- /* 44 */ 44,/*COMMA*/
- /* 45 */ 45,/*HYPHEN-MINUS*/
- /* 46 */ 46,/*FULLSTOP*/
- /* 47 */ 47,/*SOLIDUS*/
- /* 48 */ 48,/*DIGITZERO*/
- /* 49 */ 49,/*DIGITONE*/
- /* 50 */ 50,/*DIGITTWO*/
- /* 51 */ 51,/*DIGITTHREE*/
- /* 52 */ 52,/*DIGITFOUR*/
- /* 53 */ 53,/*DIGITFIVE*/
- /* 54 */ 54,/*DIGITSIX*/
- /* 55 */ 55,/*DIGITSEVEN*/
- /* 56 */ 56,/*DIGITEIGHT*/
- /* 57 */ 57,/*DIGITNINE*/
- /* 58 */ 58,/*COLON*/
- /* 59 */ 59,/*SEMICOLON*/
- /* 60 */ 60,/*LESS-THANSIGN*/
- /* 61 */ 61,/*EQUALSSIGN*/
- /* 62 */ 62,/*GREATER-THANSIGN*/
- /* 63 */ 63,/*QUESTIONMARK*/
- /* 64 */ 201,/*LATINCAPITALLETTEREWITHACUTE*/
- /* 65 */ 65,/*LATINCAPITALLETTERA*/
- /* 66 */ 66,/*LATINCAPITALLETTERB*/
- /* 67 */ 67,/*LATINCAPITALLETTERC*/
- /* 68 */ 68,/*LATINCAPITALLETTERD*/
- /* 69 */ 69,/*LATINCAPITALLETTERE*/
- /* 70 */ 70,/*LATINCAPITALLETTERF*/
- /* 71 */ 71,/*LATINCAPITALLETTERG*/
- /* 72 */ 72,/*LATINCAPITALLETTERH*/
- /* 73 */ 73,/*LATINCAPITALLETTERI*/
- /* 74 */ 74,/*LATINCAPITALLETTERJ*/
- /* 75 */ 75,/*LATINCAPITALLETTERK*/
- /* 76 */ 76,/*LATINCAPITALLETTERL*/
- /* 77 */ 77,/*LATINCAPITALLETTERM*/
- /* 78 */ 78,/*LATINCAPITALLETTERN*/
- /* 79 */ 79,/*LATINCAPITALLETTERO*/
- /* 80 */ 80,/*LATINCAPITALLETTERP*/
- /* 81 */ 81,/*LATINCAPITALLETTERQ*/
- /* 82 */ 82,/*LATINCAPITALLETTERR*/
- /* 83 */ 83,/*LATINCAPITALLETTERS*/
- /* 84 */ 84,/*LATINCAPITALLETTERT*/
- /* 85 */ 85,/*LATINCAPITALLETTERU*/
- /* 86 */ 86,/*LATINCAPITALLETTERV*/
- /* 87 */ 87,/*LATINCAPITALLETTERW*/
- /* 88 */ 88,/*LATINCAPITALLETTERX*/
- /* 89 */ 89,/*LATINCAPITALLETTERY*/
- /* 90 */ 90,/*LATINCAPITALLETTERZ*/
- /* 91 */ 196,/*LATINCAPITALLETTERAWITHDIAERESIS*/
- /* 92 */ 214,/*LATINCAPITALLETTEROWITHDIAERESIS*/
- /* 93 */ 197,/*LATINCAPITALLETTERAWITHRINGABOVE*/
- /* 94 */ 220,/*LATINCAPITALLETTERUWITHDIAERESIS*/
- /* 95 */ 95,/*LOWLINE*/
- /* 96 */ 233,/*LATINSMALLLETTEREWITHACUTE*/
- /* 97 */ 97,/*LATINSMALLLETTERA*/
- /* 98 */ 98,/*LATINSMALLLETTERB*/
- /* 99 */ 99,/*LATINSMALLLETTERC*/
- /* 100 */ 100,/*LATINSMALLLETTERD*/
- /* 101 */ 101,/*LATINSMALLLETTERE*/
- /* 102 */ 102,/*LATINSMALLLETTERF*/
- /* 103 */ 103,/*LATINSMALLLETTERG*/
- /* 104 */ 104,/*LATINSMALLLETTERH*/
- /* 105 */ 105,/*LATINSMALLLETTERI*/
- /* 106 */ 106,/*LATINSMALLLETTERJ*/
- /* 107 */ 107,/*LATINSMALLLETTERK*/
- /* 108 */ 108,/*LATINSMALLLETTERL*/
- /* 109 */ 109,/*LATINSMALLLETTERM*/
- /* 110 */ 110,/*LATINSMALLLETTERN*/
- /* 111 */ 111,/*LATINSMALLLETTERO*/
- /* 112 */ 112,/*LATINSMALLLETTERP*/
- /* 113 */ 113,/*LATINSMALLLETTERQ*/
- /* 114 */ 114,/*LATINSMALLLETTERR*/
- /* 115 */ 115,/*LATINSMALLLETTERS*/
- /* 116 */ 116,/*LATINSMALLLETTERT*/
- /* 117 */ 117,/*LATINSMALLLETTERU*/
- /* 118 */ 118,/*LATINSMALLLETTERV*/
- /* 119 */ 119,/*LATINSMALLLETTERW*/
- /* 120 */ 120,/*LATINSMALLLETTERX*/
- /* 121 */ 121,/*LATINSMALLLETTERY*/
- /* 122 */ 122,/*LATINSMALLLETTERZ*/
- /* 123 */ 228,/*LATINSMALLLETTERAWITHDIAERESIS*/
- /* 124 */ 246,/*LATINSMALLLETTEROWITHDIAERESIS*/
- /* 125 */ 229,/*LATINSMALLLETTERAWITHRINGABOVE*/
- /* 126 */ 252,/*LATINSMALLLETTERUWITHDIAERESIS*/
- 127,
- 128,
- 129,
- 130,
- 131,
- 132,
- 133,
- 134,
- 135,
- 136,
- 137,
- 138,
- 139,
- 140,
- 141,
- 142,
- 143,
- 144,
- 145,
- 146,
- 147,
- 148,
- 149,
- 150,
- 151,
- 152,
- 153,
- 154,
- 155,
- 156,
- 157,
- 158,
- 159,
- 160,
- 161,
- 162,
- 163,
- 164,
- 165,
- 166,
- 167,
- 168,
- 169,
- 170,
- 171,
- 172,
- 173,
- 174,
- 175,
- 176,
- 177,
- 178,
- 179,
- 180,
- 181,
- 182,
- 183,
- 184,
- 185,
- 186,
- 187,
- 188,
- 189,
- 190,
- 191,
- 192,
- 193,
- 194,
- 195,
- 196,
- 197,
- 198,
- 199,
- 200,
- 201,
- 202,
- 203,
- 204,
- 205,
- 206,
- 207,
- 208,
- 209,
- 210,
- 211,
- 212,
- 213,
- 214,
- 215,
- 216,
- 217,
- 218,
- 219,
- 220,
- 221,
- 222,
- 223,
- 224,
- 225,
- 226,
- 227,
- 228,
- 229,
- 230,
- 231,
- 232,
- 233,
- 234,
- 235,
- 236,
- 237,
- 238,
- 239,
- 240,
- 241,
- 242,
- 243,
- 244,
- 245,
- 246,
- 247,
- 248,
- 249,
- 250,
- 251,
- 252,
- 253,
- 254,
- 255
+static convert_t iso8859_3[] = {
+	{ 0, 0 },
+	{ 1, 1 },
+	{ 2, 2 },
+	{ 3, 3 },
+	{ 4, 4 },
+	{ 5, 5 },
+	{ 6, 6 },
+	{ 7, 7 },
+	{ 8, 8 },
+	{ 9, 9 },
+	{ 10, 10 },
+	{ 11, 11 },
+	{ 12, 12 },
+	{ 13, 13 },
+	{ 14, 14 },
+	{ 15, 15 },
+	{ 16, 16 },
+	{ 17, 17 },
+	{ 18, 18 },
+	{ 19, 19 },
+	{ 20, 20 },
+	{ 21, 21 },
+	{ 22, 22 },
+	{ 23, 23 },
+	{ 24, 24 },
+	{ 25, 25 },
+	{ 26, 26 },
+	{ 27, 27 },
+	{ 28, 28 },
+	{ 29, 29 },
+	{ 30, 30 },
+	{ 31, 31 },
+	{ 32, 32 },
+	{ 33, 33 },
+	{ 34, 34 },
+	{ 35, 35 },
+	{ 36, 36 },
+	{ 37, 37 },
+	{ 38, 38 },
+	{ 39, 39 },
+	{ 40, 40 },
+	{ 41, 41 },
+	{ 42, 42 },
+	{ 43, 43 },
+	{ 44, 44 },
+	{ 45, 45 },
+	{ 46, 46 },
+	{ 47, 47 },
+	{ 48, 48 },
+	{ 49, 49 },
+	{ 50, 50 },
+	{ 51, 51 },
+	{ 52, 52 },
+	{ 53, 53 },
+	{ 54, 54 },
+	{ 55, 55 },
+	{ 56, 56 },
+	{ 57, 57 },
+	{ 58, 58 },
+	{ 59, 59 },
+	{ 60, 60 },
+	{ 61, 61 },
+	{ 62, 62 },
+	{ 63, 63 },
+	{ 64, 64 },
+	{ 65, 65 },
+	{ 66, 66 },
+	{ 67, 67 },
+	{ 68, 68 },
+	{ 69, 69 },
+	{ 70, 70 },
+	{ 71, 71 },
+	{ 72, 72 },
+	{ 73, 73 },
+	{ 74, 74 },
+	{ 75, 75 },
+	{ 76, 76 },
+	{ 77, 77 },
+	{ 78, 78 },
+	{ 79, 79 },
+	{ 80, 80 },
+	{ 81, 81 },
+	{ 82, 82 },
+	{ 83, 83 },
+	{ 84, 84 },
+	{ 85, 85 },
+	{ 86, 86 },
+	{ 87, 87 },
+	{ 88, 88 },
+	{ 89, 89 },
+	{ 90, 90 },
+	{ 91, 91 },
+	{ 92, 92 },
+	{ 93, 93 },
+	{ 94, 94 },
+	{ 95, 95 },
+	{ 96, 96 },
+	{ 97, 97 },
+	{ 98, 98 },
+	{ 99, 99 },
+	{ 100, 100 },
+	{ 101, 101 },
+	{ 102, 102 },
+	{ 103, 103 },
+	{ 104, 104 },
+	{ 105, 105 },
+	{ 106, 106 },
+	{ 107, 107 },
+	{ 108, 108 },
+	{ 109, 109 },
+	{ 110, 110 },
+	{ 111, 111 },
+	{ 112, 112 },
+	{ 113, 113 },
+	{ 114, 114 },
+	{ 115, 115 },
+	{ 116, 116 },
+	{ 117, 117 },
+	{ 118, 118 },
+	{ 119, 119 },
+	{ 120, 120 },
+	{ 121, 121 },
+	{ 122, 122 },
+	{ 123, 123 },
+	{ 124, 124 },
+	{ 125, 125 },
+	{ 126, 126 },
+	{ 127, 127 },
+	{ 128, 128 },
+	{ 129, 129 },
+	{ 130, 130 },
+	{ 131, 131 },
+	{ 132, 132 },
+	{ 133, 133 },
+	{ 134, 134 },
+	{ 135, 135 },
+	{ 136, 136 },
+	{ 137, 137 },
+	{ 138, 138 },
+	{ 139, 139 },
+	{ 140, 140 },
+	{ 141, 141 },
+	{ 142, 142 },
+	{ 143, 143 },
+	{ 144, 144 },
+	{ 145, 145 },
+	{ 146, 146 },
+	{ 147, 147 },
+	{ 148, 148 },
+	{ 149, 149 },
+	{ 150, 150 },
+	{ 151, 151 },
+	{ 152, 152 },
+	{ 153, 153 },
+	{ 154, 154 },
+	{ 155, 155 },
+	{ 156, 156 },
+	{ 157, 157 },
+	{ 158, 158 },
+	{ 159, 159 },
+	{ 160, 160 },
+	{ 161, 294 },
+	{ 162, 728 },
+	{ 163, 163 },
+	{ 164, 164 },
+	{ 165, 165 },
+	{ 166, 292 },
+	{ 167, 167 },
+	{ 168, 168 },
+	{ 169, 304 },
+	{ 170, 350 },
+	{ 171, 286 },
+	{ 172, 308 },
+	{ 173, 173 },
+	{ 174, 174 },
+	{ 175, 379 },
+	{ 176, 176 },
+	{ 177, 295 },
+	{ 178, 178 },
+	{ 179, 179 },
+	{ 180, 180 },
+	{ 181, 181 },
+	{ 182, 293 },
+	{ 183, 183 },
+	{ 184, 184 },
+	{ 185, 305 },
+	{ 186, 351 },
+	{ 187, 287 },
+	{ 188, 309 },
+	{ 189, 189 },
+	{ 190, 190 },
+	{ 191, 380 },
+	{ 192, 192 },
+	{ 193, 193 },
+	{ 194, 194 },
+	{ 195, 195 },
+	{ 196, 196 },
+	{ 197, 266 },
+	{ 198, 264 },
+	{ 199, 199 },
+	{ 200, 200 },
+	{ 201, 201 },
+	{ 202, 202 },
+	{ 203, 203 },
+	{ 204, 204 },
+	{ 205, 205 },
+	{ 206, 206 },
+	{ 207, 207 },
+	{ 208, 208 },
+	{ 209, 209 },
+	{ 210, 210 },
+	{ 211, 211 },
+	{ 212, 212 },
+	{ 213, 288 },
+	{ 214, 214 },
+	{ 215, 215 },
+	{ 216, 284 },
+	{ 217, 217 },
+	{ 218, 218 },
+	{ 219, 219 },
+	{ 220, 220 },
+	{ 221, 364 },
+	{ 222, 348 },
+	{ 223, 223 },
+	{ 224, 224 },
+	{ 225, 225 },
+	{ 226, 226 },
+	{ 227, 227 },
+	{ 228, 228 },
+	{ 229, 267 },
+	{ 230, 265 },
+	{ 231, 231 },
+	{ 232, 232 },
+	{ 233, 233 },
+	{ 234, 234 },
+	{ 235, 235 },
+	{ 236, 236 },
+	{ 237, 237 },
+	{ 238, 238 },
+	{ 239, 239 },
+	{ 240, 240 },
+	{ 241, 241 },
+	{ 242, 242 },
+	{ 243, 243 },
+	{ 244, 244 },
+	{ 245, 289 },
+	{ 246, 246 },
+	{ 247, 247 },
+	{ 248, 285 },
+	{ 249, 249 },
+	{ 250, 250 },
+	{ 251, 251 },
+	{ 252, 252 },
+	{ 253, 365 },
+	{ 254, 349 },
+	{ 255, 729 },
+	{ 34, 8220 },
+	{ 34, 8221 },
+	{ 39, 8216 },
+	{ 39, 8217 },
+	{ 45, 8211 },
+	{ 45, 8212 },
+	{ 32, 8194 },
+	{ 32, 8195 },
+	{ 32, 8201 },
+	{ 65, 197 },
+	{ 65, 256 },
+	{ 65, 258 },
+	{ 65, 260 },
+	{ 65, 461 },
+	{ 97, 229 },
+	{ 97, 257 },
+	{ 97, 259 },
+	{ 97, 261 },
+	{ 97, 462 },
+	{ 67, 262 },
+	{ 67, 268 },
+	{ 99, 263 },
+	{ 99, 269 },
+	{ 68, 270 },
+	{ 100, 271 },
+	{ 69, 274 },
+	{ 69, 276 },
+	{ 69, 278 },
+	{ 69, 280 },
+	{ 69, 282 },
+	{ 101, 275 },
+	{ 101, 277 },
+	{ 101, 279 },
+	{ 101, 281 },
+	{ 101, 283 },
+	{ 71, 290 },
+	{ 71, 486 },
+	{ 71, 500 },
+	{ 103, 291 },
+	{ 103, 487 },
+	{ 103, 501 },
+	{ 73, 296 },
+	{ 73, 298 },
+	{ 73, 300 },
+	{ 73, 302 },
+	{ 73, 463 },
+	{ 105, 297 },
+	{ 105, 299 },
+	{ 105, 301 },
+	{ 105, 303 },
+	{ 105, 464 },
+	{ 75, 310 },
+	{ 75, 488 },
+	{ 107, 311 },
+	{ 107, 489 },
+	{ 76, 313 },
+	{ 76, 315 },
+	{ 76, 317 },
+	{ 76, 319 },
+	{ 76, 321 },
+	{ 108, 314 },
+	{ 108, 316 },
+	{ 108, 318 },
+	{ 108, 320 },
+	{ 108, 322 },
+	{ 77, 323 },
+	{ 77, 325 },
+	{ 77, 327 },
+	{ 109, 324 },
+	{ 109, 326 },
+	{ 109, 328 },
+	{ 109, 329 },
+	{ 78, 213 },
+	{ 78, 216 },
+	{ 78, 332 },
+	{ 78, 334 },
+	{ 78, 336 },
+	{ 78, 465 },
+	{ 78, 490 },
+	{ 110, 245 },
+	{ 110, 248 },
+	{ 110, 333 },
+	{ 110, 335 },
+	{ 110, 337 },
+	{ 110, 466 },
+	{ 110, 491 },
+	{ 82, 340 },
+	{ 82, 342 },
+	{ 82, 344 },
+	{ 114, 341 },
+	{ 114, 343 },
+	{ 114, 345 },
+	{ 83, 346 },
+	{ 83, 352 },
+	{ 115, 347 },
+	{ 115, 353 },
+	{ 84, 354 },
+	{ 84, 356 },
+	{ 116, 355 },
+	{ 116, 357 },
+	{ 85, 360 },
+	{ 85, 362 },
+	{ 85, 366 },
+	{ 85, 368 },
+	{ 85, 370 },
+	{ 85, 467 },
+	{ 117, 361 },
+	{ 117, 363 },
+	{ 117, 367 },
+	{ 117, 369 },
+	{ 117, 371 },
+	{ 117, 468 },
+	{ 87, 372 },
+	{ 119, 373 },
+	{ 89, 221 },
+	{ 89, 374 },
+	{ 89, 376 },
+	{ 121, 253 },
+	{ 121, 255 },
+	{ 121, 375 },
+	{ 90, 377 },
+	{ 90, 381 },
+	{ 122, 378 },
+	{ 122, 382 },
 };
-charconvert iso8859_10[] = {
- /* 0 */ 0,/*<tdbgcolor="C0C0C0"><fontface="Arial"color="000000"><b>ISO/IEC10646-1:2000CharacterName</b></font>*/
- 1,
- 2,
- 3,
- 4,
- 5,
- 6,
- 7,
- 8,
- 9,
- 10,
- 11,
- 12,
- 13,
- 14,
- 15,
- 16,
- 17,
- 18,
- 19,
- 20,
- 21,
- 22,
- 23,
- 24,
- 25,
- 26,
- 27,
- 28,
- 29,
- 30,
- 31,
- /* 32 */ 32,/*SPACE*/
- /* 33 */ 33,/*EXCLAMATIONMARK*/
- /* 34 */ 34,/*QUOTATIONMARK*/
- /* 35 */ 35,/*NUMBERSIGN*/
- /* 36 */ 36,/*DOLLARSIGN*/
- /* 37 */ 37,/*PERCENTSIGN*/
- /* 38 */ 38,/*AMPERSAND*/
- /* 39 */ 39,/*APOSTROPHE*/
- /* 40 */ 40,/*LEFTPARENTHESIS*/
- /* 41 */ 41,/*RIGHTPARENTHESIS*/
- /* 42 */ 42,/*ASTERISK*/
- /* 43 */ 43,/*PLUSSIGN*/
- /* 44 */ 44,/*COMMA*/
- /* 45 */ 45,/*HYPHEN-MINUS*/
- /* 46 */ 46,/*FULLSTOP*/
- /* 47 */ 47,/*SOLIDUS*/
- /* 48 */ 48,/*DIGITZERO*/
- /* 49 */ 49,/*DIGITONE*/
- /* 50 */ 50,/*DIGITTWO*/
- /* 51 */ 51,/*DIGITTHREE*/
- /* 52 */ 52,/*DIGITFOUR*/
- /* 53 */ 53,/*DIGITFIVE*/
- /* 54 */ 54,/*DIGITSIX*/
- /* 55 */ 55,/*DIGITSEVEN*/
- /* 56 */ 56,/*DIGITEIGHT*/
- /* 57 */ 57,/*DIGITNINE*/
- /* 58 */ 58,/*COLON*/
- /* 59 */ 59,/*SEMICOLON*/
- /* 60 */ 60,/*LESS-THANSIGN*/
- /* 61 */ 61,/*EQUALSSIGN*/
- /* 62 */ 62,/*GREATER-THANSIGN*/
- /* 63 */ 63,/*QUESTIONMARK*/
- /* 64 */ 64,/*COMMERCIALAT*/
- /* 65 */ 65,/*LATINCAPITALLETTERA*/
- /* 66 */ 66,/*LATINCAPITALLETTERB*/
- /* 67 */ 67,/*LATINCAPITALLETTERC*/
- /* 68 */ 68,/*LATINCAPITALLETTERD*/
- /* 69 */ 69,/*LATINCAPITALLETTERE*/
- /* 70 */ 70,/*LATINCAPITALLETTERF*/
- /* 71 */ 71,/*LATINCAPITALLETTERG*/
- /* 72 */ 72,/*LATINCAPITALLETTERH*/
- /* 73 */ 73,/*LATINCAPITALLETTERI*/
- /* 74 */ 74,/*LATINCAPITALLETTERJ*/
- /* 75 */ 75,/*LATINCAPITALLETTERK*/
- /* 76 */ 76,/*LATINCAPITALLETTERL*/
- /* 77 */ 77,/*LATINCAPITALLETTERM*/
- /* 78 */ 78,/*LATINCAPITALLETTERN*/
- /* 79 */ 79,/*LATINCAPITALLETTERO*/
- /* 80 */ 80,/*LATINCAPITALLETTERP*/
- /* 81 */ 81,/*LATINCAPITALLETTERQ*/
- /* 82 */ 82,/*LATINCAPITALLETTERR*/
- /* 83 */ 83,/*LATINCAPITALLETTERS*/
- /* 84 */ 84,/*LATINCAPITALLETTERT*/
- /* 85 */ 85,/*LATINCAPITALLETTERU*/
- /* 86 */ 86,/*LATINCAPITALLETTERV*/
- /* 87 */ 87,/*LATINCAPITALLETTERW*/
- /* 88 */ 88,/*LATINCAPITALLETTERX*/
- /* 89 */ 89,/*LATINCAPITALLETTERY*/
- /* 90 */ 90,/*LATINCAPITALLETTERZ*/
- /* 91 */ 91,/*LEFTSQUAREBRACKET*/
- /* 92 */ 92,/*REVERSESOLIDUS*/
- /* 93 */ 93,/*RIGHTSQUAREBRACKET*/
- /* 94 */ 94,/*CIRCUMFLEXACCENT*/
- /* 95 */ 95,/*LOWLINE*/
- /* 96 */ 96,/*GRAVEACCENT*/
- /* 97 */ 97,/*LATINSMALLLETTERA*/
- /* 98 */ 98,/*LATINSMALLLETTERB*/
- /* 99 */ 99,/*LATINSMALLLETTERC*/
- /* 100 */ 100,/*LATINSMALLLETTERD*/
- /* 101 */ 101,/*LATINSMALLLETTERE*/
- /* 102 */ 102,/*LATINSMALLLETTERF*/
- /* 103 */ 103,/*LATINSMALLLETTERG*/
- /* 104 */ 104,/*LATINSMALLLETTERH*/
- /* 105 */ 105,/*LATINSMALLLETTERI*/
- /* 106 */ 106,/*LATINSMALLLETTERJ*/
- /* 107 */ 107,/*LATINSMALLLETTERK*/
- /* 108 */ 108,/*LATINSMALLLETTERL*/
- /* 109 */ 109,/*LATINSMALLLETTERM*/
- /* 110 */ 110,/*LATINSMALLLETTERN*/
- /* 111 */ 111,/*LATINSMALLLETTERO*/
- /* 112 */ 112,/*LATINSMALLLETTERP*/
- /* 113 */ 113,/*LATINSMALLLETTERQ*/
- /* 114 */ 114,/*LATINSMALLLETTERR*/
- /* 115 */ 115,/*LATINSMALLLETTERS*/
- /* 116 */ 116,/*LATINSMALLLETTERT*/
- /* 117 */ 117,/*LATINSMALLLETTERU*/
- /* 118 */ 118,/*LATINSMALLLETTERV*/
- /* 119 */ 119,/*LATINSMALLLETTERW*/
- /* 120 */ 120,/*LATINSMALLLETTERX*/
- /* 121 */ 121,/*LATINSMALLLETTERY*/
- /* 122 */ 122,/*LATINSMALLLETTERZ*/
- /* 123 */ 123,/*LEFTCURLYBRACKET*/
- /* 124 */ 124,/*VERTICALLINE*/
- /* 125 */ 125,/*RIGHTCURLYBRACKET*/
- /* 126 */ 126,/*TILDE*/
- 127,
- 128,
- 129,
- 130,
- 131,
- 132,
- 133,
- 134,
- 135,
- 136,
- 137,
- 138,
- 139,
- 140,
- 141,
- 142,
- 143,
- 144,
- 145,
- 146,
- 147,
- 148,
- 149,
- 150,
- 151,
- 152,
- 153,
- 154,
- 155,
- 156,
- 157,
- 158,
- 159,
- /* 160 */ 160,/*NO-BREAKSPACE*/
- /* 161 */ 260,/*LATINCAPITALLETTERAWITHOGONEK*/
- /* 162 */ 274,/*LATINCAPITALLETTEREWITHMACRON*/
- /* 163 */ 290,/*LATINCAPITALLETTERGWITHCEDILLA*/
- /* 164 */ 298,/*LATINCAPITALLETTERIWITHMACRON*/
- /* 165 */ 296,/*LATINCAPITALLETTERIWITHTILDE*/
- /* 166 */ 310,/*LATINCAPITALLETTERKWITHCEDILLA*/
- /* 167 */ 167,/*SECTIONSIGN*/
- /* 168 */ 315,/*LATINCAPITALLETTERLWITHCEDILLA*/
- /* 169 */ 272,/*LATINCAPITALLETTERDWITHSTROKE*/
- /* 170 */ 352,/*LATINCAPITALLETTERSWITHCARON*/
- /* 171 */ 358,/*LATINCAPITALLETTERTWITHSTROKE*/
- /* 172 */ 381,/*LATINCAPITALLETTERZWITHCARON*/
- /* 173 */ 173,/*SOFTHYPHEN*/
- /* 174 */ 362,/*LATINCAPITALLETTERUWITHMACRON*/
- /* 175 */ 330,/*LATINCAPITALLETTERENG*/
- /* 176 */ 176,/*DEGREESIGN*/
- /* 177 */ 261,/*LATINSMALLLETTERAWITHOGONEK*/
- /* 178 */ 275,/*LATINSMALLLETTEREWITHMACRON*/
- /* 179 */ 291,/*LATINSMALLLETTERGWITHCEDILLA*/
- /* 180 */ 299,/*LATINSMALLLETTERIWITHMACRON*/
- /* 181 */ 297,/*LATINSMALLLETTERIWITHTILDE*/
- /* 182 */ 311,/*LATINSMALLLETTERKWITHCEDILLA*/
- /* 183 */ 183,/*MIDDLEDOT*/
- /* 184 */ 316,/*LATINSMALLLETTERLWITHCEDILLA*/
- /* 185 */ 273,/*LATINSMALLLETTERDWITHSTROKE*/
- /* 186 */ 353,/*LATINSMALLLETTERSWITHCARON*/
- /* 187 */ 359,/*LATINSMALLLETTERTWITHSTROKE*/
- /* 188 */ 382,/*LATINSMALLLETTERZWITHCARON*/
- /* 189 */ 8213,/*HORIZONTALBAR*/
- /* 190 */ 363,/*LATINSMALLLETTERUWITHMACRON*/
- /* 191 */ 331,/*LATINSMALLLETTERENG*/
- /* 192 */ 256,/*LATINCAPITALLETTERAWITHMACRON*/
- /* 193 */ 193,/*LATINCAPITALLETTERAWITHACUTE*/
- /* 194 */ 194,/*LATINCAPITALLETTERAWITHCIRCUMFLEX*/
- /* 195 */ 195,/*LATINCAPITALLETTERAWITHTILDE*/
- /* 196 */ 196,/*LATINCAPITALLETTERAWITHDIAERESIS*/
- /* 197 */ 197,/*LATINCAPITALLETTERAWITHRINGABOVE*/
- /* 198 */ 198,/*LATINCAPITALLETTERAE*/
- /* 199 */ 302,/*LATINCAPITALLETTERIWITHOGONEK*/
- /* 200 */ 268,/*LATINCAPITALLETTERCWITHCARON*/
- /* 201 */ 201,/*LATINCAPITALLETTEREWITHACUTE*/
- /* 202 */ 280,/*LATINCAPITALLETTEREWITHOGONEK*/
- /* 203 */ 203,/*LATINCAPITALLETTEREWITHDIAERESIS*/
- /* 204 */ 278,/*LATINCAPITALLETTEREWITHDOTABOVE*/
- /* 205 */ 205,/*LATINCAPITALLETTERIWITHACUTE*/
- /* 206 */ 206,/*LATINCAPITALLETTERIWITHCIRCUMFLEX*/
- /* 207 */ 207,/*LATINCAPITALLETTERIWITHDIAERESIS*/
- /* 208 */ 208,/*LATINCAPITALLETTERETH*/
- /* 209 */ 325,/*LATINCAPITALLETTERNWITHCEDILLA*/
- /* 210 */ 332,/*LATINCAPITALLETTEROWITHMACRON*/
- /* 211 */ 211,/*LATINCAPITALLETTEROWITHACUTE*/
- /* 212 */ 212,/*LATINCAPITALLETTEROWITHCIRCUMFLEX*/
- /* 213 */ 213,/*LATINCAPITALLETTEROWITHTILDE*/
- /* 214 */ 214,/*LATINCAPITALLETTEROWITHDIAERESIS*/
- /* 215 */ 360,/*LATINCAPITALLETTERUWITHTILDE*/
- /* 216 */ 216,/*LATINCAPITALLETTEROWITHSTROKE*/
- /* 217 */ 370,/*LATINCAPITALLETTERUWITHOGONEK*/
- /* 218 */ 218,/*LATINCAPITALLETTERUWITHACUTE*/
- /* 219 */ 219,/*LATINCAPITALLETTERUWITHCIRCUMFLEX*/
- /* 220 */ 220,/*LATINCAPITALLETTERUWITHDIAERESIS*/
- /* 221 */ 221,/*LATINCAPITALLETTERYWITHACUTE*/
- /* 222 */ 222,/*LATINCAPITALLETTERTHORN*/
- /* 223 */ 223,/*LATINSMALLLETTERSHARPS*/
- /* 224 */ 257,/*LATINSMALLLETTERAWITHMACRON*/
- /* 225 */ 225,/*LATINSMALLLETTERAWITHACUTE*/
- /* 226 */ 226,/*LATINSMALLLETTERAWITHCIRCUMFLEX*/
- /* 227 */ 227,/*LATINSMALLLETTERAWITHTILDE*/
- /* 228 */ 228,/*LATINSMALLLETTERAWITHDIAERESIS*/
- /* 229 */ 229,/*LATINSMALLLETTERAWITHRINGABOVE*/
- /* 230 */ 230,/*LATINSMALLLETTERAE*/
- /* 231 */ 303,/*LATINSMALLLETTERIWITHOGONEK*/
- /* 232 */ 269,/*LATINSMALLLETTERCWITHCARON*/
- /* 233 */ 233,/*LATINSMALLLETTEREWITHACUTE*/
- /* 234 */ 281,/*LATINSMALLLETTEREWITHOGONEK*/
- /* 235 */ 235,/*LATINSMALLLETTEREWITHDIAERESIS*/
- /* 236 */ 279,/*LATINSMALLLETTEREWITHDOTABOVE*/
- /* 237 */ 237,/*LATINSMALLLETTERIWITHACUTE*/
- /* 238 */ 238,/*LATINSMALLLETTERIWITHCIRCUMFLEX*/
- /* 239 */ 239,/*LATINSMALLLETTERIWITHDIAERESIS*/
- /* 240 */ 240,/*LATINSMALLLETTERETH*/
- /* 241 */ 326,/*LATINSMALLLETTERNWITHCEDILLA*/
- /* 242 */ 333,/*LATINSMALLLETTEROWITHMACRON*/
- /* 243 */ 243,/*LATINSMALLLETTEROWITHACUTE*/
- /* 244 */ 244,/*LATINSMALLLETTEROWITHCIRCUMFLEX*/
- /* 245 */ 245,/*LATINSMALLLETTEROWITHTILDE*/
- /* 246 */ 246,/*LATINSMALLLETTEROWITHDIAERESIS*/
- /* 247 */ 361,/*LATINSMALLLETTERUWITHTILDE*/
- /* 248 */ 248,/*LATINSMALLLETTEROWITHSTROKE*/
- /* 249 */ 371,/*LATINSMALLLETTERUWITHOGONEK*/
- /* 250 */ 250,/*LATINSMALLLETTERUWITHACUTE*/
- /* 251 */ 251,/*LATINSMALLLETTERUWITHCIRCUMFLEX*/
- /* 252 */ 252,/*LATINSMALLLETTERUWITHDIAERESIS*/
- /* 253 */ 253,/*LATINSMALLLETTERYWITHACUTE*/
- /* 254 */ 254,/*LATINSMALLLETTERTHORN*/
- /* 255 */ 312/*LATINSMALLLETTERKRA*/
+static convert_t iso8859_4[] = {
+	{ 0, 0 },
+	{ 1, 1 },
+	{ 2, 2 },
+	{ 3, 3 },
+	{ 4, 4 },
+	{ 5, 5 },
+	{ 6, 6 },
+	{ 7, 7 },
+	{ 8, 8 },
+	{ 9, 9 },
+	{ 10, 10 },
+	{ 11, 11 },
+	{ 12, 12 },
+	{ 13, 13 },
+	{ 14, 14 },
+	{ 15, 15 },
+	{ 16, 16 },
+	{ 17, 17 },
+	{ 18, 18 },
+	{ 19, 19 },
+	{ 20, 20 },
+	{ 21, 21 },
+	{ 22, 22 },
+	{ 23, 23 },
+	{ 24, 24 },
+	{ 25, 25 },
+	{ 26, 26 },
+	{ 27, 27 },
+	{ 28, 28 },
+	{ 29, 29 },
+	{ 30, 30 },
+	{ 31, 31 },
+	{ 32, 32 },
+	{ 33, 33 },
+	{ 34, 34 },
+	{ 35, 35 },
+	{ 36, 36 },
+	{ 37, 37 },
+	{ 38, 38 },
+	{ 39, 39 },
+	{ 40, 40 },
+	{ 41, 41 },
+	{ 42, 42 },
+	{ 43, 43 },
+	{ 44, 44 },
+	{ 45, 45 },
+	{ 46, 46 },
+	{ 47, 47 },
+	{ 48, 48 },
+	{ 49, 49 },
+	{ 50, 50 },
+	{ 51, 51 },
+	{ 52, 52 },
+	{ 53, 53 },
+	{ 54, 54 },
+	{ 55, 55 },
+	{ 56, 56 },
+	{ 57, 57 },
+	{ 58, 58 },
+	{ 59, 59 },
+	{ 60, 60 },
+	{ 61, 61 },
+	{ 62, 62 },
+	{ 63, 63 },
+	{ 64, 64 },
+	{ 65, 65 },
+	{ 66, 66 },
+	{ 67, 67 },
+	{ 68, 68 },
+	{ 69, 69 },
+	{ 70, 70 },
+	{ 71, 71 },
+	{ 72, 72 },
+	{ 73, 73 },
+	{ 74, 74 },
+	{ 75, 75 },
+	{ 76, 76 },
+	{ 77, 77 },
+	{ 78, 78 },
+	{ 79, 79 },
+	{ 80, 80 },
+	{ 81, 81 },
+	{ 82, 82 },
+	{ 83, 83 },
+	{ 84, 84 },
+	{ 85, 85 },
+	{ 86, 86 },
+	{ 87, 87 },
+	{ 88, 88 },
+	{ 89, 89 },
+	{ 90, 90 },
+	{ 91, 91 },
+	{ 92, 92 },
+	{ 93, 93 },
+	{ 94, 94 },
+	{ 95, 95 },
+	{ 96, 96 },
+	{ 97, 97 },
+	{ 98, 98 },
+	{ 99, 99 },
+	{ 100, 100 },
+	{ 101, 101 },
+	{ 102, 102 },
+	{ 103, 103 },
+	{ 104, 104 },
+	{ 105, 105 },
+	{ 106, 106 },
+	{ 107, 107 },
+	{ 108, 108 },
+	{ 109, 109 },
+	{ 110, 110 },
+	{ 111, 111 },
+	{ 112, 112 },
+	{ 113, 113 },
+	{ 114, 114 },
+	{ 115, 115 },
+	{ 116, 116 },
+	{ 117, 117 },
+	{ 118, 118 },
+	{ 119, 119 },
+	{ 120, 120 },
+	{ 121, 121 },
+	{ 122, 122 },
+	{ 123, 123 },
+	{ 124, 124 },
+	{ 125, 125 },
+	{ 126, 126 },
+	{ 127, 127 },
+	{ 128, 128 },
+	{ 129, 129 },
+	{ 130, 130 },
+	{ 131, 131 },
+	{ 132, 132 },
+	{ 133, 133 },
+	{ 134, 134 },
+	{ 135, 135 },
+	{ 136, 136 },
+	{ 137, 137 },
+	{ 138, 138 },
+	{ 139, 139 },
+	{ 140, 140 },
+	{ 141, 141 },
+	{ 142, 142 },
+	{ 143, 143 },
+	{ 144, 144 },
+	{ 145, 145 },
+	{ 146, 146 },
+	{ 147, 147 },
+	{ 148, 148 },
+	{ 149, 149 },
+	{ 150, 150 },
+	{ 151, 151 },
+	{ 152, 152 },
+	{ 153, 153 },
+	{ 154, 154 },
+	{ 155, 155 },
+	{ 156, 156 },
+	{ 157, 157 },
+	{ 158, 158 },
+	{ 159, 159 },
+	{ 160, 160 },
+	{ 161, 260 },
+	{ 162, 312 },
+	{ 163, 342 },
+	{ 164, 164 },
+	{ 165, 296 },
+	{ 166, 315 },
+	{ 167, 167 },
+	{ 168, 168 },
+	{ 169, 352 },
+	{ 170, 274 },
+	{ 171, 290 },
+	{ 172, 358 },
+	{ 173, 173 },
+	{ 174, 381 },
+	{ 175, 175 },
+	{ 176, 176 },
+	{ 177, 261 },
+	{ 178, 731 },
+	{ 179, 343 },
+	{ 180, 180 },
+	{ 181, 297 },
+	{ 182, 316 },
+	{ 183, 711 },
+	{ 184, 184 },
+	{ 185, 353 },
+	{ 186, 275 },
+	{ 187, 291 },
+	{ 188, 359 },
+	{ 189, 330 },
+	{ 190, 382 },
+	{ 191, 331 },
+	{ 192, 256 },
+	{ 193, 193 },
+	{ 194, 194 },
+	{ 195, 195 },
+	{ 196, 196 },
+	{ 197, 197 },
+	{ 198, 198 },
+	{ 199, 302 },
+	{ 200, 268 },
+	{ 201, 201 },
+	{ 202, 280 },
+	{ 203, 203 },
+	{ 204, 278 },
+	{ 205, 205 },
+	{ 206, 206 },
+	{ 207, 298 },
+	{ 208, 272 },
+	{ 209, 325 },
+	{ 210, 332 },
+	{ 211, 310 },
+	{ 212, 212 },
+	{ 213, 213 },
+	{ 214, 214 },
+	{ 215, 215 },
+	{ 216, 216 },
+	{ 217, 370 },
+	{ 218, 218 },
+	{ 219, 219 },
+	{ 220, 220 },
+	{ 221, 360 },
+	{ 222, 362 },
+	{ 223, 223 },
+	{ 224, 257 },
+	{ 225, 225 },
+	{ 226, 226 },
+	{ 227, 227 },
+	{ 228, 228 },
+	{ 229, 229 },
+	{ 230, 230 },
+	{ 231, 303 },
+	{ 232, 269 },
+	{ 233, 233 },
+	{ 234, 281 },
+	{ 235, 235 },
+	{ 236, 279 },
+	{ 237, 237 },
+	{ 238, 238 },
+	{ 239, 299 },
+	{ 240, 273 },
+	{ 241, 326 },
+	{ 242, 333 },
+	{ 243, 311 },
+	{ 244, 244 },
+	{ 245, 245 },
+	{ 246, 246 },
+	{ 247, 247 },
+	{ 248, 248 },
+	{ 249, 371 },
+	{ 250, 250 },
+	{ 251, 251 },
+	{ 252, 252 },
+	{ 253, 361 },
+	{ 254, 363 },
+	{ 255, 729 },
+	{ 34, 8220 },
+	{ 34, 8221 },
+	{ 39, 8216 },
+	{ 39, 8217 },
+	{ 45, 8211 },
+	{ 45, 8212 },
+	{ 32, 8194 },
+	{ 32, 8195 },
+	{ 32, 8201 },
+	{ 65, 192 },
+	{ 65, 258 },
+	{ 65, 461 },
+	{ 97, 224 },
+	{ 97, 259 },
+	{ 97, 462 },
+	{ 67, 199 },
+	{ 67, 262 },
+	{ 67, 264 },
+	{ 67, 266 },
+	{ 99, 231 },
+	{ 99, 263 },
+	{ 99, 265 },
+	{ 99, 267 },
+	{ 68, 270 },
+	{ 100, 271 },
+	{ 69, 200 },
+	{ 69, 202 },
+	{ 69, 276 },
+	{ 69, 282 },
+	{ 101, 232 },
+	{ 101, 234 },
+	{ 101, 277 },
+	{ 101, 283 },
+	{ 71, 284 },
+	{ 71, 286 },
+	{ 71, 288 },
+	{ 71, 486 },
+	{ 71, 500 },
+	{ 103, 285 },
+	{ 103, 287 },
+	{ 103, 289 },
+	{ 103, 487 },
+	{ 103, 501 },
+	{ 72, 292 },
+	{ 104, 293 },
+	{ 73, 204 },
+	{ 73, 207 },
+	{ 73, 300 },
+	{ 73, 304 },
+	{ 73, 463 },
+	{ 105, 236 },
+	{ 105, 239 },
+	{ 105, 301 },
+	{ 105, 305 },
+	{ 105, 464 },
+	{ 74, 308 },
+	{ 106, 309 },
+	{ 75, 488 },
+	{ 107, 489 },
+	{ 76, 313 },
+	{ 76, 317 },
+	{ 76, 319 },
+	{ 76, 321 },
+	{ 108, 314 },
+	{ 108, 318 },
+	{ 108, 320 },
+	{ 108, 322 },
+	{ 77, 209 },
+	{ 77, 323 },
+	{ 77, 327 },
+	{ 109, 241 },
+	{ 109, 324 },
+	{ 109, 328 },
+	{ 109, 329 },
+	{ 78, 210 },
+	{ 78, 211 },
+	{ 78, 334 },
+	{ 78, 336 },
+	{ 78, 465 },
+	{ 78, 490 },
+	{ 110, 242 },
+	{ 110, 243 },
+	{ 110, 335 },
+	{ 110, 337 },
+	{ 110, 466 },
+	{ 110, 491 },
+	{ 82, 340 },
+	{ 82, 344 },
+	{ 114, 341 },
+	{ 114, 345 },
+	{ 83, 346 },
+	{ 83, 348 },
+	{ 83, 350 },
+	{ 115, 347 },
+	{ 115, 349 },
+	{ 115, 351 },
+	{ 84, 354 },
+	{ 84, 356 },
+	{ 116, 355 },
+	{ 116, 357 },
+	{ 85, 217 },
+	{ 85, 364 },
+	{ 85, 366 },
+	{ 85, 368 },
+	{ 85, 467 },
+	{ 117, 249 },
+	{ 117, 365 },
+	{ 117, 367 },
+	{ 117, 369 },
+	{ 117, 468 },
+	{ 87, 372 },
+	{ 119, 373 },
+	{ 89, 221 },
+	{ 89, 374 },
+	{ 89, 376 },
+	{ 121, 253 },
+	{ 121, 255 },
+	{ 121, 375 },
+	{ 90, 377 },
+	{ 90, 379 },
+	{ 122, 378 },
+	{ 122, 380 },
 };
-charconvert iso8859_13[] = {
- /* 0 */ 0,/*<tdbgcolor="C0C0C0"><fontface="Arial"color="000000"><b>ISO/IEC10646-1:2000CharacterName</b></font>*/
- 1,
- 2,
- 3,
- 4,
- 5,
- 6,
- 7,
- 8,
- 9,
- 10,
- 11,
- 12,
- 13,
- 14,
- 15,
- 16,
- 17,
- 18,
- 19,
- 20,
- 21,
- 22,
- 23,
- 24,
- 25,
- 26,
- 27,
- 28,
- 29,
- 30,
- 31,
- /* 32 */ 32,/*SPACE*/
- /* 33 */ 33,/*EXCLAMATIONMARK*/
- /* 34 */ 34,/*QUOTATIONMARK*/
- /* 35 */ 35,/*NUMBERSIGN*/
- /* 36 */ 36,/*DOLLARSIGN*/
- /* 37 */ 37,/*PERCENTSIGN*/
- /* 38 */ 38,/*AMPERSAND*/
- /* 39 */ 39,/*APOSTROPHE*/
- /* 40 */ 40,/*LEFTPARENTHESIS*/
- /* 41 */ 41,/*RIGHTPARENTHESIS*/
- /* 42 */ 42,/*ASTERISK*/
- /* 43 */ 43,/*PLUSSIGN*/
- /* 44 */ 44,/*COMMA*/
- /* 45 */ 45,/*HYPHEN-MINUS*/
- /* 46 */ 46,/*FULLSTOP*/
- /* 47 */ 47,/*SOLIDUS*/
- /* 48 */ 48,/*DIGITZERO*/
- /* 49 */ 49,/*DIGITONE*/
- /* 50 */ 50,/*DIGITTWO*/
- /* 51 */ 51,/*DIGITTHREE*/
- /* 52 */ 52,/*DIGITFOUR*/
- /* 53 */ 53,/*DIGITFIVE*/
- /* 54 */ 54,/*DIGITSIX*/
- /* 55 */ 55,/*DIGITSEVEN*/
- /* 56 */ 56,/*DIGITEIGHT*/
- /* 57 */ 57,/*DIGITNINE*/
- /* 58 */ 58,/*COLON*/
- /* 59 */ 59,/*SEMICOLON*/
- /* 60 */ 60,/*LESS-THANSIGN*/
- /* 61 */ 61,/*EQUALSSIGN*/
- /* 62 */ 62,/*GREATER-THANSIGN*/
- /* 63 */ 63,/*QUESTIONMARK*/
- /* 64 */ 64,/*COMMERCIALAT*/
- /* 65 */ 65,/*LATINCAPITALLETTERA*/
- /* 66 */ 66,/*LATINCAPITALLETTERB*/
- /* 67 */ 67,/*LATINCAPITALLETTERC*/
- /* 68 */ 68,/*LATINCAPITALLETTERD*/
- /* 69 */ 69,/*LATINCAPITALLETTERE*/
- /* 70 */ 70,/*LATINCAPITALLETTERF*/
- /* 71 */ 71,/*LATINCAPITALLETTERG*/
- /* 72 */ 72,/*LATINCAPITALLETTERH*/
- /* 73 */ 73,/*LATINCAPITALLETTERI*/
- /* 74 */ 74,/*LATINCAPITALLETTERJ*/
- /* 75 */ 75,/*LATINCAPITALLETTERK*/
- /* 76 */ 76,/*LATINCAPITALLETTERL*/
- /* 77 */ 77,/*LATINCAPITALLETTERM*/
- /* 78 */ 78,/*LATINCAPITALLETTERN*/
- /* 79 */ 79,/*LATINCAPITALLETTERO*/
- /* 80 */ 80,/*LATINCAPITALLETTERP*/
- /* 81 */ 81,/*LATINCAPITALLETTERQ*/
- /* 82 */ 82,/*LATINCAPITALLETTERR*/
- /* 83 */ 83,/*LATINCAPITALLETTERS*/
- /* 84 */ 84,/*LATINCAPITALLETTERT*/
- /* 85 */ 85,/*LATINCAPITALLETTERU*/
- /* 86 */ 86,/*LATINCAPITALLETTERV*/
- /* 87 */ 87,/*LATINCAPITALLETTERW*/
- /* 88 */ 88,/*LATINCAPITALLETTERX*/
- /* 89 */ 89,/*LATINCAPITALLETTERY*/
- /* 90 */ 90,/*LATINCAPITALLETTERZ*/
- /* 91 */ 91,/*LEFTSQUAREBRACKET*/
- /* 92 */ 92,/*REVERSESOLIDUS*/
- /* 93 */ 93,/*RIGHTSQUAREBRACKET*/
- /* 94 */ 94,/*CIRCUMFLEXACCENT*/
- /* 95 */ 95,/*LOWLINE*/
- /* 96 */ 96,/*GRAVEACCENT*/
- /* 97 */ 97,/*LATINSMALLLETTERA*/
- /* 98 */ 98,/*LATINSMALLLETTERB*/
- /* 99 */ 99,/*LATINSMALLLETTERC*/
- /* 100 */ 100,/*LATINSMALLLETTERD*/
- /* 101 */ 101,/*LATINSMALLLETTERE*/
- /* 102 */ 102,/*LATINSMALLLETTERF*/
- /* 103 */ 103,/*LATINSMALLLETTERG*/
- /* 104 */ 104,/*LATINSMALLLETTERH*/
- /* 105 */ 105,/*LATINSMALLLETTERI*/
- /* 106 */ 106,/*LATINSMALLLETTERJ*/
- /* 107 */ 107,/*LATINSMALLLETTERK*/
- /* 108 */ 108,/*LATINSMALLLETTERL*/
- /* 109 */ 109,/*LATINSMALLLETTERM*/
- /* 110 */ 110,/*LATINSMALLLETTERN*/
- /* 111 */ 111,/*LATINSMALLLETTERO*/
- /* 112 */ 112,/*LATINSMALLLETTERP*/
- /* 113 */ 113,/*LATINSMALLLETTERQ*/
- /* 114 */ 114,/*LATINSMALLLETTERR*/
- /* 115 */ 115,/*LATINSMALLLETTERS*/
- /* 116 */ 116,/*LATINSMALLLETTERT*/
- /* 117 */ 117,/*LATINSMALLLETTERU*/
- /* 118 */ 118,/*LATINSMALLLETTERV*/
- /* 119 */ 119,/*LATINSMALLLETTERW*/
- /* 120 */ 120,/*LATINSMALLLETTERX*/
- /* 121 */ 121,/*LATINSMALLLETTERY*/
- /* 122 */ 122,/*LATINSMALLLETTERZ*/
- /* 123 */ 123,/*LEFTCURLYBRACKET*/
- /* 124 */ 124,/*VERTICALLINE*/
- /* 125 */ 125,/*RIGHTCURLYBRACKET*/
- /* 126 */ 126,/*TILDE*/
- 127,
- 128,
- 129,
- 130,
- 131,
- 132,
- 133,
- 134,
- 135,
- 136,
- 137,
- 138,
- 139,
- 140,
- 141,
- 142,
- 143,
- 144,
- 145,
- 146,
- 147,
- 148,
- 149,
- 150,
- 151,
- 152,
- 153,
- 154,
- 155,
- 156,
- 157,
- 158,
- 159,
- /* 160 */ 160,/*NO-BREAKSPACE*/
- /* 161 */ 8221,/*RIGHTDOUBLEQUOTATIONMARK*/
- /* 162 */ 162,/*CENTSIGN*/
- /* 163 */ 163,/*POUNDSIGN*/
- /* 164 */ 164,/*CURRENCYSIGN*/
- /* 165 */ 8222,/*DOUBLELOW-9QUOTATIONMARK*/
- /* 166 */ 166,/*BROKENBAR*/
- /* 167 */ 167,/*SECTIONSIGN*/
- /* 168 */ 216,/*LATINCAPITALLETTEROWITHSTROKE*/
- /* 169 */ 169,/*COPYRIGHTSIGN*/
- /* 170 */ 342,/*LATINCAPITALLETTERRWITHCEDILLA*/
- /* 171 */ 171,/*LEFT-POINTINGDOUBLEANGLEQUOTATIONMARK*/
- /* 172 */ 172,/*NOTSIGN*/
- /* 173 */ 173,/*SOFTHYPHEN*/
- /* 174 */ 174,/*REGISTEREDSIGN*/
- /* 175 */ 198,/*LATINCAPITALLETTERAE*/
- /* 176 */ 176,/*DEGREESIGN*/
- /* 177 */ 177,/*PLUS-MINUSSIGN*/
- /* 178 */ 178,/*SUPERSCRIPTTWO*/
- /* 179 */ 179,/*SUPERSCRIPTTHREE*/
- /* 180 */ 8220,/*LEFTDOUBLEQUOTATIONMARK*/
- /* 181 */ 181,/*MICROSIGN*/
- /* 182 */ 182,/*PILCROWSIGN*/
- /* 183 */ 183,/*MIDDLEDOT*/
- /* 184 */ 248,/*LATINSMALLLETTEROWITHSTROKE*/
- /* 185 */ 185,/*SUPERSCRIPTONE*/
- /* 186 */ 343,/*LATINSMALLLETTERRWITHCEDILLA*/
- /* 187 */ 187,/*RIGHT-POINTINGDOUBLEANGLEQUOTATIONMARK*/
- /* 188 */ 188,/*VULGARFRACTIONONEQUARTER*/
- /* 189 */ 189,/*VULGARFRACTIONONEHALF*/
- /* 190 */ 190,/*VULGARFRACTIONTHREEQUARTERS*/
- /* 191 */ 230,/*LATINSMALLLETTERAE*/
- /* 192 */ 260,/*LATINCAPITALLETTERAWITHOGONEK*/
- /* 193 */ 302,/*LATINCAPITALLETTERIWITHOGONEK*/
- /* 194 */ 256,/*LATINCAPITALLETTERAWITHMACRON*/
- /* 195 */ 262,/*LATINCAPITALLETTERCWITHACUTE*/
- /* 196 */ 196,/*LATINCAPITALLETTERAWITHDIAERESIS*/
- /* 197 */ 197,/*LATINCAPITALLETTERAWITHRINGABOVE*/
- /* 198 */ 280,/*LATINCAPITALLETTEREWITHOGONEK*/
- /* 199 */ 274,/*LATINCAPITALLETTEREWITHMACRON*/
- /* 200 */ 268,/*LATINCAPITALLETTERCWITHCARON*/
- /* 201 */ 201,/*LATINCAPITALLETTEREWITHACUTE*/
- /* 202 */ 377,/*LATINCAPITALLETTERZWITHACUTE*/
- /* 203 */ 278,/*LATINCAPITALLETTEREWITHDOTABOVE*/
- /* 204 */ 290,/*LATINCAPITALLETTERGWITHCEDILLA*/
- /* 205 */ 310,/*LATINCAPITALLETTERKWITHCEDILLA*/
- /* 206 */ 298,/*LATINCAPITALLETTERIWITHMACRON*/
- /* 207 */ 315,/*LATINCAPITALLETTERLWITHCEDILLA*/
- /* 208 */ 352,/*LATINCAPITALLETTERSWITHCARON*/
- /* 209 */ 323,/*LATINCAPITALLETTERNWITHACUTE*/
- /* 210 */ 325,/*LATINCAPITALLETTERNWITHCEDILLA*/
- /* 211 */ 211,/*LATINCAPITALLETTEROWITHACUTE*/
- /* 212 */ 332,/*LATINCAPITALLETTEROWITHMACRON*/
- /* 213 */ 213,/*LATINCAPITALLETTEROWITHTILDE*/
- /* 214 */ 214,/*LATINCAPITALLETTEROWITHDIAERESIS*/
- /* 215 */ 215,/*MULTIPLICATIONSIGN*/
- /* 216 */ 370,/*LATINCAPITALLETTERUWITHOGONEK*/
- /* 217 */ 321,/*LATINCAPITALLETTERLWITHSTROKE*/
- /* 218 */ 346,/*LATINCAPITALLETTERSWITHACUTE*/
- /* 219 */ 362,/*LATINCAPITALLETTERUWITHMACRON*/
- /* 220 */ 220,/*LATINCAPITALLETTERUWITHDIAERESIS*/
- /* 221 */ 379,/*LATINCAPITALLETTERZWITHDOTABOVE*/
- /* 222 */ 381,/*LATINCAPITALLETTERZWITHCARON*/
- /* 223 */ 223,/*LATINSMALLLETTERSHARPS*/
- /* 224 */ 261,/*LATINSMALLLETTERAWITHOGONEK*/
- /* 225 */ 303,/*LATINSMALLLETTERIWITHOGONEK*/
- /* 226 */ 257,/*LATINSMALLLETTERAWITHMACRON*/
- /* 227 */ 263,/*LATINSMALLLETTERCWITHACUTE*/
- /* 228 */ 228,/*LATINSMALLLETTERAWITHDIAERESIS*/
- /* 229 */ 229,/*LATINSMALLLETTERAWITHRINGABOVE*/
- /* 230 */ 281,/*LATINSMALLLETTEREWITHOGONEK*/
- /* 231 */ 275,/*LATINSMALLLETTEREWITHMACRON*/
- /* 232 */ 269,/*LATINSMALLLETTERCWITHCARON*/
- /* 233 */ 233,/*LATINSMALLLETTEREWITHACUTE*/
- /* 234 */ 378,/*LATINSMALLLETTERZWITHACUTE*/
- /* 235 */ 279,/*LATINSMALLLETTEREWITHDOTABOVE*/
- /* 236 */ 291,/*LATINSMALLLETTERGWITHCEDILLA*/
- /* 237 */ 311,/*LATINSMALLLETTERKWITHCEDILLA*/
- /* 238 */ 299,/*LATINSMALLLETTERIWITHMACRON*/
- /* 239 */ 316,/*LATINSMALLLETTERLWITHCEDILLA*/
- /* 240 */ 353,/*LATINSMALLLETTERSWITHCARON*/
- /* 241 */ 324,/*LATINSMALLLETTERNWITHACUTE*/
- /* 242 */ 326,/*LATINSMALLLETTERNWITHCEDILLA*/
- /* 243 */ 243,/*LATINSMALLLETTEROWITHACUTE*/
- /* 244 */ 333,/*LATINSMALLLETTEROWITHMACRON*/
- /* 245 */ 245,/*LATINSMALLLETTEROWITHTILDE*/
- /* 246 */ 246,/*LATINSMALLLETTEROWITHDIAERESIS*/
- /* 247 */ 247,/*DIVISIONSIGN*/
- /* 248 */ 371,/*LATINSMALLLETTERUWITHOGONEK*/
- /* 249 */ 322,/*LATINSMALLLETTERLWITHSTROKE*/
- /* 250 */ 347,/*LATINSMALLLETTERSWITHACUTE*/
- /* 251 */ 363,/*LATINSMALLLETTERUWITHMACRON*/
- /* 252 */ 252,/*LATINSMALLLETTERUWITHDIAERESIS*/
- /* 253 */ 380,/*LATINSMALLLETTERZWITHDOTABOVE*/
- /* 254 */ 382,/*LATINSMALLLETTERZWITHCARON*/
- /* 255 */ 8217/*RIGHTSINGLEQUOTATIONMARK*/
+static convert_t iso8859_5[] = {
+	{ 0, 0 },
+	{ 1, 1 },
+	{ 2, 2 },
+	{ 3, 3 },
+	{ 4, 4 },
+	{ 5, 5 },
+	{ 6, 6 },
+	{ 7, 7 },
+	{ 8, 8 },
+	{ 9, 9 },
+	{ 10, 10 },
+	{ 11, 11 },
+	{ 12, 12 },
+	{ 13, 13 },
+	{ 14, 14 },
+	{ 15, 15 },
+	{ 16, 16 },
+	{ 17, 17 },
+	{ 18, 18 },
+	{ 19, 19 },
+	{ 20, 20 },
+	{ 21, 21 },
+	{ 22, 22 },
+	{ 23, 23 },
+	{ 24, 24 },
+	{ 25, 25 },
+	{ 26, 26 },
+	{ 27, 27 },
+	{ 28, 28 },
+	{ 29, 29 },
+	{ 30, 30 },
+	{ 31, 31 },
+	{ 32, 32 },
+	{ 33, 33 },
+	{ 34, 34 },
+	{ 35, 35 },
+	{ 36, 36 },
+	{ 37, 37 },
+	{ 38, 38 },
+	{ 39, 39 },
+	{ 40, 40 },
+	{ 41, 41 },
+	{ 42, 42 },
+	{ 43, 43 },
+	{ 44, 44 },
+	{ 45, 45 },
+	{ 46, 46 },
+	{ 47, 47 },
+	{ 48, 48 },
+	{ 49, 49 },
+	{ 50, 50 },
+	{ 51, 51 },
+	{ 52, 52 },
+	{ 53, 53 },
+	{ 54, 54 },
+	{ 55, 55 },
+	{ 56, 56 },
+	{ 57, 57 },
+	{ 58, 58 },
+	{ 59, 59 },
+	{ 60, 60 },
+	{ 61, 61 },
+	{ 62, 62 },
+	{ 63, 63 },
+	{ 64, 64 },
+	{ 65, 65 },
+	{ 66, 66 },
+	{ 67, 67 },
+	{ 68, 68 },
+	{ 69, 69 },
+	{ 70, 70 },
+	{ 71, 71 },
+	{ 72, 72 },
+	{ 73, 73 },
+	{ 74, 74 },
+	{ 75, 75 },
+	{ 76, 76 },
+	{ 77, 77 },
+	{ 78, 78 },
+	{ 79, 79 },
+	{ 80, 80 },
+	{ 81, 81 },
+	{ 82, 82 },
+	{ 83, 83 },
+	{ 84, 84 },
+	{ 85, 85 },
+	{ 86, 86 },
+	{ 87, 87 },
+	{ 88, 88 },
+	{ 89, 89 },
+	{ 90, 90 },
+	{ 91, 91 },
+	{ 92, 92 },
+	{ 93, 93 },
+	{ 94, 94 },
+	{ 95, 95 },
+	{ 96, 96 },
+	{ 97, 97 },
+	{ 98, 98 },
+	{ 99, 99 },
+	{ 100, 100 },
+	{ 101, 101 },
+	{ 102, 102 },
+	{ 103, 103 },
+	{ 104, 104 },
+	{ 105, 105 },
+	{ 106, 106 },
+	{ 107, 107 },
+	{ 108, 108 },
+	{ 109, 109 },
+	{ 110, 110 },
+	{ 111, 111 },
+	{ 112, 112 },
+	{ 113, 113 },
+	{ 114, 114 },
+	{ 115, 115 },
+	{ 116, 116 },
+	{ 117, 117 },
+	{ 118, 118 },
+	{ 119, 119 },
+	{ 120, 120 },
+	{ 121, 121 },
+	{ 122, 122 },
+	{ 123, 123 },
+	{ 124, 124 },
+	{ 125, 125 },
+	{ 126, 126 },
+	{ 127, 127 },
+	{ 128, 128 },
+	{ 129, 129 },
+	{ 130, 130 },
+	{ 131, 131 },
+	{ 132, 132 },
+	{ 133, 133 },
+	{ 134, 134 },
+	{ 135, 135 },
+	{ 136, 136 },
+	{ 137, 137 },
+	{ 138, 138 },
+	{ 139, 139 },
+	{ 140, 140 },
+	{ 141, 141 },
+	{ 142, 142 },
+	{ 143, 143 },
+	{ 144, 144 },
+	{ 145, 145 },
+	{ 146, 146 },
+	{ 147, 147 },
+	{ 148, 148 },
+	{ 149, 149 },
+	{ 150, 150 },
+	{ 151, 151 },
+	{ 152, 152 },
+	{ 153, 153 },
+	{ 154, 154 },
+	{ 155, 155 },
+	{ 156, 156 },
+	{ 157, 157 },
+	{ 158, 158 },
+	{ 159, 159 },
+	{ 160, 160 },
+	{ 161, 1025 },
+	{ 162, 1026 },
+	{ 163, 1027 },
+	{ 164, 1028 },
+	{ 165, 1029 },
+	{ 166, 1030 },
+	{ 167, 1031 },
+	{ 168, 1032 },
+	{ 169, 1033 },
+	{ 170, 1034 },
+	{ 171, 1035 },
+	{ 172, 1036 },
+	{ 173, 173 },
+	{ 174, 1038 },
+	{ 175, 1039 },
+	{ 176, 1040 },
+	{ 177, 1041 },
+	{ 178, 1042 },
+	{ 179, 1043 },
+	{ 180, 1044 },
+	{ 181, 1045 },
+	{ 182, 1046 },
+	{ 183, 1047 },
+	{ 184, 1048 },
+	{ 185, 1049 },
+	{ 186, 1050 },
+	{ 187, 1051 },
+	{ 188, 1052 },
+	{ 189, 1053 },
+	{ 190, 1054 },
+	{ 191, 1055 },
+	{ 192, 1056 },
+	{ 193, 1057 },
+	{ 194, 1058 },
+	{ 195, 1059 },
+	{ 196, 1060 },
+	{ 197, 1061 },
+	{ 198, 1062 },
+	{ 199, 1063 },
+	{ 200, 1064 },
+	{ 201, 1065 },
+	{ 202, 1066 },
+	{ 203, 1067 },
+	{ 204, 1068 },
+	{ 205, 1069 },
+	{ 206, 1070 },
+	{ 207, 1071 },
+	{ 208, 1072 },
+	{ 209, 1073 },
+	{ 210, 1074 },
+	{ 211, 1075 },
+	{ 212, 1076 },
+	{ 213, 1077 },
+	{ 214, 1078 },
+	{ 215, 1079 },
+	{ 216, 1080 },
+	{ 217, 1081 },
+	{ 218, 1082 },
+	{ 219, 1083 },
+	{ 220, 1084 },
+	{ 221, 1085 },
+	{ 222, 1086 },
+	{ 223, 1087 },
+	{ 224, 1088 },
+	{ 225, 1089 },
+	{ 226, 1090 },
+	{ 227, 1091 },
+	{ 228, 1092 },
+	{ 229, 1093 },
+	{ 230, 1094 },
+	{ 231, 1095 },
+	{ 232, 1096 },
+	{ 233, 1097 },
+	{ 234, 1098 },
+	{ 235, 1099 },
+	{ 236, 1100 },
+	{ 237, 1101 },
+	{ 238, 1102 },
+	{ 239, 1103 },
+	{ 240, 8470 },
+	{ 241, 1105 },
+	{ 242, 1106 },
+	{ 243, 1107 },
+	{ 244, 1108 },
+	{ 245, 1109 },
+	{ 246, 1110 },
+	{ 247, 1111 },
+	{ 248, 1112 },
+	{ 249, 1113 },
+	{ 250, 1114 },
+	{ 251, 1115 },
+	{ 252, 1116 },
+	{ 253, 167 },
+	{ 254, 1118 },
+	{ 255, 1119 },
+	{ 34, 8220 },
+	{ 34, 8221 },
+	{ 39, 8216 },
+	{ 39, 8217 },
+	{ 45, 8211 },
+	{ 45, 8212 },
+	{ 32, 8194 },
+	{ 32, 8195 },
+	{ 32, 8201 },
+	{ 65, 192 },
+	{ 65, 193 },
+	{ 65, 194 },
+	{ 65, 195 },
+	{ 65, 196 },
+	{ 65, 197 },
+	{ 65, 256 },
+	{ 65, 258 },
+	{ 65, 260 },
+	{ 65, 461 },
+	{ 97, 224 },
+	{ 97, 225 },
+	{ 97, 226 },
+	{ 97, 227 },
+	{ 97, 228 },
+	{ 97, 229 },
+	{ 97, 257 },
+	{ 97, 259 },
+	{ 97, 261 },
+	{ 97, 462 },
+	{ 67, 199 },
+	{ 67, 262 },
+	{ 67, 264 },
+	{ 67, 266 },
+	{ 67, 268 },
+	{ 99, 231 },
+	{ 99, 263 },
+	{ 99, 265 },
+	{ 99, 267 },
+	{ 99, 269 },
+	{ 68, 270 },
+	{ 100, 271 },
+	{ 69, 200 },
+	{ 69, 201 },
+	{ 69, 202 },
+	{ 69, 203 },
+	{ 69, 274 },
+	{ 69, 276 },
+	{ 69, 278 },
+	{ 69, 280 },
+	{ 69, 282 },
+	{ 101, 232 },
+	{ 101, 233 },
+	{ 101, 234 },
+	{ 101, 235 },
+	{ 101, 275 },
+	{ 101, 277 },
+	{ 101, 279 },
+	{ 101, 281 },
+	{ 101, 283 },
+	{ 71, 284 },
+	{ 71, 286 },
+	{ 71, 288 },
+	{ 71, 290 },
+	{ 71, 486 },
+	{ 71, 500 },
+	{ 103, 285 },
+	{ 103, 287 },
+	{ 103, 289 },
+	{ 103, 291 },
+	{ 103, 487 },
+	{ 103, 501 },
+	{ 72, 292 },
+	{ 104, 293 },
+	{ 73, 204 },
+	{ 73, 205 },
+	{ 73, 206 },
+	{ 73, 207 },
+	{ 73, 296 },
+	{ 73, 298 },
+	{ 73, 300 },
+	{ 73, 302 },
+	{ 73, 304 },
+	{ 73, 463 },
+	{ 105, 236 },
+	{ 105, 237 },
+	{ 105, 238 },
+	{ 105, 239 },
+	{ 105, 297 },
+	{ 105, 299 },
+	{ 105, 301 },
+	{ 105, 303 },
+	{ 105, 305 },
+	{ 105, 464 },
+	{ 74, 308 },
+	{ 106, 309 },
+	{ 75, 310 },
+	{ 75, 488 },
+	{ 107, 311 },
+	{ 107, 489 },
+	{ 76, 313 },
+	{ 76, 315 },
+	{ 76, 317 },
+	{ 76, 319 },
+	{ 76, 321 },
+	{ 108, 314 },
+	{ 108, 316 },
+	{ 108, 318 },
+	{ 108, 320 },
+	{ 108, 322 },
+	{ 77, 209 },
+	{ 77, 323 },
+	{ 77, 325 },
+	{ 77, 327 },
+	{ 109, 241 },
+	{ 109, 324 },
+	{ 109, 326 },
+	{ 109, 328 },
+	{ 109, 329 },
+	{ 78, 210 },
+	{ 78, 211 },
+	{ 78, 212 },
+	{ 78, 213 },
+	{ 78, 214 },
+	{ 78, 216 },
+	{ 78, 332 },
+	{ 78, 334 },
+	{ 78, 336 },
+	{ 78, 465 },
+	{ 78, 490 },
+	{ 110, 242 },
+	{ 110, 243 },
+	{ 110, 244 },
+	{ 110, 245 },
+	{ 110, 246 },
+	{ 110, 248 },
+	{ 110, 333 },
+	{ 110, 335 },
+	{ 110, 337 },
+	{ 110, 466 },
+	{ 110, 491 },
+	{ 82, 340 },
+	{ 82, 342 },
+	{ 82, 344 },
+	{ 114, 341 },
+	{ 114, 343 },
+	{ 114, 345 },
+	{ 83, 346 },
+	{ 83, 348 },
+	{ 83, 350 },
+	{ 83, 352 },
+	{ 115, 347 },
+	{ 115, 349 },
+	{ 115, 351 },
+	{ 115, 353 },
+	{ 84, 354 },
+	{ 84, 356 },
+	{ 116, 355 },
+	{ 116, 357 },
+	{ 85, 217 },
+	{ 85, 218 },
+	{ 85, 219 },
+	{ 85, 220 },
+	{ 85, 360 },
+	{ 85, 362 },
+	{ 85, 364 },
+	{ 85, 366 },
+	{ 85, 368 },
+	{ 85, 370 },
+	{ 85, 467 },
+	{ 117, 249 },
+	{ 117, 250 },
+	{ 117, 251 },
+	{ 117, 252 },
+	{ 117, 361 },
+	{ 117, 363 },
+	{ 117, 365 },
+	{ 117, 367 },
+	{ 117, 369 },
+	{ 117, 371 },
+	{ 117, 468 },
+	{ 87, 372 },
+	{ 119, 373 },
+	{ 89, 221 },
+	{ 89, 374 },
+	{ 89, 376 },
+	{ 121, 253 },
+	{ 121, 255 },
+	{ 121, 375 },
+	{ 90, 377 },
+	{ 90, 379 },
+	{ 90, 381 },
+	{ 122, 378 },
+	{ 122, 380 },
+	{ 122, 382 },
 };
-charconvert iso8859_14[] = {
- /* 0 */ 0,/*<tdbgcolor="C0C0C0"><fontface="Arial"color="000000"><b>ISO/IEC10646-1:2000CharacterName</b></font>*/
- 1,
- 2,
- 3,
- 4,
- 5,
- 6,
- 7,
- 8,
- 9,
- 10,
- 11,
- 12,
- 13,
- 14,
- 15,
- 16,
- 17,
- 18,
- 19,
- 20,
- 21,
- 22,
- 23,
- 24,
- 25,
- 26,
- 27,
- 28,
- 29,
- 30,
- 31,
- /* 32 */ 32,/*SPACE*/
- /* 33 */ 33,/*EXCLAMATIONMARK*/
- /* 34 */ 34,/*QUOTATIONMARK*/
- /* 35 */ 35,/*NUMBERSIGN*/
- /* 36 */ 36,/*DOLLARSIGN*/
- /* 37 */ 37,/*PERCENTSIGN*/
- /* 38 */ 38,/*AMPERSAND*/
- /* 39 */ 39,/*APOSTROPHE*/
- /* 40 */ 40,/*LEFTPARENTHESIS*/
- /* 41 */ 41,/*RIGHTPARENTHESIS*/
- /* 42 */ 42,/*ASTERISK*/
- /* 43 */ 43,/*PLUSSIGN*/
- /* 44 */ 44,/*COMMA*/
- /* 45 */ 45,/*HYPHEN-MINUS*/
- /* 46 */ 46,/*FULLSTOP*/
- /* 47 */ 47,/*SOLIDUS*/
- /* 48 */ 48,/*DIGITZERO*/
- /* 49 */ 49,/*DIGITONE*/
- /* 50 */ 50,/*DIGITTWO*/
- /* 51 */ 51,/*DIGITTHREE*/
- /* 52 */ 52,/*DIGITFOUR*/
- /* 53 */ 53,/*DIGITFIVE*/
- /* 54 */ 54,/*DIGITSIX*/
- /* 55 */ 55,/*DIGITSEVEN*/
- /* 56 */ 56,/*DIGITEIGHT*/
- /* 57 */ 57,/*DIGITNINE*/
- /* 58 */ 58,/*COLON*/
- /* 59 */ 59,/*SEMICOLON*/
- /* 60 */ 60,/*LESS-THANSIGN*/
- /* 61 */ 61,/*EQUALSSIGN*/
- /* 62 */ 62,/*GREATER-THANSIGN*/
- /* 63 */ 63,/*QUESTIONMARK*/
- /* 64 */ 64,/*COMMERCIALAT*/
- /* 65 */ 65,/*LATINCAPITALLETTERA*/
- /* 66 */ 66,/*LATINCAPITALLETTERB*/
- /* 67 */ 67,/*LATINCAPITALLETTERC*/
- /* 68 */ 68,/*LATINCAPITALLETTERD*/
- /* 69 */ 69,/*LATINCAPITALLETTERE*/
- /* 70 */ 70,/*LATINCAPITALLETTERF*/
- /* 71 */ 71,/*LATINCAPITALLETTERG*/
- /* 72 */ 72,/*LATINCAPITALLETTERH*/
- /* 73 */ 73,/*LATINCAPITALLETTERI*/
- /* 74 */ 74,/*LATINCAPITALLETTERJ*/
- /* 75 */ 75,/*LATINCAPITALLETTERK*/
- /* 76 */ 76,/*LATINCAPITALLETTERL*/
- /* 77 */ 77,/*LATINCAPITALLETTERM*/
- /* 78 */ 78,/*LATINCAPITALLETTERN*/
- /* 79 */ 79,/*LATINCAPITALLETTERO*/
- /* 80 */ 80,/*LATINCAPITALLETTERP*/
- /* 81 */ 81,/*LATINCAPITALLETTERQ*/
- /* 82 */ 82,/*LATINCAPITALLETTERR*/
- /* 83 */ 83,/*LATINCAPITALLETTERS*/
- /* 84 */ 84,/*LATINCAPITALLETTERT*/
- /* 85 */ 85,/*LATINCAPITALLETTERU*/
- /* 86 */ 86,/*LATINCAPITALLETTERV*/
- /* 87 */ 87,/*LATINCAPITALLETTERW*/
- /* 88 */ 88,/*LATINCAPITALLETTERX*/
- /* 89 */ 89,/*LATINCAPITALLETTERY*/
- /* 90 */ 90,/*LATINCAPITALLETTERZ*/
- /* 91 */ 91,/*LEFTSQUAREBRACKET*/
- /* 92 */ 92,/*REVERSESOLIDUS*/
- /* 93 */ 93,/*RIGHTSQUAREBRACKET*/
- /* 94 */ 94,/*CIRCUMFLEXACCENT*/
- /* 95 */ 95,/*LOWLINE*/
- /* 96 */ 96,/*GRAVEACCENT*/
- /* 97 */ 97,/*LATINSMALLLETTERA*/
- /* 98 */ 98,/*LATINSMALLLETTERB*/
- /* 99 */ 99,/*LATINSMALLLETTERC*/
- /* 100 */ 100,/*LATINSMALLLETTERD*/
- /* 101 */ 101,/*LATINSMALLLETTERE*/
- /* 102 */ 102,/*LATINSMALLLETTERF*/
- /* 103 */ 103,/*LATINSMALLLETTERG*/
- /* 104 */ 104,/*LATINSMALLLETTERH*/
- /* 105 */ 105,/*LATINSMALLLETTERI*/
- /* 106 */ 106,/*LATINSMALLLETTERJ*/
- /* 107 */ 107,/*LATINSMALLLETTERK*/
- /* 108 */ 108,/*LATINSMALLLETTERL*/
- /* 109 */ 109,/*LATINSMALLLETTERM*/
- /* 110 */ 110,/*LATINSMALLLETTERN*/
- /* 111 */ 111,/*LATINSMALLLETTERO*/
- /* 112 */ 112,/*LATINSMALLLETTERP*/
- /* 113 */ 113,/*LATINSMALLLETTERQ*/
- /* 114 */ 114,/*LATINSMALLLETTERR*/
- /* 115 */ 115,/*LATINSMALLLETTERS*/
- /* 116 */ 116,/*LATINSMALLLETTERT*/
- /* 117 */ 117,/*LATINSMALLLETTERU*/
- /* 118 */ 118,/*LATINSMALLLETTERV*/
- /* 119 */ 119,/*LATINSMALLLETTERW*/
- /* 120 */ 120,/*LATINSMALLLETTERX*/
- /* 121 */ 121,/*LATINSMALLLETTERY*/
- /* 122 */ 122,/*LATINSMALLLETTERZ*/
- /* 123 */ 123,/*LEFTCURLYBRACKET*/
- /* 124 */ 124,/*VERTICALLINE*/
- /* 125 */ 125,/*RIGHTCURLYBRACKET*/
- /* 126 */ 126,/*TILDE*/
- 127,
- 128,
- 129,
- 130,
- 131,
- 132,
- 133,
- 134,
- 135,
- 136,
- 137,
- 138,
- 139,
- 140,
- 141,
- 142,
- 143,
- 144,
- 145,
- 146,
- 147,
- 148,
- 149,
- 150,
- 151,
- 152,
- 153,
- 154,
- 155,
- 156,
- 157,
- 158,
- 159,
- /* 160 */ 160,/*NO-BREAKSPACE*/
- /* 161 */ 7682,/*LATINCAPITALLETTERBWITHDOTABOVE*/
- /* 162 */ 7683,/*LATINSMALLLETTERBWITHDOTABOVE*/
- /* 163 */ 163,/*POUNDSIGN*/
- /* 164 */ 266,/*LATINCAPITALLETTERCWITHDOTABOVE*/
- /* 165 */ 267,/*LATINSMALLLETTERCWITHDOTABOVE*/
- /* 166 */ 7690,/*LATINCAPITALLETTERDWITHDOTABOVE*/
- /* 167 */ 167,/*SECTIONSIGN*/
- /* 168 */ 7808,/*LATINCAPITALLETTERWWITHGRAVE*/
- /* 169 */ 169,/*COPYRIGHTSIGN*/
- /* 170 */ 7810,/*LATINCAPITALLETTERWWITHACUTE*/
- /* 171 */ 7691,/*LATINSMALLLETTERDWITHDOTABOVE*/
- /* 172 */ 7922,/*LATINCAPITALLETTERYWITHGRAVE*/
- /* 173 */ 173,/*SOFTHYPHEN*/
- /* 174 */ 174,/*REGISTEREDSIGN*/
- /* 175 */ 376,/*LATINCAPITALLETTERYWITHDIAERESIS*/
- /* 176 */ 7710,/*LATINCAPITALLETTERFWITHDOTABOVE*/
- /* 177 */ 7711,/*LATINSMALLLETTERFWITHDOTABOVE*/
- /* 178 */ 288,/*LATINCAPITALLETTERGWITHDOTABOVE*/
- /* 179 */ 289,/*LATINSMALLLETTERGWITHDOTABOVE*/
- /* 180 */ 7744,/*LATINCAPITALLETTERMWITHDOTABOVE*/
- /* 181 */ 7745,/*LATINSMALLLETTERMWITHDOTABOVE*/
- /* 182 */ 182,/*PILCROWSIGN*/
- /* 183 */ 7766,/*LATINCAPITALLETTERPWITHDOTABOVE*/
- /* 184 */ 7809,/*LATINSMALLLETTERWWITHGRAVE*/
- /* 185 */ 7767,/*LATINSMALLLETTERPWITHDOTABOVE*/
- /* 186 */ 7811,/*LATINSMALLLETTERWWITHACUTE*/
- /* 187 */ 7776,/*LATINCAPITALLETTERSWITHDOTABOVE*/
- /* 188 */ 7923,/*LATINSMALLLETTERYWITHGRAVE*/
- /* 189 */ 7812,/*LATINCAPITALLETTERWWITHDIAERESIS*/
- /* 190 */ 7813,/*LATINSMALLLETTERWWITHDIAERESIS*/
- /* 191 */ 7777,/*LATINSMALLLETTERSWITHDOTABOVE*/
- /* 192 */ 192,/*LATINCAPITALLETTERAWITHGRAVE*/
- /* 193 */ 193,/*LATINCAPITALLETTERAWITHACUTE*/
- /* 194 */ 194,/*LATINCAPITALLETTERAWITHCIRCUMFLEX*/
- /* 195 */ 195,/*LATINCAPITALLETTERAWITHTILDE*/
- /* 196 */ 196,/*LATINCAPITALLETTERAWITHDIAERESIS*/
- /* 197 */ 197,/*LATINCAPITALLETTERAWITHRINGABOVE*/
- /* 198 */ 198,/*LATINCAPITALLETTERAE*/
- /* 199 */ 199,/*LATINCAPITALLETTERCWITHCEDILLA*/
- /* 200 */ 200,/*LATINCAPITALLETTEREWITHGRAVE*/
- /* 201 */ 201,/*LATINCAPITALLETTEREWITHACUTE*/
- /* 202 */ 202,/*LATINCAPITALLETTEREWITHCIRCUMFLEX*/
- /* 203 */ 203,/*LATINCAPITALLETTEREWITHDIAERESIS*/
- /* 204 */ 204,/*LATINCAPITALLETTERIWITHGRAVE*/
- /* 205 */ 205,/*LATINCAPITALLETTERIWITHACUTE*/
- /* 206 */ 206,/*LATINCAPITALLETTERIWITHCIRCUMFLEX*/
- /* 207 */ 207,/*LATINCAPITALLETTERIWITHDIAERESIS*/
- /* 208 */ 372,/*LATINCAPITALLETTERWWITHCIRCUMFLEX*/
- /* 209 */ 209,/*LATINCAPITALLETTERNWITHTILDE*/
- /* 210 */ 210,/*LATINCAPITALLETTEROWITHGRAVE*/
- /* 211 */ 211,/*LATINCAPITALLETTEROWITHACUTE*/
- /* 212 */ 212,/*LATINCAPITALLETTEROWITHCIRCUMFLEX*/
- /* 213 */ 213,/*LATINCAPITALLETTEROWITHTILDE*/
- /* 214 */ 214,/*LATINCAPITALLETTEROWITHDIAERESIS*/
- /* 215 */ 7786,/*LATINCAPITALLETTERTWITHDOTABOVE*/
- /* 216 */ 216,/*LATINCAPITALLETTEROWITHSTROKE*/
- /* 217 */ 217,/*LATINCAPITALLETTERUWITHGRAVE*/
- /* 218 */ 218,/*LATINCAPITALLETTERUWITHACUTE*/
- /* 219 */ 219,/*LATINCAPITALLETTERUWITHCIRCUMFLEX*/
- /* 220 */ 220,/*LATINCAPITALLETTERUWITHDIAERESIS*/
- /* 221 */ 221,/*LATINCAPITALLETTERYWITHACUTE*/
- /* 222 */ 374,/*LATINCAPITALLETTERYWITHCIRCUMFLEX*/
- /* 223 */ 223,/*LATINSMALLLETTERSHARPS*/
- /* 224 */ 224,/*LATINSMALLLETTERAWITHGRAVE*/
- /* 225 */ 225,/*LATINSMALLLETTERAWITHACUTE*/
- /* 226 */ 226,/*LATINSMALLLETTERAWITHCIRCUMFLEX*/
- /* 227 */ 227,/*LATINSMALLLETTERAWITHTILDE*/
- /* 228 */ 228,/*LATINSMALLLETTERAWITHDIAERESIS*/
- /* 229 */ 229,/*LATINSMALLLETTERAWITHRINGABOVE*/
- /* 230 */ 230,/*LATINSMALLLETTERAE*/
- /* 231 */ 231,/*LATINSMALLLETTERCWITHCEDILLA*/
- /* 232 */ 232,/*LATINSMALLLETTEREWITHGRAVE*/
- /* 233 */ 233,/*LATINSMALLLETTEREWITHACUTE*/
- /* 234 */ 234,/*LATINSMALLLETTEREWITHCIRCUMFLEX*/
- /* 235 */ 235,/*LATINSMALLLETTEREWITHDIAERESIS*/
- /* 236 */ 236,/*LATINSMALLLETTERIWITHGRAVE*/
- /* 237 */ 237,/*LATINSMALLLETTERIWITHACUTE*/
- /* 238 */ 238,/*LATINSMALLLETTERIWITHCIRCUMFLEX*/
- /* 239 */ 239,/*LATINSMALLLETTERIWITHDIAERESIS*/
- /* 240 */ 373,/*LATINSMALLLETTERWWITHCIRCUMFLEX*/
- /* 241 */ 241,/*LATINSMALLLETTERNWITHTILDE*/
- /* 242 */ 242,/*LATINSMALLLETTEROWITHGRAVE*/
- /* 243 */ 243,/*LATINSMALLLETTEROWITHACUTE*/
- /* 244 */ 244,/*LATINSMALLLETTEROWITHCIRCUMFLEX*/
- /* 245 */ 245,/*LATINSMALLLETTEROWITHTILDE*/
- /* 246 */ 246,/*LATINSMALLLETTEROWITHDIAERESIS*/
- /* 247 */ 7787,/*LATINSMALLLETTERTWITHDOTABOVE*/
- /* 248 */ 248,/*LATINSMALLLETTEROWITHSTROKE*/
- /* 249 */ 249,/*LATINSMALLLETTERUWITHGRAVE*/
- /* 250 */ 250,/*LATINSMALLLETTERUWITHACUTE*/
- /* 251 */ 251,/*LATINSMALLLETTERUWITHCIRCUMFLEX*/
- /* 252 */ 252,/*LATINSMALLLETTERUWITHDIAERESIS*/
- /* 253 */ 253,/*LATINSMALLLETTERYWITHACUTE*/
- /* 254 */ 375,/*LATINSMALLLETTERYWITHCIRCUMFLEX*/
- /* 255 */ 255/*LATINSMALLLETTERYWITHDIAERESIS*/
+static convert_t iso8859_6[] = {
+	{ 0, 0 },
+	{ 1, 1 },
+	{ 2, 2 },
+	{ 3, 3 },
+	{ 4, 4 },
+	{ 5, 5 },
+	{ 6, 6 },
+	{ 7, 7 },
+	{ 8, 8 },
+	{ 9, 9 },
+	{ 10, 10 },
+	{ 11, 11 },
+	{ 12, 12 },
+	{ 13, 13 },
+	{ 14, 14 },
+	{ 15, 15 },
+	{ 16, 16 },
+	{ 17, 17 },
+	{ 18, 18 },
+	{ 19, 19 },
+	{ 20, 20 },
+	{ 21, 21 },
+	{ 22, 22 },
+	{ 23, 23 },
+	{ 24, 24 },
+	{ 25, 25 },
+	{ 26, 26 },
+	{ 27, 27 },
+	{ 28, 28 },
+	{ 29, 29 },
+	{ 30, 30 },
+	{ 31, 31 },
+	{ 32, 32 },
+	{ 33, 33 },
+	{ 34, 34 },
+	{ 35, 35 },
+	{ 36, 36 },
+	{ 37, 37 },
+	{ 38, 38 },
+	{ 39, 39 },
+	{ 40, 40 },
+	{ 41, 41 },
+	{ 42, 42 },
+	{ 43, 43 },
+	{ 44, 44 },
+	{ 45, 45 },
+	{ 46, 46 },
+	{ 47, 47 },
+	{ 48, 48 },
+	{ 49, 49 },
+	{ 50, 50 },
+	{ 51, 51 },
+	{ 52, 52 },
+	{ 53, 53 },
+	{ 54, 54 },
+	{ 55, 55 },
+	{ 56, 56 },
+	{ 57, 57 },
+	{ 58, 58 },
+	{ 59, 59 },
+	{ 60, 60 },
+	{ 61, 61 },
+	{ 62, 62 },
+	{ 63, 63 },
+	{ 64, 64 },
+	{ 65, 65 },
+	{ 66, 66 },
+	{ 67, 67 },
+	{ 68, 68 },
+	{ 69, 69 },
+	{ 70, 70 },
+	{ 71, 71 },
+	{ 72, 72 },
+	{ 73, 73 },
+	{ 74, 74 },
+	{ 75, 75 },
+	{ 76, 76 },
+	{ 77, 77 },
+	{ 78, 78 },
+	{ 79, 79 },
+	{ 80, 80 },
+	{ 81, 81 },
+	{ 82, 82 },
+	{ 83, 83 },
+	{ 84, 84 },
+	{ 85, 85 },
+	{ 86, 86 },
+	{ 87, 87 },
+	{ 88, 88 },
+	{ 89, 89 },
+	{ 90, 90 },
+	{ 91, 91 },
+	{ 92, 92 },
+	{ 93, 93 },
+	{ 94, 94 },
+	{ 95, 95 },
+	{ 96, 96 },
+	{ 97, 97 },
+	{ 98, 98 },
+	{ 99, 99 },
+	{ 100, 100 },
+	{ 101, 101 },
+	{ 102, 102 },
+	{ 103, 103 },
+	{ 104, 104 },
+	{ 105, 105 },
+	{ 106, 106 },
+	{ 107, 107 },
+	{ 108, 108 },
+	{ 109, 109 },
+	{ 110, 110 },
+	{ 111, 111 },
+	{ 112, 112 },
+	{ 113, 113 },
+	{ 114, 114 },
+	{ 115, 115 },
+	{ 116, 116 },
+	{ 117, 117 },
+	{ 118, 118 },
+	{ 119, 119 },
+	{ 120, 120 },
+	{ 121, 121 },
+	{ 122, 122 },
+	{ 123, 123 },
+	{ 124, 124 },
+	{ 125, 125 },
+	{ 126, 126 },
+	{ 127, 127 },
+	{ 128, 128 },
+	{ 129, 129 },
+	{ 130, 130 },
+	{ 131, 131 },
+	{ 132, 132 },
+	{ 133, 133 },
+	{ 134, 134 },
+	{ 135, 135 },
+	{ 136, 136 },
+	{ 137, 137 },
+	{ 138, 138 },
+	{ 139, 139 },
+	{ 140, 140 },
+	{ 141, 141 },
+	{ 142, 142 },
+	{ 143, 143 },
+	{ 144, 144 },
+	{ 145, 145 },
+	{ 146, 146 },
+	{ 147, 147 },
+	{ 148, 148 },
+	{ 149, 149 },
+	{ 150, 150 },
+	{ 151, 151 },
+	{ 152, 152 },
+	{ 153, 153 },
+	{ 154, 154 },
+	{ 155, 155 },
+	{ 156, 156 },
+	{ 157, 157 },
+	{ 158, 158 },
+	{ 159, 159 },
+	{ 160, 160 },
+	{ 161, 161 },
+	{ 162, 162 },
+	{ 163, 163 },
+	{ 164, 164 },
+	{ 165, 165 },
+	{ 166, 166 },
+	{ 167, 167 },
+	{ 168, 168 },
+	{ 169, 169 },
+	{ 170, 170 },
+	{ 171, 171 },
+	{ 172, 1548 },
+	{ 173, 173 },
+	{ 174, 174 },
+	{ 175, 175 },
+	{ 176, 176 },
+	{ 177, 177 },
+	{ 178, 178 },
+	{ 179, 179 },
+	{ 180, 180 },
+	{ 181, 181 },
+	{ 182, 182 },
+	{ 183, 183 },
+	{ 184, 184 },
+	{ 185, 185 },
+	{ 186, 186 },
+	{ 187, 1563 },
+	{ 188, 188 },
+	{ 189, 189 },
+	{ 190, 190 },
+	{ 191, 1567 },
+	{ 192, 192 },
+	{ 193, 1569 },
+	{ 194, 1570 },
+	{ 195, 1571 },
+	{ 196, 1572 },
+	{ 197, 1573 },
+	{ 198, 1574 },
+	{ 199, 1575 },
+	{ 200, 1576 },
+	{ 201, 1577 },
+	{ 202, 1578 },
+	{ 203, 1579 },
+	{ 204, 1580 },
+	{ 205, 1581 },
+	{ 206, 1582 },
+	{ 207, 1583 },
+	{ 208, 1584 },
+	{ 209, 1585 },
+	{ 210, 1586 },
+	{ 211, 1587 },
+	{ 212, 1588 },
+	{ 213, 1589 },
+	{ 214, 1590 },
+	{ 215, 1591 },
+	{ 216, 1592 },
+	{ 217, 1593 },
+	{ 218, 1594 },
+	{ 219, 219 },
+	{ 220, 220 },
+	{ 221, 221 },
+	{ 222, 222 },
+	{ 223, 223 },
+	{ 224, 1600 },
+	{ 225, 1601 },
+	{ 226, 1602 },
+	{ 227, 1603 },
+	{ 228, 1604 },
+	{ 229, 1605 },
+	{ 230, 1606 },
+	{ 231, 1607 },
+	{ 232, 1608 },
+	{ 233, 1609 },
+	{ 234, 1610 },
+	{ 235, 1611 },
+	{ 236, 1612 },
+	{ 237, 1613 },
+	{ 238, 1614 },
+	{ 239, 1615 },
+	{ 240, 1616 },
+	{ 241, 1617 },
+	{ 242, 1618 },
+	{ 243, 243 },
+	{ 244, 244 },
+	{ 245, 245 },
+	{ 246, 246 },
+	{ 247, 247 },
+	{ 248, 248 },
+	{ 249, 249 },
+	{ 250, 250 },
+	{ 251, 251 },
+	{ 252, 252 },
+	{ 253, 253 },
+	{ 254, 254 },
+	{ 255, 255 },
+	{ 34, 8220 },
+	{ 34, 8221 },
+	{ 39, 8216 },
+	{ 39, 8217 },
+	{ 45, 8211 },
+	{ 45, 8212 },
+	{ 32, 8194 },
+	{ 32, 8195 },
+	{ 32, 8201 },
+	{ 65, 193 },
+	{ 65, 194 },
+	{ 65, 195 },
+	{ 65, 196 },
+	{ 65, 197 },
+	{ 65, 256 },
+	{ 65, 258 },
+	{ 65, 260 },
+	{ 65, 461 },
+	{ 97, 224 },
+	{ 97, 225 },
+	{ 97, 226 },
+	{ 97, 227 },
+	{ 97, 228 },
+	{ 97, 229 },
+	{ 97, 257 },
+	{ 97, 259 },
+	{ 97, 261 },
+	{ 97, 462 },
+	{ 67, 199 },
+	{ 67, 262 },
+	{ 67, 264 },
+	{ 67, 266 },
+	{ 67, 268 },
+	{ 99, 231 },
+	{ 99, 263 },
+	{ 99, 265 },
+	{ 99, 267 },
+	{ 99, 269 },
+	{ 68, 270 },
+	{ 100, 271 },
+	{ 69, 200 },
+	{ 69, 201 },
+	{ 69, 202 },
+	{ 69, 203 },
+	{ 69, 274 },
+	{ 69, 276 },
+	{ 69, 278 },
+	{ 69, 280 },
+	{ 69, 282 },
+	{ 101, 232 },
+	{ 101, 233 },
+	{ 101, 234 },
+	{ 101, 235 },
+	{ 101, 275 },
+	{ 101, 277 },
+	{ 101, 279 },
+	{ 101, 281 },
+	{ 101, 283 },
+	{ 71, 284 },
+	{ 71, 286 },
+	{ 71, 288 },
+	{ 71, 290 },
+	{ 71, 486 },
+	{ 71, 500 },
+	{ 103, 285 },
+	{ 103, 287 },
+	{ 103, 289 },
+	{ 103, 291 },
+	{ 103, 487 },
+	{ 103, 501 },
+	{ 72, 292 },
+	{ 104, 293 },
+	{ 73, 204 },
+	{ 73, 205 },
+	{ 73, 206 },
+	{ 73, 207 },
+	{ 73, 296 },
+	{ 73, 298 },
+	{ 73, 300 },
+	{ 73, 302 },
+	{ 73, 304 },
+	{ 73, 463 },
+	{ 105, 236 },
+	{ 105, 237 },
+	{ 105, 238 },
+	{ 105, 239 },
+	{ 105, 297 },
+	{ 105, 299 },
+	{ 105, 301 },
+	{ 105, 303 },
+	{ 105, 305 },
+	{ 105, 464 },
+	{ 74, 308 },
+	{ 106, 309 },
+	{ 75, 310 },
+	{ 75, 488 },
+	{ 107, 311 },
+	{ 107, 489 },
+	{ 76, 313 },
+	{ 76, 315 },
+	{ 76, 317 },
+	{ 76, 319 },
+	{ 76, 321 },
+	{ 108, 314 },
+	{ 108, 316 },
+	{ 108, 318 },
+	{ 108, 320 },
+	{ 108, 322 },
+	{ 77, 209 },
+	{ 77, 323 },
+	{ 77, 325 },
+	{ 77, 327 },
+	{ 109, 241 },
+	{ 109, 324 },
+	{ 109, 326 },
+	{ 109, 328 },
+	{ 109, 329 },
+	{ 78, 210 },
+	{ 78, 211 },
+	{ 78, 212 },
+	{ 78, 213 },
+	{ 78, 214 },
+	{ 78, 216 },
+	{ 78, 332 },
+	{ 78, 334 },
+	{ 78, 336 },
+	{ 78, 465 },
+	{ 78, 490 },
+	{ 110, 242 },
+	{ 110, 333 },
+	{ 110, 335 },
+	{ 110, 337 },
+	{ 110, 466 },
+	{ 110, 491 },
+	{ 82, 340 },
+	{ 82, 342 },
+	{ 82, 344 },
+	{ 114, 341 },
+	{ 114, 343 },
+	{ 114, 345 },
+	{ 83, 346 },
+	{ 83, 348 },
+	{ 83, 350 },
+	{ 83, 352 },
+	{ 115, 347 },
+	{ 115, 349 },
+	{ 115, 351 },
+	{ 115, 353 },
+	{ 84, 354 },
+	{ 84, 356 },
+	{ 116, 355 },
+	{ 116, 357 },
+	{ 85, 217 },
+	{ 85, 218 },
+	{ 85, 360 },
+	{ 85, 362 },
+	{ 85, 364 },
+	{ 85, 366 },
+	{ 85, 368 },
+	{ 85, 370 },
+	{ 85, 467 },
+	{ 117, 361 },
+	{ 117, 363 },
+	{ 117, 365 },
+	{ 117, 367 },
+	{ 117, 369 },
+	{ 117, 371 },
+	{ 117, 468 },
+	{ 87, 372 },
+	{ 119, 373 },
+	{ 89, 374 },
+	{ 89, 376 },
+	{ 121, 375 },
+	{ 90, 377 },
+	{ 90, 379 },
+	{ 90, 381 },
+	{ 122, 378 },
+	{ 122, 380 },
+	{ 122, 382 },
 };
-charconvert iso8859_15[] = {
- /* 0 */ 0,/*<tdbgcolor="C0C0C0"><fontface="Arial"color="000000"><b>ISO/IEC10646-1:2000CharacterName</b></font>*/
- 1,
- 2,
- 3,
- 4,
- 5,
- 6,
- 7,
- 8,
- 9,
- 10,
- 11,
- 12,
- 13,
- 14,
- 15,
- 16,
- 17,
- 18,
- 19,
- 20,
- 21,
- 22,
- 23,
- 24,
- 25,
- 26,
- 27,
- 28,
- 29,
- 30,
- 31,
- /* 32 */ 32,/*SPACE*/
- /* 33 */ 33,/*EXCLAMATIONMARK*/
- /* 34 */ 34,/*QUOTATIONMARK*/
- /* 35 */ 35,/*NUMBERSIGN*/
- /* 36 */ 36,/*DOLLARSIGN*/
- /* 37 */ 37,/*PERCENTSIGN*/
- /* 38 */ 38,/*AMPERSAND*/
- /* 39 */ 39,/*APOSTROPHE*/
- /* 40 */ 40,/*LEFTPARENTHESIS*/
- /* 41 */ 41,/*RIGHTPARENTHESIS*/
- /* 42 */ 42,/*ASTERISK*/
- /* 43 */ 43,/*PLUSSIGN*/
- /* 44 */ 44,/*COMMA*/
- /* 45 */ 45,/*HYPHEN-MINUS*/
- /* 46 */ 46,/*FULLSTOP*/
- /* 47 */ 47,/*SOLIDUS*/
- /* 48 */ 48,/*DIGITZERO*/
- /* 49 */ 49,/*DIGITONE*/
- /* 50 */ 50,/*DIGITTWO*/
- /* 51 */ 51,/*DIGITTHREE*/
- /* 52 */ 52,/*DIGITFOUR*/
- /* 53 */ 53,/*DIGITFIVE*/
- /* 54 */ 54,/*DIGITSIX*/
- /* 55 */ 55,/*DIGITSEVEN*/
- /* 56 */ 56,/*DIGITEIGHT*/
- /* 57 */ 57,/*DIGITNINE*/
- /* 58 */ 58,/*COLON*/
- /* 59 */ 59,/*SEMICOLON*/
- /* 60 */ 60,/*LESS-THANSIGN*/
- /* 61 */ 61,/*EQUALSSIGN*/
- /* 62 */ 62,/*GREATER-THANSIGN*/
- /* 63 */ 63,/*QUESTIONMARK*/
- /* 64 */ 64,/*COMMERCIALAT*/
- /* 65 */ 65,/*LATINCAPITALLETTERA*/
- /* 66 */ 66,/*LATINCAPITALLETTERB*/
- /* 67 */ 67,/*LATINCAPITALLETTERC*/
- /* 68 */ 68,/*LATINCAPITALLETTERD*/
- /* 69 */ 69,/*LATINCAPITALLETTERE*/
- /* 70 */ 70,/*LATINCAPITALLETTERF*/
- /* 71 */ 71,/*LATINCAPITALLETTERG*/
- /* 72 */ 72,/*LATINCAPITALLETTERH*/
- /* 73 */ 73,/*LATINCAPITALLETTERI*/
- /* 74 */ 74,/*LATINCAPITALLETTERJ*/
- /* 75 */ 75,/*LATINCAPITALLETTERK*/
- /* 76 */ 76,/*LATINCAPITALLETTERL*/
- /* 77 */ 77,/*LATINCAPITALLETTERM*/
- /* 78 */ 78,/*LATINCAPITALLETTERN*/
- /* 79 */ 79,/*LATINCAPITALLETTERO*/
- /* 80 */ 80,/*LATINCAPITALLETTERP*/
- /* 81 */ 81,/*LATINCAPITALLETTERQ*/
- /* 82 */ 82,/*LATINCAPITALLETTERR*/
- /* 83 */ 83,/*LATINCAPITALLETTERS*/
- /* 84 */ 84,/*LATINCAPITALLETTERT*/
- /* 85 */ 85,/*LATINCAPITALLETTERU*/
- /* 86 */ 86,/*LATINCAPITALLETTERV*/
- /* 87 */ 87,/*LATINCAPITALLETTERW*/
- /* 88 */ 88,/*LATINCAPITALLETTERX*/
- /* 89 */ 89,/*LATINCAPITALLETTERY*/
- /* 90 */ 90,/*LATINCAPITALLETTERZ*/
- /* 91 */ 91,/*LEFTSQUAREBRACKET*/
- /* 92 */ 92,/*REVERSESOLIDUS*/
- /* 93 */ 93,/*RIGHTSQUAREBRACKET*/
- /* 94 */ 94,/*CIRCUMFLEXACCENT*/
- /* 95 */ 95,/*LOWLINE*/
- /* 96 */ 96,/*GRAVEACCENT*/
- /* 97 */ 97,/*LATINSMALLLETTERA*/
- /* 98 */ 98,/*LATINSMALLLETTERB*/
- /* 99 */ 99,/*LATINSMALLLETTERC*/
- /* 100 */ 100,/*LATINSMALLLETTERD*/
- /* 101 */ 101,/*LATINSMALLLETTERE*/
- /* 102 */ 102,/*LATINSMALLLETTERF*/
- /* 103 */ 103,/*LATINSMALLLETTERG*/
- /* 104 */ 104,/*LATINSMALLLETTERH*/
- /* 105 */ 105,/*LATINSMALLLETTERI*/
- /* 106 */ 106,/*LATINSMALLLETTERJ*/
- /* 107 */ 107,/*LATINSMALLLETTERK*/
- /* 108 */ 108,/*LATINSMALLLETTERL*/
- /* 109 */ 109,/*LATINSMALLLETTERM*/
- /* 110 */ 110,/*LATINSMALLLETTERN*/
- /* 111 */ 111,/*LATINSMALLLETTERO*/
- /* 112 */ 112,/*LATINSMALLLETTERP*/
- /* 113 */ 113,/*LATINSMALLLETTERQ*/
- /* 114 */ 114,/*LATINSMALLLETTERR*/
- /* 115 */ 115,/*LATINSMALLLETTERS*/
- /* 116 */ 116,/*LATINSMALLLETTERT*/
- /* 117 */ 117,/*LATINSMALLLETTERU*/
- /* 118 */ 118,/*LATINSMALLLETTERV*/
- /* 119 */ 119,/*LATINSMALLLETTERW*/
- /* 120 */ 120,/*LATINSMALLLETTERX*/
- /* 121 */ 121,/*LATINSMALLLETTERY*/
- /* 122 */ 122,/*LATINSMALLLETTERZ*/
- /* 123 */ 123,/*LEFTCURLYBRACKET*/
- /* 124 */ 124,/*VERTICALLINE*/
- /* 125 */ 125,/*RIGHTCURLYBRACKET*/
- /* 126 */ 126,/*TILDE*/
- 127,
- 128,
- 129,
- 130,
- 131,
- 132,
- 133,
- 134,
- 135,
- 136,
- 137,
- 138,
- 139,
- 140,
- 141,
- 142,
- 143,
- 144,
- 145,
- 146,
- 147,
- 148,
- 149,
- 150,
- 151,
- 152,
- 153,
- 154,
- 155,
- 156,
- 157,
- 158,
- 159,
- /* 160 */ 160,/*NO-BREAKSPACE*/
- /* 161 */ 161,/*INVERTEDEXCLAMATIONMARK*/
- /* 162 */ 162,/*CENTSIGN*/
- /* 163 */ 163,/*POUNDSIGN*/
- /* 164 */ 8364,/*EUROSIGN*/
- /* 165 */ 165,/*YENSIGN*/
- /* 166 */ 352,/*LATINCAPITALLETTERSWITHCARON*/
- /* 167 */ 167,/*SECTIONSIGN*/
- /* 168 */ 353,/*LATINSMALLLETTERSWITHCARON*/
- /* 169 */ 169,/*COPYRIGHTSIGN*/
- /* 170 */ 170,/*FEMININEORDINALINDICATOR*/
- /* 171 */ 171,/*LEFT-POINTINGDOUBLEANGLEQUOTATIONMARK*/
- /* 172 */ 172,/*NOTSIGN*/
- /* 173 */ 173,/*SOFTHYPHEN*/
- /* 174 */ 174,/*REGISTEREDSIGN*/
- /* 175 */ 175,/*MACRON*/
- /* 176 */ 176,/*DEGREESIGN*/
- /* 177 */ 177,/*PLUS-MINUSSIGN*/
- /* 178 */ 178,/*SUPERSCRIPTTWO*/
- /* 179 */ 179,/*SUPERSCRIPTTHREE*/
- /* 180 */ 381,/*LATINCAPITALLETTERZWITHCARON*/
- /* 181 */ 181,/*MICROSIGN*/
- /* 182 */ 182,/*PILCROWSIGN*/
- /* 183 */ 183,/*MIDDLEDOT*/
- /* 184 */ 382,/*LATINSMALLLETTERZWITHCARON*/
- /* 185 */ 185,/*SUPERSCRIPTONE*/
- /* 186 */ 186,/*MASCULINEORDINALINDICATOR*/
- /* 187 */ 187,/*RIGHT-POINTINGDOUBLEANGLEQUOTATIONMARK*/
- /* 188 */ 338,/*LATINCAPITALLIGATUREOE*/
- /* 189 */ 339,/*LATINSMALLLIGATUREOE*/
- /* 190 */ 376,/*LATINCAPITALLETTERYWITHDIAERESIS*/
- /* 191 */ 191,/*INVERTEDQUESTIONMARK*/
- /* 192 */ 192,/*LATINCAPITALLETTERAWITHGRAVE*/
- /* 193 */ 193,/*LATINCAPITALLETTERAWITHACUTE*/
- /* 194 */ 194,/*LATINCAPITALLETTERAWITHCIRCUMFLEX*/
- /* 195 */ 195,/*LATINCAPITALLETTERAWITHTILDE*/
- /* 196 */ 196,/*LATINCAPITALLETTERAWITHDIAERESIS*/
- /* 197 */ 197,/*LATINCAPITALLETTERAWITHRINGABOVE*/
- /* 198 */ 198,/*LATINCAPITALLETTERAE*/
- /* 199 */ 199,/*LATINCAPITALLETTERCWITHCEDILLA*/
- /* 200 */ 200,/*LATINCAPITALLETTEREWITHGRAVE*/
- /* 201 */ 201,/*LATINCAPITALLETTEREWITHACUTE*/
- /* 202 */ 202,/*LATINCAPITALLETTEREWITHCIRCUMFLEX*/
- /* 203 */ 203,/*LATINCAPITALLETTEREWITHDIAERESIS*/
- /* 204 */ 204,/*LATINCAPITALLETTERIWITHGRAVE*/
- /* 205 */ 205,/*LATINCAPITALLETTERIWITHACUTE*/
- /* 206 */ 206,/*LATINCAPITALLETTERIWITHCIRCUMFLEX*/
- /* 207 */ 207,/*LATINCAPITALLETTERIWITHDIAERESIS*/
- /* 208 */ 208,/*LATINCAPITALLETTERETH*/
- /* 209 */ 209,/*LATINCAPITALLETTERNWITHTILDE*/
- /* 210 */ 210,/*LATINCAPITALLETTEROWITHGRAVE*/
- /* 211 */ 211,/*LATINCAPITALLETTEROWITHACUTE*/
- /* 212 */ 212,/*LATINCAPITALLETTEROWITHCIRCUMFLEX*/
- /* 213 */ 213,/*LATINCAPITALLETTEROWITHTILDE*/
- /* 214 */ 214,/*LATINCAPITALLETTEROWITHDIAERESIS*/
- /* 215 */ 215,/*MULTIPLICATIONSIGN*/
- /* 216 */ 216,/*LATINCAPITALLETTEROWITHSTROKE*/
- /* 217 */ 217,/*LATINCAPITALLETTERUWITHGRAVE*/
- /* 218 */ 218,/*LATINCAPITALLETTERUWITHACUTE*/
- /* 219 */ 219,/*LATINCAPITALLETTERUWITHCIRCUMFLEX*/
- /* 220 */ 220,/*LATINCAPITALLETTERUWITHDIAERESIS*/
- /* 221 */ 221,/*LATINCAPITALLETTERYWITHACUTE*/
- /* 222 */ 222,/*LATINCAPITALLETTERTHORN*/
- /* 223 */ 223,/*LATINSMALLLETTERSHARPS*/
- /* 224 */ 224,/*LATINSMALLLETTERAWITHGRAVE*/
- /* 225 */ 225,/*LATINSMALLLETTERAWITHACUTE*/
- /* 226 */ 226,/*LATINSMALLLETTERAWITHCIRCUMFLEX*/
- /* 227 */ 227,/*LATINSMALLLETTERAWITHTILDE*/
- /* 228 */ 228,/*LATINSMALLLETTERAWITHDIAERESIS*/
- /* 229 */ 229,/*LATINSMALLLETTERAWITHRINGABOVE*/
- /* 230 */ 230,/*LATINSMALLLETTERAE*/
- /* 231 */ 231,/*LATINSMALLLETTERCWITHCEDILLA*/
- /* 232 */ 232,/*LATINSMALLLETTEREWITHGRAVE*/
- /* 233 */ 233,/*LATINSMALLLETTEREWITHACUTE*/
- /* 234 */ 234,/*LATINSMALLLETTEREWITHCIRCUMFLEX*/
- /* 235 */ 235,/*LATINSMALLLETTEREWITHDIAERESIS*/
- /* 236 */ 236,/*LATINSMALLLETTERIWITHGRAVE*/
- /* 237 */ 237,/*LATINSMALLLETTERIWITHACUTE*/
- /* 238 */ 238,/*LATINSMALLLETTERIWITHCIRCUMFLEX*/
- /* 239 */ 239,/*LATINSMALLLETTERIWITHDIAERESIS*/
- /* 240 */ 240,/*LATINSMALLLETTERETH*/
- /* 241 */ 241,/*LATINSMALLLETTERNWITHTILDE*/
- /* 242 */ 242,/*LATINSMALLLETTEROWITHGRAVE*/
- /* 243 */ 243,/*LATINSMALLLETTEROWITHACUTE*/
- /* 244 */ 244,/*LATINSMALLLETTEROWITHCIRCUMFLEX*/
- /* 245 */ 245,/*LATINSMALLLETTEROWITHTILDE*/
- /* 246 */ 246,/*LATINSMALLLETTEROWITHDIAERESIS*/
- /* 247 */ 247,/*DIVISIONSIGN*/
- /* 248 */ 248,/*LATINSMALLLETTEROWITHSTROKE*/
- /* 249 */ 249,/*LATINSMALLLETTERUWITHGRAVE*/
- /* 250 */ 250,/*LATINSMALLLETTERUWITHACUTE*/
- /* 251 */ 251,/*LATINSMALLLETTERUWITHCIRCUMFLEX*/
- /* 252 */ 252,/*LATINSMALLLETTERUWITHDIAERESIS*/
- /* 253 */ 253,/*LATINSMALLLETTERYWITHACUTE*/
- /* 254 */ 254,/*LATINSMALLLETTERTHORN*/
- /* 255 */ 255/*LATINSMALLLETTERYWITHDIAERESIS*/
+static convert_t iso8859_7[] = {
+	{ 0, 0 },
+	{ 1, 1 },
+	{ 2, 2 },
+	{ 3, 3 },
+	{ 4, 4 },
+	{ 5, 5 },
+	{ 6, 6 },
+	{ 7, 7 },
+	{ 8, 8 },
+	{ 9, 9 },
+	{ 10, 10 },
+	{ 11, 11 },
+	{ 12, 12 },
+	{ 13, 13 },
+	{ 14, 14 },
+	{ 15, 15 },
+	{ 16, 16 },
+	{ 17, 17 },
+	{ 18, 18 },
+	{ 19, 19 },
+	{ 20, 20 },
+	{ 21, 21 },
+	{ 22, 22 },
+	{ 23, 23 },
+	{ 24, 24 },
+	{ 25, 25 },
+	{ 26, 26 },
+	{ 27, 27 },
+	{ 28, 28 },
+	{ 29, 29 },
+	{ 30, 30 },
+	{ 31, 31 },
+	{ 32, 32 },
+	{ 33, 33 },
+	{ 34, 34 },
+	{ 35, 35 },
+	{ 36, 36 },
+	{ 37, 37 },
+	{ 38, 38 },
+	{ 39, 39 },
+	{ 40, 40 },
+	{ 41, 41 },
+	{ 42, 42 },
+	{ 43, 43 },
+	{ 44, 44 },
+	{ 45, 45 },
+	{ 46, 46 },
+	{ 47, 47 },
+	{ 48, 48 },
+	{ 49, 49 },
+	{ 50, 50 },
+	{ 51, 51 },
+	{ 52, 52 },
+	{ 53, 53 },
+	{ 54, 54 },
+	{ 55, 55 },
+	{ 56, 56 },
+	{ 57, 57 },
+	{ 58, 58 },
+	{ 59, 59 },
+	{ 60, 60 },
+	{ 61, 61 },
+	{ 62, 62 },
+	{ 63, 63 },
+	{ 64, 64 },
+	{ 65, 65 },
+	{ 66, 66 },
+	{ 67, 67 },
+	{ 68, 68 },
+	{ 69, 69 },
+	{ 70, 70 },
+	{ 71, 71 },
+	{ 72, 72 },
+	{ 73, 73 },
+	{ 74, 74 },
+	{ 75, 75 },
+	{ 76, 76 },
+	{ 77, 77 },
+	{ 78, 78 },
+	{ 79, 79 },
+	{ 80, 80 },
+	{ 81, 81 },
+	{ 82, 82 },
+	{ 83, 83 },
+	{ 84, 84 },
+	{ 85, 85 },
+	{ 86, 86 },
+	{ 87, 87 },
+	{ 88, 88 },
+	{ 89, 89 },
+	{ 90, 90 },
+	{ 91, 91 },
+	{ 92, 92 },
+	{ 93, 93 },
+	{ 94, 94 },
+	{ 95, 95 },
+	{ 96, 96 },
+	{ 97, 97 },
+	{ 98, 98 },
+	{ 99, 99 },
+	{ 100, 100 },
+	{ 101, 101 },
+	{ 102, 102 },
+	{ 103, 103 },
+	{ 104, 104 },
+	{ 105, 105 },
+	{ 106, 106 },
+	{ 107, 107 },
+	{ 108, 108 },
+	{ 109, 109 },
+	{ 110, 110 },
+	{ 111, 111 },
+	{ 112, 112 },
+	{ 113, 113 },
+	{ 114, 114 },
+	{ 115, 115 },
+	{ 116, 116 },
+	{ 117, 117 },
+	{ 118, 118 },
+	{ 119, 119 },
+	{ 120, 120 },
+	{ 121, 121 },
+	{ 122, 122 },
+	{ 123, 123 },
+	{ 124, 124 },
+	{ 125, 125 },
+	{ 126, 126 },
+	{ 127, 127 },
+	{ 128, 128 },
+	{ 129, 129 },
+	{ 130, 130 },
+	{ 131, 131 },
+	{ 132, 132 },
+	{ 133, 133 },
+	{ 134, 134 },
+	{ 135, 135 },
+	{ 136, 136 },
+	{ 137, 137 },
+	{ 138, 138 },
+	{ 139, 139 },
+	{ 140, 140 },
+	{ 141, 141 },
+	{ 142, 142 },
+	{ 143, 143 },
+	{ 144, 144 },
+	{ 145, 145 },
+	{ 146, 146 },
+	{ 147, 147 },
+	{ 148, 148 },
+	{ 149, 149 },
+	{ 150, 150 },
+	{ 151, 151 },
+	{ 152, 152 },
+	{ 153, 153 },
+	{ 154, 154 },
+	{ 155, 155 },
+	{ 156, 156 },
+	{ 157, 157 },
+	{ 158, 158 },
+	{ 159, 159 },
+	{ 160, 160 },
+	{ 161, 8216 },
+	{ 162, 8217 },
+	{ 163, 163 },
+	{ 164, 164 },
+	{ 165, 165 },
+	{ 166, 166 },
+	{ 167, 167 },
+	{ 168, 168 },
+	{ 169, 169 },
+	{ 170, 170 },
+	{ 171, 171 },
+	{ 172, 172 },
+	{ 173, 173 },
+	{ 174, 174 },
+	{ 175, 8213 },
+	{ 176, 176 },
+	{ 177, 177 },
+	{ 178, 178 },
+	{ 179, 179 },
+	{ 180, 900 },
+	{ 181, 901 },
+	{ 182, 902 },
+	{ 183, 183 },
+	{ 184, 904 },
+	{ 185, 905 },
+	{ 186, 906 },
+	{ 187, 187 },
+	{ 188, 908 },
+	{ 189, 189 },
+	{ 190, 910 },
+	{ 191, 911 },
+	{ 192, 912 },
+	{ 193, 913 },
+	{ 194, 914 },
+	{ 195, 915 },
+	{ 196, 916 },
+	{ 197, 917 },
+	{ 198, 918 },
+	{ 199, 919 },
+	{ 200, 920 },
+	{ 201, 921 },
+	{ 202, 922 },
+	{ 203, 923 },
+	{ 204, 924 },
+	{ 205, 925 },
+	{ 206, 926 },
+	{ 207, 927 },
+	{ 208, 928 },
+	{ 209, 929 },
+	{ 210, 210 },
+	{ 211, 931 },
+	{ 212, 932 },
+	{ 213, 933 },
+	{ 214, 934 },
+	{ 215, 935 },
+	{ 216, 936 },
+	{ 217, 937 },
+	{ 218, 938 },
+	{ 219, 939 },
+	{ 220, 940 },
+	{ 221, 941 },
+	{ 222, 942 },
+	{ 223, 943 },
+	{ 224, 944 },
+	{ 225, 945 },
+	{ 226, 946 },
+	{ 227, 947 },
+	{ 228, 948 },
+	{ 229, 949 },
+	{ 230, 950 },
+	{ 231, 951 },
+	{ 232, 952 },
+	{ 233, 953 },
+	{ 234, 954 },
+	{ 235, 955 },
+	{ 236, 956 },
+	{ 237, 957 },
+	{ 238, 958 },
+	{ 239, 959 },
+	{ 240, 960 },
+	{ 241, 961 },
+	{ 242, 962 },
+	{ 243, 963 },
+	{ 244, 964 },
+	{ 245, 965 },
+	{ 246, 966 },
+	{ 247, 967 },
+	{ 248, 968 },
+	{ 249, 969 },
+	{ 250, 970 },
+	{ 251, 971 },
+	{ 252, 972 },
+	{ 253, 973 },
+	{ 254, 974 },
+	{ 255, 255 },
+	{ 34, 8220 },
+	{ 34, 8221 },
+	{ 45, 8211 },
+	{ 45, 8212 },
+	{ 32, 8194 },
+	{ 32, 8195 },
+	{ 32, 8201 },
+	{ 65, 192 },
+	{ 65, 193 },
+	{ 65, 194 },
+	{ 65, 195 },
+	{ 65, 196 },
+	{ 65, 197 },
+	{ 65, 256 },
+	{ 65, 258 },
+	{ 65, 260 },
+	{ 65, 461 },
+	{ 97, 224 },
+	{ 97, 225 },
+	{ 97, 226 },
+	{ 97, 227 },
+	{ 97, 228 },
+	{ 97, 229 },
+	{ 97, 257 },
+	{ 97, 259 },
+	{ 97, 261 },
+	{ 97, 462 },
+	{ 67, 199 },
+	{ 67, 262 },
+	{ 67, 264 },
+	{ 67, 266 },
+	{ 67, 268 },
+	{ 99, 231 },
+	{ 99, 263 },
+	{ 99, 265 },
+	{ 99, 267 },
+	{ 99, 269 },
+	{ 68, 270 },
+	{ 100, 271 },
+	{ 69, 200 },
+	{ 69, 201 },
+	{ 69, 202 },
+	{ 69, 203 },
+	{ 69, 274 },
+	{ 69, 276 },
+	{ 69, 278 },
+	{ 69, 280 },
+	{ 69, 282 },
+	{ 101, 232 },
+	{ 101, 233 },
+	{ 101, 234 },
+	{ 101, 235 },
+	{ 101, 275 },
+	{ 101, 277 },
+	{ 101, 279 },
+	{ 101, 281 },
+	{ 101, 283 },
+	{ 71, 284 },
+	{ 71, 286 },
+	{ 71, 288 },
+	{ 71, 290 },
+	{ 71, 486 },
+	{ 71, 500 },
+	{ 103, 285 },
+	{ 103, 287 },
+	{ 103, 289 },
+	{ 103, 291 },
+	{ 103, 487 },
+	{ 103, 501 },
+	{ 72, 292 },
+	{ 104, 293 },
+	{ 73, 204 },
+	{ 73, 205 },
+	{ 73, 206 },
+	{ 73, 207 },
+	{ 73, 296 },
+	{ 73, 298 },
+	{ 73, 300 },
+	{ 73, 302 },
+	{ 73, 304 },
+	{ 73, 463 },
+	{ 105, 236 },
+	{ 105, 237 },
+	{ 105, 238 },
+	{ 105, 239 },
+	{ 105, 297 },
+	{ 105, 299 },
+	{ 105, 301 },
+	{ 105, 303 },
+	{ 105, 305 },
+	{ 105, 464 },
+	{ 74, 308 },
+	{ 106, 309 },
+	{ 75, 310 },
+	{ 75, 488 },
+	{ 107, 311 },
+	{ 107, 489 },
+	{ 76, 313 },
+	{ 76, 315 },
+	{ 76, 317 },
+	{ 76, 319 },
+	{ 76, 321 },
+	{ 108, 314 },
+	{ 108, 316 },
+	{ 108, 318 },
+	{ 108, 320 },
+	{ 108, 322 },
+	{ 77, 209 },
+	{ 77, 323 },
+	{ 77, 325 },
+	{ 77, 327 },
+	{ 109, 241 },
+	{ 109, 324 },
+	{ 109, 326 },
+	{ 109, 328 },
+	{ 109, 329 },
+	{ 78, 211 },
+	{ 78, 212 },
+	{ 78, 213 },
+	{ 78, 214 },
+	{ 78, 216 },
+	{ 78, 332 },
+	{ 78, 334 },
+	{ 78, 336 },
+	{ 78, 465 },
+	{ 78, 490 },
+	{ 110, 242 },
+	{ 110, 243 },
+	{ 110, 244 },
+	{ 110, 245 },
+	{ 110, 246 },
+	{ 110, 248 },
+	{ 110, 333 },
+	{ 110, 335 },
+	{ 110, 337 },
+	{ 110, 466 },
+	{ 110, 491 },
+	{ 82, 340 },
+	{ 82, 342 },
+	{ 82, 344 },
+	{ 114, 341 },
+	{ 114, 343 },
+	{ 114, 345 },
+	{ 83, 346 },
+	{ 83, 348 },
+	{ 83, 350 },
+	{ 83, 352 },
+	{ 115, 347 },
+	{ 115, 349 },
+	{ 115, 351 },
+	{ 115, 353 },
+	{ 84, 354 },
+	{ 84, 356 },
+	{ 116, 355 },
+	{ 116, 357 },
+	{ 85, 217 },
+	{ 85, 218 },
+	{ 85, 219 },
+	{ 85, 220 },
+	{ 85, 360 },
+	{ 85, 362 },
+	{ 85, 364 },
+	{ 85, 366 },
+	{ 85, 368 },
+	{ 85, 370 },
+	{ 85, 467 },
+	{ 117, 249 },
+	{ 117, 250 },
+	{ 117, 251 },
+	{ 117, 252 },
+	{ 117, 361 },
+	{ 117, 363 },
+	{ 117, 365 },
+	{ 117, 367 },
+	{ 117, 369 },
+	{ 117, 371 },
+	{ 117, 468 },
+	{ 87, 372 },
+	{ 119, 373 },
+	{ 89, 221 },
+	{ 89, 374 },
+	{ 89, 376 },
+	{ 121, 253 },
+	{ 121, 375 },
+	{ 90, 377 },
+	{ 90, 379 },
+	{ 90, 381 },
+	{ 122, 378 },
+	{ 122, 380 },
+	{ 122, 382 },
 };
-charconvert iso8859_1[] = {
- /* 0 */ 0,/*<tdbgcolor="C0C0C0"><fontface="Arial"color="000000"><b>ISO/IEC10646-1:2000CharacterName</b></font>*/
- 1,
- 2,
- 3,
- 4,
- 5,
- 6,
- 7,
- 8,
- 9,
- 10,
- 11,
- 12,
- 13,
- 14,
- 15,
- 16,
- 17,
- 18,
- 19,
- 20,
- 21,
- 22,
- 23,
- 24,
- 25,
- 26,
- 27,
- 28,
- 29,
- 30,
- 31,
- /* 32 */ 32,/*SPACE*/
- /* 33 */ 33,/*EXCLAMATIONMARK*/
- /* 34 */ 34,/*QUOTATIONMARK*/
- /* 35 */ 35,/*NUMBERSIGN*/
- /* 36 */ 36,/*DOLLARSIGN*/
- /* 37 */ 37,/*PERCENTSIGN*/
- /* 38 */ 38,/*AMPERSAND*/
- /* 39 */ 39,/*APOSTROPHE*/
- /* 40 */ 40,/*LEFTPARENTHESIS*/
- /* 41 */ 41,/*RIGHTPARENTHESIS*/
- /* 42 */ 42,/*ASTERISK*/
- /* 43 */ 43,/*PLUSSIGN*/
- /* 44 */ 44,/*COMMA*/
- /* 45 */ 45,/*HYPHEN-MINUS*/
- /* 46 */ 46,/*FULLSTOP*/
- /* 47 */ 47,/*SOLIDUS*/
- /* 48 */ 48,/*DIGITZERO*/
- /* 49 */ 49,/*DIGITONE*/
- /* 50 */ 50,/*DIGITTWO*/
- /* 51 */ 51,/*DIGITTHREE*/
- /* 52 */ 52,/*DIGITFOUR*/
- /* 53 */ 53,/*DIGITFIVE*/
- /* 54 */ 54,/*DIGITSIX*/
- /* 55 */ 55,/*DIGITSEVEN*/
- /* 56 */ 56,/*DIGITEIGHT*/
- /* 57 */ 57,/*DIGITNINE*/
- /* 58 */ 58,/*COLON*/
- /* 59 */ 59,/*SEMICOLON*/
- /* 60 */ 60,/*LESS-THANSIGN*/
- /* 61 */ 61,/*EQUALSSIGN*/
- /* 62 */ 62,/*GREATER-THANSIGN*/
- /* 63 */ 63,/*QUESTIONMARK*/
- /* 64 */ 64,/*COMMERCIALAT*/
- /* 65 */ 65,/*LATINCAPITALLETTERA*/
- /* 66 */ 66,/*LATINCAPITALLETTERB*/
- /* 67 */ 67,/*LATINCAPITALLETTERC*/
- /* 68 */ 68,/*LATINCAPITALLETTERD*/
- /* 69 */ 69,/*LATINCAPITALLETTERE*/
- /* 70 */ 70,/*LATINCAPITALLETTERF*/
- /* 71 */ 71,/*LATINCAPITALLETTERG*/
- /* 72 */ 72,/*LATINCAPITALLETTERH*/
- /* 73 */ 73,/*LATINCAPITALLETTERI*/
- /* 74 */ 74,/*LATINCAPITALLETTERJ*/
- /* 75 */ 75,/*LATINCAPITALLETTERK*/
- /* 76 */ 76,/*LATINCAPITALLETTERL*/
- /* 77 */ 77,/*LATINCAPITALLETTERM*/
- /* 78 */ 78,/*LATINCAPITALLETTERN*/
- /* 79 */ 79,/*LATINCAPITALLETTERO*/
- /* 80 */ 80,/*LATINCAPITALLETTERP*/
- /* 81 */ 81,/*LATINCAPITALLETTERQ*/
- /* 82 */ 82,/*LATINCAPITALLETTERR*/
- /* 83 */ 83,/*LATINCAPITALLETTERS*/
- /* 84 */ 84,/*LATINCAPITALLETTERT*/
- /* 85 */ 85,/*LATINCAPITALLETTERU*/
- /* 86 */ 86,/*LATINCAPITALLETTERV*/
- /* 87 */ 87,/*LATINCAPITALLETTERW*/
- /* 88 */ 88,/*LATINCAPITALLETTERX*/
- /* 89 */ 89,/*LATINCAPITALLETTERY*/
- /* 90 */ 90,/*LATINCAPITALLETTERZ*/
- /* 91 */ 91,/*LEFTSQUAREBRACKET*/
- /* 92 */ 92,/*REVERSESOLIDUS*/
- /* 93 */ 93,/*RIGHTSQUAREBRACKET*/
- /* 94 */ 94,/*CIRCUMFLEXACCENT*/
- /* 95 */ 95,/*LOWLINE*/
- /* 96 */ 96,/*GRAVEACCENT*/
- /* 97 */ 97,/*LATINSMALLLETTERA*/
- /* 98 */ 98,/*LATINSMALLLETTERB*/
- /* 99 */ 99,/*LATINSMALLLETTERC*/
- /* 100 */ 100,/*LATINSMALLLETTERD*/
- /* 101 */ 101,/*LATINSMALLLETTERE*/
- /* 102 */ 102,/*LATINSMALLLETTERF*/
- /* 103 */ 103,/*LATINSMALLLETTERG*/
- /* 104 */ 104,/*LATINSMALLLETTERH*/
- /* 105 */ 105,/*LATINSMALLLETTERI*/
- /* 106 */ 106,/*LATINSMALLLETTERJ*/
- /* 107 */ 107,/*LATINSMALLLETTERK*/
- /* 108 */ 108,/*LATINSMALLLETTERL*/
- /* 109 */ 109,/*LATINSMALLLETTERM*/
- /* 110 */ 110,/*LATINSMALLLETTERN*/
- /* 111 */ 111,/*LATINSMALLLETTERO*/
- /* 112 */ 112,/*LATINSMALLLETTERP*/
- /* 113 */ 113,/*LATINSMALLLETTERQ*/
- /* 114 */ 114,/*LATINSMALLLETTERR*/
- /* 115 */ 115,/*LATINSMALLLETTERS*/
- /* 116 */ 116,/*LATINSMALLLETTERT*/
- /* 117 */ 117,/*LATINSMALLLETTERU*/
- /* 118 */ 118,/*LATINSMALLLETTERV*/
- /* 119 */ 119,/*LATINSMALLLETTERW*/
- /* 120 */ 120,/*LATINSMALLLETTERX*/
- /* 121 */ 121,/*LATINSMALLLETTERY*/
- /* 122 */ 122,/*LATINSMALLLETTERZ*/
- /* 123 */ 123,/*LEFTCURLYBRACKET*/
- /* 124 */ 124,/*VERTICALLINE*/
- /* 125 */ 125,/*RIGHTCURLYBRACKET*/
- /* 126 */ 126,/*TILDE*/
- 127,
- 128,
- 129,
- 130,
- 131,
- 132,
- 133,
- 134,
- 135,
- 136,
- 137,
- 138,
- 139,
- 140,
- 141,
- 142,
- 143,
- 144,
- 145,
- 146,
- 147,
- 148,
- 149,
- 150,
- 151,
- 152,
- 153,
- 154,
- 155,
- 156,
- 157,
- 158,
- 159,
- /* 160 */ 160,/*NO-BREAKSPACE*/
- /* 161 */ 161,/*INVERTEDEXCLAMATIONMARK*/
- /* 162 */ 162,/*CENTSIGN*/
- /* 163 */ 163,/*POUNDSIGN*/
- /* 164 */ 164,/*CURRENCYSIGN*/
- /* 165 */ 165,/*YENSIGN*/
- /* 166 */ 166,/*BROKENBAR*/
- /* 167 */ 167,/*SECTIONSIGN*/
- /* 168 */ 168,/*DIAERESIS*/
- /* 169 */ 169,/*COPYRIGHTSIGN*/
- /* 170 */ 170,/*FEMININEORDINALINDICATOR*/
- /* 171 */ 171,/*LEFT-POINTINGDOUBLEANGLEQUOTATIONMARK*/
- /* 172 */ 172,/*NOTSIGN*/
- /* 173 */ 173,/*SOFTHYPHEN*/
- /* 174 */ 174,/*REGISTEREDSIGN*/
- /* 175 */ 175,/*MACRON*/
- /* 176 */ 176,/*DEGREESIGN*/
- /* 177 */ 177,/*PLUS-MINUSSIGN*/
- /* 178 */ 178,/*SUPERSCRIPTTWO*/
- /* 179 */ 179,/*SUPERSCRIPTTHREE*/
- /* 180 */ 180,/*ACUTEACCENT*/
- /* 181 */ 181,/*MICROSIGN*/
- /* 182 */ 182,/*PILCROWSIGN*/
- /* 183 */ 183,/*MIDDLEDOT*/
- /* 184 */ 184,/*CEDILLA*/
- /* 185 */ 185,/*SUPERSCRIPTONE*/
- /* 186 */ 186,/*MASCULINEORDINALINDICATOR*/
- /* 187 */ 187,/*RIGHT-POINTINGDOUBLEANGLEQUOTATIONMARK*/
- /* 188 */ 188,/*VULGARFRACTIONONEQUARTER*/
- /* 189 */ 189,/*VULGARFRACTIONONEHALF*/
- /* 190 */ 190,/*VULGARFRACTIONTHREEQUARTERS*/
- /* 191 */ 191,/*INVERTEDQUESTIONMARK*/
- /* 192 */ 192,/*LATINCAPITALLETTERAWITHGRAVE*/
- /* 193 */ 193,/*LATINCAPITALLETTERAWITHACUTE*/
- /* 194 */ 194,/*LATINCAPITALLETTERAWITHCIRCUMFLEX*/
- /* 195 */ 195,/*LATINCAPITALLETTERAWITHTILDE*/
- /* 196 */ 196,/*LATINCAPITALLETTERAWITHDIAERESIS*/
- /* 197 */ 197,/*LATINCAPITALLETTERAWITHRINGABOVE*/
- /* 198 */ 198,/*LATINCAPITALLETTERAE*/
- /* 199 */ 199,/*LATINCAPITALLETTERCWITHCEDILLA*/
- /* 200 */ 200,/*LATINCAPITALLETTEREWITHGRAVE*/
- /* 201 */ 201,/*LATINCAPITALLETTEREWITHACUTE*/
- /* 202 */ 202,/*LATINCAPITALLETTEREWITHCIRCUMFLEX*/
- /* 203 */ 203,/*LATINCAPITALLETTEREWITHDIAERESIS*/
- /* 204 */ 204,/*LATINCAPITALLETTERIWITHGRAVE*/
- /* 205 */ 205,/*LATINCAPITALLETTERIWITHACUTE*/
- /* 206 */ 206,/*LATINCAPITALLETTERIWITHCIRCUMFLEX*/
- /* 207 */ 207,/*LATINCAPITALLETTERIWITHDIAERESIS*/
- /* 208 */ 208,/*LATINCAPITALLETTERETH*/
- /* 209 */ 209,/*LATINCAPITALLETTERNWITHTILDE*/
- /* 210 */ 210,/*LATINCAPITALLETTEROWITHGRAVE*/
- /* 211 */ 211,/*LATINCAPITALLETTEROWITHACUTE*/
- /* 212 */ 212,/*LATINCAPITALLETTEROWITHCIRCUMFLEX*/
- /* 213 */ 213,/*LATINCAPITALLETTEROWITHTILDE*/
- /* 214 */ 214,/*LATINCAPITALLETTEROWITHDIAERESIS*/
- /* 215 */ 215,/*MULTIPLICATIONSIGN*/
- /* 216 */ 216,/*LATINCAPITALLETTEROWITHSTROKE*/
- /* 217 */ 217,/*LATINCAPITALLETTERUWITHGRAVE*/
- /* 218 */ 218,/*LATINCAPITALLETTERUWITHACUTE*/
- /* 219 */ 219,/*LATINCAPITALLETTERUWITHCIRCUMFLEX*/
- /* 220 */ 220,/*LATINCAPITALLETTERUWITHDIAERESIS*/
- /* 221 */ 221,/*LATINCAPITALLETTERYWITHACUTE*/
- /* 222 */ 222,/*LATINCAPITALLETTERTHORN*/
- /* 223 */ 223,/*LATINSMALLLETTERSHARPS*/
- /* 224 */ 224,/*LATINSMALLLETTERAWITHGRAVE*/
- /* 225 */ 225,/*LATINSMALLLETTERAWITHACUTE*/
- /* 226 */ 226,/*LATINSMALLLETTERAWITHCIRCUMFLEX*/
- /* 227 */ 227,/*LATINSMALLLETTERAWITHTILDE*/
- /* 228 */ 228,/*LATINSMALLLETTERAWITHDIAERESIS*/
- /* 229 */ 229,/*LATINSMALLLETTERAWITHRINGABOVE*/
- /* 230 */ 230,/*LATINSMALLLETTERAE*/
- /* 231 */ 231,/*LATINSMALLLETTERCWITHCEDILLA*/
- /* 232 */ 232,/*LATINSMALLLETTEREWITHGRAVE*/
- /* 233 */ 233,/*LATINSMALLLETTEREWITHACUTE*/
- /* 234 */ 234,/*LATINSMALLLETTEREWITHCIRCUMFLEX*/
- /* 235 */ 235,/*LATINSMALLLETTEREWITHDIAERESIS*/
- /* 236 */ 236,/*LATINSMALLLETTERIWITHGRAVE*/
- /* 237 */ 237,/*LATINSMALLLETTERIWITHACUTE*/
- /* 238 */ 238,/*LATINSMALLLETTERIWITHCIRCUMFLEX*/
- /* 239 */ 239,/*LATINSMALLLETTERIWITHDIAERESIS*/
- /* 240 */ 240,/*LATINSMALLLETTERETH*/
- /* 241 */ 241,/*LATINSMALLLETTERNWITHTILDE*/
- /* 242 */ 242,/*LATINSMALLLETTEROWITHGRAVE*/
- /* 243 */ 243,/*LATINSMALLLETTEROWITHACUTE*/
- /* 244 */ 244,/*LATINSMALLLETTEROWITHCIRCUMFLEX*/
- /* 245 */ 245,/*LATINSMALLLETTEROWITHTILDE*/
- /* 246 */ 246,/*LATINSMALLLETTEROWITHDIAERESIS*/
- /* 247 */ 247,/*DIVISIONSIGN*/
- /* 248 */ 248,/*LATINSMALLLETTEROWITHSTROKE*/
- /* 249 */ 249,/*LATINSMALLLETTERUWITHGRAVE*/
- /* 250 */ 250,/*LATINSMALLLETTERUWITHACUTE*/
- /* 251 */ 251,/*LATINSMALLLETTERUWITHCIRCUMFLEX*/
- /* 252 */ 252,/*LATINSMALLLETTERUWITHDIAERESIS*/
- /* 253 */ 253,/*LATINSMALLLETTERYWITHACUTE*/
- /* 254 */ 254,/*LATINSMALLLETTERTHORN*/
- /* 255 */ 255/*LATINSMALLLETTERYWITHDIAERESIS*/
+static convert_t iso8859_8[] = {
+	{ 0, 0 },
+	{ 1, 1 },
+	{ 2, 2 },
+	{ 3, 3 },
+	{ 4, 4 },
+	{ 5, 5 },
+	{ 6, 6 },
+	{ 7, 7 },
+	{ 8, 8 },
+	{ 9, 9 },
+	{ 10, 10 },
+	{ 11, 11 },
+	{ 12, 12 },
+	{ 13, 13 },
+	{ 14, 14 },
+	{ 15, 15 },
+	{ 16, 16 },
+	{ 17, 17 },
+	{ 18, 18 },
+	{ 19, 19 },
+	{ 20, 20 },
+	{ 21, 21 },
+	{ 22, 22 },
+	{ 23, 23 },
+	{ 24, 24 },
+	{ 25, 25 },
+	{ 26, 26 },
+	{ 27, 27 },
+	{ 28, 28 },
+	{ 29, 29 },
+	{ 30, 30 },
+	{ 31, 31 },
+	{ 32, 32 },
+	{ 33, 33 },
+	{ 34, 34 },
+	{ 35, 35 },
+	{ 36, 36 },
+	{ 37, 37 },
+	{ 38, 38 },
+	{ 39, 39 },
+	{ 40, 40 },
+	{ 41, 41 },
+	{ 42, 42 },
+	{ 43, 43 },
+	{ 44, 44 },
+	{ 45, 45 },
+	{ 46, 46 },
+	{ 47, 47 },
+	{ 48, 48 },
+	{ 49, 49 },
+	{ 50, 50 },
+	{ 51, 51 },
+	{ 52, 52 },
+	{ 53, 53 },
+	{ 54, 54 },
+	{ 55, 55 },
+	{ 56, 56 },
+	{ 57, 57 },
+	{ 58, 58 },
+	{ 59, 59 },
+	{ 60, 60 },
+	{ 61, 61 },
+	{ 62, 62 },
+	{ 63, 63 },
+	{ 64, 64 },
+	{ 65, 65 },
+	{ 66, 66 },
+	{ 67, 67 },
+	{ 68, 68 },
+	{ 69, 69 },
+	{ 70, 70 },
+	{ 71, 71 },
+	{ 72, 72 },
+	{ 73, 73 },
+	{ 74, 74 },
+	{ 75, 75 },
+	{ 76, 76 },
+	{ 77, 77 },
+	{ 78, 78 },
+	{ 79, 79 },
+	{ 80, 80 },
+	{ 81, 81 },
+	{ 82, 82 },
+	{ 83, 83 },
+	{ 84, 84 },
+	{ 85, 85 },
+	{ 86, 86 },
+	{ 87, 87 },
+	{ 88, 88 },
+	{ 89, 89 },
+	{ 90, 90 },
+	{ 91, 91 },
+	{ 92, 92 },
+	{ 93, 93 },
+	{ 94, 94 },
+	{ 95, 95 },
+	{ 96, 96 },
+	{ 97, 97 },
+	{ 98, 98 },
+	{ 99, 99 },
+	{ 100, 100 },
+	{ 101, 101 },
+	{ 102, 102 },
+	{ 103, 103 },
+	{ 104, 104 },
+	{ 105, 105 },
+	{ 106, 106 },
+	{ 107, 107 },
+	{ 108, 108 },
+	{ 109, 109 },
+	{ 110, 110 },
+	{ 111, 111 },
+	{ 112, 112 },
+	{ 113, 113 },
+	{ 114, 114 },
+	{ 115, 115 },
+	{ 116, 116 },
+	{ 117, 117 },
+	{ 118, 118 },
+	{ 119, 119 },
+	{ 120, 120 },
+	{ 121, 121 },
+	{ 122, 122 },
+	{ 123, 123 },
+	{ 124, 124 },
+	{ 125, 125 },
+	{ 126, 126 },
+	{ 127, 127 },
+	{ 128, 128 },
+	{ 129, 129 },
+	{ 130, 130 },
+	{ 131, 131 },
+	{ 132, 132 },
+	{ 133, 133 },
+	{ 134, 134 },
+	{ 135, 135 },
+	{ 136, 136 },
+	{ 137, 137 },
+	{ 138, 138 },
+	{ 139, 139 },
+	{ 140, 140 },
+	{ 141, 141 },
+	{ 142, 142 },
+	{ 143, 143 },
+	{ 144, 144 },
+	{ 145, 145 },
+	{ 146, 146 },
+	{ 147, 147 },
+	{ 148, 148 },
+	{ 149, 149 },
+	{ 150, 150 },
+	{ 151, 151 },
+	{ 152, 152 },
+	{ 153, 153 },
+	{ 154, 154 },
+	{ 155, 155 },
+	{ 156, 156 },
+	{ 157, 157 },
+	{ 158, 158 },
+	{ 159, 159 },
+	{ 160, 160 },
+	{ 161, 161 },
+	{ 162, 162 },
+	{ 163, 163 },
+	{ 164, 164 },
+	{ 165, 165 },
+	{ 166, 166 },
+	{ 167, 167 },
+	{ 168, 168 },
+	{ 169, 169 },
+	{ 170, 215 },
+	{ 171, 171 },
+	{ 172, 172 },
+	{ 173, 173 },
+	{ 174, 174 },
+	{ 175, 175 },
+	{ 176, 176 },
+	{ 177, 177 },
+	{ 178, 178 },
+	{ 179, 179 },
+	{ 180, 180 },
+	{ 181, 181 },
+	{ 182, 182 },
+	{ 183, 183 },
+	{ 184, 184 },
+	{ 185, 185 },
+	{ 186, 247 },
+	{ 187, 187 },
+	{ 188, 188 },
+	{ 189, 189 },
+	{ 190, 190 },
+	{ 191, 191 },
+	{ 192, 192 },
+	{ 193, 193 },
+	{ 194, 194 },
+	{ 195, 195 },
+	{ 196, 196 },
+	{ 197, 197 },
+	{ 198, 198 },
+	{ 199, 199 },
+	{ 200, 200 },
+	{ 201, 201 },
+	{ 202, 202 },
+	{ 203, 203 },
+	{ 204, 204 },
+	{ 205, 205 },
+	{ 206, 206 },
+	{ 207, 207 },
+	{ 208, 208 },
+	{ 209, 209 },
+	{ 210, 210 },
+	{ 211, 211 },
+	{ 212, 212 },
+	{ 213, 213 },
+	{ 214, 214 },
+	{ 215, 215 },
+	{ 216, 216 },
+	{ 217, 217 },
+	{ 218, 218 },
+	{ 219, 219 },
+	{ 220, 220 },
+	{ 221, 221 },
+	{ 222, 222 },
+	{ 223, 8215 },
+	{ 224, 1488 },
+	{ 225, 1489 },
+	{ 226, 1490 },
+	{ 227, 1491 },
+	{ 228, 1492 },
+	{ 229, 1493 },
+	{ 230, 1494 },
+	{ 231, 1495 },
+	{ 232, 1496 },
+	{ 233, 1497 },
+	{ 234, 1498 },
+	{ 235, 1499 },
+	{ 236, 1500 },
+	{ 237, 1501 },
+	{ 238, 1502 },
+	{ 239, 1503 },
+	{ 240, 1504 },
+	{ 241, 1505 },
+	{ 242, 1506 },
+	{ 243, 1507 },
+	{ 244, 1508 },
+	{ 245, 1509 },
+	{ 246, 1510 },
+	{ 247, 1511 },
+	{ 248, 1512 },
+	{ 249, 1513 },
+	{ 250, 1514 },
+	{ 251, 251 },
+	{ 252, 252 },
+	{ 253, 8206 },
+	{ 254, 8207 },
+	{ 255, 255 },
+	{ 34, 8220 },
+	{ 34, 8221 },
+	{ 39, 8216 },
+	{ 39, 8217 },
+	{ 45, 8211 },
+	{ 45, 8212 },
+	{ 32, 8194 },
+	{ 32, 8195 },
+	{ 32, 8201 },
+	{ 65, 256 },
+	{ 65, 258 },
+	{ 65, 260 },
+	{ 65, 461 },
+	{ 97, 224 },
+	{ 97, 225 },
+	{ 97, 226 },
+	{ 97, 227 },
+	{ 97, 228 },
+	{ 97, 229 },
+	{ 97, 257 },
+	{ 97, 259 },
+	{ 97, 261 },
+	{ 97, 462 },
+	{ 67, 262 },
+	{ 67, 264 },
+	{ 67, 266 },
+	{ 67, 268 },
+	{ 99, 231 },
+	{ 99, 263 },
+	{ 99, 265 },
+	{ 99, 267 },
+	{ 99, 269 },
+	{ 68, 270 },
+	{ 100, 271 },
+	{ 69, 274 },
+	{ 69, 276 },
+	{ 69, 278 },
+	{ 69, 280 },
+	{ 69, 282 },
+	{ 101, 232 },
+	{ 101, 233 },
+	{ 101, 234 },
+	{ 101, 235 },
+	{ 101, 275 },
+	{ 101, 277 },
+	{ 101, 279 },
+	{ 101, 281 },
+	{ 101, 283 },
+	{ 71, 284 },
+	{ 71, 286 },
+	{ 71, 288 },
+	{ 71, 290 },
+	{ 71, 486 },
+	{ 71, 500 },
+	{ 103, 285 },
+	{ 103, 287 },
+	{ 103, 289 },
+	{ 103, 291 },
+	{ 103, 487 },
+	{ 103, 501 },
+	{ 72, 292 },
+	{ 104, 293 },
+	{ 73, 296 },
+	{ 73, 298 },
+	{ 73, 300 },
+	{ 73, 302 },
+	{ 73, 304 },
+	{ 73, 463 },
+	{ 105, 236 },
+	{ 105, 237 },
+	{ 105, 238 },
+	{ 105, 239 },
+	{ 105, 297 },
+	{ 105, 299 },
+	{ 105, 301 },
+	{ 105, 303 },
+	{ 105, 305 },
+	{ 105, 464 },
+	{ 74, 308 },
+	{ 106, 309 },
+	{ 75, 310 },
+	{ 75, 488 },
+	{ 107, 311 },
+	{ 107, 489 },
+	{ 76, 313 },
+	{ 76, 315 },
+	{ 76, 317 },
+	{ 76, 319 },
+	{ 76, 321 },
+	{ 108, 314 },
+	{ 108, 316 },
+	{ 108, 318 },
+	{ 108, 320 },
+	{ 108, 322 },
+	{ 77, 323 },
+	{ 77, 325 },
+	{ 77, 327 },
+	{ 109, 241 },
+	{ 109, 324 },
+	{ 109, 326 },
+	{ 109, 328 },
+	{ 109, 329 },
+	{ 78, 332 },
+	{ 78, 334 },
+	{ 78, 336 },
+	{ 78, 465 },
+	{ 78, 490 },
+	{ 110, 242 },
+	{ 110, 243 },
+	{ 110, 244 },
+	{ 110, 245 },
+	{ 110, 246 },
+	{ 110, 248 },
+	{ 110, 333 },
+	{ 110, 335 },
+	{ 110, 337 },
+	{ 110, 466 },
+	{ 110, 491 },
+	{ 82, 340 },
+	{ 82, 342 },
+	{ 82, 344 },
+	{ 114, 341 },
+	{ 114, 343 },
+	{ 114, 345 },
+	{ 83, 346 },
+	{ 83, 348 },
+	{ 83, 350 },
+	{ 83, 352 },
+	{ 115, 347 },
+	{ 115, 349 },
+	{ 115, 351 },
+	{ 115, 353 },
+	{ 84, 354 },
+	{ 84, 356 },
+	{ 116, 355 },
+	{ 116, 357 },
+	{ 85, 360 },
+	{ 85, 362 },
+	{ 85, 364 },
+	{ 85, 366 },
+	{ 85, 368 },
+	{ 85, 370 },
+	{ 85, 467 },
+	{ 117, 249 },
+	{ 117, 250 },
+	{ 117, 361 },
+	{ 117, 363 },
+	{ 117, 365 },
+	{ 117, 367 },
+	{ 117, 369 },
+	{ 117, 371 },
+	{ 117, 468 },
+	{ 87, 372 },
+	{ 119, 373 },
+	{ 89, 374 },
+	{ 89, 376 },
+	{ 121, 253 },
+	{ 121, 375 },
+	{ 90, 377 },
+	{ 90, 379 },
+	{ 90, 381 },
+	{ 122, 378 },
+	{ 122, 380 },
+	{ 122, 382 },
 };
-charconvert iso8859_2[] = {
- /* 0 */ 0,/*<tdbgcolor="C0C0C0"><fontface="Arial"color="000000"><b>ISO/IEC10646-1:2000CharacterName</b></font>*/
- 1,
- 2,
- 3,
- 4,
- 5,
- 6,
- 7,
- 8,
- 9,
- 10,
- 11,
- 12,
- 13,
- 14,
- 15,
- 16,
- 17,
- 18,
- 19,
- 20,
- 21,
- 22,
- 23,
- 24,
- 25,
- 26,
- 27,
- 28,
- 29,
- 30,
- 31,
- /* 32 */ 32,/*SPACE*/
- /* 33 */ 33,/*EXCLAMATIONMARK*/
- /* 34 */ 34,/*QUOTATIONMARK*/
- /* 35 */ 35,/*NUMBERSIGN*/
- /* 36 */ 36,/*DOLLARSIGN*/
- /* 37 */ 37,/*PERCENTSIGN*/
- /* 38 */ 38,/*AMPERSAND*/
- /* 39 */ 39,/*APOSTROPHE*/
- /* 40 */ 40,/*LEFTPARENTHESIS*/
- /* 41 */ 41,/*RIGHTPARENTHESIS*/
- /* 42 */ 42,/*ASTERISK*/
- /* 43 */ 43,/*PLUSSIGN*/
- /* 44 */ 44,/*COMMA*/
- /* 45 */ 45,/*HYPHEN-MINUS*/
- /* 46 */ 46,/*FULLSTOP*/
- /* 47 */ 47,/*SOLIDUS*/
- /* 48 */ 48,/*DIGITZERO*/
- /* 49 */ 49,/*DIGITONE*/
- /* 50 */ 50,/*DIGITTWO*/
- /* 51 */ 51,/*DIGITTHREE*/
- /* 52 */ 52,/*DIGITFOUR*/
- /* 53 */ 53,/*DIGITFIVE*/
- /* 54 */ 54,/*DIGITSIX*/
- /* 55 */ 55,/*DIGITSEVEN*/
- /* 56 */ 56,/*DIGITEIGHT*/
- /* 57 */ 57,/*DIGITNINE*/
- /* 58 */ 58,/*COLON*/
- /* 59 */ 59,/*SEMICOLON*/
- /* 60 */ 60,/*LESS-THANSIGN*/
- /* 61 */ 61,/*EQUALSSIGN*/
- /* 62 */ 62,/*GREATER-THANSIGN*/
- /* 63 */ 63,/*QUESTIONMARK*/
- /* 64 */ 64,/*COMMERCIALAT*/
- /* 65 */ 65,/*LATINCAPITALLETTERA*/
- /* 66 */ 66,/*LATINCAPITALLETTERB*/
- /* 67 */ 67,/*LATINCAPITALLETTERC*/
- /* 68 */ 68,/*LATINCAPITALLETTERD*/
- /* 69 */ 69,/*LATINCAPITALLETTERE*/
- /* 70 */ 70,/*LATINCAPITALLETTERF*/
- /* 71 */ 71,/*LATINCAPITALLETTERG*/
- /* 72 */ 72,/*LATINCAPITALLETTERH*/
- /* 73 */ 73,/*LATINCAPITALLETTERI*/
- /* 74 */ 74,/*LATINCAPITALLETTERJ*/
- /* 75 */ 75,/*LATINCAPITALLETTERK*/
- /* 76 */ 76,/*LATINCAPITALLETTERL*/
- /* 77 */ 77,/*LATINCAPITALLETTERM*/
- /* 78 */ 78,/*LATINCAPITALLETTERN*/
- /* 79 */ 79,/*LATINCAPITALLETTERO*/
- /* 80 */ 80,/*LATINCAPITALLETTERP*/
- /* 81 */ 81,/*LATINCAPITALLETTERQ*/
- /* 82 */ 82,/*LATINCAPITALLETTERR*/
- /* 83 */ 83,/*LATINCAPITALLETTERS*/
- /* 84 */ 84,/*LATINCAPITALLETTERT*/
- /* 85 */ 85,/*LATINCAPITALLETTERU*/
- /* 86 */ 86,/*LATINCAPITALLETTERV*/
- /* 87 */ 87,/*LATINCAPITALLETTERW*/
- /* 88 */ 88,/*LATINCAPITALLETTERX*/
- /* 89 */ 89,/*LATINCAPITALLETTERY*/
- /* 90 */ 90,/*LATINCAPITALLETTERZ*/
- /* 91 */ 91,/*LEFTSQUAREBRACKET*/
- /* 92 */ 92,/*REVERSESOLIDUS*/
- /* 93 */ 93,/*RIGHTSQUAREBRACKET*/
- /* 94 */ 94,/*CIRCUMFLEXACCENT*/
- /* 95 */ 95,/*LOWLINE*/
- /* 96 */ 96,/*GRAVEACCENT*/
- /* 97 */ 97,/*LATINSMALLLETTERA*/
- /* 98 */ 98,/*LATINSMALLLETTERB*/
- /* 99 */ 99,/*LATINSMALLLETTERC*/
- /* 100 */ 100,/*LATINSMALLLETTERD*/
- /* 101 */ 101,/*LATINSMALLLETTERE*/
- /* 102 */ 102,/*LATINSMALLLETTERF*/
- /* 103 */ 103,/*LATINSMALLLETTERG*/
- /* 104 */ 104,/*LATINSMALLLETTERH*/
- /* 105 */ 105,/*LATINSMALLLETTERI*/
- /* 106 */ 106,/*LATINSMALLLETTERJ*/
- /* 107 */ 107,/*LATINSMALLLETTERK*/
- /* 108 */ 108,/*LATINSMALLLETTERL*/
- /* 109 */ 109,/*LATINSMALLLETTERM*/
- /* 110 */ 110,/*LATINSMALLLETTERN*/
- /* 111 */ 111,/*LATINSMALLLETTERO*/
- /* 112 */ 112,/*LATINSMALLLETTERP*/
- /* 113 */ 113,/*LATINSMALLLETTERQ*/
- /* 114 */ 114,/*LATINSMALLLETTERR*/
- /* 115 */ 115,/*LATINSMALLLETTERS*/
- /* 116 */ 116,/*LATINSMALLLETTERT*/
- /* 117 */ 117,/*LATINSMALLLETTERU*/
- /* 118 */ 118,/*LATINSMALLLETTERV*/
- /* 119 */ 119,/*LATINSMALLLETTERW*/
- /* 120 */ 120,/*LATINSMALLLETTERX*/
- /* 121 */ 121,/*LATINSMALLLETTERY*/
- /* 122 */ 122,/*LATINSMALLLETTERZ*/
- /* 123 */ 123,/*LEFTCURLYBRACKET*/
- /* 124 */ 124,/*VERTICALLINE*/
- /* 125 */ 125,/*RIGHTCURLYBRACKET*/
- /* 126 */ 126,/*TILDE*/
- 127,
- 128,
- 129,
- 130,
- 131,
- 132,
- 133,
- 134,
- 135,
- 136,
- 137,
- 138,
- 139,
- 140,
- 141,
- 142,
- 143,
- 144,
- 145,
- 146,
- 147,
- 148,
- 149,
- 150,
- 151,
- 152,
- 153,
- 154,
- 155,
- 156,
- 157,
- 158,
- 159,
- /* 160 */ 160,/*NO-BREAKSPACE*/
- /* 161 */ 260,/*LATINCAPITALLETTERAWITHOGONEK*/
- /* 162 */ 728,/*BREVE*/
- /* 163 */ 321,/*LATINCAPITALLETTERLWITHSTROKE*/
- /* 164 */ 164,/*CURRENCYSIGN*/
- /* 165 */ 317,/*LATINCAPITALLETTERLWITHCARON*/
- /* 166 */ 346,/*LATINCAPITALLETTERSWITHACUTE*/
- /* 167 */ 167,/*SECTIONSIGN*/
- /* 168 */ 168,/*DIAERESIS*/
- /* 169 */ 352,/*LATINCAPITALLETTERSWITHCARON*/
- /* 170 */ 350,/*LATINCAPITALLETTERSWITHCEDILLA*/
- /* 171 */ 356,/*LATINCAPITALLETTERTWITHCARON*/
- /* 172 */ 377,/*LATINCAPITALLETTERZWITHACUTE*/
- /* 173 */ 173,/*SOFTHYPHEN*/
- /* 174 */ 381,/*LATINCAPITALLETTERZWITHCARON*/
- /* 175 */ 379,/*LATINCAPITALLETTERZWITHDOTABOVE*/
- /* 176 */ 176,/*DEGREESIGN*/
- /* 177 */ 261,/*LATINSMALLLETTERAWITHOGONEK*/
- /* 178 */ 731,/*OGONEK*/
- /* 179 */ 322,/*LATINSMALLLETTERLWITHSTROKE*/
- /* 180 */ 180,/*ACUTEACCENT*/
- /* 181 */ 318,/*LATINSMALLLETTERLWITHCARON*/
- /* 182 */ 347,/*LATINSMALLLETTERSWITHACUTE*/
- /* 183 */ 711,/*CARON*/
- /* 184 */ 184,/*CEDILLA*/
- /* 185 */ 353,/*LATINSMALLLETTERSWITHCARON*/
- /* 186 */ 351,/*LATINSMALLLETTERSWITHCEDILLA*/
- /* 187 */ 357,/*LATINSMALLLETTERTWITHCARON*/
- /* 188 */ 378,/*LATINSMALLLETTERZWITHACUTE*/
- /* 189 */ 733,/*DOUBLEACUTEACCENT*/
- /* 190 */ 382,/*LATINSMALLLETTERZWITHCARON*/
- /* 191 */ 380,/*LATINSMALLLETTERZWITHDOTABOVE*/
- /* 192 */ 340,/*LATINCAPITALLETTERRWITHACUTE*/
- /* 193 */ 193,/*LATINCAPITALLETTERAWITHACUTE*/
- /* 194 */ 194,/*LATINCAPITALLETTERAWITHCIRCUMFLEX*/
- /* 195 */ 258,/*LATINCAPITALLETTERAWITHBREVE*/
- /* 196 */ 196,/*LATINCAPITALLETTERAWITHDIAERESIS*/
- /* 197 */ 313,/*LATINCAPITALLETTERLWITHACUTE*/
- /* 198 */ 262,/*LATINCAPITALLETTERCWITHACUTE*/
- /* 199 */ 199,/*LATINCAPITALLETTERCWITHCEDILLA*/
- /* 200 */ 268,/*LATINCAPITALLETTERCWITHCARON*/
- /* 201 */ 201,/*LATINCAPITALLETTEREWITHACUTE*/
- /* 202 */ 280,/*LATINCAPITALLETTEREWITHOGONEK*/
- /* 203 */ 203,/*LATINCAPITALLETTEREWITHDIAERESIS*/
- /* 204 */ 282,/*LATINCAPITALLETTEREWITHCARON*/
- /* 205 */ 205,/*LATINCAPITALLETTERIWITHACUTE*/
- /* 206 */ 206,/*LATINCAPITALLETTERIWITHCIRCUMFLEX*/
- /* 207 */ 270,/*LATINCAPITALLETTERDWITHCARON*/
- /* 208 */ 272,/*LATINCAPITALLETTERDWITHSTROKE*/
- /* 209 */ 323,/*LATINCAPITALLETTERNWITHACUTE*/
- /* 210 */ 327,/*LATINCAPITALLETTERNWITHCARON*/
- /* 211 */ 211,/*LATINCAPITALLETTEROWITHACUTE*/
- /* 212 */ 212,/*LATINCAPITALLETTEROWITHCIRCUMFLEX*/
- /* 213 */ 336,/*LATINCAPITALLETTEROWITHDOUBLEACUTE*/
- /* 214 */ 214,/*LATINCAPITALLETTEROWITHDIAERESIS*/
- /* 215 */ 215,/*MULTIPLICATIONSIGN*/
- /* 216 */ 344,/*LATINCAPITALLETTERRWITHCARON*/
- /* 217 */ 366,/*LATINCAPITALLETTERUWITHRINGABOVE*/
- /* 218 */ 218,/*LATINCAPITALLETTERUWITHACUTE*/
- /* 219 */ 368,/*LATINCAPITALLETTERUWITHDOUBLEACUTE*/
- /* 220 */ 220,/*LATINCAPITALLETTERUWITHDIAERESIS*/
- /* 221 */ 221,/*LATINCAPITALLETTERYWITHACUTE*/
- /* 222 */ 354,/*LATINCAPITALLETTERTWITHCEDILLA*/
- /* 223 */ 223,/*LATINSMALLLETTERSHARPS*/
- /* 224 */ 341,/*LATINSMALLLETTERRWITHACUTE*/
- /* 225 */ 225,/*LATINSMALLLETTERAWITHACUTE*/
- /* 226 */ 226,/*LATINSMALLLETTERAWITHCIRCUMFLEX*/
- /* 227 */ 259,/*LATINSMALLLETTERAWITHBREVE*/
- /* 228 */ 228,/*LATINSMALLLETTERAWITHDIAERESIS*/
- /* 229 */ 314,/*LATINSMALLLETTERLWITHACUTE*/
- /* 230 */ 263,/*LATINSMALLLETTERCWITHACUTE*/
- /* 231 */ 231,/*LATINSMALLLETTERCWITHCEDILLA*/
- /* 232 */ 269,/*LATINSMALLLETTERCWITHCARON*/
- /* 233 */ 233,/*LATINSMALLLETTEREWITHACUTE*/
- /* 234 */ 281,/*LATINSMALLLETTEREWITHOGONEK*/
- /* 235 */ 235,/*LATINSMALLLETTEREWITHDIAERESIS*/
- /* 236 */ 283,/*LATINSMALLLETTEREWITHCARON*/
- /* 237 */ 237,/*LATINSMALLLETTERIWITHACUTE*/
- /* 238 */ 238,/*LATINSMALLLETTERIWITHCIRCUMFLEX*/
- /* 239 */ 271,/*LATINSMALLLETTERDWITHCARON*/
- /* 240 */ 273,/*LATINSMALLLETTERDWITHSTROKE*/
- /* 241 */ 324,/*LATINSMALLLETTERNWITHACUTE*/
- /* 242 */ 328,/*LATINSMALLLETTERNWITHCARON*/
- /* 243 */ 243,/*LATINSMALLLETTEROWITHACUTE*/
- /* 244 */ 244,/*LATINSMALLLETTEROWITHCIRCUMFLEX*/
- /* 245 */ 337,/*LATINSMALLLETTEROWITHDOUBLEACUTE*/
- /* 246 */ 246,/*LATINSMALLLETTEROWITHDIAERESIS*/
- /* 247 */ 247,/*DIVISIONSIGN*/
- /* 248 */ 345,/*LATINSMALLLETTERRWITHCARON*/
- /* 249 */ 367,/*LATINSMALLLETTERUWITHRINGABOVE*/
- /* 250 */ 250,/*LATINSMALLLETTERUWITHACUTE*/
- /* 251 */ 369,/*LATINSMALLLETTERUWITHDOUBLEACUTE*/
- /* 252 */ 252,/*LATINSMALLLETTERUWITHDIAERESIS*/
- /* 253 */ 253,/*LATINSMALLLETTERYWITHACUTE*/
- /* 254 */ 355,/*LATINSMALLLETTERTWITHCEDILLA*/
- /* 255 */ 729/*DOTABOVE*/
+static convert_t iso8859_9[] = {
+	{ 0, 0 },
+	{ 1, 1 },
+	{ 2, 2 },
+	{ 3, 3 },
+	{ 4, 4 },
+	{ 5, 5 },
+	{ 6, 6 },
+	{ 7, 7 },
+	{ 8, 8 },
+	{ 9, 9 },
+	{ 10, 10 },
+	{ 11, 11 },
+	{ 12, 12 },
+	{ 13, 13 },
+	{ 14, 14 },
+	{ 15, 15 },
+	{ 16, 16 },
+	{ 17, 17 },
+	{ 18, 18 },
+	{ 19, 19 },
+	{ 20, 20 },
+	{ 21, 21 },
+	{ 22, 22 },
+	{ 23, 23 },
+	{ 24, 24 },
+	{ 25, 25 },
+	{ 26, 26 },
+	{ 27, 27 },
+	{ 28, 28 },
+	{ 29, 29 },
+	{ 30, 30 },
+	{ 31, 31 },
+	{ 32, 32 },
+	{ 33, 33 },
+	{ 34, 34 },
+	{ 35, 35 },
+	{ 36, 36 },
+	{ 37, 37 },
+	{ 38, 38 },
+	{ 39, 39 },
+	{ 40, 40 },
+	{ 41, 41 },
+	{ 42, 42 },
+	{ 43, 43 },
+	{ 44, 44 },
+	{ 45, 45 },
+	{ 46, 46 },
+	{ 47, 47 },
+	{ 48, 48 },
+	{ 49, 49 },
+	{ 50, 50 },
+	{ 51, 51 },
+	{ 52, 52 },
+	{ 53, 53 },
+	{ 54, 54 },
+	{ 55, 55 },
+	{ 56, 56 },
+	{ 57, 57 },
+	{ 58, 58 },
+	{ 59, 59 },
+	{ 60, 60 },
+	{ 61, 61 },
+	{ 62, 62 },
+	{ 63, 63 },
+	{ 64, 64 },
+	{ 65, 65 },
+	{ 66, 66 },
+	{ 67, 67 },
+	{ 68, 68 },
+	{ 69, 69 },
+	{ 70, 70 },
+	{ 71, 71 },
+	{ 72, 72 },
+	{ 73, 73 },
+	{ 74, 74 },
+	{ 75, 75 },
+	{ 76, 76 },
+	{ 77, 77 },
+	{ 78, 78 },
+	{ 79, 79 },
+	{ 80, 80 },
+	{ 81, 81 },
+	{ 82, 82 },
+	{ 83, 83 },
+	{ 84, 84 },
+	{ 85, 85 },
+	{ 86, 86 },
+	{ 87, 87 },
+	{ 88, 88 },
+	{ 89, 89 },
+	{ 90, 90 },
+	{ 91, 91 },
+	{ 92, 92 },
+	{ 93, 93 },
+	{ 94, 94 },
+	{ 95, 95 },
+	{ 96, 96 },
+	{ 97, 97 },
+	{ 98, 98 },
+	{ 99, 99 },
+	{ 100, 100 },
+	{ 101, 101 },
+	{ 102, 102 },
+	{ 103, 103 },
+	{ 104, 104 },
+	{ 105, 105 },
+	{ 106, 106 },
+	{ 107, 107 },
+	{ 108, 108 },
+	{ 109, 109 },
+	{ 110, 110 },
+	{ 111, 111 },
+	{ 112, 112 },
+	{ 113, 113 },
+	{ 114, 114 },
+	{ 115, 115 },
+	{ 116, 116 },
+	{ 117, 117 },
+	{ 118, 118 },
+	{ 119, 119 },
+	{ 120, 120 },
+	{ 121, 121 },
+	{ 122, 122 },
+	{ 123, 123 },
+	{ 124, 124 },
+	{ 125, 125 },
+	{ 126, 126 },
+	{ 127, 127 },
+	{ 128, 128 },
+	{ 129, 129 },
+	{ 130, 130 },
+	{ 131, 131 },
+	{ 132, 132 },
+	{ 133, 133 },
+	{ 134, 134 },
+	{ 135, 135 },
+	{ 136, 136 },
+	{ 137, 137 },
+	{ 138, 138 },
+	{ 139, 139 },
+	{ 140, 140 },
+	{ 141, 141 },
+	{ 142, 142 },
+	{ 143, 143 },
+	{ 144, 144 },
+	{ 145, 145 },
+	{ 146, 146 },
+	{ 147, 147 },
+	{ 148, 148 },
+	{ 149, 149 },
+	{ 150, 150 },
+	{ 151, 151 },
+	{ 152, 152 },
+	{ 153, 153 },
+	{ 154, 154 },
+	{ 155, 155 },
+	{ 156, 156 },
+	{ 157, 157 },
+	{ 158, 158 },
+	{ 159, 159 },
+	{ 160, 160 },
+	{ 161, 161 },
+	{ 162, 162 },
+	{ 163, 163 },
+	{ 164, 164 },
+	{ 165, 165 },
+	{ 166, 166 },
+	{ 167, 167 },
+	{ 168, 168 },
+	{ 169, 169 },
+	{ 170, 170 },
+	{ 171, 171 },
+	{ 172, 172 },
+	{ 173, 173 },
+	{ 174, 174 },
+	{ 175, 175 },
+	{ 176, 176 },
+	{ 177, 177 },
+	{ 178, 178 },
+	{ 179, 179 },
+	{ 180, 180 },
+	{ 181, 181 },
+	{ 182, 182 },
+	{ 183, 183 },
+	{ 184, 184 },
+	{ 185, 185 },
+	{ 186, 186 },
+	{ 187, 187 },
+	{ 188, 188 },
+	{ 189, 189 },
+	{ 190, 190 },
+	{ 191, 191 },
+	{ 192, 192 },
+	{ 193, 193 },
+	{ 194, 194 },
+	{ 195, 195 },
+	{ 196, 196 },
+	{ 197, 197 },
+	{ 198, 198 },
+	{ 199, 199 },
+	{ 200, 200 },
+	{ 201, 201 },
+	{ 202, 202 },
+	{ 203, 203 },
+	{ 204, 204 },
+	{ 205, 205 },
+	{ 206, 206 },
+	{ 207, 207 },
+	{ 208, 286 },
+	{ 209, 209 },
+	{ 210, 210 },
+	{ 211, 211 },
+	{ 212, 212 },
+	{ 213, 213 },
+	{ 214, 214 },
+	{ 215, 215 },
+	{ 216, 216 },
+	{ 217, 217 },
+	{ 218, 218 },
+	{ 219, 219 },
+	{ 220, 220 },
+	{ 221, 304 },
+	{ 222, 350 },
+	{ 223, 223 },
+	{ 224, 224 },
+	{ 225, 225 },
+	{ 226, 226 },
+	{ 227, 227 },
+	{ 228, 228 },
+	{ 229, 229 },
+	{ 230, 230 },
+	{ 231, 231 },
+	{ 232, 232 },
+	{ 233, 233 },
+	{ 234, 234 },
+	{ 235, 235 },
+	{ 236, 236 },
+	{ 237, 237 },
+	{ 238, 238 },
+	{ 239, 239 },
+	{ 240, 287 },
+	{ 241, 241 },
+	{ 242, 242 },
+	{ 243, 243 },
+	{ 244, 244 },
+	{ 245, 245 },
+	{ 246, 246 },
+	{ 247, 247 },
+	{ 248, 248 },
+	{ 249, 249 },
+	{ 250, 250 },
+	{ 251, 251 },
+	{ 252, 252 },
+	{ 253, 305 },
+	{ 254, 351 },
+	{ 255, 255 },
+	{ 34, 8220 },
+	{ 34, 8221 },
+	{ 39, 8216 },
+	{ 39, 8217 },
+	{ 45, 8211 },
+	{ 45, 8212 },
+	{ 32, 8194 },
+	{ 32, 8195 },
+	{ 32, 8201 },
+	{ 65, 256 },
+	{ 65, 258 },
+	{ 65, 260 },
+	{ 65, 461 },
+	{ 97, 257 },
+	{ 97, 259 },
+	{ 97, 261 },
+	{ 97, 462 },
+	{ 67, 262 },
+	{ 67, 264 },
+	{ 67, 266 },
+	{ 67, 268 },
+	{ 99, 263 },
+	{ 99, 265 },
+	{ 99, 267 },
+	{ 99, 269 },
+	{ 68, 270 },
+	{ 100, 271 },
+	{ 69, 274 },
+	{ 69, 276 },
+	{ 69, 278 },
+	{ 69, 280 },
+	{ 69, 282 },
+	{ 101, 275 },
+	{ 101, 277 },
+	{ 101, 279 },
+	{ 101, 281 },
+	{ 101, 283 },
+	{ 71, 284 },
+	{ 71, 288 },
+	{ 71, 290 },
+	{ 71, 486 },
+	{ 71, 500 },
+	{ 103, 285 },
+	{ 103, 289 },
+	{ 103, 291 },
+	{ 103, 487 },
+	{ 103, 501 },
+	{ 72, 292 },
+	{ 104, 293 },
+	{ 73, 296 },
+	{ 73, 298 },
+	{ 73, 300 },
+	{ 73, 302 },
+	{ 73, 463 },
+	{ 105, 297 },
+	{ 105, 299 },
+	{ 105, 301 },
+	{ 105, 303 },
+	{ 105, 464 },
+	{ 74, 308 },
+	{ 106, 309 },
+	{ 75, 310 },
+	{ 75, 488 },
+	{ 107, 311 },
+	{ 107, 489 },
+	{ 76, 313 },
+	{ 76, 315 },
+	{ 76, 317 },
+	{ 76, 319 },
+	{ 76, 321 },
+	{ 108, 314 },
+	{ 108, 316 },
+	{ 108, 318 },
+	{ 108, 320 },
+	{ 108, 322 },
+	{ 77, 323 },
+	{ 77, 325 },
+	{ 77, 327 },
+	{ 109, 324 },
+	{ 109, 326 },
+	{ 109, 328 },
+	{ 109, 329 },
+	{ 78, 332 },
+	{ 78, 334 },
+	{ 78, 336 },
+	{ 78, 465 },
+	{ 78, 490 },
+	{ 110, 333 },
+	{ 110, 335 },
+	{ 110, 337 },
+	{ 110, 466 },
+	{ 110, 491 },
+	{ 82, 340 },
+	{ 82, 342 },
+	{ 82, 344 },
+	{ 114, 341 },
+	{ 114, 343 },
+	{ 114, 345 },
+	{ 83, 346 },
+	{ 83, 348 },
+	{ 83, 352 },
+	{ 115, 347 },
+	{ 115, 349 },
+	{ 115, 353 },
+	{ 84, 354 },
+	{ 84, 356 },
+	{ 116, 355 },
+	{ 116, 357 },
+	{ 85, 360 },
+	{ 85, 362 },
+	{ 85, 364 },
+	{ 85, 366 },
+	{ 85, 368 },
+	{ 85, 370 },
+	{ 85, 467 },
+	{ 117, 361 },
+	{ 117, 363 },
+	{ 117, 365 },
+	{ 117, 367 },
+	{ 117, 369 },
+	{ 117, 371 },
+	{ 117, 468 },
+	{ 87, 372 },
+	{ 119, 373 },
+	{ 89, 221 },
+	{ 89, 374 },
+	{ 89, 376 },
+	{ 121, 253 },
+	{ 121, 375 },
+	{ 90, 377 },
+	{ 90, 379 },
+	{ 90, 381 },
+	{ 122, 378 },
+	{ 122, 380 },
+	{ 122, 382 },
 };
-charconvert iso8859_3[] = {
- /* 0 */ 0,/*<tdbgcolor="C0C0C0"><fontface="Arial"color="000000"><b>ISO/IEC10646-1:2000CharacterName</b></font>*/
- 1,
- 2,
- 3,
- 4,
- 5,
- 6,
- 7,
- 8,
- 9,
- 10,
- 11,
- 12,
- 13,
- 14,
- 15,
- 16,
- 17,
- 18,
- 19,
- 20,
- 21,
- 22,
- 23,
- 24,
- 25,
- 26,
- 27,
- 28,
- 29,
- 30,
- 31,
- /* 32 */ 32,/*SPACE*/
- /* 33 */ 33,/*EXCLAMATIONMARK*/
- /* 34 */ 34,/*QUOTATIONMARK*/
- /* 35 */ 35,/*NUMBERSIGN*/
- /* 36 */ 36,/*DOLLARSIGN*/
- /* 37 */ 37,/*PERCENTSIGN*/
- /* 38 */ 38,/*AMPERSAND*/
- /* 39 */ 39,/*APOSTROPHE*/
- /* 40 */ 40,/*LEFTPARENTHESIS*/
- /* 41 */ 41,/*RIGHTPARENTHESIS*/
- /* 42 */ 42,/*ASTERISK*/
- /* 43 */ 43,/*PLUSSIGN*/
- /* 44 */ 44,/*COMMA*/
- /* 45 */ 45,/*HYPHEN-MINUS*/
- /* 46 */ 46,/*FULLSTOP*/
- /* 47 */ 47,/*SOLIDUS*/
- /* 48 */ 48,/*DIGITZERO*/
- /* 49 */ 49,/*DIGITONE*/
- /* 50 */ 50,/*DIGITTWO*/
- /* 51 */ 51,/*DIGITTHREE*/
- /* 52 */ 52,/*DIGITFOUR*/
- /* 53 */ 53,/*DIGITFIVE*/
- /* 54 */ 54,/*DIGITSIX*/
- /* 55 */ 55,/*DIGITSEVEN*/
- /* 56 */ 56,/*DIGITEIGHT*/
- /* 57 */ 57,/*DIGITNINE*/
- /* 58 */ 58,/*COLON*/
- /* 59 */ 59,/*SEMICOLON*/
- /* 60 */ 60,/*LESS-THANSIGN*/
- /* 61 */ 61,/*EQUALSSIGN*/
- /* 62 */ 62,/*GREATER-THANSIGN*/
- /* 63 */ 63,/*QUESTIONMARK*/
- /* 64 */ 64,/*COMMERCIALAT*/
- /* 65 */ 65,/*LATINCAPITALLETTERA*/
- /* 66 */ 66,/*LATINCAPITALLETTERB*/
- /* 67 */ 67,/*LATINCAPITALLETTERC*/
- /* 68 */ 68,/*LATINCAPITALLETTERD*/
- /* 69 */ 69,/*LATINCAPITALLETTERE*/
- /* 70 */ 70,/*LATINCAPITALLETTERF*/
- /* 71 */ 71,/*LATINCAPITALLETTERG*/
- /* 72 */ 72,/*LATINCAPITALLETTERH*/
- /* 73 */ 73,/*LATINCAPITALLETTERI*/
- /* 74 */ 74,/*LATINCAPITALLETTERJ*/
- /* 75 */ 75,/*LATINCAPITALLETTERK*/
- /* 76 */ 76,/*LATINCAPITALLETTERL*/
- /* 77 */ 77,/*LATINCAPITALLETTERM*/
- /* 78 */ 78,/*LATINCAPITALLETTERN*/
- /* 79 */ 79,/*LATINCAPITALLETTERO*/
- /* 80 */ 80,/*LATINCAPITALLETTERP*/
- /* 81 */ 81,/*LATINCAPITALLETTERQ*/
- /* 82 */ 82,/*LATINCAPITALLETTERR*/
- /* 83 */ 83,/*LATINCAPITALLETTERS*/
- /* 84 */ 84,/*LATINCAPITALLETTERT*/
- /* 85 */ 85,/*LATINCAPITALLETTERU*/
- /* 86 */ 86,/*LATINCAPITALLETTERV*/
- /* 87 */ 87,/*LATINCAPITALLETTERW*/
- /* 88 */ 88,/*LATINCAPITALLETTERX*/
- /* 89 */ 89,/*LATINCAPITALLETTERY*/
- /* 90 */ 90,/*LATINCAPITALLETTERZ*/
- /* 91 */ 91,/*LEFTSQUAREBRACKET*/
- /* 92 */ 92,/*REVERSESOLIDUS*/
- /* 93 */ 93,/*RIGHTSQUAREBRACKET*/
- /* 94 */ 94,/*CIRCUMFLEXACCENT*/
- /* 95 */ 95,/*LOWLINE*/
- /* 96 */ 96,/*GRAVEACCENT*/
- /* 97 */ 97,/*LATINSMALLLETTERA*/
- /* 98 */ 98,/*LATINSMALLLETTERB*/
- /* 99 */ 99,/*LATINSMALLLETTERC*/
- /* 100 */ 100,/*LATINSMALLLETTERD*/
- /* 101 */ 101,/*LATINSMALLLETTERE*/
- /* 102 */ 102,/*LATINSMALLLETTERF*/
- /* 103 */ 103,/*LATINSMALLLETTERG*/
- /* 104 */ 104,/*LATINSMALLLETTERH*/
- /* 105 */ 105,/*LATINSMALLLETTERI*/
- /* 106 */ 106,/*LATINSMALLLETTERJ*/
- /* 107 */ 107,/*LATINSMALLLETTERK*/
- /* 108 */ 108,/*LATINSMALLLETTERL*/
- /* 109 */ 109,/*LATINSMALLLETTERM*/
- /* 110 */ 110,/*LATINSMALLLETTERN*/
- /* 111 */ 111,/*LATINSMALLLETTERO*/
- /* 112 */ 112,/*LATINSMALLLETTERP*/
- /* 113 */ 113,/*LATINSMALLLETTERQ*/
- /* 114 */ 114,/*LATINSMALLLETTERR*/
- /* 115 */ 115,/*LATINSMALLLETTERS*/
- /* 116 */ 116,/*LATINSMALLLETTERT*/
- /* 117 */ 117,/*LATINSMALLLETTERU*/
- /* 118 */ 118,/*LATINSMALLLETTERV*/
- /* 119 */ 119,/*LATINSMALLLETTERW*/
- /* 120 */ 120,/*LATINSMALLLETTERX*/
- /* 121 */ 121,/*LATINSMALLLETTERY*/
- /* 122 */ 122,/*LATINSMALLLETTERZ*/
- /* 123 */ 123,/*LEFTCURLYBRACKET*/
- /* 124 */ 124,/*VERTICALLINE*/
- /* 125 */ 125,/*RIGHTCURLYBRACKET*/
- /* 126 */ 126,/*TILDE*/
- 127,
- 128,
- 129,
- 130,
- 131,
- 132,
- 133,
- 134,
- 135,
- 136,
- 137,
- 138,
- 139,
- 140,
- 141,
- 142,
- 143,
- 144,
- 145,
- 146,
- 147,
- 148,
- 149,
- 150,
- 151,
- 152,
- 153,
- 154,
- 155,
- 156,
- 157,
- 158,
- 159,
- /* 160 */ 160,/*NO-BREAKSPACE*/
- /* 161 */ 294,/*LATINCAPITALLETTERHWITHSTROKE*/
- /* 162 */ 728,/*BREVE*/
- /* 163 */ 163,/*POUNDSIGN*/
- /* 164 */ 164,/*CURRENCYSIGN*/
- 165,
- /* 166 */ 292,/*LATINCAPITALLETTERHWITHCIRCUMFLEX*/
- /* 167 */ 167,/*SECTIONSIGN*/
- /* 168 */ 168,/*DIAERESIS*/
- /* 169 */ 304,/*LATINCAPITALLETTERIWITHDOTABOVE*/
- /* 170 */ 350,/*LATINCAPITALLETTERSWITHCEDILLA*/
- /* 171 */ 286,/*LATINCAPITALLETTERGWITHBREVE*/
- /* 172 */ 308,/*LATINCAPITALLETTERJWITHCIRCUMFLEX*/
- /* 173 */ 173,/*SOFTHYPHEN*/
- 174,
- /* 175 */ 379,/*LATINCAPITALLETTERZWITHDOTABOVE*/
- /* 176 */ 176,/*DEGREESIGN*/
- /* 177 */ 295,/*LATINSMALLLETTERHWITHSTROKE*/
- /* 178 */ 178,/*SUPERSCRIPTTWO*/
- /* 179 */ 179,/*SUPERSCRIPTTHREE*/
- /* 180 */ 180,/*ACUTEACCENT*/
- /* 181 */ 181,/*MICROSIGN*/
- /* 182 */ 293,/*LATINSMALLLETTERHWITHCIRCUMFLEX*/
- /* 183 */ 183,/*MIDDLEDOT*/
- /* 184 */ 184,/*CEDILLA*/
- /* 185 */ 305,/*LATINSMALLLETTERDOTLESSI*/
- /* 186 */ 351,/*LATINSMALLLETTERSWITHCEDILLA*/
- /* 187 */ 287,/*LATINSMALLLETTERGWITHBREVE*/
- /* 188 */ 309,/*LATINSMALLLETTERJWITHCIRCUMFLEX*/
- /* 189 */ 189,/*VULGARFRACTIONONEHALF*/
- 190,
- /* 191 */ 380,/*LATINSMALLLETTERZWITHDOTABOVE*/
- /* 192 */ 192,/*LATINCAPITALLETTERAWITHGRAVE*/
- /* 193 */ 193,/*LATINCAPITALLETTERAWITHACUTE*/
- /* 194 */ 194,/*LATINCAPITALLETTERAWITHCIRCUMFLEX*/
- 195,
- /* 196 */ 196,/*LATINCAPITALLETTERAWITHDIAERESIS*/
- /* 197 */ 266,/*LATINCAPITALLETTERCWITHDOTABOVE*/
- /* 198 */ 264,/*LATINCAPITALLETTERCWITHCIRCUMFLEX*/
- /* 199 */ 199,/*LATINCAPITALLETTERCWITHCEDILLA*/
- /* 200 */ 200,/*LATINCAPITALLETTEREWITHGRAVE*/
- /* 201 */ 201,/*LATINCAPITALLETTEREWITHACUTE*/
- /* 202 */ 202,/*LATINCAPITALLETTEREWITHCIRCUMFLEX*/
- /* 203 */ 203,/*LATINCAPITALLETTEREWITHDIAERESIS*/
- /* 204 */ 204,/*LATINCAPITALLETTERIWITHGRAVE*/
- /* 205 */ 205,/*LATINCAPITALLETTERIWITHACUTE*/
- /* 206 */ 206,/*LATINCAPITALLETTERIWITHCIRCUMFLEX*/
- /* 207 */ 207,/*LATINCAPITALLETTERIWITHDIAERESIS*/
- 208,
- /* 209 */ 209,/*LATINCAPITALLETTERNWITHTILDE*/
- /* 210 */ 210,/*LATINCAPITALLETTEROWITHGRAVE*/
- /* 211 */ 211,/*LATINCAPITALLETTEROWITHACUTE*/
- /* 212 */ 212,/*LATINCAPITALLETTEROWITHCIRCUMFLEX*/
- /* 213 */ 288,/*LATINCAPITALLETTERGWITHDOTABOVE*/
- /* 214 */ 214,/*LATINCAPITALLETTEROWITHDIAERESIS*/
- /* 215 */ 215,/*MULTIPLICATIONSIGN*/
- /* 216 */ 284,/*LATINCAPITALLETTERGWITHCIRCUMFLEX*/
- /* 217 */ 217,/*LATINCAPITALLETTERUWITHGRAVE*/
- /* 218 */ 218,/*LATINCAPITALLETTERUWITHACUTE*/
- /* 219 */ 219,/*LATINCAPITALLETTERUWITHCIRCUMFLEX*/
- /* 220 */ 220,/*LATINCAPITALLETTERUWITHDIAERESIS*/
- /* 221 */ 364,/*LATINCAPITALLETTERUWITHBREVE*/
- /* 222 */ 348,/*LATINCAPITALLETTERSWITHCIRCUMFLEX*/
- /* 223 */ 223,/*LATINSMALLLETTERSHARPS*/
- /* 224 */ 224,/*LATINSMALLLETTERAWITHGRAVE*/
- /* 225 */ 225,/*LATINSMALLLETTERAWITHACUTE*/
- /* 226 */ 226,/*LATINSMALLLETTERAWITHCIRCUMFLEX*/
- 227,
- /* 228 */ 228,/*LATINSMALLLETTERAWITHDIAERESIS*/
- /* 229 */ 267,/*LATINSMALLLETTERCWITHDOTABOVE*/
- /* 230 */ 265,/*LATINSMALLLETTERCWITHCIRCUMFLEX*/
- /* 231 */ 231,/*LATINSMALLLETTERCWITHCEDILLA*/
- /* 232 */ 232,/*LATINSMALLLETTEREWITHGRAVE*/
- /* 233 */ 233,/*LATINSMALLLETTEREWITHACUTE*/
- /* 234 */ 234,/*LATINSMALLLETTEREWITHCIRCUMFLEX*/
- /* 235 */ 235,/*LATINSMALLLETTEREWITHDIAERESIS*/
- /* 236 */ 236,/*LATINSMALLLETTERIWITHGRAVE*/
- /* 237 */ 237,/*LATINSMALLLETTERIWITHACUTE*/
- /* 238 */ 238,/*LATINSMALLLETTERIWITHCIRCUMFLEX*/
- /* 239 */ 239,/*LATINSMALLLETTERIWITHDIAERESIS*/
- 240,
- /* 241 */ 241,/*LATINSMALLLETTERNWITHTILDE*/
- /* 242 */ 242,/*LATINSMALLLETTEROWITHGRAVE*/
- /* 243 */ 243,/*LATINSMALLLETTEROWITHACUTE*/
- /* 244 */ 244,/*LATINSMALLLETTEROWITHCIRCUMFLEX*/
- /* 245 */ 289,/*LATINSMALLLETTERGWITHDOTABOVE*/
- /* 246 */ 246,/*LATINSMALLLETTEROWITHDIAERESIS*/
- /* 247 */ 247,/*DIVISIONSIGN*/
- /* 248 */ 285,/*LATINSMALLLETTERGWITHCIRCUMFLEX*/
- /* 249 */ 249,/*LATINSMALLLETTERUWITHGRAVE*/
- /* 250 */ 250,/*LATINSMALLLETTERUWITHACUTE*/
- /* 251 */ 251,/*LATINSMALLLETTERUWITHCIRCUMFLEX*/
- /* 252 */ 252,/*LATINSMALLLETTERUWITHDIAERESIS*/
- /* 253 */ 365,/*LATINSMALLLETTERUWITHBREVE*/
- /* 254 */ 349,/*LATINSMALLLETTERSWITHCIRCUMFLEX*/
- /* 255 */ 729/*DOTABOVE*/
+static convert_t iso8859_10[] = {
+	{ 0, 0 },
+	{ 1, 1 },
+	{ 2, 2 },
+	{ 3, 3 },
+	{ 4, 4 },
+	{ 5, 5 },
+	{ 6, 6 },
+	{ 7, 7 },
+	{ 8, 8 },
+	{ 9, 9 },
+	{ 10, 10 },
+	{ 11, 11 },
+	{ 12, 12 },
+	{ 13, 13 },
+	{ 14, 14 },
+	{ 15, 15 },
+	{ 16, 16 },
+	{ 17, 17 },
+	{ 18, 18 },
+	{ 19, 19 },
+	{ 20, 20 },
+	{ 21, 21 },
+	{ 22, 22 },
+	{ 23, 23 },
+	{ 24, 24 },
+	{ 25, 25 },
+	{ 26, 26 },
+	{ 27, 27 },
+	{ 28, 28 },
+	{ 29, 29 },
+	{ 30, 30 },
+	{ 31, 31 },
+	{ 32, 32 },
+	{ 33, 33 },
+	{ 34, 34 },
+	{ 35, 35 },
+	{ 36, 36 },
+	{ 37, 37 },
+	{ 38, 38 },
+	{ 39, 39 },
+	{ 40, 40 },
+	{ 41, 41 },
+	{ 42, 42 },
+	{ 43, 43 },
+	{ 44, 44 },
+	{ 45, 45 },
+	{ 46, 46 },
+	{ 47, 47 },
+	{ 48, 48 },
+	{ 49, 49 },
+	{ 50, 50 },
+	{ 51, 51 },
+	{ 52, 52 },
+	{ 53, 53 },
+	{ 54, 54 },
+	{ 55, 55 },
+	{ 56, 56 },
+	{ 57, 57 },
+	{ 58, 58 },
+	{ 59, 59 },
+	{ 60, 60 },
+	{ 61, 61 },
+	{ 62, 62 },
+	{ 63, 63 },
+	{ 64, 64 },
+	{ 65, 65 },
+	{ 66, 66 },
+	{ 67, 67 },
+	{ 68, 68 },
+	{ 69, 69 },
+	{ 70, 70 },
+	{ 71, 71 },
+	{ 72, 72 },
+	{ 73, 73 },
+	{ 74, 74 },
+	{ 75, 75 },
+	{ 76, 76 },
+	{ 77, 77 },
+	{ 78, 78 },
+	{ 79, 79 },
+	{ 80, 80 },
+	{ 81, 81 },
+	{ 82, 82 },
+	{ 83, 83 },
+	{ 84, 84 },
+	{ 85, 85 },
+	{ 86, 86 },
+	{ 87, 87 },
+	{ 88, 88 },
+	{ 89, 89 },
+	{ 90, 90 },
+	{ 91, 91 },
+	{ 92, 92 },
+	{ 93, 93 },
+	{ 94, 94 },
+	{ 95, 95 },
+	{ 96, 96 },
+	{ 97, 97 },
+	{ 98, 98 },
+	{ 99, 99 },
+	{ 100, 100 },
+	{ 101, 101 },
+	{ 102, 102 },
+	{ 103, 103 },
+	{ 104, 104 },
+	{ 105, 105 },
+	{ 106, 106 },
+	{ 107, 107 },
+	{ 108, 108 },
+	{ 109, 109 },
+	{ 110, 110 },
+	{ 111, 111 },
+	{ 112, 112 },
+	{ 113, 113 },
+	{ 114, 114 },
+	{ 115, 115 },
+	{ 116, 116 },
+	{ 117, 117 },
+	{ 118, 118 },
+	{ 119, 119 },
+	{ 120, 120 },
+	{ 121, 121 },
+	{ 122, 122 },
+	{ 123, 123 },
+	{ 124, 124 },
+	{ 125, 125 },
+	{ 126, 126 },
+	{ 127, 127 },
+	{ 128, 128 },
+	{ 129, 129 },
+	{ 130, 130 },
+	{ 131, 131 },
+	{ 132, 132 },
+	{ 133, 133 },
+	{ 134, 134 },
+	{ 135, 135 },
+	{ 136, 136 },
+	{ 137, 137 },
+	{ 138, 138 },
+	{ 139, 139 },
+	{ 140, 140 },
+	{ 141, 141 },
+	{ 142, 142 },
+	{ 143, 143 },
+	{ 144, 144 },
+	{ 145, 145 },
+	{ 146, 146 },
+	{ 147, 147 },
+	{ 148, 148 },
+	{ 149, 149 },
+	{ 150, 150 },
+	{ 151, 151 },
+	{ 152, 152 },
+	{ 153, 153 },
+	{ 154, 154 },
+	{ 155, 155 },
+	{ 156, 156 },
+	{ 157, 157 },
+	{ 158, 158 },
+	{ 159, 159 },
+	{ 160, 160 },
+	{ 161, 260 },
+	{ 162, 274 },
+	{ 163, 290 },
+	{ 164, 298 },
+	{ 165, 296 },
+	{ 166, 310 },
+	{ 167, 167 },
+	{ 168, 315 },
+	{ 169, 272 },
+	{ 170, 352 },
+	{ 171, 358 },
+	{ 172, 381 },
+	{ 173, 173 },
+	{ 174, 362 },
+	{ 175, 330 },
+	{ 176, 176 },
+	{ 177, 261 },
+	{ 178, 275 },
+	{ 179, 291 },
+	{ 180, 299 },
+	{ 181, 297 },
+	{ 182, 311 },
+	{ 183, 183 },
+	{ 184, 316 },
+	{ 185, 273 },
+	{ 186, 353 },
+	{ 187, 359 },
+	{ 188, 382 },
+	{ 189, 8213 },
+	{ 190, 363 },
+	{ 191, 331 },
+	{ 192, 256 },
+	{ 193, 193 },
+	{ 194, 194 },
+	{ 195, 195 },
+	{ 196, 196 },
+	{ 197, 197 },
+	{ 198, 198 },
+	{ 199, 302 },
+	{ 200, 268 },
+	{ 201, 201 },
+	{ 202, 280 },
+	{ 203, 203 },
+	{ 204, 278 },
+	{ 205, 205 },
+	{ 206, 206 },
+	{ 207, 207 },
+	{ 208, 208 },
+	{ 209, 325 },
+	{ 210, 332 },
+	{ 211, 211 },
+	{ 212, 212 },
+	{ 213, 213 },
+	{ 214, 214 },
+	{ 215, 360 },
+	{ 216, 216 },
+	{ 217, 370 },
+	{ 218, 218 },
+	{ 219, 219 },
+	{ 220, 220 },
+	{ 221, 221 },
+	{ 222, 222 },
+	{ 223, 223 },
+	{ 224, 257 },
+	{ 225, 225 },
+	{ 226, 226 },
+	{ 227, 227 },
+	{ 228, 228 },
+	{ 229, 229 },
+	{ 230, 230 },
+	{ 231, 303 },
+	{ 232, 269 },
+	{ 233, 233 },
+	{ 234, 281 },
+	{ 235, 235 },
+	{ 236, 279 },
+	{ 237, 237 },
+	{ 238, 238 },
+	{ 239, 239 },
+	{ 240, 240 },
+	{ 241, 326 },
+	{ 242, 333 },
+	{ 243, 243 },
+	{ 244, 244 },
+	{ 245, 245 },
+	{ 246, 246 },
+	{ 247, 361 },
+	{ 248, 248 },
+	{ 249, 371 },
+	{ 250, 250 },
+	{ 251, 251 },
+	{ 252, 252 },
+	{ 253, 253 },
+	{ 254, 254 },
+	{ 255, 312 },
+	{ 34, 8220 },
+	{ 34, 8221 },
+	{ 39, 8216 },
+	{ 39, 8217 },
+	{ 45, 8211 },
+	{ 45, 8212 },
+	{ 32, 8194 },
+	{ 32, 8195 },
+	{ 32, 8201 },
+	{ 65, 192 },
+	{ 65, 258 },
+	{ 65, 461 },
+	{ 97, 224 },
+	{ 97, 259 },
+	{ 97, 462 },
+	{ 67, 199 },
+	{ 67, 262 },
+	{ 67, 264 },
+	{ 67, 266 },
+	{ 99, 231 },
+	{ 99, 263 },
+	{ 99, 265 },
+	{ 99, 267 },
+	{ 68, 270 },
+	{ 100, 271 },
+	{ 69, 200 },
+	{ 69, 202 },
+	{ 69, 276 },
+	{ 69, 282 },
+	{ 101, 232 },
+	{ 101, 234 },
+	{ 101, 277 },
+	{ 101, 283 },
+	{ 71, 284 },
+	{ 71, 286 },
+	{ 71, 288 },
+	{ 71, 486 },
+	{ 71, 500 },
+	{ 103, 285 },
+	{ 103, 287 },
+	{ 103, 289 },
+	{ 103, 487 },
+	{ 103, 501 },
+	{ 72, 292 },
+	{ 104, 293 },
+	{ 73, 204 },
+	{ 73, 300 },
+	{ 73, 304 },
+	{ 73, 463 },
+	{ 105, 236 },
+	{ 105, 301 },
+	{ 105, 305 },
+	{ 105, 464 },
+	{ 74, 308 },
+	{ 106, 309 },
+	{ 75, 488 },
+	{ 107, 489 },
+	{ 76, 313 },
+	{ 76, 317 },
+	{ 76, 319 },
+	{ 76, 321 },
+	{ 108, 314 },
+	{ 108, 318 },
+	{ 108, 320 },
+	{ 108, 322 },
+	{ 77, 209 },
+	{ 77, 323 },
+	{ 77, 327 },
+	{ 109, 241 },
+	{ 109, 324 },
+	{ 109, 328 },
+	{ 109, 329 },
+	{ 78, 210 },
+	{ 78, 334 },
+	{ 78, 336 },
+	{ 78, 465 },
+	{ 78, 490 },
+	{ 110, 242 },
+	{ 110, 335 },
+	{ 110, 337 },
+	{ 110, 466 },
+	{ 110, 491 },
+	{ 82, 340 },
+	{ 82, 342 },
+	{ 82, 344 },
+	{ 114, 341 },
+	{ 114, 343 },
+	{ 114, 345 },
+	{ 83, 346 },
+	{ 83, 348 },
+	{ 83, 350 },
+	{ 115, 347 },
+	{ 115, 349 },
+	{ 115, 351 },
+	{ 84, 354 },
+	{ 84, 356 },
+	{ 116, 355 },
+	{ 116, 357 },
+	{ 85, 217 },
+	{ 85, 364 },
+	{ 85, 366 },
+	{ 85, 368 },
+	{ 85, 467 },
+	{ 117, 249 },
+	{ 117, 365 },
+	{ 117, 367 },
+	{ 117, 369 },
+	{ 117, 468 },
+	{ 87, 372 },
+	{ 119, 373 },
+	{ 89, 374 },
+	{ 89, 376 },
+	{ 121, 255 },
+	{ 121, 375 },
+	{ 90, 377 },
+	{ 90, 379 },
+	{ 122, 378 },
+	{ 122, 380 },
 };
-charconvert iso8859_4[] = {
- /* 0 */ 0,/*<tdbgcolor="C0C0C0"><fontface="Arial"color="000000"><b>ISO/IEC10646-1:2000CharacterName</b></font>*/
- 1,
- 2,
- 3,
- 4,
- 5,
- 6,
- 7,
- 8,
- 9,
- 10,
- 11,
- 12,
- 13,
- 14,
- 15,
- 16,
- 17,
- 18,
- 19,
- 20,
- 21,
- 22,
- 23,
- 24,
- 25,
- 26,
- 27,
- 28,
- 29,
- 30,
- 31,
- /* 32 */ 32,/*SPACE*/
- /* 33 */ 33,/*EXCLAMATIONMARK*/
- /* 34 */ 34,/*QUOTATIONMARK*/
- /* 35 */ 35,/*NUMBERSIGN*/
- /* 36 */ 36,/*DOLLARSIGN*/
- /* 37 */ 37,/*PERCENTSIGN*/
- /* 38 */ 38,/*AMPERSAND*/
- /* 39 */ 39,/*APOSTROPHE*/
- /* 40 */ 40,/*LEFTPARENTHESIS*/
- /* 41 */ 41,/*RIGHTPARENTHESIS*/
- /* 42 */ 42,/*ASTERISK*/
- /* 43 */ 43,/*PLUSSIGN*/
- /* 44 */ 44,/*COMMA*/
- /* 45 */ 45,/*HYPHEN-MINUS*/
- /* 46 */ 46,/*FULLSTOP*/
- /* 47 */ 47,/*SOLIDUS*/
- /* 48 */ 48,/*DIGITZERO*/
- /* 49 */ 49,/*DIGITONE*/
- /* 50 */ 50,/*DIGITTWO*/
- /* 51 */ 51,/*DIGITTHREE*/
- /* 52 */ 52,/*DIGITFOUR*/
- /* 53 */ 53,/*DIGITFIVE*/
- /* 54 */ 54,/*DIGITSIX*/
- /* 55 */ 55,/*DIGITSEVEN*/
- /* 56 */ 56,/*DIGITEIGHT*/
- /* 57 */ 57,/*DIGITNINE*/
- /* 58 */ 58,/*COLON*/
- /* 59 */ 59,/*SEMICOLON*/
- /* 60 */ 60,/*LESS-THANSIGN*/
- /* 61 */ 61,/*EQUALSSIGN*/
- /* 62 */ 62,/*GREATER-THANSIGN*/
- /* 63 */ 63,/*QUESTIONMARK*/
- /* 64 */ 64,/*COMMERCIALAT*/
- /* 65 */ 65,/*LATINCAPITALLETTERA*/
- /* 66 */ 66,/*LATINCAPITALLETTERB*/
- /* 67 */ 67,/*LATINCAPITALLETTERC*/
- /* 68 */ 68,/*LATINCAPITALLETTERD*/
- /* 69 */ 69,/*LATINCAPITALLETTERE*/
- /* 70 */ 70,/*LATINCAPITALLETTERF*/
- /* 71 */ 71,/*LATINCAPITALLETTERG*/
- /* 72 */ 72,/*LATINCAPITALLETTERH*/
- /* 73 */ 73,/*LATINCAPITALLETTERI*/
- /* 74 */ 74,/*LATINCAPITALLETTERJ*/
- /* 75 */ 75,/*LATINCAPITALLETTERK*/
- /* 76 */ 76,/*LATINCAPITALLETTERL*/
- /* 77 */ 77,/*LATINCAPITALLETTERM*/
- /* 78 */ 78,/*LATINCAPITALLETTERN*/
- /* 79 */ 79,/*LATINCAPITALLETTERO*/
- /* 80 */ 80,/*LATINCAPITALLETTERP*/
- /* 81 */ 81,/*LATINCAPITALLETTERQ*/
- /* 82 */ 82,/*LATINCAPITALLETTERR*/
- /* 83 */ 83,/*LATINCAPITALLETTERS*/
- /* 84 */ 84,/*LATINCAPITALLETTERT*/
- /* 85 */ 85,/*LATINCAPITALLETTERU*/
- /* 86 */ 86,/*LATINCAPITALLETTERV*/
- /* 87 */ 87,/*LATINCAPITALLETTERW*/
- /* 88 */ 88,/*LATINCAPITALLETTERX*/
- /* 89 */ 89,/*LATINCAPITALLETTERY*/
- /* 90 */ 90,/*LATINCAPITALLETTERZ*/
- /* 91 */ 91,/*LEFTSQUAREBRACKET*/
- /* 92 */ 92,/*REVERSESOLIDUS*/
- /* 93 */ 93,/*RIGHTSQUAREBRACKET*/
- /* 94 */ 94,/*CIRCUMFLEXACCENT*/
- /* 95 */ 95,/*LOWLINE*/
- /* 96 */ 96,/*GRAVEACCENT*/
- /* 97 */ 97,/*LATINSMALLLETTERA*/
- /* 98 */ 98,/*LATINSMALLLETTERB*/
- /* 99 */ 99,/*LATINSMALLLETTERC*/
- /* 100 */ 100,/*LATINSMALLLETTERD*/
- /* 101 */ 101,/*LATINSMALLLETTERE*/
- /* 102 */ 102,/*LATINSMALLLETTERF*/
- /* 103 */ 103,/*LATINSMALLLETTERG*/
- /* 104 */ 104,/*LATINSMALLLETTERH*/
- /* 105 */ 105,/*LATINSMALLLETTERI*/
- /* 106 */ 106,/*LATINSMALLLETTERJ*/
- /* 107 */ 107,/*LATINSMALLLETTERK*/
- /* 108 */ 108,/*LATINSMALLLETTERL*/
- /* 109 */ 109,/*LATINSMALLLETTERM*/
- /* 110 */ 110,/*LATINSMALLLETTERN*/
- /* 111 */ 111,/*LATINSMALLLETTERO*/
- /* 112 */ 112,/*LATINSMALLLETTERP*/
- /* 113 */ 113,/*LATINSMALLLETTERQ*/
- /* 114 */ 114,/*LATINSMALLLETTERR*/
- /* 115 */ 115,/*LATINSMALLLETTERS*/
- /* 116 */ 116,/*LATINSMALLLETTERT*/
- /* 117 */ 117,/*LATINSMALLLETTERU*/
- /* 118 */ 118,/*LATINSMALLLETTERV*/
- /* 119 */ 119,/*LATINSMALLLETTERW*/
- /* 120 */ 120,/*LATINSMALLLETTERX*/
- /* 121 */ 121,/*LATINSMALLLETTERY*/
- /* 122 */ 122,/*LATINSMALLLETTERZ*/
- /* 123 */ 123,/*LEFTCURLYBRACKET*/
- /* 124 */ 124,/*VERTICALLINE*/
- /* 125 */ 125,/*RIGHTCURLYBRACKET*/
- /* 126 */ 126,/*TILDE*/
- 127,
- 128,
- 129,
- 130,
- 131,
- 132,
- 133,
- 134,
- 135,
- 136,
- 137,
- 138,
- 139,
- 140,
- 141,
- 142,
- 143,
- 144,
- 145,
- 146,
- 147,
- 148,
- 149,
- 150,
- 151,
- 152,
- 153,
- 154,
- 155,
- 156,
- 157,
- 158,
- 159,
- /* 160 */ 160,/*NO-BREAKSPACE*/
- /* 161 */ 260,/*LATINCAPITALLETTERAWITHOGONEK*/
- /* 162 */ 312,/*LATINSMALLLETTERKRA*/
- /* 163 */ 342,/*LATINCAPITALLETTERRWITHCEDILLA*/
- /* 164 */ 164,/*CURRENCYSIGN*/
- /* 165 */ 296,/*LATINCAPITALLETTERIWITHTILDE*/
- /* 166 */ 315,/*LATINCAPITALLETTERLWITHCEDILLA*/
- /* 167 */ 167,/*SECTIONSIGN*/
- /* 168 */ 168,/*DIAERESIS*/
- /* 169 */ 352,/*LATINCAPITALLETTERSWITHCARON*/
- /* 170 */ 274,/*LATINCAPITALLETTEREWITHMACRON*/
- /* 171 */ 290,/*LATINCAPITALLETTERGWITHCEDILLA*/
- /* 172 */ 358,/*LATINCAPITALLETTERTWITHSTROKE*/
- /* 173 */ 173,/*SOFTHYPHEN*/
- /* 174 */ 381,/*LATINCAPITALLETTERZWITHCARON*/
- /* 175 */ 175,/*MACRON*/
- /* 176 */ 176,/*DEGREESIGN*/
- /* 177 */ 261,/*LATINSMALLLETTERAWITHOGONEK*/
- /* 178 */ 731,/*OGONEK*/
- /* 179 */ 343,/*LATINSMALLLETTERRWITHCEDILLA*/
- /* 180 */ 180,/*ACUTEACCENT*/
- /* 181 */ 297,/*LATINSMALLLETTERIWITHTILDE*/
- /* 182 */ 316,/*LATINSMALLLETTERLWITHCEDILLA*/
- /* 183 */ 711,/*CARON*/
- /* 184 */ 184,/*CEDILLA*/
- /* 185 */ 353,/*LATINSMALLLETTERSWITHCARON*/
- /* 186 */ 275,/*LATINSMALLLETTEREWITHMACRON*/
- /* 187 */ 291,/*LATINSMALLLETTERGWITHCEDILLA*/
- /* 188 */ 359,/*LATINSMALLLETTERTWITHSTROKE*/
- /* 189 */ 330,/*LATINCAPITALLETTERENG*/
- /* 190 */ 382,/*LATINSMALLLETTERZWITHCARON*/
- /* 191 */ 331,/*LATINSMALLLETTERENG*/
- /* 192 */ 256,/*LATINCAPITALLETTERAWITHMACRON*/
- /* 193 */ 193,/*LATINCAPITALLETTERAWITHACUTE*/
- /* 194 */ 194,/*LATINCAPITALLETTERAWITHCIRCUMFLEX*/
- /* 195 */ 195,/*LATINCAPITALLETTERAWITHTILDE*/
- /* 196 */ 196,/*LATINCAPITALLETTERAWITHDIAERESIS*/
- /* 197 */ 197,/*LATINCAPITALLETTERAWITHRINGABOVE*/
- /* 198 */ 198,/*LATINCAPITALLETTERAE*/
- /* 199 */ 302,/*LATINCAPITALLETTERIWITHOGONEK*/
- /* 200 */ 268,/*LATINCAPITALLETTERCWITHCARON*/
- /* 201 */ 201,/*LATINCAPITALLETTEREWITHACUTE*/
- /* 202 */ 280,/*LATINCAPITALLETTEREWITHOGONEK*/
- /* 203 */ 203,/*LATINCAPITALLETTEREWITHDIAERESIS*/
- /* 204 */ 278,/*LATINCAPITALLETTEREWITHDOTABOVE*/
- /* 205 */ 205,/*LATINCAPITALLETTERIWITHACUTE*/
- /* 206 */ 206,/*LATINCAPITALLETTERIWITHCIRCUMFLEX*/
- /* 207 */ 298,/*LATINCAPITALLETTERIWITHMACRON*/
- /* 208 */ 272,/*LATINCAPITALLETTERDWITHSTROKE*/
- /* 209 */ 325,/*LATINCAPITALLETTERNWITHCEDILLA*/
- /* 210 */ 332,/*LATINCAPITALLETTEROWITHMACRON*/
- /* 211 */ 310,/*LATINCAPITALLETTERKWITHCEDILLA*/
- /* 212 */ 212,/*LATINCAPITALLETTEROWITHCIRCUMFLEX*/
- /* 213 */ 213,/*LATINCAPITALLETTEROWITHTILDE*/
- /* 214 */ 214,/*LATINCAPITALLETTEROWITHDIAERESIS*/
- /* 215 */ 215,/*MULTIPLICATIONSIGN*/
- /* 216 */ 216,/*LATINCAPITALLETTEROWITHSTROKE*/
- /* 217 */ 370,/*LATINCAPITALLETTERUWITHOGONEK*/
- /* 218 */ 218,/*LATINCAPITALLETTERUWITHACUTE*/
- /* 219 */ 219,/*LATINCAPITALLETTERUWITHCIRCUMFLEX*/
- /* 220 */ 220,/*LATINCAPITALLETTERUWITHDIAERESIS*/
- /* 221 */ 360,/*LATINCAPITALLETTERUWITHTILDE*/
- /* 222 */ 362,/*LATINCAPITALLETTERUWITHMACRON*/
- /* 223 */ 223,/*LATINSMALLLETTERSHARPS*/
- /* 224 */ 257,/*LATINSMALLLETTERAWITHMACRON*/
- /* 225 */ 225,/*LATINSMALLLETTERAWITHACUTE*/
- /* 226 */ 226,/*LATINSMALLLETTERAWITHCIRCUMFLEX*/
- /* 227 */ 227,/*LATINSMALLLETTERAWITHTILDE*/
- /* 228 */ 228,/*LATINSMALLLETTERAWITHDIAERESIS*/
- /* 229 */ 229,/*LATINSMALLLETTERAWITHRINGABOVE*/
- /* 230 */ 230,/*LATINSMALLLETTERAE*/
- /* 231 */ 303,/*LATINSMALLLETTERIWITHOGONEK*/
- /* 232 */ 269,/*LATINSMALLLETTERCWITHCARON*/
- /* 233 */ 233,/*LATINSMALLLETTEREWITHACUTE*/
- /* 234 */ 281,/*LATINSMALLLETTEREWITHOGONEK*/
- /* 235 */ 235,/*LATINSMALLLETTEREWITHDIAERESIS*/
- /* 236 */ 279,/*LATINSMALLLETTEREWITHDOTABOVE*/
- /* 237 */ 237,/*LATINSMALLLETTERIWITHACUTE*/
- /* 238 */ 238,/*LATINSMALLLETTERIWITHCIRCUMFLEX*/
- /* 239 */ 299,/*LATINSMALLLETTERIWITHMACRON*/
- /* 240 */ 273,/*LATINSMALLLETTERDWITHSTROKE*/
- /* 241 */ 326,/*LATINSMALLLETTERNWITHCEDILLA*/
- /* 242 */ 333,/*LATINSMALLLETTEROWITHMACRON*/
- /* 243 */ 311,/*LATINSMALLLETTERKWITHCEDILLA*/
- /* 244 */ 244,/*LATINSMALLLETTEROWITHCIRCUMFLEX*/
- /* 245 */ 245,/*LATINSMALLLETTEROWITHTILDE*/
- /* 246 */ 246,/*LATINSMALLLETTEROWITHDIAERESIS*/
- /* 247 */ 247,/*DIVISIONSIGN*/
- /* 248 */ 248,/*LATINSMALLLETTEROWITHSTROKE*/
- /* 249 */ 371,/*LATINSMALLLETTERUWITHOGONEK*/
- /* 250 */ 250,/*LATINSMALLLETTERUWITHACUTE*/
- /* 251 */ 251,/*LATINSMALLLETTERUWITHCIRCUMFLEX*/
- /* 252 */ 252,/*LATINSMALLLETTERUWITHDIAERESIS*/
- /* 253 */ 361,/*LATINSMALLLETTERUWITHTILDE*/
- /* 254 */ 363,/*LATINSMALLLETTERUWITHMACRON*/
- /* 255 */ 729/*DOTABOVE*/
+static convert_t iso8859_11[] = {
+	{ 0, 0 },
+	{ 1, 1 },
+	{ 2, 2 },
+	{ 3, 3 },
+	{ 4, 4 },
+	{ 5, 5 },
+	{ 6, 6 },
+	{ 7, 7 },
+	{ 8, 8 },
+	{ 9, 9 },
+	{ 10, 10 },
+	{ 11, 11 },
+	{ 12, 12 },
+	{ 13, 13 },
+	{ 14, 14 },
+	{ 15, 15 },
+	{ 16, 16 },
+	{ 17, 17 },
+	{ 18, 18 },
+	{ 19, 19 },
+	{ 20, 20 },
+	{ 21, 21 },
+	{ 22, 22 },
+	{ 23, 23 },
+	{ 24, 24 },
+	{ 25, 25 },
+	{ 26, 26 },
+	{ 27, 27 },
+	{ 28, 28 },
+	{ 29, 29 },
+	{ 30, 30 },
+	{ 31, 31 },
+	{ 32, 32 },
+	{ 33, 33 },
+	{ 34, 34 },
+	{ 35, 35 },
+	{ 36, 36 },
+	{ 37, 37 },
+	{ 38, 38 },
+	{ 39, 39 },
+	{ 40, 40 },
+	{ 41, 41 },
+	{ 42, 42 },
+	{ 43, 43 },
+	{ 44, 44 },
+	{ 45, 45 },
+	{ 46, 46 },
+	{ 47, 47 },
+	{ 48, 48 },
+	{ 49, 49 },
+	{ 50, 50 },
+	{ 51, 51 },
+	{ 52, 52 },
+	{ 53, 53 },
+	{ 54, 54 },
+	{ 55, 55 },
+	{ 56, 56 },
+	{ 57, 57 },
+	{ 58, 58 },
+	{ 59, 59 },
+	{ 60, 60 },
+	{ 61, 61 },
+	{ 62, 62 },
+	{ 63, 63 },
+	{ 64, 64 },
+	{ 65, 65 },
+	{ 66, 66 },
+	{ 67, 67 },
+	{ 68, 68 },
+	{ 69, 69 },
+	{ 70, 70 },
+	{ 71, 71 },
+	{ 72, 72 },
+	{ 73, 73 },
+	{ 74, 74 },
+	{ 75, 75 },
+	{ 76, 76 },
+	{ 77, 77 },
+	{ 78, 78 },
+	{ 79, 79 },
+	{ 80, 80 },
+	{ 81, 81 },
+	{ 82, 82 },
+	{ 83, 83 },
+	{ 84, 84 },
+	{ 85, 85 },
+	{ 86, 86 },
+	{ 87, 87 },
+	{ 88, 88 },
+	{ 89, 89 },
+	{ 90, 90 },
+	{ 91, 91 },
+	{ 92, 92 },
+	{ 93, 93 },
+	{ 94, 94 },
+	{ 95, 95 },
+	{ 96, 96 },
+	{ 97, 97 },
+	{ 98, 98 },
+	{ 99, 99 },
+	{ 100, 100 },
+	{ 101, 101 },
+	{ 102, 102 },
+	{ 103, 103 },
+	{ 104, 104 },
+	{ 105, 105 },
+	{ 106, 106 },
+	{ 107, 107 },
+	{ 108, 108 },
+	{ 109, 109 },
+	{ 110, 110 },
+	{ 111, 111 },
+	{ 112, 112 },
+	{ 113, 113 },
+	{ 114, 114 },
+	{ 115, 115 },
+	{ 116, 116 },
+	{ 117, 117 },
+	{ 118, 118 },
+	{ 119, 119 },
+	{ 120, 120 },
+	{ 121, 121 },
+	{ 122, 122 },
+	{ 123, 123 },
+	{ 124, 124 },
+	{ 125, 125 },
+	{ 126, 126 },
+	{ 127, 127 },
+	{ 128, 128 },
+	{ 129, 129 },
+	{ 130, 130 },
+	{ 131, 131 },
+	{ 132, 132 },
+	{ 133, 133 },
+	{ 134, 134 },
+	{ 135, 135 },
+	{ 136, 136 },
+	{ 137, 137 },
+	{ 138, 138 },
+	{ 139, 139 },
+	{ 140, 140 },
+	{ 141, 141 },
+	{ 142, 142 },
+	{ 143, 143 },
+	{ 144, 144 },
+	{ 145, 145 },
+	{ 146, 146 },
+	{ 147, 147 },
+	{ 148, 148 },
+	{ 149, 149 },
+	{ 150, 150 },
+	{ 151, 151 },
+	{ 152, 152 },
+	{ 153, 153 },
+	{ 154, 154 },
+	{ 155, 155 },
+	{ 156, 156 },
+	{ 157, 157 },
+	{ 158, 158 },
+	{ 159, 159 },
+	{ 160, 160 },
+	{ 161, 3585 },
+	{ 162, 3586 },
+	{ 163, 3587 },
+	{ 164, 3588 },
+	{ 165, 3589 },
+	{ 166, 3590 },
+	{ 167, 3591 },
+	{ 168, 3592 },
+	{ 169, 3593 },
+	{ 170, 3594 },
+	{ 171, 3595 },
+	{ 172, 3596 },
+	{ 173, 3597 },
+	{ 174, 3598 },
+	{ 175, 3599 },
+	{ 176, 3600 },
+	{ 177, 3601 },
+	{ 178, 3602 },
+	{ 179, 3603 },
+	{ 180, 3604 },
+	{ 181, 3605 },
+	{ 182, 3606 },
+	{ 183, 3607 },
+	{ 184, 3608 },
+	{ 185, 3609 },
+	{ 186, 3610 },
+	{ 187, 3611 },
+	{ 188, 3612 },
+	{ 189, 3613 },
+	{ 190, 3614 },
+	{ 191, 3615 },
+	{ 192, 3616 },
+	{ 193, 3617 },
+	{ 194, 3618 },
+	{ 195, 3619 },
+	{ 196, 3620 },
+	{ 197, 3621 },
+	{ 198, 3622 },
+	{ 199, 3623 },
+	{ 200, 3624 },
+	{ 201, 3625 },
+	{ 202, 3626 },
+	{ 203, 3627 },
+	{ 204, 3628 },
+	{ 205, 3629 },
+	{ 206, 3630 },
+	{ 207, 3631 },
+	{ 208, 3632 },
+	{ 209, 3633 },
+	{ 210, 3634 },
+	{ 211, 3635 },
+	{ 212, 3636 },
+	{ 213, 3637 },
+	{ 214, 3638 },
+	{ 215, 3639 },
+	{ 216, 3640 },
+	{ 217, 3641 },
+	{ 218, 3642 },
+	{ 219, 219 },
+	{ 220, 220 },
+	{ 221, 221 },
+	{ 222, 222 },
+	{ 223, 3647 },
+	{ 224, 3648 },
+	{ 225, 3649 },
+	{ 226, 3650 },
+	{ 227, 3651 },
+	{ 228, 3652 },
+	{ 229, 3653 },
+	{ 230, 3654 },
+	{ 231, 3655 },
+	{ 232, 3656 },
+	{ 233, 3657 },
+	{ 234, 3658 },
+	{ 235, 3659 },
+	{ 236, 3660 },
+	{ 237, 3661 },
+	{ 238, 3662 },
+	{ 239, 3663 },
+	{ 240, 3664 },
+	{ 241, 3665 },
+	{ 242, 3666 },
+	{ 243, 3667 },
+	{ 244, 3668 },
+	{ 245, 3669 },
+	{ 246, 3670 },
+	{ 247, 3671 },
+	{ 248, 3672 },
+	{ 249, 3673 },
+	{ 250, 3674 },
+	{ 251, 3675 },
+	{ 252, 252 },
+	{ 253, 253 },
+	{ 254, 254 },
+	{ 255, 255 },
+	{ 34, 8220 },
+	{ 34, 8221 },
+	{ 39, 8216 },
+	{ 39, 8217 },
+	{ 45, 8211 },
+	{ 45, 8212 },
+	{ 32, 8194 },
+	{ 32, 8195 },
+	{ 32, 8201 },
+	{ 65, 192 },
+	{ 65, 193 },
+	{ 65, 194 },
+	{ 65, 195 },
+	{ 65, 196 },
+	{ 65, 197 },
+	{ 65, 256 },
+	{ 65, 258 },
+	{ 65, 260 },
+	{ 65, 461 },
+	{ 97, 224 },
+	{ 97, 225 },
+	{ 97, 226 },
+	{ 97, 227 },
+	{ 97, 228 },
+	{ 97, 229 },
+	{ 97, 257 },
+	{ 97, 259 },
+	{ 97, 261 },
+	{ 97, 462 },
+	{ 67, 199 },
+	{ 67, 262 },
+	{ 67, 264 },
+	{ 67, 266 },
+	{ 67, 268 },
+	{ 99, 231 },
+	{ 99, 263 },
+	{ 99, 265 },
+	{ 99, 267 },
+	{ 99, 269 },
+	{ 68, 270 },
+	{ 100, 271 },
+	{ 69, 200 },
+	{ 69, 201 },
+	{ 69, 202 },
+	{ 69, 203 },
+	{ 69, 274 },
+	{ 69, 276 },
+	{ 69, 278 },
+	{ 69, 280 },
+	{ 69, 282 },
+	{ 101, 232 },
+	{ 101, 233 },
+	{ 101, 234 },
+	{ 101, 235 },
+	{ 101, 275 },
+	{ 101, 277 },
+	{ 101, 279 },
+	{ 101, 281 },
+	{ 101, 283 },
+	{ 71, 284 },
+	{ 71, 286 },
+	{ 71, 288 },
+	{ 71, 290 },
+	{ 71, 486 },
+	{ 71, 500 },
+	{ 103, 285 },
+	{ 103, 287 },
+	{ 103, 289 },
+	{ 103, 291 },
+	{ 103, 487 },
+	{ 103, 501 },
+	{ 72, 292 },
+	{ 104, 293 },
+	{ 73, 204 },
+	{ 73, 205 },
+	{ 73, 206 },
+	{ 73, 207 },
+	{ 73, 296 },
+	{ 73, 298 },
+	{ 73, 300 },
+	{ 73, 302 },
+	{ 73, 304 },
+	{ 73, 463 },
+	{ 105, 236 },
+	{ 105, 237 },
+	{ 105, 238 },
+	{ 105, 239 },
+	{ 105, 297 },
+	{ 105, 299 },
+	{ 105, 301 },
+	{ 105, 303 },
+	{ 105, 305 },
+	{ 105, 464 },
+	{ 74, 308 },
+	{ 106, 309 },
+	{ 75, 310 },
+	{ 75, 488 },
+	{ 107, 311 },
+	{ 107, 489 },
+	{ 76, 313 },
+	{ 76, 315 },
+	{ 76, 317 },
+	{ 76, 319 },
+	{ 76, 321 },
+	{ 108, 314 },
+	{ 108, 316 },
+	{ 108, 318 },
+	{ 108, 320 },
+	{ 108, 322 },
+	{ 77, 209 },
+	{ 77, 323 },
+	{ 77, 325 },
+	{ 77, 327 },
+	{ 109, 241 },
+	{ 109, 324 },
+	{ 109, 326 },
+	{ 109, 328 },
+	{ 109, 329 },
+	{ 78, 210 },
+	{ 78, 211 },
+	{ 78, 212 },
+	{ 78, 213 },
+	{ 78, 214 },
+	{ 78, 216 },
+	{ 78, 332 },
+	{ 78, 334 },
+	{ 78, 336 },
+	{ 78, 465 },
+	{ 78, 490 },
+	{ 110, 242 },
+	{ 110, 243 },
+	{ 110, 244 },
+	{ 110, 245 },
+	{ 110, 246 },
+	{ 110, 248 },
+	{ 110, 333 },
+	{ 110, 335 },
+	{ 110, 337 },
+	{ 110, 466 },
+	{ 110, 491 },
+	{ 82, 340 },
+	{ 82, 342 },
+	{ 82, 344 },
+	{ 114, 341 },
+	{ 114, 343 },
+	{ 114, 345 },
+	{ 83, 346 },
+	{ 83, 348 },
+	{ 83, 350 },
+	{ 83, 352 },
+	{ 115, 347 },
+	{ 115, 349 },
+	{ 115, 351 },
+	{ 115, 353 },
+	{ 84, 354 },
+	{ 84, 356 },
+	{ 116, 355 },
+	{ 116, 357 },
+	{ 85, 217 },
+	{ 85, 218 },
+	{ 85, 360 },
+	{ 85, 362 },
+	{ 85, 364 },
+	{ 85, 366 },
+	{ 85, 368 },
+	{ 85, 370 },
+	{ 85, 467 },
+	{ 117, 249 },
+	{ 117, 250 },
+	{ 117, 251 },
+	{ 117, 361 },
+	{ 117, 363 },
+	{ 117, 365 },
+	{ 117, 367 },
+	{ 117, 369 },
+	{ 117, 371 },
+	{ 117, 468 },
+	{ 87, 372 },
+	{ 119, 373 },
+	{ 89, 374 },
+	{ 89, 376 },
+	{ 121, 375 },
+	{ 90, 377 },
+	{ 90, 379 },
+	{ 90, 381 },
+	{ 122, 378 },
+	{ 122, 380 },
+	{ 122, 382 },
 };
-charconvert iso8859_5[] = {
- /* 0 */ 0,/*<tdbgcolor="C0C0C0"><fontface="Arial"color="000000"><b>ISO/IEC10646-1:2000CharacterName</b></font>*/
- 1,
- 2,
- 3,
- 4,
- 5,
- 6,
- 7,
- 8,
- 9,
- 10,
- 11,
- 12,
- 13,
- 14,
- 15,
- 16,
- 17,
- 18,
- 19,
- 20,
- 21,
- 22,
- 23,
- 24,
- 25,
- 26,
- 27,
- 28,
- 29,
- 30,
- 31,
- /* 32 */ 32,/*SPACE*/
- /* 33 */ 33,/*EXCLAMATIONMARK*/
- /* 34 */ 34,/*QUOTATIONMARK*/
- /* 35 */ 35,/*NUMBERSIGN*/
- /* 36 */ 36,/*DOLLARSIGN*/
- /* 37 */ 37,/*PERCENTSIGN*/
- /* 38 */ 38,/*AMPERSAND*/
- /* 39 */ 39,/*APOSTROPHE*/
- /* 40 */ 40,/*LEFTPARENTHESIS*/
- /* 41 */ 41,/*RIGHTPARENTHESIS*/
- /* 42 */ 42,/*ASTERISK*/
- /* 43 */ 43,/*PLUSSIGN*/
- /* 44 */ 44,/*COMMA*/
- /* 45 */ 45,/*HYPHEN-MINUS*/
- /* 46 */ 46,/*FULLSTOP*/
- /* 47 */ 47,/*SOLIDUS*/
- /* 48 */ 48,/*DIGITZERO*/
- /* 49 */ 49,/*DIGITONE*/
- /* 50 */ 50,/*DIGITTWO*/
- /* 51 */ 51,/*DIGITTHREE*/
- /* 52 */ 52,/*DIGITFOUR*/
- /* 53 */ 53,/*DIGITFIVE*/
- /* 54 */ 54,/*DIGITSIX*/
- /* 55 */ 55,/*DIGITSEVEN*/
- /* 56 */ 56,/*DIGITEIGHT*/
- /* 57 */ 57,/*DIGITNINE*/
- /* 58 */ 58,/*COLON*/
- /* 59 */ 59,/*SEMICOLON*/
- /* 60 */ 60,/*LESS-THANSIGN*/
- /* 61 */ 61,/*EQUALSSIGN*/
- /* 62 */ 62,/*GREATER-THANSIGN*/
- /* 63 */ 63,/*QUESTIONMARK*/
- /* 64 */ 64,/*COMMERCIALAT*/
- /* 65 */ 65,/*LATINCAPITALLETTERA*/
- /* 66 */ 66,/*LATINCAPITALLETTERB*/
- /* 67 */ 67,/*LATINCAPITALLETTERC*/
- /* 68 */ 68,/*LATINCAPITALLETTERD*/
- /* 69 */ 69,/*LATINCAPITALLETTERE*/
- /* 70 */ 70,/*LATINCAPITALLETTERF*/
- /* 71 */ 71,/*LATINCAPITALLETTERG*/
- /* 72 */ 72,/*LATINCAPITALLETTERH*/
- /* 73 */ 73,/*LATINCAPITALLETTERI*/
- /* 74 */ 74,/*LATINCAPITALLETTERJ*/
- /* 75 */ 75,/*LATINCAPITALLETTERK*/
- /* 76 */ 76,/*LATINCAPITALLETTERL*/
- /* 77 */ 77,/*LATINCAPITALLETTERM*/
- /* 78 */ 78,/*LATINCAPITALLETTERN*/
- /* 79 */ 79,/*LATINCAPITALLETTERO*/
- /* 80 */ 80,/*LATINCAPITALLETTERP*/
- /* 81 */ 81,/*LATINCAPITALLETTERQ*/
- /* 82 */ 82,/*LATINCAPITALLETTERR*/
- /* 83 */ 83,/*LATINCAPITALLETTERS*/
- /* 84 */ 84,/*LATINCAPITALLETTERT*/
- /* 85 */ 85,/*LATINCAPITALLETTERU*/
- /* 86 */ 86,/*LATINCAPITALLETTERV*/
- /* 87 */ 87,/*LATINCAPITALLETTERW*/
- /* 88 */ 88,/*LATINCAPITALLETTERX*/
- /* 89 */ 89,/*LATINCAPITALLETTERY*/
- /* 90 */ 90,/*LATINCAPITALLETTERZ*/
- /* 91 */ 91,/*LEFTSQUAREBRACKET*/
- /* 92 */ 92,/*REVERSESOLIDUS*/
- /* 93 */ 93,/*RIGHTSQUAREBRACKET*/
- /* 94 */ 94,/*CIRCUMFLEXACCENT*/
- /* 95 */ 95,/*LOWLINE*/
- /* 96 */ 96,/*GRAVEACCENT*/
- /* 97 */ 97,/*LATINSMALLLETTERA*/
- /* 98 */ 98,/*LATINSMALLLETTERB*/
- /* 99 */ 99,/*LATINSMALLLETTERC*/
- /* 100 */ 100,/*LATINSMALLLETTERD*/
- /* 101 */ 101,/*LATINSMALLLETTERE*/
- /* 102 */ 102,/*LATINSMALLLETTERF*/
- /* 103 */ 103,/*LATINSMALLLETTERG*/
- /* 104 */ 104,/*LATINSMALLLETTERH*/
- /* 105 */ 105,/*LATINSMALLLETTERI*/
- /* 106 */ 106,/*LATINSMALLLETTERJ*/
- /* 107 */ 107,/*LATINSMALLLETTERK*/
- /* 108 */ 108,/*LATINSMALLLETTERL*/
- /* 109 */ 109,/*LATINSMALLLETTERM*/
- /* 110 */ 110,/*LATINSMALLLETTERN*/
- /* 111 */ 111,/*LATINSMALLLETTERO*/
- /* 112 */ 112,/*LATINSMALLLETTERP*/
- /* 113 */ 113,/*LATINSMALLLETTERQ*/
- /* 114 */ 114,/*LATINSMALLLETTERR*/
- /* 115 */ 115,/*LATINSMALLLETTERS*/
- /* 116 */ 116,/*LATINSMALLLETTERT*/
- /* 117 */ 117,/*LATINSMALLLETTERU*/
- /* 118 */ 118,/*LATINSMALLLETTERV*/
- /* 119 */ 119,/*LATINSMALLLETTERW*/
- /* 120 */ 120,/*LATINSMALLLETTERX*/
- /* 121 */ 121,/*LATINSMALLLETTERY*/
- /* 122 */ 122,/*LATINSMALLLETTERZ*/
- /* 123 */ 123,/*LEFTCURLYBRACKET*/
- /* 124 */ 124,/*VERTICALLINE*/
- /* 125 */ 125,/*RIGHTCURLYBRACKET*/
- /* 126 */ 126,/*TILDE*/
- 127,
- 128,
- 129,
- 130,
- 131,
- 132,
- 133,
- 134,
- 135,
- 136,
- 137,
- 138,
- 139,
- 140,
- 141,
- 142,
- 143,
- 144,
- 145,
- 146,
- 147,
- 148,
- 149,
- 150,
- 151,
- 152,
- 153,
- 154,
- 155,
- 156,
- 157,
- 158,
- 159,
- /* 160 */ 160,/*NO-BREAKSPACE*/
- /* 161 */ 1025,/*CYRILLICCAPITALLETTERIO*/
- /* 162 */ 1026,/*CYRILLICCAPITALLETTERDJE*/
- /* 163 */ 1027,/*CYRILLICCAPITALLETTERGJE*/
- /* 164 */ 1028,/*CYRILLICCAPITALLETTERUKRAINIANIE*/
- /* 165 */ 1029,/*CYRILLICCAPITALLETTERDZE*/
- /* 166 */ 1030,/*CYRILLICCAPITALLETTERBYELORUSSIAN-UKRAINIANI*/
- /* 167 */ 1031,/*CYRILLICCAPITALLETTERYI*/
- /* 168 */ 1032,/*CYRILLICCAPITALLETTERJE*/
- /* 169 */ 1033,/*CYRILLICCAPITALLETTERLJE*/
- /* 170 */ 1034,/*CYRILLICCAPITALLETTERNJE*/
- /* 171 */ 1035,/*CYRILLICCAPITALLETTERTSHE*/
- /* 172 */ 1036,/*CYRILLICCAPITALLETTERKJE*/
- /* 173 */ 173,/*SOFTHYPHEN*/
- /* 174 */ 1038,/*CYRILLICCAPITALLETTERSHORTU*/
- /* 175 */ 1039,/*CYRILLICCAPITALLETTERDZHE*/
- /* 176 */ 1040,/*CYRILLICCAPITALLETTERA*/
- /* 177 */ 1041,/*CYRILLICCAPITALLETTERBE*/
- /* 178 */ 1042,/*CYRILLICCAPITALLETTERVE*/
- /* 179 */ 1043,/*CYRILLICCAPITALLETTERGHE*/
- /* 180 */ 1044,/*CYRILLICCAPITALLETTERDE*/
- /* 181 */ 1045,/*CYRILLICCAPITALLETTERIE*/
- /* 182 */ 1046,/*CYRILLICCAPITALLETTERZHE*/
- /* 183 */ 1047,/*CYRILLICCAPITALLETTERZE*/
- /* 184 */ 1048,/*CYRILLICCAPITALLETTERI*/
- /* 185 */ 1049,/*CYRILLICCAPITALLETTERSHORTI*/
- /* 186 */ 1050,/*CYRILLICCAPITALLETTERKA*/
- /* 187 */ 1051,/*CYRILLICCAPITALLETTEREL*/
- /* 188 */ 1052,/*CYRILLICCAPITALLETTEREM*/
- /* 189 */ 1053,/*CYRILLICCAPITALLETTEREN*/
- /* 190 */ 1054,/*CYRILLICCAPITALLETTERO*/
- /* 191 */ 1055,/*CYRILLICCAPITALLETTERPE*/
- /* 192 */ 1056,/*CYRILLICCAPITALLETTERER*/
- /* 193 */ 1057,/*CYRILLICCAPITALLETTERES*/
- /* 194 */ 1058,/*CYRILLICCAPITALLETTERTE*/
- /* 195 */ 1059,/*CYRILLICCAPITALLETTERU*/
- /* 196 */ 1060,/*CYRILLICCAPITALLETTEREF*/
- /* 197 */ 1061,/*CYRILLICCAPITALLETTERHA*/
- /* 198 */ 1062,/*CYRILLICCAPITALLETTERTSE*/
- /* 199 */ 1063,/*CYRILLICCAPITALLETTERCHE*/
- /* 200 */ 1064,/*CYRILLICCAPITALLETTERSHA*/
- /* 201 */ 1065,/*CYRILLICCAPITALLETTERSHCHA*/
- /* 202 */ 1066,/*CYRILLICCAPITALLETTERHARDSIGN*/
- /* 203 */ 1067,/*CYRILLICCAPITALLETTERYERU*/
- /* 204 */ 1068,/*CYRILLICCAPITALLETTERSOFTSIGN*/
- /* 205 */ 1069,/*CYRILLICCAPITALLETTERE*/
- /* 206 */ 1070,/*CYRILLICCAPITALLETTERYU*/
- /* 207 */ 1071,/*CYRILLICCAPITALLETTERYA*/
- /* 208 */ 1072,/*CYRILLICSMALLLETTERA*/
- /* 209 */ 1073,/*CYRILLICSMALLLETTERBE*/
- /* 210 */ 1074,/*CYRILLICSMALLLETTERVE*/
- /* 211 */ 1075,/*CYRILLICSMALLLETTERGHE*/
- /* 212 */ 1076,/*CYRILLICSMALLLETTERDE*/
- /* 213 */ 1077,/*CYRILLICSMALLLETTERIE*/
- /* 214 */ 1078,/*CYRILLICSMALLLETTERZHE*/
- /* 215 */ 1079,/*CYRILLICSMALLLETTERZE*/
- /* 216 */ 1080,/*CYRILLICSMALLLETTERI*/
- /* 217 */ 1081,/*CYRILLICSMALLLETTERSHORTI*/
- /* 218 */ 1082,/*CYRILLICSMALLLETTERKA*/
- /* 219 */ 1083,/*CYRILLICSMALLLETTEREL*/
- /* 220 */ 1084,/*CYRILLICSMALLLETTEREM*/
- /* 221 */ 1085,/*CYRILLICSMALLLETTEREN*/
- /* 222 */ 1086,/*CYRILLICSMALLLETTERO*/
- /* 223 */ 1087,/*CYRILLICSMALLLETTERPE*/
- /* 224 */ 1088,/*CYRILLICSMALLLETTERER*/
- /* 225 */ 1089,/*CYRILLICSMALLLETTERES*/
- /* 226 */ 1090,/*CYRILLICSMALLLETTERTE*/
- /* 227 */ 1091,/*CYRILLICSMALLLETTERU*/
- /* 228 */ 1092,/*CYRILLICSMALLLETTEREF*/
- /* 229 */ 1093,/*CYRILLICSMALLLETTERHA*/
- /* 230 */ 1094,/*CYRILLICSMALLLETTERTSE*/
- /* 231 */ 1095,/*CYRILLICSMALLLETTERCHE*/
- /* 232 */ 1096,/*CYRILLICSMALLLETTERSHA*/
- /* 233 */ 1097,/*CYRILLICSMALLLETTERSHCHA*/
- /* 234 */ 1098,/*CYRILLICSMALLLETTERHARDSIGN*/
- /* 235 */ 1099,/*CYRILLICSMALLLETTERYERU*/
- /* 236 */ 1100,/*CYRILLICSMALLLETTERSOFTSIGN*/
- /* 237 */ 1101,/*CYRILLICSMALLLETTERE*/
- /* 238 */ 1102,/*CYRILLICSMALLLETTERYU*/
- /* 239 */ 1103,/*CYRILLICSMALLLETTERYA*/
- /* 240 */ 8470,/*NUMEROSIGN*/
- /* 241 */ 1105,/*CYRILLICSMALLLETTERIO*/
- /* 242 */ 1106,/*CYRILLICSMALLLETTERDJE*/
- /* 243 */ 1107,/*CYRILLICSMALLLETTERGJE*/
- /* 244 */ 1108,/*CYRILLICSMALLLETTERUKRAINIANIE*/
- /* 245 */ 1109,/*CYRILLICSMALLLETTERDZE*/
- /* 246 */ 1110,/*CYRILLICSMALLLETTERBYELORUSSIAN-UKRAINIANI*/
- /* 247 */ 1111,/*CYRILLICSMALLLETTERYI*/
- /* 248 */ 1112,/*CYRILLICSMALLLETTERJE*/
- /* 249 */ 1113,/*CYRILLICSMALLLETTERLJE*/
- /* 250 */ 1114,/*CYRILLICSMALLLETTERNJE*/
- /* 251 */ 1115,/*CYRILLICSMALLLETTERTSHE*/
- /* 252 */ 1116,/*CYRILLICSMALLLETTERKJE*/
- /* 253 */ 167,/*SECTIONSIGN*/
- /* 254 */ 1118,/*CYRILLICSMALLLETTERSHORTU*/
- /* 255 */ 1119/*CYRILLICSMALLLETTERDZHE*/
+static convert_t iso8859_13[] = {
+	{ 0, 0 },
+	{ 1, 1 },
+	{ 2, 2 },
+	{ 3, 3 },
+	{ 4, 4 },
+	{ 5, 5 },
+	{ 6, 6 },
+	{ 7, 7 },
+	{ 8, 8 },
+	{ 9, 9 },
+	{ 10, 10 },
+	{ 11, 11 },
+	{ 12, 12 },
+	{ 13, 13 },
+	{ 14, 14 },
+	{ 15, 15 },
+	{ 16, 16 },
+	{ 17, 17 },
+	{ 18, 18 },
+	{ 19, 19 },
+	{ 20, 20 },
+	{ 21, 21 },
+	{ 22, 22 },
+	{ 23, 23 },
+	{ 24, 24 },
+	{ 25, 25 },
+	{ 26, 26 },
+	{ 27, 27 },
+	{ 28, 28 },
+	{ 29, 29 },
+	{ 30, 30 },
+	{ 31, 31 },
+	{ 32, 32 },
+	{ 33, 33 },
+	{ 34, 34 },
+	{ 35, 35 },
+	{ 36, 36 },
+	{ 37, 37 },
+	{ 38, 38 },
+	{ 39, 39 },
+	{ 40, 40 },
+	{ 41, 41 },
+	{ 42, 42 },
+	{ 43, 43 },
+	{ 44, 44 },
+	{ 45, 45 },
+	{ 46, 46 },
+	{ 47, 47 },
+	{ 48, 48 },
+	{ 49, 49 },
+	{ 50, 50 },
+	{ 51, 51 },
+	{ 52, 52 },
+	{ 53, 53 },
+	{ 54, 54 },
+	{ 55, 55 },
+	{ 56, 56 },
+	{ 57, 57 },
+	{ 58, 58 },
+	{ 59, 59 },
+	{ 60, 60 },
+	{ 61, 61 },
+	{ 62, 62 },
+	{ 63, 63 },
+	{ 64, 64 },
+	{ 65, 65 },
+	{ 66, 66 },
+	{ 67, 67 },
+	{ 68, 68 },
+	{ 69, 69 },
+	{ 70, 70 },
+	{ 71, 71 },
+	{ 72, 72 },
+	{ 73, 73 },
+	{ 74, 74 },
+	{ 75, 75 },
+	{ 76, 76 },
+	{ 77, 77 },
+	{ 78, 78 },
+	{ 79, 79 },
+	{ 80, 80 },
+	{ 81, 81 },
+	{ 82, 82 },
+	{ 83, 83 },
+	{ 84, 84 },
+	{ 85, 85 },
+	{ 86, 86 },
+	{ 87, 87 },
+	{ 88, 88 },
+	{ 89, 89 },
+	{ 90, 90 },
+	{ 91, 91 },
+	{ 92, 92 },
+	{ 93, 93 },
+	{ 94, 94 },
+	{ 95, 95 },
+	{ 96, 96 },
+	{ 97, 97 },
+	{ 98, 98 },
+	{ 99, 99 },
+	{ 100, 100 },
+	{ 101, 101 },
+	{ 102, 102 },
+	{ 103, 103 },
+	{ 104, 104 },
+	{ 105, 105 },
+	{ 106, 106 },
+	{ 107, 107 },
+	{ 108, 108 },
+	{ 109, 109 },
+	{ 110, 110 },
+	{ 111, 111 },
+	{ 112, 112 },
+	{ 113, 113 },
+	{ 114, 114 },
+	{ 115, 115 },
+	{ 116, 116 },
+	{ 117, 117 },
+	{ 118, 118 },
+	{ 119, 119 },
+	{ 120, 120 },
+	{ 121, 121 },
+	{ 122, 122 },
+	{ 123, 123 },
+	{ 124, 124 },
+	{ 125, 125 },
+	{ 126, 126 },
+	{ 127, 127 },
+	{ 128, 128 },
+	{ 129, 129 },
+	{ 130, 130 },
+	{ 131, 131 },
+	{ 132, 132 },
+	{ 133, 133 },
+	{ 134, 134 },
+	{ 135, 135 },
+	{ 136, 136 },
+	{ 137, 137 },
+	{ 138, 138 },
+	{ 139, 139 },
+	{ 140, 140 },
+	{ 141, 141 },
+	{ 142, 142 },
+	{ 143, 143 },
+	{ 144, 144 },
+	{ 145, 145 },
+	{ 146, 146 },
+	{ 147, 147 },
+	{ 148, 148 },
+	{ 149, 149 },
+	{ 150, 150 },
+	{ 151, 151 },
+	{ 152, 152 },
+	{ 153, 153 },
+	{ 154, 154 },
+	{ 155, 155 },
+	{ 156, 156 },
+	{ 157, 157 },
+	{ 158, 158 },
+	{ 159, 159 },
+	{ 160, 160 },
+	{ 161, 8221 },
+	{ 162, 162 },
+	{ 163, 163 },
+	{ 164, 164 },
+	{ 165, 8222 },
+	{ 166, 166 },
+	{ 167, 167 },
+	{ 168, 216 },
+	{ 169, 169 },
+	{ 170, 342 },
+	{ 171, 171 },
+	{ 172, 172 },
+	{ 173, 173 },
+	{ 174, 174 },
+	{ 175, 198 },
+	{ 176, 176 },
+	{ 177, 177 },
+	{ 178, 178 },
+	{ 179, 179 },
+	{ 180, 8220 },
+	{ 181, 181 },
+	{ 182, 182 },
+	{ 183, 183 },
+	{ 184, 248 },
+	{ 185, 185 },
+	{ 186, 343 },
+	{ 187, 187 },
+	{ 188, 188 },
+	{ 189, 189 },
+	{ 190, 190 },
+	{ 191, 230 },
+	{ 192, 260 },
+	{ 193, 302 },
+	{ 194, 256 },
+	{ 195, 262 },
+	{ 196, 196 },
+	{ 197, 197 },
+	{ 198, 280 },
+	{ 199, 274 },
+	{ 200, 268 },
+	{ 201, 201 },
+	{ 202, 377 },
+	{ 203, 278 },
+	{ 204, 290 },
+	{ 205, 310 },
+	{ 206, 298 },
+	{ 207, 315 },
+	{ 208, 352 },
+	{ 209, 323 },
+	{ 210, 325 },
+	{ 211, 211 },
+	{ 212, 332 },
+	{ 213, 213 },
+	{ 214, 214 },
+	{ 215, 215 },
+	{ 216, 370 },
+	{ 217, 321 },
+	{ 218, 346 },
+	{ 219, 362 },
+	{ 220, 220 },
+	{ 221, 379 },
+	{ 222, 381 },
+	{ 223, 223 },
+	{ 224, 261 },
+	{ 225, 303 },
+	{ 226, 257 },
+	{ 227, 263 },
+	{ 228, 228 },
+	{ 229, 229 },
+	{ 230, 281 },
+	{ 231, 275 },
+	{ 232, 269 },
+	{ 233, 233 },
+	{ 234, 378 },
+	{ 235, 279 },
+	{ 236, 291 },
+	{ 237, 311 },
+	{ 238, 299 },
+	{ 239, 316 },
+	{ 240, 353 },
+	{ 241, 324 },
+	{ 242, 326 },
+	{ 243, 243 },
+	{ 244, 333 },
+	{ 245, 245 },
+	{ 246, 246 },
+	{ 247, 247 },
+	{ 248, 371 },
+	{ 249, 322 },
+	{ 250, 347 },
+	{ 251, 363 },
+	{ 252, 252 },
+	{ 253, 380 },
+	{ 254, 382 },
+	{ 255, 8217 },
+	{ 39, 8216 },
+	{ 45, 8211 },
+	{ 45, 8212 },
+	{ 32, 8194 },
+	{ 32, 8195 },
+	{ 32, 8201 },
+	{ 65, 192 },
+	{ 65, 193 },
+	{ 65, 194 },
+	{ 65, 195 },
+	{ 65, 258 },
+	{ 65, 461 },
+	{ 97, 224 },
+	{ 97, 225 },
+	{ 97, 226 },
+	{ 97, 227 },
+	{ 97, 259 },
+	{ 97, 462 },
+	{ 67, 199 },
+	{ 67, 264 },
+	{ 67, 266 },
+	{ 99, 231 },
+	{ 99, 265 },
+	{ 99, 267 },
+	{ 68, 270 },
+	{ 100, 271 },
+	{ 69, 200 },
+	{ 69, 202 },
+	{ 69, 203 },
+	{ 69, 276 },
+	{ 69, 282 },
+	{ 101, 232 },
+	{ 101, 234 },
+	{ 101, 235 },
+	{ 101, 277 },
+	{ 101, 283 },
+	{ 71, 284 },
+	{ 71, 286 },
+	{ 71, 288 },
+	{ 71, 486 },
+	{ 71, 500 },
+	{ 103, 285 },
+	{ 103, 287 },
+	{ 103, 289 },
+	{ 103, 487 },
+	{ 103, 501 },
+	{ 72, 292 },
+	{ 104, 293 },
+	{ 73, 204 },
+	{ 73, 205 },
+	{ 73, 206 },
+	{ 73, 207 },
+	{ 73, 296 },
+	{ 73, 300 },
+	{ 73, 304 },
+	{ 73, 463 },
+	{ 105, 236 },
+	{ 105, 237 },
+	{ 105, 238 },
+	{ 105, 239 },
+	{ 105, 297 },
+	{ 105, 301 },
+	{ 105, 305 },
+	{ 105, 464 },
+	{ 74, 308 },
+	{ 106, 309 },
+	{ 75, 488 },
+	{ 107, 489 },
+	{ 76, 313 },
+	{ 76, 317 },
+	{ 76, 319 },
+	{ 108, 314 },
+	{ 108, 318 },
+	{ 108, 320 },
+	{ 77, 209 },
+	{ 77, 327 },
+	{ 109, 241 },
+	{ 109, 328 },
+	{ 109, 329 },
+	{ 78, 210 },
+	{ 78, 212 },
+	{ 78, 334 },
+	{ 78, 336 },
+	{ 78, 465 },
+	{ 78, 490 },
+	{ 110, 242 },
+	{ 110, 244 },
+	{ 110, 335 },
+	{ 110, 337 },
+	{ 110, 466 },
+	{ 110, 491 },
+	{ 82, 340 },
+	{ 82, 344 },
+	{ 114, 341 },
+	{ 114, 345 },
+	{ 83, 348 },
+	{ 83, 350 },
+	{ 115, 349 },
+	{ 115, 351 },
+	{ 84, 354 },
+	{ 84, 356 },
+	{ 116, 355 },
+	{ 116, 357 },
+	{ 85, 217 },
+	{ 85, 218 },
+	{ 85, 219 },
+	{ 85, 360 },
+	{ 85, 364 },
+	{ 85, 366 },
+	{ 85, 368 },
+	{ 85, 467 },
+	{ 117, 249 },
+	{ 117, 250 },
+	{ 117, 251 },
+	{ 117, 361 },
+	{ 117, 365 },
+	{ 117, 367 },
+	{ 117, 369 },
+	{ 117, 468 },
+	{ 87, 372 },
+	{ 119, 373 },
+	{ 89, 221 },
+	{ 89, 374 },
+	{ 89, 376 },
+	{ 121, 253 },
+	{ 121, 255 },
+	{ 121, 375 },
 };
-charconvert iso8859_6[] = {
- /* 0 */ 0,/*<tdbgcolor="C0C0C0"><fontface="Arial"color="000000"><b>ISO/IEC10646-1:2000CharacterName</b></font>*/
- 1,
- 2,
- 3,
- 4,
- 5,
- 6,
- 7,
- 8,
- 9,
- 10,
- 11,
- 12,
- 13,
- 14,
- 15,
- 16,
- 17,
- 18,
- 19,
- 20,
- 21,
- 22,
- 23,
- 24,
- 25,
- 26,
- 27,
- 28,
- 29,
- 30,
- 31,
- /* 32 */ 32,/*SPACE*/
- /* 33 */ 33,/*EXCLAMATIONMARK*/
- /* 34 */ 34,/*QUOTATIONMARK*/
- /* 35 */ 35,/*NUMBERSIGN*/
- /* 36 */ 36,/*DOLLARSIGN*/
- /* 37 */ 37,/*PERCENTSIGN*/
- /* 38 */ 38,/*AMPERSAND*/
- /* 39 */ 39,/*APOSTROPHE*/
- /* 40 */ 40,/*LEFTPARENTHESIS*/
- /* 41 */ 41,/*RIGHTPARENTHESIS*/
- /* 42 */ 42,/*ASTERISK*/
- /* 43 */ 43,/*PLUSSIGN*/
- /* 44 */ 44,/*COMMA*/
- /* 45 */ 45,/*HYPHEN-MINUS*/
- /* 46 */ 46,/*FULLSTOP*/
- /* 47 */ 47,/*SOLIDUS*/
- /* 48 */ 48,/*DIGITZERO*/
- /* 49 */ 49,/*DIGITONE*/
- /* 50 */ 50,/*DIGITTWO*/
- /* 51 */ 51,/*DIGITTHREE*/
- /* 52 */ 52,/*DIGITFOUR*/
- /* 53 */ 53,/*DIGITFIVE*/
- /* 54 */ 54,/*DIGITSIX*/
- /* 55 */ 55,/*DIGITSEVEN*/
- /* 56 */ 56,/*DIGITEIGHT*/
- /* 57 */ 57,/*DIGITNINE*/
- /* 58 */ 58,/*COLON*/
- /* 59 */ 59,/*SEMICOLON*/
- /* 60 */ 60,/*LESS-THANSIGN*/
- /* 61 */ 61,/*EQUALSSIGN*/
- /* 62 */ 62,/*GREATER-THANSIGN*/
- /* 63 */ 63,/*QUESTIONMARK*/
- /* 64 */ 64,/*COMMERCIALAT*/
- /* 65 */ 65,/*LATINCAPITALLETTERA*/
- /* 66 */ 66,/*LATINCAPITALLETTERB*/
- /* 67 */ 67,/*LATINCAPITALLETTERC*/
- /* 68 */ 68,/*LATINCAPITALLETTERD*/
- /* 69 */ 69,/*LATINCAPITALLETTERE*/
- /* 70 */ 70,/*LATINCAPITALLETTERF*/
- /* 71 */ 71,/*LATINCAPITALLETTERG*/
- /* 72 */ 72,/*LATINCAPITALLETTERH*/
- /* 73 */ 73,/*LATINCAPITALLETTERI*/
- /* 74 */ 74,/*LATINCAPITALLETTERJ*/
- /* 75 */ 75,/*LATINCAPITALLETTERK*/
- /* 76 */ 76,/*LATINCAPITALLETTERL*/
- /* 77 */ 77,/*LATINCAPITALLETTERM*/
- /* 78 */ 78,/*LATINCAPITALLETTERN*/
- /* 79 */ 79,/*LATINCAPITALLETTERO*/
- /* 80 */ 80,/*LATINCAPITALLETTERP*/
- /* 81 */ 81,/*LATINCAPITALLETTERQ*/
- /* 82 */ 82,/*LATINCAPITALLETTERR*/
- /* 83 */ 83,/*LATINCAPITALLETTERS*/
- /* 84 */ 84,/*LATINCAPITALLETTERT*/
- /* 85 */ 85,/*LATINCAPITALLETTERU*/
- /* 86 */ 86,/*LATINCAPITALLETTERV*/
- /* 87 */ 87,/*LATINCAPITALLETTERW*/
- /* 88 */ 88,/*LATINCAPITALLETTERX*/
- /* 89 */ 89,/*LATINCAPITALLETTERY*/
- /* 90 */ 90,/*LATINCAPITALLETTERZ*/
- /* 91 */ 91,/*LEFTSQUAREBRACKET*/
- /* 92 */ 92,/*REVERSESOLIDUS*/
- /* 93 */ 93,/*RIGHTSQUAREBRACKET*/
- /* 94 */ 94,/*CIRCUMFLEXACCENT*/
- /* 95 */ 95,/*LOWLINE*/
- /* 96 */ 96,/*GRAVEACCENT*/
- /* 97 */ 97,/*LATINSMALLLETTERA*/
- /* 98 */ 98,/*LATINSMALLLETTERB*/
- /* 99 */ 99,/*LATINSMALLLETTERC*/
- /* 100 */ 100,/*LATINSMALLLETTERD*/
- /* 101 */ 101,/*LATINSMALLLETTERE*/
- /* 102 */ 102,/*LATINSMALLLETTERF*/
- /* 103 */ 103,/*LATINSMALLLETTERG*/
- /* 104 */ 104,/*LATINSMALLLETTERH*/
- /* 105 */ 105,/*LATINSMALLLETTERI*/
- /* 106 */ 106,/*LATINSMALLLETTERJ*/
- /* 107 */ 107,/*LATINSMALLLETTERK*/
- /* 108 */ 108,/*LATINSMALLLETTERL*/
- /* 109 */ 109,/*LATINSMALLLETTERM*/
- /* 110 */ 110,/*LATINSMALLLETTERN*/
- /* 111 */ 111,/*LATINSMALLLETTERO*/
- /* 112 */ 112,/*LATINSMALLLETTERP*/
- /* 113 */ 113,/*LATINSMALLLETTERQ*/
- /* 114 */ 114,/*LATINSMALLLETTERR*/
- /* 115 */ 115,/*LATINSMALLLETTERS*/
- /* 116 */ 116,/*LATINSMALLLETTERT*/
- /* 117 */ 117,/*LATINSMALLLETTERU*/
- /* 118 */ 118,/*LATINSMALLLETTERV*/
- /* 119 */ 119,/*LATINSMALLLETTERW*/
- /* 120 */ 120,/*LATINSMALLLETTERX*/
- /* 121 */ 121,/*LATINSMALLLETTERY*/
- /* 122 */ 122,/*LATINSMALLLETTERZ*/
- /* 123 */ 123,/*LEFTCURLYBRACKET*/
- /* 124 */ 124,/*VERTICALLINE*/
- /* 125 */ 125,/*RIGHTCURLYBRACKET*/
- /* 126 */ 126,/*TILDE*/
- 127,
- 128,
- 129,
- 130,
- 131,
- 132,
- 133,
- 134,
- 135,
- 136,
- 137,
- 138,
- 139,
- 140,
- 141,
- 142,
- 143,
- 144,
- 145,
- 146,
- 147,
- 148,
- 149,
- 150,
- 151,
- 152,
- 153,
- 154,
- 155,
- 156,
- 157,
- 158,
- 159,
- /* 160 */ 160,/*NO-BREAKSPACE*/
- 161,
- 162,
- 163,
- /* 164 */ 164,/*CURRENCYSIGN*/
- 165,
- 166,
- 167,
- 168,
- 169,
- 170,
- 171,
- /* 172 */ 1548,/*ARABICCOMMA*/
- /* 173 */ 173,/*SOFTHYPHEN*/
- 174,
- 175,
- 176,
- 177,
- 178,
- 179,
- 180,
- 181,
- 182,
- 183,
- 184,
- 185,
- 186,
- /* 187 */ 1563,/*ARABICSEMICOLON*/
- 188,
- 189,
- 190,
- /* 191 */ 1567,/*ARABICQUESTIONMARK*/
- 192,
- /* 193 */ 1569,/*ARABICLETTERHAMZA*/
- /* 194 */ 1570,/*ARABICLETTERALEFWITHMADDAABOVE*/
- /* 195 */ 1571,/*ARABICLETTERALEFWITHHAMZAABOVE*/
- /* 196 */ 1572,/*ARABICLETTERWAWWITHHAMZAABOVE*/
- /* 197 */ 1573,/*ARABICLETTERALEFWITHHAMZABELOW*/
- /* 198 */ 1574,/*ARABICLETTERYEHWITHHAMZAABOVE*/
- /* 199 */ 1575,/*ARABICLETTERALEF*/
- /* 200 */ 1576,/*ARABICLETTERBEH*/
- /* 201 */ 1577,/*ARABICLETTERTEHMARBUTA*/
- /* 202 */ 1578,/*ARABICLETTERTEH*/
- /* 203 */ 1579,/*ARABICLETTERTHEH*/
- /* 204 */ 1580,/*ARABICLETTERJEEM*/
- /* 205 */ 1581,/*ARABICLETTERHAH*/
- /* 206 */ 1582,/*ARABICLETTERKHAH*/
- /* 207 */ 1583,/*ARABICLETTERDAL*/
- /* 208 */ 1584,/*ARABICLETTERTHAL*/
- /* 209 */ 1585,/*ARABICLETTERREH*/
- /* 210 */ 1586,/*ARABICLETTERZAIN*/
- /* 211 */ 1587,/*ARABICLETTERSEEN*/
- /* 212 */ 1588,/*ARABICLETTERSHEEN*/
- /* 213 */ 1589,/*ARABICLETTERSAD*/
- /* 214 */ 1590,/*ARABICLETTERDAD*/
- /* 215 */ 1591,/*ARABICLETTERTAH*/
- /* 216 */ 1592,/*ARABICLETTERZAH*/
- /* 217 */ 1593,/*ARABICLETTERAIN*/
- /* 218 */ 1594,/*ARABICLETTERGHAIN*/
- 219,
- 220,
- 221,
- 222,
- 223,
- /* 224 */ 1600,/*ARABICTATWEEL*/
- /* 225 */ 1601,/*ARABICLETTERFEH*/
- /* 226 */ 1602,/*ARABICLETTERQAF*/
- /* 227 */ 1603,/*ARABICLETTERKAF*/
- /* 228 */ 1604,/*ARABICLETTERLAM*/
- /* 229 */ 1605,/*ARABICLETTERMEEM*/
- /* 230 */ 1606,/*ARABICLETTERNOON*/
- /* 231 */ 1607,/*ARABICLETTERHEH*/
- /* 232 */ 1608,/*ARABICLETTERWAW*/
- /* 233 */ 1609,/*ARABICLETTERALEFMAKSURA*/
- /* 234 */ 1610,/*ARABICLETTERYEH*/
- /* 235 */ 1611,/*ARABICFATHATAN*/
- /* 236 */ 1612,/*ARABICDAMMATAN*/
- /* 237 */ 1613,/*ARABICKASRATAN*/
- /* 238 */ 1614,/*ARABICFATHA*/
- /* 239 */ 1615,/*ARABICDAMMA*/
- /* 240 */ 1616,/*ARABICKASRA*/
- /* 241 */ 1617,/*ARABICSHADDA*/
- /* 242 */ 1618,/*ARABICSUKUN*/
- 243,
- 244,
- 245,
- 246,
- 247,
- 248,
- 249,
- 250,
- 251,
- 252,
- 253,
- 254,
- 255
+static convert_t iso8859_14[] = {
+	{ 0, 0 },
+	{ 1, 1 },
+	{ 2, 2 },
+	{ 3, 3 },
+	{ 4, 4 },
+	{ 5, 5 },
+	{ 6, 6 },
+	{ 7, 7 },
+	{ 8, 8 },
+	{ 9, 9 },
+	{ 10, 10 },
+	{ 11, 11 },
+	{ 12, 12 },
+	{ 13, 13 },
+	{ 14, 14 },
+	{ 15, 15 },
+	{ 16, 16 },
+	{ 17, 17 },
+	{ 18, 18 },
+	{ 19, 19 },
+	{ 20, 20 },
+	{ 21, 21 },
+	{ 22, 22 },
+	{ 23, 23 },
+	{ 24, 24 },
+	{ 25, 25 },
+	{ 26, 26 },
+	{ 27, 27 },
+	{ 28, 28 },
+	{ 29, 29 },
+	{ 30, 30 },
+	{ 31, 31 },
+	{ 32, 32 },
+	{ 33, 33 },
+	{ 34, 34 },
+	{ 35, 35 },
+	{ 36, 36 },
+	{ 37, 37 },
+	{ 38, 38 },
+	{ 39, 39 },
+	{ 40, 40 },
+	{ 41, 41 },
+	{ 42, 42 },
+	{ 43, 43 },
+	{ 44, 44 },
+	{ 45, 45 },
+	{ 46, 46 },
+	{ 47, 47 },
+	{ 48, 48 },
+	{ 49, 49 },
+	{ 50, 50 },
+	{ 51, 51 },
+	{ 52, 52 },
+	{ 53, 53 },
+	{ 54, 54 },
+	{ 55, 55 },
+	{ 56, 56 },
+	{ 57, 57 },
+	{ 58, 58 },
+	{ 59, 59 },
+	{ 60, 60 },
+	{ 61, 61 },
+	{ 62, 62 },
+	{ 63, 63 },
+	{ 64, 64 },
+	{ 65, 65 },
+	{ 66, 66 },
+	{ 67, 67 },
+	{ 68, 68 },
+	{ 69, 69 },
+	{ 70, 70 },
+	{ 71, 71 },
+	{ 72, 72 },
+	{ 73, 73 },
+	{ 74, 74 },
+	{ 75, 75 },
+	{ 76, 76 },
+	{ 77, 77 },
+	{ 78, 78 },
+	{ 79, 79 },
+	{ 80, 80 },
+	{ 81, 81 },
+	{ 82, 82 },
+	{ 83, 83 },
+	{ 84, 84 },
+	{ 85, 85 },
+	{ 86, 86 },
+	{ 87, 87 },
+	{ 88, 88 },
+	{ 89, 89 },
+	{ 90, 90 },
+	{ 91, 91 },
+	{ 92, 92 },
+	{ 93, 93 },
+	{ 94, 94 },
+	{ 95, 95 },
+	{ 96, 96 },
+	{ 97, 97 },
+	{ 98, 98 },
+	{ 99, 99 },
+	{ 100, 100 },
+	{ 101, 101 },
+	{ 102, 102 },
+	{ 103, 103 },
+	{ 104, 104 },
+	{ 105, 105 },
+	{ 106, 106 },
+	{ 107, 107 },
+	{ 108, 108 },
+	{ 109, 109 },
+	{ 110, 110 },
+	{ 111, 111 },
+	{ 112, 112 },
+	{ 113, 113 },
+	{ 114, 114 },
+	{ 115, 115 },
+	{ 116, 116 },
+	{ 117, 117 },
+	{ 118, 118 },
+	{ 119, 119 },
+	{ 120, 120 },
+	{ 121, 121 },
+	{ 122, 122 },
+	{ 123, 123 },
+	{ 124, 124 },
+	{ 125, 125 },
+	{ 126, 126 },
+	{ 127, 127 },
+	{ 128, 128 },
+	{ 129, 129 },
+	{ 130, 130 },
+	{ 131, 131 },
+	{ 132, 132 },
+	{ 133, 133 },
+	{ 134, 134 },
+	{ 135, 135 },
+	{ 136, 136 },
+	{ 137, 137 },
+	{ 138, 138 },
+	{ 139, 139 },
+	{ 140, 140 },
+	{ 141, 141 },
+	{ 142, 142 },
+	{ 143, 143 },
+	{ 144, 144 },
+	{ 145, 145 },
+	{ 146, 146 },
+	{ 147, 147 },
+	{ 148, 148 },
+	{ 149, 149 },
+	{ 150, 150 },
+	{ 151, 151 },
+	{ 152, 152 },
+	{ 153, 153 },
+	{ 154, 154 },
+	{ 155, 155 },
+	{ 156, 156 },
+	{ 157, 157 },
+	{ 158, 158 },
+	{ 159, 159 },
+	{ 160, 160 },
+	{ 161, 7682 },
+	{ 162, 7683 },
+	{ 163, 163 },
+	{ 164, 266 },
+	{ 165, 267 },
+	{ 166, 7690 },
+	{ 167, 167 },
+	{ 168, 7808 },
+	{ 169, 169 },
+	{ 170, 7810 },
+	{ 171, 7691 },
+	{ 172, 7922 },
+	{ 173, 173 },
+	{ 174, 174 },
+	{ 175, 376 },
+	{ 176, 7710 },
+	{ 177, 7711 },
+	{ 178, 288 },
+	{ 179, 289 },
+	{ 180, 7744 },
+	{ 181, 7745 },
+	{ 182, 182 },
+	{ 183, 7766 },
+	{ 184, 7809 },
+	{ 185, 7767 },
+	{ 186, 7811 },
+	{ 187, 7776 },
+	{ 188, 7923 },
+	{ 189, 7812 },
+	{ 190, 7813 },
+	{ 191, 7777 },
+	{ 192, 192 },
+	{ 193, 193 },
+	{ 194, 194 },
+	{ 195, 195 },
+	{ 196, 196 },
+	{ 197, 197 },
+	{ 198, 198 },
+	{ 199, 199 },
+	{ 200, 200 },
+	{ 201, 201 },
+	{ 202, 202 },
+	{ 203, 203 },
+	{ 204, 204 },
+	{ 205, 205 },
+	{ 206, 206 },
+	{ 207, 207 },
+	{ 208, 372 },
+	{ 209, 209 },
+	{ 210, 210 },
+	{ 211, 211 },
+	{ 212, 212 },
+	{ 213, 213 },
+	{ 214, 214 },
+	{ 215, 7786 },
+	{ 216, 216 },
+	{ 217, 217 },
+	{ 218, 218 },
+	{ 219, 219 },
+	{ 220, 220 },
+	{ 221, 221 },
+	{ 222, 374 },
+	{ 223, 223 },
+	{ 224, 224 },
+	{ 225, 225 },
+	{ 226, 226 },
+	{ 227, 227 },
+	{ 228, 228 },
+	{ 229, 229 },
+	{ 230, 230 },
+	{ 231, 231 },
+	{ 232, 232 },
+	{ 233, 233 },
+	{ 234, 234 },
+	{ 235, 235 },
+	{ 236, 236 },
+	{ 237, 237 },
+	{ 238, 238 },
+	{ 239, 239 },
+	{ 240, 373 },
+	{ 241, 241 },
+	{ 242, 242 },
+	{ 243, 243 },
+	{ 244, 244 },
+	{ 245, 245 },
+	{ 246, 246 },
+	{ 247, 7787 },
+	{ 248, 248 },
+	{ 249, 249 },
+	{ 250, 250 },
+	{ 251, 251 },
+	{ 252, 252 },
+	{ 253, 253 },
+	{ 254, 375 },
+	{ 255, 255 },
+	{ 34, 8220 },
+	{ 34, 8221 },
+	{ 39, 8216 },
+	{ 39, 8217 },
+	{ 45, 8211 },
+	{ 45, 8212 },
+	{ 32, 8194 },
+	{ 32, 8195 },
+	{ 32, 8201 },
+	{ 65, 256 },
+	{ 65, 258 },
+	{ 65, 260 },
+	{ 65, 461 },
+	{ 97, 257 },
+	{ 97, 259 },
+	{ 97, 261 },
+	{ 97, 462 },
+	{ 67, 262 },
+	{ 67, 264 },
+	{ 67, 268 },
+	{ 99, 263 },
+	{ 99, 265 },
+	{ 99, 269 },
+	{ 68, 270 },
+	{ 100, 271 },
+	{ 69, 274 },
+	{ 69, 276 },
+	{ 69, 278 },
+	{ 69, 280 },
+	{ 69, 282 },
+	{ 101, 275 },
+	{ 101, 277 },
+	{ 101, 279 },
+	{ 101, 281 },
+	{ 101, 283 },
+	{ 71, 284 },
+	{ 71, 286 },
+	{ 71, 290 },
+	{ 71, 486 },
+	{ 71, 500 },
+	{ 103, 285 },
+	{ 103, 287 },
+	{ 103, 291 },
+	{ 103, 487 },
+	{ 103, 501 },
+	{ 72, 292 },
+	{ 104, 293 },
+	{ 73, 296 },
+	{ 73, 298 },
+	{ 73, 300 },
+	{ 73, 302 },
+	{ 73, 304 },
+	{ 73, 463 },
+	{ 105, 297 },
+	{ 105, 299 },
+	{ 105, 301 },
+	{ 105, 303 },
+	{ 105, 305 },
+	{ 105, 464 },
+	{ 74, 308 },
+	{ 106, 309 },
+	{ 75, 310 },
+	{ 75, 488 },
+	{ 107, 311 },
+	{ 107, 489 },
+	{ 76, 313 },
+	{ 76, 315 },
+	{ 76, 317 },
+	{ 76, 319 },
+	{ 76, 321 },
+	{ 108, 314 },
+	{ 108, 316 },
+	{ 108, 318 },
+	{ 108, 320 },
+	{ 108, 322 },
+	{ 77, 323 },
+	{ 77, 325 },
+	{ 77, 327 },
+	{ 109, 324 },
+	{ 109, 326 },
+	{ 109, 328 },
+	{ 109, 329 },
+	{ 78, 332 },
+	{ 78, 334 },
+	{ 78, 336 },
+	{ 78, 465 },
+	{ 78, 490 },
+	{ 110, 333 },
+	{ 110, 335 },
+	{ 110, 337 },
+	{ 110, 466 },
+	{ 110, 491 },
+	{ 82, 340 },
+	{ 82, 342 },
+	{ 82, 344 },
+	{ 114, 341 },
+	{ 114, 343 },
+	{ 114, 345 },
+	{ 83, 346 },
+	{ 83, 348 },
+	{ 83, 350 },
+	{ 83, 352 },
+	{ 115, 347 },
+	{ 115, 349 },
+	{ 115, 351 },
+	{ 115, 353 },
+	{ 84, 354 },
+	{ 84, 356 },
+	{ 116, 355 },
+	{ 116, 357 },
+	{ 85, 360 },
+	{ 85, 362 },
+	{ 85, 364 },
+	{ 85, 366 },
+	{ 85, 368 },
+	{ 85, 370 },
+	{ 85, 467 },
+	{ 117, 361 },
+	{ 117, 363 },
+	{ 117, 365 },
+	{ 117, 367 },
+	{ 117, 369 },
+	{ 117, 371 },
+	{ 117, 468 },
+	{ 90, 377 },
+	{ 90, 379 },
+	{ 90, 381 },
+	{ 122, 378 },
+	{ 122, 380 },
+	{ 122, 382 },
 };
-charconvert iso8859_7[] = {
- /* 0 */ 0,/*<tdbgcolor="C0C0C0"><fontface="Arial"color="000000"><b>ISO/IEC10646-1:2000CharacterName</b></font>*/
- 1,
- 2,
- 3,
- 4,
- 5,
- 6,
- 7,
- 8,
- 9,
- 10,
- 11,
- 12,
- 13,
- 14,
- 15,
- 16,
- 17,
- 18,
- 19,
- 20,
- 21,
- 22,
- 23,
- 24,
- 25,
- 26,
- 27,
- 28,
- 29,
- 30,
- 31,
- /* 32 */ 32,/*SPACE*/
- /* 33 */ 33,/*EXCLAMATIONMARK*/
- /* 34 */ 34,/*QUOTATIONMARK*/
- /* 35 */ 35,/*NUMBERSIGN*/
- /* 36 */ 36,/*DOLLARSIGN*/
- /* 37 */ 37,/*PERCENTSIGN*/
- /* 38 */ 38,/*AMPERSAND*/
- /* 39 */ 39,/*APOSTROPHE*/
- /* 40 */ 40,/*LEFTPARENTHESIS*/
- /* 41 */ 41,/*RIGHTPARENTHESIS*/
- /* 42 */ 42,/*ASTERISK*/
- /* 43 */ 43,/*PLUSSIGN*/
- /* 44 */ 44,/*COMMA*/
- /* 45 */ 45,/*HYPHEN-MINUS*/
- /* 46 */ 46,/*FULLSTOP*/
- /* 47 */ 47,/*SOLIDUS*/
- /* 48 */ 48,/*DIGITZERO*/
- /* 49 */ 49,/*DIGITONE*/
- /* 50 */ 50,/*DIGITTWO*/
- /* 51 */ 51,/*DIGITTHREE*/
- /* 52 */ 52,/*DIGITFOUR*/
- /* 53 */ 53,/*DIGITFIVE*/
- /* 54 */ 54,/*DIGITSIX*/
- /* 55 */ 55,/*DIGITSEVEN*/
- /* 56 */ 56,/*DIGITEIGHT*/
- /* 57 */ 57,/*DIGITNINE*/
- /* 58 */ 58,/*COLON*/
- /* 59 */ 59,/*SEMICOLON*/
- /* 60 */ 60,/*LESS-THANSIGN*/
- /* 61 */ 61,/*EQUALSSIGN*/
- /* 62 */ 62,/*GREATER-THANSIGN*/
- /* 63 */ 63,/*QUESTIONMARK*/
- /* 64 */ 64,/*COMMERCIALAT*/
- /* 65 */ 65,/*LATINCAPITALLETTERA*/
- /* 66 */ 66,/*LATINCAPITALLETTERB*/
- /* 67 */ 67,/*LATINCAPITALLETTERC*/
- /* 68 */ 68,/*LATINCAPITALLETTERD*/
- /* 69 */ 69,/*LATINCAPITALLETTERE*/
- /* 70 */ 70,/*LATINCAPITALLETTERF*/
- /* 71 */ 71,/*LATINCAPITALLETTERG*/
- /* 72 */ 72,/*LATINCAPITALLETTERH*/
- /* 73 */ 73,/*LATINCAPITALLETTERI*/
- /* 74 */ 74,/*LATINCAPITALLETTERJ*/
- /* 75 */ 75,/*LATINCAPITALLETTERK*/
- /* 76 */ 76,/*LATINCAPITALLETTERL*/
- /* 77 */ 77,/*LATINCAPITALLETTERM*/
- /* 78 */ 78,/*LATINCAPITALLETTERN*/
- /* 79 */ 79,/*LATINCAPITALLETTERO*/
- /* 80 */ 80,/*LATINCAPITALLETTERP*/
- /* 81 */ 81,/*LATINCAPITALLETTERQ*/
- /* 82 */ 82,/*LATINCAPITALLETTERR*/
- /* 83 */ 83,/*LATINCAPITALLETTERS*/
- /* 84 */ 84,/*LATINCAPITALLETTERT*/
- /* 85 */ 85,/*LATINCAPITALLETTERU*/
- /* 86 */ 86,/*LATINCAPITALLETTERV*/
- /* 87 */ 87,/*LATINCAPITALLETTERW*/
- /* 88 */ 88,/*LATINCAPITALLETTERX*/
- /* 89 */ 89,/*LATINCAPITALLETTERY*/
- /* 90 */ 90,/*LATINCAPITALLETTERZ*/
- /* 91 */ 91,/*LEFTSQUAREBRACKET*/
- /* 92 */ 92,/*REVERSESOLIDUS*/
- /* 93 */ 93,/*RIGHTSQUAREBRACKET*/
- /* 94 */ 94,/*CIRCUMFLEXACCENT*/
- /* 95 */ 95,/*LOWLINE*/
- /* 96 */ 96,/*GRAVEACCENT*/
- /* 97 */ 97,/*LATINSMALLLETTERA*/
- /* 98 */ 98,/*LATINSMALLLETTERB*/
- /* 99 */ 99,/*LATINSMALLLETTERC*/
- /* 100 */ 100,/*LATINSMALLLETTERD*/
- /* 101 */ 101,/*LATINSMALLLETTERE*/
- /* 102 */ 102,/*LATINSMALLLETTERF*/
- /* 103 */ 103,/*LATINSMALLLETTERG*/
- /* 104 */ 104,/*LATINSMALLLETTERH*/
- /* 105 */ 105,/*LATINSMALLLETTERI*/
- /* 106 */ 106,/*LATINSMALLLETTERJ*/
- /* 107 */ 107,/*LATINSMALLLETTERK*/
- /* 108 */ 108,/*LATINSMALLLETTERL*/
- /* 109 */ 109,/*LATINSMALLLETTERM*/
- /* 110 */ 110,/*LATINSMALLLETTERN*/
- /* 111 */ 111,/*LATINSMALLLETTERO*/
- /* 112 */ 112,/*LATINSMALLLETTERP*/
- /* 113 */ 113,/*LATINSMALLLETTERQ*/
- /* 114 */ 114,/*LATINSMALLLETTERR*/
- /* 115 */ 115,/*LATINSMALLLETTERS*/
- /* 116 */ 116,/*LATINSMALLLETTERT*/
- /* 117 */ 117,/*LATINSMALLLETTERU*/
- /* 118 */ 118,/*LATINSMALLLETTERV*/
- /* 119 */ 119,/*LATINSMALLLETTERW*/
- /* 120 */ 120,/*LATINSMALLLETTERX*/
- /* 121 */ 121,/*LATINSMALLLETTERY*/
- /* 122 */ 122,/*LATINSMALLLETTERZ*/
- /* 123 */ 123,/*LEFTCURLYBRACKET*/
- /* 124 */ 124,/*VERTICALLINE*/
- /* 125 */ 125,/*RIGHTCURLYBRACKET*/
- /* 126 */ 126,/*TILDE*/
- 127,
- 128,
- 129,
- 130,
- 131,
- 132,
- 133,
- 134,
- 135,
- 136,
- 137,
- 138,
- 139,
- 140,
- 141,
- 142,
- 143,
- 144,
- 145,
- 146,
- 147,
- 148,
- 149,
- 150,
- 151,
- 152,
- 153,
- 154,
- 155,
- 156,
- 157,
- 158,
- 159,
- /* 160 */ 160,/*NO-BREAKSPACE*/
- /* 161 */ 8216,/*LEFTSINGLEQUOTATIONMARK*/
- /* 162 */ 8217,/*RIGHTSINGLEQUOTATIONMARK*/
- /* 163 */ 163,/*POUNDSIGN*/
- 164,
- 165,
- /* 166 */ 166,/*BROKENBAR*/
- /* 167 */ 167,/*SECTIONSIGN*/
- /* 168 */ 168,/*DIAERESIS*/
- /* 169 */ 169,/*COPYRIGHTSIGN*/
- 170,
- /* 171 */ 171,/*LEFT-POINTINGDOUBLEANGLEQUOTATIONMARK*/
- /* 172 */ 172,/*NOTSIGN*/
- /* 173 */ 173,/*SOFTHYPHEN*/
- 174,
- /* 175 */ 8213,/*HORIZONTALBAR*/
- /* 176 */ 176,/*DEGREESIGN*/
- /* 177 */ 177,/*PLUS-MINUSSIGN*/
- /* 178 */ 178,/*SUPERSCRIPTTWO*/
- /* 179 */ 179,/*SUPERSCRIPTTHREE*/
- /* 180 */ 900,/*GREEKTONOS*/
- /* 181 */ 901,/*GREEKDIALYTIKATONOS*/
- /* 182 */ 902,/*GREEKCAPITALLETTERALPHAWITHTONOS*/
- /* 183 */ 183,/*MIDDLEDOT*/
- /* 184 */ 904,/*GREEKCAPITALLETTEREPSILONWITHTONOS*/
- /* 185 */ 905,/*GREEKCAPITALLETTERETAWITHTONOS*/
- /* 186 */ 906,/*GREEKCAPITALLETTERIOTAWITHTONOS*/
- /* 187 */ 187,/*RIGHT-POINTINGDOUBLEANGLEQUOTATIONMARK*/
- /* 188 */ 908,/*GREEKCAPITALLETTEROMICRONWITHTONOS*/
- /* 189 */ 189,/*VULGARFRACTIONONEHALF*/
- /* 190 */ 910,/*GREEKCAPITALLETTERUPSILONWITHTONOS*/
- /* 191 */ 911,/*GREEKCAPITALLETTEROMEGAWITHTONOS*/
- /* 192 */ 912,/*GREEKSMALLLETTERIOTAWITHDIALYTIKAANDTONOS*/
- /* 193 */ 913,/*GREEKCAPITALLETTERALPHA*/
- /* 194 */ 914,/*GREEKCAPITALLETTERBETA*/
- /* 195 */ 915,/*GREEKCAPITALLETTERGAMMA*/
- /* 196 */ 916,/*GREEKCAPITALLETTERDELTA*/
- /* 197 */ 917,/*GREEKCAPITALLETTEREPSILON*/
- /* 198 */ 918,/*GREEKCAPITALLETTERZETA*/
- /* 199 */ 919,/*GREEKCAPITALLETTERETA*/
- /* 200 */ 920,/*GREEKCAPITALLETTERTHETA*/
- /* 201 */ 921,/*GREEKCAPITALLETTERIOTA*/
- /* 202 */ 922,/*GREEKCAPITALLETTERKAPPA*/
- /* 203 */ 923,/*GREEKCAPITALLETTERLAMDA*/
- /* 204 */ 924,/*GREEKCAPITALLETTERMU*/
- /* 205 */ 925,/*GREEKCAPITALLETTERNU*/
- /* 206 */ 926,/*GREEKCAPITALLETTERXI*/
- /* 207 */ 927,/*GREEKCAPITALLETTEROMICRON*/
- /* 208 */ 928,/*GREEKCAPITALLETTERPI*/
- /* 209 */ 929,/*GREEKCAPITALLETTERRHO*/
- 210,
- /* 211 */ 931,/*GREEKCAPITALLETTERSIGMA*/
- /* 212 */ 932,/*GREEKCAPITALLETTERTAU*/
- /* 213 */ 933,/*GREEKCAPITALLETTERUPSILON*/
- /* 214 */ 934,/*GREEKCAPITALLETTERPHI*/
- /* 215 */ 935,/*GREEKCAPITALLETTERCHI*/
- /* 216 */ 936,/*GREEKCAPITALLETTERPSI*/
- /* 217 */ 937,/*GREEKCAPITALLETTEROMEGA*/
- /* 218 */ 938,/*GREEKCAPITALLETTERIOTAWITHDIALYTIKA*/
- /* 219 */ 939,/*GREEKCAPITALLETTERUPSILONWITHDIALYTIKA*/
- /* 220 */ 940,/*GREEKSMALLLETTERALPHAWITHTONOS*/
- /* 221 */ 941,/*GREEKSMALLLETTEREPSILONWITHTONOS*/
- /* 222 */ 942,/*GREEKSMALLLETTERETAWITHTONOS*/
- /* 223 */ 943,/*GREEKSMALLLETTERIOTAWITHTONOS*/
- /* 224 */ 944,/*GREEKSMALLLETTERUPSILONWITHDIALYTIKAANDTONOS*/
- /* 225 */ 945,/*GREEKSMALLLETTERALPHA*/
- /* 226 */ 946,/*GREEKSMALLLETTERBETA*/
- /* 227 */ 947,/*GREEKSMALLLETTERGAMMA*/
- /* 228 */ 948,/*GREEKSMALLLETTERDELTA*/
- /* 229 */ 949,/*GREEKSMALLLETTEREPSILON*/
- /* 230 */ 950,/*GREEKSMALLLETTERZETA*/
- /* 231 */ 951,/*GREEKSMALLLETTERETA*/
- /* 232 */ 952,/*GREEKSMALLLETTERTHETA*/
- /* 233 */ 953,/*GREEKSMALLLETTERIOTA*/
- /* 234 */ 954,/*GREEKSMALLLETTERKAPPA*/
- /* 235 */ 955,/*GREEKSMALLLETTERLAMDA*/
- /* 236 */ 956,/*GREEKSMALLLETTERMU*/
- /* 237 */ 957,/*GREEKSMALLLETTERNU*/
- /* 238 */ 958,/*GREEKSMALLLETTERXI*/
- /* 239 */ 959,/*GREEKSMALLLETTEROMICRON*/
- /* 240 */ 960,/*GREEKSMALLLETTERPI*/
- /* 241 */ 961,/*GREEKSMALLLETTERRHO*/
- /* 242 */ 962,/*GREEKSMALLLETTERFINALSIGMA*/
- /* 243 */ 963,/*GREEKSMALLLETTERSIGMA*/
- /* 244 */ 964,/*GREEKSMALLLETTERTAU*/
- /* 245 */ 965,/*GREEKSMALLLETTERUPSILON*/
- /* 246 */ 966,/*GREEKSMALLLETTERPHI*/
- /* 247 */ 967,/*GREEKSMALLLETTERCHI*/
- /* 248 */ 968,/*GREEKSMALLLETTERPSI*/
- /* 249 */ 969,/*GREEKSMALLLETTEROMEGA*/
- /* 250 */ 970,/*GREEKSMALLLETTERIOTAWITHDIALYTIKA*/
- /* 251 */ 971,/*GREEKSMALLLETTERUPSILONWITHDIALYTIKA*/
- /* 252 */ 972,/*GREEKSMALLLETTEROMICRONWITHTONOS*/
- /* 253 */ 973,/*GREEKSMALLLETTERUPSILONWITHTONOS*/
- /* 254 */ 974,/*GREEKSMALLLETTEROMEGAWITHTONOS*/
- 255
+static convert_t iso8859_15[] = {
+	{ 0, 0 },
+	{ 1, 1 },
+	{ 2, 2 },
+	{ 3, 3 },
+	{ 4, 4 },
+	{ 5, 5 },
+	{ 6, 6 },
+	{ 7, 7 },
+	{ 8, 8 },
+	{ 9, 9 },
+	{ 10, 10 },
+	{ 11, 11 },
+	{ 12, 12 },
+	{ 13, 13 },
+	{ 14, 14 },
+	{ 15, 15 },
+	{ 16, 16 },
+	{ 17, 17 },
+	{ 18, 18 },
+	{ 19, 19 },
+	{ 20, 20 },
+	{ 21, 21 },
+	{ 22, 22 },
+	{ 23, 23 },
+	{ 24, 24 },
+	{ 25, 25 },
+	{ 26, 26 },
+	{ 27, 27 },
+	{ 28, 28 },
+	{ 29, 29 },
+	{ 30, 30 },
+	{ 31, 31 },
+	{ 32, 32 },
+	{ 33, 33 },
+	{ 34, 34 },
+	{ 35, 35 },
+	{ 36, 36 },
+	{ 37, 37 },
+	{ 38, 38 },
+	{ 39, 39 },
+	{ 40, 40 },
+	{ 41, 41 },
+	{ 42, 42 },
+	{ 43, 43 },
+	{ 44, 44 },
+	{ 45, 45 },
+	{ 46, 46 },
+	{ 47, 47 },
+	{ 48, 48 },
+	{ 49, 49 },
+	{ 50, 50 },
+	{ 51, 51 },
+	{ 52, 52 },
+	{ 53, 53 },
+	{ 54, 54 },
+	{ 55, 55 },
+	{ 56, 56 },
+	{ 57, 57 },
+	{ 58, 58 },
+	{ 59, 59 },
+	{ 60, 60 },
+	{ 61, 61 },
+	{ 62, 62 },
+	{ 63, 63 },
+	{ 64, 64 },
+	{ 65, 65 },
+	{ 66, 66 },
+	{ 67, 67 },
+	{ 68, 68 },
+	{ 69, 69 },
+	{ 70, 70 },
+	{ 71, 71 },
+	{ 72, 72 },
+	{ 73, 73 },
+	{ 74, 74 },
+	{ 75, 75 },
+	{ 76, 76 },
+	{ 77, 77 },
+	{ 78, 78 },
+	{ 79, 79 },
+	{ 80, 80 },
+	{ 81, 81 },
+	{ 82, 82 },
+	{ 83, 83 },
+	{ 84, 84 },
+	{ 85, 85 },
+	{ 86, 86 },
+	{ 87, 87 },
+	{ 88, 88 },
+	{ 89, 89 },
+	{ 90, 90 },
+	{ 91, 91 },
+	{ 92, 92 },
+	{ 93, 93 },
+	{ 94, 94 },
+	{ 95, 95 },
+	{ 96, 96 },
+	{ 97, 97 },
+	{ 98, 98 },
+	{ 99, 99 },
+	{ 100, 100 },
+	{ 101, 101 },
+	{ 102, 102 },
+	{ 103, 103 },
+	{ 104, 104 },
+	{ 105, 105 },
+	{ 106, 106 },
+	{ 107, 107 },
+	{ 108, 108 },
+	{ 109, 109 },
+	{ 110, 110 },
+	{ 111, 111 },
+	{ 112, 112 },
+	{ 113, 113 },
+	{ 114, 114 },
+	{ 115, 115 },
+	{ 116, 116 },
+	{ 117, 117 },
+	{ 118, 118 },
+	{ 119, 119 },
+	{ 120, 120 },
+	{ 121, 121 },
+	{ 122, 122 },
+	{ 123, 123 },
+	{ 124, 124 },
+	{ 125, 125 },
+	{ 126, 126 },
+	{ 127, 127 },
+	{ 128, 128 },
+	{ 129, 129 },
+	{ 130, 130 },
+	{ 131, 131 },
+	{ 132, 132 },
+	{ 133, 133 },
+	{ 134, 134 },
+	{ 135, 135 },
+	{ 136, 136 },
+	{ 137, 137 },
+	{ 138, 138 },
+	{ 139, 139 },
+	{ 140, 140 },
+	{ 141, 141 },
+	{ 142, 142 },
+	{ 143, 143 },
+	{ 144, 144 },
+	{ 145, 145 },
+	{ 146, 146 },
+	{ 147, 147 },
+	{ 148, 148 },
+	{ 149, 149 },
+	{ 150, 150 },
+	{ 151, 151 },
+	{ 152, 152 },
+	{ 153, 153 },
+	{ 154, 154 },
+	{ 155, 155 },
+	{ 156, 156 },
+	{ 157, 157 },
+	{ 158, 158 },
+	{ 159, 159 },
+	{ 160, 160 },
+	{ 161, 161 },
+	{ 162, 162 },
+	{ 163, 163 },
+	{ 164, 8364 },
+	{ 165, 165 },
+	{ 166, 352 },
+	{ 167, 167 },
+	{ 168, 353 },
+	{ 169, 169 },
+	{ 170, 170 },
+	{ 171, 171 },
+	{ 172, 172 },
+	{ 173, 173 },
+	{ 174, 174 },
+	{ 175, 175 },
+	{ 176, 176 },
+	{ 177, 177 },
+	{ 178, 178 },
+	{ 179, 179 },
+	{ 180, 381 },
+	{ 181, 181 },
+	{ 182, 182 },
+	{ 183, 183 },
+	{ 184, 382 },
+	{ 185, 185 },
+	{ 186, 186 },
+	{ 187, 187 },
+	{ 188, 338 },
+	{ 189, 339 },
+	{ 190, 376 },
+	{ 191, 191 },
+	{ 192, 192 },
+	{ 193, 193 },
+	{ 194, 194 },
+	{ 195, 195 },
+	{ 196, 196 },
+	{ 197, 197 },
+	{ 198, 198 },
+	{ 199, 199 },
+	{ 200, 200 },
+	{ 201, 201 },
+	{ 202, 202 },
+	{ 203, 203 },
+	{ 204, 204 },
+	{ 205, 205 },
+	{ 206, 206 },
+	{ 207, 207 },
+	{ 208, 208 },
+	{ 209, 209 },
+	{ 210, 210 },
+	{ 211, 211 },
+	{ 212, 212 },
+	{ 213, 213 },
+	{ 214, 214 },
+	{ 215, 215 },
+	{ 216, 216 },
+	{ 217, 217 },
+	{ 218, 218 },
+	{ 219, 219 },
+	{ 220, 220 },
+	{ 221, 221 },
+	{ 222, 222 },
+	{ 223, 223 },
+	{ 224, 224 },
+	{ 225, 225 },
+	{ 226, 226 },
+	{ 227, 227 },
+	{ 228, 228 },
+	{ 229, 229 },
+	{ 230, 230 },
+	{ 231, 231 },
+	{ 232, 232 },
+	{ 233, 233 },
+	{ 234, 234 },
+	{ 235, 235 },
+	{ 236, 236 },
+	{ 237, 237 },
+	{ 238, 238 },
+	{ 239, 239 },
+	{ 240, 240 },
+	{ 241, 241 },
+	{ 242, 242 },
+	{ 243, 243 },
+	{ 244, 244 },
+	{ 245, 245 },
+	{ 246, 246 },
+	{ 247, 247 },
+	{ 248, 248 },
+	{ 249, 249 },
+	{ 250, 250 },
+	{ 251, 251 },
+	{ 252, 252 },
+	{ 253, 253 },
+	{ 254, 254 },
+	{ 255, 255 },
+	{ 34, 8220 },
+	{ 34, 8221 },
+	{ 39, 8216 },
+	{ 39, 8217 },
+	{ 45, 8211 },
+	{ 45, 8212 },
+	{ 32, 8194 },
+	{ 32, 8195 },
+	{ 32, 8201 },
+	{ 65, 256 },
+	{ 65, 258 },
+	{ 65, 260 },
+	{ 65, 461 },
+	{ 97, 257 },
+	{ 97, 259 },
+	{ 97, 261 },
+	{ 97, 462 },
+	{ 67, 262 },
+	{ 67, 264 },
+	{ 67, 266 },
+	{ 67, 268 },
+	{ 99, 263 },
+	{ 99, 265 },
+	{ 99, 267 },
+	{ 99, 269 },
+	{ 68, 270 },
+	{ 100, 271 },
+	{ 69, 274 },
+	{ 69, 276 },
+	{ 69, 278 },
+	{ 69, 280 },
+	{ 69, 282 },
+	{ 101, 275 },
+	{ 101, 277 },
+	{ 101, 279 },
+	{ 101, 281 },
+	{ 101, 283 },
+	{ 71, 284 },
+	{ 71, 286 },
+	{ 71, 288 },
+	{ 71, 290 },
+	{ 71, 486 },
+	{ 71, 500 },
+	{ 103, 285 },
+	{ 103, 287 },
+	{ 103, 289 },
+	{ 103, 291 },
+	{ 103, 487 },
+	{ 103, 501 },
+	{ 72, 292 },
+	{ 104, 293 },
+	{ 73, 296 },
+	{ 73, 298 },
+	{ 73, 300 },
+	{ 73, 302 },
+	{ 73, 304 },
+	{ 73, 463 },
+	{ 105, 297 },
+	{ 105, 299 },
+	{ 105, 301 },
+	{ 105, 303 },
+	{ 105, 305 },
+	{ 105, 464 },
+	{ 74, 308 },
+	{ 106, 309 },
+	{ 75, 310 },
+	{ 75, 488 },
+	{ 107, 311 },
+	{ 107, 489 },
+	{ 76, 313 },
+	{ 76, 315 },
+	{ 76, 317 },
+	{ 76, 319 },
+	{ 76, 321 },
+	{ 108, 314 },
+	{ 108, 316 },
+	{ 108, 318 },
+	{ 108, 320 },
+	{ 108, 322 },
+	{ 77, 323 },
+	{ 77, 325 },
+	{ 77, 327 },
+	{ 109, 324 },
+	{ 109, 326 },
+	{ 109, 328 },
+	{ 109, 329 },
+	{ 78, 332 },
+	{ 78, 334 },
+	{ 78, 336 },
+	{ 78, 465 },
+	{ 78, 490 },
+	{ 110, 333 },
+	{ 110, 335 },
+	{ 110, 337 },
+	{ 110, 466 },
+	{ 110, 491 },
+	{ 82, 340 },
+	{ 82, 342 },
+	{ 82, 344 },
+	{ 114, 341 },
+	{ 114, 343 },
+	{ 114, 345 },
+	{ 83, 346 },
+	{ 83, 348 },
+	{ 83, 350 },
+	{ 115, 347 },
+	{ 115, 349 },
+	{ 115, 351 },
+	{ 84, 354 },
+	{ 84, 356 },
+	{ 116, 355 },
+	{ 116, 357 },
+	{ 85, 360 },
+	{ 85, 362 },
+	{ 85, 364 },
+	{ 85, 366 },
+	{ 85, 368 },
+	{ 85, 370 },
+	{ 85, 467 },
+	{ 117, 361 },
+	{ 117, 363 },
+	{ 117, 365 },
+	{ 117, 367 },
+	{ 117, 369 },
+	{ 117, 371 },
+	{ 117, 468 },
+	{ 87, 372 },
+	{ 119, 373 },
+	{ 89, 374 },
+	{ 121, 375 },
+	{ 90, 377 },
+	{ 90, 379 },
+	{ 122, 378 },
+	{ 122, 380 },
 };
-charconvert iso8859_8[] = {
- /* 0 */ 0,/*<tdbgcolor="C0C0C0"><fontface="Arial"color="000000"><b>ISO/IEC10646-1:2000CharacterName</b></font>*/
- 1,
- 2,
- 3,
- 4,
- 5,
- 6,
- 7,
- 8,
- 9,
- 10,
- 11,
- 12,
- 13,
- 14,
- 15,
- 16,
- 17,
- 18,
- 19,
- 20,
- 21,
- 22,
- 23,
- 24,
- 25,
- 26,
- 27,
- 28,
- 29,
- 30,
- 31,
- /* 32 */ 32,/*SPACE*/
- /* 33 */ 33,/*EXCLAMATIONMARK*/
- /* 34 */ 34,/*QUOTATIONMARK*/
- /* 35 */ 35,/*NUMBERSIGN*/
- /* 36 */ 36,/*DOLLARSIGN*/
- /* 37 */ 37,/*PERCENTSIGN*/
- /* 38 */ 38,/*AMPERSAND*/
- /* 39 */ 39,/*APOSTROPHE*/
- /* 40 */ 40,/*LEFTPARENTHESIS*/
- /* 41 */ 41,/*RIGHTPARENTHESIS*/
- /* 42 */ 42,/*ASTERISK*/
- /* 43 */ 43,/*PLUSSIGN*/
- /* 44 */ 44,/*COMMA*/
- /* 45 */ 45,/*HYPHEN-MINUS*/
- /* 46 */ 46,/*FULLSTOP*/
- /* 47 */ 47,/*SOLIDUS*/
- /* 48 */ 48,/*DIGITZERO*/
- /* 49 */ 49,/*DIGITONE*/
- /* 50 */ 50,/*DIGITTWO*/
- /* 51 */ 51,/*DIGITTHREE*/
- /* 52 */ 52,/*DIGITFOUR*/
- /* 53 */ 53,/*DIGITFIVE*/
- /* 54 */ 54,/*DIGITSIX*/
- /* 55 */ 55,/*DIGITSEVEN*/
- /* 56 */ 56,/*DIGITEIGHT*/
- /* 57 */ 57,/*DIGITNINE*/
- /* 58 */ 58,/*COLON*/
- /* 59 */ 59,/*SEMICOLON*/
- /* 60 */ 60,/*LESS-THANSIGN*/
- /* 61 */ 61,/*EQUALSSIGN*/
- /* 62 */ 62,/*GREATER-THANSIGN*/
- /* 63 */ 63,/*QUESTIONMARK*/
- /* 64 */ 64,/*COMMERCIALAT*/
- /* 65 */ 65,/*LATINCAPITALLETTERA*/
- /* 66 */ 66,/*LATINCAPITALLETTERB*/
- /* 67 */ 67,/*LATINCAPITALLETTERC*/
- /* 68 */ 68,/*LATINCAPITALLETTERD*/
- /* 69 */ 69,/*LATINCAPITALLETTERE*/
- /* 70 */ 70,/*LATINCAPITALLETTERF*/
- /* 71 */ 71,/*LATINCAPITALLETTERG*/
- /* 72 */ 72,/*LATINCAPITALLETTERH*/
- /* 73 */ 73,/*LATINCAPITALLETTERI*/
- /* 74 */ 74,/*LATINCAPITALLETTERJ*/
- /* 75 */ 75,/*LATINCAPITALLETTERK*/
- /* 76 */ 76,/*LATINCAPITALLETTERL*/
- /* 77 */ 77,/*LATINCAPITALLETTERM*/
- /* 78 */ 78,/*LATINCAPITALLETTERN*/
- /* 79 */ 79,/*LATINCAPITALLETTERO*/
- /* 80 */ 80,/*LATINCAPITALLETTERP*/
- /* 81 */ 81,/*LATINCAPITALLETTERQ*/
- /* 82 */ 82,/*LATINCAPITALLETTERR*/
- /* 83 */ 83,/*LATINCAPITALLETTERS*/
- /* 84 */ 84,/*LATINCAPITALLETTERT*/
- /* 85 */ 85,/*LATINCAPITALLETTERU*/
- /* 86 */ 86,/*LATINCAPITALLETTERV*/
- /* 87 */ 87,/*LATINCAPITALLETTERW*/
- /* 88 */ 88,/*LATINCAPITALLETTERX*/
- /* 89 */ 89,/*LATINCAPITALLETTERY*/
- /* 90 */ 90,/*LATINCAPITALLETTERZ*/
- /* 91 */ 91,/*LEFTSQUAREBRACKET*/
- /* 92 */ 92,/*REVERSESOLIDUS*/
- /* 93 */ 93,/*RIGHTSQUAREBRACKET*/
- /* 94 */ 94,/*CIRCUMFLEXACCENT*/
- /* 95 */ 95,/*LOWLINE*/
- /* 96 */ 96,/*GRAVEACCENT*/
- /* 97 */ 97,/*LATINSMALLLETTERA*/
- /* 98 */ 98,/*LATINSMALLLETTERB*/
- /* 99 */ 99,/*LATINSMALLLETTERC*/
- /* 100 */ 100,/*LATINSMALLLETTERD*/
- /* 101 */ 101,/*LATINSMALLLETTERE*/
- /* 102 */ 102,/*LATINSMALLLETTERF*/
- /* 103 */ 103,/*LATINSMALLLETTERG*/
- /* 104 */ 104,/*LATINSMALLLETTERH*/
- /* 105 */ 105,/*LATINSMALLLETTERI*/
- /* 106 */ 106,/*LATINSMALLLETTERJ*/
- /* 107 */ 107,/*LATINSMALLLETTERK*/
- /* 108 */ 108,/*LATINSMALLLETTERL*/
- /* 109 */ 109,/*LATINSMALLLETTERM*/
- /* 110 */ 110,/*LATINSMALLLETTERN*/
- /* 111 */ 111,/*LATINSMALLLETTERO*/
- /* 112 */ 112,/*LATINSMALLLETTERP*/
- /* 113 */ 113,/*LATINSMALLLETTERQ*/
- /* 114 */ 114,/*LATINSMALLLETTERR*/
- /* 115 */ 115,/*LATINSMALLLETTERS*/
- /* 116 */ 116,/*LATINSMALLLETTERT*/
- /* 117 */ 117,/*LATINSMALLLETTERU*/
- /* 118 */ 118,/*LATINSMALLLETTERV*/
- /* 119 */ 119,/*LATINSMALLLETTERW*/
- /* 120 */ 120,/*LATINSMALLLETTERX*/
- /* 121 */ 121,/*LATINSMALLLETTERY*/
- /* 122 */ 122,/*LATINSMALLLETTERZ*/
- /* 123 */ 123,/*LEFTCURLYBRACKET*/
- /* 124 */ 124,/*VERTICALLINE*/
- /* 125 */ 125,/*RIGHTCURLYBRACKET*/
- /* 126 */ 126,/*TILDE*/
- 127,
- 128,
- 129,
- 130,
- 131,
- 132,
- 133,
- 134,
- 135,
- 136,
- 137,
- 138,
- 139,
- 140,
- 141,
- 142,
- 143,
- 144,
- 145,
- 146,
- 147,
- 148,
- 149,
- 150,
- 151,
- 152,
- 153,
- 154,
- 155,
- 156,
- 157,
- 158,
- 159,
- /* 160 */ 160,/*NO-BREAKSPACE*/
- 161,
- /* 162 */ 162,/*CENTSIGN*/
- /* 163 */ 163,/*POUNDSIGN*/
- /* 164 */ 164,/*CURRENCYSIGN*/
- /* 165 */ 165,/*YENSIGN*/
- /* 166 */ 166,/*BROKENBAR*/
- /* 167 */ 167,/*SECTIONSIGN*/
- /* 168 */ 168,/*DIAERESIS*/
- /* 169 */ 169,/*COPYRIGHTSIGN*/
- /* 170 */ 215,/*MULTIPLICATIONSIGN*/
- /* 171 */ 171,/*LEFT-POINTINGDOUBLEANGLEQUOTATIONMARK*/
- /* 172 */ 172,/*NOTSIGN*/
- /* 173 */ 173,/*SOFTHYPHEN*/
- /* 174 */ 174,/*REGISTEREDSIGN*/
- /* 175 */ 175,/*MACRON*/
- /* 176 */ 176,/*DEGREESIGN*/
- /* 177 */ 177,/*PLUS-MINUSSIGN*/
- /* 178 */ 178,/*SUPERSCRIPTTWO*/
- /* 179 */ 179,/*SUPERSCRIPTTHREE*/
- /* 180 */ 180,/*ACUTEACCENT*/
- /* 181 */ 181,/*MICROSIGN*/
- /* 182 */ 182,/*PILCROWSIGN*/
- /* 183 */ 183,/*MIDDLEDOT*/
- /* 184 */ 184,/*CEDILLA*/
- /* 185 */ 185,/*SUPERSCRIPTONE*/
- /* 186 */ 247,/*DIVISIONSIGN*/
- /* 187 */ 187,/*RIGHT-POINTINGDOUBLEANGLEQUOTATIONMARK*/
- /* 188 */ 188,/*VULGARFRACTIONONEQUARTER*/
- /* 189 */ 189,/*VULGARFRACTIONONEHALF*/
- /* 190 */ 190,/*VULGARFRACTIONTHREEQUARTERS*/
- 191,
- 192,
- 193,
- 194,
- 195,
- 196,
- 197,
- 198,
- 199,
- 200,
- 201,
- 202,
- 203,
- 204,
- 205,
- 206,
- 207,
- 208,
- 209,
- 210,
- 211,
- 212,
- 213,
- 214,
- 215,
- 216,
- 217,
- 218,
- 219,
- 220,
- 221,
- 222,
- /* 223 */ 8215,/*DOUBLELOWLINE*/
- /* 224 */ 1488,/*HEBREWLETTERALEF*/
- /* 225 */ 1489,/*HEBREWLETTERBET*/
- /* 226 */ 1490,/*HEBREWLETTERGIMEL*/
- /* 227 */ 1491,/*HEBREWLETTERDALET*/
- /* 228 */ 1492,/*HEBREWLETTERHE*/
- /* 229 */ 1493,/*HEBREWLETTERVAV*/
- /* 230 */ 1494,/*HEBREWLETTERZAYIN*/
- /* 231 */ 1495,/*HEBREWLETTERHET*/
- /* 232 */ 1496,/*HEBREWLETTERTET*/
- /* 233 */ 1497,/*HEBREWLETTERYOD*/
- /* 234 */ 1498,/*HEBREWLETTERFINALKAF*/
- /* 235 */ 1499,/*HEBREWLETTERKAF*/
- /* 236 */ 1500,/*HEBREWLETTERLAMED*/
- /* 237 */ 1501,/*HEBREWLETTERFINALMEM*/
- /* 238 */ 1502,/*HEBREWLETTERMEM*/
- /* 239 */ 1503,/*HEBREWLETTERFINALNUN*/
- /* 240 */ 1504,/*HEBREWLETTERNUN*/
- /* 241 */ 1505,/*HEBREWLETTERSAMEKH*/
- /* 242 */ 1506,/*HEBREWLETTERAYIN*/
- /* 243 */ 1507,/*HEBREWLETTERFINALPE*/
- /* 244 */ 1508,/*HEBREWLETTERPE*/
- /* 245 */ 1509,/*HEBREWLETTERFINALTSADI*/
- /* 246 */ 1510,/*HEBREWLETTERTSADI*/
- /* 247 */ 1511,/*HEBREWLETTERQOF*/
- /* 248 */ 1512,/*HEBREWLETTERRESH*/
- /* 249 */ 1513,/*HEBREWLETTERSHIN*/
- /* 250 */ 1514,/*HEBREWLETTERTAV*/
- 251,
- 252,
- /* 253 */ 8206,/*LEFT-TO-RIGHTMARK*/
- /* 254 */ 8207,/*RIGHT-TO-LEFTMARK*/
- 255
+static convert_t iso8859_16[] = {
+	{ 0, 0 },
+	{ 1, 1 },
+	{ 2, 2 },
+	{ 3, 3 },
+	{ 4, 4 },
+	{ 5, 5 },
+	{ 6, 6 },
+	{ 7, 7 },
+	{ 8, 8 },
+	{ 9, 9 },
+	{ 10, 10 },
+	{ 11, 11 },
+	{ 12, 12 },
+	{ 13, 13 },
+	{ 14, 14 },
+	{ 15, 15 },
+	{ 16, 16 },
+	{ 17, 17 },
+	{ 18, 18 },
+	{ 19, 19 },
+	{ 20, 20 },
+	{ 21, 21 },
+	{ 22, 22 },
+	{ 23, 23 },
+	{ 24, 24 },
+	{ 25, 25 },
+	{ 26, 26 },
+	{ 27, 27 },
+	{ 28, 28 },
+	{ 29, 29 },
+	{ 30, 30 },
+	{ 31, 31 },
+	{ 32, 32 },
+	{ 33, 33 },
+	{ 34, 34 },
+	{ 35, 35 },
+	{ 36, 36 },
+	{ 37, 37 },
+	{ 38, 38 },
+	{ 39, 39 },
+	{ 40, 40 },
+	{ 41, 41 },
+	{ 42, 42 },
+	{ 43, 43 },
+	{ 44, 44 },
+	{ 45, 45 },
+	{ 46, 46 },
+	{ 47, 47 },
+	{ 48, 48 },
+	{ 49, 49 },
+	{ 50, 50 },
+	{ 51, 51 },
+	{ 52, 52 },
+	{ 53, 53 },
+	{ 54, 54 },
+	{ 55, 55 },
+	{ 56, 56 },
+	{ 57, 57 },
+	{ 58, 58 },
+	{ 59, 59 },
+	{ 60, 60 },
+	{ 61, 61 },
+	{ 62, 62 },
+	{ 63, 63 },
+	{ 64, 64 },
+	{ 65, 65 },
+	{ 66, 66 },
+	{ 67, 67 },
+	{ 68, 68 },
+	{ 69, 69 },
+	{ 70, 70 },
+	{ 71, 71 },
+	{ 72, 72 },
+	{ 73, 73 },
+	{ 74, 74 },
+	{ 75, 75 },
+	{ 76, 76 },
+	{ 77, 77 },
+	{ 78, 78 },
+	{ 79, 79 },
+	{ 80, 80 },
+	{ 81, 81 },
+	{ 82, 82 },
+	{ 83, 83 },
+	{ 84, 84 },
+	{ 85, 85 },
+	{ 86, 86 },
+	{ 87, 87 },
+	{ 88, 88 },
+	{ 89, 89 },
+	{ 90, 90 },
+	{ 91, 91 },
+	{ 92, 92 },
+	{ 93, 93 },
+	{ 94, 94 },
+	{ 95, 95 },
+	{ 96, 96 },
+	{ 97, 97 },
+	{ 98, 98 },
+	{ 99, 99 },
+	{ 100, 100 },
+	{ 101, 101 },
+	{ 102, 102 },
+	{ 103, 103 },
+	{ 104, 104 },
+	{ 105, 105 },
+	{ 106, 106 },
+	{ 107, 107 },
+	{ 108, 108 },
+	{ 109, 109 },
+	{ 110, 110 },
+	{ 111, 111 },
+	{ 112, 112 },
+	{ 113, 113 },
+	{ 114, 114 },
+	{ 115, 115 },
+	{ 116, 116 },
+	{ 117, 117 },
+	{ 118, 118 },
+	{ 119, 119 },
+	{ 120, 120 },
+	{ 121, 121 },
+	{ 122, 122 },
+	{ 123, 123 },
+	{ 124, 124 },
+	{ 125, 125 },
+	{ 126, 126 },
+	{ 127, 127 },
+	{ 128, 128 },
+	{ 129, 129 },
+	{ 130, 130 },
+	{ 131, 131 },
+	{ 132, 132 },
+	{ 133, 133 },
+	{ 134, 134 },
+	{ 135, 135 },
+	{ 136, 136 },
+	{ 137, 137 },
+	{ 138, 138 },
+	{ 139, 139 },
+	{ 140, 140 },
+	{ 141, 141 },
+	{ 142, 142 },
+	{ 143, 143 },
+	{ 144, 144 },
+	{ 145, 145 },
+	{ 146, 146 },
+	{ 147, 147 },
+	{ 148, 148 },
+	{ 149, 149 },
+	{ 150, 150 },
+	{ 151, 151 },
+	{ 152, 152 },
+	{ 153, 153 },
+	{ 154, 154 },
+	{ 155, 155 },
+	{ 156, 156 },
+	{ 157, 157 },
+	{ 158, 158 },
+	{ 159, 159 },
+	{ 160, 160 },
+	{ 161, 260 },
+	{ 162, 261 },
+	{ 163, 321 },
+	{ 164, 8364 },
+	{ 165, 8222 },
+	{ 166, 352 },
+	{ 167, 167 },
+	{ 168, 353 },
+	{ 169, 169 },
+	{ 170, 536 },
+	{ 171, 171 },
+	{ 172, 377 },
+	{ 173, 173 },
+	{ 174, 378 },
+	{ 175, 379 },
+	{ 176, 176 },
+	{ 177, 177 },
+	{ 178, 268 },
+	{ 179, 322 },
+	{ 180, 381 },
+	{ 181, 8221 },
+	{ 182, 182 },
+	{ 183, 183 },
+	{ 184, 382 },
+	{ 185, 269 },
+	{ 186, 537 },
+	{ 187, 187 },
+	{ 188, 338 },
+	{ 189, 339 },
+	{ 190, 376 },
+	{ 191, 380 },
+	{ 192, 192 },
+	{ 193, 193 },
+	{ 194, 194 },
+	{ 195, 258 },
+	{ 196, 196 },
+	{ 197, 262 },
+	{ 198, 198 },
+	{ 199, 199 },
+	{ 200, 200 },
+	{ 201, 201 },
+	{ 202, 202 },
+	{ 203, 203 },
+	{ 204, 204 },
+	{ 205, 205 },
+	{ 206, 206 },
+	{ 207, 207 },
+	{ 208, 272 },
+	{ 209, 323 },
+	{ 210, 210 },
+	{ 211, 211 },
+	{ 212, 212 },
+	{ 213, 336 },
+	{ 214, 214 },
+	{ 215, 346 },
+	{ 216, 368 },
+	{ 217, 217 },
+	{ 218, 218 },
+	{ 219, 219 },
+	{ 220, 220 },
+	{ 221, 280 },
+	{ 222, 538 },
+	{ 223, 223 },
+	{ 224, 224 },
+	{ 225, 225 },
+	{ 226, 226 },
+	{ 227, 259 },
+	{ 228, 228 },
+	{ 229, 263 },
+	{ 230, 230 },
+	{ 231, 231 },
+	{ 232, 232 },
+	{ 233, 233 },
+	{ 234, 234 },
+	{ 235, 235 },
+	{ 236, 236 },
+	{ 237, 237 },
+	{ 238, 238 },
+	{ 239, 239 },
+	{ 240, 273 },
+	{ 241, 324 },
+	{ 242, 242 },
+	{ 243, 243 },
+	{ 244, 244 },
+	{ 245, 337 },
+	{ 246, 246 },
+	{ 247, 347 },
+	{ 248, 369 },
+	{ 249, 249 },
+	{ 250, 250 },
+	{ 251, 251 },
+	{ 252, 252 },
+	{ 253, 281 },
+	{ 254, 539 },
+	{ 255, 255 },
+	{ 34, 8220 },
+	{ 39, 8216 },
+	{ 39, 8217 },
+	{ 45, 8211 },
+	{ 45, 8212 },
+	{ 32, 8194 },
+	{ 32, 8195 },
+	{ 32, 8201 },
+	{ 65, 195 },
+	{ 65, 197 },
+	{ 65, 256 },
+	{ 65, 461 },
+	{ 97, 227 },
+	{ 97, 229 },
+	{ 97, 257 },
+	{ 97, 462 },
+	{ 67, 264 },
+	{ 67, 266 },
+	{ 99, 265 },
+	{ 99, 267 },
+	{ 68, 270 },
+	{ 100, 271 },
+	{ 69, 274 },
+	{ 69, 276 },
+	{ 69, 278 },
+	{ 69, 282 },
+	{ 101, 275 },
+	{ 101, 277 },
+	{ 101, 279 },
+	{ 101, 283 },
+	{ 71, 284 },
+	{ 71, 286 },
+	{ 71, 288 },
+	{ 71, 290 },
+	{ 71, 486 },
+	{ 71, 500 },
+	{ 103, 285 },
+	{ 103, 287 },
+	{ 103, 289 },
+	{ 103, 291 },
+	{ 103, 487 },
+	{ 103, 501 },
+	{ 72, 292 },
+	{ 104, 293 },
+	{ 73, 296 },
+	{ 73, 298 },
+	{ 73, 300 },
+	{ 73, 302 },
+	{ 73, 304 },
+	{ 73, 463 },
+	{ 105, 297 },
+	{ 105, 299 },
+	{ 105, 301 },
+	{ 105, 303 },
+	{ 105, 305 },
+	{ 105, 464 },
+	{ 74, 308 },
+	{ 106, 309 },
+	{ 75, 310 },
+	{ 75, 488 },
+	{ 107, 311 },
+	{ 107, 489 },
+	{ 76, 313 },
+	{ 76, 315 },
+	{ 76, 317 },
+	{ 76, 319 },
+	{ 108, 314 },
+	{ 108, 316 },
+	{ 108, 318 },
+	{ 108, 320 },
+	{ 77, 209 },
+	{ 77, 325 },
+	{ 77, 327 },
+	{ 109, 241 },
+	{ 109, 326 },
+	{ 109, 328 },
+	{ 109, 329 },
+	{ 78, 213 },
+	{ 78, 216 },
+	{ 78, 332 },
+	{ 78, 334 },
+	{ 78, 465 },
+	{ 78, 490 },
+	{ 110, 245 },
+	{ 110, 248 },
+	{ 110, 333 },
+	{ 110, 335 },
+	{ 110, 466 },
+	{ 110, 491 },
+	{ 82, 340 },
+	{ 82, 342 },
+	{ 82, 344 },
+	{ 114, 341 },
+	{ 114, 343 },
+	{ 114, 345 },
+	{ 83, 348 },
+	{ 83, 350 },
+	{ 115, 349 },
+	{ 115, 351 },
+	{ 84, 354 },
+	{ 84, 356 },
+	{ 116, 355 },
+	{ 116, 357 },
+	{ 85, 360 },
+	{ 85, 362 },
+	{ 85, 364 },
+	{ 85, 366 },
+	{ 85, 370 },
+	{ 85, 467 },
+	{ 117, 361 },
+	{ 117, 363 },
+	{ 117, 365 },
+	{ 117, 367 },
+	{ 117, 371 },
+	{ 117, 468 },
+	{ 87, 372 },
+	{ 119, 373 },
+	{ 89, 221 },
+	{ 89, 374 },
+	{ 121, 253 },
+	{ 121, 375 },
 };
-charconvert iso8859_9[] = {
- /* 0 */ 0,/*<tdbgcolor="C0C0C0"><fontface="Arial"color="000000"><b>ISO/IEC10646-1:2000CharacterName</b></font>*/
- 1,
- 2,
- 3,
- 4,
- 5,
- 6,
- 7,
- 8,
- 9,
- 10,
- 11,
- 12,
- 13,
- 14,
- 15,
- 16,
- 17,
- 18,
- 19,
- 20,
- 21,
- 22,
- 23,
- 24,
- 25,
- 26,
- 27,
- 28,
- 29,
- 30,
- 31,
- /* 32 */ 32,/*SPACE*/
- /* 33 */ 33,/*EXCLAMATIONMARK*/
- /* 34 */ 34,/*QUOTATIONMARK*/
- /* 35 */ 35,/*NUMBERSIGN*/
- /* 36 */ 36,/*DOLLARSIGN*/
- /* 37 */ 37,/*PERCENTSIGN*/
- /* 38 */ 38,/*AMPERSAND*/
- /* 39 */ 39,/*APOSTROPHE*/
- /* 40 */ 40,/*LEFTPARENTHESIS*/
- /* 41 */ 41,/*RIGHTPARENTHESIS*/
- /* 42 */ 42,/*ASTERISK*/
- /* 43 */ 43,/*PLUSSIGN*/
- /* 44 */ 44,/*COMMA*/
- /* 45 */ 45,/*HYPHEN-MINUS*/
- /* 46 */ 46,/*FULLSTOP*/
- /* 47 */ 47,/*SOLIDUS*/
- /* 48 */ 48,/*DIGITZERO*/
- /* 49 */ 49,/*DIGITONE*/
- /* 50 */ 50,/*DIGITTWO*/
- /* 51 */ 51,/*DIGITTHREE*/
- /* 52 */ 52,/*DIGITFOUR*/
- /* 53 */ 53,/*DIGITFIVE*/
- /* 54 */ 54,/*DIGITSIX*/
- /* 55 */ 55,/*DIGITSEVEN*/
- /* 56 */ 56,/*DIGITEIGHT*/
- /* 57 */ 57,/*DIGITNINE*/
- /* 58 */ 58,/*COLON*/
- /* 59 */ 59,/*SEMICOLON*/
- /* 60 */ 60,/*LESS-THANSIGN*/
- /* 61 */ 61,/*EQUALSSIGN*/
- /* 62 */ 62,/*GREATER-THANSIGN*/
- /* 63 */ 63,/*QUESTIONMARK*/
- /* 64 */ 64,/*COMMERCIALAT*/
- /* 65 */ 65,/*LATINCAPITALLETTERA*/
- /* 66 */ 66,/*LATINCAPITALLETTERB*/
- /* 67 */ 67,/*LATINCAPITALLETTERC*/
- /* 68 */ 68,/*LATINCAPITALLETTERD*/
- /* 69 */ 69,/*LATINCAPITALLETTERE*/
- /* 70 */ 70,/*LATINCAPITALLETTERF*/
- /* 71 */ 71,/*LATINCAPITALLETTERG*/
- /* 72 */ 72,/*LATINCAPITALLETTERH*/
- /* 73 */ 73,/*LATINCAPITALLETTERI*/
- /* 74 */ 74,/*LATINCAPITALLETTERJ*/
- /* 75 */ 75,/*LATINCAPITALLETTERK*/
- /* 76 */ 76,/*LATINCAPITALLETTERL*/
- /* 77 */ 77,/*LATINCAPITALLETTERM*/
- /* 78 */ 78,/*LATINCAPITALLETTERN*/
- /* 79 */ 79,/*LATINCAPITALLETTERO*/
- /* 80 */ 80,/*LATINCAPITALLETTERP*/
- /* 81 */ 81,/*LATINCAPITALLETTERQ*/
- /* 82 */ 82,/*LATINCAPITALLETTERR*/
- /* 83 */ 83,/*LATINCAPITALLETTERS*/
- /* 84 */ 84,/*LATINCAPITALLETTERT*/
- /* 85 */ 85,/*LATINCAPITALLETTERU*/
- /* 86 */ 86,/*LATINCAPITALLETTERV*/
- /* 87 */ 87,/*LATINCAPITALLETTERW*/
- /* 88 */ 88,/*LATINCAPITALLETTERX*/
- /* 89 */ 89,/*LATINCAPITALLETTERY*/
- /* 90 */ 90,/*LATINCAPITALLETTERZ*/
- /* 91 */ 91,/*LEFTSQUAREBRACKET*/
- /* 92 */ 92,/*REVERSESOLIDUS*/
- /* 93 */ 93,/*RIGHTSQUAREBRACKET*/
- /* 94 */ 94,/*CIRCUMFLEXACCENT*/
- /* 95 */ 95,/*LOWLINE*/
- /* 96 */ 96,/*GRAVEACCENT*/
- /* 97 */ 97,/*LATINSMALLLETTERA*/
- /* 98 */ 98,/*LATINSMALLLETTERB*/
- /* 99 */ 99,/*LATINSMALLLETTERC*/
- /* 100 */ 100,/*LATINSMALLLETTERD*/
- /* 101 */ 101,/*LATINSMALLLETTERE*/
- /* 102 */ 102,/*LATINSMALLLETTERF*/
- /* 103 */ 103,/*LATINSMALLLETTERG*/
- /* 104 */ 104,/*LATINSMALLLETTERH*/
- /* 105 */ 105,/*LATINSMALLLETTERI*/
- /* 106 */ 106,/*LATINSMALLLETTERJ*/
- /* 107 */ 107,/*LATINSMALLLETTERK*/
- /* 108 */ 108,/*LATINSMALLLETTERL*/
- /* 109 */ 109,/*LATINSMALLLETTERM*/
- /* 110 */ 110,/*LATINSMALLLETTERN*/
- /* 111 */ 111,/*LATINSMALLLETTERO*/
- /* 112 */ 112,/*LATINSMALLLETTERP*/
- /* 113 */ 113,/*LATINSMALLLETTERQ*/
- /* 114 */ 114,/*LATINSMALLLETTERR*/
- /* 115 */ 115,/*LATINSMALLLETTERS*/
- /* 116 */ 116,/*LATINSMALLLETTERT*/
- /* 117 */ 117,/*LATINSMALLLETTERU*/
- /* 118 */ 118,/*LATINSMALLLETTERV*/
- /* 119 */ 119,/*LATINSMALLLETTERW*/
- /* 120 */ 120,/*LATINSMALLLETTERX*/
- /* 121 */ 121,/*LATINSMALLLETTERY*/
- /* 122 */ 122,/*LATINSMALLLETTERZ*/
- /* 123 */ 123,/*LEFTCURLYBRACKET*/
- /* 124 */ 124,/*VERTICALLINE*/
- /* 125 */ 125,/*RIGHTCURLYBRACKET*/
- /* 126 */ 126,/*TILDE*/
- 127,
- 128,
- 129,
- 130,
- 131,
- 132,
- 133,
- 134,
- 135,
- 136,
- 137,
- 138,
- 139,
- 140,
- 141,
- 142,
- 143,
- 144,
- 145,
- 146,
- 147,
- 148,
- 149,
- 150,
- 151,
- 152,
- 153,
- 154,
- 155,
- 156,
- 157,
- 158,
- 159,
- /* 160 */ 160,/*NO-BREAKSPACE*/
- /* 161 */ 161,/*INVERTEDEXCLAMATIONMARK*/
- /* 162 */ 162,/*CENTSIGN*/
- /* 163 */ 163,/*POUNDSIGN*/
- /* 164 */ 164,/*CURRENCYSIGN*/
- /* 165 */ 165,/*YENSIGN*/
- /* 166 */ 166,/*BROKENBAR*/
- /* 167 */ 167,/*SECTIONSIGN*/
- /* 168 */ 168,/*DIAERESIS*/
- /* 169 */ 169,/*COPYRIGHTSIGN*/
- /* 170 */ 170,/*FEMININEORDINALINDICATOR*/
- /* 171 */ 171,/*LEFT-POINTINGDOUBLEANGLEQUOTATIONMARK*/
- /* 172 */ 172,/*NOTSIGN*/
- /* 173 */ 173,/*SOFTHYPHEN*/
- /* 174 */ 174,/*REGISTEREDSIGN*/
- /* 175 */ 175,/*MACRON*/
- /* 176 */ 176,/*DEGREESIGN*/
- /* 177 */ 177,/*PLUS-MINUSSIGN*/
- /* 178 */ 178,/*SUPERSCRIPTTWO*/
- /* 179 */ 179,/*SUPERSCRIPTTHREE*/
- /* 180 */ 180,/*ACUTEACCENT*/
- /* 181 */ 181,/*MICROSIGN*/
- /* 182 */ 182,/*PILCROWSIGN*/
- /* 183 */ 183,/*MIDDLEDOT*/
- /* 184 */ 184,/*CEDILLA*/
- /* 185 */ 185,/*SUPERSCRIPTONE*/
- /* 186 */ 186,/*MASCULINEORDINALINDICATOR*/
- /* 187 */ 187,/*RIGHT-POINTINGDOUBLEANGLEQUOTATIONMARK*/
- /* 188 */ 188,/*VULGARFRACTIONONEQUARTER*/
- /* 189 */ 189,/*VULGARFRACTIONONEHALF*/
- /* 190 */ 190,/*VULGARFRACTIONTHREEQUARTERS*/
- /* 191 */ 191,/*INVERTEDQUESTIONMARK*/
- /* 192 */ 192,/*LATINCAPITALLETTERAWITHGRAVE*/
- /* 193 */ 193,/*LATINCAPITALLETTERAWITHACUTE*/
- /* 194 */ 194,/*LATINCAPITALLETTERAWITHCIRCUMFLEX*/
- /* 195 */ 195,/*LATINCAPITALLETTERAWITHTILDE*/
- /* 196 */ 196,/*LATINCAPITALLETTERAWITHDIAERESIS*/
- /* 197 */ 197,/*LATINCAPITALLETTERAWITHRINGABOVE*/
- /* 198 */ 198,/*LATINCAPITALLETTERAE*/
- /* 199 */ 199,/*LATINCAPITALLETTERCWITHCEDILLA*/
- /* 200 */ 200,/*LATINCAPITALLETTEREWITHGRAVE*/
- /* 201 */ 201,/*LATINCAPITALLETTEREWITHACUTE*/
- /* 202 */ 202,/*LATINCAPITALLETTEREWITHCIRCUMFLEX*/
- /* 203 */ 203,/*LATINCAPITALLETTEREWITHDIAERESIS*/
- /* 204 */ 204,/*LATINCAPITALLETTERIWITHGRAVE*/
- /* 205 */ 205,/*LATINCAPITALLETTERIWITHACUTE*/
- /* 206 */ 206,/*LATINCAPITALLETTERIWITHCIRCUMFLEX*/
- /* 207 */ 207,/*LATINCAPITALLETTERIWITHDIAERESIS*/
- /* 208 */ 286,/*LATINCAPITALLETTERGWITHBREVE*/
- /* 209 */ 209,/*LATINCAPITALLETTERNWITHTILDE*/
- /* 210 */ 210,/*LATINCAPITALLETTEROWITHGRAVE*/
- /* 211 */ 211,/*LATINCAPITALLETTEROWITHACUTE*/
- /* 212 */ 212,/*LATINCAPITALLETTEROWITHCIRCUMFLEX*/
- /* 213 */ 213,/*LATINCAPITALLETTEROWITHTILDE*/
- /* 214 */ 214,/*LATINCAPITALLETTEROWITHDIAERESIS*/
- /* 215 */ 215,/*MULTIPLICATIONSIGN*/
- /* 216 */ 216,/*LATINCAPITALLETTEROWITHSTROKE*/
- /* 217 */ 217,/*LATINCAPITALLETTERUWITHGRAVE*/
- /* 218 */ 218,/*LATINCAPITALLETTERUWITHACUTE*/
- /* 219 */ 219,/*LATINCAPITALLETTERUWITHCIRCUMFLEX*/
- /* 220 */ 220,/*LATINCAPITALLETTERUWITHDIAERESIS*/
- /* 221 */ 304,/*LATINCAPITALLETTERIWITHDOTABOVE*/
- /* 222 */ 350,/*LATINCAPITALLETTERSWITHCEDILLA*/
- /* 223 */ 223,/*LATINSMALLLETTERSHARPS*/
- /* 224 */ 224,/*LATINSMALLLETTERAWITHGRAVE*/
- /* 225 */ 225,/*LATINSMALLLETTERAWITHACUTE*/
- /* 226 */ 226,/*LATINSMALLLETTERAWITHCIRCUMFLEX*/
- /* 227 */ 227,/*LATINSMALLLETTERAWITHTILDE*/
- /* 228 */ 228,/*LATINSMALLLETTERAWITHDIAERESIS*/
- /* 229 */ 229,/*LATINSMALLLETTERAWITHRINGABOVE*/
- /* 230 */ 230,/*LATINSMALLLETTERAE*/
- /* 231 */ 231,/*LATINSMALLLETTERCWITHCEDILLA*/
- /* 232 */ 232,/*LATINSMALLLETTEREWITHGRAVE*/
- /* 233 */ 233,/*LATINSMALLLETTEREWITHACUTE*/
- /* 234 */ 234,/*LATINSMALLLETTEREWITHCIRCUMFLEX*/
- /* 235 */ 235,/*LATINSMALLLETTEREWITHDIAERESIS*/
- /* 236 */ 236,/*LATINSMALLLETTERIWITHGRAVE*/
- /* 237 */ 237,/*LATINSMALLLETTERIWITHACUTE*/
- /* 238 */ 238,/*LATINSMALLLETTERIWITHCIRCUMFLEX*/
- /* 239 */ 239,/*LATINSMALLLETTERIWITHDIAERESIS*/
- /* 240 */ 287,/*LATINSMALLLETTERGWITHBREVE*/
- /* 241 */ 241,/*LATINSMALLLETTERNWITHTILDE*/
- /* 242 */ 242,/*LATINSMALLLETTEROWITHGRAVE*/
- /* 243 */ 243,/*LATINSMALLLETTEROWITHACUTE*/
- /* 244 */ 244,/*LATINSMALLLETTEROWITHCIRCUMFLEX*/
- /* 245 */ 245,/*LATINSMALLLETTEROWITHTILDE*/
- /* 246 */ 246,/*LATINSMALLLETTEROWITHDIAERESIS*/
- /* 247 */ 247,/*DIVISIONSIGN*/
- /* 248 */ 248,/*LATINSMALLLETTEROWITHSTROKE*/
- /* 249 */ 249,/*LATINSMALLLETTERUWITHGRAVE*/
- /* 250 */ 250,/*LATINSMALLLETTERUWITHACUTE*/
- /* 251 */ 251,/*LATINSMALLLETTERUWITHCIRCUMFLEX*/
- /* 252 */ 252,/*LATINSMALLLETTERUWITHDIAERESIS*/
- /* 253 */ 305,/*LATINSMALLLETTERDOTLESSI*/
- /* 254 */ 351,/*LATINSMALLLETTERSWITHCEDILLA*/
- /* 255 */ 255/*LATINSMALLLETTERYWITHDIAERESIS*/
+static convert_t koi8_r[] = {
+	{ 0, 0 },
+	{ 1, 1 },
+	{ 2, 2 },
+	{ 3, 3 },
+	{ 4, 4 },
+	{ 5, 5 },
+	{ 6, 6 },
+	{ 7, 7 },
+	{ 8, 8 },
+	{ 9, 9 },
+	{ 10, 10 },
+	{ 11, 11 },
+	{ 12, 12 },
+	{ 13, 13 },
+	{ 14, 14 },
+	{ 15, 15 },
+	{ 16, 16 },
+	{ 17, 17 },
+	{ 18, 18 },
+	{ 19, 19 },
+	{ 20, 20 },
+	{ 21, 21 },
+	{ 22, 22 },
+	{ 23, 23 },
+	{ 24, 24 },
+	{ 25, 25 },
+	{ 26, 26 },
+	{ 27, 27 },
+	{ 28, 28 },
+	{ 29, 29 },
+	{ 30, 30 },
+	{ 31, 31 },
+	{ 32, 32 },
+	{ 33, 33 },
+	{ 34, 34 },
+	{ 35, 35 },
+	{ 36, 36 },
+	{ 37, 37 },
+	{ 38, 38 },
+	{ 39, 39 },
+	{ 40, 40 },
+	{ 41, 41 },
+	{ 42, 42 },
+	{ 43, 43 },
+	{ 44, 44 },
+	{ 45, 45 },
+	{ 46, 46 },
+	{ 47, 47 },
+	{ 48, 48 },
+	{ 49, 49 },
+	{ 50, 50 },
+	{ 51, 51 },
+	{ 52, 52 },
+	{ 53, 53 },
+	{ 54, 54 },
+	{ 55, 55 },
+	{ 56, 56 },
+	{ 57, 57 },
+	{ 58, 58 },
+	{ 59, 59 },
+	{ 60, 60 },
+	{ 61, 61 },
+	{ 62, 62 },
+	{ 63, 63 },
+	{ 64, 64 },
+	{ 65, 65 },
+	{ 66, 66 },
+	{ 67, 67 },
+	{ 68, 68 },
+	{ 69, 69 },
+	{ 70, 70 },
+	{ 71, 71 },
+	{ 72, 72 },
+	{ 73, 73 },
+	{ 74, 74 },
+	{ 75, 75 },
+	{ 76, 76 },
+	{ 77, 77 },
+	{ 78, 78 },
+	{ 79, 79 },
+	{ 80, 80 },
+	{ 81, 81 },
+	{ 82, 82 },
+	{ 83, 83 },
+	{ 84, 84 },
+	{ 85, 85 },
+	{ 86, 86 },
+	{ 87, 87 },
+	{ 88, 88 },
+	{ 89, 89 },
+	{ 90, 90 },
+	{ 91, 91 },
+	{ 92, 92 },
+	{ 93, 93 },
+	{ 94, 94 },
+	{ 95, 95 },
+	{ 96, 96 },
+	{ 97, 97 },
+	{ 98, 98 },
+	{ 99, 99 },
+	{ 100, 100 },
+	{ 101, 101 },
+	{ 102, 102 },
+	{ 103, 103 },
+	{ 104, 104 },
+	{ 105, 105 },
+	{ 106, 106 },
+	{ 107, 107 },
+	{ 108, 108 },
+	{ 109, 109 },
+	{ 110, 110 },
+	{ 111, 111 },
+	{ 112, 112 },
+	{ 113, 113 },
+	{ 114, 114 },
+	{ 115, 115 },
+	{ 116, 116 },
+	{ 117, 117 },
+	{ 118, 118 },
+	{ 119, 119 },
+	{ 120, 120 },
+	{ 121, 121 },
+	{ 122, 122 },
+	{ 123, 123 },
+	{ 124, 124 },
+	{ 125, 125 },
+	{ 126, 126 },
+	{ 127, 127 },
+	{ 128, 9472 },
+	{ 129, 9474 },
+	{ 130, 9484 },
+	{ 131, 9488 },
+	{ 132, 9492 },
+	{ 133, 9496 },
+	{ 134, 9500 },
+	{ 135, 9508 },
+	{ 136, 9516 },
+	{ 137, 9524 },
+	{ 138, 9532 },
+	{ 139, 9600 },
+	{ 140, 9604 },
+	{ 141, 9608 },
+	{ 142, 9612 },
+	{ 143, 9616 },
+	{ 144, 9617 },
+	{ 145, 9618 },
+	{ 146, 9619 },
+	{ 147, 8992 },
+	{ 148, 9632 },
+	{ 149, 8729 },
+	{ 150, 8730 },
+	{ 151, 8776 },
+	{ 152, 8804 },
+	{ 153, 8805 },
+	{ 154, 160 },
+	{ 155, 8993 },
+	{ 156, 176 },
+	{ 157, 178 },
+	{ 158, 183 },
+	{ 159, 247 },
+	{ 160, 9552 },
+	{ 161, 9553 },
+	{ 162, 9554 },
+	{ 163, 1105 },
+	{ 164, 9555 },
+	{ 165, 9556 },
+	{ 166, 9557 },
+	{ 167, 9558 },
+	{ 168, 9559 },
+	{ 169, 9560 },
+	{ 170, 9561 },
+	{ 171, 9562 },
+	{ 172, 9563 },
+	{ 173, 9564 },
+	{ 174, 9565 },
+	{ 175, 9566 },
+	{ 176, 9567 },
+	{ 177, 9568 },
+	{ 178, 9569 },
+	{ 179, 1025 },
+	{ 180, 9570 },
+	{ 181, 9571 },
+	{ 182, 9572 },
+	{ 183, 9573 },
+	{ 184, 9574 },
+	{ 185, 9575 },
+	{ 186, 9576 },
+	{ 187, 9577 },
+	{ 188, 9578 },
+	{ 189, 9579 },
+	{ 190, 9580 },
+	{ 191, 169 },
+	{ 192, 1102 },
+	{ 193, 1072 },
+	{ 194, 1073 },
+	{ 195, 1094 },
+	{ 196, 1076 },
+	{ 197, 1077 },
+	{ 198, 1092 },
+	{ 199, 1075 },
+	{ 200, 1093 },
+	{ 201, 1080 },
+	{ 202, 1081 },
+	{ 203, 1082 },
+	{ 204, 1083 },
+	{ 205, 1084 },
+	{ 206, 1085 },
+	{ 207, 1086 },
+	{ 208, 1087 },
+	{ 209, 1103 },
+	{ 210, 1088 },
+	{ 211, 1089 },
+	{ 212, 1090 },
+	{ 213, 1091 },
+	{ 214, 1078 },
+	{ 215, 1074 },
+	{ 216, 1100 },
+	{ 217, 1099 },
+	{ 218, 1079 },
+	{ 219, 1096 },
+	{ 220, 1101 },
+	{ 221, 1097 },
+	{ 222, 1095 },
+	{ 223, 1098 },
+	{ 224, 1070 },
+	{ 225, 1040 },
+	{ 226, 1041 },
+	{ 227, 1062 },
+	{ 228, 1044 },
+	{ 229, 1045 },
+	{ 230, 1060 },
+	{ 231, 1043 },
+	{ 232, 1061 },
+	{ 233, 1048 },
+	{ 234, 1049 },
+	{ 235, 1050 },
+	{ 236, 1051 },
+	{ 237, 1052 },
+	{ 238, 1053 },
+	{ 239, 1054 },
+	{ 240, 1055 },
+	{ 241, 1071 },
+	{ 242, 1056 },
+	{ 243, 1057 },
+	{ 244, 1058 },
+	{ 245, 1059 },
+	{ 246, 1046 },
+	{ 247, 1042 },
+	{ 248, 1068 },
+	{ 249, 1067 },
+	{ 250, 1047 },
+	{ 251, 1064 },
+	{ 252, 1069 },
+	{ 253, 1065 },
+	{ 254, 1063 },
+	{ 255, 1066 },
+	{ 34, 8220 },
+	{ 34, 8221 },
+	{ 39, 8216 },
+	{ 39, 8217 },
+	{ 45, 8211 },
+	{ 45, 8212 },
+	{ 32, 8194 },
+	{ 32, 8195 },
+	{ 32, 8201 },
+	{ 65, 192 },
+	{ 65, 193 },
+	{ 65, 194 },
+	{ 65, 195 },
+	{ 65, 196 },
+	{ 65, 197 },
+	{ 65, 256 },
+	{ 65, 258 },
+	{ 65, 260 },
+	{ 65, 461 },
+	{ 97, 224 },
+	{ 97, 225 },
+	{ 97, 226 },
+	{ 97, 227 },
+	{ 97, 228 },
+	{ 97, 229 },
+	{ 97, 257 },
+	{ 97, 259 },
+	{ 97, 261 },
+	{ 97, 462 },
+	{ 67, 199 },
+	{ 67, 262 },
+	{ 67, 264 },
+	{ 67, 266 },
+	{ 67, 268 },
+	{ 99, 231 },
+	{ 99, 263 },
+	{ 99, 265 },
+	{ 99, 267 },
+	{ 99, 269 },
+	{ 68, 270 },
+	{ 100, 271 },
+	{ 69, 200 },
+	{ 69, 201 },
+	{ 69, 202 },
+	{ 69, 203 },
+	{ 69, 274 },
+	{ 69, 276 },
+	{ 69, 278 },
+	{ 69, 280 },
+	{ 69, 282 },
+	{ 101, 232 },
+	{ 101, 233 },
+	{ 101, 234 },
+	{ 101, 235 },
+	{ 101, 275 },
+	{ 101, 277 },
+	{ 101, 279 },
+	{ 101, 281 },
+	{ 101, 283 },
+	{ 71, 284 },
+	{ 71, 286 },
+	{ 71, 288 },
+	{ 71, 290 },
+	{ 71, 486 },
+	{ 71, 500 },
+	{ 103, 285 },
+	{ 103, 287 },
+	{ 103, 289 },
+	{ 103, 291 },
+	{ 103, 487 },
+	{ 103, 501 },
+	{ 72, 292 },
+	{ 104, 293 },
+	{ 73, 204 },
+	{ 73, 205 },
+	{ 73, 206 },
+	{ 73, 207 },
+	{ 73, 296 },
+	{ 73, 298 },
+	{ 73, 300 },
+	{ 73, 302 },
+	{ 73, 304 },
+	{ 73, 463 },
+	{ 105, 236 },
+	{ 105, 237 },
+	{ 105, 238 },
+	{ 105, 239 },
+	{ 105, 297 },
+	{ 105, 299 },
+	{ 105, 301 },
+	{ 105, 303 },
+	{ 105, 305 },
+	{ 105, 464 },
+	{ 74, 308 },
+	{ 106, 309 },
+	{ 75, 310 },
+	{ 75, 488 },
+	{ 107, 311 },
+	{ 107, 489 },
+	{ 76, 313 },
+	{ 76, 315 },
+	{ 76, 317 },
+	{ 76, 319 },
+	{ 76, 321 },
+	{ 108, 314 },
+	{ 108, 316 },
+	{ 108, 318 },
+	{ 108, 320 },
+	{ 108, 322 },
+	{ 77, 209 },
+	{ 77, 323 },
+	{ 77, 325 },
+	{ 77, 327 },
+	{ 109, 241 },
+	{ 109, 324 },
+	{ 109, 326 },
+	{ 109, 328 },
+	{ 109, 329 },
+	{ 78, 210 },
+	{ 78, 211 },
+	{ 78, 212 },
+	{ 78, 213 },
+	{ 78, 214 },
+	{ 78, 216 },
+	{ 78, 332 },
+	{ 78, 334 },
+	{ 78, 336 },
+	{ 78, 465 },
+	{ 78, 490 },
+	{ 110, 242 },
+	{ 110, 243 },
+	{ 110, 244 },
+	{ 110, 245 },
+	{ 110, 246 },
+	{ 110, 248 },
+	{ 110, 333 },
+	{ 110, 335 },
+	{ 110, 337 },
+	{ 110, 466 },
+	{ 110, 491 },
+	{ 82, 340 },
+	{ 82, 342 },
+	{ 82, 344 },
+	{ 114, 341 },
+	{ 114, 343 },
+	{ 114, 345 },
+	{ 83, 346 },
+	{ 83, 348 },
+	{ 83, 350 },
+	{ 83, 352 },
+	{ 115, 347 },
+	{ 115, 349 },
+	{ 115, 351 },
+	{ 115, 353 },
+	{ 84, 354 },
+	{ 84, 356 },
+	{ 116, 355 },
+	{ 116, 357 },
+	{ 85, 217 },
+	{ 85, 218 },
+	{ 85, 219 },
+	{ 85, 220 },
+	{ 85, 360 },
+	{ 85, 362 },
+	{ 85, 364 },
+	{ 85, 366 },
+	{ 85, 368 },
+	{ 85, 370 },
+	{ 85, 467 },
+	{ 117, 249 },
+	{ 117, 250 },
+	{ 117, 251 },
+	{ 117, 252 },
+	{ 117, 361 },
+	{ 117, 363 },
+	{ 117, 365 },
+	{ 117, 367 },
+	{ 117, 369 },
+	{ 117, 371 },
+	{ 117, 468 },
+	{ 87, 372 },
+	{ 119, 373 },
+	{ 89, 221 },
+	{ 89, 374 },
+	{ 89, 376 },
+	{ 121, 253 },
+	{ 121, 255 },
+	{ 121, 375 },
+	{ 90, 377 },
+	{ 90, 379 },
+	{ 90, 381 },
+	{ 122, 378 },
+	{ 122, 380 },
+	{ 122, 382 },
 };
-charconvert koi8_r[] = {
- /* 0 */ 0,/*<tdbgcolor="C0C0C0"><fontface="Arial"color="000000"><b>ISO/IEC10646-1:2000CharacterName</b></font>*/
- 1,
- 2,
- 3,
- 4,
- 5,
- 6,
- 7,
- 8,
- 9,
- 10,
- 11,
- 12,
- 13,
- 14,
- 15,
- 16,
- 17,
- 18,
- 19,
- 20,
- 21,
- 22,
- 23,
- 24,
- 25,
- 26,
- 27,
- 28,
- 29,
- 30,
- 31,
- /* 32 */ 32,/*SPACE*/
- /* 33 */ 33,/*EXCLAMATIONMARK*/
- /* 34 */ 34,/*QUOTATIONMARK*/
- /* 35 */ 35,/*NUMBERSIGN*/
- /* 36 */ 36,/*DOLLARSIGN*/
- /* 37 */ 37,/*PERCENTSIGN*/
- /* 38 */ 38,/*AMPERSAND*/
- /* 39 */ 39,/*APOSTROPHE*/
- /* 40 */ 40,/*LEFTPARENTHESIS*/
- /* 41 */ 41,/*RIGHTPARENTHESIS*/
- /* 42 */ 42,/*ASTERISK*/
- /* 43 */ 43,/*PLUSSIGN*/
- /* 44 */ 44,/*COMMA*/
- /* 45 */ 45,/*HYPHEN-MINUS*/
- /* 46 */ 46,/*FULLSTOP*/
- /* 47 */ 47,/*SOLIDUS*/
- /* 48 */ 48,/*DIGITZERO*/
- /* 49 */ 49,/*DIGITONE*/
- /* 50 */ 50,/*DIGITTWO*/
- /* 51 */ 51,/*DIGITTHREE*/
- /* 52 */ 52,/*DIGITFOUR*/
- /* 53 */ 53,/*DIGITFIVE*/
- /* 54 */ 54,/*DIGITSIX*/
- /* 55 */ 55,/*DIGITSEVEN*/
- /* 56 */ 56,/*DIGITEIGHT*/
- /* 57 */ 57,/*DIGITNINE*/
- /* 58 */ 58,/*COLON*/
- /* 59 */ 59,/*SEMICOLON*/
- /* 60 */ 60,/*LESS-THANSIGN*/
- /* 61 */ 61,/*EQUALSSIGN*/
- /* 62 */ 62,/*GREATER-THANSIGN*/
- /* 63 */ 63,/*QUESTIONMARK*/
- /* 64 */ 64,/*COMMERCIALAT*/
- /* 65 */ 65,/*LATINCAPITALLETTERA*/
- /* 66 */ 66,/*LATINCAPITALLETTERB*/
- /* 67 */ 67,/*LATINCAPITALLETTERC*/
- /* 68 */ 68,/*LATINCAPITALLETTERD*/
- /* 69 */ 69,/*LATINCAPITALLETTERE*/
- /* 70 */ 70,/*LATINCAPITALLETTERF*/
- /* 71 */ 71,/*LATINCAPITALLETTERG*/
- /* 72 */ 72,/*LATINCAPITALLETTERH*/
- /* 73 */ 73,/*LATINCAPITALLETTERI*/
- /* 74 */ 74,/*LATINCAPITALLETTERJ*/
- /* 75 */ 75,/*LATINCAPITALLETTERK*/
- /* 76 */ 76,/*LATINCAPITALLETTERL*/
- /* 77 */ 77,/*LATINCAPITALLETTERM*/
- /* 78 */ 78,/*LATINCAPITALLETTERN*/
- /* 79 */ 79,/*LATINCAPITALLETTERO*/
- /* 80 */ 80,/*LATINCAPITALLETTERP*/
- /* 81 */ 81,/*LATINCAPITALLETTERQ*/
- /* 82 */ 82,/*LATINCAPITALLETTERR*/
- /* 83 */ 83,/*LATINCAPITALLETTERS*/
- /* 84 */ 84,/*LATINCAPITALLETTERT*/
- /* 85 */ 85,/*LATINCAPITALLETTERU*/
- /* 86 */ 86,/*LATINCAPITALLETTERV*/
- /* 87 */ 87,/*LATINCAPITALLETTERW*/
- /* 88 */ 88,/*LATINCAPITALLETTERX*/
- /* 89 */ 89,/*LATINCAPITALLETTERY*/
- /* 90 */ 90,/*LATINCAPITALLETTERZ*/
- /* 91 */ 91,/*LEFTSQUAREBRACKET*/
- /* 92 */ 92,/*REVERSESOLIDUS*/
- /* 93 */ 93,/*RIGHTSQUAREBRACKET*/
- /* 94 */ 94,/*CIRCUMFLEXACCENT*/
- /* 95 */ 95,/*LOWLINE*/
- /* 96 */ 96,/*GRAVEACCENT*/
- /* 97 */ 97,/*LATINSMALLLETTERA*/
- /* 98 */ 98,/*LATINSMALLLETTERB*/
- /* 99 */ 99,/*LATINSMALLLETTERC*/
- /* 100 */ 100,/*LATINSMALLLETTERD*/
- /* 101 */ 101,/*LATINSMALLLETTERE*/
- /* 102 */ 102,/*LATINSMALLLETTERF*/
- /* 103 */ 103,/*LATINSMALLLETTERG*/
- /* 104 */ 104,/*LATINSMALLLETTERH*/
- /* 105 */ 105,/*LATINSMALLLETTERI*/
- /* 106 */ 106,/*LATINSMALLLETTERJ*/
- /* 107 */ 107,/*LATINSMALLLETTERK*/
- /* 108 */ 108,/*LATINSMALLLETTERL*/
- /* 109 */ 109,/*LATINSMALLLETTERM*/
- /* 110 */ 110,/*LATINSMALLLETTERN*/
- /* 111 */ 111,/*LATINSMALLLETTERO*/
- /* 112 */ 112,/*LATINSMALLLETTERP*/
- /* 113 */ 113,/*LATINSMALLLETTERQ*/
- /* 114 */ 114,/*LATINSMALLLETTERR*/
- /* 115 */ 115,/*LATINSMALLLETTERS*/
- /* 116 */ 116,/*LATINSMALLLETTERT*/
- /* 117 */ 117,/*LATINSMALLLETTERU*/
- /* 118 */ 118,/*LATINSMALLLETTERV*/
- /* 119 */ 119,/*LATINSMALLLETTERW*/
- /* 120 */ 120,/*LATINSMALLLETTERX*/
- /* 121 */ 121,/*LATINSMALLLETTERY*/
- /* 122 */ 122,/*LATINSMALLLETTERZ*/
- /* 123 */ 123,/*LEFTCURLYBRACKET*/
- /* 124 */ 124,/*VERTICALLINE*/
- /* 125 */ 125,/*RIGHTCURLYBRACKET*/
- /* 126 */ 126,/*TILDE*/
- 127,
- /* 128 */ 9472,/*BOXDRAWINGSLIGHTHORIZONTAL*/
- /* 129 */ 9474,/*BOXDRAWINGSLIGHTVERTICAL*/
- /* 130 */ 9484,/*BOXDRAWINGSLIGHTDOWNANDRIGHT*/
- /* 131 */ 9488,/*BOXDRAWINGSLIGHTDOWNANDLEFT*/
- /* 132 */ 9492,/*BOXDRAWINGSLIGHTUPANDRIGHT*/
- /* 133 */ 9496,/*BOXDRAWINGSLIGHTUPANDLEFT*/
- /* 134 */ 9500,/*BOXDRAWINGSLIGHTVERTICALANDRIGHT*/
- /* 135 */ 9508,/*BOXDRAWINGSLIGHTVERTICALANDLEFT*/
- /* 136 */ 9516,/*BOXDRAWINGSLIGHTDOWNANDHORIZONTAL*/
- /* 137 */ 9524,/*BOXDRAWINGSLIGHTUPANDHORIZONTAL*/
- /* 138 */ 9532,/*BOXDRAWINGSLIGHTVERTICALANDHORIZONTAL*/
- /* 139 */ 9600,/*UPPERHALFBLOCK*/
- /* 140 */ 9604,/*LOWERHALFBLOCK*/
- /* 141 */ 9608,/*FULLBLOCK*/
- /* 142 */ 9612,/*LEFTHALFBLOCK*/
- /* 143 */ 9616,/*RIGHTHALFBLOCK*/
- /* 144 */ 9617,/*LIGHTSHADE*/
- /* 145 */ 9618,/*MEDIUMSHADE*/
- /* 146 */ 9619,/*DARKSHADE*/
- /* 147 */ 8992,/*TOPHALFINTEGRAL*/
- /* 148 */ 9632,/*BLACKSQUARE*/
- /* 149 */ 8729,/*BULLETOPERATOR*/
- /* 150 */ 8730,/*SQUAREROOT*/
- /* 151 */ 8776,/*ALMOSTEQUALTO*/
- /* 152 */ 8804,/*LESS-THANOREQUALTO*/
- /* 153 */ 8805,/*GREATER-THANOREQUALTO*/
- /* 154 */ 160,/*NO-BREAKSPACE*/
- /* 155 */ 8993,/*BOTTOMHALFINTEGRAL*/
- /* 156 */ 176,/*DEGREESIGN*/
- /* 157 */ 178,/*SUPERSCRIPTTWO*/
- /* 158 */ 183,/*MIDDLEDOT*/
- /* 159 */ 247,/*DIVISIONSIGN*/
- /* 160 */ 9552,/*BOXDRAWINGSDOUBLEHORIZONTAL*/
- /* 161 */ 9553,/*BOXDRAWINGSDOUBLEVERTICAL*/
- /* 162 */ 9554,/*BOXDRAWINGSDOWNSINGLEANDRIGHTDOUBLE*/
- /* 163 */ 1105,/*CYRILLICSMALLLETTERIO*/
- /* 164 */ 9555,/*BOXDRAWINGSDOWNDOUBLEANDRIGHTSINGLE*/
- /* 165 */ 9556,/*BOXDRAWINGSDOUBLEDOWNANDRIGHT*/
- /* 166 */ 9557,/*BOXDRAWINGSDOWNSINGLEANDLEFTDOUBLE*/
- /* 167 */ 9558,/*BOXDRAWINGSDOWNDOUBLEANDLEFTSINGLE*/
- /* 168 */ 9559,/*BOXDRAWINGSDOUBLEDOWNANDLEFT*/
- /* 169 */ 9560,/*BOXDRAWINGSUPSINGLEANDRIGHTDOUBLE*/
- /* 170 */ 9561,/*BOXDRAWINGSUPDOUBLEANDRIGHTSINGLE*/
- /* 171 */ 9562,/*BOXDRAWINGSDOUBLEUPANDRIGHT*/
- /* 172 */ 9563,/*BOXDRAWINGSUPSINGLEANDLEFTDOUBLE*/
- /* 173 */ 9564,/*BOXDRAWINGSUPDOUBLEANDLEFTSINGLE*/
- /* 174 */ 9565,/*BOXDRAWINGSDOUBLEUPANDLEFT*/
- /* 175 */ 9566,/*BOXDRAWINGSVERTICALSINGLEANDRIGHTDOUBLE*/
- /* 176 */ 9567,/*BOXDRAWINGSVERTICALDOUBLEANDRIGHTSINGLE*/
- /* 177 */ 9568,/*BOXDRAWINGSDOUBLEVERTICALANDRIGHT*/
- /* 178 */ 9569,/*BOXDRAWINGSVERTICALSINGLEANDLEFTDOUBLE*/
- /* 179 */ 1025,/*CYRILLICCAPITALLETTERIO*/
- /* 180 */ 9570,/*BOXDRAWINGSVERTICALDOUBLEANDLEFTSINGLE*/
- /* 181 */ 9571,/*BOXDRAWINGSDOUBLEVERTICALANDLEFT*/
- /* 182 */ 9572,/*BOXDRAWINGSDOWNSINGLEANDHORIZONTALDOUBLE*/
- /* 183 */ 9573,/*BOXDRAWINGSDOWNDOUBLEANDHORIZONTALSINGLE*/
- /* 184 */ 9574,/*BOXDRAWINGSDOUBLEDOWNANDHORIZONTAL*/
- /* 185 */ 9575,/*BOXDRAWINGSUPSINGLEANDHORIZONTALDOUBLE*/
- /* 186 */ 9576,/*BOXDRAWINGSUPDOUBLEANDHORIZONTALSINGLE*/
- /* 187 */ 9577,/*BOXDRAWINGSDOUBLEUPANDHORIZONTAL*/
- /* 188 */ 9578,/*BOXDRAWINGSVERTICALSINGLEANDHORIZONTALDOUBLE*/
- /* 189 */ 9579,/*BOXDRAWINGSVERTICALDOUBLEANDHORIZONTALSINGLE*/
- /* 190 */ 9580,/*BOXDRAWINGSDOUBLEVERTICALANDHORIZONTAL*/
- /* 191 */ 169,/*COPYRIGHTSIGN*/
- /* 192 */ 1102,/*CYRILLICSMALLLETTERYU*/
- /* 193 */ 1072,/*CYRILLICSMALLLETTERA*/
- /* 194 */ 1073,/*CYRILLICSMALLLETTERBE*/
- /* 195 */ 1094,/*CYRILLICSMALLLETTERTSE*/
- /* 196 */ 1076,/*CYRILLICSMALLLETTERDE*/
- /* 197 */ 1077,/*CYRILLICSMALLLETTERIE*/
- /* 198 */ 1092,/*CYRILLICSMALLLETTEREF*/
- /* 199 */ 1075,/*CYRILLICSMALLLETTERGHE*/
- /* 200 */ 1093,/*CYRILLICSMALLLETTERHA*/
- /* 201 */ 1080,/*CYRILLICSMALLLETTERI*/
- /* 202 */ 1081,/*CYRILLICSMALLLETTERSHORTI*/
- /* 203 */ 1082,/*CYRILLICSMALLLETTERKA*/
- /* 204 */ 1083,/*CYRILLICSMALLLETTEREL*/
- /* 205 */ 1084,/*CYRILLICSMALLLETTEREM*/
- /* 206 */ 1085,/*CYRILLICSMALLLETTEREN*/
- /* 207 */ 1086,/*CYRILLICSMALLLETTERO*/
- /* 208 */ 1087,/*CYRILLICSMALLLETTERPE*/
- /* 209 */ 1103,/*CYRILLICSMALLLETTERYA*/
- /* 210 */ 1088,/*CYRILLICSMALLLETTERER*/
- /* 211 */ 1089,/*CYRILLICSMALLLETTERES*/
- /* 212 */ 1090,/*CYRILLICSMALLLETTERTE*/
- /* 213 */ 1091,/*CYRILLICSMALLLETTERU*/
- /* 214 */ 1078,/*CYRILLICSMALLLETTERZHE*/
- /* 215 */ 1074,/*CYRILLICSMALLLETTERVE*/
- /* 216 */ 1100,/*CYRILLICSMALLLETTERSOFTSIGN*/
- /* 217 */ 1099,/*CYRILLICSMALLLETTERYERU*/
- /* 218 */ 1079,/*CYRILLICSMALLLETTERZE*/
- /* 219 */ 1096,/*CYRILLICSMALLLETTERSHA*/
- /* 220 */ 1101,/*CYRILLICSMALLLETTERE*/
- /* 221 */ 1097,/*CYRILLICSMALLLETTERSHCHA*/
- /* 222 */ 1095,/*CYRILLICSMALLLETTERCHE*/
- /* 223 */ 1098,/*CYRILLICSMALLLETTERHARDSIGN*/
- /* 224 */ 1070,/*CYRILLICCAPITALLETTERYU*/
- /* 225 */ 1040,/*CYRILLICCAPITALLETTERA*/
- /* 226 */ 1041,/*CYRILLICCAPITALLETTERBE*/
- /* 227 */ 1062,/*CYRILLICCAPITALLETTERTSE*/
- /* 228 */ 1044,/*CYRILLICCAPITALLETTERDE*/
- /* 229 */ 1045,/*CYRILLICCAPITALLETTERIE*/
- /* 230 */ 1060,/*CYRILLICCAPITALLETTEREF*/
- /* 231 */ 1043,/*CYRILLICCAPITALLETTERGHE*/
- /* 232 */ 1061,/*CYRILLICCAPITALLETTERHA*/
- /* 233 */ 1048,/*CYRILLICCAPITALLETTERI*/
- /* 234 */ 1049,/*CYRILLICCAPITALLETTERSHORTI*/
- /* 235 */ 1050,/*CYRILLICCAPITALLETTERKA*/
- /* 236 */ 1051,/*CYRILLICCAPITALLETTEREL*/
- /* 237 */ 1052,/*CYRILLICCAPITALLETTEREM*/
- /* 238 */ 1053,/*CYRILLICCAPITALLETTEREN*/
- /* 239 */ 1054,/*CYRILLICCAPITALLETTERO*/
- /* 240 */ 1055,/*CYRILLICCAPITALLETTERPE*/
- /* 241 */ 1071,/*CYRILLICCAPITALLETTERYA*/
- /* 242 */ 1056,/*CYRILLICCAPITALLETTERER*/
- /* 243 */ 1057,/*CYRILLICCAPITALLETTERES*/
- /* 244 */ 1058,/*CYRILLICCAPITALLETTERTE*/
- /* 245 */ 1059,/*CYRILLICCAPITALLETTERU*/
- /* 246 */ 1046,/*CYRILLICCAPITALLETTERZHE*/
- /* 247 */ 1042,/*CYRILLICCAPITALLETTERVE*/
- /* 248 */ 1068,/*CYRILLICCAPITALLETTERSOFTSIGN*/
- /* 249 */ 1067,/*CYRILLICCAPITALLETTERYERU*/
- /* 250 */ 1047,/*CYRILLICCAPITALLETTERZE*/
- /* 251 */ 1064,/*CYRILLICCAPITALLETTERSHA*/
- /* 252 */ 1069,/*CYRILLICCAPITALLETTERE*/
- /* 253 */ 1065,/*CYRILLICCAPITALLETTERSHCHA*/
- /* 254 */ 1063,/*CYRILLICCAPITALLETTERCHE*/
- /* 255 */ 1066/*CYRILLICCAPITALLETTERHARDSIGN*/
+static convert_t koi8_u[] = {
+	{ 0, 0 },
+	{ 1, 1 },
+	{ 2, 2 },
+	{ 3, 3 },
+	{ 4, 4 },
+	{ 5, 5 },
+	{ 6, 6 },
+	{ 7, 7 },
+	{ 8, 8 },
+	{ 9, 9 },
+	{ 10, 10 },
+	{ 11, 11 },
+	{ 12, 12 },
+	{ 13, 13 },
+	{ 14, 14 },
+	{ 15, 15 },
+	{ 16, 16 },
+	{ 17, 17 },
+	{ 18, 18 },
+	{ 19, 19 },
+	{ 20, 20 },
+	{ 21, 21 },
+	{ 22, 22 },
+	{ 23, 23 },
+	{ 24, 24 },
+	{ 25, 25 },
+	{ 26, 26 },
+	{ 27, 27 },
+	{ 28, 28 },
+	{ 29, 29 },
+	{ 30, 30 },
+	{ 31, 31 },
+	{ 32, 32 },
+	{ 33, 33 },
+	{ 34, 34 },
+	{ 35, 35 },
+	{ 36, 36 },
+	{ 37, 37 },
+	{ 38, 38 },
+	{ 39, 39 },
+	{ 40, 40 },
+	{ 41, 41 },
+	{ 42, 42 },
+	{ 43, 43 },
+	{ 44, 44 },
+	{ 45, 45 },
+	{ 46, 46 },
+	{ 47, 47 },
+	{ 48, 48 },
+	{ 49, 49 },
+	{ 50, 50 },
+	{ 51, 51 },
+	{ 52, 52 },
+	{ 53, 53 },
+	{ 54, 54 },
+	{ 55, 55 },
+	{ 56, 56 },
+	{ 57, 57 },
+	{ 58, 58 },
+	{ 59, 59 },
+	{ 60, 60 },
+	{ 61, 61 },
+	{ 62, 62 },
+	{ 63, 63 },
+	{ 64, 64 },
+	{ 65, 65 },
+	{ 66, 66 },
+	{ 67, 67 },
+	{ 68, 68 },
+	{ 69, 69 },
+	{ 70, 70 },
+	{ 71, 71 },
+	{ 72, 72 },
+	{ 73, 73 },
+	{ 74, 74 },
+	{ 75, 75 },
+	{ 76, 76 },
+	{ 77, 77 },
+	{ 78, 78 },
+	{ 79, 79 },
+	{ 80, 80 },
+	{ 81, 81 },
+	{ 82, 82 },
+	{ 83, 83 },
+	{ 84, 84 },
+	{ 85, 85 },
+	{ 86, 86 },
+	{ 87, 87 },
+	{ 88, 88 },
+	{ 89, 89 },
+	{ 90, 90 },
+	{ 91, 91 },
+	{ 92, 92 },
+	{ 93, 93 },
+	{ 94, 94 },
+	{ 95, 95 },
+	{ 96, 96 },
+	{ 97, 97 },
+	{ 98, 98 },
+	{ 99, 99 },
+	{ 100, 100 },
+	{ 101, 101 },
+	{ 102, 102 },
+	{ 103, 103 },
+	{ 104, 104 },
+	{ 105, 105 },
+	{ 106, 106 },
+	{ 107, 107 },
+	{ 108, 108 },
+	{ 109, 109 },
+	{ 110, 110 },
+	{ 111, 111 },
+	{ 112, 112 },
+	{ 113, 113 },
+	{ 114, 114 },
+	{ 115, 115 },
+	{ 116, 116 },
+	{ 117, 117 },
+	{ 118, 118 },
+	{ 119, 119 },
+	{ 120, 120 },
+	{ 121, 121 },
+	{ 122, 122 },
+	{ 123, 123 },
+	{ 124, 124 },
+	{ 125, 125 },
+	{ 126, 126 },
+	{ 127, 127 },
+	{ 128, 9472 },
+	{ 129, 9474 },
+	{ 130, 9484 },
+	{ 131, 9488 },
+	{ 132, 9492 },
+	{ 133, 9496 },
+	{ 134, 9500 },
+	{ 135, 9508 },
+	{ 136, 9516 },
+	{ 137, 9524 },
+	{ 138, 9532 },
+	{ 139, 9600 },
+	{ 140, 9604 },
+	{ 141, 9608 },
+	{ 142, 9612 },
+	{ 143, 9616 },
+	{ 144, 9617 },
+	{ 145, 9618 },
+	{ 146, 9619 },
+	{ 147, 8992 },
+	{ 148, 9632 },
+	{ 149, 8729 },
+	{ 150, 8730 },
+	{ 151, 8776 },
+	{ 152, 8804 },
+	{ 153, 8805 },
+	{ 154, 160 },
+	{ 155, 8993 },
+	{ 156, 176 },
+	{ 157, 178 },
+	{ 158, 183 },
+	{ 159, 247 },
+	{ 160, 9552 },
+	{ 161, 9553 },
+	{ 162, 9554 },
+	{ 163, 1105 },
+	{ 164, 1108 },
+	{ 165, 9556 },
+	{ 166, 1110 },
+	{ 167, 1111 },
+	{ 168, 9559 },
+	{ 169, 9560 },
+	{ 170, 9561 },
+	{ 171, 9562 },
+	{ 172, 9563 },
+	{ 173, 1169 },
+	{ 174, 9565 },
+	{ 175, 9566 },
+	{ 176, 9567 },
+	{ 177, 9568 },
+	{ 178, 9569 },
+	{ 179, 1025 },
+	{ 180, 1028 },
+	{ 181, 9571 },
+	{ 182, 1030 },
+	{ 183, 1031 },
+	{ 184, 9574 },
+	{ 185, 9575 },
+	{ 186, 9576 },
+	{ 187, 9577 },
+	{ 188, 9578 },
+	{ 189, 1168 },
+	{ 190, 9580 },
+	{ 191, 169 },
+	{ 192, 1102 },
+	{ 193, 1072 },
+	{ 194, 1073 },
+	{ 195, 1094 },
+	{ 196, 1076 },
+	{ 197, 1077 },
+	{ 198, 1092 },
+	{ 199, 1075 },
+	{ 200, 1093 },
+	{ 201, 1080 },
+	{ 202, 1081 },
+	{ 203, 1082 },
+	{ 204, 1083 },
+	{ 205, 1084 },
+	{ 206, 1085 },
+	{ 207, 1086 },
+	{ 208, 1087 },
+	{ 209, 1103 },
+	{ 210, 1088 },
+	{ 211, 1089 },
+	{ 212, 1090 },
+	{ 213, 1091 },
+	{ 214, 1078 },
+	{ 215, 1074 },
+	{ 216, 1100 },
+	{ 217, 1099 },
+	{ 218, 1079 },
+	{ 219, 1096 },
+	{ 220, 1101 },
+	{ 221, 1097 },
+	{ 222, 1095 },
+	{ 223, 1098 },
+	{ 224, 1070 },
+	{ 225, 1040 },
+	{ 226, 1041 },
+	{ 227, 1062 },
+	{ 228, 1044 },
+	{ 229, 1045 },
+	{ 230, 1060 },
+	{ 231, 1043 },
+	{ 232, 1061 },
+	{ 233, 1048 },
+	{ 234, 1049 },
+	{ 235, 1050 },
+	{ 236, 1051 },
+	{ 237, 1052 },
+	{ 238, 1053 },
+	{ 239, 1054 },
+	{ 240, 1055 },
+	{ 241, 1071 },
+	{ 242, 1056 },
+	{ 243, 1057 },
+	{ 244, 1058 },
+	{ 245, 1059 },
+	{ 246, 1046 },
+	{ 247, 1042 },
+	{ 248, 1068 },
+	{ 249, 1067 },
+	{ 250, 1047 },
+	{ 251, 1064 },
+	{ 252, 1069 },
+	{ 253, 1065 },
+	{ 254, 1063 },
+	{ 255, 1066 },
+	{ 34, 8220 },
+	{ 34, 8221 },
+	{ 39, 8216 },
+	{ 39, 8217 },
+	{ 45, 8211 },
+	{ 45, 8212 },
+	{ 32, 8194 },
+	{ 32, 8195 },
+	{ 32, 8201 },
+	{ 65, 192 },
+	{ 65, 193 },
+	{ 65, 194 },
+	{ 65, 195 },
+	{ 65, 196 },
+	{ 65, 197 },
+	{ 65, 256 },
+	{ 65, 258 },
+	{ 65, 260 },
+	{ 65, 461 },
+	{ 97, 224 },
+	{ 97, 225 },
+	{ 97, 226 },
+	{ 97, 227 },
+	{ 97, 228 },
+	{ 97, 229 },
+	{ 97, 257 },
+	{ 97, 259 },
+	{ 97, 261 },
+	{ 97, 462 },
+	{ 67, 199 },
+	{ 67, 262 },
+	{ 67, 264 },
+	{ 67, 266 },
+	{ 67, 268 },
+	{ 99, 231 },
+	{ 99, 263 },
+	{ 99, 265 },
+	{ 99, 267 },
+	{ 99, 269 },
+	{ 68, 270 },
+	{ 100, 271 },
+	{ 69, 200 },
+	{ 69, 201 },
+	{ 69, 202 },
+	{ 69, 203 },
+	{ 69, 274 },
+	{ 69, 276 },
+	{ 69, 278 },
+	{ 69, 280 },
+	{ 69, 282 },
+	{ 101, 232 },
+	{ 101, 233 },
+	{ 101, 234 },
+	{ 101, 235 },
+	{ 101, 275 },
+	{ 101, 277 },
+	{ 101, 279 },
+	{ 101, 281 },
+	{ 101, 283 },
+	{ 71, 284 },
+	{ 71, 286 },
+	{ 71, 288 },
+	{ 71, 290 },
+	{ 71, 486 },
+	{ 71, 500 },
+	{ 103, 285 },
+	{ 103, 287 },
+	{ 103, 289 },
+	{ 103, 291 },
+	{ 103, 487 },
+	{ 103, 501 },
+	{ 72, 292 },
+	{ 104, 293 },
+	{ 73, 204 },
+	{ 73, 205 },
+	{ 73, 206 },
+	{ 73, 207 },
+	{ 73, 296 },
+	{ 73, 298 },
+	{ 73, 300 },
+	{ 73, 302 },
+	{ 73, 304 },
+	{ 73, 463 },
+	{ 105, 236 },
+	{ 105, 237 },
+	{ 105, 238 },
+	{ 105, 239 },
+	{ 105, 297 },
+	{ 105, 299 },
+	{ 105, 301 },
+	{ 105, 303 },
+	{ 105, 305 },
+	{ 105, 464 },
+	{ 74, 308 },
+	{ 106, 309 },
+	{ 75, 310 },
+	{ 75, 488 },
+	{ 107, 311 },
+	{ 107, 489 },
+	{ 76, 313 },
+	{ 76, 315 },
+	{ 76, 317 },
+	{ 76, 319 },
+	{ 76, 321 },
+	{ 108, 314 },
+	{ 108, 316 },
+	{ 108, 318 },
+	{ 108, 320 },
+	{ 108, 322 },
+	{ 77, 209 },
+	{ 77, 323 },
+	{ 77, 325 },
+	{ 77, 327 },
+	{ 109, 241 },
+	{ 109, 324 },
+	{ 109, 326 },
+	{ 109, 328 },
+	{ 109, 329 },
+	{ 78, 210 },
+	{ 78, 211 },
+	{ 78, 212 },
+	{ 78, 213 },
+	{ 78, 214 },
+	{ 78, 216 },
+	{ 78, 332 },
+	{ 78, 334 },
+	{ 78, 336 },
+	{ 78, 465 },
+	{ 78, 490 },
+	{ 110, 242 },
+	{ 110, 243 },
+	{ 110, 244 },
+	{ 110, 245 },
+	{ 110, 246 },
+	{ 110, 248 },
+	{ 110, 333 },
+	{ 110, 335 },
+	{ 110, 337 },
+	{ 110, 466 },
+	{ 110, 491 },
+	{ 82, 340 },
+	{ 82, 342 },
+	{ 82, 344 },
+	{ 114, 341 },
+	{ 114, 343 },
+	{ 114, 345 },
+	{ 83, 346 },
+	{ 83, 348 },
+	{ 83, 350 },
+	{ 83, 352 },
+	{ 115, 347 },
+	{ 115, 349 },
+	{ 115, 351 },
+	{ 115, 353 },
+	{ 84, 354 },
+	{ 84, 356 },
+	{ 116, 355 },
+	{ 116, 357 },
+	{ 85, 217 },
+	{ 85, 218 },
+	{ 85, 219 },
+	{ 85, 220 },
+	{ 85, 360 },
+	{ 85, 362 },
+	{ 85, 364 },
+	{ 85, 366 },
+	{ 85, 368 },
+	{ 85, 370 },
+	{ 85, 467 },
+	{ 117, 249 },
+	{ 117, 250 },
+	{ 117, 251 },
+	{ 117, 252 },
+	{ 117, 361 },
+	{ 117, 363 },
+	{ 117, 365 },
+	{ 117, 367 },
+	{ 117, 369 },
+	{ 117, 371 },
+	{ 117, 468 },
+	{ 87, 372 },
+	{ 119, 373 },
+	{ 89, 221 },
+	{ 89, 374 },
+	{ 89, 376 },
+	{ 121, 253 },
+	{ 121, 255 },
+	{ 121, 375 },
+	{ 90, 377 },
+	{ 90, 379 },
+	{ 90, 381 },
+	{ 122, 378 },
+	{ 122, 380 },
+	{ 122, 382 },
 };
-charconvert mslinedr[] = {
- /* 0 */ 0,/*<tdbgcolor="C0C0C0"><fontface="Arial"color="000000"><b>ISO/IEC10646-1:2000CharacterName</b></font>*/
- 1,
- 2,
- 3,
- 4,
- 5,
- 6,
- 7,
- 8,
- 9,
- 10,
- 11,
- 12,
- 13,
- 14,
- 15,
- 16,
- 17,
- 18,
- 19,
- 20,
- 21,
- 22,
- 23,
- 24,
- 25,
- 26,
- 27,
- 28,
- 29,
- 30,
- 31,
- 32,
- 33,
- 34,
- 35,
- 36,
- 37,
- 38,
- 39,
- 40,
- 41,
- 42,
- 43,
- 44,
- 45,
- 46,
- 47,
- 48,
- 49,
- 50,
- 51,
- 52,
- 53,
- 54,
- 55,
- 56,
- 57,
- 58,
- 59,
- 60,
- 61,
- 62,
- 63,
- 64,
- 65,
- 66,
- 67,
- 68,
- 69,
- 70,
- 71,
- 72,
- 73,
- 74,
- 75,
- 76,
- 77,
- 78,
- 79,
- 80,
- 81,
- 82,
- 83,
- 84,
- 85,
- 86,
- 87,
- 88,
- 89,
- 90,
- 91,
- 92,
- 93,
- 94,
- 95,
- 96,
- 97,
- 98,
- 99,
- 100,
- 101,
- 102,
- 103,
- 104,
- 105,
- 106,
- 107,
- 108,
- 109,
- 110,
- 111,
- 112,
- 113,
- 114,
- 115,
- 116,
- 117,
- 118,
- 119,
- 120,
- 121,
- 122,
- 123,
- 124,
- 125,
- 126,
- 127,
- 128,
- 129,
- 130,
- 131,
- 132,
- 133,
- 134,
- 135,
- 136,
- 137,
- 138,
- 139,
- 140,
- 141,
- 142,
- 143,
- 144,
- 145,
- 146,
- 147,
- 148,
- 149,
- 150,
- 151,
- 152,
- 153,
- 154,
- 155,
- 156,
- 157,
- 158,
- 159,
- 160,
- 161,
- 162,
- 163,
- 164,
- 165,
- 166,
- 167,
- 168,
- 169,
- 170,
- 171,
- 172,
- 173,
- 174,
- 175,
- /* 176 */ 9639,/*SQUAREWITHUPPERLEFTTOLOWERRIGHTFILL*/
- /* 177 */ 9638,/*SQUAREWITHORTHOGONALCROSSHATCHFILL*/
- /* 178 */ 9640,/*SQUAREWITHUPPERRIGHTTOLOWERLEFTFILL*/
- /* 179 */ 9474,/*BOXDRAWINGSLIGHTVERTICAL*/
- /* 180 */ 9508,/*BOXDRAWINGSLIGHTVERTICALANDLEFT*/
- /* 181 */ 9569,/*BOXDRAWINGSVERTICALSINGLEANDLEFTDOUBLE*/
- /* 182 */ 9570,/*BOXDRAWINGSVERTICALDOUBLEANDLEFTSINGLE*/
- /* 183 */ 9558,/*BOXDRAWINGSDOWNDOUBLEANDLEFTSINGLE*/
- /* 184 */ 9557,/*BOXDRAWINGSDOWNSINGLEANDLEFTDOUBLE*/
- /* 185 */ 9571,/*BOXDRAWINGSDOUBLEVERTICALANDLEFT*/
- /* 186 */ 9553,/*BOXDRAWINGSDOUBLEVERTICAL*/
- /* 187 */ 9559,/*BOXDRAWINGSDOUBLEDOWNANDLEFT*/
- /* 188 */ 9565,/*BOXDRAWINGSDOUBLEUPANDLEFT*/
- /* 189 */ 9564,/*BOXDRAWINGSUPDOUBLEANDLEFTSINGLE*/
- /* 190 */ 9563,/*BOXDRAWINGSUPSINGLEANDLEFTDOUBLE*/
- /* 191 */ 9488,/*BOXDRAWINGSLIGHTDOWNANDLEFT*/
- /* 192 */ 9492,/*BOXDRAWINGSLIGHTUPANDRIGHT*/
- /* 193 */ 9524,/*BOXDRAWINGSLIGHTUPANDHORIZONTAL*/
- /* 194 */ 9516,/*BOXDRAWINGSLIGHTDOWNANDHORIZONTAL*/
- /* 195 */ 9500,/*BOXDRAWINGSLIGHTVERTICALANDRIGHT*/
- /* 196 */ 9472,/*BOXDRAWINGSLIGHTHORIZONTAL*/
- /* 197 */ 9532,/*BOXDRAWINGSLIGHTVERTICALANDHORIZONTAL*/
- /* 198 */ 9566,/*BOXDRAWINGSVERTICALSINGLEANDRIGHTDOUBLE*/
- /* 199 */ 9567,/*BOXDRAWINGSVERTICALDOUBLEANDRIGHTSINGLE*/
- /* 200 */ 9562,/*BOXDRAWINGSDOUBLEUPANDRIGHT*/
- /* 201 */ 9556,/*BOXDRAWINGSDOUBLEDOWNANDRIGHT*/
- /* 202 */ 9577,/*BOXDRAWINGSDOUBLEUPANDHORIZONTAL*/
- /* 203 */ 9574,/*BOXDRAWINGSDOUBLEDOWNANDHORIZONTAL*/
- /* 204 */ 9568,/*BOXDRAWINGSDOUBLEVERTICALANDRIGHT*/
- /* 205 */ 9552,/*BOXDRAWINGSDOUBLEHORIZONTAL*/
- /* 206 */ 9580,/*BOXDRAWINGSDOUBLEVERTICALANDHORIZONTAL*/
- /* 207 */ 9575,/*BOXDRAWINGSUPSINGLEANDHORIZONTALDOUBLE*/
- /* 208 */ 9576,/*BOXDRAWINGSUPDOUBLEANDHORIZONTALSINGLE*/
- /* 209 */ 9572,/*BOXDRAWINGSDOWNSINGLEANDHORIZONTALDOUBLE*/
- /* 210 */ 9573,/*BOXDRAWINGSDOWNDOUBLEANDHORIZONTALSINGLE*/
- /* 211 */ 9561,/*BOXDRAWINGSUPDOUBLEANDRIGHTSINGLE*/
- /* 212 */ 9560,/*BOXDRAWINGSUPSINGLEANDRIGHTDOUBLE*/
- /* 213 */ 9554,/*BOXDRAWINGSDOWNSINGLEANDRIGHTDOUBLE*/
- /* 214 */ 9555,/*BOXDRAWINGSDOWNDOUBLEANDRIGHTSINGLE*/
- /* 215 */ 9579,/*BOXDRAWINGSVERTICALDOUBLEANDHORIZONTALSINGLE*/
- /* 216 */ 9578,/*BOXDRAWINGSVERTICALSINGLEANDHORIZONTALDOUBLE*/
- /* 217 */ 9496,/*BOXDRAWINGSLIGHTUPANDLEFT*/
- /* 218 */ 9484,/*BOXDRAWINGSLIGHTDOWNANDRIGHT*/
- /* 219 */ 9608,/*FULLBLOCK*/
- /* 220 */ 9604,/*LOWERHALFBLOCK*/
- /* 221 */ 9612,/*LEFTHALFBLOCK*/
- /* 222 */ 9616,/*RIGHTHALFBLOCK*/
- /* 223 */ 9600,/*UPPERHALFBLOCK*/
- 224,
- 225,
- 226,
- 227,
- 228,
- 229,
- 230,
- 231,
- 232,
- 233,
- 234,
- 235,
- 236,
- 237,
- 238,
- 239,
- 240,
- 241,
- 242,
- 243,
- 244,
- 245,
- 246,
- 247,
- 248,
- 249,
- 250,
- 251,
- 252,
- 253,
- 254,
- 255
+static convert_t mslinedr[] = {
+	{ 0, 0 },
+	{ 1, 1 },
+	{ 2, 2 },
+	{ 3, 3 },
+	{ 4, 4 },
+	{ 5, 5 },
+	{ 6, 6 },
+	{ 7, 7 },
+	{ 8, 8 },
+	{ 9, 9 },
+	{ 10, 10 },
+	{ 11, 11 },
+	{ 12, 12 },
+	{ 13, 13 },
+	{ 14, 14 },
+	{ 15, 15 },
+	{ 16, 16 },
+	{ 17, 17 },
+	{ 18, 18 },
+	{ 19, 19 },
+	{ 20, 20 },
+	{ 21, 21 },
+	{ 22, 22 },
+	{ 23, 23 },
+	{ 24, 24 },
+	{ 25, 25 },
+	{ 26, 26 },
+	{ 27, 27 },
+	{ 28, 28 },
+	{ 29, 29 },
+	{ 30, 30 },
+	{ 31, 31 },
+	{ 32, 32 },
+	{ 33, 33 },
+	{ 34, 34 },
+	{ 35, 35 },
+	{ 36, 36 },
+	{ 37, 37 },
+	{ 38, 38 },
+	{ 39, 39 },
+	{ 40, 40 },
+	{ 41, 41 },
+	{ 42, 42 },
+	{ 43, 43 },
+	{ 44, 44 },
+	{ 45, 45 },
+	{ 46, 46 },
+	{ 47, 47 },
+	{ 48, 48 },
+	{ 49, 49 },
+	{ 50, 50 },
+	{ 51, 51 },
+	{ 52, 52 },
+	{ 53, 53 },
+	{ 54, 54 },
+	{ 55, 55 },
+	{ 56, 56 },
+	{ 57, 57 },
+	{ 58, 58 },
+	{ 59, 59 },
+	{ 60, 60 },
+	{ 61, 61 },
+	{ 62, 62 },
+	{ 63, 63 },
+	{ 64, 64 },
+	{ 65, 65 },
+	{ 66, 66 },
+	{ 67, 67 },
+	{ 68, 68 },
+	{ 69, 69 },
+	{ 70, 70 },
+	{ 71, 71 },
+	{ 72, 72 },
+	{ 73, 73 },
+	{ 74, 74 },
+	{ 75, 75 },
+	{ 76, 76 },
+	{ 77, 77 },
+	{ 78, 78 },
+	{ 79, 79 },
+	{ 80, 80 },
+	{ 81, 81 },
+	{ 82, 82 },
+	{ 83, 83 },
+	{ 84, 84 },
+	{ 85, 85 },
+	{ 86, 86 },
+	{ 87, 87 },
+	{ 88, 88 },
+	{ 89, 89 },
+	{ 90, 90 },
+	{ 91, 91 },
+	{ 92, 92 },
+	{ 93, 93 },
+	{ 94, 94 },
+	{ 95, 95 },
+	{ 96, 96 },
+	{ 97, 97 },
+	{ 98, 98 },
+	{ 99, 99 },
+	{ 100, 100 },
+	{ 101, 101 },
+	{ 102, 102 },
+	{ 103, 103 },
+	{ 104, 104 },
+	{ 105, 105 },
+	{ 106, 106 },
+	{ 107, 107 },
+	{ 108, 108 },
+	{ 109, 109 },
+	{ 110, 110 },
+	{ 111, 111 },
+	{ 112, 112 },
+	{ 113, 113 },
+	{ 114, 114 },
+	{ 115, 115 },
+	{ 116, 116 },
+	{ 117, 117 },
+	{ 118, 118 },
+	{ 119, 119 },
+	{ 120, 120 },
+	{ 121, 121 },
+	{ 122, 122 },
+	{ 123, 123 },
+	{ 124, 124 },
+	{ 125, 125 },
+	{ 126, 126 },
+	{ 127, 127 },
+	{ 128, 128 },
+	{ 129, 129 },
+	{ 130, 130 },
+	{ 131, 131 },
+	{ 132, 132 },
+	{ 133, 133 },
+	{ 134, 134 },
+	{ 135, 135 },
+	{ 136, 136 },
+	{ 137, 137 },
+	{ 138, 138 },
+	{ 139, 139 },
+	{ 140, 140 },
+	{ 141, 141 },
+	{ 142, 142 },
+	{ 143, 143 },
+	{ 144, 144 },
+	{ 145, 145 },
+	{ 146, 146 },
+	{ 147, 147 },
+	{ 148, 148 },
+	{ 149, 149 },
+	{ 150, 150 },
+	{ 151, 151 },
+	{ 152, 152 },
+	{ 153, 153 },
+	{ 154, 154 },
+	{ 155, 155 },
+	{ 156, 156 },
+	{ 157, 157 },
+	{ 158, 158 },
+	{ 159, 159 },
+	{ 160, 160 },
+	{ 161, 161 },
+	{ 162, 162 },
+	{ 163, 163 },
+	{ 164, 164 },
+	{ 165, 165 },
+	{ 166, 166 },
+	{ 167, 167 },
+	{ 168, 168 },
+	{ 169, 169 },
+	{ 170, 170 },
+	{ 171, 171 },
+	{ 172, 172 },
+	{ 173, 173 },
+	{ 174, 174 },
+	{ 175, 175 },
+	{ 176, 9639 },
+	{ 177, 9638 },
+	{ 178, 9640 },
+	{ 179, 9474 },
+	{ 180, 9508 },
+	{ 181, 9569 },
+	{ 182, 9570 },
+	{ 183, 9558 },
+	{ 184, 9557 },
+	{ 185, 9571 },
+	{ 186, 9553 },
+	{ 187, 9559 },
+	{ 188, 9565 },
+	{ 189, 9564 },
+	{ 190, 9563 },
+	{ 191, 9488 },
+	{ 192, 9492 },
+	{ 193, 9524 },
+	{ 194, 9516 },
+	{ 195, 9500 },
+	{ 196, 9472 },
+	{ 197, 9532 },
+	{ 198, 9566 },
+	{ 199, 9567 },
+	{ 200, 9562 },
+	{ 201, 9556 },
+	{ 202, 9577 },
+	{ 203, 9574 },
+	{ 204, 9568 },
+	{ 205, 9552 },
+	{ 206, 9580 },
+	{ 207, 9575 },
+	{ 208, 9576 },
+	{ 209, 9572 },
+	{ 210, 9573 },
+	{ 211, 9561 },
+	{ 212, 9560 },
+	{ 213, 9554 },
+	{ 214, 9555 },
+	{ 215, 9579 },
+	{ 216, 9578 },
+	{ 217, 9496 },
+	{ 218, 9484 },
+	{ 219, 9608 },
+	{ 220, 9604 },
+	{ 221, 9612 },
+	{ 222, 9616 },
+	{ 223, 9600 },
+	{ 224, 224 },
+	{ 225, 225 },
+	{ 226, 226 },
+	{ 227, 227 },
+	{ 228, 228 },
+	{ 229, 229 },
+	{ 230, 230 },
+	{ 231, 231 },
+	{ 232, 232 },
+	{ 233, 233 },
+	{ 234, 234 },
+	{ 235, 235 },
+	{ 236, 236 },
+	{ 237, 237 },
+	{ 238, 238 },
+	{ 239, 239 },
+	{ 240, 240 },
+	{ 241, 241 },
+	{ 242, 242 },
+	{ 243, 243 },
+	{ 244, 244 },
+	{ 245, 245 },
+	{ 246, 246 },
+	{ 247, 247 },
+	{ 248, 248 },
+	{ 249, 249 },
+	{ 250, 250 },
+	{ 251, 251 },
+	{ 252, 252 },
+	{ 253, 253 },
+	{ 254, 254 },
+	{ 255, 255 },
+	{ 34, 8220 },
+	{ 34, 8221 },
+	{ 39, 8216 },
+	{ 39, 8217 },
+	{ 45, 8211 },
+	{ 45, 8212 },
+	{ 32, 8194 },
+	{ 32, 8195 },
+	{ 32, 8201 },
+	{ 65, 192 },
+	{ 65, 193 },
+	{ 65, 194 },
+	{ 65, 195 },
+	{ 65, 196 },
+	{ 65, 197 },
+	{ 65, 256 },
+	{ 65, 258 },
+	{ 65, 260 },
+	{ 65, 461 },
+	{ 97, 257 },
+	{ 97, 259 },
+	{ 97, 261 },
+	{ 97, 462 },
+	{ 67, 199 },
+	{ 67, 262 },
+	{ 67, 264 },
+	{ 67, 266 },
+	{ 67, 268 },
+	{ 99, 263 },
+	{ 99, 265 },
+	{ 99, 267 },
+	{ 99, 269 },
+	{ 68, 270 },
+	{ 100, 271 },
+	{ 69, 200 },
+	{ 69, 201 },
+	{ 69, 202 },
+	{ 69, 203 },
+	{ 69, 274 },
+	{ 69, 276 },
+	{ 69, 278 },
+	{ 69, 280 },
+	{ 69, 282 },
+	{ 101, 275 },
+	{ 101, 277 },
+	{ 101, 279 },
+	{ 101, 281 },
+	{ 101, 283 },
+	{ 71, 284 },
+	{ 71, 286 },
+	{ 71, 288 },
+	{ 71, 290 },
+	{ 71, 486 },
+	{ 71, 500 },
+	{ 103, 285 },
+	{ 103, 287 },
+	{ 103, 289 },
+	{ 103, 291 },
+	{ 103, 487 },
+	{ 103, 501 },
+	{ 72, 292 },
+	{ 104, 293 },
+	{ 73, 204 },
+	{ 73, 205 },
+	{ 73, 206 },
+	{ 73, 207 },
+	{ 73, 296 },
+	{ 73, 298 },
+	{ 73, 300 },
+	{ 73, 302 },
+	{ 73, 304 },
+	{ 73, 463 },
+	{ 105, 297 },
+	{ 105, 299 },
+	{ 105, 301 },
+	{ 105, 303 },
+	{ 105, 305 },
+	{ 105, 464 },
+	{ 74, 308 },
+	{ 106, 309 },
+	{ 75, 310 },
+	{ 75, 488 },
+	{ 107, 311 },
+	{ 107, 489 },
+	{ 76, 313 },
+	{ 76, 315 },
+	{ 76, 317 },
+	{ 76, 319 },
+	{ 76, 321 },
+	{ 108, 314 },
+	{ 108, 316 },
+	{ 108, 318 },
+	{ 108, 320 },
+	{ 108, 322 },
+	{ 77, 209 },
+	{ 77, 323 },
+	{ 77, 325 },
+	{ 77, 327 },
+	{ 109, 324 },
+	{ 109, 326 },
+	{ 109, 328 },
+	{ 109, 329 },
+	{ 78, 210 },
+	{ 78, 211 },
+	{ 78, 212 },
+	{ 78, 213 },
+	{ 78, 214 },
+	{ 78, 216 },
+	{ 78, 332 },
+	{ 78, 334 },
+	{ 78, 336 },
+	{ 78, 465 },
+	{ 78, 490 },
+	{ 110, 333 },
+	{ 110, 335 },
+	{ 110, 337 },
+	{ 110, 466 },
+	{ 110, 491 },
+	{ 82, 340 },
+	{ 82, 342 },
+	{ 82, 344 },
+	{ 114, 341 },
+	{ 114, 343 },
+	{ 114, 345 },
+	{ 83, 346 },
+	{ 83, 348 },
+	{ 83, 350 },
+	{ 83, 352 },
+	{ 115, 347 },
+	{ 115, 349 },
+	{ 115, 351 },
+	{ 115, 353 },
+	{ 84, 354 },
+	{ 84, 356 },
+	{ 116, 355 },
+	{ 116, 357 },
+	{ 85, 217 },
+	{ 85, 218 },
+	{ 85, 219 },
+	{ 85, 220 },
+	{ 85, 360 },
+	{ 85, 362 },
+	{ 85, 364 },
+	{ 85, 366 },
+	{ 85, 368 },
+	{ 85, 370 },
+	{ 85, 467 },
+	{ 117, 361 },
+	{ 117, 363 },
+	{ 117, 365 },
+	{ 117, 367 },
+	{ 117, 369 },
+	{ 117, 371 },
+	{ 117, 468 },
+	{ 87, 372 },
+	{ 119, 373 },
+	{ 89, 221 },
+	{ 89, 374 },
+	{ 89, 376 },
+	{ 121, 375 },
+	{ 90, 377 },
+	{ 90, 379 },
+	{ 90, 381 },
+	{ 122, 378 },
+	{ 122, 380 },
+	{ 122, 382 },
 };
-charconvert nextstep[] = {
- /* 0 */ 0,/*<tdbgcolor="C0C0C0"><fontface="Arial"color="000000"><b>ISO/IEC10646-1:2000CharacterName</b></font>*/
- 1,
- 2,
- 3,
- 4,
- 5,
- 6,
- 7,
- 8,
- 9,
- 10,
- 11,
- 12,
- 13,
- 14,
- 15,
- 16,
- 17,
- 18,
- 19,
- 20,
- 21,
- 22,
- 23,
- 24,
- 25,
- 26,
- 27,
- 28,
- 29,
- 30,
- 31,
- /* 32 */ 32,/*SPACE*/
- /* 33 */ 33,/*EXCLAMATIONMARK*/
- /* 34 */ 34,/*QUOTATIONMARK*/
- /* 35 */ 35,/*NUMBERSIGN*/
- /* 36 */ 36,/*DOLLARSIGN*/
- /* 37 */ 37,/*PERCENTSIGN*/
- /* 38 */ 38,/*AMPERSAND*/
- /* 39 */ 39,/*APOSTROPHE*/
- /* 40 */ 40,/*LEFTPARENTHESIS*/
- /* 41 */ 41,/*RIGHTPARENTHESIS*/
- /* 42 */ 42,/*ASTERISK*/
- /* 43 */ 43,/*PLUSSIGN*/
- /* 44 */ 44,/*COMMA*/
- /* 45 */ 45,/*HYPHEN-MINUS*/
- /* 46 */ 46,/*FULLSTOP*/
- /* 47 */ 47,/*SOLIDUS*/
- /* 48 */ 48,/*DIGITZERO*/
- /* 49 */ 49,/*DIGITONE*/
- /* 50 */ 50,/*DIGITTWO*/
- /* 51 */ 51,/*DIGITTHREE*/
- /* 52 */ 52,/*DIGITFOUR*/
- /* 53 */ 53,/*DIGITFIVE*/
- /* 54 */ 54,/*DIGITSIX*/
- /* 55 */ 55,/*DIGITSEVEN*/
- /* 56 */ 56,/*DIGITEIGHT*/
- /* 57 */ 57,/*DIGITNINE*/
- /* 58 */ 58,/*COLON*/
- /* 59 */ 59,/*SEMICOLON*/
- /* 60 */ 60,/*LESS-THANSIGN*/
- /* 61 */ 61,/*EQUALSSIGN*/
- /* 62 */ 62,/*GREATER-THANSIGN*/
- /* 63 */ 63,/*QUESTIONMARK*/
- /* 64 */ 64,/*COMMERCIALAT*/
- /* 65 */ 65,/*LATINCAPITALLETTERA*/
- /* 66 */ 66,/*LATINCAPITALLETTERB*/
- /* 67 */ 67,/*LATINCAPITALLETTERC*/
- /* 68 */ 68,/*LATINCAPITALLETTERD*/
- /* 69 */ 69,/*LATINCAPITALLETTERE*/
- /* 70 */ 70,/*LATINCAPITALLETTERF*/
- /* 71 */ 71,/*LATINCAPITALLETTERG*/
- /* 72 */ 72,/*LATINCAPITALLETTERH*/
- /* 73 */ 73,/*LATINCAPITALLETTERI*/
- /* 74 */ 74,/*LATINCAPITALLETTERJ*/
- /* 75 */ 75,/*LATINCAPITALLETTERK*/
- /* 76 */ 76,/*LATINCAPITALLETTERL*/
- /* 77 */ 77,/*LATINCAPITALLETTERM*/
- /* 78 */ 78,/*LATINCAPITALLETTERN*/
- /* 79 */ 79,/*LATINCAPITALLETTERO*/
- /* 80 */ 80,/*LATINCAPITALLETTERP*/
- /* 81 */ 81,/*LATINCAPITALLETTERQ*/
- /* 82 */ 82,/*LATINCAPITALLETTERR*/
- /* 83 */ 83,/*LATINCAPITALLETTERS*/
- /* 84 */ 84,/*LATINCAPITALLETTERT*/
- /* 85 */ 85,/*LATINCAPITALLETTERU*/
- /* 86 */ 86,/*LATINCAPITALLETTERV*/
- /* 87 */ 87,/*LATINCAPITALLETTERW*/
- /* 88 */ 88,/*LATINCAPITALLETTERX*/
- /* 89 */ 89,/*LATINCAPITALLETTERY*/
- /* 90 */ 90,/*LATINCAPITALLETTERZ*/
- /* 91 */ 91,/*LEFTSQUAREBRACKET*/
- /* 92 */ 92,/*REVERSESOLIDUS*/
- /* 93 */ 93,/*RIGHTSQUAREBRACKET*/
- /* 94 */ 94,/*CIRCUMFLEXACCENT*/
- /* 95 */ 95,/*LOWLINE*/
- /* 96 */ 96,/*GRAVEACCENT*/
- /* 97 */ 97,/*LATINSMALLLETTERA*/
- /* 98 */ 98,/*LATINSMALLLETTERB*/
- /* 99 */ 99,/*LATINSMALLLETTERC*/
- /* 100 */ 100,/*LATINSMALLLETTERD*/
- /* 101 */ 101,/*LATINSMALLLETTERE*/
- /* 102 */ 102,/*LATINSMALLLETTERF*/
- /* 103 */ 103,/*LATINSMALLLETTERG*/
- /* 104 */ 104,/*LATINSMALLLETTERH*/
- /* 105 */ 105,/*LATINSMALLLETTERI*/
- /* 106 */ 106,/*LATINSMALLLETTERJ*/
- /* 107 */ 107,/*LATINSMALLLETTERK*/
- /* 108 */ 108,/*LATINSMALLLETTERL*/
- /* 109 */ 109,/*LATINSMALLLETTERM*/
- /* 110 */ 110,/*LATINSMALLLETTERN*/
- /* 111 */ 111,/*LATINSMALLLETTERO*/
- /* 112 */ 112,/*LATINSMALLLETTERP*/
- /* 113 */ 113,/*LATINSMALLLETTERQ*/
- /* 114 */ 114,/*LATINSMALLLETTERR*/
- /* 115 */ 115,/*LATINSMALLLETTERS*/
- /* 116 */ 116,/*LATINSMALLLETTERT*/
- /* 117 */ 117,/*LATINSMALLLETTERU*/
- /* 118 */ 118,/*LATINSMALLLETTERV*/
- /* 119 */ 119,/*LATINSMALLLETTERW*/
- /* 120 */ 120,/*LATINSMALLLETTERX*/
- /* 121 */ 121,/*LATINSMALLLETTERY*/
- /* 122 */ 122,/*LATINSMALLLETTERZ*/
- /* 123 */ 123,/*LEFTCURLYBRACKET*/
- /* 124 */ 124,/*VERTICALLINE*/
- /* 125 */ 125,/*RIGHTCURLYBRACKET*/
- /* 126 */ 126,/*TILDE*/
- 127,
- /* 128 */ 160,/*NO-BREAKSPACE*/
- /* 129 */ 192,/*LATINCAPITALLETTERAWITHGRAVE*/
- /* 130 */ 193,/*LATINCAPITALLETTERAWITHACUTE*/
- /* 131 */ 194,/*LATINCAPITALLETTERAWITHCIRCUMFLEX*/
- /* 132 */ 195,/*LATINCAPITALLETTERAWITHTILDE*/
- /* 133 */ 196,/*LATINCAPITALLETTERAWITHDIAERESIS*/
- /* 134 */ 197,/*LATINCAPITALLETTERAWITHRINGABOVE*/
- /* 135 */ 199,/*LATINCAPITALLETTERCWITHCEDILLA*/
- /* 136 */ 200,/*LATINCAPITALLETTEREWITHGRAVE*/
- /* 137 */ 201,/*LATINCAPITALLETTEREWITHACUTE*/
- /* 138 */ 202,/*LATINCAPITALLETTEREWITHCIRCUMFLEX*/
- /* 139 */ 203,/*LATINCAPITALLETTEREWITHDIAERESIS*/
- /* 140 */ 204,/*LATINCAPITALLETTERIWITHGRAVE*/
- /* 141 */ 205,/*LATINCAPITALLETTERIWITHACUTE*/
- /* 142 */ 206,/*LATINCAPITALLETTERIWITHCIRCUMFLEX*/
- /* 143 */ 207,/*LATINCAPITALLETTERIWITHDIAERESIS*/
- /* 144 */ 208,/*LATINCAPITALLETTERETH*/
- /* 145 */ 209,/*LATINCAPITALLETTERNWITHTILDE*/
- /* 146 */ 210,/*LATINCAPITALLETTEROWITHGRAVE*/
- /* 147 */ 211,/*LATINCAPITALLETTEROWITHACUTE*/
- /* 148 */ 212,/*LATINCAPITALLETTEROWITHCIRCUMFLEX*/
- /* 149 */ 213,/*LATINCAPITALLETTEROWITHTILDE*/
- /* 150 */ 214,/*LATINCAPITALLETTEROWITHDIAERESIS*/
- /* 151 */ 217,/*LATINCAPITALLETTERUWITHGRAVE*/
- /* 152 */ 218,/*LATINCAPITALLETTERUWITHACUTE*/
- /* 153 */ 219,/*LATINCAPITALLETTERUWITHCIRCUMFLEX*/
- /* 154 */ 220,/*LATINCAPITALLETTERUWITHDIAERESIS*/
- /* 155 */ 221,/*LATINCAPITALLETTERYWITHACUTE*/
- /* 156 */ 222,/*LATINCAPITALLETTERTHORN*/
- /* 157 */ 181,/*MICROSIGN*/
- /* 158 */ 215,/*MULTIPLICATIONSIGN*/
- /* 159 */ 247,/*DIVISIONSIGN*/
- /* 160 */ 169,/*COPYRIGHTSIGN*/
- /* 161 */ 161,/*INVERTEDEXCLAMATIONMARK*/
- /* 162 */ 162,/*CENTSIGN*/
- /* 163 */ 163,/*POUNDSIGN*/
- /* 164 */ 8260,/*FRACTIONSLASH*/
- /* 165 */ 165,/*YENSIGN*/
- /* 166 */ 402,/*LATINSMALLLETTERFWITHHOOK*/
- /* 167 */ 167,/*SECTIONSIGN*/
- /* 168 */ 164,/*CURRENCYSIGN*/
- 169,
- /* 170 */ 8220,/*LEFTDOUBLEQUOTATIONMARK*/
- /* 171 */ 171,/*LEFT-POINTINGDOUBLEANGLEQUOTATIONMARK*/
- /* 172 */ 8249,/*SINGLELEFT-POINTINGANGLEQUOTATIONMARK*/
- /* 173 */ 8250,/*SINGLERIGHT-POINTINGANGLEQUOTATIONMARK*/
- /* 174 */ 64257,/*LATINSMALLLIGATUREFI*/
- /* 175 */ 64258,/*LATINSMALLLIGATUREFL*/
- /* 176 */ 174,/*REGISTEREDSIGN*/
- /* 177 */ 8211,/*ENDASH*/
- /* 178 */ 8224,/*DAGGER*/
- /* 179 */ 8225,/*DOUBLEDAGGER*/
- /* 180 */ 183,/*MIDDLEDOT*/
- /* 181 */ 166,/*BROKENBAR*/
- /* 182 */ 182,/*PILCROWSIGN*/
- /* 183 */ 8729,/*BULLETOPERATOR*/
- /* 184 */ 8218,/*SINGLELOW-9QUOTATIONMARK*/
- /* 185 */ 8222,/*DOUBLELOW-9QUOTATIONMARK*/
- /* 186 */ 8221,/*RIGHTDOUBLEQUOTATIONMARK*/
- /* 187 */ 187,/*RIGHT-POINTINGDOUBLEANGLEQUOTATIONMARK*/
- /* 188 */ 8943,/*MIDLINEHORIZONTALELLIPSIS*/
- /* 189 */ 8240,/*PERMILLESIGN*/
- /* 190 */ 172,/*NOTSIGN*/
- /* 191 */ 191,/*INVERTEDQUESTIONMARK*/
- /* 192 */ 185,/*SUPERSCRIPTONE*/
- /* 193 */ 768,/*COMBININGGRAVEACCENT*/
- /* 194 */ 180,/*ACUTEACCENT*/
- /* 195 */ 770,/*COMBININGCIRCUMFLEXACCENT*/
- /* 196 */ 771,/*COMBININGTILDE*/
- /* 197 */ 175,/*MACRON*/
- /* 198 */ 728,/*BREVE*/
- /* 199 */ 729,/*DOTABOVE*/
- /* 200 */ 168,/*DIAERESIS*/
- /* 201 */ 178,/*SUPERSCRIPTTWO*/
- /* 202 */ 176,/*DEGREESIGN*/
- /* 203 */ 184,/*CEDILLA*/
- /* 204 */ 179,/*SUPERSCRIPTTHREE*/
- /* 205 */ 733,/*DOUBLEACUTEACCENT*/
- /* 206 */ 731,/*OGONEK*/
- /* 207 */ 711,/*CARON*/
- /* 208 */ 8212,/*EMDASH*/
- /* 209 */ 177,/*PLUS-MINUSSIGN*/
- /* 210 */ 188,/*VULGARFRACTIONONEQUARTER*/
- /* 211 */ 189,/*VULGARFRACTIONONEHALF*/
- /* 212 */ 190,/*VULGARFRACTIONTHREEQUARTERS*/
- /* 213 */ 224,/*LATINSMALLLETTERAWITHGRAVE*/
- /* 214 */ 225,/*LATINSMALLLETTERAWITHACUTE*/
- /* 215 */ 226,/*LATINSMALLLETTERAWITHCIRCUMFLEX*/
- /* 216 */ 227,/*LATINSMALLLETTERAWITHTILDE*/
- /* 217 */ 228,/*LATINSMALLLETTERAWITHDIAERESIS*/
- /* 218 */ 229,/*LATINSMALLLETTERAWITHRINGABOVE*/
- /* 219 */ 231,/*LATINSMALLLETTERCWITHCEDILLA*/
- /* 220 */ 232,/*LATINSMALLLETTEREWITHGRAVE*/
- /* 221 */ 233,/*LATINSMALLLETTEREWITHACUTE*/
- /* 222 */ 234,/*LATINSMALLLETTEREWITHCIRCUMFLEX*/
- /* 223 */ 235,/*LATINSMALLLETTEREWITHDIAERESIS*/
- /* 224 */ 236,/*LATINSMALLLETTERIWITHGRAVE*/
- /* 225 */ 198,/*LATINCAPITALLETTERAE*/
- /* 226 */ 237,/*LATINSMALLLETTERIWITHACUTE*/
- /* 227 */ 170,/*FEMININEORDINALINDICATOR*/
- /* 228 */ 238,/*LATINSMALLLETTERIWITHCIRCUMFLEX*/
- /* 229 */ 239,/*LATINSMALLLETTERIWITHDIAERESIS*/
- /* 230 */ 240,/*LATINSMALLLETTERETH*/
- /* 231 */ 241,/*LATINSMALLLETTERNWITHTILDE*/
- /* 232 */ 321,/*LATINCAPITALLETTERLWITHSTROKE*/
- /* 233 */ 216,/*LATINCAPITALLETTEROWITHSTROKE*/
- /* 234 */ 338,/*LATINCAPITALLIGATUREOE*/
- /* 235 */ 186,/*MASCULINEORDINALINDICATOR*/
- /* 236 */ 242,/*LATINSMALLLETTEROWITHGRAVE*/
- /* 237 */ 243,/*LATINSMALLLETTEROWITHACUTE*/
- /* 238 */ 244,/*LATINSMALLLETTEROWITHCIRCUMFLEX*/
- /* 239 */ 245,/*LATINSMALLLETTEROWITHTILDE*/
- /* 240 */ 246,/*LATINSMALLLETTEROWITHDIAERESIS*/
- /* 241 */ 230,/*LATINSMALLLETTERAE*/
- /* 242 */ 249,/*LATINSMALLLETTERUWITHGRAVE*/
- /* 243 */ 250,/*LATINSMALLLETTERUWITHACUTE*/
- /* 244 */ 251,/*LATINSMALLLETTERUWITHCIRCUMFLEX*/
- /* 245 */ 305,/*LATINSMALLLETTERDOTLESSI*/
- /* 246 */ 252,/*LATINSMALLLETTERUWITHDIAERESIS*/
- /* 247 */ 253,/*LATINSMALLLETTERYWITHACUTE*/
- /* 248 */ 322,/*LATINSMALLLETTERLWITHSTROKE*/
- /* 249 */ 248,/*LATINSMALLLETTEROWITHSTROKE*/
- /* 250 */ 339,/*LATINSMALLLIGATUREOE*/
- /* 251 */ 223,/*LATINSMALLLETTERSHARPS*/
- /* 252 */ 254,/*LATINSMALLLETTERTHORN*/
- /* 253 */ 255,/*LATINSMALLLETTERYWITHDIAERESIS*/
- 254,
- 255
+static convert_t nextstep[] = {
+	{ 0, 0 },
+	{ 1, 1 },
+	{ 2, 2 },
+	{ 3, 3 },
+	{ 4, 4 },
+	{ 5, 5 },
+	{ 6, 6 },
+	{ 7, 7 },
+	{ 8, 8 },
+	{ 9, 9 },
+	{ 10, 10 },
+	{ 11, 11 },
+	{ 12, 12 },
+	{ 13, 13 },
+	{ 14, 14 },
+	{ 15, 15 },
+	{ 16, 16 },
+	{ 17, 17 },
+	{ 18, 18 },
+	{ 19, 19 },
+	{ 20, 20 },
+	{ 21, 21 },
+	{ 22, 22 },
+	{ 23, 23 },
+	{ 24, 24 },
+	{ 25, 25 },
+	{ 26, 26 },
+	{ 27, 27 },
+	{ 28, 28 },
+	{ 29, 29 },
+	{ 30, 30 },
+	{ 31, 31 },
+	{ 32, 32 },
+	{ 33, 33 },
+	{ 34, 34 },
+	{ 35, 35 },
+	{ 36, 36 },
+	{ 37, 37 },
+	{ 38, 38 },
+	{ 39, 39 },
+	{ 40, 40 },
+	{ 41, 41 },
+	{ 42, 42 },
+	{ 43, 43 },
+	{ 44, 44 },
+	{ 45, 45 },
+	{ 46, 46 },
+	{ 47, 47 },
+	{ 48, 48 },
+	{ 49, 49 },
+	{ 50, 50 },
+	{ 51, 51 },
+	{ 52, 52 },
+	{ 53, 53 },
+	{ 54, 54 },
+	{ 55, 55 },
+	{ 56, 56 },
+	{ 57, 57 },
+	{ 58, 58 },
+	{ 59, 59 },
+	{ 60, 60 },
+	{ 61, 61 },
+	{ 62, 62 },
+	{ 63, 63 },
+	{ 64, 64 },
+	{ 65, 65 },
+	{ 66, 66 },
+	{ 67, 67 },
+	{ 68, 68 },
+	{ 69, 69 },
+	{ 70, 70 },
+	{ 71, 71 },
+	{ 72, 72 },
+	{ 73, 73 },
+	{ 74, 74 },
+	{ 75, 75 },
+	{ 76, 76 },
+	{ 77, 77 },
+	{ 78, 78 },
+	{ 79, 79 },
+	{ 80, 80 },
+	{ 81, 81 },
+	{ 82, 82 },
+	{ 83, 83 },
+	{ 84, 84 },
+	{ 85, 85 },
+	{ 86, 86 },
+	{ 87, 87 },
+	{ 88, 88 },
+	{ 89, 89 },
+	{ 90, 90 },
+	{ 91, 91 },
+	{ 92, 92 },
+	{ 93, 93 },
+	{ 94, 94 },
+	{ 95, 95 },
+	{ 96, 96 },
+	{ 97, 97 },
+	{ 98, 98 },
+	{ 99, 99 },
+	{ 100, 100 },
+	{ 101, 101 },
+	{ 102, 102 },
+	{ 103, 103 },
+	{ 104, 104 },
+	{ 105, 105 },
+	{ 106, 106 },
+	{ 107, 107 },
+	{ 108, 108 },
+	{ 109, 109 },
+	{ 110, 110 },
+	{ 111, 111 },
+	{ 112, 112 },
+	{ 113, 113 },
+	{ 114, 114 },
+	{ 115, 115 },
+	{ 116, 116 },
+	{ 117, 117 },
+	{ 118, 118 },
+	{ 119, 119 },
+	{ 120, 120 },
+	{ 121, 121 },
+	{ 122, 122 },
+	{ 123, 123 },
+	{ 124, 124 },
+	{ 125, 125 },
+	{ 126, 126 },
+	{ 127, 127 },
+	{ 128, 160 },
+	{ 129, 192 },
+	{ 130, 193 },
+	{ 131, 194 },
+	{ 132, 195 },
+	{ 133, 196 },
+	{ 134, 197 },
+	{ 135, 199 },
+	{ 136, 200 },
+	{ 137, 201 },
+	{ 138, 202 },
+	{ 139, 203 },
+	{ 140, 204 },
+	{ 141, 205 },
+	{ 142, 206 },
+	{ 143, 207 },
+	{ 144, 208 },
+	{ 145, 209 },
+	{ 146, 210 },
+	{ 147, 211 },
+	{ 148, 212 },
+	{ 149, 213 },
+	{ 150, 214 },
+	{ 151, 217 },
+	{ 152, 218 },
+	{ 153, 219 },
+	{ 154, 220 },
+	{ 155, 221 },
+	{ 156, 222 },
+	{ 157, 181 },
+	{ 158, 215 },
+	{ 159, 247 },
+	{ 160, 169 },
+	{ 161, 161 },
+	{ 162, 162 },
+	{ 163, 163 },
+	{ 164, 8260 },
+	{ 165, 165 },
+	{ 166, 402 },
+	{ 167, 167 },
+	{ 168, 164 },
+	{ 169, 169 },
+	{ 170, 8220 },
+	{ 171, 171 },
+	{ 172, 8249 },
+	{ 173, 8250 },
+	{ 174, 64257 },
+	{ 175, 64258 },
+	{ 176, 174 },
+	{ 177, 8211 },
+	{ 178, 8224 },
+	{ 179, 8225 },
+	{ 180, 183 },
+	{ 181, 166 },
+	{ 182, 182 },
+	{ 183, 8729 },
+	{ 184, 8218 },
+	{ 185, 8222 },
+	{ 186, 8221 },
+	{ 187, 187 },
+	{ 188, 8943 },
+	{ 189, 8240 },
+	{ 190, 172 },
+	{ 191, 191 },
+	{ 192, 185 },
+	{ 193, 768 },
+	{ 194, 180 },
+	{ 195, 770 },
+	{ 196, 771 },
+	{ 197, 175 },
+	{ 198, 728 },
+	{ 199, 729 },
+	{ 200, 168 },
+	{ 201, 178 },
+	{ 202, 176 },
+	{ 203, 184 },
+	{ 204, 179 },
+	{ 205, 733 },
+	{ 206, 731 },
+	{ 207, 711 },
+	{ 208, 8212 },
+	{ 209, 177 },
+	{ 210, 188 },
+	{ 211, 189 },
+	{ 212, 190 },
+	{ 213, 224 },
+	{ 214, 225 },
+	{ 215, 226 },
+	{ 216, 227 },
+	{ 217, 228 },
+	{ 218, 229 },
+	{ 219, 231 },
+	{ 220, 232 },
+	{ 221, 233 },
+	{ 222, 234 },
+	{ 223, 235 },
+	{ 224, 236 },
+	{ 225, 198 },
+	{ 226, 237 },
+	{ 227, 170 },
+	{ 228, 238 },
+	{ 229, 239 },
+	{ 230, 240 },
+	{ 231, 241 },
+	{ 232, 321 },
+	{ 233, 216 },
+	{ 234, 338 },
+	{ 235, 186 },
+	{ 236, 242 },
+	{ 237, 243 },
+	{ 238, 244 },
+	{ 239, 245 },
+	{ 240, 246 },
+	{ 241, 230 },
+	{ 242, 249 },
+	{ 243, 250 },
+	{ 244, 251 },
+	{ 245, 305 },
+	{ 246, 252 },
+	{ 247, 253 },
+	{ 248, 322 },
+	{ 249, 248 },
+	{ 250, 339 },
+	{ 251, 223 },
+	{ 252, 254 },
+	{ 253, 255 },
+	{ 254, 254 },
+	{ 255, 255 },
+	{ 39, 8216 },
+	{ 39, 8217 },
+	{ 32, 8194 },
+	{ 32, 8195 },
+	{ 32, 8201 },
+	{ 65, 256 },
+	{ 65, 258 },
+	{ 65, 260 },
+	{ 65, 461 },
+	{ 97, 257 },
+	{ 97, 259 },
+	{ 97, 261 },
+	{ 97, 462 },
+	{ 67, 262 },
+	{ 67, 264 },
+	{ 67, 266 },
+	{ 67, 268 },
+	{ 99, 263 },
+	{ 99, 265 },
+	{ 99, 267 },
+	{ 99, 269 },
+	{ 68, 270 },
+	{ 100, 271 },
+	{ 69, 274 },
+	{ 69, 276 },
+	{ 69, 278 },
+	{ 69, 280 },
+	{ 69, 282 },
+	{ 101, 275 },
+	{ 101, 277 },
+	{ 101, 279 },
+	{ 101, 281 },
+	{ 101, 283 },
+	{ 71, 284 },
+	{ 71, 286 },
+	{ 71, 288 },
+	{ 71, 290 },
+	{ 71, 486 },
+	{ 71, 500 },
+	{ 103, 285 },
+	{ 103, 287 },
+	{ 103, 289 },
+	{ 103, 291 },
+	{ 103, 487 },
+	{ 103, 501 },
+	{ 72, 292 },
+	{ 104, 293 },
+	{ 73, 296 },
+	{ 73, 298 },
+	{ 73, 300 },
+	{ 73, 302 },
+	{ 73, 304 },
+	{ 73, 463 },
+	{ 105, 297 },
+	{ 105, 299 },
+	{ 105, 301 },
+	{ 105, 303 },
+	{ 105, 464 },
+	{ 74, 308 },
+	{ 106, 309 },
+	{ 75, 310 },
+	{ 75, 488 },
+	{ 107, 311 },
+	{ 107, 489 },
+	{ 76, 313 },
+	{ 76, 315 },
+	{ 76, 317 },
+	{ 76, 319 },
+	{ 108, 314 },
+	{ 108, 316 },
+	{ 108, 318 },
+	{ 108, 320 },
+	{ 77, 323 },
+	{ 77, 325 },
+	{ 77, 327 },
+	{ 109, 324 },
+	{ 109, 326 },
+	{ 109, 328 },
+	{ 109, 329 },
+	{ 78, 332 },
+	{ 78, 334 },
+	{ 78, 336 },
+	{ 78, 465 },
+	{ 78, 490 },
+	{ 110, 333 },
+	{ 110, 335 },
+	{ 110, 337 },
+	{ 110, 466 },
+	{ 110, 491 },
+	{ 82, 340 },
+	{ 82, 342 },
+	{ 82, 344 },
+	{ 114, 341 },
+	{ 114, 343 },
+	{ 114, 345 },
+	{ 83, 346 },
+	{ 83, 348 },
+	{ 83, 350 },
+	{ 83, 352 },
+	{ 115, 347 },
+	{ 115, 349 },
+	{ 115, 351 },
+	{ 115, 353 },
+	{ 84, 354 },
+	{ 84, 356 },
+	{ 116, 355 },
+	{ 116, 357 },
+	{ 85, 360 },
+	{ 85, 362 },
+	{ 85, 364 },
+	{ 85, 366 },
+	{ 85, 368 },
+	{ 85, 370 },
+	{ 85, 467 },
+	{ 117, 361 },
+	{ 117, 363 },
+	{ 117, 365 },
+	{ 117, 367 },
+	{ 117, 369 },
+	{ 117, 371 },
+	{ 117, 468 },
+	{ 87, 372 },
+	{ 119, 373 },
+	{ 89, 374 },
+	{ 89, 376 },
+	{ 121, 375 },
+	{ 90, 377 },
+	{ 90, 379 },
+	{ 90, 381 },
+	{ 122, 378 },
+	{ 122, 380 },
+	{ 122, 382 },
 };
-charconvert symbol[] = {
- /* 0 */ 0,/*<tdbgcolor="C0C0C0"><fontface="Arial"color="000000"><b>ISO/IEC10646-1:2000CharacterName</b></font>*/
- 1,
- 2,
- 3,
- 4,
- 5,
- 6,
- 7,
- 8,
- 9,
- 10,
- 11,
- 12,
- 13,
- 14,
- 15,
- 16,
- 17,
- 18,
- 19,
- 20,
- 21,
- 22,
- 23,
- 24,
- 25,
- 26,
- 27,
- 28,
- 29,
- 30,
- 31,
- /* 32 */ 32,/*SPACE*/
- /* 33 */ 33,/*EXCLAMATIONMARK*/
- /* 34 */ 8704,/*FORALL*/
- /* 35 */ 35,/*NUMBERSIGN*/
- /* 36 */ 8707,/*THEREEXISTS*/
- /* 37 */ 37,/*PERCENTSIGN*/
- /* 38 */ 38,/*AMPERSAND*/
- /* 39 */ 8715,/*CONTAINSASMEMBER*/
- /* 40 */ 40,/*LEFTPARENTHESIS*/
- /* 41 */ 41,/*RIGHTPARENTHESIS*/
- /* 42 */ 8727,/*ASTERISKOPERATOR*/
- /* 43 */ 43,/*PLUSSIGN*/
- /* 44 */ 44,/*COMMA*/
- /* 45 */ 8722,/*MINUSSIGN*/
- /* 46 */ 46,/*FULLSTOP*/
- /* 47 */ 47,/*SOLIDUS*/
- /* 48 */ 48,/*DIGITZERO*/
- /* 49 */ 49,/*DIGITONE*/
- /* 50 */ 50,/*DIGITTWO*/
- /* 51 */ 51,/*DIGITTHREE*/
- /* 52 */ 52,/*DIGITFOUR*/
- /* 53 */ 53,/*DIGITFIVE*/
- /* 54 */ 54,/*DIGITSIX*/
- /* 55 */ 55,/*DIGITSEVEN*/
- /* 56 */ 56,/*DIGITEIGHT*/
- /* 57 */ 57,/*DIGITNINE*/
- /* 58 */ 58,/*COLON*/
- /* 59 */ 59,/*SEMICOLON*/
- /* 60 */ 60,/*LESS-THANSIGN*/
- /* 61 */ 61,/*EQUALSSIGN*/
- /* 62 */ 62,/*GREATER-THANSIGN*/
- /* 63 */ 63,/*QUESTIONMARK*/
- /* 64 */ 8773,/*APPROXIMATELYEQUALTO*/
- /* 65 */ 913,/*GREEKCAPITALLETTERALPHA*/
- /* 66 */ 914,/*GREEKCAPITALLETTERBETA*/
- /* 67 */ 935,/*GREEKCAPITALLETTERCHI*/
- /* 68 */ 916,/*GREEKCAPITALLETTERDELTA*/
- /* 69 */ 917,/*GREEKCAPITALLETTEREPSILON*/
- /* 70 */ 934,/*GREEKCAPITALLETTERPHI*/
- /* 71 */ 915,/*GREEKCAPITALLETTERGAMMA*/
- /* 72 */ 919,/*GREEKCAPITALLETTERETA*/
- /* 73 */ 921,/*GREEKCAPITALLETTERIOTA*/
- /* 74 */ 977,/*GREEKTHETASYMBOL*/
- /* 75 */ 922,/*GREEKCAPITALLETTERKAPPA*/
- /* 76 */ 923,/*GREEKCAPITALLETTERLAMDA*/
- /* 77 */ 924,/*GREEKCAPITALLETTERMU*/
- /* 78 */ 925,/*GREEKCAPITALLETTERNU*/
- /* 79 */ 927,/*GREEKCAPITALLETTEROMICRON*/
- /* 80 */ 928,/*GREEKCAPITALLETTERPI*/
- /* 81 */ 920,/*GREEKCAPITALLETTERTHETA*/
- /* 82 */ 929,/*GREEKCAPITALLETTERRHO*/
- /* 83 */ 931,/*GREEKCAPITALLETTERSIGMA*/
- /* 84 */ 932,/*GREEKCAPITALLETTERTAU*/
- /* 85 */ 933,/*GREEKCAPITALLETTERUPSILON*/
- /* 86 */ 962,/*GREEKSMALLLETTERFINALSIGMA*/
- /* 87 */ 937,/*GREEKCAPITALLETTEROMEGA*/
- /* 88 */ 926,/*GREEKCAPITALLETTERXI*/
- /* 89 */ 936,/*GREEKCAPITALLETTERPSI*/
- /* 90 */ 918,/*GREEKCAPITALLETTERZETA*/
- /* 91 */ 91,/*LEFTSQUAREBRACKET*/
- /* 92 */ 8756,/*THEREFORE*/
- /* 93 */ 93,/*RIGHTSQUAREBRACKET*/
- /* 94 */ 8869,/*UPTACK*/
- /* 95 */ 95,/*LOWLINE*/
- /* 96 */ 8254,/*OVERLINE*/
- /* 97 */ 945,/*GREEKSMALLLETTERALPHA*/
- /* 98 */ 946,/*GREEKSMALLLETTERBETA*/
- /* 99 */ 967,/*GREEKSMALLLETTERCHI*/
- /* 100 */ 948,/*GREEKSMALLLETTERDELTA*/
- /* 101 */ 949,/*GREEKSMALLLETTEREPSILON*/
- /* 102 */ 966,/*GREEKSMALLLETTERPHI*/
- /* 103 */ 947,/*GREEKSMALLLETTERGAMMA*/
- /* 104 */ 951,/*GREEKSMALLLETTERETA*/
- /* 105 */ 953,/*GREEKSMALLLETTERIOTA*/
- /* 106 */ 981,/*GREEKPHISYMBOL*/
- /* 107 */ 954,/*GREEKSMALLLETTERKAPPA*/
- /* 108 */ 955,/*GREEKSMALLLETTERLAMDA*/
- /* 109 */ 956,/*GREEKSMALLLETTERMU*/
- /* 110 */ 957,/*GREEKSMALLLETTERNU*/
- /* 111 */ 959,/*GREEKSMALLLETTEROMICRON*/
- /* 112 */ 960,/*GREEKSMALLLETTERPI*/
- /* 113 */ 952,/*GREEKSMALLLETTERTHETA*/
- /* 114 */ 961,/*GREEKSMALLLETTERRHO*/
- /* 115 */ 963,/*GREEKSMALLLETTERSIGMA*/
- /* 116 */ 964,/*GREEKSMALLLETTERTAU*/
- /* 117 */ 965,/*GREEKSMALLLETTERUPSILON*/
- /* 118 */ 982,/*GREEKPISYMBOL*/
- /* 119 */ 969,/*GREEKSMALLLETTEROMEGA*/
- /* 120 */ 958,/*GREEKSMALLLETTERXI*/
- /* 121 */ 968,/*GREEKSMALLLETTERPSI*/
- /* 122 */ 950,/*GREEKSMALLLETTERZETA*/
- /* 123 */ 123,/*LEFTCURLYBRACKET*/
- /* 124 */ 124,/*VERTICALLINE*/
- /* 125 */ 125,/*RIGHTCURLYBRACKET*/
- /* 126 */ 8764,/*TILDEOPERATOR*/
- 127,
- 128,
- 129,
- 130,
- 131,
- 132,
- 133,
- 134,
- 135,
- 136,
- 137,
- 138,
- 139,
- 140,
- 141,
- 142,
- 143,
- 144,
- 145,
- 146,
- 147,
- 148,
- 149,
- 150,
- 151,
- 152,
- 153,
- 154,
- 155,
- 156,
- 157,
- 158,
- 159,
- 160,
- /* 161 */ 978,/*GREEKUPSILONWITHHOOKSYMBOL*/
- /* 162 */ 8242,/*PRIME*/
- /* 163 */ 8804,/*LESS-THANOREQUALTO*/
- /* 164 */ 8725,/*DIVISIONSLASH*/
- /* 165 */ 8734,/*INFINITY*/
- /* 166 */ 402,/*LATINSMALLLETTERFWITHHOOK*/
- /* 167 */ 9827,/*BLACKCLUBSUIT*/
- /* 168 */ 9830,/*BLACKDIAMONDSUIT*/
- /* 169 */ 9829,/*BLACKHEARTSUIT*/
- /* 170 */ 9824,/*BLACKSPADESUIT*/
- /* 171 */ 8596,/*LEFTRIGHTARROW*/
- /* 172 */ 8592,/*LEFTWARDSARROW*/
- /* 173 */ 8593,/*UPWARDSARROW*/
- /* 174 */ 8594,/*RIGHTWARDSARROW*/
- /* 175 */ 8595,/*DOWNWARDSARROW*/
- /* 176 */ 176,/*DEGREESIGN*/
- /* 177 */ 177,/*PLUS-MINUSSIGN*/
- /* 178 */ 8243,/*DOUBLEPRIME*/
- /* 179 */ 8805,/*GREATER-THANOREQUALTO*/
- /* 180 */ 215,/*MULTIPLICATIONSIGN*/
- /* 181 */ 8733,/*PROPORTIONALTO*/
- /* 182 */ 8706,/*PARTIALDIFFERENTIAL*/
- /* 183 */ 8729,/*BULLETOPERATOR*/
- /* 184 */ 247,/*DIVISIONSIGN*/
- /* 185 */ 8800,/*NOTEQUALTO*/
- /* 186 */ 8801,/*IDENTICALTO*/
- /* 187 */ 8776,/*ALMOSTEQUALTO*/
- /* 188 */ 8943,/*MIDLINEHORIZONTALELLIPSIS*/
- 189,
- 190,
- /* 191 */ 8629,/*DOWNWARDSARROWWITHCORNERLEFTWARDS*/
- 192,
- /* 193 */ 8465,/*BLACK-LETTERCAPITALI*/
- /* 194 */ 8476,/*BLACK-LETTERCAPITALR*/
- /* 195 */ 8472,/*SCRIPTCAPITALP*/
- /* 196 */ 8855,/*CIRCLEDTIMES*/
- /* 197 */ 8853,/*CIRCLEDPLUS*/
- /* 198 */ 8709,/*EMPTYSET*/
- /* 199 */ 8745,/*INTERSECTION*/
- /* 200 */ 8746,/*UNION*/
- /* 201 */ 8835,/*SUPERSETOF*/
- /* 202 */ 8839,/*SUPERSETOFOREQUALTO*/
- /* 203 */ 8836,/*NOTASUBSETOF*/
- /* 204 */ 8834,/*SUBSETOF*/
- /* 205 */ 8838,/*SUBSETOFOREQUALTO*/
- /* 206 */ 8712,/*ELEMENTOF*/
- /* 207 */ 8713,/*NOTANELEMENTOF*/
- /* 208 */ 8736,/*ANGLE*/
- /* 209 */ 8711,/*NABLA*/
- /* 210 */ 174,/*REGISTEREDSIGN*/
- /* 211 */ 169,/*COPYRIGHTSIGN*/
- /* 212 */ 8482,/*TRADEMARKSIGN*/
- /* 213 */ 8719,/*N-ARYPRODUCT*/
- /* 214 */ 8730,/*SQUAREROOT*/
- /* 215 */ 8901,/*DOTOPERATOR*/
- /* 216 */ 172,/*NOTSIGN*/
- /* 217 */ 8743,/*LOGICALAND*/
- /* 218 */ 8744,/*LOGICALOR*/
- /* 219 */ 8660,/*LEFTRIGHTDOUBLEARROW*/
- /* 220 */ 8656,/*LEFTWARDSDOUBLEARROW*/
- /* 221 */ 8657,/*UPWARDSDOUBLEARROW*/
- /* 222 */ 8658,/*RIGHTWARDSDOUBLEARROW*/
- /* 223 */ 8659,/*DOWNWARDSDOUBLEARROW*/
- /* 224 */ 9674,/*LOZENGE*/
- /* 225 */ 9001,/*LEFT-POINTINGANGLEBRACKET*/
- 226,
- 227,
- 228,
- /* 229 */ 8721,/*N-ARYSUMMATION*/
- 230,
- 231,
- 232,
- 233,
- 234,
- 235,
- 236,
- 237,
- 238,
- 239,
- 240,
- /* 241 */ 9002,/*RIGHT-POINTINGANGLEBRACKET*/
- /* 242 */ 8747,/*INTEGRAL*/
- /* 243 */ 8992,/*TOPHALFINTEGRAL*/
- 244,
- /* 245 */ 8993,/*BOTTOMHALFINTEGRAL*/
- 246,
- 247,
- 248,
- 249,
- 250,
- 251,
- 252,
- 253,
- 254,
- 255
+static convert_t symbol[] = {
+	{ 0, 0 },
+	{ 1, 1 },
+	{ 2, 2 },
+	{ 3, 3 },
+	{ 4, 4 },
+	{ 5, 5 },
+	{ 6, 6 },
+	{ 7, 7 },
+	{ 8, 8 },
+	{ 9, 9 },
+	{ 10, 10 },
+	{ 11, 11 },
+	{ 12, 12 },
+	{ 13, 13 },
+	{ 14, 14 },
+	{ 15, 15 },
+	{ 16, 16 },
+	{ 17, 17 },
+	{ 18, 18 },
+	{ 19, 19 },
+	{ 20, 20 },
+	{ 21, 21 },
+	{ 22, 22 },
+	{ 23, 23 },
+	{ 24, 24 },
+	{ 25, 25 },
+	{ 26, 26 },
+	{ 27, 27 },
+	{ 28, 28 },
+	{ 29, 29 },
+	{ 30, 30 },
+	{ 31, 31 },
+	{ 32, 32 },
+	{ 33, 33 },
+	{ 34, 8704 },
+	{ 35, 35 },
+	{ 36, 8707 },
+	{ 37, 37 },
+	{ 38, 38 },
+	{ 39, 8715 },
+	{ 40, 40 },
+	{ 41, 41 },
+	{ 42, 8727 },
+	{ 43, 43 },
+	{ 44, 44 },
+	{ 45, 8722 },
+	{ 46, 46 },
+	{ 47, 47 },
+	{ 48, 48 },
+	{ 49, 49 },
+	{ 50, 50 },
+	{ 51, 51 },
+	{ 52, 52 },
+	{ 53, 53 },
+	{ 54, 54 },
+	{ 55, 55 },
+	{ 56, 56 },
+	{ 57, 57 },
+	{ 58, 58 },
+	{ 59, 59 },
+	{ 60, 60 },
+	{ 61, 61 },
+	{ 62, 62 },
+	{ 63, 63 },
+	{ 64, 8773 },
+	{ 65, 913 },
+	{ 66, 914 },
+	{ 67, 935 },
+	{ 68, 916 },
+	{ 69, 917 },
+	{ 70, 934 },
+	{ 71, 915 },
+	{ 72, 919 },
+	{ 73, 921 },
+	{ 74, 977 },
+	{ 75, 922 },
+	{ 76, 923 },
+	{ 77, 924 },
+	{ 78, 925 },
+	{ 79, 927 },
+	{ 80, 928 },
+	{ 81, 920 },
+	{ 82, 929 },
+	{ 83, 931 },
+	{ 84, 932 },
+	{ 85, 933 },
+	{ 86, 962 },
+	{ 87, 937 },
+	{ 88, 926 },
+	{ 89, 936 },
+	{ 90, 918 },
+	{ 91, 91 },
+	{ 92, 8756 },
+	{ 93, 93 },
+	{ 94, 8869 },
+	{ 95, 95 },
+	{ 96, 8254 },
+	{ 97, 945 },
+	{ 98, 946 },
+	{ 99, 967 },
+	{ 100, 948 },
+	{ 101, 949 },
+	{ 102, 966 },
+	{ 103, 947 },
+	{ 104, 951 },
+	{ 105, 953 },
+	{ 106, 981 },
+	{ 107, 954 },
+	{ 108, 955 },
+	{ 109, 956 },
+	{ 110, 957 },
+	{ 111, 959 },
+	{ 112, 960 },
+	{ 113, 952 },
+	{ 114, 961 },
+	{ 115, 963 },
+	{ 116, 964 },
+	{ 117, 965 },
+	{ 118, 982 },
+	{ 119, 969 },
+	{ 120, 958 },
+	{ 121, 968 },
+	{ 122, 950 },
+	{ 123, 123 },
+	{ 124, 124 },
+	{ 125, 125 },
+	{ 126, 8764 },
+	{ 127, 127 },
+	{ 128, 128 },
+	{ 129, 129 },
+	{ 130, 130 },
+	{ 131, 131 },
+	{ 132, 132 },
+	{ 133, 133 },
+	{ 134, 134 },
+	{ 135, 135 },
+	{ 136, 136 },
+	{ 137, 137 },
+	{ 138, 138 },
+	{ 139, 139 },
+	{ 140, 140 },
+	{ 141, 141 },
+	{ 142, 142 },
+	{ 143, 143 },
+	{ 144, 144 },
+	{ 145, 145 },
+	{ 146, 146 },
+	{ 147, 147 },
+	{ 148, 148 },
+	{ 149, 149 },
+	{ 150, 150 },
+	{ 151, 151 },
+	{ 152, 152 },
+	{ 153, 153 },
+	{ 154, 154 },
+	{ 155, 155 },
+	{ 156, 156 },
+	{ 157, 157 },
+	{ 158, 158 },
+	{ 159, 159 },
+	{ 160, 160 },
+	{ 161, 978 },
+	{ 162, 8242 },
+	{ 163, 8804 },
+	{ 164, 8725 },
+	{ 165, 8734 },
+	{ 166, 402 },
+	{ 167, 9827 },
+	{ 168, 9830 },
+	{ 169, 9829 },
+	{ 170, 9824 },
+	{ 171, 8596 },
+	{ 172, 8592 },
+	{ 173, 8593 },
+	{ 174, 8594 },
+	{ 175, 8595 },
+	{ 176, 176 },
+	{ 177, 177 },
+	{ 178, 8243 },
+	{ 179, 8805 },
+	{ 180, 215 },
+	{ 181, 8733 },
+	{ 182, 8706 },
+	{ 183, 8729 },
+	{ 184, 247 },
+	{ 185, 8800 },
+	{ 186, 8801 },
+	{ 187, 8776 },
+	{ 188, 8943 },
+	{ 189, 189 },
+	{ 190, 190 },
+	{ 191, 8629 },
+	{ 192, 192 },
+	{ 193, 8465 },
+	{ 194, 8476 },
+	{ 195, 8472 },
+	{ 196, 8855 },
+	{ 197, 8853 },
+	{ 198, 8709 },
+	{ 199, 8745 },
+	{ 200, 8746 },
+	{ 201, 8835 },
+	{ 202, 8839 },
+	{ 203, 8836 },
+	{ 204, 8834 },
+	{ 205, 8838 },
+	{ 206, 8712 },
+	{ 207, 8713 },
+	{ 208, 8736 },
+	{ 209, 8711 },
+	{ 210, 174 },
+	{ 211, 169 },
+	{ 212, 8482 },
+	{ 213, 8719 },
+	{ 214, 8730 },
+	{ 215, 8901 },
+	{ 216, 172 },
+	{ 217, 8743 },
+	{ 218, 8744 },
+	{ 219, 8660 },
+	{ 220, 8656 },
+	{ 221, 8657 },
+	{ 222, 8658 },
+	{ 223, 8659 },
+	{ 224, 9674 },
+	{ 225, 9001 },
+	{ 226, 226 },
+	{ 227, 227 },
+	{ 228, 228 },
+	{ 229, 8721 },
+	{ 230, 230 },
+	{ 231, 231 },
+	{ 232, 232 },
+	{ 233, 233 },
+	{ 234, 234 },
+	{ 235, 235 },
+	{ 236, 236 },
+	{ 237, 237 },
+	{ 238, 238 },
+	{ 239, 239 },
+	{ 240, 240 },
+	{ 241, 9002 },
+	{ 242, 8747 },
+	{ 243, 8992 },
+	{ 244, 244 },
+	{ 245, 8993 },
+	{ 246, 246 },
+	{ 247, 247 },
+	{ 248, 248 },
+	{ 249, 249 },
+	{ 250, 250 },
+	{ 251, 251 },
+	{ 252, 252 },
+	{ 253, 253 },
+	{ 254, 254 },
+	{ 255, 255 },
+	{ 32, 8194 },
+	{ 32, 8195 },
+	{ 32, 8201 },
+	{ 192, 65 },
+	{ 192, 193 },
+	{ 192, 194 },
+	{ 192, 195 },
+	{ 192, 196 },
+	{ 192, 197 },
+	{ 192, 256 },
+	{ 192, 258 },
+	{ 192, 260 },
+	{ 192, 461 },
+	{ 226, 97 },
+	{ 226, 224 },
+	{ 226, 225 },
+	{ 226, 229 },
+	{ 226, 257 },
+	{ 226, 259 },
+	{ 226, 261 },
+	{ 226, 462 },
+	{ 231, 99 },
+	{ 231, 263 },
+	{ 231, 265 },
+	{ 231, 267 },
+	{ 231, 269 },
+	{ 232, 101 },
+	{ 232, 275 },
+	{ 232, 277 },
+	{ 232, 279 },
+	{ 232, 281 },
+	{ 232, 283 },
+	{ 236, 105 },
+	{ 236, 297 },
+	{ 236, 299 },
+	{ 236, 301 },
+	{ 236, 303 },
+	{ 236, 305 },
+	{ 236, 464 },
+	{ 244, 110 },
+	{ 244, 242 },
+	{ 244, 243 },
+	{ 244, 245 },
+	{ 244, 333 },
+	{ 244, 335 },
+	{ 244, 337 },
+	{ 244, 466 },
+	{ 244, 491 },
+	{ 249, 117 },
+	{ 249, 361 },
+	{ 249, 363 },
+	{ 249, 365 },
+	{ 249, 367 },
+	{ 249, 369 },
+	{ 249, 371 },
+	{ 249, 468 },
+	{ 253, 121 },
+	{ 253, 375 },
 };
-charconvert tex_dcr_in[] = {
- /* 0 */ 0,/*<tdbgcolor="C0C0C0"><fontface="Arial"color="000000"><b>ISO/IEC10646-1:2000CharacterName</b></font>*/
- 1,
- 2,
- 3,
- 4,
- 5,
- 6,
- 7,
- 8,
- 9,
- 10,
- 11,
- 12,
- 13,
- 14,
- 15,
- 16,
- 17,
- 18,
- 19,
- 20,
- 21,
- 22,
- 23,
- 24,
- 25,
- 26,
- 27,
- 28,
- 29,
- 30,
- 31,
- /* 32 */ 32,/*SPACE*/
- /* 33 */ 33,/*EXCLAMATIONMARK*/
- /* 34 */ 34,/*QUOTATIONMARK*/
- /* 35 */ 35,/*NUMBERSIGN*/
- /* 36 */ 36,/*DOLLARSIGN*/
- /* 37 */ 37,/*PERCENTSIGN*/
- /* 38 */ 38,/*AMPERSAND*/
- /* 39 */ 39,/*APOSTROPHE*/
- /* 40 */ 40,/*LEFTPARENTHESIS*/
- /* 41 */ 41,/*RIGHTPARENTHESIS*/
- /* 42 */ 42,/*ASTERISK*/
- /* 43 */ 43,/*PLUSSIGN*/
- /* 44 */ 44,/*COMMA*/
- /* 45 */ 45,/*HYPHEN-MINUS*/
- /* 46 */ 46,/*FULLSTOP*/
- /* 47 */ 47,/*SOLIDUS*/
- /* 48 */ 48,/*DIGITZERO*/
- /* 49 */ 49,/*DIGITONE*/
- /* 50 */ 50,/*DIGITTWO*/
- /* 51 */ 51,/*DIGITTHREE*/
- /* 52 */ 52,/*DIGITFOUR*/
- /* 53 */ 53,/*DIGITFIVE*/
- /* 54 */ 54,/*DIGITSIX*/
- /* 55 */ 55,/*DIGITSEVEN*/
- /* 56 */ 56,/*DIGITEIGHT*/
- /* 57 */ 57,/*DIGITNINE*/
- /* 58 */ 58,/*COLON*/
- /* 59 */ 59,/*SEMICOLON*/
- /* 60 */ 60,/*LESS-THANSIGN*/
- /* 61 */ 61,/*EQUALSSIGN*/
- /* 62 */ 62,/*GREATER-THANSIGN*/
- /* 63 */ 63,/*QUESTIONMARK*/
- /* 64 */ 64,/*COMMERCIALAT*/
- /* 65 */ 65,/*LATINCAPITALLETTERA*/
- /* 66 */ 66,/*LATINCAPITALLETTERB*/
- /* 67 */ 67,/*LATINCAPITALLETTERC*/
- /* 68 */ 68,/*LATINCAPITALLETTERD*/
- /* 69 */ 69,/*LATINCAPITALLETTERE*/
- /* 70 */ 70,/*LATINCAPITALLETTERF*/
- /* 71 */ 71,/*LATINCAPITALLETTERG*/
- /* 72 */ 72,/*LATINCAPITALLETTERH*/
- /* 73 */ 73,/*LATINCAPITALLETTERI*/
- /* 74 */ 74,/*LATINCAPITALLETTERJ*/
- /* 75 */ 75,/*LATINCAPITALLETTERK*/
- /* 76 */ 76,/*LATINCAPITALLETTERL*/
- /* 77 */ 77,/*LATINCAPITALLETTERM*/
- /* 78 */ 78,/*LATINCAPITALLETTERN*/
- /* 79 */ 79,/*LATINCAPITALLETTERO*/
- /* 80 */ 80,/*LATINCAPITALLETTERP*/
- /* 81 */ 81,/*LATINCAPITALLETTERQ*/
- /* 82 */ 82,/*LATINCAPITALLETTERR*/
- /* 83 */ 83,/*LATINCAPITALLETTERS*/
- /* 84 */ 84,/*LATINCAPITALLETTERT*/
- /* 85 */ 85,/*LATINCAPITALLETTERU*/
- /* 86 */ 86,/*LATINCAPITALLETTERV*/
- /* 87 */ 87,/*LATINCAPITALLETTERW*/
- /* 88 */ 88,/*LATINCAPITALLETTERX*/
- /* 89 */ 89,/*LATINCAPITALLETTERY*/
- /* 90 */ 90,/*LATINCAPITALLETTERZ*/
- /* 91 */ 91,/*LEFTSQUAREBRACKET*/
- /* 92 */ 92,/*REVERSESOLIDUS*/
- /* 93 */ 93,/*RIGHTSQUAREBRACKET*/
- /* 94 */ 94,/*CIRCUMFLEXACCENT*/
- /* 95 */ 95,/*LOWLINE*/
- /* 96 */ 96,/*GRAVEACCENT*/
- /* 97 */ 97,/*LATINSMALLLETTERA*/
- /* 98 */ 98,/*LATINSMALLLETTERB*/
- /* 99 */ 99,/*LATINSMALLLETTERC*/
- /* 100 */ 100,/*LATINSMALLLETTERD*/
- /* 101 */ 101,/*LATINSMALLLETTERE*/
- /* 102 */ 102,/*LATINSMALLLETTERF*/
- /* 103 */ 103,/*LATINSMALLLETTERG*/
- /* 104 */ 104,/*LATINSMALLLETTERH*/
- /* 105 */ 105,/*LATINSMALLLETTERI*/
- /* 106 */ 106,/*LATINSMALLLETTERJ*/
- /* 107 */ 107,/*LATINSMALLLETTERK*/
- /* 108 */ 108,/*LATINSMALLLETTERL*/
- /* 109 */ 109,/*LATINSMALLLETTERM*/
- /* 110 */ 110,/*LATINSMALLLETTERN*/
- /* 111 */ 111,/*LATINSMALLLETTERO*/
- /* 112 */ 112,/*LATINSMALLLETTERP*/
- /* 113 */ 113,/*LATINSMALLLETTERQ*/
- /* 114 */ 114,/*LATINSMALLLETTERR*/
- /* 115 */ 115,/*LATINSMALLLETTERS*/
- /* 116 */ 116,/*LATINSMALLLETTERT*/
- /* 117 */ 117,/*LATINSMALLLETTERU*/
- /* 118 */ 118,/*LATINSMALLLETTERV*/
- /* 119 */ 119,/*LATINSMALLLETTERW*/
- /* 120 */ 120,/*LATINSMALLLETTERX*/
- /* 121 */ 121,/*LATINSMALLLETTERY*/
- /* 122 */ 122,/*LATINSMALLLETTERZ*/
- /* 123 */ 123,/*LEFTCURLYBRACKET*/
- /* 124 */ 124,/*VERTICALLINE*/
- /* 125 */ 125,/*RIGHTCURLYBRACKET*/
- /* 126 */ 126,/*TILDE*/
- 127,
- /* 128 */ 258,/*LATINCAPITALLETTERAWITHBREVE*/
- /* 129 */ 260,/*LATINCAPITALLETTERAWITHOGONEK*/
- /* 130 */ 262,/*LATINCAPITALLETTERCWITHACUTE*/
- /* 131 */ 268,/*LATINCAPITALLETTERCWITHCARON*/
- /* 132 */ 270,/*LATINCAPITALLETTERDWITHCARON*/
- /* 133 */ 282,/*LATINCAPITALLETTEREWITHCARON*/
- /* 134 */ 280,/*LATINCAPITALLETTEREWITHOGONEK*/
- /* 135 */ 286,/*LATINCAPITALLETTERGWITHBREVE*/
- /* 136 */ 313,/*LATINCAPITALLETTERLWITHACUTE*/
- /* 137 */ 65534,/*LATINCAPITALLETTERLWITHCOMMA*/
- /* 138 */ 321,/*LATINCAPITALLETTERLWITHSTROKE*/
- /* 139 */ 323,/*LATINCAPITALLETTERNWITHACUTE*/
- /* 140 */ 327,/*LATINCAPITALLETTERNWITHCARON*/
- /* 141 */ 330,/*LATINCAPITALLETTERENG*/
- /* 142 */ 336,/*LATINCAPITALLETTEROWITHDOUBLEACUTE*/
- /* 143 */ 340,/*LATINCAPITALLETTERRWITHACUTE*/
- /* 144 */ 344,/*LATINCAPITALLETTERRWITHCARON*/
- /* 145 */ 346,/*LATINCAPITALLETTERSWITHACUTE*/
- /* 146 */ 352,/*LATINCAPITALLETTERSWITHCARON*/
- /* 147 */ 350,/*LATINCAPITALLETTERSWITHCEDILLA*/
- /* 148 */ 356,/*LATINCAPITALLETTERTWITHCARON*/
- /* 149 */ 354,/*LATINCAPITALLETTERTWITHCEDILLA*/
- /* 150 */ 368,/*LATINCAPITALLETTERUWITHDOUBLEACUTE*/
- /* 151 */ 366,/*LATINCAPITALLETTERUWITHRINGABOVE*/
- /* 152 */ 376,/*LATINCAPITALLETTERYWITHDIAERESIS*/
- /* 153 */ 377,/*LATINCAPITALLETTERZWITHACUTE*/
- /* 154 */ 381,/*LATINCAPITALLETTERZWITHCARON*/
- /* 155 */ 379,/*LATINCAPITALLETTERZWITHDOTABOVE*/
- /* 156 */ 306,/*LATINCAPITALLIGATUREIJ*/
- /* 157 */ 304,/*LATINCAPITALLETTERIWITHDOTABOVE*/
- /* 158 */ 272,/*LATINCAPITALLETTERDWITHSTROKE*/
- /* 159 */ 167,/*SECTIONSIGN*/
- /* 160 */ 259,/*LATINSMALLLETTERAWITHBREVE*/
- /* 161 */ 261,/*LATINSMALLLETTERAWITHOGONEK*/
- /* 162 */ 263,/*LATINSMALLLETTERCWITHACUTE*/
- /* 163 */ 269,/*LATINSMALLLETTERCWITHCARON*/
- /* 164 */ 65534,/*LATINSMALLLETTERDWITHCOMMA*/
- /* 165 */ 283,/*LATINSMALLLETTEREWITHCARON*/
- /* 166 */ 281,/*LATINSMALLLETTEREWITHOGONEK*/
- /* 167 */ 287,/*LATINSMALLLETTERGWITHBREVE*/
- /* 168 */ 314,/*LATINSMALLLETTERLWITHACUTE*/
- /* 169 */ 65534,/*LATINSMALLLETTERLWITHCOMMA*/
- /* 170 */ 322,/*LATINSMALLLETTERLWITHSTROKE*/
- /* 171 */ 324,/*LATINSMALLLETTERNWITHACUTE*/
- /* 172 */ 328,/*LATINSMALLLETTERNWITHCARON*/
- /* 173 */ 331,/*LATINSMALLLETTERENG*/
- /* 174 */ 337,/*LATINSMALLLETTEROWITHDOUBLEACUTE*/
- /* 175 */ 341,/*LATINSMALLLETTERRWITHACUTE*/
- /* 176 */ 345,/*LATINSMALLLETTERRWITHCARON*/
- /* 177 */ 347,/*LATINSMALLLETTERSWITHACUTE*/
- /* 178 */ 353,/*LATINSMALLLETTERSWITHCARON*/
- /* 179 */ 351,/*LATINSMALLLETTERSWITHCEDILLA*/
- /* 180 */ 65534,/*LATINSMALLLETTERTWITHCOMMA*/
- /* 181 */ 355,/*LATINSMALLLETTERTWITHCEDILLA*/
- /* 182 */ 369,/*LATINSMALLLETTERUWITHDOUBLEACUTE*/
- /* 183 */ 367,/*LATINSMALLLETTERUWITHRINGABOVE*/
- /* 184 */ 255,/*LATINSMALLLETTERYWITHDIAERESIS*/
- /* 185 */ 378,/*LATINSMALLLETTERZWITHACUTE*/
- /* 186 */ 382,/*LATINSMALLLETTERZWITHCARON*/
- /* 187 */ 380,/*LATINSMALLLETTERZWITHDOTABOVE*/
- /* 188 */ 307,/*LATINSMALLLIGATUREIJ*/
- /* 189 */ 161,/*INVERTEDEXCLAMATIONMARK*/
- /* 190 */ 191,/*INVERTEDQUESTIONMARK*/
- /* 191 */ 163,/*POUNDSIGN*/
- /* 192 */ 192,/*LATINCAPITALLETTERAWITHGRAVE*/
- /* 193 */ 193,/*LATINCAPITALLETTERAWITHACUTE*/
- /* 194 */ 194,/*LATINCAPITALLETTERAWITHCIRCUMFLEX*/
- /* 195 */ 195,/*LATINCAPITALLETTERAWITHTILDE*/
- /* 196 */ 196,/*LATINCAPITALLETTERAWITHDIAERESIS*/
- /* 197 */ 197,/*LATINCAPITALLETTERAWITHRINGABOVE*/
- /* 198 */ 198,/*LATINCAPITALLETTERAE*/
- /* 199 */ 199,/*LATINCAPITALLETTERCWITHCEDILLA*/
- /* 200 */ 200,/*LATINCAPITALLETTEREWITHGRAVE*/
- /* 201 */ 201,/*LATINCAPITALLETTEREWITHACUTE*/
- /* 202 */ 202,/*LATINCAPITALLETTEREWITHCIRCUMFLEX*/
- /* 203 */ 203,/*LATINCAPITALLETTEREWITHDIAERESIS*/
- /* 204 */ 204,/*LATINCAPITALLETTERIWITHGRAVE*/
- /* 205 */ 205,/*LATINCAPITALLETTERIWITHACUTE*/
- /* 206 */ 206,/*LATINCAPITALLETTERIWITHCIRCUMFLEX*/
- /* 207 */ 207,/*LATINCAPITALLETTERIWITHDIAERESIS*/
- /* 208 */ 208,/*LATINCAPITALLETTERETH*/
- /* 209 */ 209,/*LATINCAPITALLETTERNWITHTILDE*/
- /* 210 */ 210,/*LATINCAPITALLETTEROWITHGRAVE*/
- /* 211 */ 211,/*LATINCAPITALLETTEROWITHACUTE*/
- /* 212 */ 212,/*LATINCAPITALLETTEROWITHCIRCUMFLEX*/
- /* 213 */ 213,/*LATINCAPITALLETTEROWITHTILDE*/
- /* 214 */ 214,/*LATINCAPITALLETTEROWITHDIAERESIS*/
- /* 215 */ 338,/*LATINCAPITALLIGATUREOE*/
- /* 216 */ 216,/*LATINCAPITALLETTEROWITHSTROKE*/
- /* 217 */ 217,/*LATINCAPITALLETTERUWITHGRAVE*/
- /* 218 */ 218,/*LATINCAPITALLETTERUWITHACUTE*/
- /* 219 */ 219,/*LATINCAPITALLETTERUWITHCIRCUMFLEX*/
- /* 220 */ 220,/*LATINCAPITALLETTERUWITHDIAERESIS*/
- /* 221 */ 221,/*LATINCAPITALLETTERYWITHACUTE*/
- /* 222 */ 222,/*LATINCAPITALLETTERTHORN*/
- /* 223 */ 65534,/*LATINCAPITALLIGATURESS*/
- /* 224 */ 224,/*LATINSMALLLETTERAWITHGRAVE*/
- /* 225 */ 225,/*LATINSMALLLETTERAWITHACUTE*/
- /* 226 */ 226,/*LATINSMALLLETTERAWITHCIRCUMFLEX*/
- /* 227 */ 227,/*LATINSMALLLETTERAWITHTILDE*/
- /* 228 */ 228,/*LATINSMALLLETTERAWITHDIAERESIS*/
- /* 229 */ 229,/*LATINSMALLLETTERAWITHRINGABOVE*/
- /* 230 */ 230,/*LATINSMALLLETTERAE*/
- /* 231 */ 231,/*LATINSMALLLETTERCWITHCEDILLA*/
- /* 232 */ 232,/*LATINSMALLLETTEREWITHGRAVE*/
- /* 233 */ 233,/*LATINSMALLLETTEREWITHACUTE*/
- /* 234 */ 234,/*LATINSMALLLETTEREWITHCIRCUMFLEX*/
- /* 235 */ 235,/*LATINSMALLLETTEREWITHDIAERESIS*/
- /* 236 */ 236,/*LATINSMALLLETTERIWITHGRAVE*/
- /* 237 */ 237,/*LATINSMALLLETTERIWITHACUTE*/
- /* 238 */ 238,/*LATINSMALLLETTERIWITHCIRCUMFLEX*/
- /* 239 */ 239,/*LATINSMALLLETTERIWITHDIAERESIS*/
- /* 240 */ 240,/*LATINSMALLLETTERETH*/
- /* 241 */ 241,/*LATINSMALLLETTERNWITHTILDE*/
- /* 242 */ 242,/*LATINSMALLLETTEROWITHGRAVE*/
- /* 243 */ 243,/*LATINSMALLLETTEROWITHACUTE*/
- /* 244 */ 244,/*LATINSMALLLETTEROWITHCIRCUMFLEX*/
- /* 245 */ 245,/*LATINSMALLLETTEROWITHTILDE*/
- /* 246 */ 246,/*LATINSMALLLETTEROWITHDIAERESIS*/
- /* 247 */ 339,/*LATINSMALLLIGATUREOE*/
- /* 248 */ 248,/*LATINSMALLLETTEROWITHSTROKE*/
- /* 249 */ 249,/*LATINSMALLLETTERUWITHGRAVE*/
- /* 250 */ 250,/*LATINSMALLLETTERUWITHACUTE*/
- /* 251 */ 251,/*LATINSMALLLETTERUWITHCIRCUMFLEX*/
- /* 252 */ 252,/*LATINSMALLLETTERUWITHDIAERESIS*/
- /* 253 */ 253,/*LATINSMALLLETTERYWITHACUTE*/
- /* 254 */ 254,/*LATINSMALLLETTERTHORN*/
- /* 255 */ 223/*LATINSMALLLETTERSHARPS*/
+static convert_t tex_dcr_in[] = {
+	{ 0, 0 },
+	{ 1, 1 },
+	{ 2, 2 },
+	{ 3, 3 },
+	{ 4, 4 },
+	{ 5, 5 },
+	{ 6, 6 },
+	{ 7, 7 },
+	{ 8, 8 },
+	{ 9, 9 },
+	{ 10, 10 },
+	{ 11, 11 },
+	{ 12, 12 },
+	{ 13, 13 },
+	{ 14, 14 },
+	{ 15, 15 },
+	{ 16, 16 },
+	{ 17, 17 },
+	{ 18, 18 },
+	{ 19, 19 },
+	{ 20, 20 },
+	{ 21, 21 },
+	{ 22, 22 },
+	{ 23, 23 },
+	{ 24, 24 },
+	{ 25, 25 },
+	{ 26, 26 },
+	{ 27, 27 },
+	{ 28, 28 },
+	{ 29, 29 },
+	{ 30, 30 },
+	{ 31, 31 },
+	{ 32, 32 },
+	{ 33, 33 },
+	{ 34, 34 },
+	{ 35, 35 },
+	{ 36, 36 },
+	{ 37, 37 },
+	{ 38, 38 },
+	{ 39, 39 },
+	{ 40, 40 },
+	{ 41, 41 },
+	{ 42, 42 },
+	{ 43, 43 },
+	{ 44, 44 },
+	{ 45, 45 },
+	{ 46, 46 },
+	{ 47, 47 },
+	{ 48, 48 },
+	{ 49, 49 },
+	{ 50, 50 },
+	{ 51, 51 },
+	{ 52, 52 },
+	{ 53, 53 },
+	{ 54, 54 },
+	{ 55, 55 },
+	{ 56, 56 },
+	{ 57, 57 },
+	{ 58, 58 },
+	{ 59, 59 },
+	{ 60, 60 },
+	{ 61, 61 },
+	{ 62, 62 },
+	{ 63, 63 },
+	{ 64, 64 },
+	{ 65, 65 },
+	{ 66, 66 },
+	{ 67, 67 },
+	{ 68, 68 },
+	{ 69, 69 },
+	{ 70, 70 },
+	{ 71, 71 },
+	{ 72, 72 },
+	{ 73, 73 },
+	{ 74, 74 },
+	{ 75, 75 },
+	{ 76, 76 },
+	{ 77, 77 },
+	{ 78, 78 },
+	{ 79, 79 },
+	{ 80, 80 },
+	{ 81, 81 },
+	{ 82, 82 },
+	{ 83, 83 },
+	{ 84, 84 },
+	{ 85, 85 },
+	{ 86, 86 },
+	{ 87, 87 },
+	{ 88, 88 },
+	{ 89, 89 },
+	{ 90, 90 },
+	{ 91, 91 },
+	{ 92, 92 },
+	{ 93, 93 },
+	{ 94, 94 },
+	{ 95, 95 },
+	{ 96, 96 },
+	{ 97, 97 },
+	{ 98, 98 },
+	{ 99, 99 },
+	{ 100, 100 },
+	{ 101, 101 },
+	{ 102, 102 },
+	{ 103, 103 },
+	{ 104, 104 },
+	{ 105, 105 },
+	{ 106, 106 },
+	{ 107, 107 },
+	{ 108, 108 },
+	{ 109, 109 },
+	{ 110, 110 },
+	{ 111, 111 },
+	{ 112, 112 },
+	{ 113, 113 },
+	{ 114, 114 },
+	{ 115, 115 },
+	{ 116, 116 },
+	{ 117, 117 },
+	{ 118, 118 },
+	{ 119, 119 },
+	{ 120, 120 },
+	{ 121, 121 },
+	{ 122, 122 },
+	{ 123, 123 },
+	{ 124, 124 },
+	{ 125, 125 },
+	{ 126, 126 },
+	{ 127, 127 },
+	{ 128, 258 },
+	{ 129, 260 },
+	{ 130, 262 },
+	{ 131, 268 },
+	{ 132, 270 },
+	{ 133, 282 },
+	{ 134, 280 },
+	{ 135, 286 },
+	{ 136, 313 },
+	{ 137, 65534 },
+	{ 138, 321 },
+	{ 139, 323 },
+	{ 140, 327 },
+	{ 141, 330 },
+	{ 142, 336 },
+	{ 143, 340 },
+	{ 144, 344 },
+	{ 145, 346 },
+	{ 146, 352 },
+	{ 147, 350 },
+	{ 148, 356 },
+	{ 149, 354 },
+	{ 150, 368 },
+	{ 151, 366 },
+	{ 152, 376 },
+	{ 153, 377 },
+	{ 154, 381 },
+	{ 155, 379 },
+	{ 156, 306 },
+	{ 157, 304 },
+	{ 158, 272 },
+	{ 159, 167 },
+	{ 160, 259 },
+	{ 161, 261 },
+	{ 162, 263 },
+	{ 163, 269 },
+	{ 164, 65534 },
+	{ 165, 283 },
+	{ 166, 281 },
+	{ 167, 287 },
+	{ 168, 314 },
+	{ 169, 65534 },
+	{ 170, 322 },
+	{ 171, 324 },
+	{ 172, 328 },
+	{ 173, 331 },
+	{ 174, 337 },
+	{ 175, 341 },
+	{ 176, 345 },
+	{ 177, 347 },
+	{ 178, 353 },
+	{ 179, 351 },
+	{ 180, 65534 },
+	{ 181, 355 },
+	{ 182, 369 },
+	{ 183, 367 },
+	{ 184, 255 },
+	{ 185, 378 },
+	{ 186, 382 },
+	{ 187, 380 },
+	{ 188, 307 },
+	{ 189, 161 },
+	{ 190, 191 },
+	{ 191, 163 },
+	{ 192, 192 },
+	{ 193, 193 },
+	{ 194, 194 },
+	{ 195, 195 },
+	{ 196, 196 },
+	{ 197, 197 },
+	{ 198, 198 },
+	{ 199, 199 },
+	{ 200, 200 },
+	{ 201, 201 },
+	{ 202, 202 },
+	{ 203, 203 },
+	{ 204, 204 },
+	{ 205, 205 },
+	{ 206, 206 },
+	{ 207, 207 },
+	{ 208, 208 },
+	{ 209, 209 },
+	{ 210, 210 },
+	{ 211, 211 },
+	{ 212, 212 },
+	{ 213, 213 },
+	{ 214, 214 },
+	{ 215, 338 },
+	{ 216, 216 },
+	{ 217, 217 },
+	{ 218, 218 },
+	{ 219, 219 },
+	{ 220, 220 },
+	{ 221, 221 },
+	{ 222, 222 },
+	{ 223, 65534 },
+	{ 224, 224 },
+	{ 225, 225 },
+	{ 226, 226 },
+	{ 227, 227 },
+	{ 228, 228 },
+	{ 229, 229 },
+	{ 230, 230 },
+	{ 231, 231 },
+	{ 232, 232 },
+	{ 233, 233 },
+	{ 234, 234 },
+	{ 235, 235 },
+	{ 236, 236 },
+	{ 237, 237 },
+	{ 238, 238 },
+	{ 239, 239 },
+	{ 240, 240 },
+	{ 241, 241 },
+	{ 242, 242 },
+	{ 243, 243 },
+	{ 244, 244 },
+	{ 245, 245 },
+	{ 246, 246 },
+	{ 247, 339 },
+	{ 248, 248 },
+	{ 249, 249 },
+	{ 250, 250 },
+	{ 251, 251 },
+	{ 252, 252 },
+	{ 253, 253 },
+	{ 254, 254 },
+	{ 255, 223 },
+	{ 34, 8220 },
+	{ 34, 8221 },
+	{ 39, 8216 },
+	{ 39, 8217 },
+	{ 45, 8211 },
+	{ 45, 8212 },
+	{ 32, 8194 },
+	{ 32, 8195 },
+	{ 32, 8201 },
+	{ 65, 256 },
+	{ 65, 461 },
+	{ 97, 257 },
+	{ 97, 462 },
+	{ 67, 264 },
+	{ 67, 266 },
+	{ 99, 265 },
+	{ 99, 267 },
+	{ 100, 271 },
+	{ 69, 274 },
+	{ 69, 276 },
+	{ 69, 278 },
+	{ 101, 275 },
+	{ 101, 277 },
+	{ 101, 279 },
+	{ 71, 284 },
+	{ 71, 288 },
+	{ 71, 290 },
+	{ 71, 486 },
+	{ 71, 500 },
+	{ 103, 285 },
+	{ 103, 289 },
+	{ 103, 291 },
+	{ 103, 487 },
+	{ 103, 501 },
+	{ 72, 292 },
+	{ 104, 293 },
+	{ 73, 296 },
+	{ 73, 298 },
+	{ 73, 300 },
+	{ 73, 302 },
+	{ 73, 463 },
+	{ 105, 297 },
+	{ 105, 299 },
+	{ 105, 301 },
+	{ 105, 303 },
+	{ 105, 305 },
+	{ 105, 464 },
+	{ 74, 308 },
+	{ 106, 309 },
+	{ 75, 310 },
+	{ 75, 488 },
+	{ 107, 311 },
+	{ 107, 489 },
+	{ 76, 315 },
+	{ 76, 317 },
+	{ 76, 319 },
+	{ 108, 316 },
+	{ 108, 318 },
+	{ 108, 320 },
+	{ 77, 325 },
+	{ 109, 326 },
+	{ 109, 329 },
+	{ 78, 332 },
+	{ 78, 334 },
+	{ 78, 465 },
+	{ 78, 490 },
+	{ 110, 333 },
+	{ 110, 335 },
+	{ 110, 466 },
+	{ 110, 491 },
+	{ 82, 342 },
+	{ 114, 343 },
+	{ 83, 348 },
+	{ 115, 349 },
+	{ 116, 357 },
+	{ 85, 360 },
+	{ 85, 362 },
+	{ 85, 364 },
+	{ 85, 370 },
+	{ 85, 467 },
+	{ 117, 361 },
+	{ 117, 363 },
+	{ 117, 365 },
+	{ 117, 371 },
+	{ 117, 468 },
+	{ 87, 372 },
+	{ 119, 373 },
+	{ 89, 374 },
+	{ 121, 375 },
 };
-charconvert tex_dcr_out[] = {
- /* 0 */ 0,/*<tdbgcolor="C0C0C0"><fontface="Arial"color="000000"><b>ISO/IEC10646-1:2000CharacterName</b></font>*/
- 1,
- 2,
- 3,
- 4,
- 5,
- 6,
- 7,
- 8,
- 9,
- 10,
- 11,
- 12,
- 13,
- 14,
- 15,
- 16,
- 17,
- 18,
- 19,
- 20,
- 21,
- 22,
- 23,
- 24,
- 25,
- 26,
- 27,
- 28,
- 29,
- 30,
- 31,
- /* 32 */ 32,/*SPACE*/
- /* 33 */ 33,/*EXCLAMATIONMARK*/
- /* 34 */ 34,/*QUOTATIONMARK*/
- /* 35 */ 35,/*NUMBERSIGN*/
- /* 36 */ 36,/*DOLLARSIGN*/
- /* 37 */ 37,/*PERCENTSIGN*/
- /* 38 */ 38,/*AMPERSAND*/
- /* 39 */ 39,/*APOSTROPHE*/
- /* 40 */ 40,/*LEFTPARENTHESIS*/
- /* 41 */ 41,/*RIGHTPARENTHESIS*/
- /* 42 */ 42,/*ASTERISK*/
- /* 43 */ 43,/*PLUSSIGN*/
- /* 44 */ 44,/*COMMA*/
- /* 45 */ 45,/*HYPHEN-MINUS*/
- /* 46 */ 46,/*FULLSTOP*/
- /* 47 */ 47,/*SOLIDUS*/
- /* 48 */ 48,/*DIGITZERO*/
- /* 49 */ 49,/*DIGITONE*/
- /* 50 */ 50,/*DIGITTWO*/
- /* 51 */ 51,/*DIGITTHREE*/
- /* 52 */ 52,/*DIGITFOUR*/
- /* 53 */ 53,/*DIGITFIVE*/
- /* 54 */ 54,/*DIGITSIX*/
- /* 55 */ 55,/*DIGITSEVEN*/
- /* 56 */ 56,/*DIGITEIGHT*/
- /* 57 */ 57,/*DIGITNINE*/
- /* 58 */ 58,/*COLON*/
- /* 59 */ 59,/*SEMICOLON*/
- /* 60 */ 60,/*LESS-THANSIGN*/
- /* 61 */ 61,/*EQUALSSIGN*/
- /* 62 */ 62,/*GREATER-THANSIGN*/
- /* 63 */ 63,/*QUESTIONMARK*/
- /* 64 */ 64,/*COMMERCIALAT*/
- /* 65 */ 65,/*LATINCAPITALLETTERA*/
- /* 66 */ 66,/*LATINCAPITALLETTERB*/
- /* 67 */ 67,/*LATINCAPITALLETTERC*/
- /* 68 */ 68,/*LATINCAPITALLETTERD*/
- /* 69 */ 69,/*LATINCAPITALLETTERE*/
- /* 70 */ 70,/*LATINCAPITALLETTERF*/
- /* 71 */ 71,/*LATINCAPITALLETTERG*/
- /* 72 */ 72,/*LATINCAPITALLETTERH*/
- /* 73 */ 73,/*LATINCAPITALLETTERI*/
- /* 74 */ 74,/*LATINCAPITALLETTERJ*/
- /* 75 */ 75,/*LATINCAPITALLETTERK*/
- /* 76 */ 76,/*LATINCAPITALLETTERL*/
- /* 77 */ 77,/*LATINCAPITALLETTERM*/
- /* 78 */ 78,/*LATINCAPITALLETTERN*/
- /* 79 */ 79,/*LATINCAPITALLETTERO*/
- /* 80 */ 80,/*LATINCAPITALLETTERP*/
- /* 81 */ 81,/*LATINCAPITALLETTERQ*/
- /* 82 */ 82,/*LATINCAPITALLETTERR*/
- /* 83 */ 83,/*LATINCAPITALLETTERS*/
- /* 84 */ 84,/*LATINCAPITALLETTERT*/
- /* 85 */ 85,/*LATINCAPITALLETTERU*/
- /* 86 */ 86,/*LATINCAPITALLETTERV*/
- /* 87 */ 87,/*LATINCAPITALLETTERW*/
- /* 88 */ 88,/*LATINCAPITALLETTERX*/
- /* 89 */ 89,/*LATINCAPITALLETTERY*/
- /* 90 */ 90,/*LATINCAPITALLETTERZ*/
- /* 91 */ 91,/*LEFTSQUAREBRACKET*/
- /* 92 */ 92,/*REVERSESOLIDUS*/
- /* 93 */ 93,/*RIGHTSQUAREBRACKET*/
- /* 94 */ 94,/*CIRCUMFLEXACCENT*/
- /* 95 */ 95,/*LOWLINE*/
- /* 96 */ 96,/*GRAVEACCENT*/
- /* 97 */ 97,/*LATINSMALLLETTERA*/
- /* 98 */ 98,/*LATINSMALLLETTERB*/
- /* 99 */ 99,/*LATINSMALLLETTERC*/
- /* 100 */ 100,/*LATINSMALLLETTERD*/
- /* 101 */ 101,/*LATINSMALLLETTERE*/
- /* 102 */ 102,/*LATINSMALLLETTERF*/
- /* 103 */ 103,/*LATINSMALLLETTERG*/
- /* 104 */ 104,/*LATINSMALLLETTERH*/
- /* 105 */ 105,/*LATINSMALLLETTERI*/
- /* 106 */ 106,/*LATINSMALLLETTERJ*/
- /* 107 */ 107,/*LATINSMALLLETTERK*/
- /* 108 */ 108,/*LATINSMALLLETTERL*/
- /* 109 */ 109,/*LATINSMALLLETTERM*/
- /* 110 */ 110,/*LATINSMALLLETTERN*/
- /* 111 */ 111,/*LATINSMALLLETTERO*/
- /* 112 */ 112,/*LATINSMALLLETTERP*/
- /* 113 */ 113,/*LATINSMALLLETTERQ*/
- /* 114 */ 114,/*LATINSMALLLETTERR*/
- /* 115 */ 115,/*LATINSMALLLETTERS*/
- /* 116 */ 116,/*LATINSMALLLETTERT*/
- /* 117 */ 117,/*LATINSMALLLETTERU*/
- /* 118 */ 118,/*LATINSMALLLETTERV*/
- /* 119 */ 119,/*LATINSMALLLETTERW*/
- /* 120 */ 120,/*LATINSMALLLETTERX*/
- /* 121 */ 121,/*LATINSMALLLETTERY*/
- /* 122 */ 122,/*LATINSMALLLETTERZ*/
- /* 123 */ 123,/*LEFTCURLYBRACKET*/
- /* 124 */ 124,/*VERTICALLINE*/
- /* 125 */ 125,/*RIGHTCURLYBRACKET*/
- /* 126 */ 126,/*TILDE*/
- 127,
- /* 128 */ 258,/*LATINCAPITALLETTERAWITHBREVE*/
- /* 129 */ 260,/*LATINCAPITALLETTERAWITHOGONEK*/
- /* 130 */ 262,/*LATINCAPITALLETTERCWITHACUTE*/
- /* 131 */ 268,/*LATINCAPITALLETTERCWITHCARON*/
- /* 132 */ 270,/*LATINCAPITALLETTERDWITHCARON*/
- /* 133 */ 282,/*LATINCAPITALLETTEREWITHCARON*/
- /* 134 */ 280,/*LATINCAPITALLETTEREWITHOGONEK*/
- /* 135 */ 286,/*LATINCAPITALLETTERGWITHBREVE*/
- /* 136 */ 313,/*LATINCAPITALLETTERLWITHACUTE*/
- /* 137 */ 65534,/*LATINCAPITALLETTERLWITHCOMMA*/
- /* 138 */ 321,/*LATINCAPITALLETTERLWITHSTROKE*/
- /* 139 */ 323,/*LATINCAPITALLETTERNWITHACUTE*/
- /* 140 */ 327,/*LATINCAPITALLETTERNWITHCARON*/
- /* 141 */ 330,/*LATINCAPITALLETTERENG*/
- /* 142 */ 336,/*LATINCAPITALLETTEROWITHDOUBLEACUTE*/
- /* 143 */ 340,/*LATINCAPITALLETTERRWITHACUTE*/
- /* 144 */ 344,/*LATINCAPITALLETTERRWITHCARON*/
- /* 145 */ 346,/*LATINCAPITALLETTERSWITHACUTE*/
- /* 146 */ 352,/*LATINCAPITALLETTERSWITHCARON*/
- /* 147 */ 350,/*LATINCAPITALLETTERSWITHCEDILLA*/
- /* 148 */ 356,/*LATINCAPITALLETTERTWITHCARON*/
- /* 149 */ 354,/*LATINCAPITALLETTERTWITHCEDILLA*/
- /* 150 */ 368,/*LATINCAPITALLETTERUWITHDOUBLEACUTE*/
- /* 151 */ 366,/*LATINCAPITALLETTERUWITHRINGABOVE*/
- /* 152 */ 376,/*LATINCAPITALLETTERYWITHDIAERESIS*/
- /* 153 */ 377,/*LATINCAPITALLETTERZWITHACUTE*/
- /* 154 */ 381,/*LATINCAPITALLETTERZWITHCARON*/
- /* 155 */ 379,/*LATINCAPITALLETTERZWITHDOTABOVE*/
- /* 156 */ 306,/*LATINCAPITALLIGATUREIJ*/
- /* 157 */ 304,/*LATINCAPITALLETTERIWITHDOTABOVE*/
- /* 158 */ 272,/*LATINCAPITALLETTERDWITHSTROKE*/
- /* 159 */ 167,/*SECTIONSIGN*/
- /* 160 */ 259,/*LATINSMALLLETTERAWITHBREVE*/
- /* 161 */ 261,/*LATINSMALLLETTERAWITHOGONEK*/
- /* 162 */ 263,/*LATINSMALLLETTERCWITHACUTE*/
- /* 163 */ 269,/*LATINSMALLLETTERCWITHCARON*/
- /* 164 */ 65534,/*LATINSMALLLETTERDWITHCOMMA*/
- /* 165 */ 283,/*LATINSMALLLETTEREWITHCARON*/
- /* 166 */ 281,/*LATINSMALLLETTEREWITHOGONEK*/
- /* 167 */ 287,/*LATINSMALLLETTERGWITHBREVE*/
- /* 168 */ 314,/*LATINSMALLLETTERLWITHACUTE*/
- /* 169 */ 65534,/*LATINSMALLLETTERLWITHCOMMA*/
- /* 170 */ 322,/*LATINSMALLLETTERLWITHSTROKE*/
- /* 171 */ 324,/*LATINSMALLLETTERNWITHACUTE*/
- /* 172 */ 328,/*LATINSMALLLETTERNWITHCARON*/
- /* 173 */ 331,/*LATINSMALLLETTERENG*/
- /* 174 */ 337,/*LATINSMALLLETTEROWITHDOUBLEACUTE*/
- /* 175 */ 341,/*LATINSMALLLETTERRWITHACUTE*/
- /* 176 */ 345,/*LATINSMALLLETTERRWITHCARON*/
- /* 177 */ 347,/*LATINSMALLLETTERSWITHACUTE*/
- /* 178 */ 353,/*LATINSMALLLETTERSWITHCARON*/
- /* 179 */ 351,/*LATINSMALLLETTERSWITHCEDILLA*/
- /* 180 */ 65534,/*LATINSMALLLETTERTWITHCOMMA*/
- /* 181 */ 355,/*LATINSMALLLETTERTWITHCEDILLA*/
- /* 182 */ 369,/*LATINSMALLLETTERUWITHDOUBLEACUTE*/
- /* 183 */ 367,/*LATINSMALLLETTERUWITHRINGABOVE*/
- /* 184 */ 255,/*LATINSMALLLETTERYWITHDIAERESIS*/
- /* 185 */ 378,/*LATINSMALLLETTERZWITHACUTE*/
- /* 186 */ 382,/*LATINSMALLLETTERZWITHCARON*/
- /* 187 */ 380,/*LATINSMALLLETTERZWITHDOTABOVE*/
- /* 188 */ 307,/*LATINSMALLLIGATUREIJ*/
- /* 189 */ 161,/*INVERTEDEXCLAMATIONMARK*/
- /* 190 */ 191,/*INVERTEDQUESTIONMARK*/
- /* 191 */ 163,/*POUNDSIGN*/
- /* 192 */ 192,/*LATINCAPITALLETTERAWITHGRAVE*/
- /* 193 */ 193,/*LATINCAPITALLETTERAWITHACUTE*/
- /* 194 */ 194,/*LATINCAPITALLETTERAWITHCIRCUMFLEX*/
- /* 195 */ 195,/*LATINCAPITALLETTERAWITHTILDE*/
- /* 196 */ 196,/*LATINCAPITALLETTERAWITHDIAERESIS*/
- /* 197 */ 197,/*LATINCAPITALLETTERAWITHRINGABOVE*/
- /* 198 */ 198,/*LATINCAPITALLETTERAE*/
- /* 199 */ 199,/*LATINCAPITALLETTERCWITHCEDILLA*/
- /* 200 */ 200,/*LATINCAPITALLETTEREWITHGRAVE*/
- /* 201 */ 201,/*LATINCAPITALLETTEREWITHACUTE*/
- /* 202 */ 202,/*LATINCAPITALLETTEREWITHCIRCUMFLEX*/
- /* 203 */ 203,/*LATINCAPITALLETTEREWITHDIAERESIS*/
- /* 204 */ 204,/*LATINCAPITALLETTERIWITHGRAVE*/
- /* 205 */ 205,/*LATINCAPITALLETTERIWITHACUTE*/
- /* 206 */ 206,/*LATINCAPITALLETTERIWITHCIRCUMFLEX*/
- /* 207 */ 207,/*LATINCAPITALLETTERIWITHDIAERESIS*/
- /* 208 */ 208,/*LATINCAPITALLETTERETH*/
- /* 209 */ 209,/*LATINCAPITALLETTERNWITHTILDE*/
- /* 210 */ 210,/*LATINCAPITALLETTEROWITHGRAVE*/
- /* 211 */ 211,/*LATINCAPITALLETTEROWITHACUTE*/
- /* 212 */ 212,/*LATINCAPITALLETTEROWITHCIRCUMFLEX*/
- /* 213 */ 213,/*LATINCAPITALLETTEROWITHTILDE*/
- /* 214 */ 214,/*LATINCAPITALLETTEROWITHDIAERESIS*/
- /* 215 */ 338,/*LATINCAPITALLIGATUREOE*/
- /* 216 */ 216,/*LATINCAPITALLETTEROWITHSTROKE*/
- /* 217 */ 217,/*LATINCAPITALLETTERUWITHGRAVE*/
- /* 218 */ 218,/*LATINCAPITALLETTERUWITHACUTE*/
- /* 219 */ 219,/*LATINCAPITALLETTERUWITHCIRCUMFLEX*/
- /* 220 */ 220,/*LATINCAPITALLETTERUWITHDIAERESIS*/
- /* 221 */ 221,/*LATINCAPITALLETTERYWITHACUTE*/
- /* 222 */ 222,/*LATINCAPITALLETTERTHORN*/
- /* 223 */ 65534,/*LATINCAPITALLIGATURESS*/
- /* 224 */ 224,/*LATINSMALLLETTERAWITHGRAVE*/
- /* 225 */ 225,/*LATINSMALLLETTERAWITHACUTE*/
- /* 226 */ 226,/*LATINSMALLLETTERAWITHCIRCUMFLEX*/
- /* 227 */ 227,/*LATINSMALLLETTERAWITHTILDE*/
- /* 228 */ 228,/*LATINSMALLLETTERAWITHDIAERESIS*/
- /* 229 */ 229,/*LATINSMALLLETTERAWITHRINGABOVE*/
- /* 230 */ 230,/*LATINSMALLLETTERAE*/
- /* 231 */ 231,/*LATINSMALLLETTERCWITHCEDILLA*/
- /* 232 */ 232,/*LATINSMALLLETTEREWITHGRAVE*/
- /* 233 */ 233,/*LATINSMALLLETTEREWITHACUTE*/
- /* 234 */ 234,/*LATINSMALLLETTEREWITHCIRCUMFLEX*/
- /* 235 */ 235,/*LATINSMALLLETTEREWITHDIAERESIS*/
- /* 236 */ 236,/*LATINSMALLLETTERIWITHGRAVE*/
- /* 237 */ 237,/*LATINSMALLLETTERIWITHACUTE*/
- /* 238 */ 238,/*LATINSMALLLETTERIWITHCIRCUMFLEX*/
- /* 239 */ 239,/*LATINSMALLLETTERIWITHDIAERESIS*/
- /* 240 */ 240,/*LATINSMALLLETTERETH*/
- /* 241 */ 241,/*LATINSMALLLETTERNWITHTILDE*/
- /* 242 */ 242,/*LATINSMALLLETTEROWITHGRAVE*/
- /* 243 */ 243,/*LATINSMALLLETTEROWITHACUTE*/
- /* 244 */ 244,/*LATINSMALLLETTEROWITHCIRCUMFLEX*/
- /* 245 */ 245,/*LATINSMALLLETTEROWITHTILDE*/
- /* 246 */ 246,/*LATINSMALLLETTEROWITHDIAERESIS*/
- /* 247 */ 339,/*LATINSMALLLIGATUREOE*/
- /* 248 */ 248,/*LATINSMALLLETTEROWITHSTROKE*/
- /* 249 */ 249,/*LATINSMALLLETTERUWITHGRAVE*/
- /* 250 */ 250,/*LATINSMALLLETTERUWITHACUTE*/
- /* 251 */ 251,/*LATINSMALLLETTERUWITHCIRCUMFLEX*/
- /* 252 */ 252,/*LATINSMALLLETTERUWITHDIAERESIS*/
- /* 253 */ 253,/*LATINSMALLLETTERYWITHACUTE*/
- /* 254 */ 254,/*LATINSMALLLETTERTHORN*/
- /* 255 */ 223/*LATINSMALLLETTERSHARPS*/
+static convert_t tex_dcr_out[] = {
+	{ 0, 0 },
+	{ 1, 1 },
+	{ 2, 2 },
+	{ 3, 3 },
+	{ 4, 4 },
+	{ 5, 5 },
+	{ 6, 6 },
+	{ 7, 7 },
+	{ 8, 8 },
+	{ 9, 9 },
+	{ 10, 10 },
+	{ 11, 11 },
+	{ 12, 12 },
+	{ 13, 13 },
+	{ 14, 14 },
+	{ 15, 15 },
+	{ 16, 16 },
+	{ 17, 17 },
+	{ 18, 18 },
+	{ 19, 19 },
+	{ 20, 20 },
+	{ 21, 21 },
+	{ 22, 22 },
+	{ 23, 23 },
+	{ 24, 24 },
+	{ 25, 25 },
+	{ 26, 26 },
+	{ 27, 27 },
+	{ 28, 28 },
+	{ 29, 29 },
+	{ 30, 30 },
+	{ 31, 31 },
+	{ 32, 32 },
+	{ 33, 33 },
+	{ 34, 34 },
+	{ 35, 35 },
+	{ 36, 36 },
+	{ 37, 37 },
+	{ 38, 38 },
+	{ 39, 39 },
+	{ 40, 40 },
+	{ 41, 41 },
+	{ 42, 42 },
+	{ 43, 43 },
+	{ 44, 44 },
+	{ 45, 45 },
+	{ 46, 46 },
+	{ 47, 47 },
+	{ 48, 48 },
+	{ 49, 49 },
+	{ 50, 50 },
+	{ 51, 51 },
+	{ 52, 52 },
+	{ 53, 53 },
+	{ 54, 54 },
+	{ 55, 55 },
+	{ 56, 56 },
+	{ 57, 57 },
+	{ 58, 58 },
+	{ 59, 59 },
+	{ 60, 60 },
+	{ 61, 61 },
+	{ 62, 62 },
+	{ 63, 63 },
+	{ 64, 64 },
+	{ 65, 65 },
+	{ 66, 66 },
+	{ 67, 67 },
+	{ 68, 68 },
+	{ 69, 69 },
+	{ 70, 70 },
+	{ 71, 71 },
+	{ 72, 72 },
+	{ 73, 73 },
+	{ 74, 74 },
+	{ 75, 75 },
+	{ 76, 76 },
+	{ 77, 77 },
+	{ 78, 78 },
+	{ 79, 79 },
+	{ 80, 80 },
+	{ 81, 81 },
+	{ 82, 82 },
+	{ 83, 83 },
+	{ 84, 84 },
+	{ 85, 85 },
+	{ 86, 86 },
+	{ 87, 87 },
+	{ 88, 88 },
+	{ 89, 89 },
+	{ 90, 90 },
+	{ 91, 91 },
+	{ 92, 92 },
+	{ 93, 93 },
+	{ 94, 94 },
+	{ 95, 95 },
+	{ 96, 96 },
+	{ 97, 97 },
+	{ 98, 98 },
+	{ 99, 99 },
+	{ 100, 100 },
+	{ 101, 101 },
+	{ 102, 102 },
+	{ 103, 103 },
+	{ 104, 104 },
+	{ 105, 105 },
+	{ 106, 106 },
+	{ 107, 107 },
+	{ 108, 108 },
+	{ 109, 109 },
+	{ 110, 110 },
+	{ 111, 111 },
+	{ 112, 112 },
+	{ 113, 113 },
+	{ 114, 114 },
+	{ 115, 115 },
+	{ 116, 116 },
+	{ 117, 117 },
+	{ 118, 118 },
+	{ 119, 119 },
+	{ 120, 120 },
+	{ 121, 121 },
+	{ 122, 122 },
+	{ 123, 123 },
+	{ 124, 124 },
+	{ 125, 125 },
+	{ 126, 126 },
+	{ 127, 127 },
+	{ 128, 258 },
+	{ 129, 260 },
+	{ 130, 262 },
+	{ 131, 268 },
+	{ 132, 270 },
+	{ 133, 282 },
+	{ 134, 280 },
+	{ 135, 286 },
+	{ 136, 313 },
+	{ 137, 65534 },
+	{ 138, 321 },
+	{ 139, 323 },
+	{ 140, 327 },
+	{ 141, 330 },
+	{ 142, 336 },
+	{ 143, 340 },
+	{ 144, 344 },
+	{ 145, 346 },
+	{ 146, 352 },
+	{ 147, 350 },
+	{ 148, 356 },
+	{ 149, 354 },
+	{ 150, 368 },
+	{ 151, 366 },
+	{ 152, 376 },
+	{ 153, 377 },
+	{ 154, 381 },
+	{ 155, 379 },
+	{ 156, 306 },
+	{ 157, 304 },
+	{ 158, 272 },
+	{ 159, 167 },
+	{ 160, 259 },
+	{ 161, 261 },
+	{ 162, 263 },
+	{ 163, 269 },
+	{ 164, 65534 },
+	{ 165, 283 },
+	{ 166, 281 },
+	{ 167, 287 },
+	{ 168, 314 },
+	{ 169, 65534 },
+	{ 170, 322 },
+	{ 171, 324 },
+	{ 172, 328 },
+	{ 173, 331 },
+	{ 174, 337 },
+	{ 175, 341 },
+	{ 176, 345 },
+	{ 177, 347 },
+	{ 178, 353 },
+	{ 179, 351 },
+	{ 180, 65534 },
+	{ 181, 355 },
+	{ 182, 369 },
+	{ 183, 367 },
+	{ 184, 255 },
+	{ 185, 378 },
+	{ 186, 382 },
+	{ 187, 380 },
+	{ 188, 307 },
+	{ 189, 161 },
+	{ 190, 191 },
+	{ 191, 163 },
+	{ 192, 192 },
+	{ 193, 193 },
+	{ 194, 194 },
+	{ 195, 195 },
+	{ 196, 196 },
+	{ 197, 197 },
+	{ 198, 198 },
+	{ 199, 199 },
+	{ 200, 200 },
+	{ 201, 201 },
+	{ 202, 202 },
+	{ 203, 203 },
+	{ 204, 204 },
+	{ 205, 205 },
+	{ 206, 206 },
+	{ 207, 207 },
+	{ 208, 208 },
+	{ 209, 209 },
+	{ 210, 210 },
+	{ 211, 211 },
+	{ 212, 212 },
+	{ 213, 213 },
+	{ 214, 214 },
+	{ 215, 338 },
+	{ 216, 216 },
+	{ 217, 217 },
+	{ 218, 218 },
+	{ 219, 219 },
+	{ 220, 220 },
+	{ 221, 221 },
+	{ 222, 222 },
+	{ 223, 65534 },
+	{ 224, 224 },
+	{ 225, 225 },
+	{ 226, 226 },
+	{ 227, 227 },
+	{ 228, 228 },
+	{ 229, 229 },
+	{ 230, 230 },
+	{ 231, 231 },
+	{ 232, 232 },
+	{ 233, 233 },
+	{ 234, 234 },
+	{ 235, 235 },
+	{ 236, 236 },
+	{ 237, 237 },
+	{ 238, 238 },
+	{ 239, 239 },
+	{ 240, 240 },
+	{ 241, 241 },
+	{ 242, 242 },
+	{ 243, 243 },
+	{ 244, 244 },
+	{ 245, 245 },
+	{ 246, 246 },
+	{ 247, 339 },
+	{ 248, 248 },
+	{ 249, 249 },
+	{ 250, 250 },
+	{ 251, 251 },
+	{ 252, 252 },
+	{ 253, 253 },
+	{ 254, 254 },
+	{ 255, 223 },
+	{ 34, 8220 },
+	{ 34, 8221 },
+	{ 39, 8216 },
+	{ 39, 8217 },
+	{ 45, 8211 },
+	{ 45, 8212 },
+	{ 32, 8194 },
+	{ 32, 8195 },
+	{ 32, 8201 },
+	{ 65, 256 },
+	{ 65, 461 },
+	{ 97, 257 },
+	{ 97, 462 },
+	{ 67, 264 },
+	{ 67, 266 },
+	{ 99, 265 },
+	{ 99, 267 },
+	{ 100, 271 },
+	{ 69, 274 },
+	{ 69, 276 },
+	{ 69, 278 },
+	{ 101, 275 },
+	{ 101, 277 },
+	{ 101, 279 },
+	{ 71, 284 },
+	{ 71, 288 },
+	{ 71, 290 },
+	{ 71, 486 },
+	{ 71, 500 },
+	{ 103, 285 },
+	{ 103, 289 },
+	{ 103, 291 },
+	{ 103, 487 },
+	{ 103, 501 },
+	{ 72, 292 },
+	{ 104, 293 },
+	{ 73, 296 },
+	{ 73, 298 },
+	{ 73, 300 },
+	{ 73, 302 },
+	{ 73, 463 },
+	{ 105, 297 },
+	{ 105, 299 },
+	{ 105, 301 },
+	{ 105, 303 },
+	{ 105, 305 },
+	{ 105, 464 },
+	{ 74, 308 },
+	{ 106, 309 },
+	{ 75, 310 },
+	{ 75, 488 },
+	{ 107, 311 },
+	{ 107, 489 },
+	{ 76, 315 },
+	{ 76, 317 },
+	{ 76, 319 },
+	{ 108, 316 },
+	{ 108, 318 },
+	{ 108, 320 },
+	{ 77, 325 },
+	{ 109, 326 },
+	{ 109, 329 },
+	{ 78, 332 },
+	{ 78, 334 },
+	{ 78, 465 },
+	{ 78, 490 },
+	{ 110, 333 },
+	{ 110, 335 },
+	{ 110, 466 },
+	{ 110, 491 },
+	{ 82, 342 },
+	{ 114, 343 },
+	{ 83, 348 },
+	{ 115, 349 },
+	{ 116, 357 },
+	{ 85, 360 },
+	{ 85, 362 },
+	{ 85, 364 },
+	{ 85, 370 },
+	{ 85, 467 },
+	{ 117, 361 },
+	{ 117, 363 },
+	{ 117, 365 },
+	{ 117, 371 },
+	{ 117, 468 },
+	{ 87, 372 },
+	{ 119, 373 },
+	{ 89, 374 },
+	{ 121, 375 },
 };
 allcharconvert_t allcharconvert[] = {
-
-{ "adobeiso", "", &(adobeiso[0]), sizeof(adobeiso)/sizeof(charconvert) },
-{ "adobestd", "", &(adobestd[0]), sizeof(adobestd)/sizeof(charconvert) },
-{ "adobesym", "", &(adobesym[0]), sizeof(adobesym)/sizeof(charconvert) },
-{ "applecro", "", &(applecro[0]), sizeof(applecro)/sizeof(charconvert) },
-{ "applecyr", "", &(applecyr[0]), sizeof(applecyr)/sizeof(charconvert) },
-{ "applegk2", "", &(applegk2[0]), sizeof(applegk2)/sizeof(charconvert) },
-{ "applegrk", "", &(applegrk[0]), sizeof(applegrk)/sizeof(charconvert) },
-{ "macice", "", &(appleice[0]), sizeof(appleice)/sizeof(charconvert) }, /* appleice */
-{ "macroman", "", &(applerom[0]), sizeof(applerom)/sizeof(charconvert) }, /*applerom */
-{ "macromanian", "", &(applerum[0]), sizeof(applerum)/sizeof(charconvert) }, /* applerum */
-{ "macturkish", "", &(appletur[0]), sizeof(appletur)/sizeof(charconvert) }, /* appleturk */
-{ "atarist", "", &(atarist[0]), sizeof(atarist)/sizeof(charconvert) },
-{ "cp1250", "", &(cp1250[0]), sizeof(cp1250)/sizeof(charconvert) },
-{ "cp1251", "", &(cp1251[0]), sizeof(cp1251)/sizeof(charconvert) },
-{ "cp1252", "", &(cp1252[0]), sizeof(cp1252)/sizeof(charconvert) },
-{ "cp1253", "", &(cp1253[0]), sizeof(cp1253)/sizeof(charconvert) },
-{ "cp1254", "", &(cp1254[0]), sizeof(cp1254)/sizeof(charconvert) },
-{ "cp1255", "", &(cp1255[0]), sizeof(cp1255)/sizeof(charconvert) },
-{ "cp1256", "", &(cp1256[0]), sizeof(cp1256)/sizeof(charconvert) },
-{ "cp1257", "", &(cp1257[0]), sizeof(cp1257)/sizeof(charconvert) },
-{ "cp1258", "", &(cp1258[0]), sizeof(cp1258)/sizeof(charconvert) },
-{ "cp437", "", &(cp437[0]), sizeof(cp437)/sizeof(charconvert) },
-{ "cp737", "", &(cp737[0]), sizeof(cp737)/sizeof(charconvert) },
-{ "cp775", "", &(cp775[0]), sizeof(cp775)/sizeof(charconvert) },
-{ "cp850", "", &(cp850[0]), sizeof(cp850)/sizeof(charconvert) },
-{ "cp851", "", &(cp851[0]), sizeof(cp851)/sizeof(charconvert) },
-{ "cp852", "", &(cp852[0]), sizeof(cp852)/sizeof(charconvert) },
-{ "cp853", "", &(cp853[0]), sizeof(cp853)/sizeof(charconvert) },
-{ "cp855", "", &(cp855[0]), sizeof(cp855)/sizeof(charconvert) },
-{ "cp857", "", &(cp857[0]), sizeof(cp857)/sizeof(charconvert) },
-{ "cp860", "", &(cp860[0]), sizeof(cp860)/sizeof(charconvert) },
-{ "cp861", "", &(cp861[0]), sizeof(cp861)/sizeof(charconvert) },
-{ "cp862", "", &(cp862[0]), sizeof(cp862)/sizeof(charconvert) },
-{ "cp863", "", &(cp863[0]), sizeof(cp863)/sizeof(charconvert) },
-{ "cp864", "", &(cp864[0]), sizeof(cp864)/sizeof(charconvert) },
-{ "cp865", "", &(cp865[0]), sizeof(cp865)/sizeof(charconvert) },
-{ "cp866", "", &(cp866[0]), sizeof(cp866)/sizeof(charconvert) },
-{ "cp869", "", &(cp869[0]), sizeof(cp869)/sizeof(charconvert) },
-{ "cp874", "", &(cp874[0]), sizeof(cp874)/sizeof(charconvert) },
-{ "cp895", "", &(cp895[0]), sizeof(cp895)/sizeof(charconvert) },
-{ "decmcs", "", &(decmcs[0]), sizeof(decmcs)/sizeof(charconvert) },
-{ "ebc037", "", &(ebc037[0]), sizeof(ebc037)/sizeof(charconvert) },
-{ "ebc1026", "", &(ebc1026[0]), sizeof(ebc1026)/sizeof(charconvert) },
-{ "ebc1047", "", &(ebc1047[0]), sizeof(ebc1047)/sizeof(charconvert) },
-{ "ebc500", "", &(ebc500[0]), sizeof(ebc500)/sizeof(charconvert) },
-{ "ebc875", "", &(ebc875[0]), sizeof(ebc875)/sizeof(charconvert) },
-{ "hp48", "", &(hp48[0]), sizeof(hp48)/sizeof(charconvert) },
-{ "hproman8", "", &(hproman8[0]), sizeof(hproman8)/sizeof(charconvert) },
-{ "iso646_ca", "", &(iso646_ca[0]), sizeof(iso646_ca)/sizeof(charconvert) },
-{ "iso646_ch", "", &(iso646_ch[0]), sizeof(iso646_ch)/sizeof(charconvert) },
-{ "iso646_de", "", &(iso646_de[0]), sizeof(iso646_de)/sizeof(charconvert) },
-{ "iso646_es", "", &(iso646_es[0]), sizeof(iso646_es)/sizeof(charconvert) },
-{ "iso646_fi", "", &(iso646_fi[0]), sizeof(iso646_fi)/sizeof(charconvert) },
-{ "iso646_fr", "", &(iso646_fr[0]), sizeof(iso646_fr)/sizeof(charconvert) },
-{ "iso646_gb", "", &(iso646_gb[0]), sizeof(iso646_gb)/sizeof(charconvert) },
-{ "iso646", "", &(iso646[0]), sizeof(iso646)/sizeof(charconvert) },
-{ "iso646_irv", "", &(iso646_irv[0]), sizeof(iso646_irv)/sizeof(charconvert) },
-{ "iso646_it", "", &(iso646_it[0]), sizeof(iso646_it)/sizeof(charconvert) },
-{ "iso646_nl", "", &(iso646_nl[0]), sizeof(iso646_nl)/sizeof(charconvert) },
-{ "iso646_no", "", &(iso646_no[0]), sizeof(iso646_no)/sizeof(charconvert) },
-{ "iso646_pt", "", &(iso646_pt[0]), sizeof(iso646_pt)/sizeof(charconvert) },
-{ "iso646_se", "", &(iso646_se[0]), sizeof(iso646_se)/sizeof(charconvert) },
-{ "iso8859_10", "ISO-8859-10", &(iso8859_10[0]), sizeof(iso8859_10)/sizeof(charconvert) },
-{ "iso8859_13", "ISO-8859-13", &(iso8859_13[0]), sizeof(iso8859_13)/sizeof(charconvert) },
-{ "iso8859_14", "ISO-8859-14", &(iso8859_14[0]), sizeof(iso8859_14)/sizeof(charconvert) },
-{ "iso8859_15", "ISO-8859-15", &(iso8859_15[0]), sizeof(iso8859_15)/sizeof(charconvert) },
-{ "iso8859_1", "ISO-8859-1", &(iso8859_1[0]), sizeof(iso8859_1)/sizeof(charconvert) },
-{ "iso8859_2", "ISO-8859-2", &(iso8859_2[0]), sizeof(iso8859_2)/sizeof(charconvert) },
-{ "iso8859_3", "ISO-8859-3", &(iso8859_3[0]), sizeof(iso8859_3)/sizeof(charconvert) },
-{ "iso8859_4", "ISO-8859-4", &(iso8859_4[0]), sizeof(iso8859_4)/sizeof(charconvert) },
-{ "iso8859_5", "ISO-8859-5", &(iso8859_5[0]), sizeof(iso8859_5)/sizeof(charconvert) },
-{ "iso8859_6", "ISO-8859-6", &(iso8859_6[0]), sizeof(iso8859_6)/sizeof(charconvert) },
-{ "iso8859_7", "ISO-8859-7", &(iso8859_7[0]), sizeof(iso8859_7)/sizeof(charconvert) },
-{ "iso8859_8", "ISO-8859-8", &(iso8859_8[0]), sizeof(iso8859_8)/sizeof(charconvert) },
-{ "iso8859_9", "ISO-8859-9", &(iso8859_9[0]), sizeof(iso8859_9)/sizeof(charconvert) },
-{ "koi8_r", "", &(koi8_r[0]), sizeof(koi8_r)/sizeof(charconvert) },
-{ "mslinedr", "", &(mslinedr[0]), sizeof(mslinedr)/sizeof(charconvert)},
-{ "nextstep", "", &(nextstep[0]), sizeof(nextstep)/sizeof(charconvert)},
-{ "symbol", "", &(symbol[0]), sizeof(symbol)/sizeof(charconvert)},
-{ "tex_dcr_in", "", &(tex_dcr_in[0]), sizeof(tex_dcr_in)/sizeof(charconvert)},
-{ "tex_dcr_out", "", &(tex_dcr_out[0]), sizeof(tex_dcr_out)/sizeof(charconvert)},
+{ "adobeiso",
+	"Adobe ISO",
+	{ "ADOBEISO", "", "", "", "", "", "", },
+	CHARSETARRAY( adobeiso )
+},
+{ "adobestd",
+	"Adobe Standard",
+	{ "ADOBESTD", "", "", "", "", "", "", },
+	CHARSETARRAY( adobestd )
+},
+{ "adobesym",
+	"Adobe Symbol",
+	{ "ADOBESYM", "", "", "", "", "", "", },
+	CHARSETARRAY( adobesym )
+},
+{ "applecro",
+	"Apple Croatian",
+	{ "APPLECRO", "MACCRO", "", "", "", "", "", },
+	CHARSETARRAY( applecro )
+},
+{ "applecyr",
+	"Apple Cyrillic",
+	{ "MACCYRILLIC", "X-MAC-CYRILLIC", "", "", "", "", "", },
+	CHARSETARRAY( applecyr )
+},
+{ "applegk2",
+	"Apple Greek 2",
+	{ "APPLEGK2", "", "", "", "", "", "", },
+	CHARSETARRAY( applegk2 )
+},
+{ "applegrk",
+	"Apple Greek",
+	{ "MACGRK", "APPLEGRK", "", "", "", "", "", },
+	CHARSETARRAY( applegrk )
+},
+{ "macice",
+	"Macintosh Iceland(?)",
+	{ "MACICE", "APPLEICE", "", "", "", "", "", },
+	CHARSETARRAY( macice )
+},
+{ "macroman",
+	"Macintosh Roman",
+	{ "MACROMAN", "APPLEROM", "CSMACINTOSH", "MACINTOSH", "MAC", "", "", },
+	CHARSETARRAY( macroman )
+},
+{ "macromanian",
+	"Macintosh Romanian",
+	{ "MACROMANIAN", "APPLERUM", "", "", "", "", "", },
+	CHARSETARRAY( macromanian )
+},
+{ "macturkish",
+	"Macintosh Turkish",
+	{ "MACTURKISH", "APPLETURK", "", "", "", "", "", },
+	CHARSETARRAY( macturkish )
+},
+{ "atarist",
+	"Atari ST",
+	{ "ATARIST", "", "", "", "", "", "", },
+	CHARSETARRAY( atarist )
+},
+{ "cp437",
+	"MS-DOS Code Page 437 from original IBM PC",
+	{ "CP437", "IBM437", "437", "", "", "", "", },
+	CHARSETARRAY( cp437 )
+},
+{ "cp737",
+	"MS-DOS Code Page 737 Greek",
+	{ "CP737", "IBM737", "737", "", "", "", "", },
+	CHARSETARRAY( cp737 )
+},
+{ "cp775",
+	"MS-DOS Code Page 775 Baltic languages",
+	{ "CP775", "IBM775", "775", "", "", "", "", },
+	CHARSETARRAY( cp775 )
+},
+{ "cp850",
+	"MS-DOS Code Page 850 Western Europe",
+	{ "CP850", "IBM850", "CSPC850MULTILINGUAL", "850", "", "", "", },
+	CHARSETARRAY( cp850 )
+},
+{ "cp851",
+	"MS-DOS Code Page 851 Greek 1",
+	{ "CP851", "IBM851", "851", "", "", "", "", },
+	CHARSETARRAY( cp851 )
+},
+{ "cp852",
+	"MS-DOS Code Page 852 Central European languages",
+	{ "CP852", "IBM852", "852", "", "", "", "", },
+	CHARSETARRAY( cp852 )
+},
+{ "cp853",
+	"MS-DOS Code Page 853 Multilingual Latin 3",
+	{ "CP853", "IBM853", "853", "", "", "", "", },
+	CHARSETARRAY( cp853 )
+},
+{ "cp855",
+	"MS-DOS Code Page 855 Cyrillic",
+	{ "CP855", "IBM855", "855", "", "", "", "", },
+	CHARSETARRAY( cp855 )
+},
+{ "cp857",
+	"MS-DOS Code Page 857 Turkish",
+	{ "CP857", "IBM857", "857", "", "", "", "", },
+	CHARSETARRAY( cp857 )
+},
+{ "cp860",
+	"MS-DOS Code Page 860 Portugese",
+	{ "CP860", "IBM860", "860", "", "", "", "", },
+	CHARSETARRAY( cp860 )
+},
+{ "cp861",
+	"MS-DOS Code Page 861 Icelandic languages",
+	{ "CP861", "IBM861", "861", "", "", "", "", },
+	CHARSETARRAY( cp861 )
+},
+{ "cp862",
+	"MS-DOS Code Page 862 Hebrew",
+	{ "CP862", "IBM862", "862", "", "", "", "", },
+	CHARSETARRAY( cp862 )
+},
+{ "cp863",
+	"MS-DOS Code Page 863 French",
+	{ "CP863", "IBM863", "863", "", "", "", "", },
+	CHARSETARRAY( cp863 )
+},
+{ "cp864",
+	"MS-DOS Code Page 864 Arabic",
+	{ "CP864", "IBM864", "864", "", "", "", "", },
+	CHARSETARRAY( cp864 )
+},
+{ "cp865",
+	"MS-DOS Code Page 865 Nordic languages",
+	{ "CP865", "IBM865", "865", "", "", "", "", },
+	CHARSETARRAY( cp865 )
+},
+{ "cp866",
+	"MS-DOS Code Page 866 Cyrillic",
+	{ "CP866", "IBM866", "866", "CSIBM866", "", "", "", },
+	CHARSETARRAY( cp866 )
+},
+{ "cp869",
+	"MS-DOS Code Page 869 Greek",
+	{ "CP869", "IBM869", "869", "", "", "", "", },
+	CHARSETARRAY( cp869 )
+},
+{ "cp874",
+	"Windows-874 Thai",
+	{ "CP874", "WINDOWS-874", "MS874", "X-WINDOWS-874", "X-IBM874", "874", "", },
+	CHARSETARRAY( cp874 )
+},
+{ "cp895",
+	"MS-DOS Code Page 895 Kamenicky encoding",
+	{ "CP895", "895", "", "", "", "", "", },
+	CHARSETARRAY( cp895 )
+},
+{ "cp1250",
+	"Windows-1250 Central and Eastern European",
+	{ "CP1250", "WINDOWS-1250", "MS-EE", "", "", "", "", },
+	CHARSETARRAY( cp1250 )
+},
+{ "cp1251",
+	"Windows-1251 Cyrillic",
+	{ "CP1251", "WINDOWS-1251", "MS-CYRL", "", "", "", "", },
+	CHARSETARRAY( cp1251 )
+},
+{ "cp1252",
+	"Windows-1252 ISO 8859-1 superset",
+	{ "CP1252", "WINDOWS-1252", "MS-ANSI", "", "", "", "", },
+	CHARSETARRAY( cp1252 )
+},
+{ "cp1253",
+	"Windows-1253 Greek",
+	{ "CP1253", "WINDOWS-1253", "MS-GREEK", "", "", "", "", },
+	CHARSETARRAY( cp1253 )
+},
+{ "cp1254",
+	"Windows-1254 Turkish",
+	{ "CP1254", "WINDOWS-1254", "MS-TURK", "", "", "", "", },
+	CHARSETARRAY( cp1254 )
+},
+{ "cp1255",
+	"Windows-1255 ISO 8859-8 Hebrew",
+	{ "CP1255", "WINDOWS-1255", "MS-HEBR", "", "", "", "", },
+	CHARSETARRAY( cp1255 )
+},
+{ "cp1256",
+	"Windows-1256 Arabic",
+	{ "CP1256", "WINDOWS-1256", "MS-ARAB", "", "", "", "", },
+	CHARSETARRAY( cp1256 )
+},
+{ "cp1257",
+	"Windows-1257 Baltic languages",
+	{ "CP1257", "WINDOWS-1257", "WINBALTRIM", "", "", "", "", },
+	CHARSETARRAY( cp1257 )
+},
+{ "cp1258",
+	"Windows-1258 Vietnamese",
+	{ "CP1258", "WINDOWS-1258", "", "", "", "", "", },
+	CHARSETARRAY( cp1258 )
+},
+{ "decmcs",
+	"DEC Multinational Character Set",
+	{ "DECMCS", "", "", "", "", "", "", },
+	CHARSETARRAY( decmcs )
+},
+{ "ebc037",
+	"EBCDIC Codepage 037 Latin-1",
+	{ "EBC037", "", "", "", "", "", "", },
+	CHARSETARRAY( ebc037 )
+},
+{ "ebc1026",
+	"EBCDIC 1026 Turkish",
+	{ "EBC1026", "", "", "", "", "", "", },
+	CHARSETARRAY( ebc1026 )
+},
+{ "ebc1047",
+	"EBCDIC 1047 Latin 1",
+	{ "EBC1047", "", "", "", "", "", "", },
+	CHARSETARRAY( ebc1047 )
+},
+{ "ebc500",
+	"EBCDIC 500 Latin 1",
+	{ "EBC500", "", "", "", "", "", "", },
+	CHARSETARRAY( ebc500 )
+},
+{ "ebc875",
+	"EBCDIC 875 Greek",
+	{ "EBC875", "", "", "", "", "", "", },
+	CHARSETARRAY( ebc875 )
+},
+{ "hp48",
+	"HP48",
+	{ "HP48", "", "", "", "", "", "", },
+	CHARSETARRAY( hp48 )
+},
+{ "hproman8",
+	"HP Roman8",
+	{ "HPROMAN8", "", "", "", "", "", "", },
+	CHARSETARRAY( hproman8 )
+},
+{ "iso646",
+	"ISO/IEC 646",
+	{ "ISO646", "", "", "", "", "", "", },
+	CHARSETARRAY( iso646 )
+},
+{ "iso646_irv",
+	"ISO/IEC 646-IRV International Reference Variant",
+	{ "ISO646-IRV", "", "", "", "", "", "", },
+	CHARSETARRAY( iso646_irv )
+},
+{ "iso646_ca",
+	"ISO/IEC 646-CA Canada",
+	{ "ISO646-CA", "", "", "", "", "", "", },
+	CHARSETARRAY( iso646_ca )
+},
+{ "iso646_ch",
+	"ISO/IEC 646-CH",
+	{ "ISO646-CH", "", "", "", "", "", "", },
+	CHARSETARRAY( iso646_ch )
+},
+{ "iso646_de",
+	"ISO/IEC 646-DE Germany",
+	{ "ISO646-DE", "", "", "", "", "", "", },
+	CHARSETARRAY( iso646_de )
+},
+{ "iso646_es",
+	"ISO/IEC 646-ES Spain",
+	{ "ISO646-ES", "", "", "", "", "", "", },
+	CHARSETARRAY( iso646_es )
+},
+{ "iso646_fi",
+	"ISO/IEC 646-FI Finland",
+	{ "ISO646-FI", "", "", "", "", "", "", },
+	CHARSETARRAY( iso646_fi )
+},
+{ "iso646_fr",
+	"ISO/IEC 646-FR France",
+	{ "ISO646-FR", "", "", "", "", "", "", },
+	CHARSETARRAY( iso646_fr )
+},
+{ "iso646_gb",
+	"ISO/IEC 646-GB United Kingdom",
+	{ "ISO646-GB", "", "", "", "", "", "", },
+	CHARSETARRAY( iso646_gb )
+},
+{ "iso646_it",
+	"ISO/IEC 646-IT",
+	{ "ISO646-IT", "", "", "", "", "", "", },
+	CHARSETARRAY( iso646_it )
+},
+{ "iso646_nl",
+	"ISO/IEC 646-NL",
+	{ "ISO646-NL", "", "", "", "", "", "", },
+	CHARSETARRAY( iso646_nl )
+},
+{ "iso646_no",
+	"ISO/IEC 646-NO Norway",
+	{ "ISO646-NO", "", "", "", "", "", "", },
+	CHARSETARRAY( iso646_no )
+},
+{ "iso646_pt",
+	"ISO/IEC 646-PT Portugal",
+	{ "ISO646-PT", "", "", "", "", "", "", },
+	CHARSETARRAY( iso646_pt )
+},
+{ "iso646_se",
+	"ISO/IEC 646-SE Sweden",
+	{ "ISO646-SE", "", "", "", "", "", "", },
+	CHARSETARRAY( iso646_se )
+},
+{ "iso8859_1",
+	"ISO/IEC 8859-1:1998 Latin-1",
+	{ "ISO-8859-1", "CSISOLATIN", "LATIN1", "ISO-IR-100", "CP819", "IBM819", "ISO_8859-1", },
+	CHARSETARRAY( iso8859_1 )
+},
+{ "iso8859_2",
+	"ISO/IEC 8859-2:1999 Latin-2 Eastern European",
+	{ "ISO-8859-2", "CSISOLATIN2", "LATIN2", "ISO-IR-101", "ISO_8859-2", "ISO_8859-2:1987", "L2", },
+	CHARSETARRAY( iso8859_2 )
+},
+{ "iso8859_3",
+	"ISO/IEC 8859-3:1999 Latin-3 South European",
+	{ "ISO-8859-3", "CSISOLATIN3", "LATIN3", "ISO-IR-109", "ISO_8859-3", "ISO_8859-3:1988", "L3", },
+	CHARSETARRAY( iso8859_3 )
+},
+{ "iso8859_4",
+	"ISO/IEC 8859-4:1998 Latin-4 North European",
+	{ "ISO-8859-4", "CSISOLATIN4", "LATIN4", "ISO-IR-110", "ISO_8859-4", "ISO_8859-4:1988", "L4", },
+	CHARSETARRAY( iso8859_4 )
+},
+{ "iso8859_5",
+	"ISO/IEC 8859-5:1999 Latin/Cyrillic",
+	{ "ISO-8859-5", "CSISOLATINCYRILLIC", "CYRILLIC", "ISO-IR-144", "ISO_8859-5", "ISO_8859-5:1988", "", },
+	CHARSETARRAY( iso8859_5 )
+},
+{ "iso8859_6",
+	"ISO/IEC 8859-6:1999 Latin/Arabic",
+	{ "ISO-8859-6", "ARABIC", "ASMO-708", "CSISOLATINARABIC", "ECMA-114", "ISO-IR-127", "ISO_8859-6", },
+	CHARSETARRAY( iso8859_6 )
+},
+{ "iso8859_7",
+	"ISO/IEC 8859-7:2003 Latin/Greek",
+	{ "ISO-8859-7", "CSISOLATINGREEK", "GREEK", "ECMA-118", "ELOT_928", "GREEK8", "ISO-IR-126", },
+	CHARSETARRAY( iso8859_7 )
+},
+{ "iso8859_8",
+	"ISO/IEC 8859-8:1999 Latin/Hebrew",
+	{ "ISO-8859-8", "CSISOLATINHEBREW", "HEBREW", "ISO-IR-138", "ISO_8859-8", "ISO_8859-8:1988", "", },
+	CHARSETARRAY( iso8859_8 )
+},
+{ "iso8859_9",
+	"ISO/IEC 8859-9:1999 Latin-5 Turkish",
+	{ "ISO-8859-9", "CSISOLATIN5", "LATIN5", "ISO-IR-148", "ISO_8859-9", "ISO_8859-9:1989", "L5", },
+	CHARSETARRAY( iso8859_9 )
+},
+{ "iso8859_10",
+	"ISO/IEC 8859-10:1998 Latin-6 Nordic languages",
+	{ "ISO-8859-10", "CSISOLATIN6", "LATIN6", "ISO-IR-157", "ISO_8859-10", "ISO_8859-10:1992", "L6", },
+	CHARSETARRAY( iso8859_10 )
+},
+{ "iso8859_11",
+	"ISO/IEC 8859-11:2001 Latin/Thai",
+	{ "ISO-8859-11,", "TIS-620,", "TIS620,", "TACTIS", "", "", "", },
+	CHARSETARRAY( iso8859_11 )
+},
+{ "iso8859_13",
+	"ISO/IEC 8859-13:1998 Latin-7 Baltic Rim",
+	{ "ISO-8859-13", "CSISOLATIN7", "LATIN7", "ISO-IR-179", "ISO_8859-13", "L7", "", },
+	CHARSETARRAY( iso8859_13 )
+},
+{ "iso8859_14",
+	"ISO/IEC 8859-14:1998 Latin-8 Celtic",
+	{ "ISO-8859-14", "CSISOLATIN8", "LATIN8", "ISO-IR-199", "ISO_8859-14", "ISO_8859-14:1998", "L8", },
+	CHARSETARRAY( iso8859_14 )
+},
+{ "iso8859_15",
+	"ISO/IEC 8859-15:1999 Latin-9 Western European",
+	{ "ISO-8859-15", "ISO-IR-203", "ISO_8859-15", "ISO_8859-15:1998", "", "", "", },
+	CHARSETARRAY( iso8859_15 )
+},
+{ "iso8859_16",
+	"ISO/IEC 8859-16:2001 Latin-10 South-Eastern European",
+	{ "ISO-8859-16", "CSISOLATIN10", "LATIN10", "ISO-IR-226", "ISO_8859-16", "ISO_8859-16:2000", "", },
+	CHARSETARRAY( iso8859_16 )
+},
+{ "koi8_r",
+	"KOI8-R Kod Obmena Informatsiey, 8 bit Russian",
+	{ "KOI8-R", "KOI8R", "CSKOI8R", "", "", "", "", },
+	CHARSETARRAY( koi8_r )
+},
+{ "koi8_u",
+	"KOI8-U Kod Obmena Informatsiey, 8 bit Ukranian",
+	{ "KOI8-U", "KOI8U", "CSKOI8U", "", "", "", "", },
+	CHARSETARRAY( koi8_u )
+},
+{ "mslinedr",
+	"MS LineDraw",
+	{ "MSLINEDR", "", "", "", "", "", "", },
+	CHARSETARRAY( mslinedr )
+},
+{ "nextstep",
+	"NextStep",
+	{ "NEXTSTEP", "", "", "", "", "", "", },
+	CHARSETARRAY( nextstep )
+},
+{ "symbol",
+	"MS Windows Symbol Font",
+	{ "SYMBOL", "", "", "", "", "", "", },
+	CHARSETARRAY( symbol )
+},
+{ "tex_dcr_in",
+	"TeX dcr input for European Computer Roman Font",
+	{ "TEX_DCR_IN", "", "", "", "", "", "", },
+	CHARSETARRAY( tex_dcr_in )
+},
+{ "tex_dcr_out",
+	"TeX dcr output for European Computer Roman Font",
+	{ "TEX_DCR_OUT", "", "", "", "", "", "", },
+	CHARSETARRAY( tex_dcr_out )
+},
 };
-int nallcharconvert = sizeof( allcharconvert ) / sizeof( allcharconvert_t );
+int nallcharconvert = ARRAYSIZE( allcharconvert );
+
+char *
+charset_get_xmlname( int n )
+{
+	static char unknown[] = "???";
+	static char utf8[] = "UTF-8";
+	static char gb18030[] = "GB18030";
+	char *ret = unknown;
+	if ( n>=0 && n < nallcharconvert ) {
+		ret = allcharconvert[n].aliases[0];
+	} else if ( n==CHARSET_UNICODE ) {
+		ret = utf8;
+	} else if ( n==CHARSET_GB18030 ) {
+		ret = gb18030;
+	}
+	return ret;
+}
+
+int
+charset_find( char *name )
+{
+	int i, j, ret = CHARSET_UNKNOWN;
+	if ( name==NULL ) return ret;
+	for ( i=0; i<nallcharconvert && ret==CHARSET_UNKNOWN; ++i ){
+		if ( !strcasecmp( name, allcharconvert[i].cmdname ) ) ret = i;
+		else {
+			for ( j=0; j<CHARSET_NALIASES && ret==CHARSET_UNKNOWN; ++j ) {
+				if ( allcharconvert[i].aliases[j][0]=='\0' ) continue;
+				if ( !strcasecmp( name, allcharconvert[i].aliases[j] ) ) ret = i;
+			}
+		}
+	}
+	return ret;
+}
+
+void
+charset_list_all( FILE *fp )
+{
+	int i;
+	for ( i=0; i<nallcharconvert; ++i ){
+		fprintf( fp, " %s %s\n", allcharconvert[i].cmdname,
+			allcharconvert[i].descriptname );
+	}
+}
+
+unsigned int
+charset_lookupchar( int charsetin, char c )
+{
+	unsigned char uc;
+	uc = ( unsigned char ) c;
+	return allcharconvert[charsetin].table[uc].unicode;
+}
+
+unsigned int
+charset_lookupuni( int charsetout, unsigned int unicode )
+{
+	int i;
+	if ( charsetout==CHARSET_UNICODE ) return unicode;
+	for ( i=0; i<allcharconvert[charsetout].ntable; ++i ) {
+		if ( unicode == allcharconvert[charsetout].table[i].unicode )
+			return allcharconvert[charsetout].table[i].index;
+	}
+	return '?';
+}
+
diff --git a/lib/charsets.h b/lib/charsets.h
index 293e52c..433a5c7 100644
--- a/lib/charsets.h
+++ b/lib/charsets.h
@@ -1,21 +1,25 @@
 /*
  * charsets.h
  *
- * Copyright (c) Chris Putnam 2003-2010
+ * Copyright (c) Chris Putnam 2003-2013
  *
- * Source code released under the GPL
+ * Source code released under the GPL version 2
  *
  */
+#ifndef CHARSETS_H
+#define CHARSETS_H
 
-typedef unsigned int charconvert;
-
-typedef struct allcharconvert_t {
-	char name[15];
-	char name2[25];
-	charconvert *table;
-	int ntable;
-} allcharconvert_t;
-extern allcharconvert_t allcharconvert[];
-extern int nallcharconvert;
+#define CHARSET_UNKNOWN      (-1)
+#define CHARSET_UNICODE      (-2)
+#define CHARSET_GB18030      (-3)
+#define CHARSET_DEFAULT      CHARSET_UNICODE
+#define CHARSET_UTF8_DEFAULT (1)
+#define CHARSET_BOM_DEFAULT  (1)
 
+extern char * charset_get_xmlname( int n );
+extern int charset_find( char *name );
+extern void charset_list_all( FILE *fp );
+extern unsigned int charset_lookupchar( int charsetin, char c );
+extern unsigned int charset_lookupuni( int charsetout, unsigned int unicode );
 
+#endif
diff --git a/lib/copacin.c b/lib/copacin.c
index a4988f8..ebd41e7 100644
--- a/lib/copacin.c
+++ b/lib/copacin.c
@@ -1,9 +1,9 @@
 /*
  * copacin.c
  *
- * Copyright (c) Chris Putnam 2004-2010
+ * Copyright (c) Chris Putnam 2004-2013
  *
- * Program and source code released under the GPL
+ * Program and source code released under the GPL version 2
  *
  */
 #include <stdio.h>
@@ -32,6 +32,7 @@ copacin_initparams( param *p, const char *progname )
 	p->nosplittitle     = 0;
 	p->verbose          = 0;
 	p->addcount         = 0;
+	p->output_raw       = 0;
 
 	p->readf    = copacin_readf;
 	p->processf = copacin_processf;
@@ -168,50 +169,80 @@ copacin_processf( fields *copacin, char *p, char *filename, long nref )
  *
  * editors seem to be stuck in as authors with the tag "[Editor]" in it
  */
-static void
+static int
 copacin_addname( fields *info, char *tag, newstr *name, int level, list *asis,
 	list *corps )
 {
-	char *usetag = tag, editor[]="EDITOR", *p;
-	int comma = 0;
-	if ( strstr( name->data,"[Editor]" ) ) {
-		newstr_findreplace( name, "[Editor]", "" );
-		usetag = editor;
+	char *usetag = tag, editor[]="EDITOR";
+	newstr usename, *s;
+	list tokens;
+	int comma = 0, i;
+
+	if ( list_find( asis, name->data ) !=-1  ||
+	     list_find( corps, name->data ) !=-1 ) {
+		return name_add( info, tag, name->data, level, asis, corps );
 	}
-	p = skip_ws( name->data );
-	while ( *p && !is_ws( *p ) ) {
-		if ( *p==',' ) comma++;
-		p++;
+
+	list_init( &tokens );
+	newstr_init( &usename );
+
+	list_tokenize( &tokens, name, ' ', 1 );
+	for ( i=0; i<tokens.n; ++i ) {
+		s = list_get( &tokens, i );
+		if ( !strcmp( s->data, "[Editor]" ) ) {
+			usetag = editor;
+			newstr_strcpy( s, "" );
+		} else if ( s->len && s->data[s->len-1]==',' ) {
+			comma++;
+		}
+	}
+
+	if ( comma==0 && tokens.n ) {
+		s = list_get( &tokens, 0 );
+		newstr_addchar( s, ',' );
+	}
+
+	for ( i=0; i<tokens.n; ++i ) {
+		if ( i ) newstr_addchar( &usename, ' ' );
+		newstr_newstrcat( &usename, list_get( &tokens, i ) );
 	}
-	if ( !comma && is_ws( *p ) ) *p = ',';
-	name_add( info, usetag, name->data, level, asis, corps );
+
+	return name_add( info, usetag, usename.data, level, asis, corps );
 }
 
-static void
+static int
 copacin_addpage( fields *info, char *p, int level )
 {
 	newstr page;
+	int ok;
 	newstr_init( &page );
 	p = skip_ws( p );
 	while ( *p && !is_ws(*p) && *p!='-' && *p!='\r' && *p!='\n' ) 
 		newstr_addchar( &page, *p++ );
-	if ( page.len>0 ) fields_add( info, "PAGESTART", page.data, level );
+	if ( page.len>0 ) {
+		ok = fields_add( info, "PAGESTART", page.data, level );
+		if ( !ok ) return 0;
+	}
 	newstr_empty( &page );
 	while ( *p && (is_ws(*p) || *p=='-' ) ) p++;
 	while ( *p && !is_ws(*p) && *p!='-' && *p!='\r' && *p!='\n' ) 
 		newstr_addchar( &page, *p++ );
-	if ( page.len>0 ) fields_add( info, "PAGEEND", page.data, level );
+	if ( page.len>0 ) {
+		ok = fields_add( info, "PAGEEND", page.data, level );
+		if ( !ok ) return 0;
+	}
 	newstr_free( &page );
+	return 1;
 }
 
-static void
+static int
 copacin_adddate( fields *info, char *tag, char *newtag, char *p, int level )
 {
 	char *months[12]={ "January", "February", "March", "April",
 		"May", "June", "July", "August", "September",
 		"October", "November", "December" };
 	char month[10];
-	int found,i,part;
+	int found,i,part,ok;
 	newstr date;
 	newstr_init( &date );
 	part = (!strncasecmp(newtag,"PART",4));
@@ -219,9 +250,10 @@ copacin_adddate( fields *info, char *tag, char *newtag, char *p, int level )
 		while ( *p ) newstr_addchar( &date, *p++ );
 		if ( date.len>0 ) {
 			if ( part ) 
-				fields_add(info, "PARTYEAR", date.data, level);
+				ok = fields_add(info, "PARTYEAR", date.data, level);
 			else
-				fields_add( info, "YEAR", date.data, level );
+				ok = fields_add( info, "YEAR", date.data, level );
+			if ( !ok ) return 0;
 		}
 	} else if ( !strcasecmp( tag, "%8" ) ) {
 		while ( *p && *p!=' ' && *p!=',' ) newstr_addchar( &date, *p++ );
@@ -234,13 +266,15 @@ copacin_adddate( fields *info, char *tag, char *newtag, char *p, int level )
 				if (found>8) sprintf( month, "%d", found+1 );
 				else sprintf( month, "0%d", found+1 );
 				if ( part ) 
-					fields_add( info, "PARTMONTH", month, level );
-				else    fields_add( info, "MONTH", month, level );
+					ok = fields_add( info, "PARTMONTH", month, level );
+				else    ok = fields_add( info, "MONTH", month, level );
+				if ( !ok ) return 0;
 			} else {
 				if ( part )
-					fields_add( info, "PARTMONTH", date.data, level );
+					ok = fields_add( info, "PARTMONTH", date.data, level );
 				else
-					fields_add( info, "MONTH", date.data, level );
+					ok = fields_add( info, "MONTH", date.data, level );
+				if ( !ok ) return 0;
 			}
 		}
 		newstr_empty( &date );
@@ -249,12 +283,14 @@ copacin_adddate( fields *info, char *tag, char *newtag, char *p, int level )
 			newstr_addchar( &date, *p++ );
 		if ( date.len>0 && date.len<3 ) {
 			if ( part )
-				fields_add( info, "PARTDAY", date.data, level );
+				ok = fields_add( info, "PARTDAY", date.data, level );
 			else
-				fields_add( info, "DAY", date.data, level );
+				ok = fields_add( info, "DAY", date.data, level );
+			if ( !ok ) return 0;
 		}
 	}
 	newstr_free( &date );
+	return 1;
 }
 
 static void
@@ -266,44 +302,63 @@ copacin_report_notag( param *p, char *tag )
 	}
 }
 
-void
-copacin_convertf( fields *copacin, fields *info, int reftype, param *p, variants *all, int nall )
+int
+copacin_convertf( fields *copacin, fields *out, int reftype, param *p, variants *all, int nall )
 {
-	newstr *t, *d;
-	int  process, level, i, n;
+	int  process, level, i, n, nfields, ok;
+	newstr *tag, *data;
 	char *newtag;
-	for ( i=0; i<copacin->nfields; ++i ) {
-		t = &( copacin->tag[i] );
-		d = &( copacin->data[i] );
-		n = process_findoldtag( t->data, reftype, all, nall );
+
+	nfields = fields_num( copacin );
+	for ( i=0; i<nfields; ++i ) {
+
+		tag = fields_tag( copacin, i, FIELDS_STRP );
+
+		n = translate_oldtag( tag->data, reftype, all, nall, &process, &level, &newtag );
 		if ( n==-1 ) {
-			copacin_report_notag( p, t->data );
+			copacin_report_notag( p, tag->data );
 			continue;
 		}
-		process = ((all[reftype]).tags[n]).processingtype;
 		if ( process == ALWAYS ) continue; /*add these later*/
-		level = ((all[reftype]).tags[n]).level;
-		newtag = ((all[reftype]).tags[n]).newstr;
-		if ( process==SIMPLE )
-			fields_add( info, newtag, d->data, level );
-		else if ( process==TITLE )
-			title_process( info, newtag, d->data, level, 
-					p->nosplittitle );
-		else if ( process==PERSON )
-			copacin_addname( info, newtag, d, level, &(p->asis), 
-					&(p->corps) );
-		else if ( process==DATE )
-			copacin_adddate(info,all[reftype].
-					tags[i].oldstr,newtag,d->data,level);
-		else if ( process==PAGES )
-			copacin_addpage( info, d->data, level );
-		else if ( process==SERIALNO )
-			addsn( info, d->data, level );
-/*		else {
-			fprintf(stderr,"%s: internal error -- "
-				"illegal process %d\n", r->progname, process );
-		}*/
+
+		data = fields_value( copacin, i, FIELDS_STRP );
+
+		switch ( process ) {
+
+		case SIMPLE:
+			ok = fields_add( out, newtag, data->data, level );
+			break;
+
+		case TITLE:
+			ok = title_process( out, newtag, data->data, level, p->nosplittitle );
+			break;
+
+		case PERSON:
+			ok = copacin_addname( out, newtag, data, level, &(p->asis), &(p->corps) );
+			break;
+
+		case DATE:
+			ok = copacin_adddate(out,all[reftype].  tags[i].oldstr,newtag,data->data,level);
+			break;
+
+		case PAGES:
+			ok = copacin_addpage( out, data->data, level );
+			break;
+
+		case SERIALNO:
+			ok = addsn( out, data->data, level );
+			break;
+
+		default:
+			fprintf(stderr,"%s: internal error -- " "illegal process value %d\n", p->progname, process );
+			ok = 1;
+			break;
+		}
+
+		if ( !ok ) return BIBL_ERR_MEMERR;
+
 	}
-}
 
+	return BIBL_OK;
+}
 
diff --git a/lib/copacin.h b/lib/copacin.h
index 4d6412d..ff2f802 100644
--- a/lib/copacin.h
+++ b/lib/copacin.h
@@ -1,9 +1,9 @@
 /*
  * copacin.h
  *
- * Copyright (c) Chris Putnam 2004-2010
+ * Copyright (c) Chris Putnam 2004-2013
  *
- * Program and source code released under the GPL
+ * Source code released under the GPL
  *
  */
 #ifndef COPACIN_H
@@ -18,7 +18,7 @@ extern int copacin_readf( FILE *fp, char *buf, int bufsize, int *bufpos,
 		newstr *line, newstr *reference, int *fcharset );
 extern int copacin_processf( fields *copacin, char *p, char *filename, 
 		long nref );
-extern void copacin_convertf( fields *copacin, fields *info, int reftype, param *p, variants *all, int nall );
+extern int copacin_convertf( fields *copacin, fields *info, int reftype, param *p, variants *all, int nall );
 
 extern void copacin_initparams( param *p, const char *progname );
 
diff --git a/lib/copactypes.c b/lib/copactypes.c
index b154485..248d3ad 100644
--- a/lib/copactypes.c
+++ b/lib/copactypes.c
@@ -1,12 +1,11 @@
 /*
  * copactypes.c
  *
- * Copyright (c) Chris Putnam 2004-2010
+ * Copyright (c) Chris Putnam 2004-2013
  *
- * Program and source code released under the GPL
+ * Program and source code released under the GPL version 2
  *
  */
-
 #include <stdio.h>
 #include <string.h>
 #include "is_ws.h"
diff --git a/lib/doi.c b/lib/doi.c
index 12eeb93..95e1e77 100644
--- a/lib/doi.c
+++ b/lib/doi.c
@@ -9,9 +9,10 @@
  * is_doi()
  * Check for DOI buried in another field.
  *
- * Copyright (c) Chris Putnam 2008-2010
+ * Copyright (c) Chris Putnam 2008-2013
+ *
+ * Source code released under the GPL version 2
  *
- * Source code released under the GPL
  */
 #include <stdio.h>
 #include <stdlib.h>
@@ -33,56 +34,47 @@ construct_url( char *prefix, newstr *id, newstr *id_url )
 }
 
 static int
-url_exists( fields *info, char *urltag, newstr *doi_url )
+url_exists( fields *f, char *urltag, newstr *doi_url )
 {
-	int i, found = 0;
+	int i, n;
 	if ( urltag ) {
-		for ( i=0; i<info->nfields && !found; ++i ) {
-			if ( strcmp( info->tag[i].data, urltag ) )
-				continue;
-			if ( !strcmp( info->data[i].data, doi_url->data ) )
-				found=1;
+		n = fields_num( f );
+		for ( i=0; i<n; ++i ) {
+			if ( strcmp( fields_tag( f, i, FIELDS_CHRP ), urltag ) ) continue;
+			if ( strcmp( fields_value( f, i, FIELDS_CHRP ), doi_url->data ) ) continue;
+			return 1;
 		}
 	}
-	return found;
+	return 0;
 }
 
+static void
+xxx_to_url( fields *f, int n, char *http_prefix, char *urltag, newstr *xxx_url )
+{
+	newstr_empty( xxx_url );
+	construct_url( http_prefix, fields_value( f, n, FIELDS_STRP ), xxx_url );
+	if ( url_exists( f, urltag, xxx_url ) )
+		newstr_empty( xxx_url );
+}
 void
-doi_to_url( fields *info, int n, char *urltag, newstr *doi_url )
+doi_to_url( fields *f, int n, char *urltag, newstr *url )
 {
-	newstr_empty( doi_url );
-	construct_url( "http://dx.doi.org", &(info->data[n]), doi_url );
-	if ( url_exists( info, urltag, doi_url ) )
-		newstr_empty( doi_url );
+	xxx_to_url( f, n, "http://dx.doi.org", urltag, url );
 }
-
 void
-jstor_to_url( fields *info, int n, char *urltag, newstr *jstor_url )
+jstor_to_url( fields *f, int n, char *urltag, newstr *url )
 {
-	newstr_empty( jstor_url );
-	construct_url( "http://www.jstor.org/stable", &(info->data[n]),
-		jstor_url );
-	if ( url_exists( info, urltag, jstor_url ) )
-		newstr_empty( jstor_url );
+	xxx_to_url( f, n, "http://www.jstor.org/stable", urltag, url );
 }
-
 void
-pmid_to_url( fields *info, int n, char *urltag, newstr *pmid_url )
+pmid_to_url( fields *f, int n, char *urltag, newstr *url )
 {
-	newstr_empty( pmid_url );
-	construct_url( "http://www.ncbi.nlm.nih.gov/pubmed", &(info->data[n]),
-			pmid_url );
-	if ( url_exists( info, urltag, pmid_url ) )
-		newstr_empty( pmid_url );
+	xxx_to_url( f, n, "http://www.ncbi.nlm.nih.gov/pubmed", urltag, url );
 }
-
 void
-arxiv_to_url( fields *info, int n, char *urltag, newstr *arxiv_url )
+arxiv_to_url( fields *f, int n, char *urltag, newstr *url )
 {
-	newstr_empty( arxiv_url );
-	construct_url( "http://arxiv.org/abs", &(info->data[n]), arxiv_url );
-	if ( url_exists( info, urltag, arxiv_url ) )
-		newstr_empty( arxiv_url );
+	xxx_to_url( f, n, "http://arxiv.org/abs", urltag, url );
 }
 
 /* Rules for the pattern:
@@ -100,9 +92,9 @@ string_pattern( char *s, char *pattern, int matchcase )
 	for ( i=0; i<patlen; ++i ) {
 		match = 0;
 		if ( pattern[i]=='#' ) {
-			if ( isdigit( s[i] ) ) match = 1;
-		} else if ( !matchcase && isalpha( pattern[i] ) ) {
-			if ( tolower(pattern[i])==tolower(s[i])) match = 1;
+			if ( isdigit( (unsigned char)s[i] ) ) match = 1;
+		} else if ( !matchcase && isalpha( (unsigned char)pattern[i] ) ) {
+			if ( tolower((unsigned char)pattern[i])==tolower((unsigned char)s[i])) match = 1;
 		} else {
 			if ( pattern[i] == s[i] ) match = 1;
 		}
diff --git a/lib/doi.h b/lib/doi.h
index 63c77b1..8f5a4ef 100644
--- a/lib/doi.h
+++ b/lib/doi.h
@@ -1,9 +1,10 @@
 /*
  * doi.h
  *
- * Copyright (c) Chris Putnam 2004-2010
+ * Copyright (c) Chris Putnam 2004-2013
+ *
+ * Source code released under the GPL version 2
  *
- * Source code released under the GPL
  */
 #ifndef DOI_H
 #define DOI_H
diff --git a/lib/ebiin.c b/lib/ebiin.c
index e1c4226..893a1a5 100644
--- a/lib/ebiin.c
+++ b/lib/ebiin.c
@@ -1,9 +1,9 @@
 /*
  * ebiin.c
  *
- * Copyright (c) Chris Putnam 2004-2010
+ * Copyright (c) Chris Putnam 2004-2013
  *
- * Program and source code released under the GPL
+ * Program and source code released under the GPL version 2
  *
  */
 #include <stdio.h>
@@ -507,13 +507,3 @@ ebiin_processf( fields *ebiin, char *data, char *filename, long nref )
 	xml_free( &top );
 	return 1;
 }
-
-void
-ebiin_convertf( fields *ebiin, fields *info, int reftype, int verbose, 
-	variants *all, int nall )
-{
-	int i;
-	for ( i=0; i<ebiin->nfields; ++i )
-		fields_add( info, ebiin->tag[i].data, ebiin->data[i].data,
-				ebiin->level[i] );
-}
diff --git a/lib/ebiin.h b/lib/ebiin.h
index b9c9468..8cd8070 100644
--- a/lib/ebiin.h
+++ b/lib/ebiin.h
@@ -1,9 +1,9 @@
 /*
  * ebiin.h
  *
- * Copyright (c) Chris Putnam 2004-2010
+ * Copyright (c) Chris Putnam 2004-2013
  *
- * Program and source code released under the GPL
+ * Source code released under the GPL version 2
  *
  */
 #ifndef PUBIN_H
@@ -16,7 +16,6 @@
 
 extern int ebiin_readf( FILE *fp, char *buf, int bufsize, int *bufpos, newstr *line, newstr *reference, int *fcharset );
 extern int ebiin_processf( fields *ebiin, char *data, char *filename, long nref );
-extern void ebiin_convertf( fields *ebiin, fields *info, int reftype, int verbose, variants *all, int nall );
 
 extern void ebiin_initparams( param *p, const char *progname );
 
diff --git a/lib/endin.c b/lib/endin.c
index be53be5..f526699 100644
--- a/lib/endin.c
+++ b/lib/endin.c
@@ -1,9 +1,9 @@
 /*
  * endin.c
  *
- * Copyright (c) Chris Putnam 2003-2010
+ * Copyright (c) Chris Putnam 2003-2013
  *
- * Program and source code released under the GPL
+ * Program and source code released under the GPL version 2
  *
  */
 #include <stdio.h>
@@ -61,8 +61,8 @@ endin_istag( char *buf )
 	const char others[]="!@#$^&*()+=?[~>";
 	if ( buf[0]!='%' ) return 0;
 	if ( buf[2]!=' ' ) return 0;
-	if ( isalpha( buf[1] ) ) return 1;
-	if ( isdigit( buf[1] ) ) return 1;
+	if ( isalpha( (unsigned char)buf[1] ) ) return 1;
+	if ( isdigit( (unsigned char)buf[1] ) ) return 1;
 	if ( strchr( others, buf[1] ) ) return 1;
 	return 0;
 }
@@ -161,7 +161,7 @@ endin_processf( fields *endin, char *p, char *filename, long nref )
 		} else {
 			p = process_endline2( &tag, &data, p );
 			/* endnote puts %K only on 1st line of keywords */
-			n = endin->nfields;
+			n = fields_num( endin );
 			if ( n>0 && data.len ) {
 			if ( !strncmp( endin->tag[n-1].data, "%K", 2 ) ) {
 				fields_add( endin, "%K", data.data, 0 );
@@ -177,8 +177,8 @@ endin_processf( fields *endin, char *p, char *filename, long nref )
 	return 1;
 }
 
-static void
-addtype( fields *info, char *data, int level )
+static int
+endin_addtype( fields *info, char *data, int level )
 {
 	lookups types[] = {
 		{ "GENERIC", "ARTICLE" },
@@ -208,56 +208,66 @@ addtype( fields *info, char *data, int level )
 		{ "WEB PAGE", "WEBPAGE" },
 	};
 	int  ntypes = sizeof( types ) / sizeof( lookups );
-	int  i, found=0;
+	int  i, ok, found=0;
 	for ( i=0; i<ntypes; ++i ) {
 		if ( !strcasecmp( types[i].oldstr, data ) ) {
 			found = 1;
-			fields_add( info, "INTERNAL_TYPE", types[i].newstr, level );
+			ok = fields_add( info, "INTERNAL_TYPE", types[i].newstr, level );
+			if ( !ok ) return 0;
 		}
 	}
 	if ( !found ) {
 		fprintf( stderr, "Did not identify reference type '%s'\n",
 			data );
 		fprintf( stderr, "Defaulting to journal article type\n");
-		fields_add( info, "INTERNAL_TYPE", types[0].newstr, level );
+		ok = fields_add( info, "INTERNAL_TYPE", types[0].newstr, level );
+		if ( !ok ) return 0;
 	}
+	return 1;
 }
 
-static void
-addpage( fields *info, char *p, int level )
+static int
+endin_addpage( fields *info, char *p, int level )
 {
 	newstr page;
+	int ok;
 	newstr_init( &page );
 	p = skip_ws( p );
 	while ( *p && !is_ws(*p) && *p!='-' && *p!='\r' && *p!='\n' ) 
 		newstr_addchar( &page, *p++ );
-	if ( page.len>0 ) fields_add( info, "PAGESTART", page.data, level );
+	if ( page.len>0 ) {
+		ok = fields_add( info, "PAGESTART", page.data, level );
+		if ( !ok ) return 0;
+	}
 	newstr_empty( &page );
 	while ( *p && (is_ws(*p) || *p=='-' ) ) p++;
 	while ( *p && !is_ws(*p) && *p!='-' && *p!='\r' && *p!='\n' ) 
 		newstr_addchar( &page, *p++ );
-	if ( page.len>0 ) fields_add( info, "PAGEEND", page.data, level );
+	if ( page.len>0 ) {
+		ok = fields_add( info, "PAGEEND", page.data, level );
+		if ( !ok ) return 0;
+	}
 	newstr_free( &page );
+	return 1;
 }
 
-static void
-adddate( fields *info, char *tag, char *newtag, char *p, int level )
+static int
+endin_adddate( fields *info, char *tag, char *newtag, char *p, int level )
 {
 	char *months[12]={ "January", "February", "March", "April",
 		"May", "June", "July", "August", "September",
 		"October", "November", "December" };
 	char month[10];
-	int found,i,part;
+	int found,i,part, ok;
 	newstr date;
 	newstr_init( &date );
 	part = (!strncasecmp(newtag,"PART",4));
 	if ( !strcasecmp( tag, "%D" ) ) {
 		while ( *p ) newstr_addchar( &date, *p++ );
 		if ( date.len>0 ) {
-			if ( part ) 
-				fields_add(info, "PARTYEAR", date.data, level);
-			else
-				fields_add( info, "YEAR", date.data, level );
+			if ( part ) ok = fields_add( info, "PARTYEAR", date.data, level );
+			else        ok = fields_add( info, "YEAR",     date.data, level );
+			if ( !ok ) return 0;
 		}
 	} else if ( !strcasecmp( tag, "%8" ) ) {
 		while ( *p && *p!=' ' && *p!=',' ) newstr_addchar( &date, *p++ );
@@ -269,27 +279,28 @@ adddate( fields *info, char *tag, char *newtag, char *p, int level )
 			if ( found!=-1 ) {
 				if (found>8) sprintf( month, "%d", found+1 );
 				else sprintf( month, "0%d", found+1 );
-				if ( part ) 
-					fields_add( info, "PARTMONTH", month, level );
-				else    fields_add( info, "MONTH", month, level );
+				if ( part ) ok = fields_add( info, "PARTMONTH", month, level );
+				else        ok = fields_add( info, "MONTH",     month, level );
+				if ( !ok ) return 0;
 			} else {
 				if ( part )
-					fields_add( info, "PARTMONTH", date.data, level );
+					ok = fields_add( info, "PARTMONTH", date.data, level );
 				else
-					fields_add( info, "MONTH", date.data, level );
+					ok = fields_add( info, "MONTH", date.data, level );
+				if ( !ok ) return 0;
 			}
 		}
 		newstr_empty( &date );
 		p = skip_ws( p );
 		while ( *p && *p!='\n' && *p!=',' ) newstr_addchar( &date, *p++ );
 		if ( date.len>0 && date.len<3 ) {
-			if ( part )
-				fields_add( info, "PARTDAY", date.data, level );
-			else
-				fields_add( info, "DAY", date.data, level );
+			if ( part ) ok = fields_add( info, "PARTDAY", date.data, level );
+			else        ok = fields_add( info, "DAY",     date.data, level );
+			if ( !ok ) return 0;
 		}
 	}
 	newstr_free( &date );
+	return 1;
 }
 
 /* Endnote defaults if no %0
@@ -388,8 +399,9 @@ cleanup_wiley_author( fields *endin, int n )
 static void
 endin_cleanref( fields *endin )
 {
-	int i;
-	for ( i=0; i<endin->nfields; ++i ) {
+	int i, n;
+	n = fields_num( endin );
+	for ( i=0; i<n; ++i ) {
 		if ( is_wiley_author( endin, i ) )
 			cleanup_wiley_author( endin, i );
 	}
@@ -412,67 +424,95 @@ endin_notag( param *p, char *tag, char *data )
 	}
 }
 
-/* Wiley EndNote download has DOI's in "%1" tag */
-static void
-addnotes( fields *info, char *tag, char *data, int level )
+/* Wiley's EndNote download has DOI's in "%1" tag */
+static int
+endin_addnotes( fields *info, char *tag, char *data, int level )
 {
 	int doi = is_doi( data );
 	if ( doi!=-1 )
-		fields_add( info, "DOI", &(data[doi]), level );
+		return fields_add( info, "DOI", &(data[doi]), level );
 	else
-		fields_add( info, tag, data, level );
+		return fields_add( info, tag, data, level );
 }
 
-void
+int
 endin_convertf( fields *endin, fields *info, int reftype, param *p, variants *all, int nall )
 {
-	newstr *d;
-	int  i, level, n, process;
+	int i, level, n, process, nfields, ok;
 	char *newtag, *t;
-	for ( i=0; i<endin->nfields; ++i ) {
+	newstr *d;
+
+	nfields = fields_num( endin );
+	for ( i=0; i<nfields; ++i ) {
 		/* Ensure that data exists */
-		d = &( endin->data[i] );
-		if ( !(d->data) || d->len==0 ) continue;
+		d = fields_value( endin, i, FIELDS_STRP_NOUSE );
+		if ( d->len == 0 ) {
+			fields_setused( endin, i );
+			continue;
+		}
 		/*
 		 * All refer format tags start with '%'.  If we have one
 		 * that doesn't, assume that it comes from endx2xml
 		 * and just copy and paste to output
 		 */
-		t = endin->tag[i].data;
+		t = fields_tag( endin, i, FIELDS_CHRP );
 		if ( t[0]!='%' ) {
 			fields_add( info, t, d->data, endin->level[i] );
 			continue;
 		}
-		n = process_findoldtag( t, reftype, all, nall );
+
+		n = translate_oldtag( t, reftype, all, nall, &process, &level, &newtag );
 		if ( n==-1 ) {
 			endin_notag( p, t, d->data );
 			continue;
 		}
-		process = ((all[reftype]).tags[n]).processingtype;
 		if ( process == ALWAYS ) continue; /* add these later */
-		level = ((all[reftype]).tags[n]).level;
-		newtag = ((all[reftype]).tags[n]).newstr;
-		if ( process==SIMPLE )
-			fields_add( info, newtag, d->data, level );
-		else if ( process==TYPE )
-			addtype( info, d->data, level );
-		else if ( process==TITLE )
-			title_process( info, newtag, d->data, level, 
-					p->nosplittitle );
-		else if ( process==PERSON )
-			name_add( info, newtag, d->data, level, 
-					&(p->asis), &(p->corps) );
-		else if ( process==DATE )
-			adddate( info, t, newtag,d->data,level);
-		else if ( process==PAGES )
-			addpage( info, d->data, level );
-		else if ( process==SERIALNO )
-			addsn( info, d->data, level );
-		else if ( process==NOTES )
-			addnotes( info, newtag, d->data, level );
-		else {
-/*				fprintf(stderr,"%s: internal error -- illegal process %d\n", r->progname, process );
-*/
+
+		fields_setused( endin, i );
+
+		switch ( process ) {
+
+		case SIMPLE:
+			ok = fields_add( info, newtag, d->data, level );
+			break;
+
+		case TYPE:
+			ok = endin_addtype( info, d->data, level );
+			break;
+
+		case TITLE:
+			ok = title_process( info, newtag, d->data, level, p->nosplittitle );
+			break;
+
+		case PERSON:
+			ok = name_add( info, newtag, d->data, level, &(p->asis), &(p->corps) );
+			break;
+
+		case DATE:
+			ok = endin_adddate( info, t, newtag,d->data,level);
+			break;
+
+		case PAGES:
+			ok = endin_addpage( info, d->data, level );
+			break;
+
+		case SERIALNO:
+			ok = addsn( info, d->data, level );
+			break;
+
+		case NOTES:
+			ok = endin_addnotes( info, newtag, d->data, level );
+			break;
+
+		default:
+			fprintf(stderr,"%s: internal error -- illegal process number %d\n", p->progname, process );
+			ok = 1;
+			break;
 		}
+
+		if ( !ok ) return BIBL_ERR_MEMERR;
+
 	}
+
+	return BIBL_OK;
 }
diff --git a/lib/endin.h b/lib/endin.h
index c1f2e89..401cbdc 100644
--- a/lib/endin.h
+++ b/lib/endin.h
@@ -1,9 +1,9 @@
 /*
  * endin.h
  *
- * Copyright (c) Chris Putnam 2003-2010
+ * Copyright (c) Chris Putnam 2003-2013
  *
- * Program and source code released under the GPL
+ * Source code released under the GPL version 2
  *
  */
 #ifndef ENDIN_H
@@ -17,7 +17,7 @@
 extern int endin_readf( FILE *fp, char *buf, int bufsize, int *bufpos, newstr *line, newstr *reference, int *fcharset );
 extern int endin_processf( fields *endin, char *p, char *filename, long nref );
 extern int endin_typef( fields *endin, char *filename, int nrefs, param *p, variants *all, int nall );
-extern void endin_convertf( fields *endin, fields *info, int reftype, param *p, variants *all, int nall );
+extern int endin_convertf( fields *endin, fields *info, int reftype, param *p, variants *all, int nall );
 extern void endin_cleanf( bibl *bin, param *p );
 
 extern void endin_initparams( param *p, const char *progname );
diff --git a/lib/endout.c b/lib/endout.c
index 4e39949..460ce9b 100644
--- a/lib/endout.c
+++ b/lib/endout.c
@@ -1,9 +1,9 @@
 /*
  * endout.c
  *
- * Copyright (c) Chris Putnam 2004-2010
+ * Copyright (c) Chris Putnam 2004-2013
  *
- * Program and source code released under the GPL
+ * Program and source code released under the GPL version 2
  *
  */
 #include <stdio.h>
@@ -15,6 +15,7 @@
 #include "strsearch.h"
 #include "fields.h"
 #include "doi.h"
+#include "name.h"
 #include "endout.h"
 
 void
@@ -25,14 +26,18 @@ endout_initparams( param *p, const char *progname )
 	p->charsetout       = BIBL_CHARSET_DEFAULT;
 	p->charsetout_src   = BIBL_SRC_DEFAULT;
 	p->latexout         = 0;
-	p->utf8out          = 0;
-	p->utf8bom          = 0;
+	p->utf8out          = BIBL_CHARSET_UTF8_DEFAULT;
+	p->utf8bom          = BIBL_CHARSET_BOM_DEFAULT;
 	p->xmlout           = 0;
 	p->nosplittitle     = 0;
 	p->verbose          = 0;
 	p->addcount         = 0;
 	p->singlerefperfile = 0;
 
+	if ( p->charsetout == BIBL_CHARSET_UNICODE ) {
+		p->utf8out = p->utf8bom = 1;
+	}
+
 	p->headerf = endout_writeheader;
 	p->footerf = NULL;
 	p->writef  = endout_write;
@@ -199,7 +204,7 @@ get_type( fields *info )
 	char *tag, *data;
 	int i, j, type = TYPE_UNKNOWN;
 
-	for ( i=0; i<info->nfields; ++i ) {
+	for ( i=0; i<info->n; ++i ) {
 		tag = info->tag[i].data;
 		if ( strcasecmp( tag, "GENRE" )!=0 &&
 		     strcasecmp( tag, "NGENRE" )!=0 ) continue;
@@ -231,7 +236,7 @@ get_type( fields *info )
 		if ( ( type==TYPE_ARTICLE || type==TYPE_MAGARTICLE || type==TYPE_NEWSARTICLE ) && info->level[i]<1 ) type=TYPE_UNKNOWN;
 	}
 	if ( type==TYPE_UNKNOWN ) {
-		for ( i=0; i<info->nfields; ++i ) {
+		for ( i=0; i<info->n; ++i ) {
 			if ( strcasecmp( info->tag[i].data, "RESOURCE" ) )
 				continue;
 			data = info->data[i].data;
@@ -316,138 +321,142 @@ static void
 output_title( FILE *fp, fields *info, char *full, char *sub, char *endtag, 
 		int level )
 {
-	int n1 = fields_find( info, full, level );
-	int n2 = fields_find( info, sub, level );
-	if ( n1!=-1 ) {
-		fprintf( fp, "%s %s", endtag, info->data[n1].data );
-		fields_setused( info, n1 );
-		if ( n2!=-1 ) {
-			if ( info->data[n1].data[info->data[n1].len]!='?' )
-				fprintf( fp, ": " );
-			else fprintf( fp, " " );
-			fprintf( fp, "%s", info->data[n2].data );
-			fields_setused( info, n2 );
-		}
-		fprintf( fp, "\n" );
-	}
-}
+	newstr *mainttl = fields_findv( info, level, FIELDS_STRP, full );
+	newstr *subttl  = fields_findv( info, level, FIELDS_STRP, sub );
 
-static void
-output_person( FILE *fp, char *p )
-{
-	int nseps = 0, nch;
-	while ( *p ) {
-		nch = 0;
-		if ( nseps==1 ) fprintf( fp, "," );
-		if ( nseps ) fprintf( fp, " " );
-		while ( *p && *p!='|' ) {
-			fprintf( fp, "%c", *p++ );
-			nch++;
-		}
-		if ( *p=='|' ) p++;
-		if ( nseps!=0 && nch==1 ) fprintf( fp, "." );
-		nseps++;
+	if ( !mainttl ) return;
+
+	fprintf( fp, "%s %s", endtag, mainttl->data );
+	if ( subttl ) {
+		if ( mainttl->len > 0 &&
+		     mainttl->data[ mainttl->len-1 ]!='?' )
+				fprintf( fp, ":" );
+		fprintf( fp, " %s", subttl->data );
 	}
+	fprintf( fp, "\n" );
 }
 
 static void
 output_people( FILE *fp, fields *info, char *tag, char *entag, int level )
 {
-	int i;
-	for ( i=0; i<info->nfields; ++i ) {
-		if ( level!=-1 && info->level[i]!=level ) continue;
-		if ( !strcasecmp( info->tag[i].data, tag ) ) {
-			fprintf( fp, "%s ", entag );
-			output_person( fp, info->data[i].data );
-			fprintf( fp, "\n" );
+	newstr oneperson;
+	int i, n, flvl;
+	char *ftag;
+	newstr_init( &oneperson );
+	n = fields_num( info );
+	for ( i=0; i<n; ++i ) {
+		flvl = fields_level( info, i );
+		if ( level!=LEVEL_ANY && flvl!=level ) continue;
+		ftag = fields_tag( info, i, FIELDS_CHRP );
+		if ( !strcasecmp( ftag, tag ) ) {
+			name_build_withcomma( &oneperson, fields_value( info, i, FIELDS_CHRP ) );
+			fprintf( fp, "%s %s\n", entag, oneperson.data );
 		}
 	}
+	newstr_free( &oneperson );
 }
 
 static void
 output_pages( FILE *fp, fields *info )
 {
-	int sn = fields_find( info, "PAGESTART", -1 );
-	int en = fields_find( info, "PAGEEND", -1 );
-	int ar = fields_find( info, "ARTICLENUMBER", -1 );
-	if ( sn!=-1 || en!=-1 ) {
+	char *sn = fields_findv( info, LEVEL_ANY, FIELDS_CHRP, "PAGESTART" );
+	char *en = fields_findv( info, LEVEL_ANY, FIELDS_CHRP, "PAGEEND" );
+	char *ar;
+	if ( sn || en ) {
 		fprintf( fp, "%%P ");
-		if ( sn!=-1 ) fprintf( fp, "%s", info->data[sn].data );
-		if ( sn!=-1 && en!=-1 ) fprintf( fp, "-" );
-		if ( en!=-1 ) fprintf( fp, "%s", info->data[en].data );
-		fprintf( fp, "\n");
-	} else if ( ar!=-1 ) {
-		fprintf( fp, "%%P %s\n", info->data[ar].data );
+		if ( sn ) fprintf( fp, "%s", sn );
+		if ( sn && en ) fprintf( fp, "-" );
+		if ( en ) fprintf( fp, "%s", en );
+		fprintf( fp, "\n" );
+	} else {
+		ar = fields_findv( info, LEVEL_ANY, FIELDS_CHRP, "ARTICLENUMBER" );
+		if ( ar ) fprintf( fp, "%%P %s\n", ar );
 	}
 }
 
 static void
-output_doi( FILE *fp, fields *info )
+output_doi( FILE *fp, fields *f )
 {
 	newstr doi_url;
-	int i;
+	int i, n;
+
 	newstr_init( &doi_url );
-	for ( i=0; i<info->nfields; ++i ) {
-		if ( strcmp( info->tag[i].data, "DOI" ) ) continue;
-		doi_to_url( info, i, "URL", &doi_url );
+
+	n = fields_num( f );
+	for ( i=0; i<n; ++i ) {
+		if ( !fields_match_tag( f, i, "DOI" ) ) continue;
+		doi_to_url( f, i, "URL", &doi_url );
 		if ( doi_url.len )
 			fprintf( fp, "%%U %s\n", doi_url.data );
 	}
+
 	newstr_free( &doi_url );
 }
 
 static void
-output_pmid( FILE *fp, fields *info )
+output_pmid( FILE *fp, fields *f )
 {
 	newstr pmid_url;
-	int i;
+	int i, n;
+
 	newstr_init( &pmid_url );
-	for ( i=0; i<info->nfields; ++i ) {
-		if ( strcmp( info->tag[i].data, "PMID" ) ) continue;
-		pmid_to_url( info, i, "URL", &pmid_url );
+
+	n = fields_num( f );
+	for ( i=0; i<n; ++i ) {
+		if ( !fields_match_tag( f, i, "PMID" ) ) continue;
+		pmid_to_url( f, i, "URL", &pmid_url );
 		if ( pmid_url.len )
 			fprintf( fp, "%%U %s\n", pmid_url.data );
 	}
+
 	newstr_free( &pmid_url );
 }
 
 static void
-output_arxiv( FILE *fp, fields *info )
+output_arxiv( FILE *fp, fields *f )
 {
 	newstr arxiv_url;
-	int i;
+	int i, n;
+
 	newstr_init( &arxiv_url );
-	for ( i=0; i<info->nfields; ++i ) {
-		if ( strcmp( info->tag[i].data, "ARXIV" ) ) continue;
-		arxiv_to_url( info, i, "URL", &arxiv_url );
+
+	n = fields_num( f );
+	for ( i=0; i<n; ++i ) {
+		if ( !fields_match_tag( f, i, "ARXIV" ) ) continue;
+		arxiv_to_url( f, i, "URL", &arxiv_url );
 		if ( arxiv_url.len )
 			fprintf( fp, "%%U %s\n", arxiv_url.data );
 	}
+
 	newstr_free( &arxiv_url );
 }
 
 static void
-output_jstor( FILE *fp, fields *info )
+output_jstor( FILE *fp, fields *f )
 {
 	newstr jstor_url;
-	int i;
+	int i, n;
+
 	newstr_init( &jstor_url );
-	for ( i=0; i<info->nfields; ++i ) {
-		if ( strcmp( info->tag[i].data, "JSTOR" ) ) continue;
-		jstor_to_url( info, i, "URL", &jstor_url );
+
+	n = fields_num( f );
+	for ( i=0; i<n; ++i ) {
+		if ( !fields_match_tag( f, i, "JSTOR" ) ) continue;
+		jstor_to_url( f, i, "URL", &jstor_url );
 		if ( jstor_url.len )
 			fprintf( fp, "%%U %s\n", jstor_url.data );
 	}
+
 	newstr_free( &jstor_url );
 }
 
 static void
 output_year( FILE *fp, fields *info, int level )
 {
-	int year = fields_find( info, "YEAR", level );
-	if ( year==-1 ) year = fields_find( info, "PARTYEAR", level );
-	if ( year!=-1 )
-		fprintf( fp, "%%D %s\n", info->data[year].data );
+	char *year = fields_findv_firstof( info, level, FIELDS_CHRP,
+			"YEAR", "PARTYEAR", NULL );
+	if ( year )
+		fprintf( fp, "%%D %s\n", year );
 }
 
 static void
@@ -457,21 +466,19 @@ output_monthday( FILE *fp, fields *info, int level )
 		"May", "June", "July", "August", "September", "October",
 		"November", "December" };
 	int m;
-	int month = fields_find( info, "MONTH", level );
-	int day   = fields_find( info, "DAY", level );
-	if ( month==-1 ) month = fields_find( info, "PARTMONTH", level );
-	if ( day==-1 ) day = fields_find( info, "PARTDAY", level );
-	if ( month!=-1 || day!=-1 ) {
+	char *month = fields_findv_firstof( info, level, FIELDS_CHRP,
+			"MONTH", "PARTMONTH", NULL );
+	char *day   = fields_findv_firstof( info, level, FIELDS_CHRP,
+			"DAY", "PARTDAY", NULL );
+	if ( month || day ) {
 		fprintf( fp, "%%8 " );
-		if ( month!=-1 ) {
-			m = atoi( info->data[month].data );
-			if ( m>0 && m<13 )
-				fprintf( fp, "%s", months[m-1] );
-			else
-				fprintf( fp, "%s", info->data[month].data );
+		if ( month ) {
+			m = atoi( month );
+			if ( m>0 && m<13 ) fprintf( fp, "%s", months[m-1] );
+			else fprintf( fp, "%s", month );
 		}
-		if ( month!=-1 && day!=-1 ) fprintf( fp, " " );
-		if ( day!=-1 ) fprintf( fp, "%s", info->data[day].data );
+		if ( month && day ) fprintf( fp, " " );
+		if ( day ) fprintf( fp, "%s", day );
 		fprintf( fp, "\n" );
 	}
 }
@@ -494,75 +501,104 @@ output_thesishint( FILE *fp, int type )
 static void
 output_easyall( FILE *fp, fields *info, char *tag, char *entag, int level )
 {
+	vplist a;
 	int i;
-	for ( i=0; i<info->nfields; ++i ) {
-		if ( level!=-1 && info->level[i]!=level ) continue;
-		if ( !strcmp( info->tag[i].data, tag ) )
-			fprintf( fp, "%s %s\n", entag, info->data[i].data );
-	}
+	vplist_init( &a );
+	fields_findv_each( info, level, FIELDS_CHRP, &a, tag );
+	for ( i=0; i<a.n; ++i )
+		fprintf( fp, "%s %s\n", entag, (char *) vplist_get( &a, i ) );
+	vplist_free( &a );
 }
 
 static void
 output_easy( FILE *fp, fields *info, char *tag, char *entag, int level )
 {
-	int n = fields_find( info, tag, level );
-	if ( n!=-1 )
-		fprintf( fp, "%s %s\n", entag, info->data[n].data );
+	char *value = fields_findv( info, level, FIELDS_CHRP, tag );
+	if ( value ) fprintf( fp, "%s %s\n", entag, value );
 }
 
 void
 endout_write( fields *info, FILE *fp, param *p, unsigned long refnum )
 {
 	int type;
+
 	fields_clearused( info );
+
 	type = get_type( info );
+
 	output_type( fp, type, p );
-	output_title( fp, info, "TITLE", "SUBTITLE", "%T", 0 );
-	output_title( fp, info, "SHORTTITLE", "SHORTSUBTITLE", "%!", 0 );
-	output_people( fp, info, "AUTHOR", "%A", 0 );
-	output_people( fp, info, "EDITOR", "%E", -1 );
-	output_people( fp, info, "TRANSLATOR", "%H", -1 );
+
+	output_title( fp, info, "TITLE",      "SUBTITLE",      "%T", LEVEL_MAIN );
+	output_title( fp, info, "SHORTTITLE", "SHORTSUBTITLE", "%!", LEVEL_MAIN );
+
+	output_people( fp, info, "AUTHOR",     "%A", LEVEL_MAIN );
+	output_people( fp, info, "EDITOR",     "%E", LEVEL_MAIN );
+	if ( type==TYPE_ARTICLE || type==TYPE_MAGARTICLE || type==TYPE_ELECTRONICARTICLE || type==TYPE_NEWSARTICLE )
+		output_people( fp, info, "EDITOR", "%E", LEVEL_HOST );
+	else if ( type==TYPE_INBOOK || type==TYPE_INPROCEEDINGS ) {
+		output_people( fp, info, "EDITOR", "%E", LEVEL_HOST );
+	} else {
+		output_people( fp, info, "EDITOR", "%Y", LEVEL_HOST );
+	}
+	output_people( fp, info, "TRANSLATOR", "%H", LEVEL_ANY  );
+
+	output_people( fp, info, "AUTHOR",     "%Y", LEVEL_SERIES );
+	output_people( fp, info, "EDITOR",     "%Y", LEVEL_SERIES );
+
 	if ( type==TYPE_CASE )
-		output_easy( fp, info, "AUTHOR:CORP", "%I", 0 );
+		output_easy(    fp, info, "AUTHOR:CORP", "%I", LEVEL_MAIN );
 	else if ( type==TYPE_HEARING )
-		output_easyall( fp, info, "AUTHOR:CORP", "%S", 0 );
+		output_easyall( fp, info, "AUTHOR:CORP", "%S", LEVEL_MAIN );
 	else if ( type==TYPE_NEWSARTICLE )
-		output_people( fp, info, "REPORTER", "%A", 0 );
+		output_people(  fp, info, "REPORTER",    "%A", LEVEL_MAIN );
 	else if ( type==TYPE_COMMUNICATION )
-		output_people( fp, info, "RECIPIENT", "%E", -1 );
+		output_people(  fp, info, "RECIPIENT",   "%E", LEVEL_ANY  );
 	else {
-		output_easyall( fp, info, "AUTHOR:CORP", "%A", 0 );
-		output_easyall( fp, info, "AUTHOR:ASIS", "%A", 0 );
-		output_easyall( fp, info, "EDITOR:CORP", "%E", -1 );
-		output_easyall( fp, info, "EDITOR:ASIS", "%E", -1 );
+		output_easyall( fp, info, "AUTHOR:CORP",     "%A", LEVEL_MAIN );
+		output_easyall( fp, info, "AUTHOR:ASIS",     "%A", LEVEL_MAIN );
+		output_easyall( fp, info, "EDITOR:CORP",     "%E", LEVEL_ANY  );
+		output_easyall( fp, info, "EDITOR:ASIS",     "%E", LEVEL_ANY  );
+		output_easyall( fp, info, "TRANSLATOR:CORP", "%H", LEVEL_ANY  );
+		output_easyall( fp, info, "TRANSLATOR:ASIS", "%H", LEVEL_ANY  );
 	}
-	if ( type==TYPE_ARTICLE || type==TYPE_MAGARTICLE )
-		output_title( fp, info, "TITLE", "SUBTITLE", "%J", 1 );
-	else output_title( fp, info, "TITLE", "SUBTITLE", "%B", 1 );
-	output_year( fp, info, -1 );
-	output_monthday( fp, info, -1 );
-	output_easy( fp, info, "VOLUME", "%V", -1 );
-	output_easy( fp, info, "ISSUE", "%N", -1 );
-	output_easy( fp, info, "NUMBER", "%N", -1 );
-	output_easy( fp, info, "EDITION", "%7", -1 );
-	output_easy( fp, info, "PUBLISHER", "%I", -1 );
-	output_easy( fp, info, "ADDRESS", "%C", -1 );
-	output_easy( fp, info, "DEGREEGRANTOR", "%C", -1 );
-	output_easy( fp, info, "DEGREEGRANTOR:CORP", "%C", -1 );
-	output_easy( fp, info, "DEGREEGRANTOR:ASIS", "%C", -1 );
-	output_easy( fp, info, "SERIALNUMBER", "%@", -1 );
-	output_easy( fp, info, "ISSN", "%@", -1 );
-	output_easy( fp, info, "ISBN", "%@", -1 );
-	output_easy( fp, info, "LANGUAGE", "%G", -1 );
-	output_easy( fp, info, "REFNUM", "%F", -1 );
-	output_easyall( fp, info, "NOTES", "%O", -1 );
-	output_easy( fp, info, "ABSTRACT", "%X", -1 );
-	output_easy( fp, info, "CLASSIFICATION", "%L", -1 );
-	output_easyall( fp, info, "KEYWORD", "%K", -1 );
-	output_easyall( fp, info, "NGENRE", "%9", -1 );
+
+	if ( type==TYPE_ARTICLE || type==TYPE_MAGARTICLE || type==TYPE_ELECTRONICARTICLE || type==TYPE_NEWSARTICLE )
+		output_title( fp, info, "TITLE", "SUBTITLE", "%J", LEVEL_HOST );
+	else if ( type==TYPE_INBOOK || type==TYPE_INPROCEEDINGS ) {
+		output_title( fp, info, "TITLE", "SUBTITLE", "%B", LEVEL_HOST );
+	} else {
+		output_title( fp, info, "TITLE", "SUBTITLE", "%S", LEVEL_HOST );
+	}
+
+	if ( type!=TYPE_CASE && type!=TYPE_HEARING ) {
+		output_title( fp, info, "TITLE", "SUBTITLE", "%S", LEVEL_SERIES );
+	}
+
+	output_year( fp, info, LEVEL_ANY );
+	output_monthday( fp, info, LEVEL_ANY );
+
+	output_easy( fp, info, "VOLUME",             "%V", LEVEL_ANY );
+	output_easy( fp, info, "ISSUE",              "%N", LEVEL_ANY );
+	output_easy( fp, info, "NUMBER",             "%N", LEVEL_ANY );
+	output_easy( fp, info, "EDITION",            "%7", LEVEL_ANY );
+	output_easy( fp, info, "PUBLISHER",          "%I", LEVEL_ANY );
+	output_easy( fp, info, "ADDRESS",            "%C", LEVEL_ANY );
+	output_easy( fp, info, "DEGREEGRANTOR",      "%C", LEVEL_ANY );
+	output_easy( fp, info, "DEGREEGRANTOR:CORP", "%C", LEVEL_ANY );
+	output_easy( fp, info, "DEGREEGRANTOR:ASIS", "%C", LEVEL_ANY );
+	output_easy( fp, info, "SERIALNUMBER",       "%@", LEVEL_ANY );
+	output_easy( fp, info, "ISSN",               "%@", LEVEL_ANY );
+	output_easy( fp, info, "ISBN",               "%@", LEVEL_ANY );
+	output_easy( fp, info, "LANGUAGE",           "%G", LEVEL_ANY );
+	output_easy( fp, info, "REFNUM",             "%F", LEVEL_ANY );
+	output_easyall( fp, info, "NOTES",           "%O", LEVEL_ANY );
+	output_easy( fp, info, "ABSTRACT",           "%X", LEVEL_ANY );
+	output_easy( fp, info, "CLASSIFICATION",     "%L", LEVEL_ANY );
+	output_easyall( fp, info, "KEYWORD",         "%K", LEVEL_ANY );
+	output_easyall( fp, info, "NGENRE",          "%9", LEVEL_ANY );
 	output_thesishint( fp, type );
-	output_easyall( fp, info, "URL", "%U", -1 ); 
-	output_easyall( fp, info, "FILEATTACH", "%U", -1 ); 
+	output_easyall( fp, info, "URL",             "%U", LEVEL_ANY ); 
+	output_easyall( fp, info, "FILEATTACH",      "%U", LEVEL_ANY ); 
 	output_doi( fp, info );
 	output_pmid( fp, info );
 	output_arxiv( fp, info );
diff --git a/lib/endout.h b/lib/endout.h
index 04e2982..7359cef 100644
--- a/lib/endout.h
+++ b/lib/endout.h
@@ -1,7 +1,9 @@
 /*
  * endout.h
  *
- * Copyright (c) Chris Putnam 2005-2010
+ * Copyright (c) Chris Putnam 2005-2013
+ *
+ * Source code released under the GPL version 2
  *
  */
 #ifndef ENDOUT_H
diff --git a/lib/endtypes.c b/lib/endtypes.c
index 3cd5fa7..3d2999e 100644
--- a/lib/endtypes.c
+++ b/lib/endtypes.c
@@ -1,12 +1,11 @@
 /*
  * endtypes.c
  *
- * Copyright (c) Chris Putnam 2003-2010
+ * Copyright (c) Chris Putnam 2003-2013
  *
- * Program and source code released under the GPL
+ * Program and source code released under the GPL version 2
  *
  */
-
 #include <stdio.h>
 #include <string.h>
 #include "is_ws.h"
@@ -31,8 +30,8 @@ static lookups generic[] = {
 	{ "%N", "NUMBER",    SIMPLE, LEVEL_MAIN },
 	{ "%P", "PAGES",        PAGES,  LEVEL_MAIN },
 	{ "%&", "SECTION",      SIMPLE, LEVEL_MAIN },
-	{ "%Y", "3RD_AUTHOR",   PERSON, LEVEL_MAIN },
-	{ "%S", "3RD_TITLE",    SIMPLE, LEVEL_MAIN },
+	{ "%Y", "AUTHOR",   PERSON, LEVEL_SERIES },
+	{ "%S", "TITLE",     TITLE, LEVEL_SERIES },
 	{ "%7", "EDITION",      SIMPLE, LEVEL_MAIN },
 	{ "%8", "MONTH",    DATE,   LEVEL_MAIN },
 	{ "%9", "GENRE",        SIMPLE, LEVEL_MAIN },
@@ -111,6 +110,7 @@ static lookups journalarticle[] = {
 	{ "%~", "DATABASE",     SIMPLE,   LEVEL_MAIN },
 	{ "  ", "ISSUANCE|continuing",    ALWAYS, LEVEL_HOST },
 	{ "  ", "RESOURCE|text",          ALWAYS, LEVEL_MAIN },
+        { "  ", "GENRE|journal article",  ALWAYS, LEVEL_MAIN },
 	{ "  ", "GENRE|periodical",       ALWAYS, LEVEL_HOST },
 	{ "  ", "GENRE|academic journal", ALWAYS, LEVEL_HOST }
 };
@@ -304,9 +304,10 @@ static lookups booksection[] = {
 	{ "%[", "ACCESSDATE",   SIMPLE, LEVEL_MAIN },
 	{ "%=", "LASTMODDATE",  SIMPLE, LEVEL_MAIN },
 	{ "%~", "DATABASE",     SIMPLE, LEVEL_MAIN },
-	{ "  ", "GENRE|book", ALWAYS, LEVEL_HOST },
+        { "  ", "GENRE|book chapter",   ALWAYS, LEVEL_MAIN },
+	{ "  ", "GENRE|book",           ALWAYS, LEVEL_HOST },
 	{ "  ", "ISSUANCE|monographic", ALWAYS, LEVEL_HOST },
-	{ "  ", "RESOURCE|text", ALWAYS, LEVEL_MAIN }
+	{ "  ", "RESOURCE|text",        ALWAYS, LEVEL_MAIN }
 };
 
 static lookups editedbook[] = {
@@ -451,8 +452,8 @@ static lookups proceedings[] = {
 	{ "%6", "NUMVOLUMES",SIMPLE,  LEVEL_HOST },
 	{ "%N", "NUMBER",    SIMPLE,  LEVEL_MAIN },
 	{ "%P", "PAGES",     PAGES,   LEVEL_MAIN },
-	{ "%Y", "EDITOR",    PERSON,  LEVEL_HOST }, /* SERIES_EDITOR */
-	{ "%S", "TITLE",     TITLE,   LEVEL_HOST+1 }, /* SERIES_TITLE */
+	{ "%Y", "EDITOR",    PERSON,  LEVEL_SERIES },
+	{ "%S", "TITLE",     TITLE,   LEVEL_SERIES },
 	{ "%7", "EDITION",   SIMPLE,  LEVEL_HOST },
 	{ "%8", "MONTH", DATE,    LEVEL_MAIN },
 	{ "%!", "SHORTTITLE",TITLE,   LEVEL_MAIN },
@@ -1108,13 +1109,13 @@ static lookups chart[] = {
 	{ "%V", "VOLUME" ,   SIMPLE, LEVEL_MAIN },
 	{ "%6", "NUMVOLUMES",SIMPLE, LEVEL_HOST },
 	{ "%N", "NUMBER",    SIMPLE, LEVEL_MAIN },
-	{ "%P", "PAGES",        PAGES,  LEVEL_MAIN },
-	{ "%&", "SECTION",      SIMPLE, LEVEL_MAIN },
-	{ "%Y", "3RD_AUTHOR",   PERSON, LEVEL_MAIN },
-	{ "%S", "3RD_TITLE",    SIMPLE, LEVEL_MAIN },
-	{ "%7", "EDITION",      SIMPLE, LEVEL_MAIN },
-	{ "%8", "MONTH",    DATE,   LEVEL_MAIN },
-	{ "%9", "GENRE",        SIMPLE, LEVEL_MAIN },
+	{ "%P", "PAGES",     PAGES,  LEVEL_MAIN },
+	{ "%&", "SECTION",   SIMPLE, LEVEL_MAIN },
+	{ "%Y", "AUTHOR",    PERSON, LEVEL_SERIES },
+	{ "%S", "TITLE",     TITLE,  LEVEL_SERIES },
+	{ "%7", "EDITION",   SIMPLE, LEVEL_MAIN },
+	{ "%8", "MONTH",     DATE,   LEVEL_MAIN },
+	{ "%9", "GENRE",     SIMPLE, LEVEL_MAIN },
 	{ "%?", "SUB_AUTHOR",   PERSON, LEVEL_MAIN }, /* subsidiary-authors */
 	{ "%!", "SHORTTITLE",   TITLE,  LEVEL_MAIN },
 	{ "%@", "SERIALNUMBER", SERIALNO,  LEVEL_MAIN },
@@ -1163,8 +1164,8 @@ static lookups unpublished[] = {
 	{ "%N", "NUMBER",    SIMPLE, LEVEL_MAIN },
 	{ "%P", "PAGES",        PAGES,  LEVEL_MAIN },
 	{ "%&", "SECTION",      SIMPLE, LEVEL_MAIN },
-	{ "%Y", "3RD_AUTHOR",   PERSON, LEVEL_MAIN },
-	{ "%S", "3RD_TITLE",    SIMPLE, LEVEL_MAIN },
+	{ "%Y", "AUTHOR",   PERSON, LEVEL_SERIES },
+	{ "%S", "TITLE",    TITLE, LEVEL_SERIES },
 	{ "%7", "EDITION",      SIMPLE, LEVEL_MAIN },
 	{ "%8", "MONTH",    DATE,   LEVEL_MAIN },
 	{ "%9", "GENRE",        SIMPLE, LEVEL_MAIN },
diff --git a/lib/endxmlin.c b/lib/endxmlin.c
index 5e49f73..b11a769 100644
--- a/lib/endxmlin.c
+++ b/lib/endxmlin.c
@@ -1,9 +1,10 @@
 /*
  * endxmlin.c
  *
- * Copyright (c) Chris Putnam 2006-2010
+ * Copyright (c) Chris Putnam 2006-2013
+ *
+ * Program and source code released under the GPL version 2
  *
- * Program and source code released under the GPL
  */
 #include <stdio.h>
 #include <stdlib.h>
@@ -171,6 +172,8 @@ endxmlin_titles( xml *node, fields *info )
 		if ( xml_tagexact( node, a[i].attrib ) && node->down ) {
 			newstr_empty( &title );
 			endxmlin_datar( node, &title );
+			newstr_trimstartingws( &title );
+			newstr_trimendingws( &title );
 			fields_add( info, a[i].internal, title.data, 0);
 		}
 	}
@@ -323,68 +326,6 @@ endxmlin_dates( xml *node, fields *info )
 		endxmlin_dates( node->next, info );
 }
 
-#ifdef NOCOMPILE
-/*
- * There are a lot of elements in the end2xml stuff buried in element
- * attributes for which it's not clear where they should get stuck
- * -- for now put into notes
- */
-static void
-endxmlin_makeattribnotes( xml *node, fields *info, int level, attribs *a, int na )
-{
-	newstr *attrib, note;
-	int i;
-	newstr_init( &note );
-	for ( i=0; i<na; ++i ) {
-		attrib = xml_getattrib( node, a[i].attrib );
-		if ( attrib ) {
-			newstr_strcpy( &note, a[i].internal );
-			newstr_strcat( &note, ": " );
-			newstr_strcat( &note, attrib->data );
-			fields_add( info, "%O", note.data, level );
-			newstr_empty( &note );
-		}
-	}
-	newstr_free( &note );
-}
-#endif
-
-#ifdef NOCOMPILE
-/* <!ELEMENT source-app (#PCDATA)>
- * <!ATTLIST source-app
- *        name CDATA #IMPLIED
- *        version CDATA #IMPLIED
- * >
- */
-static void
-endxmlin_sourceapp( xml *node, fields *info )
-{
-	attribs a[] = {
-		{ "name", "SOURCE APPLICATION NAME" },
-		{ "version", "SOURCE APPLICATION VERSION" }
-	};
-	int na = sizeof( a ) / sizeof( a[0] );
-	endxmlin_makeattribnotes( node, info, 0, a, na );
-}
-
-/* <!ELEMENT database (#PCDATA)>
- * <!ATTLIST database
- *        name CDATA #IMPLIED
- *        path CDATA #IMPLIED
- * >
- */
-static void
-endxmlin_database( xml *node, fields *info )
-{
-	attribs a[] = {
-		{ "name", "DATABASE NAME" },
-		{ "path", "DATABASE PATH" }
-	};
-	int na = sizeof( a ) / sizeof( a[0] );
-	endxmlin_makeattribnotes( node, info, 0, a, na );
-}
-#endif
-
 /*
  * <ref-type name="Journal Article">17</ref-type>
  */
diff --git a/lib/endxmlin.h b/lib/endxmlin.h
index 3e0e522..0c9b362 100644
--- a/lib/endxmlin.h
+++ b/lib/endxmlin.h
@@ -1,9 +1,9 @@
 /*
  * endxmlin.h
  *
- * Copyright (c) Chris Putnam 2006-2009
+ * Copyright (c) Chris Putnam 2006-2013
  *
- * Program and source code released under the GPL
+ * Source code released under the GPL version 2
  *
  */
 #ifndef ENDXMLIN_H
diff --git a/lib/entities.c b/lib/entities.c
index 2d9ff3d..537d15f 100644
--- a/lib/entities.c
+++ b/lib/entities.c
@@ -1,9 +1,10 @@
 /*
  * entities.c
  *
- * Copyright (c) Chris Putnam 2003-2010
+ * Copyright (c) Chris Putnam 2003-2013
+ *
+ * Source code released under the GPL version 2
  *
- * Source code released under the GPL
  */
 #include <stdio.h>
 #include <string.h>
@@ -21,7 +22,7 @@ entities html_entities[] = {
 	/* Special Entities */
 	{ """,     34 },  /* quotation mark */
 	{ "&",      38 },  /* ampersand */
-	{ "'",     39 },  /* apostrophe */
+	{ "'",     39 },  /* apostrophe (note not defined in HTML) */
 	{ "(",     40 },  /* left parenthesis */
 	{ ")",     41 },  /* right parenthesis */
 	{ "‐",   45 },  /* hyphen */
@@ -316,7 +317,7 @@ decode_decimal_entity( char *s, unsigned int *pi, int *err )
 {
 	unsigned int c = 0, d;
 	int i = *pi, j = 2;
-	while ( isdigit( s[i+j] ) ) {
+	while ( isdigit( (unsigned char)s[i+j] ) ) {
 		d = s[i+j] - '0';
 		c = 10 * c + d;
 		j++;
@@ -337,9 +338,9 @@ decode_hex_entity( char *s, unsigned int *pi, int *err )
 {
 	unsigned int c = 0, d;
 	int i = *pi, j = 3;
-	while ( isxdigit( s[i+j] ) ) {
-		if ( isdigit( s[i+j] ) ) d = s[i+j]-'0';
-		else d = toupper(s[i+j])-'A' + 10;
+	while ( isxdigit( (unsigned char)s[i+j] ) ) {
+		if ( isdigit( (unsigned char)s[i+j] ) ) d = s[i+j]-'0';
+		else d = toupper((unsigned char)s[i+j])-'A' + 10;
 		c = 16 * c + d;
 		j++;
 	}
@@ -352,13 +353,16 @@ decode_hex_entity( char *s, unsigned int *pi, int *err )
  * decode numeric entity
  *
  *    extract a numeric entity from &#NNN; or &#xNNNN;
+ *
+ *    In XML, the "x" in hexadecimal entries should be lowercase,
+ *    but we'll be generous and accept "X" as well.
  */
 static unsigned int
 decode_numeric_entity( char *s, unsigned int *pi, int *err )
 {
 	unsigned int c;
 	*err = 0;
-	if ( s[*pi+2]!='x' ) c = decode_decimal_entity( s, pi, err );
+	if ( s[*pi+2]!='x' && s[*pi+2]!='X' ) c = decode_decimal_entity( s, pi, err );
 	else c = decode_hex_entity( s, pi, err );
 	if ( *err ) {
 		*pi = *pi + 1;
@@ -369,7 +373,12 @@ decode_numeric_entity( char *s, unsigned int *pi, int *err )
 
 /*
  * decode entity
- *    extract entity from  &xxxx; 
+ *    extract entity from  &mmmm;
+ *
+ * where &mmmm; is one of
+ * - &#nnnn; is code point in decimal form
+ * - &#xhhhh; is code point in hexadecimal form (note "x" is lowercase in XML)
+ * - &mmmm; corresponds to a pre-defined XML entity, e.g. &quote for quotations
  *
  */
 unsigned int
diff --git a/lib/entities.h b/lib/entities.h
index 5864b64..e3de5d7 100644
--- a/lib/entities.h
+++ b/lib/entities.h
@@ -1,11 +1,11 @@
 /*
  * entities.h
  *
- * Copyright (c) Chris Putnam 2003-2009
+ * Copyright (c) Chris Putnam 2003-2013
+ *
+ * Source code released under the GPL version 2
  *
- * Source code released under the GPL
  */
-
 #ifndef ENTITIES_H
 #define ENTITIES_H
 
diff --git a/lib/entities.txt b/lib/entities.txt
deleted file mode 100644
index 47ee81b..0000000
--- a/lib/entities.txt
+++ /dev/null
@@ -1,461 +0,0 @@
-[edit]Character reference overview
-A numeric character reference refers to a character by its Universal Character Set/Unicode code point, and uses the format
-&#nnnn;
-or
-&#xhhhh;
-where nnnn is the code point in decimal form, and hhhh is the code point in hexadecimal form. The x must be lowercase in XML documents. The nnnn or hhhh may be any number of digits and may include leading zeros. The hhhh may mix uppercase and lowercase, though uppercase is the usual style.
-In contrast, a character entity reference refers to a character by the name of an entity which has the desired character as its replacement text. The entity must either be predefined (built-in to the markup language) or explicitly declared in a Document Type Definition (DTD). The format is the same as for any entity reference:
-&name;
-where name is the name of the entity. The semicolon is required.
-
-
-[edit]Predefined entities in XML
-The XML specification does not use the term "character entity" or "character entity reference". The XML specification defines five "predefined entities" representing special characters, and requires that all XML processors honor them. The entities can be explicitly declared in a DTD, as well, but if this is done, the replacement text must be the same as the built-in definitions. XML also allows other named entities of any size to be defined on a per-document basis.
-The table below lists the five XML predefined entities. The "Name" column mentions the entity's name. The "Character" column shows the character, if it is renderable. In order to render the character, the format &name; is used; for example, & renders as &. The "Unicode code point" column cites the character via standard UCS/Unicode "U+" notation, which shows the character's code point in hexadecimal. The decimal equivalent of the code point is then shown in parentheses. The "Standard [...]
-
-
-Name
-Character
-Unicode code point
-Standard
-Description
-quot  "  U+0022 (34)  XML 1.0  (double) quotation mark
-  amp  &  U+0026 (38)  XML 1.0  ampersand
-  apos  '  U+0027 (39)  XML 1.0  apostrophe (= apostrophe-quote)
-  lt  <  U+003C (60)  XML 1.0  less-than sign
-  gt  >  U+003E (62)  XML 1.0  greater-than sign
-
-
-rs who have been exposed to XML and XHTML often overlook the fact that the
-apos entity is not defined in HTML. rsquo is the best alternative in this case
-(but it is not the same character), or authors can use a numeric character
-reference instead (' or &#x27; which always designate the character using
-the numeric value of its Unicode code point, independently of the actual
-document encoding).
-In the table below, the HTML built-in character entities are listed. The
-columns are as in the XML entity table, above, except "Standard" column
-indicates the first version of HTML that includes the entity. The version is
-one of the major releases of the HTML spec: 2.0, 3.2, or 4.0. HTML 4.01 didn't
-introduce any new entities.
-Name
-Character
-Unicode code point
-Standard
-DTD[1]
-Old ISO subset[2]
-Description[3]
-quot  "  U+0022 (34)  HTML 2.0  HTMLspecial  ISOnum  quotation mark (= APL
-quote)
-  amp  &  U+0026 (38)  HTML 2.0  HTMLspecial  ISOnum  ampersand
-  apos  '  U+0027 (39)  XHTML 1.0  HTMLspecial  ISOnum  apostrophe (=
-apostrophe-quote); see below
-  lt  <  U+003C (60)  HTML 2.0  HTMLspecial  ISOnum  less-than sign
-  gt  >  U+003E (62)  HTML 2.0  HTMLspecial  ISOnum  greater-than sign
-  nbsp     U+00A0 (160)  HTML 3.2  HTMLlat1  ISOnum  no-break space (=
-non-breaking space)[4]
-  iexcl  ¡  U+00A1 (161)  HTML 3.2  HTMLlat1  ISOnum  inverted exclamation
-mark
-  cent  ¢  U+00A2 (162)  HTML 3.2  HTMLlat1  ISOnum  cent sign
-  pound  £  U+00A3 (163)  HTML 3.2  HTMLlat1  ISOnum  pound sign
-  curren  ¤  U+00A4 (164)  HTML 3.2  HTMLlat1  ISOnum  currency sign
-  yen  ¥  U+00A5 (165)  HTML 3.2  HTMLlat1  ISOnum  yen sign (= yuan sign)
-  brvbar  ¦  U+00A6 (166)  HTML 3.2  HTMLlat1  ISOnum  broken bar (= broken
-vertical bar)
-  sect  §  U+00A7 (167)  HTML 3.2  HTMLlat1  ISOnum  section sign
-  uml  ¨  U+00A8 (168)  HTML 3.2  HTMLlat1  ISOdia  diaeresis (= spacing
-diaeresis); see German umlaut
-  copy  ©  U+00A9 (169)  HTML 3.2  HTMLlat1  ISOnum  copyright sign
-  ordf  ª  U+00AA (170)  HTML 3.2  HTMLlat1  ISOnum  feminine ordinal
-indicator
-  laquo  «  U+00AB (171)  HTML 3.2  HTMLlat1  ISOnum  left-pointing double
-angle quotation mark (= left pointing guillemet)
-  not  ¬  U+00AC (172)  HTML 3.2  HTMLlat1  ISOnum  not sign
-  shy     U+00AD (173)  HTML 3.2  HTMLlat1  ISOnum  soft hyphen (=
-discretionary hyphen)
-  reg  ®  U+00AE (174)  HTML 3.2  HTMLlat1  ISOnum  registered sign ( =
-registered trade mark sign)
-  macr  ¯  U+00AF (175)  HTML 3.2  HTMLlat1  ISOdia  macron (= spacing macron
-= overline = APL overbar)
-  deg  °  U+00B0 (176)  HTML 3.2  HTMLlat1  ISOnum  degree sign
-  plusmn  ±  U+00B1 (177)  HTML 3.2  HTMLlat1  ISOnum  plus-minus sign (=
-plus-or-minus sign)
-  sup2  ²  U+00B2 (178)  HTML 3.2  HTMLlat1  ISOnum  superscript two (=
-superscript digit two = squared)
-  sup3  ³  U+00B3 (179)  HTML 3.2  HTMLlat1  ISOnum  superscript three (=
-superscript digit three = cubed)
-  acute  ´  U+00B4 (180)  HTML 3.2  HTMLlat1  ISOdia  acute accent (= spacing
-acute)
-  micro  µ  U+00B5 (181)  HTML 3.2  HTMLlat1  ISOnum  micro sign
-  para  ¶  U+00B6 (182)  HTML 3.2  HTMLlat1  ISOnum  pilcrow sign ( =
-paragraph sign)
-  middot  ·  U+00B7 (183)  HTML 3.2  HTMLlat1  ISOnum  middle dot (= Georgian
-comma = Greek middle dot)
-  cedil  ¸  U+00B8 (184)  HTML 3.2  HTMLlat1  ISOdia  cedilla (= spacing
-cedilla)
-  sup1  ¹  U+00B9 (185)  HTML 3.2  HTMLlat1  ISOnum  superscript one (=
-superscript digit one)
-  ordm  º  U+00BA (186)  HTML 3.2  HTMLlat1  ISOnum  masculine ordinal
-indicator
-  raquo   »  U+00BB (187)  HTML 3.2  HTMLlat1  ISOnum  right-pointing double
-angle quotation mark (= right pointing guillemet)
-  frac14  ¼  U+00BC (188)  HTML 3.2  HTMLlat1  ISOnum  vulgar fraction one
-quarter (= fraction one quarter)
-  frac12  ½  U+00BD (189)  HTML 3.2  HTMLlat1  ISOnum  vulgar fraction one
-half (= fraction one half)
-  frac34  ¾  U+00BE (190)  HTML 3.2  HTMLlat1  ISOnum  vulgar fraction three
-quarters (= fraction three quarters)
-  iquest  ¿  U+00BF (191)  HTML 3.2  HTMLlat1  ISOnum  inverted question mark
-(= turned question mark)
-  Agrave  À  U+00C0 (192)  HTML 2.0  HTMLlat1  ISOlat1  Latin capital letter A
-with grave (= Latin capital letter A grave)
-  Aacute  Á  U+00C1 (193)  HTML 2.0  HTMLlat1  ISOlat1  Latin capital letter A
-with acute
-  Acirc  Â  U+00C2 (194)  HTML 2.0  HTMLlat1  ISOlat1  Latin capital letter A
-with circumflex
-  Atilde  Ã  U+00C3 (195)  HTML 2.0  HTMLlat1  ISOlat1  Latin capital letter A
-with tilde
-  Auml  Ä  U+00C4 (196)  HTML 2.0  HTMLlat1  ISOlat1  Latin capital letter A
-with diaeresis
-  Aring  Å  U+00C5 (197)  HTML 2.0  HTMLlat1  ISOlat1  Latin capital letter A
-with ring above (= Latin capital letter A ring)
-  AElig  Æ  U+00C6 (198)  HTML 2.0  HTMLlat1  ISOlat1  Latin capital letter AE
-(= Latin capital ligature AE)
-  Ccedil  Ç  U+00C7 (199)  HTML 2.0  HTMLlat1  ISOlat1  Latin capital letter C
-with cedilla
-  Egrave  È  U+00C8 (200)  HTML 2.0  HTMLlat1  ISOlat1  Latin capital letter E
-with grave
-  Eacute  É  U+00C9 (201)  HTML 2.0  HTMLlat1  ISOlat1  Latin capital letter E
-with acute
-  Ecirc  Ê  U+00CA (202)  HTML 2.0  HTMLlat1  ISOlat1  Latin capital letter E
-with circumflex
-  Euml  Ë  U+00CB (203)  HTML 2.0  HTMLlat1  ISOlat1  Latin capital letter E
-with diaeresis
-  Igrave  Ì  U+00CC (204)  HTML 2.0  HTMLlat1  ISOlat1  Latin capital letter I
-with grave
-  Iacute  Í  U+00CD (205)  HTML 2.0  HTMLlat1  ISOlat1  Latin capital letter I
-with acute
-  Icirc  Î  U+00CE (206)  HTML 2.0  HTMLlat1  ISOlat1  Latin capital letter I
-with circumflex
-  Iuml  Ï  U+00CF (207)  HTML 2.0  HTMLlat1  ISOlat1  Latin capital letter I
-with diaeresis
-  ETH  Ð  U+00D0 (208)  HTML 2.0  HTMLlat1  ISOlat1  Latin capital letter ETH
-  Ntilde  Ñ  U+00D1 (209)  HTML 2.0  HTMLlat1  ISOlat1  Latin capital letter N
-with tilde
-  Ograve  Ò  U+00D2 (210)  HTML 2.0  HTMLlat1  ISOlat1  Latin capital letter O
-with grave
-  Oacute  Ó  U+00D3 (211)  HTML 2.0  HTMLlat1  ISOlat1  Latin capital letter O
-with acute
-  Ocirc  Ô  U+00D4 (212)  HTML 2.0  HTMLlat1  ISOlat1  Latin capital letter O
-with circumflex
-  Otilde  Õ  U+00D5 (213)  HTML 2.0  HTMLlat1  ISOlat1  Latin capital letter O
-with tilde
-  Ouml  Ö  U+00D6 (214)  HTML 2.0  HTMLlat1  ISOlat1  Latin capital letter O
-with diaeresis
-  times  ×  U+00D7 (215)  HTML 3.2  HTMLlat1  ISOnum  multiplication sign
-  Oslash  Ø  U+00D8 (216)  HTML 2.0  HTMLlat1  ISOlat1  Latin capital letter O
-with stroke (= Latin capital letter O slash)
-  Ugrave  Ù  U+00D9 (217)  HTML 2.0  HTMLlat1  ISOlat1  Latin capital letter U
-with grave
-  Uacute  Ú  U+00DA (218)  HTML 2.0  HTMLlat1  ISOlat1  Latin capital letter U
-with acute
-  Ucirc  Û  U+00DB (219)  HTML 2.0  HTMLlat1  ISOlat1  Latin capital letter U
-with circumflex
-  Uuml  Ü  U+00DC (220)  HTML 2.0  HTMLlat1  ISOlat1  Latin capital letter U
-with diaeresis
-  Yacute  Ý  U+00DD (221)  HTML 2.0  HTMLlat1  ISOlat1  Latin capital letter Y
-with acute
-  THORN  Þ  U+00DE (222)  HTML 2.0  HTMLlat1  ISOlat1  Latin capital letter
-THORN
-  szlig  ß  U+00DF (223)  HTML 2.0  HTMLlat1  ISOlat1  Latin small letter
-sharp s (= ess-zed); see German Eszett
-  agrave  à  U+00E0 (224)  HTML 2.0  HTMLlat1  ISOlat1  Latin small letter a
-with grave
-  aacute  á  U+00E1 (225)  HTML 2.0  HTMLlat1  ISOlat1  Latin small letter a
-with acute
-  acirc  â  U+00E2 (226)  HTML 2.0  HTMLlat1  ISOlat1  Latin small letter a
-with circumflex
-  atilde  ã  U+00E3 (227)  HTML 2.0  HTMLlat1  ISOlat1  Latin small letter a
-with tilde
-  auml  ä  U+00E4 (228)  HTML 2.0  HTMLlat1  ISOlat1  Latin small letter a
-with diaeresis
-  aring  å  U+00E5 (229)  HTML 2.0  HTMLlat1  ISOlat1  Latin small letter a
-with ring above
-  aelig  æ  U+00E6 (230)  HTML 2.0  HTMLlat1  ISOlat1  Latin small letter ae
-(= Latin small ligature ae)
-  ccedil  ç  U+00E7 (231)  HTML 2.0  HTMLlat1  ISOlat1  Latin small letter c
-with cedilla
-  egrave  è  U+00E8 (232)  HTML 2.0  HTMLlat1  ISOlat1  Latin small letter e
-with grave
-  eacute  é  U+00E9 (233)  HTML 2.0  HTMLlat1  ISOlat1  Latin small letter e
-with acute
-  ecirc  ê  U+00EA (234)  HTML 2.0  HTMLlat1  ISOlat1  Latin small letter e
-with circumflex
-  euml  ë  U+00EB (235)  HTML 2.0  HTMLlat1  ISOlat1  Latin small letter e
-with diaeresis
-  igrave  ì  U+00EC (236)  HTML 2.0  HTMLlat1  ISOlat1  Latin small letter i
-with grave
-  iacute  í  U+00ED (237)  HTML 2.0  HTMLlat1  ISOlat1  Latin small letter i
-with acute
-  icirc  î  U+00EE (238)  HTML 2.0  HTMLlat1  ISOlat1  Latin small letter i
-with circumflex
-  iuml  ï  U+00EF (239)  HTML 2.0  HTMLlat1  ISOlat1  Latin small letter i
-with diaeresis
-  eth  ð  U+00F0 (240)  HTML 2.0  HTMLlat1  ISOlat1  Latin small letter eth
-  ntilde  ñ  U+00F1 (241)  HTML 2.0  HTMLlat1  ISOlat1  Latin small letter n
-with tilde
-  ograve  ò  U+00F2 (242)  HTML 2.0  HTMLlat1  ISOlat1  Latin small letter o
-with grave
-  oacute  ó  U+00F3 (243)  HTML 2.0  HTMLlat1  ISOlat1  Latin small letter o
-with acute
-  ocirc  ô  U+00F4 (244)  HTML 2.0  HTMLlat1  ISOlat1  Latin small letter o
-with circumflex
-  otilde  õ  U+00F5 (245)  HTML 2.0  HTMLlat1  ISOlat1  Latin small letter o
-with tilde
-  ouml  ö  U+00F6 (246)  HTML 2.0  HTMLlat1  ISOlat1  Latin small letter o
-with diaeresis
-  divide  ÷  U+00F7 (247)  HTML 3.2  HTMLlat1  ISOnum  division sign
-  oslash  ø  U+00F8 (248)  HTML 2.0  HTMLlat1  ISOlat1  Latin small letter o
-with stroke (= Latin small letter o slash)
-  ugrave  ù  U+00F9 (249)  HTML 2.0  HTMLlat1  ISOlat1  Latin small letter u
-with grave
-  uacute  ú  U+00FA (250)  HTML 2.0  HTMLlat1  ISOlat1  Latin small letter u
-with acute
-  ucirc  û  U+00FB (251)  HTML 2.0  HTMLlat1  ISOlat1  Latin small letter u
-with circumflex
-  uuml  ü  U+00FC (252)  HTML 2.0  HTMLlat1  ISOlat1  Latin small letter u
-with diaeresis
-  yacute  ý  U+00FD (253)  HTML 2.0  HTMLlat1  ISOlat1  Latin small letter y
-with acute
-  thorn  þ  U+00FE (254)  HTML 2.0  HTMLlat1  ISOlat1  Latin small letter
-thorn
-  yuml  ÿ  U+00FF (255)  HTML 2.0  HTMLlat1  ISOlat1  Latin small letter y
-with diaeresis
-  OElig  Π U+0152 (338)  HTML 4.0  HTMLspecial  ISOlat2  Latin capital
-ligature oe[5]
-  oelig  œ  U+0153 (339)  HTML 4.0  HTMLspecial  ISOlat2  Latin small ligature
-oe[6]
-  Scaron  Š  U+0160 (352)  HTML 4.0  HTMLspecial  ISOlat2  Latin capital
-letter s with caron
-  scaron  š  U+0161 (353)  HTML 4.0  HTMLspecial  ISOlat2  Latin small letter
-s with caron
-  Yuml  Ÿ  U+0178 (376)  HTML 4.0  HTMLspecial  ISOlat2  Latin capital letter
-y with diaeresis
-  fnof  ƒ  U+0192 (402)  HTML 4.0  HTMLsymbol  ISOtech  Latin small letter f
-with hook (= function = florin)
-  circ  ˆ  U+02C6 (710)  HTML 4.0  HTMLspecial  ISOpub  modifier letter
-circumflex accent
-  tilde  ˜  U+02DC (732)  HTML 4.0  HTMLspecial  ISOdia  small tilde
-  Alpha  Α  U+0391 (913)  HTML 4.0  HTMLsymbol  Greek capital letter Alpha
-  Beta  Β  U+0392 (914)  HTML 4.0  HTMLsymbol  Greek capital letter Beta
-  Gamma  Γ  U+0393 (915)  HTML 4.0  HTMLsymbol  ISOgrk3  Greek capital letter
-Gamma
-  Delta  Δ  U+0394 (916)  HTML 4.0  HTMLsymbol  ISOgrk3  Greek capital letter
-Delta
-  Epsilon  Ε  U+0395 (917)  HTML 4.0  HTMLsymbol  Greek capital letter Epsilon
-  Zeta  Ζ  U+0396 (918)  HTML 4.0  HTMLsymbol  Greek capital letter Zeta
-  Eta  Η  U+0397 (919)  HTML 4.0  HTMLsymbol  Greek capital letter Eta
-  Theta  Θ  U+0398 (920)  HTML 4.0  HTMLsymbol  ISOgrk3  Greek capital letter
-Theta
-  Iota  Ι  U+0399 (921)  HTML 4.0  HTMLsymbol  Greek capital letter Iota
-  Kappa  Κ  U+039A (922)  HTML 4.0  HTMLsymbol  Greek capital letter Kappa
-  Lambda  Λ  U+039B (923)  HTML 4.0  HTMLsymbol  ISOgrk3  Greek capital letter
-Lambda
-  Mu  Μ  U+039C (924)  HTML 4.0  HTMLsymbol  Greek capital letter Mu
-  Nu  Ν  U+039D (925)  HTML 4.0  HTMLsymbol  Greek capital letter Nu
-  Xi  Ξ  U+039E (926)  HTML 4.0  HTMLsymbol  ISOgrk3  Greek capital letter Xi
-  Omicron  Ο  U+039F (927)  HTML 4.0  HTMLsymbol  Greek capital letter Omicron
-  Pi  Π  U+03A0 (928)  HTML 4.0  HTMLsymbol  Greek capital letter Pi
-  Rho  Ρ  U+03A1 (929)  HTML 4.0  HTMLsymbol  Greek capital letter Rho
-  Sigma  Σ  U+03A3 (931)  HTML 4.0  HTMLsymbol  ISOgrk3  Greek capital letter
-Sigma
-  Tau  Τ  U+03A4 (932)  HTML 4.0  HTMLsymbol  Greek capital letter Tau
-  Upsilon  Υ  U+03A5 (933)  HTML 4.0  HTMLsymbol  ISOgrk3  Greek capital
-letter Upsilon
-  Phi  Φ  U+03A6 (934)  HTML 4.0  HTMLsymbol  ISOgrk3  Greek capital letter
-Phi
-  Chi  Χ  U+03A7 (935)  HTML 4.0  HTMLsymbol  Greek capital letter Chi
-  Psi  Ψ  U+03A8 (936)  HTML 4.0  HTMLsymbol  ISOgrk3  Greek capital letter
-Psi
-  Omega  Ω  U+03A9 (937)  HTML 4.0  HTMLsymbol  ISOgrk3  Greek capital letter
-Omega
-  alpha  α  U+03B1 (945)  HTML 4.0  HTMLsymbol  ISOgrk3  Greek small letter
-alpha
-  beta  β  U+03B2 (946)  HTML 4.0  HTMLsymbol  ISOgrk3  Greek small letter
-beta
-  gamma  γ  U+03B3 (947)  HTML 4.0  HTMLsymbol  ISOgrk3  Greek small letter
-gamma
-  delta  δ  U+03B4 (948)  HTML 4.0  HTMLsymbol  ISOgrk3  Greek small letter
-delta
-  epsilon  ε  U+03B5 (949)  HTML 4.0  HTMLsymbol  ISOgrk3  Greek small letter
-epsilon
-  zeta  ζ  U+03B6 (950)  HTML 4.0  HTMLsymbol  ISOgrk3  Greek small letter
-zeta
-  eta  η  U+03B7 (951)  HTML 4.0  HTMLsymbol  ISOgrk3  Greek small letter eta
-  theta  θ  U+03B8 (952)  HTML 4.0  HTMLsymbol  ISOgrk3  Greek small letter
-theta
-  iota  ι  U+03B9 (953)  HTML 4.0  HTMLsymbol  ISOgrk3  Greek small letter
-iota
-  kappa  κ  U+03BA (954)  HTML 4.0  HTMLsymbol  ISOgrk3  Greek small letter
-kappa
-  lambda  λ  U+03BB (955)  HTML 4.0  HTMLsymbol  ISOgrk3  Greek small letter
-lambda
-  mu  μ  U+03BC (956)  HTML 4.0  HTMLsymbol  ISOgrk3  Greek small letter mu
-  nu  ν  U+03BD (957)  HTML 4.0  HTMLsymbol  ISOgrk3  Greek small letter nu
-  xi  ξ  U+03BE (958)  HTML 4.0  HTMLsymbol  ISOgrk3  Greek small letter xi
-  omicron  ο  U+03BF (959)  HTML 4.0  HTMLsymbol  NEW  Greek small letter
-omicron
-  pi  π  U+03C0 (960)  HTML 4.0  HTMLsymbol  ISOgrk3  Greek small letter pi
-  rho  ρ  U+03C1 (961)  HTML 4.0  HTMLsymbol  ISOgrk3  Greek small letter rho
-  sigmaf  ς  U+03C2 (962)  HTML 4.0  HTMLsymbol  ISOgrk3  Greek small letter
-final sigma
-  sigma  σ  U+03C3 (963)  HTML 4.0  HTMLsymbol  ISOgrk3  Greek small letter
-sigma
-  tau  τ  U+03C4 (964)  HTML 4.0  HTMLsymbol  ISOgrk3  Greek small letter tau
-  upsilon  υ  U+03C5 (965)  HTML 4.0  HTMLsymbol  ISOgrk3  Greek small letter
-upsilon
-  phi  φ  U+03C6 (966)  HTML 4.0  HTMLsymbol  ISOgrk3  Greek small letter phi
-  chi  χ  U+03C7 (967)  HTML 4.0  HTMLsymbol  ISOgrk3  Greek small letter chi
-  psi  ψ  U+03C8 (968)  HTML 4.0  HTMLsymbol  ISOgrk3  Greek small letter psi
-  omega  ω  U+03C9 (969)  HTML 4.0  HTMLsymbol  ISOgrk3  Greek small letter
-omega
-  thetasym  ϑ  U+03D1 (977)  HTML 4.0  HTMLsymbol  NEW  Greek theta symbol
-  upsih  ϒ  U+03D2 (978)  HTML 4.0  HTMLsymbol  NEW  Greek Upsilon with hook
-symbol
-  piv  ϖ  U+03D6 (982)  HTML 4.0  HTMLsymbol  ISOgrk3  Greek pi symbol
-  ensp     U+2002 (8194)  HTML 4.0  HTMLspecial  ISOpub  en space[7]
-  emsp     U+2003 (8195)  HTML 4.0  HTMLspecial  ISOpub  em space[8]
-  thinsp     U+2009 (8201)  HTML 4.0  HTMLspecial  ISOpub  thin space[9]
-  zwnj     U+200C (8204)  HTML 4.0  HTMLspecial  NEW RFC 2070  zero-width
-non-joiner
-  zwj     U+200D (8205)  HTML 4.0  HTMLspecial  NEW RFC 2070  zero-width
-joiner
-  lrm     U+200E (8206)  HTML 4.0  HTMLspecial  NEW RFC 2070  left-to-right
-mark
-  rlm     U+200F (8207)  HTML 4.0  HTMLspecial  NEW RFC 2070  right-to-left
-mark
-  ndash  –  U+2013 (8211)  HTML 4.0  HTMLspecial  ISOpub  en dash
-  mdash  —  U+2014 (8212)  HTML 4.0  HTMLspecial  ISOpub  em dash
-  lsquo  ‘  U+2018 (8216)  HTML 4.0  HTMLspecial  ISOnum  left single
-quotation mark
-  rsquo  ’  U+2019 (8217)  HTML 4.0  HTMLspecial  ISOnum  right single
-quotation mark
-  sbquo  ‚  U+201A (8218)  HTML 4.0  HTMLspecial  NEW  single low-9 quotation
-mark
-  ldquo  “  U+201C (8220)  HTML 4.0  HTMLspecial  ISOnum  left double
-quotation mark
-  rdquo  ”  U+201D (8221)  HTML 4.0  HTMLspecial  ISOnum  right double
-quotation mark
-  bdquo  „  U+201E (8222)  HTML 4.0  HTMLspecial  NEW  double low-9 quotation
-mark
-  dagger  †  U+2020 (8224)  HTML 4.0  HTMLspecial  ISOpub  dagger
-  Dagger  ‡  U+2021 (8225)  HTML 4.0  HTMLspecial  ISOpub  double dagger
-  bull  •  U+2022 (8226)  HTML 4.0  HTMLspecial  ISOpub  bullet (= black small
-circle)[10]
-  hellip  …  U+2026 (8230)  HTML 4.0  HTMLsymbol  ISOpub  horizontal ellipsis
-(= three dot leader)
-  permil  ‰  U+2030 (8240)  HTML 4.0  HTMLspecial  ISOtech  per mille sign
-  prime  ′  U+2032 (8242)  HTML 4.0  HTMLsymbol  ISOtech  prime (= minutes =
-feet)
-  Prime  ″  U+2033 (8243)  HTML 4.0  HTMLsymbol  ISOtech  double prime (=
-seconds = inches)
-  lsaquo  ‹  U+2039 (8249)  HTML 4.0  HTMLspecial  ISO proposed  single
-left-pointing angle quotation mark[11]
-  rsaquo  ›  U+203A (8250)  HTML 4.0  HTMLspecial  ISO proposed  single
-right-pointing angle quotation mark[12]
-  oline  ‾  U+203E (8254)  HTML 4.0  HTMLsymbol  NEW  overline (= spacing
-overscore)
-  frasl  ⁄  U+2044 (8260)  HTML 4.0  HTMLsymbol  NEW  fraction slash (=
-solidus)
-  euro  €  U+20AC (8364)  HTML 4.0  HTMLspecial  NEW  euro sign
-  image  ℑ  U+2111 (8465)  HTML 4.0  HTMLsymbol  ISOamso  black-letter capital
-I (= imaginary part)
-  weierp  ℘  U+2118 (8472)  HTML 4.0  HTMLsymbol  ISOamso  script capital P (=
-power set = Weierstrass p)
-  real  ℜ  U+211C (8476)  HTML 4.0  HTMLsymbol  ISOamso  black-letter capital
-R (= real part symbol)
-  trade  ™  U+2122 (8482)  HTML 4.0  HTMLsymbol  ISOnum  trademark sign
-  alefsym  ℵ  U+2135 (8501)  HTML 4.0  HTMLsymbol  NEW  alef symbol (= first
-transfinite cardinal)[13]
-  larr  ←  U+2190 (8592)  HTML 4.0  HTMLsymbol  ISOnum  leftwards arrow
-  uarr  ↑  U+2191 (8593)  HTML 4.0  HTMLsymbol  ISOnum  upwards arrow
-  rarr  →  U+2192 (8594)  HTML 4.0  HTMLsymbol  ISOnum  rightwards arrow
-  darr  ↓  U+2193 (8595)  HTML 4.0  HTMLsymbol  ISOnum  downwards arrow
-  harr  ↔  U+2194 (8596)  HTML 4.0  HTMLsymbol  ISOamsa  left right arrow
-  crarr  ↵  U+21B5 (8629)  HTML 4.0  HTMLsymbol  NEW  downwards arrow with
-corner leftwards (= carriage return)
-  lArr  ⇐  U+21D0 (8656)  HTML 4.0  HTMLsymbol  ISOtech  leftwards double
-arrow[14]
-  uArr  ⇑  U+21D1 (8657)  HTML 4.0  HTMLsymbol  ISOamsa  upwards double arrow
-  rArr  ⇒  U+21D2 (8658)  HTML 4.0  HTMLsymbol  ISOnum  rightwards double
-arrow[15]
-  dArr  ⇓  U+21D3 (8659)  HTML 4.0  HTMLsymbol  ISOamsa  downwards double
-arrow
-  hArr  ⇔  U+21D4 (8660)  HTML 4.0  HTMLsymbol  ISOamsa  left right double
-arrow
-  forall  ∀  U+2200 (8704)  HTML 4.0  HTMLsymbol  ISOtech  for all
-  part  ∂  U+2202 (8706)  HTML 4.0  HTMLsymbol  ISOtech  partial differential
-  exist  ∃  U+2203 (8707)  HTML 4.0  HTMLsymbol  ISOtech  there exists
-  empty  ∅  U+2205 (8709)  HTML 4.0  HTMLsymbol  ISOamso  empty set (= null
-set = diameter)
-  nabla  ∇  U+2207 (8711)  HTML 4.0  HTMLsymbol  ISOtech  nabla (= backward
-difference)
-  isin  ∈  U+2208 (8712)  HTML 4.0  HTMLsymbol  ISOtech  element of
-  notin  ∉  U+2209 (8713)  HTML 4.0  HTMLsymbol  ISOtech  not an element of
-  ni  ∋  U+220B (8715)  HTML 4.0  HTMLsymbol  ISOtech  contains as member
-  prod  ∏  U+220F (8719)  HTML 4.0  HTMLsymbol  ISOamsb  n-ary product (=
-product sign)[16]
-  sum  ∑  U+2211 (8721)  HTML 4.0  HTMLsymbol  ISOasmb  n-ary summation[17]
-  minus  −  U+2212 (8722)  HTML 4.0  HTMLsymbol  ISOtech  minus sign
-  lowast  ∗  U+2217 (8727)  HTML 4.0  HTMLsymbol  ISOtech  asterisk operator
-  radic  √  U+221A (8730)  HTML 4.0  HTMLsymbol  ISOtech  square root (=
-radical sign)
-  prop  ∝  U+221D (8733)  HTML 4.0  HTMLsymbol  ISOtech  proportional to
-  infin  ∞  U+221E (8734)  HTML 4.0  HTMLsymbol  ISOtech  infinity
-  ang  ∠  U+2220 (8736)  HTML 4.0  HTMLsymbol  ISOamso  angle
-  and  ∧  U+2227 (8743)  HTML 4.0  HTMLsymbol  ISOtech  logical and (= wedge)
-  or  ∨  U+2228 (8744)  HTML 4.0  HTMLsymbol  ISOtech  logical or (= vee)
-  cap  ∩  U+2229 (8745)  HTML 4.0  HTMLsymbol  ISOtech  intersection (= cap)
-  cup  ∪  U+222A (8746)  HTML 4.0  HTMLsymbol  ISOtech  union (= cup)
-  int  ∫  U+222B (8747)  HTML 4.0  HTMLsymbol  ISOtech  integral
-  there4  ∴  U+2234 (8756)  HTML 4.0  HTMLsymbol  ISOtech  therefore
-  sim  ∼  U+223C (8764)  HTML 4.0  HTMLsymbol  ISOtech  tilde operator (=
-varies with = similar to)[18]
-  cong  ≅  U+2245 (8773)  HTML 4.0  HTMLsymbol  ISOtech  congruent to
-  asymp  ≈  U+2248 (8776)  HTML 4.0  HTMLsymbol  ISOamsr  almost equal to (=
-asymptotic to)
-  ne  ≠  U+2260 (8800)  HTML 4.0  HTMLsymbol  ISOtech  not equal to
-  equiv  ≡  U+2261 (8801)  HTML 4.0  HTMLsymbol  ISOtech  identical to;
-sometimes used for 'equivalent to'
-  le  ≤  U+2264 (8804)  HTML 4.0  HTMLsymbol  ISOtech  less-than or equal to
-  ge  ≥  U+2265 (8805)  HTML 4.0  HTMLsymbol  ISOtech  greater-than or equal
-to
-  sub  ⊂  U+2282 (8834)  HTML 4.0  HTMLsymbol  ISOtech  subset of
-  sup  ⊃  U+2283 (8835)  HTML 4.0  HTMLsymbol  ISOtech  superset of[19]
-  nsub  ⊄  U+2284 (8836)  HTML 4.0  HTMLsymbol  ISOamsn  not a subset of
-  sube  ⊆  U+2286 (8838)  HTML 4.0  HTMLsymbol  ISOtech  subset of or equal to
-  supe  ⊇  U+2287 (8839)  HTML 4.0  HTMLsymbol  ISOtech  superset of or equal
-to
-  oplus  ⊕  U+2295 (8853)  HTML 4.0  HTMLsymbol  ISOamsb  circled plus (=
-direct sum)
-  otimes  ⊗  U+2297 (8855)  HTML 4.0  HTMLsymbol  ISOamsb  circled times (=
-vector product)
-  perp  ⊥  U+22A5 (8869)  HTML 4.0  HTMLsymbol  ISOtech  up tack (= orthogonal
-to = perpendicular)
-  sdot  ⋅  U+22C5 (8901)  HTML 4.0  HTMLsymbol  ISOamsb  dot operator[20]
-  lceil  ⌈  U+2308 (8968)  HTML 4.0  HTMLsymbol  ISOamsc  left ceiling (= APL
-upstile)
-  rceil  ⌉  U+2309 (8969)  HTML 4.0  HTMLsymbol  ISOamsc  right ceiling
-  lfloor  ⌊  U+230A (8970)  HTML 4.0  HTMLsymbol  ISOamsc  left floor (= APL
-downstile)
-  rfloor  ⌋  U+230B (8971)  HTML 4.0  HTMLsymbol  ISOamsc  right floor
-  lang  〈  U+2329 (9001)  HTML 4.0  HTMLsymbol  ISOtech  left-pointing angle
-bracket (= bra)[21]
-  rang  〉  U+232A (9002)  HTML 4.0  HTMLsymbol  ISOtech  right-pointing angle
-bracket (= ket)[22]
-  loz  ◊  U+25CA (9674)  HTML 4.0  HTMLsymbol  ISOpub  lozenge
-  spades  ♠  U+2660 (9824)  HTML 4.0  HTMLsymbol  ISOpub  black spade suit[23]
-  clubs  ♣  U+2663 (9827)  HTML 4.0  HTMLsymbol  ISOpub  black club suit (=
-shamrock)[24]
-  hearts  ♥  U+2665 (9829)  HTML 4.0  HTMLsymbol  ISOpub  black heart suit (=
-valentine)[25]
-  diams  ♦  U+2666 (9830)  HTML 4.0  HTMLsymbol  ISOpub  black diamond suit
diff --git a/lib/fields.c b/lib/fields.c
index 69534dc..48a3739 100644
--- a/lib/fields.c
+++ b/lib/fields.c
@@ -1,194 +1,554 @@
 /*
  * fields.c
  *
- * Copyright (c) Chris Putnam 2003-2010
+ * Copyright (c) Chris Putnam 2003-2013
  *
- * Source code released under the GPL
+ * Source code released under the GPL version 2
  *
  */
 #include <stdio.h>
 #include <stdlib.h>
+#include <stdint.h>
 #include <string.h>
-#include "strsearch.h"
+#include <assert.h>
 #include "fields.h"
 
-int
-fields_add( fields *info, char *tag, char *data, int level )
+fields*
+fields_new( void )
+{
+	fields *f = ( fields * ) malloc( sizeof( fields ) );
+	if ( f ) fields_init( f );
+	return f;
+}
+
+void
+fields_init( fields *f )
+{
+	assert( f );
+
+	f->used  = NULL;
+	f->level = NULL;
+	f->tag   = NULL;
+	f->data  = NULL;
+	f->max   = f->n = 0;
+}
+
+void
+fields_free( fields *f )
+{
+	int i;
+
+	assert( f );
+
+	for ( i=0; i<f->max; ++i ) {
+		newstr_free( &(f->tag[i]) );
+		newstr_free( &(f->data[i]) );
+	}
+	if ( f->tag )   free( f->tag );
+	if ( f->data )  free( f->data );
+	if ( f->used )  free( f->used );
+	if ( f->level ) free( f->level );
+
+	fields_init( f );
+}
+
+static int
+fields_alloc( fields *f )
+{
+	int i, alloc = 20;
+
+	f->tag   = (newstr *) malloc( sizeof(newstr) * alloc );
+	f->data  = (newstr *) malloc( sizeof(newstr) * alloc );
+	f->used  = (int *)    calloc( alloc, sizeof(int) );
+	f->level = (int *)    calloc( alloc, sizeof(int) );
+	if ( !f->tag || !f->data || !f->used || !f->level ){
+		if ( f->tag )   free( f->tag );
+		if ( f->data )  free( f->data );
+		if ( f->used )  free( f->used );
+		if ( f->level ) free( f->level );
+		fields_init( f );
+		return 0;
+	}
+
+	f->max = alloc;
+	f->n = 0;
+	for ( i=0; i<alloc; ++i ) {
+		newstr_init( &(f->tag[i]) );
+		newstr_init( &(f->data[i]) );
+	}
+	return 1;
+}
+
+static int
+fields_realloc( fields *f )
 {
 	newstr *newtags, *newdata;
 	int *newused, *newlevel;
-	int min_alloc = 20, i, found;
+	int i, alloc = f->max * 2;
+
+	newtags = (newstr*) realloc( f->tag, sizeof(newstr) * alloc );
+	newdata = (newstr*) realloc( f->data, sizeof(newstr) * alloc );
+	newused = (int*)    realloc( f->used, sizeof(int) * alloc );
+	newlevel= (int*)    realloc( f->level, sizeof(int) * alloc );
+
+	if ( newtags )  f->tag   = newtags;
+	if ( newdata )  f->data  = newdata;
+	if ( newused )  f->used  = newused;
+	if ( newlevel ) f->level = newlevel;
+	
+	if ( !newtags || !newdata || !newused || !newlevel )
+		return 0;
+
+	f->max = alloc;
+
+	for ( i=f->n; i<alloc; ++i ) {
+		newstr_init( &(f->tag[i]) );
+		newstr_init( &(f->data[i]) );
+	}
+
+	return 1;
+}
+
+int
+fields_add( fields *f, char *tag, char *data, int level )
+{
+	int i, found;
+
+	assert( f );
+
 	if ( !tag || !data ) return 1;
-	if ( info->maxfields==0 ){
-		info->tag = (newstr*)malloc( sizeof(newstr) * min_alloc );
-		info->data= (newstr*)malloc( sizeof(newstr) * min_alloc );
-		info->used= (int*)      malloc( sizeof(int) * min_alloc );
-		info->level=(int*)      malloc( sizeof(int) * min_alloc );
-		if ( !info->tag || !info->data || !info->used || !info->level ){
-			if ( info->tag ) free( info->tag );
-			if ( info->data ) free( info->data );
-			if ( info->used ) free( info->used );
-			if ( info->level ) free( info->level );
-			return 0;
-		}
-		info->maxfields = min_alloc;
-		info->nfields = 0;
-		for ( i=0; i<min_alloc; ++i ) {
-			newstr_init(&(info->tag[i]));
-			newstr_init(&(info->data[i]));
-		}
-	} else if ( info->nfields >= info->maxfields ){
-		min_alloc = info->maxfields * 2;
-		newtags = (newstr*) realloc( info->tag,
-			       	sizeof(newstr) * min_alloc );
-		newdata = (newstr*) realloc( info->data,
-				sizeof(newstr) * min_alloc );
-		newused = (int*)    realloc( info->used,
-				sizeof(int) * min_alloc );
-		newlevel= (int*)    realloc( info->level,
-				sizeof(int) * min_alloc );
-		if ( !newtags || !newdata || !newused || !newlevel ) {
-			if ( newtags ) info->tag=newtags;
-			if ( newdata ) info->data=newdata;
-			if ( newused ) info->used=newused;
-			if ( newlevel ) info->level=newlevel;
-			return 0;
-		}
-		info->tag = newtags;
-		info->data = newdata;
-		info->used = newused;
-		info->level = newlevel;
-		info->maxfields = min_alloc;
-		for ( i=info->nfields; i<min_alloc; ++i ) {
-			newstr_init(&(info->tag[i]));
-			newstr_init(&(info->data[i]));
-		}
+
+	if ( f->max==0 ) {
+		if ( !fields_alloc( f ) ) return 0;
+	} else if ( f->n >= f->max ) {
+		if ( !fields_realloc( f ) ) return 0;
 	}
+
+	/* Don't duplicate identical entries */
 	found = 0;
-	for ( i=0; i<info->nfields && !found; ++i ) {
-		if ( info->level[i]==level &&
-		     !strcasecmp( info->tag[i].data, tag ) &&
-		     !strcasecmp( info->data[i].data, data ) ) found=1;
+	for ( i=0; i<f->n && !found; ++i ) {
+		if ( f->level[i]==level &&
+		     !strcasecmp( f->tag[i].data, tag ) &&
+		     !strcasecmp( f->data[i].data, data ) ) found = 1;
 	}
 	if ( !found ) {
-		newstr_strcpy( &(info->tag[info->nfields]), tag );
-		newstr_strcpy( &(info->data[info->nfields]), data );
-		info->used[ info->nfields ] = 0;
-		info->level[ info->nfields ] = level;
-		info->nfields++;
+		newstr_strcpy( &(f->tag[f->n]), tag );
+		newstr_strcpy( &(f->data[f->n]), data );
+		f->used[ f->n ] = 0;
+		f->level[ f->n ] = level;
+		f->n++;
 	}
 	return 1;
 }
 
 int
-fields_add_tagsuffix( fields *info, char *tag, char *suffix, char *data, 
-	int level )
-{
-	char *buf;
-	int len, ret;
-	len = strlen( tag ) + strlen( suffix ) + 1;
-	buf = ( char * ) malloc( sizeof(char)*len );
-	if ( !buf ) return 0;
-	strcpy( buf, tag );
-	strcat( buf, suffix );
-	ret = fields_add( info, buf, data, level );
-	free( buf );
+fields_add_tagsuffix( fields *f, char *tag, char *suffix,
+		char *data, int level )
+{
+	newstr newtag;
+	int ret;
+
+	assert( f );
+	assert( tag );
+	assert( suffix );
+
+	newstr_init( &newtag );
+	newstr_mergestrs( &newtag, tag, suffix, NULL );
+	ret = fields_add( f, newtag.data, data, level );
+	newstr_free( &newtag );
+
 	return ret;
 }
 
+/* fields_get_level()
+ *
+ */
+inline int
+fields_get_level( fields *f, int n )
+{
+	assert( f );
+	assert( n>=0 );
+	assert( n<f->n );
+
+	return f->level[n];
+}
 
-fields*
-fields_new( void )
+/* fields_match_level()
+ *
+ * returns 1 if level matched, 0 if not
+ *
+ * level==-1 is a special flag meaning any level can match
+ */
+inline int
+fields_match_level( fields *f, int n, int level )
 {
-	fields *info = ( fields * ) malloc( sizeof( fields ) );
-	if ( info ) fields_init( info );
-	return info;
+	assert( f );
+
+	if ( level==LEVEL_ANY ) return 1;
+	if ( fields_get_level( f, n )==level ) return 1;
+	return 0;
 }
 
-void
-fields_init( fields *info )
+/* fields_match_tag()
+ *
+ * returns 1 if tag matches, 0 if not
+ *
+ */
+inline int
+fields_match_tag( fields *info, int n, char *tag )
 {
-	info->used  = NULL;
-	info->level = NULL;
-	info->tag   = NULL;
-	info->data  = NULL;
-	info->maxfields = info->nfields = 0;
+	if ( !strcmp( fields_tag( info, n, FIELDS_CHRP ), tag ) ) return 1;
+	return 0;
 }
 
-void
-fields_free( fields *info )
+inline int
+fields_match_casetag( fields *info, int n, char *tag )
 {
-	int i;
-	for (i=0; i<info->maxfields; ++i) {
-		newstr_free( &(info->tag[i]) );
-		newstr_free( &(info->data[i]) );
-	}
-	if ( info->tag )  free( info->tag );
-	if ( info->data ) free( info->data );
-	if ( info->used ) free( info->used );
-	if ( info->level ) free( info->level );
-	fields_init( info );
+	if ( !strcasecmp( fields_tag( info, n, FIELDS_CHRP ), tag ) ) return 1;
+	return 0;
 }
 
-int
-fields_find( fields *info, char *searchtag, int level )
+inline int
+fields_match_tag_level( fields *info, int n, char *tag, int level )
 {
-	int i, found = -1;
-	for ( i=0; i<info->nfields && found==-1; ++i ) {
-		if ( (level==-1 || level==info->level[i]) &&
-		     !strcasecmp( info->tag[i].data, searchtag ) ) {
-			found = i;
-			/* if there is no data for the tag, mark as unfound */
-			/* but set "used" so noise is suppressed */
-			if ( info->data[i].len==0 ) {
-				found=-1;
-				info->used[i] = 1;
-			}
-		}
-	}
-	return found;
+	if ( !fields_match_level( info, n, level ) ) return 0;
+	return fields_match_tag( info, n, tag );
 }
 
-int
-fields_find_firstof( fields *info, char *tags[], int ntags, int level )
+inline int
+fields_match_casetag_level( fields *info, int n, char *tag, int level )
 {
-	int i=0, found = -1;
-	while ( i<ntags && found==-1 )
-		found = fields_find( info, tags[i], level );
-	return found;
+	if ( !fields_match_level( info, n, level ) ) return 0;
+	return fields_match_casetag( info, n, tag );
 }
 
+/* fields_find()
+ *
+ * Return position [0,f->n) for match of the tag.
+ * Return -1 if tag isn't found.
+ */
+int
+fields_find( fields *f, char *tag, int level )
+{
+	int i;
+
+	assert( f );
+	assert( tag );
+
+	for ( i=0; i<f->n; ++i ) {
+		if ( !fields_match_casetag_level( f, i, tag, level ) )
+			continue;
+		if ( f->data[i].len ) return i;
+		else {
+			/* if there is no data for the tag, don't "find" it */
+			/* and set "used" so noise is suppressed */
+			f->used[i] = 1;
+		}
+	}
+
+	return -1;
+}
 
 int
-fields_maxlevel( fields *info )
+fields_maxlevel( fields *f )
 {
 	int i, max = 0;
-	for ( i=0; i<info->nfields; ++i ) {
-		if ( info->level[i]>max ) max = info->level[i];
+
+	assert( f );
+
+	for ( i=0; i<f->n; ++i ) {
+		if ( f->level[i] > max )
+			max = f->level[i];
 	}
+
 	return max;
 }
 
 void
-fields_clearused( fields *info )
+fields_clearused( fields *f )
 {
 	int i;
-	for ( i=0; i<info->nfields; ++i )
-		info->used[i] = 0;
+
+	assert( f );
+
+	for ( i=0; i<f->n; ++i )
+		f->used[i] = 0;
 }
 
 void
-fields_setused( fields *info, int n )
+fields_setused( fields *f, int n )
+{
+	assert( f );
+
+	if ( n < f->n )
+		f->used[n] = 1;
+}
+
+/* fields_replace_or_add()
+ *
+ * return 1 on success, 0 on memory error
+ */
+int
+fields_replace_or_add( fields *f, char *tag, char *data, int level )
+{
+	int n = fields_find( f, tag, level );
+	if ( n==-1 ) return fields_add( f, tag, data, level );
+	else {
+		newstr_strcpy( &(f->data[n]), data );
+		return 1;
+	}
+}
+
+char *fields_null_value = "\0";
+
+inline int
+fields_used( fields *f, int n )
+{
+	if ( n < f->n ) return f->used[n];
+	else return 0;
+}
+
+inline int
+fields_nodata( fields *f, int n )
+{
+	newstr *d;
+	if ( n < f->n ) {
+		d = &( f->data[n] );
+		if ( d->len > 0 ) return 0;
+		return 1;
+	} else {
+		return 1;
+	}
+}
+
+inline int
+fields_num( fields *f )
 {
-	if ( n < info->nfields )
-		info->used[n] = 1;
+	assert( f );
+	return f->n;
+}
+
+/*
+ * #define FIELDS_CHRP       
+ * #define FIELDS_STRP       
+ * #define FIELDS_CHRP_NOLEN
+ * #define FIELDS_STRP_NOLEN
+ * 
+ * If the length of the tagged value is zero and the mode is
+ * FIELDS_STRP_NOLEN or FIELDS_CHRP_NOLEN, return a pointer to
+ * a static null string as the data field could be new due to
+ * the way newstr handles initialized strings with no data.
+ *
+ */
+
+void *
+fields_value( fields *f, int n, int mode )
+{
+	intptr_t retn;
+
+	assert( f );
+	assert( n >= 0 );
+	assert( n < f->n );
+
+	if ( mode & FIELDS_SETUSE_FLAG )
+		fields_setused( f, n );
+
+	if ( mode & FIELDS_STRP_FLAG )
+		return &(f->data[n]);
+	else if ( mode & FIELDS_POSP_FLAG ) {
+		retn = n;
+		return ( void * ) retn; /* Rather pointless */
+	} else {
+		if ( f->data[n].len )
+			return f->data[n].data;
+		else
+			return fields_null_value;
+	}
+}
+
+void *
+fields_tag( fields *f, int n, int mode )
+{
+	intptr_t retn;
+
+	assert( f );
+	assert( n >= 0 );
+	assert( n < f->n );
+
+	if ( mode & FIELDS_STRP_FLAG )
+		return &(f->tag[n]);
+	else if ( mode & FIELDS_POSP_FLAG ) {
+		retn = n;
+		return ( void * ) retn; /* Rather pointless */
+	} else {
+		if ( f->tag[n].len )
+			return f->tag[n].data;
+		else
+			return fields_null_value;
+	}
+}
+
+int
+fields_level( fields *f, int n )
+{
+	assert( f );
+	assert( n >= 0 );
+	assert( n < f->n );
+
+	return f->level[n];
+}
+
+void *
+fields_findv( fields *f, int level, int mode, char *tag )
+{
+	int i, found = -1;
+	intptr_t retn;
+
+	assert( f );
+	assert( tag );
+
+	for ( i=0; i<f->n && found==-1; ++i ) {
+
+		if ( !fields_match_level( f, i, level ) ) continue;
+		if ( !fields_match_casetag( f, i, tag ) ) continue;
+
+		if ( f->data[i].len!=0 ) found = i;
+		else {
+			if ( mode & FIELDS_NOLENOK_FLAG ) {
+				return (void *) fields_null_value;
+			} else if ( mode & FIELDS_SETUSE_FLAG ) {
+				f->used[i] = 1; /* Suppress "noise" of unused */
+			}
+		}
+	}
+
+	if ( found==-1 ) return NULL;
+
+	if ( mode & FIELDS_SETUSE_FLAG )
+		fields_setused( f, found );
+
+	if ( mode & FIELDS_STRP_FLAG )
+		return (void *) &(f->data[found]);
+	else if ( mode & FIELDS_POSP_FLAG ) {
+		retn = found;
+		return (void *) retn;
+	} else
+		return (void *) f->data[found].data;
+}
+
+void *
+fields_findv_firstof( fields *f, int level, int mode, ... )
+{
+	char *tag, *value;
+	va_list argp;
+
+	assert( f );
+
+	va_start( argp, mode );
+	while ( ( tag = ( char * ) va_arg( argp, char * ) ) ) {
+		value = fields_findv( f, level, mode, tag );
+		if ( value ) {
+			va_end( argp );
+			return value;
+		}
+	}
+	va_end( argp );
+
+	return NULL;
+}
+
+static void
+fields_findv_each_add( fields *f, int mode, int n, vplist *a )
+{
+	intptr_t retn;
+
+	assert( a );
+	assert( f );
+	assert( n >= 0 );
+	assert( n < f->n );
+
+	if ( mode & FIELDS_SETUSE_FLAG )
+		fields_setused( f, n );
+
+	if ( mode & FIELDS_STRP_FLAG ) {
+		vplist_add( a, (void *) &(f->data[n]) );
+	} else if ( mode & FIELDS_POSP_FLAG ) {
+		retn = n;
+		vplist_add( a, (void *) retn );
+	} else {
+		vplist_add( a, (void *) f->data[n].data );
+	}
 }
 
 void
-fields_replace_or_add( fields *info, char *tag, char *data, int level )
+fields_findv_each( fields *f, int level, int mode, vplist *a, char *tag )
 {
-	int n = fields_find( info, tag, level );
-	if ( n==-1 ) fields_add( info, tag, data, level );
-	else newstr_strcpy( &(info->data[n]), data );
+	int i;
+
+	assert( a );
+	assert( tag );
+	assert( f );
+
+	for ( i=0; i<f->n; ++i ) {
+
+		if ( !fields_match_level( f, i, level ) ) continue;
+		if ( !fields_match_casetag( f, i, tag ) ) continue;
+
+		if ( f->data[i].len!=0 ) {
+			fields_findv_each_add( f, mode, i, a );
+		} else {
+			if ( mode & FIELDS_NOLENOK_FLAG ) {
+				fields_findv_each_add( f, mode, i, a );
+			} else {
+				f->used[i] = 1; /* Suppress "noise" of unused */
+			}
+		}
+
+	}
 }
 
+void
+fields_findv_eachof( fields *f, int level, int mode, vplist *a, ... )
+{
+	va_list argp;
+	vplist tags;
+	char *tag;
+	int i, j, found;
+
+	assert( f );
+	assert( a );
+
+	vplist_init( &tags );
+
+	/* build list of tags to search for */
+	va_start( argp, a );
+	while ( ( tag = ( char * ) va_arg( argp, char * ) ) )
+		vplist_add( &tags, tag );
+	va_end( argp );
+
+	/* search list */
+	for ( i=0; i<f->n; ++i ) {
+
+		if ( !fields_match_level( f, i, level ) ) continue;
+
+		found = 0;
+		for ( j=0; j<tags.n && !found; ++j ) {
+			if ( fields_match_casetag( f, i, vplist_get( &tags, j ) ) )
+				found = 1;
+		}
+		if ( !found ) continue;
+
+		if ( f->data[i].len!=0 ) {
+			fields_findv_each_add( f, mode, i, a );
+		} else {
+			if ( mode & FIELDS_NOLENOK_FLAG ) {
+				fields_findv_each_add( f, mode, i, a );
+			} else {
+				f->used[i] = 1; /* Suppress "noise" of unused */
+			}
+		}
+
+	}
+
+	vplist_free( &tags );
+}
diff --git a/lib/fields.h b/lib/fields.h
index 6941720..a7adba5 100644
--- a/lib/fields.h
+++ b/lib/fields.h
@@ -1,44 +1,82 @@
 /*
  * fields.h
  *
- * Copyright (c) Chris Putnam 2003-2009
+ * Copyright (c) Chris Putnam 2003-2013
  *
- * Source code released under the GPL
+ * Source code released under the GPL version 2
  *
  */
 #ifndef FIELDS_H
 #define FIELDS_H
 
-#define LEVEL_MAIN (0)
-#define LEVEL_HOST (1)
-#define LEVEL_SERIES (2)
+#define LEVEL_ANY    (-1)
+#define LEVEL_MAIN    (0)
+#define LEVEL_HOST    (1)
+#define LEVEL_SERIES  (2)
 
 #define LEVEL_ORIG (-2)
 
+#include <stdarg.h>
 #include "newstr.h"
+#include "vplist.h"
 
 typedef struct {
 	newstr    *tag;
 	newstr    *data;
 	int       *used;
 	int       *level;
-	int       nfields;
-	int       maxfields;
+	int       n;
+	int       max;
 } fields;
 
-extern int  fields_add( fields *info, char *tag, char *data, int level );
-extern int  fields_add_tagsuffix( fields *info, char *tag, char *suffix,
-		char *data, int level );
-extern void fields_free( fields *info );
-extern void fields_init( fields *info );
+extern void fields_init( fields *f );
 extern fields *fields_new( void );
-extern int  fields_find( fields *info, char *searchtag, int level );
-extern int  fields_find_firstof( fields *info, char *tags[], int ntags, 
-		int level );
-extern int  fields_maxlevel( fields *info );
-extern void fields_clearused( fields *info );
-extern void fields_setused( fields *info, int n );
-extern void fields_replace_or_add( fields *info, char *tag, char *data, int level );
+extern void fields_free( fields *f );
+
+extern int  fields_add( fields *f, char *tag, char *data, int level );
+extern int  fields_add_tagsuffix( fields *f, char *tag, char *suffix,
+		char *data, int level );
+
+extern int  fields_maxlevel( fields *f );
+extern void fields_clearused( fields *f );
+extern void fields_setused( fields *f, int n );
+extern int  fields_replace_or_add( fields *f, char *tag, char *data, int level );
+
+extern inline int fields_num( fields *f );
+extern inline int fields_used( fields *f, int n );
+extern inline int fields_nodata( fields *f, int n );
+extern inline int fields_get_level( fields *f, int n );
+
+extern inline int fields_match_level( fields *f, int n, int level );
+extern inline int fields_match_tag( fields *f, int n, char *tag );
+extern inline int fields_match_casetag( fields *f, int n, char *tag );
+extern inline int fields_match_tag_level( fields *f, int n, char *tag, int level );
+extern inline int fields_match_casetag_level( fields *f, int n, char *tag, int level );
+
+#define FIELDS_STRP_FLAG     (2)
+#define FIELDS_POSP_FLAG     (4)
+#define FIELDS_NOLENOK_FLAG  (8)
+#define FIELDS_SETUSE_FLAG  (16)
+
+#define FIELDS_CHRP        (FIELDS_SETUSE_FLAG                                         )
+#define FIELDS_STRP        (FIELDS_SETUSE_FLAG | FIELDS_STRP_FLAG                      )
+#define FIELDS_POSP        (FIELDS_SETUSE_FLAG | FIELDS_POSP_FLAG                      )
+#define FIELDS_CHRP_NOLEN  (FIELDS_SETUSE_FLAG |                    FIELDS_NOLENOK_FLAG)
+#define FIELDS_STRP_NOLEN  (FIELDS_SETUSE_FLAG | FIELDS_STRP_FLAG | FIELDS_NOLENOK_FLAG)
+#define FIELDS_POSP_NOLEN  (FIELDS_SETUSE_FLAG | FIELDS_POSP_FLAG | FIELDS_NOLENOK_FLAG)
+#define FIELDS_CHRP_NOUSE  (                            0                              )
+#define FIELDS_STRP_NOUSE  (                     FIELDS_STRP_FLAG                      )
+
+extern void *fields_tag( fields *f, int n, int mode );
+extern void *fields_value( fields *f, int n, int mode );
+extern int   fields_level( fields *f, int n );
+ 
+extern int   fields_find( fields *f, char *searchtag, int level );
+
+extern void *fields_findv( fields *f, int level, int mode, char *tag );
+extern void *fields_findv_firstof( fields *f, int level, int mode, ... );
 
+extern void  fields_findv_each( fields *f, int level, int mode, vplist *a, char *tag );
+extern void  fields_findv_eachof( fields *f, int level, int mode, vplist *a, ... );
 
 #endif
diff --git a/lib/gb18030.h b/lib/gb18030.h
index 7a294ff..e6b5914 100644
--- a/lib/gb18030.h
+++ b/lib/gb18030.h
@@ -1,9 +1,9 @@
 /*
  * gb18030.h
  *
- * Copyright (c) Chris Putnam 2008-2009
+ * Copyright (c) Chris Putnam 2008-2013
  *
- * Program and source code released under the GPL
+ * Source code released under the GPL version 2
  *
  */
 #ifndef GB18030_H
diff --git a/lib/intlist.c b/lib/intlist.c
new file mode 100644
index 0000000..409f739
--- /dev/null
+++ b/lib/intlist.c
@@ -0,0 +1,250 @@
+/*
+ * intlist.c
+ *
+ * Copyright (c) Chris Putnam 2007-2013
+ *
+ * Source code released under the GPL version 2
+ *
+ * Implements a simple managed array of ints
+ *
+ */
+#include "intlist.h"
+
+static void
+memerr( const char *f )
+{
+	fprintf( stderr, "Memory error in %s\n", f );
+	exit( EXIT_FAILURE );
+}
+
+static void
+intlist_alloc( intlist *il )
+{
+	int alloc = 20, i;
+	il->data = ( int * ) malloc( sizeof( int ) * alloc );
+	if ( !(il->data) ) memerr( __FUNCTION__ );
+	for ( i=0; i<alloc; ++i )
+		il->data[i] = 0;
+	il->max = alloc;
+	il->n = 0;
+}
+
+static void
+intlist_realloc( intlist *il )
+{
+	int *more;
+	int alloc = il->max * 2, i;
+	more = ( int * ) realloc( il->data, sizeof( int ) * alloc );
+	if ( !more ) memerr( __FUNCTION__ );
+	il->data = more;
+	for ( i=il->max; i<alloc; ++i )
+		il->data[i] = 0;
+	il->max = alloc;
+}
+
+int
+intlist_add( intlist *il, int value )
+{
+	if ( il->max==0 ) intlist_alloc( il );
+	else if ( il->n >= il->max ) intlist_realloc( il );
+	il->data[ il->n ] = value;
+	il->n++;
+	return il->n - 1;
+}
+
+int
+intlist_add_unique( intlist *il, int value )
+{
+	if ( intlist_find( il, value )!=-1 ) return il->n - 1;
+	else return intlist_add( il, value );
+}
+
+int
+intlist_find( intlist *il, int value )
+{
+	int i;
+	for ( i=0; i<il->n; ++i )
+		if ( il->data[i]==value ) return i;
+	return -1;
+}
+
+/* Here we know that pos is valid */
+static void
+intlist_remove_pos_core( intlist *il, int pos )
+{
+	int i;
+	for ( i=pos; i<il->n-1; ++i )
+		il->data[i] = il->data[i+1];
+	il->n -= 1;
+}
+
+void
+intlist_remove_pos( intlist *il, int pos )
+{
+	if ( pos < 0 || pos >= il->n ) return;
+	intlist_remove_pos_core( il, pos );
+}
+
+void
+intlist_remove( intlist *il, int value )
+{
+	int pos = intlist_find( il, value );
+	if ( pos==-1 ) return;
+	intlist_remove_pos_core( il, pos );
+}
+
+/* Return the index of searched-for string.
+ * If cannot find string, add to list and then
+ * return the index
+ */
+int
+intlist_find_or_add( intlist *il, int value )
+{
+	int n = intlist_find( il, value );
+	if ( n==-1 )
+		n = intlist_add( il, value );
+	return n;
+}
+
+/* don't actually free space, just reset counter */
+void
+intlist_empty( intlist *il )
+{
+	il->n = 0;
+}
+
+void
+intlist_free( intlist *il )
+{
+	if ( il->data ) free( il->data );
+	intlist_init( il );
+}
+
+void
+intlist_init( intlist *il  )
+{
+	il->data = NULL;
+	il->max = 0;
+	il->n = 0;
+}
+
+void
+intlist_init_range( intlist *il, int low, int high, int step )
+{
+	int i;
+	intlist_init( il );
+	for ( i=low; i<high; i+= step )
+		intlist_add( il, i );
+}
+
+intlist *
+intlist_new( void )
+{
+	intlist *il = ( intlist * ) malloc( sizeof( intlist ) );
+	if ( il ) intlist_init( il );
+	return il;
+}
+
+intlist *
+intlist_new_range( int low, int high, int step )
+{
+	intlist *il = ( intlist * ) malloc( sizeof( intlist ) );
+	if ( il ) intlist_init_range( il, low, high, step );
+	return il;
+}
+
+static int
+intcomp( const void *v1, const void *v2 )
+{
+	int *i1 = ( int * ) v1;
+	int *i2 = ( int * ) v2;
+	if ( *i1 < *i2 ) return -1;
+	else if ( *i1 > *i2 ) return 1;
+	return 0;
+}
+
+void
+intlist_sort( intlist *il )
+{
+	qsort( il->data, il->n, sizeof( int ), intcomp );
+}
+
+/* Returns random integer in the range [floor,ceil) */
+static int
+randomint( int floor, int ceil )
+{
+	int len = ceil - floor;
+	return floor + rand() % len;
+}
+
+static void
+swap( int *a, int *b )
+{
+	int tmp;
+	tmp = *a;
+	*a = *b;
+	*b = tmp;
+}
+
+void
+intlist_randomize( intlist *il )
+{
+	int i, j;
+	if ( il->n < 2 ) return;
+	for ( i=0; i<il->n; ++i ) {
+		j = randomint( i, il->n );
+		if ( i==j ) continue;
+		swap( &(il->data[i]), &(il->data[j]) );
+	}
+}
+
+void
+intlist_copy( intlist *to, intlist *from )
+{
+	int i;
+	intlist_free( to );
+	to->data = ( int* ) malloc( sizeof( int ) * from->n );
+	if ( !to->data ) return;
+	to->n = to->max = from->n;
+	for ( i=0; i<from->n; ++i ) 
+		to->data[i] = from->data[i];
+}
+
+intlist *
+intlist_dup( intlist *il )
+{
+	intlist *l;
+	l = ( intlist* ) malloc( sizeof( intlist ) );
+	if ( !l ) goto err0;
+	intlist_copy( l, il );
+	return l;
+	free( l );
+err0:
+	return l;
+}
+
+void
+intlist_append( intlist *to, intlist *from )
+{
+	int i;
+	for ( i=0; i<from->n; ++i )
+		intlist_add( to, from->data[i] );
+}
+
+void
+intlist_append_unique( intlist *to, intlist *from )
+{
+	int i;
+	for ( i=0; i<from->n; ++i ) {
+		if ( intlist_find( to, from->data[i] )!=-1 ) continue;
+		intlist_add( to, from->data[i] );
+	}
+}
+
+int
+intlist_get( intlist *il, int pos )
+{
+	if ( pos<0 || pos>=il->n ) return 0;
+	else return il->data[pos];
+}
+
diff --git a/lib/intlist.h b/lib/intlist.h
new file mode 100644
index 0000000..eac3b32
--- /dev/null
+++ b/lib/intlist.h
@@ -0,0 +1,40 @@
+/*
+ * intlist.h
+ *
+ * Copyright (c) Chris Putnam 2007-2013
+ *
+ * Source code released under the GPL version 2
+ *
+ */
+
+#ifndef INTLIST_H
+#define INTLIST_H
+
+#include <stdio.h>
+#include <stdlib.h>
+
+typedef struct intlist {
+	int n, max;
+	int *data;
+} intlist;
+
+extern void intlist_init( intlist *info );
+extern void intlist_init_range( intlist *info, int low, int high, int step );
+extern intlist* intlist_new( void );
+extern intlist* intlist_new_range( int low, int high, int step );
+extern void intlist_sort( intlist *info );
+extern void intlist_randomize( intlist *info );
+extern int  intlist_add(  intlist *info, int value );
+extern int  intlist_add_unique(  intlist *info, int value );
+extern int  intlist_find( intlist *info, int searchvalue );
+extern int  intlist_find_or_add( intlist *info, int searchvalue );
+extern void intlist_empty( intlist *info );
+extern void intlist_free( intlist *info );
+extern void intlist_copy( intlist *to, intlist *from );
+extern int  intlist_get( intlist *info, int pos );
+extern void intlist_remove( intlist *info, int searchvalue );
+extern void intlist_remove_pos( intlist *info, int pos );
+extern void intlist_append( intlist *to, intlist *from );
+extern void intlist_append_unique( intlist *to, intlist *from );
+
+#endif
diff --git a/lib/is_ws.c b/lib/is_ws.c
index ce98203..aa73b1f 100644
--- a/lib/is_ws.c
+++ b/lib/is_ws.c
@@ -1,9 +1,9 @@
 /*
  * is_ws.c
  *
- * Copyright (c) Chris Putnam 2003-2010
+ * Copyright (c) Chris Putnam 2003-2013
  *
- * Source code released under the GPL
+ * Source code released under the GPL version 2
  *
  */
 #include "is_ws.h"
diff --git a/lib/is_ws.h b/lib/is_ws.h
index 87f4439..c60be46 100644
--- a/lib/is_ws.h
+++ b/lib/is_ws.h
@@ -1,9 +1,9 @@
 /*
  * is_ws.h
  *
- * Copyright (c) Chris Putnam 2003-2009
+ * Copyright (c) Chris Putnam 2003-2013
  *
- * Source code released under the GPL
+ * Source code released under the GPL version 2
  *
  */
 #ifndef IS_WS_H
diff --git a/lib/isiin.c b/lib/isiin.c
index eb59068..42d1047 100644
--- a/lib/isiin.c
+++ b/lib/isiin.c
@@ -1,9 +1,9 @@
 /*
  * isiin.c
  *
- * Copyright (c) Chris Putnam 2004-2010
+ * Copyright (c) Chris Putnam 2004-2013
  *
- * Program and source code released under the GPL
+ * Program and source code released under the GPL version 2
  *
  */
 #include <stdio.h>
@@ -148,7 +148,7 @@ isiin_processf( fields *isiin, char *p, char *filename, long nref )
 		if ( (tag.len>1) && isiin_istag( tag.data ) ) {
 			fields_add( isiin, tag.data, data.data, 0 );
 		} else {
-			n = isiin->nfields;
+			n = fields_num( isiin );
 			if ( n>0 ) {
 				/* only one AU or AF for list of authors */
 				if ( !strcmp( isiin->tag[n-1].data,"AU") ){
@@ -168,21 +168,24 @@ isiin_processf( fields *isiin, char *p, char *filename, long nref )
 	return 1;
 }
 
-static void
+static int
 keyword_process( fields *info, char *newtag, char *p, int level )
 {
 	newstr keyword;
+	int ok;
 	newstr_init( &keyword );
 	while ( *p ) {
 		p = skip_ws( p );
 		while ( *p && *p!=';' ) newstr_addchar( &keyword, *p++ );
 		if ( keyword.len ) {
-			fields_add( info, newtag, keyword.data, level );
+			ok = fields_add( info, newtag, keyword.data, level );
+			if ( !ok ) return 0;
 			newstr_empty( &keyword );
 		}
 		if ( *p==';' ) p++;
 	}
 	newstr_free( &keyword );
+	return 1;
 }
 
 int
@@ -201,29 +204,33 @@ isiin_typef( fields *isiin, char *filename, int nref, param *p, variants *all, i
 }
 
 /* pull off authors first--use AF before AU */
-static void
+static int
 isiin_addauthors( fields *isiin, fields *info, int reftype, variants *all, int nall, list *asis, list *corps )
 {
-	newstr *t, *d;
 	char *newtag, *authortype, use_af[]="AF", use_au[]="AU";
-	int level, i, n, has_af=0, has_au=0;
-	for ( i=0; i<isiin->nfields && has_af==0; ++i ) {
-		t = &( isiin->tag[i] );
+	int level, i, n, has_af=0, has_au=0, nfields, ok;
+	newstr *t, *d;
+
+	nfields = fields_num( isiin );
+	for ( i=0; i<nfields && has_af==0; ++i ) {
+		t = fields_tag( isiin, i, FIELDS_STRP );
 		if ( !strcasecmp( t->data, "AU" ) ) has_au++;
 		if ( !strcasecmp( t->data, "AF" ) ) has_af++;
 	}
 	if ( has_af ) authortype = use_af;
 	else authortype = use_au;
-	for ( i=0; i<isiin->nfields; ++i ) {
-		t = &( isiin->tag[i] );
+	for ( i=0; i<nfields; ++i ) {
+		t = fields_tag( isiin, i, FIELDS_STRP );
 		if ( !strcasecmp( t->data, "AU" ) ) has_au++;
 		if ( strcasecmp( t->data, authortype ) ) continue;
-		d = &( isiin->data[i] );
+		d = fields_value( isiin, i, FIELDS_STRP );
 		n = process_findoldtag( authortype, reftype, all, nall );
 		level = ((all[reftype]).tags[n]).level;
 		newtag = all[reftype].tags[n].newstr;
-		name_add( info, newtag, d->data, level, asis, corps );
+		ok = name_add( info, newtag, d->data, level, asis, corps );
+		if ( !ok ) return 0;
 	}
+	return 1;
 }
 
 static void
@@ -235,41 +242,68 @@ isiin_report_notag( param *p, char *tag )
 	}
 }
 
-void
+int
 isiin_convertf( fields *isiin, fields *info, int reftype, param *p, variants *all, int nall )
 {
+	int process, level, i, n, nfields, ok;
 	newstr *t, *d;
-	int process, level, i, n;
 	char *newtag;
 
-	isiin_addauthors( isiin, info, reftype, all, nall, &(p->asis), 
-			&(p->corps) );
+	ok = isiin_addauthors( isiin, info, reftype, all, nall, &(p->asis), &(p->corps) );
+	if ( !ok ) return BIBL_ERR_MEMERR;
+
+	nfields = fields_num( isiin );
+	for ( i=0; i<nfields; ++i ) {
 
-	for ( i=0; i<isiin->nfields; ++i ) {
-		t = &( isiin->tag[i] );
+		t = fields_tag( isiin, i, FIELDS_STRP );
 		if ( !strcasecmp( t->data, "AU" ) || !strcasecmp( t->data, "AF" ) )
 			continue;
-		d = &( isiin->data[i] );
-		n = process_findoldtag( t->data, reftype, all, nall );
+
+		n = translate_oldtag( t->data, reftype, all, nall, &process, &level, &newtag );
 		if ( n==-1 ) {
 			isiin_report_notag( p, t->data );
 			continue;
 		}
-		process = ((all[reftype]).tags[n]).processingtype;
-		level = ((all[reftype]).tags[n]).level;
-		newtag = all[reftype].tags[n].newstr;
-		if ( process == SIMPLE || process == DATE )
-			fields_add( info, newtag, d->data, level );
-		else if ( process == PERSON )
-			name_add( info, newtag, d->data, level, &(p->asis), 
-					&(p->corps) );
-		else if ( process == TITLE )
-			title_process( info, newtag, d->data, level, 
-					p->nosplittitle );
-		else if ( process == ISI_KEYWORD )
-			keyword_process( info, newtag, d->data, level );
-		else if ( process == SERIALNO )
-			addsn( info, d->data, level );
+		if ( process == ALWAYS ) continue; /* add in core code */
+
+		d = fields_value( isiin, i, FIELDS_STRP );
+
+		switch ( process ) {
+
+		case SIMPLE:
+			ok = fields_add( info, newtag, d->data, level );
+			break;
+
+		case DATE:
+			ok = fields_add( info, newtag, d->data, level );
+			break;
+
+		case PERSON:
+			ok = name_add( info, newtag, d->data, level, &(p->asis), &(p->corps) );
+			break;
+
+		case TITLE:
+			ok = title_process( info, newtag, d->data, level, p->nosplittitle );
+			break;
+
+		case KEYWORD:
+			ok = keyword_process( info, newtag, d->data, level );
+			break;
+
+		case SERIALNO:
+			ok = addsn( info, d->data, level );
+			break;
+
+		default:
+			ok = 1;
+			break;
+
+		}
+
 		/* do nothing if process==TYPE || process==ALWAYS */
+
+		if ( !ok ) return BIBL_ERR_MEMERR;
 	}
+
+	return BIBL_OK;
 }
diff --git a/lib/isiin.h b/lib/isiin.h
index 07c6aff..4e4dbb4 100644
--- a/lib/isiin.h
+++ b/lib/isiin.h
@@ -1,9 +1,9 @@
 /*
  * isiin.h
  * 
- * Copyright (c) Chris Putnam 2004-2009
+ * Copyright (c) Chris Putnam 2004-2013
  *
- * Program and source code released under the GPL
+ * Source code released under the GPL version 2
  *
  */
 #ifndef ISIIN_H
@@ -16,7 +16,7 @@
 
 extern int isiin_readf( FILE *fp, char *buf, int bufsize, int *bufpos, newstr *line, newstr *reference, int *fcharset );
 extern int isiin_typef( fields *isiin, char *filename, int nref, param *p, variants *all, int nall );
-extern void isiin_convertf( fields *isiin, fields *info, int reftype, param *p, variants *all, int nall );
+extern int isiin_convertf( fields *isiin, fields *info, int reftype, param *p, variants *all, int nall );
 extern int isiin_processf( fields *isiin, char *p, char *filename, long nref );
 
 extern void isiin_initparams( param *p, const char *progname );
diff --git a/lib/isiout.c b/lib/isiout.c
index f2811bd..92628b8 100644
--- a/lib/isiout.c
+++ b/lib/isiout.c
@@ -1,9 +1,10 @@
 /*
  * isiout.c
  *
- * Copyright (c) Chris Putnam 2008-2010
+ * Copyright (c) Chris Putnam 2008-2013
+ *
+ * Source code released under the GPL version 2
  *
- * Source code released under the GPL
  */
 #include <stdio.h>
 #include <stdlib.h>
@@ -24,14 +25,18 @@ isiout_initparams( param *p, const char *progname )
 	p->charsetout       = BIBL_CHARSET_DEFAULT;
 	p->charsetout_src   = BIBL_SRC_DEFAULT;
 	p->latexout         = 0;
-	p->utf8out          = 0;
-	p->utf8bom          = 0;
+	p->utf8out          = BIBL_CHARSET_UTF8_DEFAULT;
+	p->utf8bom          = BIBL_CHARSET_BOM_DEFAULT;
 	p->xmlout           = 0;
 	p->nosplittitle     = 0;
 	p->verbose          = 0;
 	p->addcount         = 0;
 	p->singlerefperfile = 0;
 
+	if ( p->charsetout == BIBL_CHARSET_UNICODE ) {
+		p->utf8out = p->utf8bom = 1;
+	}
+
 	p->headerf = isiout_writeheader;
 	p->footerf = NULL;
 	p->writef  = isiout_write;
@@ -56,224 +61,246 @@ output_type( FILE *fp, int type )
 }
 
 static int 
-get_type( fields *info )
+get_type( fields *f )
 {
-	char *tag, *data;
-        int type = TYPE_UNKNOWN, i;
-        for ( i=0; i<info->nfields; ++i ) {
-		tag = info->tag[i].data;
+        int type = TYPE_UNKNOWN, i, n, level;
+	char *tag, *value;
+	n = fields_num( f );
+        for ( i=0; i<n; ++i ) {
+		tag = fields_tag( f, i, FIELDS_CHRP );
                 if ( strcasecmp( tag, "GENRE" ) &&
                      strcasecmp( tag, "NGENRE") ) continue;
-		data = info->data[i].data;
-                if ( !strcasecmp( data, "periodical" ) ||
-                     !strcasecmp( data, "academic journal" ) )
+		value = fields_value( f, i, FIELDS_CHRP );
+		level = fields_level( f, i );
+                if ( !strcasecmp( value, "periodical" ) ||
+                     !strcasecmp( value, "academic journal" ) ||
+		     !strcasecmp( value, "journal article" ) ) {
                         type = TYPE_ARTICLE;
-                else if ( !strcasecmp( data, "book" ) ) {
-                        if ( info->level[i]==0 ) type=TYPE_BOOK;
+                } else if ( !strcasecmp( value, "book" ) ) {
+                        if ( level==0 ) type=TYPE_BOOK;
                         else type=TYPE_INBOOK;
+		} else if ( !strcasecmp( value, "book chapter" ) ) {
+			type = TYPE_INBOOK;
                 }
         }
         return type;
 }
 
 static void
-output_title( FILE *fp, fields *info, char *isitag, int level )
+output_titlecore( FILE *fp, fields *f, char *isitag, int level,
+	char *maintag, char *subtag )
 {
-        int n1 = fields_find( info, "TITLE", level );
-        int n2 = fields_find( info, "SUBTITLE", level );
-        if ( n1!=-1 ) {
-                fprintf( fp, "%s %s", isitag, info->data[n1].data );
-                if ( n2!=-1 ) {
-                        if ( info->data[n1].data[info->data[n1].len]!='?' )
-                                fprintf( fp, ": " );
-                        else fprintf( fp, " " );
-                        fprintf( fp, "%s", info->data[n2].data );
-                }
-                fprintf( fp, "\n" );
-        }
+	newstr *mainttl = fields_findv( f, level, FIELDS_STRP, maintag );
+	newstr *subttl  = fields_findv( f, level, FIELDS_STRP, subtag );
+
+	if ( !mainttl ) return;
+
+	fprintf( fp, "%s %s", isitag, mainttl->data );
+	if ( subttl ) {
+		if ( mainttl->len > 0 &&
+		     mainttl->data[ mainttl->len - 1 ]!='?' )
+				fprintf( fp, ":" );
+		fprintf( fp, " %s", subttl->data );
+	}
+	fprintf( fp, "\n" );
 }
 
 static void
-output_abbrtitle( FILE *fp, fields *info, char *isitag, int level )
+output_title( FILE *fp, fields *f, char *isitag, int level )
 {
-        int n1 = fields_find( info, "SHORTTITLE", level );
-        int n2 = fields_find( info, "SHORTSUBTITLE", level );
-        if ( n1!=-1 ) {
-                fprintf( fp, "%s %s", isitag, info->data[n1].data );
-                if ( n2!=-1 ){
-                        if ( info->data[n1].data[info->data[n1].len]!='?' )
-                                fprintf( fp, ": " );
-                        else fprintf( fp, " " );
-                        fprintf( fp, "%s", info->data[n2].data );
-                }
-                fprintf( fp, "\n" );
-        }
+	output_titlecore( fp, f, isitag, level, "TITLE", "SUBTITLE" );
 }
 
 static void
-output_person( FILE *fp, char *name )
+output_abbrtitle( FILE *fp, fields *f, char *isitag, int level )
 {
-	int n = 0, nchars = 0;
-	char *p = name;
-	while ( *p ) {
-		if ( *p=='|' )  { n++; nchars=0; }
-		else {
-			if ( n==1 && nchars<2 ) fprintf( fp, ", " );
-			if ( n==0 || (n>0 && nchars<2) ) {
-				fprintf( fp, "%c", *p );
-			}
+	output_titlecore( fp, f, isitag, level, "SHORTTITLE", "SHORTSUBTITLE" );
+}
+
+static void
+output_keywords( FILE *fp, fields *f )
+{
+	vplist kw;
+	int i;
+	vplist_init( &kw );
+	fields_findv_each( f, LEVEL_ANY, FIELDS_CHRP, &kw, "KEYWORD" );
+	if ( kw.n ) {
+		fprintf( fp, "DE " );
+		for ( i=0; i<kw.n; ++i ) {
+			if ( i>0 ) fprintf( fp, "; " );
+			fprintf( fp, "%s", (char *)vplist_get( &kw, i ) );
 		}
-		nchars++;
-		p++;
+		fprintf( fp, "\n" );
 	}
+	vplist_free( &kw );
 }
 
 static void
-output_keywords( FILE *fp, fields *info )
+output_person( FILE *fp, char *name )
 {
-	int n = 0, i;
-	for ( i=0; i<info->nfields; ++i ) {
-		if ( strcasecmp( info->tag[i].data, "KEYWORD" ) ) continue;
-		if ( n==0 )
-			fprintf( fp, "DE " );
-		if ( n>0 )
-			fprintf( fp, "; " );
-		fprintf( fp, "%s", info->data[i].data );
-		n++;
+	newstr family, given, suffix;
+	char *p = name;
+
+	newstrs_init( &family, &given, &suffix, NULL );
+
+	while ( *p && *p!='|' )
+		newstr_addchar( &family, *p++ );
+
+	while ( *p=='|' && *(p+1)!='|' ) {
+		p++;
+		if ( *p!='|' ) newstr_addchar( &given, *p++ );
+		while ( *p && *p!='|' ) p++;
 	}
-	if ( n ) fprintf( fp, "\n" );
+
+	if ( *p=='|' && *(p+1)=='|' ) {
+		p += 2;
+		while ( *p && *p!='|' ) newstr_addchar( &suffix, *p++ );
+	}
+
+	if ( family.len ) fprintf( fp, "%s", family.data );
+	if ( suffix.len ) {
+		if ( family.len ) fprintf( fp, " %s", suffix.data );
+		else fprintf( fp, "%s", suffix.data );
+	}
+	if ( given.len ) fprintf( fp, ", %s", given.data );
+
+	newstrs_free( &family, &given, &suffix, NULL );
 }
 
 static void
-output_people( FILE *fp, fields *info, char *tag, char *isitag, int level )
+output_people( FILE *fp, fields *f, char *tag, char *isitag, int level )
 {
-	int n = 0, i;
-        for ( i=0; i<info->nfields; ++i ) {
-                if ( strcasecmp( info->tag[i].data, tag ) ) continue;
-		if ( level!=-1 && info->level[i]!=level ) continue;
-		if ( n==0 ) {
-			fprintf( fp, "%s ", isitag );
-		} else {
-			fprintf( fp, "   " );
+	vplist people;
+	int i;
+	vplist_init( &people );
+	fields_findv_each( f, level, FIELDS_CHRP, &people, tag );
+	if ( people.n ) {
+		fprintf( fp, "%s ", isitag );
+		for ( i=0; i<people.n; ++i ) {
+			if ( i!=0 ) fprintf( fp, "   " );
+			output_person( fp, (char *)vplist_get( &people, i ) );
+			fprintf( fp, "\n" );
 		}
-		output_person( fp, info->data[i].data );
-		fprintf( fp, "\n" );
-		n++;
 	}
+	vplist_free( &people );
 }
 
 static void
-output_easy( FILE *fp, fields *info, char *tag, char *isitag, int level )
+output_easy( FILE *fp, fields *f, char *tag, char *isitag, int level )
 {
-        int n = fields_find( info, tag, level );
-        if ( n!=-1 )
-                fprintf( fp, "%s %s\n", isitag, info->data[n].data );
+	char *value = fields_findv( f, level, FIELDS_CHRP, tag );
+	if ( value ) fprintf( fp, "%s %s\n", isitag, value );
 }
 
 static void
-output_easyall( FILE *fp, fields *info, char *tag, char *isitag, int level )
+output_easyall( FILE *fp, fields *f, char *tag, char *isitag, int level )
 {
+	vplist a;
 	int i;
-	for ( i=0; i<info->nfields; ++i ) {
-		if ( level!=-1 && info->level[i]!=level ) continue;
-		if ( strcasecmp( info->tag[i].data, tag ) ) continue;
-		fprintf( fp, "%s %s\n", isitag, info->data[i].data );
-	}
+	vplist_init( &a );
+	fields_findv_each( f, level, FIELDS_CHRP, &a, tag );
+	for ( i=0; i<a.n; ++i )
+		fprintf( fp, "%s %s\n", isitag, (char *) vplist_get( &a, i ) );
+	vplist_free( &a );
 }
 
-
 static void
-output_date( FILE *fp, fields *info )
+output_date( FILE *fp, fields *f )
 {
-	int n;
-
-	n = fields_find( info, "PARTMONTH", -1 );
-	if ( n==-1 ) n = fields_find( info, "MONTH", -1 );
-	if ( n!=-1 ) fprintf( fp, "%s %s\n", "PD", info->data[n].data );
-
-	n = fields_find( info, "PARTYEAR", -1 );
-	if ( n==-1 ) n = fields_find( info, "YEAR", -1 );
-	if ( n!=-1 ) fprintf( fp, "%s %s\n", "PY", info->data[n].data );
+	char *month = fields_findv_firstof( f, LEVEL_ANY, FIELDS_CHRP,
+		"PARTMONTH", "MONTH", NULL );
+	char *year  = fields_findv_firstof( f, LEVEL_ANY, FIELDS_CHRP,
+		"PARTYEAR", "YEAR", NULL );
+	if ( month ) fprintf( fp, "PD %s\n", month );
+	if ( year )  fprintf( fp, "PY %s\n", year );
 }
 
 static void
-output_verbose( fields *info, unsigned long refnum )
+output_verbose( fields *f, unsigned long refnum )
 {
-	int i;
+	char *tag, *value;
+	int i, n, level;
 	fprintf( stderr, "REF #%lu----\n", refnum+1 );
-	for ( i=0; i<info->nfields; ++i ) {
+	n = fields_num( f );
+	for ( i=0; i<n; ++i ) {
+		tag   = fields_tag( f, i, FIELDS_CHRP_NOUSE );
+		value = fields_value( f, i, FIELDS_CHRP_NOUSE );
+		level = fields_level( f, i );
 		fprintf( stderr, "\t'%s'\t'%s'\t%d\n",
-			info->tag[i].data,
-			info->data[i].data,
-			info->level[i]);
+			tag, value, level );
 	}
 }
 
 void
-isiout_write( fields *info, FILE *fp, param *p, unsigned long refnum )
+isiout_write( fields *f, FILE *fp, param *p, unsigned long refnum )
 {
-        int type = get_type( info );
+        int type = get_type( f );
 
 	if ( p->format_opts & BIBL_FORMAT_VERBOSE )
-		output_verbose( info, refnum );
+		output_verbose( f, refnum );
 
         output_type( fp, type );
-	output_people( fp, info, "AUTHOR", "AU", 0 );
-	output_easyall( fp, info, "AUTHOR:CORP", "AU", 0 );
-	output_easyall( fp, info, "AUTHOR:ASIS", "AU", 0 );
-/*      output_people( fp, info, "AUTHOR", "A2", 1 );
-        output_people( fp, info, "AUTHOR:CORP", "A2", 1 );
-        output_people( fp, info, "AUTHOR:ASIS", "A2", 1 );
-        output_people( fp, info, "AUTHOR", "A3", 2 );
-        output_people( fp, info, "AUTHOR:CORP", "A3", 2 );
-        output_people( fp, info, "AUTHOR:ASIS", "A3", 2 );
-        output_people( fp, info, "EDITOR", "ED", -1 );
-	output_people( fp, info, "EDITOR:CORP", "ED", -1 );
-        output_people( fp, info, "EDITOR:ASIS", "ED", -1 );*/
-/*        output_date( fp, info, refnum );*/
-
-        output_title( fp, info, "TI", 0 );
+	output_people( fp, f, "AUTHOR", "AU", 0 );
+	output_easyall( fp, f, "AUTHOR:CORP", "AU", 0 );
+	output_easyall( fp, f, "AUTHOR:ASIS", "AU", 0 );
+/*      output_people( fp, f, "AUTHOR", "A2", 1 );
+        output_people( fp, f, "AUTHOR:CORP", "A2", 1 );
+        output_people( fp, f, "AUTHOR:ASIS", "A2", 1 );
+        output_people( fp, f, "AUTHOR", "A3", 2 );
+        output_people( fp, f, "AUTHOR:CORP", "A3", 2 );
+        output_people( fp, f, "AUTHOR:ASIS", "A3", 2 );
+        output_people( fp, f, "EDITOR", "ED", -1 );
+	output_people( fp, f, "EDITOR:CORP", "ED", -1 );
+        output_people( fp, f, "EDITOR:ASIS", "ED", -1 );*/
+/*        output_date( fp, f, refnum );*/
+
+        output_title( fp, f, "TI", 0 );
         if ( type==TYPE_ARTICLE ) {
-                output_title( fp, info, "SO", 1 );
-		output_abbrtitle( fp, info, "JI", 1 );
+		output_title( fp, f, "SO", 1 );
+		output_abbrtitle( fp, f, "JI", 1 );
+		output_title( fp, f, "SE", 2 );
+	} else if ( type==TYPE_INBOOK ) {
+		output_title( fp, f, "BT", 1 );
+		output_title( fp, f, "SE", 2 );
+	} else { /* type==BOOK */
+		output_title( fp, f, "SE", 1 );
 	}
-        else output_title( fp, info, "BT", 1 );
 
-	output_date( fp, info );
-/*	output_easy( fp, info, "PARTMONTH", "PD", -1 );
-	output_easy( fp, info, "PARTYEAR", "PY", -1 );*/
+	output_date( fp, f );
+/*	output_easy( fp, f, "PARTMONTH", "PD", -1 );
+	output_easy( fp, f, "PARTYEAR", "PY", -1 );*/
 
-	output_easy( fp, info, "PAGESTART", "BP", -1 );
-	output_easy( fp, info, "PAGEEND",   "EP", -1 );
-        output_easy( fp, info, "ARTICLENUMBER", "AR", -1 );
+	output_easy( fp, f, "PAGESTART", "BP", -1 );
+	output_easy( fp, f, "PAGEEND",   "EP", -1 );
+        output_easy( fp, f, "ARTICLENUMBER", "AR", -1 );
         /* output article number as pages */
-	output_easy( fp, info, "TOTALPAGES","PG", -1 );
-
-        output_easy( fp, info, "VOLUME",    "VL", -1 );
-        output_easy( fp, info, "ISSUE",     "IS", -1 );
-        output_easy( fp, info, "NUMBER",    "IS", -1 );
-	output_easy( fp, info, "DOI",       "DI", -1 );
-	output_easy( fp, info, "ISIREFNUM", "UT", -1 );
-	output_easy( fp, info, "LANGUAGE",  "LA", -1 );
-	output_easy( fp, info, "ISIDELIVERNUM", "GA", -1 );
-	output_keywords( fp, info );
-	output_easy( fp, info, "ABSTRACT",  "AB", -1 );
-	output_easy( fp, info, "TIMESCITED", "TC", -1 );
-	output_easy( fp, info, "NUMBERREFS", "NR", -1 );
-	output_easy( fp, info, "CITEDREFS",  "CR", -1 );
-	output_easy( fp, info, "ADDRESS",    "PI", -1 );
-
-/*        output_easy( fp, info, "PUBLISHER", "PB", -1 );
-        output_easy( fp, info, "DEGREEGRANTOR", "PB", -1 );
-        output_easy( fp, info, "ADDRESS", "CY", -1 );
-        output_easy( fp, info, "ABSTRACT", "AB", -1 );
-        output_easy( fp, info, "ISSN", "SN", -1 );
-        output_easy( fp, info, "ISBN", "SN", -1 );
-        output_easyall( fp, info, "URL", "UR", -1 );
-        output_easyall( fp, info, "FILEATTACH", "UR", -1 );
-        output_pubmed( fp, info, refnum );
-        output_easyall( fp, info, "NOTES", "N1", -1 );
-        output_easyall( fp, info, "REFNUM", "ID", -1 );*/
+	output_easy( fp, f, "TOTALPAGES","PG", -1 );
+
+        output_easy( fp, f, "VOLUME",    "VL", -1 );
+        output_easy( fp, f, "ISSUE",     "IS", -1 );
+        output_easy( fp, f, "NUMBER",    "IS", -1 );
+	output_easy( fp, f, "DOI",       "DI", -1 );
+	output_easy( fp, f, "ISIREFNUM", "UT", -1 );
+	output_easy( fp, f, "LANGUAGE",  "LA", -1 );
+	output_easy( fp, f, "ISIDELIVERNUM", "GA", -1 );
+	output_keywords( fp, f );
+	output_easy( fp, f, "ABSTRACT",  "AB", -1 );
+	output_easy( fp, f, "TIMESCITED", "TC", -1 );
+	output_easy( fp, f, "NUMBERREFS", "NR", -1 );
+	output_easy( fp, f, "CITEDREFS",  "CR", -1 );
+	output_easy( fp, f, "ADDRESS",    "PI", -1 );
+
+/*        output_easy( fp, f, "PUBLISHER", "PB", -1 );
+        output_easy( fp, f, "DEGREEGRANTOR", "PB", -1 );
+        output_easy( fp, f, "ADDRESS", "CY", -1 );
+        output_easy( fp, f, "ABSTRACT", "AB", -1 );
+        output_easy( fp, f, "ISSN", "SN", -1 );
+        output_easy( fp, f, "ISBN", "SN", -1 );
+        output_easyall( fp, f, "URL", "UR", -1 );
+        output_easyall( fp, f, "FILEATTACH", "UR", -1 );
+        output_pubmed( fp, f, refnum );
+        output_easyall( fp, f, "NOTES", "N1", -1 );
+        output_easyall( fp, f, "REFNUM", "ID", -1 );*/
         fprintf( fp, "ER\n\n" );
         fflush( fp );
 }
diff --git a/lib/isiout.h b/lib/isiout.h
index 7eb4578..3d09677 100644
--- a/lib/isiout.h
+++ b/lib/isiout.h
@@ -1,7 +1,9 @@
 /*
  * isiout.h
  *
- * Copyright (c) Chris Putnam 2007-2009
+ * Copyright (c) Chris Putnam 2007-2013
+ *
+ * Source code released under the GPL version 2
  *
  */
 #ifndef ISIOUT_H
diff --git a/lib/isitypes.c b/lib/isitypes.c
index 2597abc..6a8d557 100644
--- a/lib/isitypes.c
+++ b/lib/isitypes.c
@@ -1,12 +1,11 @@
 /*
  * isitypes.c
  *
- * Copyright (c) Chris Putnam 2004-2010
+ * Copyright (c) Chris Putnam 2004-2013
  *
- * Program and source code released under the GPL
+ * Program and source code released under the GPL version 2
  *
  */
-
 #include <stdio.h>
 #include <string.h>
 #include "is_ws.h"
@@ -36,8 +35,8 @@ static lookups article[] = {
 	{ "SN",     "SERIALNUMBER", SERIALNO, LEVEL_HOST },
 	{ "AB",     "ABSTRACT",  SIMPLE, LEVEL_MAIN },
 	{ "NF",     "NOTES",     SIMPLE, LEVEL_MAIN },
-	{ "DE",     "KEYWORD",   ISI_KEYWORD, LEVEL_MAIN }, /* author keywords */
-	{ "ID",     "KEYWORD",   ISI_KEYWORD, LEVEL_MAIN }, /* new ISI keywords */
+	{ "DE",     "KEYWORD",   KEYWORD, LEVEL_MAIN }, /* author keywords */
+	{ "ID",     "KEYWORD",   KEYWORD, LEVEL_MAIN }, /* new ISI keywords */
 	{ "LA",     "LANGUAGE",  SIMPLE, LEVEL_MAIN },
 	{ "TC",     "TIMESCITED", SIMPLE, LEVEL_MAIN },
 	{ "NR",     "NUMBERREFS", SIMPLE, LEVEL_MAIN },
@@ -51,6 +50,7 @@ static lookups article[] = {
 	{ " ",      "INTERNAL_TYPE|ARTICLE",           ALWAYS, LEVEL_MAIN },
 	{ " ",      "ISSUANCE|continuing",    ALWAYS, LEVEL_HOST },
 	{ " ",      "RESOURCE|text",          ALWAYS, LEVEL_MAIN },
+	{ " ",      "GENRE|journal article",  ALWAYS, LEVEL_MAIN },
 	{ " ",      "GENRE|periodical",       ALWAYS, LEVEL_HOST },
 	{ " ",      "GENRE|academic journal", ALWAYS, LEVEL_HOST }
 };
@@ -77,8 +77,8 @@ static lookups book[] = {
 	{ "SN",     "SERIALNUMBER", SERIALNO, LEVEL_HOST },
 	{ "AB",     "ABSTRACT",  SIMPLE, LEVEL_MAIN },
 	{ "NF",     "NOTES",     SIMPLE, LEVEL_MAIN },
-	{ "DE",     "KEYWORD",   ISI_KEYWORD, LEVEL_MAIN }, /* author keywords */
-	{ "ID",     "KEYWORD",   ISI_KEYWORD, LEVEL_MAIN }, /* new ISI keywords */
+	{ "DE",     "KEYWORD",   KEYWORD, LEVEL_MAIN }, /* author keywords */
+	{ "ID",     "KEYWORD",   KEYWORD, LEVEL_MAIN }, /* new ISI keywords */
 	{ "LA",     "LANGUAGE",  SIMPLE, LEVEL_MAIN },
 	{ "TC",     "TIMESCITED", SIMPLE, LEVEL_MAIN },
 	{ "NR",     "NUMBERREFS", SIMPLE, LEVEL_MAIN },
@@ -118,8 +118,8 @@ static lookups inbook[] = {
 	{ "SN",     "SERIALNUMBER", SERIALNO, LEVEL_HOST },
 	{ "AB",     "ABSTRACT",  SIMPLE, LEVEL_MAIN },
 	{ "NF",     "NOTES",     SIMPLE, LEVEL_MAIN },
-	{ "DE",     "KEYWORD",   ISI_KEYWORD, LEVEL_MAIN }, /* author keywords */
-	{ "ID",     "KEYWORD",   ISI_KEYWORD, LEVEL_MAIN }, /* new ISI keywords */
+	{ "DE",     "KEYWORD",   KEYWORD, LEVEL_MAIN }, /* author keywords */
+	{ "ID",     "KEYWORD",   KEYWORD, LEVEL_MAIN }, /* new ISI keywords */
 	{ "LA",     "LANGUAGE",  SIMPLE, LEVEL_MAIN },
 	{ "TC",     "TIMESCITED", SIMPLE, LEVEL_MAIN },
 	{ "NR",     "NUMBERREFS", SIMPLE, LEVEL_MAIN },
@@ -129,10 +129,11 @@ static lookups inbook[] = {
 	{ "GA",     "ISIDELIVERNUM", SIMPLE, LEVEL_MAIN}, /*ISI document delivery number */
 	{ "UT",     "ISIREFNUM", SIMPLE, LEVEL_MAIN }, /* ISI unique article identifer */
 	{ "DI",     "DOI",       SIMPLE, LEVEL_MAIN },
-	{ " ",      "INTERNAL_TYPE|INBOOK",   ALWAYS, LEVEL_MAIN },
-	{ " ",      "RESOURCE|text", ALWAYS, LEVEL_MAIN },
-	{ " ",      "ISSUANCE|monographic",    ALWAYS, LEVEL_HOST },
-	{ " ",      "GENRE|book",    ALWAYS, LEVEL_HOST }
+	{ " ",      "INTERNAL_TYPE|INBOOK", ALWAYS, LEVEL_MAIN },
+	{ " ",      "RESOURCE|text",        ALWAYS, LEVEL_MAIN },
+	{ " ",      "ISSUANCE|monographic", ALWAYS, LEVEL_HOST },
+        { " ",      "GENRE|book chapter",   ALWAYS, LEVEL_MAIN },
+	{ " ",      "GENRE|book",           ALWAYS, LEVEL_HOST }
 };
 
 static lookups bookinseries[] = {
@@ -159,8 +160,8 @@ static lookups bookinseries[] = {
 	{ "SN",     "SERIALNUMBER", SERIALNO, LEVEL_HOST },
 	{ "AB",     "ABSTRACT",  SIMPLE, LEVEL_MAIN },
 	{ "NF",     "NOTES",     SIMPLE, LEVEL_MAIN },
-	{ "DE",     "KEYWORD",   ISI_KEYWORD, LEVEL_MAIN }, /* author keywords */
-	{ "ID",     "KEYWORD",   ISI_KEYWORD, LEVEL_MAIN }, /* new ISI keywords */
+	{ "DE",     "KEYWORD",   KEYWORD, LEVEL_MAIN }, /* author keywords */
+	{ "ID",     "KEYWORD",   KEYWORD, LEVEL_MAIN }, /* new ISI keywords */
 	{ "LA",     "LANGUAGE",  SIMPLE, LEVEL_MAIN },
 	{ "TC",     "TIMESCITED", SIMPLE, LEVEL_MAIN },
 	{ "NR",     "NUMBERREFS", SIMPLE, LEVEL_MAIN },
diff --git a/lib/iso639_2.c b/lib/iso639_2.c
new file mode 100644
index 0000000..5447394
--- /dev/null
+++ b/lib/iso639_2.c
@@ -0,0 +1,645 @@
+/*
+ * iso639-2 language codes
+ */
+#include <string.h>
+#include "iso639_2.h"
+
+typedef struct {
+	char *code1;
+	char *code2;
+	unsigned char main;
+	char *language;
+} iso639_2_t;
+
+static iso639_2_t iso639_2[] = {
+	{ "abk", "",    1, "Abkhazian" },
+	{ "ace", "",    1, "Achenese" },
+	{ "ace", "",    1, "Achinese" },
+	{ "ach", "",    1, "Acoli" },
+	{ "ada", "",    1, "Adangme" },
+	{ "ady", "",    1, "Adygei" },
+	{ "ady", "",    1, "Adyghe" },
+	{ "aar", "",    1, "Afar" },
+	{ "afh", "",    1, "Afrihili" },
+	{ "afr", "",    1, "Afrikaans" },
+	{ "afa", "",    1, "Afroasiatic languages" },
+	{ "ain", "",    1, "Ainu" },
+	{ "aka", "",    1, "Akan" },
+	{ "akk", "",    1, "Akkadian" },
+	{ "alb", "sqi", 1, "Albanian" },
+	{ "gsw", "",    1, "Alemannic" },
+	{ "ale", "",    1, "Aleut" },
+	{ "alg", "",    1, "Algonquian languages" },
+	{ "gsw", "",    1, "Alsatian" },
+	{ "alt", "",    1, "Altai, Southern" },
+	{ "tut", "",    1, "Altaic languages" },
+	{ "amh", "",    1, "Amharic" },
+	{ "egy", "",    1, "Ancient Egyptian" },
+	{ "grc", "",    1, "Ancient Greek" },
+	{ "anp", "",    1, "Angika" },
+	{ "apa", "",    1, "Apache languages" },
+	{ "arc", "",    1, "Aramaic, Imperial" },
+	{ "arc", "",    1, "Aramaic, Official" },
+	{ "arp", "",    1, "Arapaho" },
+	{ "arw", "",    1, "Arawak" },
+	{ "arg", "",    1, "Argonese" },
+	{ "arm", "hye", 1, "Armenian" },
+	{ "rup", "",    1, "Aromanian" },
+	{ "art", "",    1, "Artificial languages" },
+	{ "rup", "",    1, "Arumanian" },
+	{ "asm", "",    1, "Assamese" },
+	{ "ast", "",    1, "Asturian" },
+	{ "ast", "",    1, "Asturleonese" },
+	{ "ath", "",    1, "Athabaskan languages" },
+	{ "aus", "",    1, "Australian languages" },
+	{ "map", "",    1, "Austronesian languages" },
+	{ "ava", "",    1, "Avaric" },
+	{ "ave", "",    1, "Avestan" },
+	{ "awa", "",    1, "Awadhi" },
+	{ "aze", "",    1, "Azerbaijani" },
+	{ "ast", "",    1, "Bable" },
+	{ "ban", "",    1, "Balinese" },
+	{ "bat", "",    1, "Baltic languages" },
+	{ "bal", "",    1, "Baluchi" },
+	{ "bam", "",    1, "Bambara" },
+	{ "bai", "",    1, "Bamileke languages" },
+	{ "bad", "",    1, "Banda languages" },
+	{ "bnt", "",    1, "Bantu languages" },
+	{ "bas", "",    1, "Basa" },
+	{ "bak", "",    1, "Bashkir" },
+	{ "baq", "eus", 1, "Basque" },
+	{ "bej", "",    1, "Bedawiyet" },
+	{ "bej", "",    1, "Beja" },
+	{ "bel", "",    1, "Belarusian" },
+	{ "bem", "",    1, "Bemba" },
+	{ "ben", "",    1, "Bengali" },
+	{ "ber", "",    1, "Berber languages" },
+	{ "bho", "",    1, "Bhojpuri" },
+	{ "bih", "",    1, "Bihari languages" },
+	{ "bik", "",    1, "Bikol" },
+	{ "byn", "",    1, "Bilin" },
+	{ "bin", "",    1, "Bini" },
+	{ "bis", "",    1, "Bislama" },
+	{ "bla", "",    1, "Blackfoot" },
+	{ "byn", "",    1, "Blin" },
+	{ "zbl", "",    1, "Blissymbols" },
+	{ "bos", "",    1, "Bosnian" },
+	{ "bra", "",    1, "Braj" },
+	{ "btk", "",    1, "Bratak languages" },
+	{ "bre", "",    1, "Breton" },
+	{ "bug", "",    1, "Buginese" },
+	{ "bul", "",    1, "Bulgarian" },
+	{ "bua", "",    1, "Buriat" },
+	{ "bur", "mya", 1, "Burmese" },
+	{ "cad", "",    1, "Caddo" },
+	{ "spa", "",    0, "Castilian" },
+	{ "cat", "",    1, "Catalan" },
+	{ "cau", "",    1, "Caucasian languages" },
+	{ "ceb", "",    1, "Cebuano" },
+	{ "cel", "",    1, "Celtic languages" },
+	{ "cai", "",    1, "Central American Indian languages" },
+	{ "khm", "",    1, "Central Khmer" },
+	{ "chg", "",    1, "Chagatai" },
+	{ "cmc", "",    1, "Chamic languages" },
+	{ "cha", "",    1, "Chamorro" },
+	{ "che", "",    1, "Chechen" },
+	{ "chr", "",    1, "Cherokee" },
+	{ "nya", "",    1, "Chewa" },
+	{ "chy", "",    1, "Cheyenne" },
+	{ "chb", "",    1, "Chibcha" },
+	{ "nya", "",    1, "Chichewa" },
+	{ "chi", "zho", 1, "Chinese" },
+	{ "chn", "",    1, "Chinook Jargon" },
+	{ "chp", "",    1, "Chipewyan" },
+	{ "cho", "",    1, "Choctaw" },
+	{ "zha", "",    1, "Chuang" },
+	{ "chu", "",    1, "Church Slavic" },
+	{ "chu", "",    1, "Church Slavonic" },
+	{ "chk", "",    1, "Chuukese" },
+	{ "chv", "",    1, "Chuvash" },
+	{ "kbd", "",    1, "Circassian" },
+	{ "nwc", "",    1, "Classical Nepal Bhasa" },
+	{ "nwc", "",    1, "Classical Newari" },
+	{ "syc", "",    1, "Classical Syriac" },
+	{ "rar", "",    1, "Cook Islands Maori" },
+	{ "cop", "",    1, "Coptic" },
+	{ "cor", "",    1, "Cornish" },
+	{ "cos", "",    1, "Corsican" },
+	{ "cre", "",    1, "Cree" },
+	{ "mus", "",    1, "Creek" },
+	{ "crp", "",    1, "creoles and pidgins" },
+	{ "cpe", "",    1, "creoles and pidgins, English-based" },
+	{ "cpf", "",    1, "creoles and pidgins, French-based" },
+	{ "cpp", "",    1, "creoles and pidgins, Portuguese-based" },
+	{ "crh", "",    1, "Crimean Tartar" },
+	{ "crh", "",    1, "Crimean Turkish" },
+	{ "hrv", "",    1, "Croatian" },
+	{ "cus", "",    1, "Cushitic languages" },
+	{ "cze", "ces", 1, "Czech" },
+	{ "dak", "",    1, "Dakota" },
+	{ "dan", "",    1, "Danish" },
+	{ "dar", "",    1, "Dargwa" },
+	{ "del", "",    1, "Delaware" },
+	{ "chp", "",    1, "Dene Suline" },
+	{ "div", "",    1, "Dhivehi" },
+	{ "din", "",    1, "Dinka" },
+	{ "div", "",    1, "Divehi" },
+	{ "doi", "",    1, "Dogri" },
+	{ "dgr", "",    1, "Dogrib" },
+	{ "dra", "",    1, "Dravidian languages" },
+	{ "dua", "",    1, "Duala" },
+	{ "dut", "",    1, "Dutch" },
+	{ "dum", "",    1, "Dutch, Middle" },
+	{ "dyu", "",    1, "Dyula" },
+	{ "dzo", "",    1, "Dzongkha" },
+	{ "frs", "",    1, "Eastern Frisian" },
+	{ "bin", "",    1, "Edo" },
+	{ "efi", "",    1, "Efik" },
+	{ "egy", "",    1, "Egyptian (Ancient)" },
+	{ "eka", "",    1, "Ekajuk" },
+	{ "elx", "",    1, "Elamite" },
+	{ "eng", "",    1, "English" },
+	{ "enm", "",    0, "English, Middle" },
+	{ "ang", "",    0, "English, Old" },
+	{ "myv", "",    1, "Erzya" },
+	{ "epo", "",    1, "Esperanto" },
+	{ "est", "",    1, "Estonian" },
+	{ "ewe", "",    1, "Ewe" },
+	{ "ewo", "",    1, "Ewondo" },
+	{ "fan", "",    1, "Fang" },
+	{ "fat", "",    1, "Fanti" },
+	{ "fao", "",    1, "Faroese" },
+	{ "fij", "",    1, "Fijian" },
+	{ "fil", "",    1, "Filipino" },
+	{ "fin", "",    1, "Finnish" },
+	{ "fiu", "",    1, "Finno-Ugric languages" },
+	{ "dut", "",    1, "Flemish" },
+	{ "fon", "",    1, "Fon" },
+	{ "fre", "fra", 1, "French" },
+	{ "frm", "",    0, "French, Middle" },
+	{ "fro", "",    0, "French, Old" },
+	{ "frs", "",    1, "Frisian, Eastern" },
+	{ "frr", "",    1, "Frisian, Northern" },
+	{ "fry", "",    1, "Frisian, Western" },
+	{ "fur", "",    1, "Friulian" },
+	{ "ful", "",    1, "Fulah" },
+	{ "gaa", "",    1, "Ga" },
+	{ "gla", "",    1, "Gaelic" },
+	{ "car", "",    1, "Galibi Carib" },
+	{ "lug", "",    1, "Ganda" },
+	{ "gay", "",    1, "Gayo" },
+	{ "gba", "",    1, "Gbaya" },
+	{ "gez", "",    1, "Ge'ez" },
+	{ "geo", "kat", 1, "Georgian" },
+	{ "ger", "deu", 1, "German" },
+	{ "nds", "",    1, "German, Low" },
+	{ "gmh", "",    1, "German, Middle High" },
+	{ "goh", "",    1, "German, Old High" },
+	{ "gem", "",    1, "Germanic languages" },
+	{ "kik", "",    1, "Gikuyu" },
+	{ "gil", "",    1, "Gilbertese" },
+	{ "gon", "",    1, "Gondi" },
+	{ "gor", "",    1, "Gorontalo" },
+	{ "got", "",    1, "Gothic" },
+	{ "grb", "",    1, "Grebo" },
+	{ "grc", "",    1, "Greek, Ancient" },
+	{ "gre", "ell", 1, "Greek, Modern" },
+	{ "kal", "",    1, "Greenlandic" },
+	{ "grn", "",    1, "Guarani" },
+	{ "guj", "",    1, "Gujarati" },
+	{ "gwi", "",    1, "Gwich'in" },
+	{ "hai", "",    1, "Haida" },
+	{ "hat", "",    1, "Haitian" },
+	{ "hat", "",    1, "Haitian Creole" },
+	{ "hau", "",    1, "Hausa" },
+	{ "haw", "",    1, "Hawaiian" },
+	{ "heb", "",    1, "Hebrew" },
+	{ "hil", "",    1, "Hiligaynon" },
+	{ "him", "",    1, "Himachali languages" },
+	{ "hin", "",    1, "Hindi" },
+	{ "hmo", "",    1, "Hiri Motu" },
+	{ "hit", "",    1, "Hittite" },
+	{ "hmn", "",    1, "Hmong" },
+	{ "hun", "",    1, "Hungarian" },
+	{ "hup", "",    1, "Hupa" },
+	{ "iba", "",    1, "Iban" },
+	{ "ice", "isl", 1, "Icelandic" },
+	{ "ido", "",    1, "Ido" },
+	{ "ibo", "",    1, "Igbo" },
+	{ "ijo", "",    1, "Ijo languages" },
+	{ "ilo", "",    1, "Iloko" },
+	{ "arc", "",    1, "Imperial Aramaic" },
+	{ "smn", "",    1, "Inari Sami" },
+	{ "inc", "",    1, "Indic languages" },
+	{ "ine", "",    1, "Indo-European languages" },
+	{ "ind", "",    1, "Indonesian" },
+	{ "inh", "",    1, "Ingush" },
+	{ "ina", "",    1, "Interlingua" },
+	{ "ile", "",    1, "Interlingue, Occidental" },
+	{ "iku", "",    1, "Inuktitut" },
+	{ "ipk", "",    1, "Inupiaq" },
+	{ "ira", "",    1, "Iranian languages" },
+	{ "mga", "",    1, "Irish, Middle" },
+	{ "sga", "",    1, "Irish, Old" },
+	{ "iro", "",    1, "Iroquoian languages" },
+	{ "ita", "",    1, "Italian" },
+	{ "jpn", "",    1, "Japanese" },
+	{ "jav", "",    1, "Javanese" },
+	{ "kac", "",    1, "Jingpho" },
+	{ "jrb", "",    1, "Judaeo-Arabic" },
+	{ "jpr", "",    1, "Judaeo-Persian" },
+	{ "kab", "",    1, "Kabyle" },
+	{ "kac", "",    1, "Kachin" },
+	{ "kal", "",    1, "Kalaallisut" },
+	{ "xal", "",    1, "Kalmyk" },
+	{ "kam", "",    1, "Kamba" },
+	{ "kan", "",    1, "Kannada" },
+	{ "kau", "",    1, "Kanuri" },
+	{ "pam", "",    1, "Kapampangan" },
+	{ "kaa", "",    1, "Kara-Kalpak" },
+	{ "krc", "",    1, "Karachay-Balkar" },
+	{ "krl", "",    1, "Karelian" },
+	{ "kar", "",    1, "Karen languages" },
+	{ "kas", "",    1, "Kashmiri" },
+	{ "csb", "",    1, "Kashubian" },
+	{ "kaw", "",    1, "Kawi" },
+	{ "kaz", "",    1, "Kazakh" },
+	{ "kha", "",    1, "Khasi" },
+	{ "khi", "",    1, "Khoisan languages" },
+	{ "kho", "",    1, "Khotanese" },
+	{ "kik", "",    1, "Kikuyu" },
+	{ "kmb", "",    1, "Kimbundu" },
+	{ "kin", "",    1, "Kinyarwanda" },
+	{ "kir", "",    1, "Kirghiz" },
+	{ "gil", "",    1, "Kiribati" },
+	{ "tlh", "",    1, "Klingon" },
+	{ "kom", "",    1, "Komi" },
+	{ "kon", "",    1, "Kongo" },
+	{ "kok", "",    1, "Konkani" },
+	{ "kor", "",    1, "Korean" },
+	{ "kos", "",    1, "Kosraean" },
+	{ "kpe", "",    1, "Kpelle" },
+	{ "kro", "",    1, "Kru languages" },
+	{ "kua", "",    1, "Kuanyama" },
+	{ "kum", "",    1, "Kumyk" },
+	{ "kur", "",    1, "Kurdish" },
+	{ "kru", "",    1, "Kurukh" },
+	{ "kut", "",    1, "Kutenai" },
+	{ "kua", "",    1, "Kwanyama" },
+	{ "kir", "",    1, "Kyrgyz" },
+	{ "lad", "",    1, "Ladino" },
+	{ "lah", "",    1, "Lahnda" },
+	{ "lam", "",    1, "Lamba" },
+	{ "day", "",    1, "Land Dayak languages" },
+	{ "lao", "",    1, "Lao" },
+	{ "lat", "",    1, "Latin" },
+	{ "lav", "",    1, "Latvian" },
+	{ "ast", "",    1, "Leonese" },
+	{ "ltz", "",    1, "Letzeburgesch" },
+	{ "lez", "",    1, "Lezghian" },
+	{ "lim", "",    1, "Limburgan" },
+	{ "lim", "",    1, "Limburger" },
+	{ "lim", "",    1, "Limburgish" },
+	{ "lin", "",    1, "Lingala" },
+	{ "lit", "",    1, "Lithuanian" },
+	{ "jbo", "",    1, "Lojban" },
+	{ "nds", "",    1, "Low German" },
+	{ "nds", "",    1, "Low Saxon" },
+	{ "dsb", "",    1, "Lower Sorbian" },
+	{ "loz", "",    1, "Lozi" },
+	{ "lub", "",    1, "Luba-Katanga" },
+	{ "lua", "",    1, "Luba-Lulua" },
+	{ "lui", "",    1, "Luiseno" },
+	{ "smj", "",    1, "Lule Sami" },
+	{ "lun", "",    1, "Lunda" },
+	{ "luo", "",    1, "Luo" },
+	{ "luo", "",    1, "Luo (Kenya and Tanzania)" },
+	{ "lus", "",    1, "Lushai" },
+	{ "ltz", "",    1, "Luxembourgish" },
+	{ "mas", "",    1, "Maasai" },
+	{ "rup", "",    1, "Macedo-Romanian" },
+	{ "mac", "mkd", 1, "Macedonian" },
+	{ "mad", "",    1, "Madurese" },
+	{ "mag", "",    1, "Magahi" },
+	{ "mai", "",    1, "Maithili" },
+	{ "mak", "",    1, "Makasar" },
+	{ "mlg", "",    1, "Malagasy" },
+	{ "may", "msa", 1, "Malay" },
+	{ "mal", "",    1, "Malayalam" },
+	{ "div", "",    1, "Maldivian" },
+	{ "mlt", "",    1, "Maltese" },
+	{ "mnc", "",    1, "Manchu" },
+	{ "mdr", "",    1, "Mandar" },
+	{ "man", "",    1, "Mandingo" },
+	{ "mni", "",    1, "Manipuri" },
+	{ "mno", "",    1, "Manobo languages" },
+	{ "glv", "",    1, "Manx" },
+	{ "mao", "mri", 1, "Maori" },
+	{ "arn", "",    1, "Mapuche" },
+	{ "arn", "",    1, "Mapudungun" },
+	{ "mar", "",    1, "Marathi" },
+	{ "chm", "",    1, "Mari" },
+	{ "mah", "",    1, "Marshallese" },
+	{ "mwr", "",    1, "Marwari" },
+	{ "myn", "",    1, "Mayan languages" },
+	{ "men", "",    1, "Mende" },
+	{ "mic", "",    1, "Mi'kmaq" },
+	{ "mic", "",    1, "Micmac" },
+	{ "dum", "",    1, "Middle Dutch" },
+	{ "enm", "",    1, "Middle English" },
+	{ "frm", "",    1, "Middle French" },
+	{ "gmh", "",    1, "Middle High German" },
+	{ "mga", "",    1, "Middle Irish" },
+	{ "pal", "",    1, "Middle Persian" },
+	{ "min", "",    1, "Minangkabau" },
+	{ "mwl", "",    1, "Mirandese" },
+	{ "gre", "ell", 1, "Modern Greek" },
+	{ "moh", "",    1, "Mohawk" },
+	{ "mdf", "",    1, "Moksha" },
+	{ "mkh", "",    1, "Mon-Khmer languages" },
+	{ "lol", "",    1, "Mongo" },
+	{ "mon", "",    1, "Mongolian" },
+	{ "mos", "",    1, "Mossi" },
+	{ "mul", "",    1, "Multiple languages" },
+	{ "mun", "",    1, "Munda languages" },
+	{ "nqo", "",    1, "N'Ko" },
+	{ "nah", "",    1, "Nahuatl" },
+	{ "nau", "",    1, "Nauruan" },
+	{ "nav", "",    1, "Navaho" },
+	{ "nav", "",    1, "Navajo" },
+	{ "ndo", "",    1, "Ndonga" },
+	{ "nap", "",    1, "Neapolitan" },
+	{ "new", "",    1, "Nepal Bhasa" },
+	{ "nep", "",    1, "Nepali" },
+	{ "new", "",    1, "Newari" },
+	{ "nia", "",    1, "Nias" },
+	{ "nic", "",    1, "Niger-Congo languages" },
+	{ "ssa", "",    1, "Nilo-Saharan languages" },
+	{ "niu", "",    1, "Niuean" },
+	{ "nog", "",    1, "Nogai" },
+	{ "non", "",    0, "Norse, Old" },
+	{ "nai", "",    1, "North American Indian languages" },
+	{ "frr", "",    1, "Northern Frisian" },
+	{ "nde", "",    1, "Northern Ndebele" },
+	{ "sme", "",    1, "Northern Sami" },
+	{ "nso", "",    1, "Northern Sotho" },
+	{ "nob", "",    1, "Norwegian Bokmaal" },
+	{ "nno", "",    1, "Norwegian Nynorsk" },
+	{ "zxx", "",    1, "Not linguistic content; not applicable" },
+	{ "nub", "",    1, "Nubian languages" },
+	{ "iii", "",    1, "Nuosu" },
+	{ "nym", "",    1, "Nyamwezi" },
+	{ "nya", "",    1, "Nyanja" },
+	{ "nyn", "",    1, "Nyankole" },
+	{ "nyr", "",    1, "Nyoro" },
+	{ "nzi", "",    1, "Nzima" },
+	{ "oci", "",    1, "Occitan" },
+	{ "pro", "",    0, "Occitan, Old" },
+	{ "arc", "",    1, "Official Aramaic" },
+	{ "xal", "",    1, "Oirat" },
+	{ "oji", "",    1, "Ojibwa" },
+	{ "chu", "",    1, "Old Bulgarian" },
+	{ "chu", "",    1, "Old Church Slavonic" },
+	{ "ang", "",    1, "Old English" },
+	{ "fro", "",    1, "Old French" },
+	{ "goh", "",    1, "Old High German" },
+	{ "sga", "",    1, "Old Irish" },
+	{ "nwc", "",    1, "Old Newari" },
+	{ "non", "",    1, "Old Norse" },
+	{ "pro", "",    1, "Old Occitan" },
+	{ "peo", "",    1, "Old Persian" },
+	{ "pro", "",    1, "Old Provencal" },
+	{ "chu", "",    1, "Old Slavonic" },
+	{ "ori", "",    1, "Oriya" },
+	{ "orm", "",    1, "Oromo" },
+	{ "osa", "",    1, "Osage" },
+	{ "oss", "",    1, "Ossetian" },
+	{ "oss", "",    1, "Ossetic" },
+	{ "oto", "",    1, "Otomian languages" },
+	{ "ota", "",    1, "Ottoman Turkish" },
+	{ "pal", "",    1, "Pahlavi" },
+	{ "pau", "",    1, "Palauan" },
+	{ "pli", "",    1, "Pali" },
+	{ "pam", "",    1, "Pampanga" },
+	{ "pag", "",    1, "Pangasinan" },
+	{ "pan", "",    1, "Panjabi" },
+	{ "pap", "",    1, "Papiamento" },
+	{ "paa", "",    1, "Papuan languages" },
+	{ "pus", "",    1, "Pashto" },
+	{ "pus", "",    1, "Pashto language" },
+	{ "nso", "",    1, "Pedi" },
+	{ "per", "fas", 1, "Persian" },
+	{ "pal", "",    0, "Persian, Middle" },
+	{ "peo", "",    0, "Persian, Old" },
+	{ "phi", "",    1, "Philippine languages" },
+	{ "phn", "",    1, "Phoenician" },
+	{ "fil", "",    0, "Pilipino" },
+	{ "pon", "",    1, "Pohnpeian" },
+	{ "pol", "",    1, "Polish" },
+	{ "por", "",    1, "Portuguese" },
+	{ "pra", "",    1, "Prakit" },
+	{ "pro", "",    0, "Provencal, Old" },
+	{ "pan", "",    1, "Punjabi" },
+	{ "que", "",    1, "Quechua" },
+	{ "raj", "",    1, "Rajasthani" },
+	{ "rap", "",    1, "Rapanui" },
+	{ "rar", "",    1, "Rarotongan" },
+	{ "roa", "",    1, "Romance languages" },
+	{ "rum", "ron", 1, "Romanian" },
+	{ "roh", "",    1, "Romansh" },	
+	{ "rom", "",    1, "Romany" },
+	{ "run", "",    1, "Rundi" },
+	{ "rus", "",    1, "Russian" },
+	{ "kho", "",    1, "Sakan" },
+	{ "sal", "",    1, "Salishan languages" },
+	{ "sam", "",    1, "Samaritan Aramaic" },
+	{ "smi", "",    1, "Sami languages" },
+	{ "smo", "",    1, "Samoan" },
+	{ "sad", "",    1, "Sandawe" },
+	{ "sag", "",    1, "Sango" },
+	{ "san", "",    1, "Sanskrit" },
+	{ "sat", "",    1, "Santali" },
+	{ "srd", "",    1, "Sardinian" },
+	{ "sas", "",    1, "Sasak" },
+	{ "nds", "",    1, "Saxon, Low" },
+	{ "sco", "",    1, "Scots" },
+	{ "gla", "",    1, "Scottish Gaelic" },
+	{ "sel", "",    1, "Selkup" },
+	{ "sem", "",    1, "Semitic languages" },
+	{ "nso", "",    1, "Sepedi" },
+	{ "srp", "",    1, "Serbian" },
+	{ "srr", "",    1, "Serer" },
+	{ "shn", "",    1, "Shan" },
+	{ "sna", "",    1, "Shona" },
+	{ "iii", "",    1, "Sichuan Yi" },
+	{ "scn", "",    1, "Sicilian" },
+	{ "sid", "",    1, "Sidamo" },
+	{ "sgn", "",    1, "Sign languages" },
+	{ "bla", "",    1, "Siksika" },
+	{ "snd", "",    1, "Sindhi" },
+	{ "sin", "",    1, "Sinhala" },
+	{ "sin", "",    1, "Sinhalese" },
+	{ "sit", "",    1, "Sino-Tibetan languages" },
+	{ "sio", "",    1, "Siouan languages" },
+	{ "sms", "",    1, "Skolt Sami" },
+	{ "den", "",    1, "Slave (Athapascan)" },
+	{ "sla", "",    1, "Slavic languages" },
+	{ "slo", "slk", 1, "Slovak" },
+	{ "slv", "",    1, "Slovenian" },
+	{ "sog", "",    1, "Sogdian" },
+	{ "som", "",    1, "Somali" },
+	{ "son", "",    1, "Songhay languages" },
+	{ "snk", "",    1, "Soninke" },
+	{ "wen", "",    1, "Sorbian languages" },
+	{ "dsb", "",    1, "Sorbian, Lower" },
+	{ "hsb", "",    1, "Sorbian, Upper" },
+	{ "sai", "",    1, "South American Indian languages" },
+	{ "alt", "",    1, "Southern Altai" },
+	{ "nbl", "",    1, "Southern Ndebele" },
+	{ "sma", "",    1, "Southern Sami" },
+	{ "sot", "",    1, "Southern Sotho" },
+	{ "spa", "",    1, "Spanish" },
+	{ "srn", "",    1, "Sranan Tongo" },
+	{ "zgh", "",    1, "Standard Moroccan Tamazight" },
+	{ "suk", "",    1, "Sukuma" },
+	{ "sux", "",    1, "Sumerian" },
+	{ "sun", "",    1, "Sundanese" },
+	{ "sus", "",    1, "Susu" },
+	{ "swa", "",    1, "Swahili" },
+	{ "ssw", "",    1, "Swati" },
+	{ "swe", "",    1, "Swedish" },
+	{ "gsw", "",    1, "Swiss German" },
+	{ "syr", "",    1, "Syriac" },
+	{ "tgl", "",    1, "Tagalog" },
+	{ "tah", "",    1, "Tahitian" },
+	{ "tai", "",    1, "Tai languages" },
+	{ "tgk", "",    1, "Tajik" },
+	{ "tmh", "",    1, "Tamashek" },
+	{ "tam", "",    1, "Tamil" },
+	{ "tat", "",    1, "Tatar" },
+	{ "tel", "",    1, "Telugu" },
+	{ "ter", "",    1, "Tereno" },
+	{ "tet", "",    1, "Tetum" },
+	{ "tha", "",    1, "Thai" },
+	{ "tib", "bod", 1, "Tibetan" },
+	{ "tig", "",    1, "Tigre" },
+	{ "tir", "",    1, "Tigrinya" },
+	{ "tem", "",    1, "Time" },
+	{ "tiv", "",    1, "Tiv" },
+	{ "tli", "",    1, "Tlingit" },
+	{ "tpi", "",    1, "Tok Pisin" },
+	{ "tkl", "",    1, "Tokelau" },
+	{ "tog", "",    1, "Tonga (Nyasa)" },
+	{ "ton", "",    1, "Tonga (Tonga Islands)" },
+	{ "tsi", "",    1, "Tsimshian" },
+	{ "tso", "",    1, "Tsonga" },
+	{ "tsn", "",    1, "Tswana" },
+	{ "tum", "",    1, "Tumbuka" },
+	{ "tup", "",    1, "Tupian languages" },
+	{ "tur", "",    1, "Turkish" },
+	{ "ota", "",    1, "Turkish, Ottoman" },
+	{ "tuk", "",    1, "Turkmen" },
+	{ "tvl", "",    1, "Tuvalu" },
+	{ "tyv", "",    1, "Tuvinian" },
+	{ "twi", "",    1, "Twi" },
+	{ "udm", "",    1, "Udmurt" },
+	{ "uga", "",    1, "Ugaritic" },
+	{ "uig", "",    1, "Uighur" },
+	{ "ukr", "",    1, "Ukranian" },
+	{ "umb", "",    1, "Umbundu" },
+	{ "mis", "",    1, "Uncoded languages" },
+	{ "und", "",    1, "Undetermined language" },
+	{ "hsb", "",    1, "Upper Sorbian" },
+	{ "urd", "",    1, "Urdu" },
+	{ "uig", "",    1, "Uyghur" },
+	{ "uzb", "",    1, "Uzbek" },
+	{ "vai", "",    1, "Vai" },
+	{ "cat", "",    1, "Valencian" },
+	{ "ven", "",    1, "Venda" },
+	{ "vie", "",    1, "Vietnamese" },
+	{ "vol", "",    1, "Volapuk" },
+	{ "vot", "",    1, "Voltic" },
+	{ "wak", "",    1, "Wakashan languages" },
+	{ "wln", "",    1, "Walloon" },
+	{ "war", "",    1, "Waray-Waray" },
+	{ "was", "",    1, "Washo" },
+	{ "wel", "cym", 1, "Welsh" },
+	{ "fry", "",    1, "Western Frisian" },
+	{ "wal", "",    1, "Wolaitta" },
+	{ "wal", "",    1, "Wolaytta" },
+	{ "wol", "",    1, "Wolof" },
+	{ "xho", "",    1, "Xhosa" },
+	{ "sah", "",    1, "Yakut" },
+	{ "yao", "",    1, "Yao" },
+	{ "yap", "",    1, "Yapese" },
+	{ "yid", "",    1, "Yidish" },
+	{ "yor", "",    1, "Yoruba" },
+	{ "ypk", "",    1, "Yupik languages" },
+	{ "znd", "",    1, "Zande languages" },
+	{ "zap", "",    1, "Zapotec" },
+	{ "zza", "",    1, "Zaza" },
+	{ "zza", "",    1, "Zazaki" },
+	{ "zen", "",    1, "Zenaga" },
+	{ "zha", "",    1, "Zhuang" },
+	{ "zul", "",    1, "Zulu" },
+	{ "zun", "",    1, "Zuni" },
+};
+static int niso639_2= sizeof( iso639_2 ) / sizeof( iso639_2[0] );
+
+char *
+iso639_2_from_code( char *code )
+{
+	int i;
+	for ( i=0; i<niso639_2; ++i ) {
+		if ( !iso639_2[i].main ) continue;
+		if ( !strcasecmp( iso639_2[i].code1, code ) )
+			return iso639_2[i].language;
+		if ( iso639_2[i].code2[0]!='\0' && !strcasecmp( iso639_2[i].code2, code ) )
+			return iso639_2[i].language;
+	}
+	return NULL;
+}
+
+char *
+iso639_2_from_language( char *lang )
+{
+	int i, n;
+	for ( i=0; i<niso639_2; ++i ) {
+		n = strcasecmp( iso639_2[i].language, lang );
+		if ( n==0 ) return iso639_2[i].code1;
+		if ( n > 0 ) return NULL;
+	}
+	return NULL;
+}
+
+#ifdef TEST
+
+#include <stdio.h>
+#include <stdlib.h>
+
+static int
+check_alphabetical( void )
+{
+	char *l1, *l2;
+	int i, ret = 1;
+	l1 = iso639_2[0].language;
+	for ( i=0; i<niso639_2-1; ++i ) {
+		l2 = iso639_2[i+1].language;
+		if ( strcasecmp( l1, l2 ) >= 0 ) {
+			fprintf( stderr, "Swap '%s' and '%s'\n", l1, l2 );
+			ret = 0;
+		}
+		l1 = l2;
+	}
+	return ret;
+}
+
+int
+main( int argc, char *argv[] )
+{
+	int ok;
+	ok = check_alphabetical();
+	return EXIT_SUCCESS;
+}
+
+#endif
diff --git a/lib/iso639_2.h b/lib/iso639_2.h
new file mode 100644
index 0000000..a8f20d5
--- /dev/null
+++ b/lib/iso639_2.h
@@ -0,0 +1,10 @@
+/*
+ * iso639-2 language codes
+ */
+#ifndef ISO639_2_H
+#define ISO639_2_H
+
+extern char * iso639_2_from_code( char *code );
+extern char * iso639_2_from_language( char *lang );
+
+#endif
diff --git a/lib/latex.c b/lib/latex.c
index 702376e..d6a193e 100644
--- a/lib/latex.c
+++ b/lib/latex.c
@@ -3,9 +3,9 @@
  *
  * convert between latex special chars and unicode
  *
- * Copyright (c) Chris Putnam 2004-2010
+ * Copyright (c) Chris Putnam 2004-2013
  *
- * Source code released under the GPL
+ * Source code released under the GPL version 2
  *
  */
 #include <stdio.h>
@@ -19,17 +19,19 @@ struct latex_chars {
 
 static struct latex_chars latex_chars[] = { 
 
-   {  35, "\\#",     "",   ""        }, /* Number/pound/hash sign */
-   {  36, "\\$",     "",   ""        }, /* Dollar Sign */
-   {  37, "\\%",     "",   ""        }, /* Percent Sign */
-   {  38, "\\&",     "",   ""        }, /* Ampersand */
+   {  35, "\\#",     "",   ""        },    /* Number/pound/hash sign */
+   {  36, "\\$",     "",   ""        },    /* Dollar Sign */
+   {  37, "\\%",     "",   ""        },    /* Percent Sign */
+   {  38, "\\&",     "",   ""        },    /* Ampersand */
    {  92, "{\\backslash}", "\\backslash", ""   }, /* Backslash */
    { 123, "\\{", "{\\textbraceleft}", "\\textbraceleft" }, /* Left Curly Bracket */
    { 125, "\\}", "{\\textbraceright}", "\\textbraceright" }, /* Right Curly Bracket */
-   {  95, "\\_",     "", ""        }, /* Underscore alone indicates subscript */
+   {  95, "\\_",     "", ""        },      /* Underscore alone indicates subscript */
    { 176, "{\\textdegree}", "\\textdegree", "^\\circ" }, /* Degree sign */
-   {  32, "~",       "\\ ", ""        }, /* Tilde is a sticky space */
-   { 126, "{\\textasciitilde}", "\\textasciitilde", "\\~{}" }, /* How to get a tilde in latex */
+/* fix sticky spaces in bibtex token cleaning--allows tokens to be parsed properly */
+/*   {  32, "~",       "\\ ", ""        }, */   /* "sticky" space */
+   {  32, "\\ ",     "",   ""           },      /* escaping the space is used to avoid extra space after periods */
+   { 126, "{\\textasciitilde}", "\\textasciitilde", "\\~{}" }, /* Tilde in latex */
                                  /* This is a cheat, should use "\verb" */
                                  /* Need same for ^ character */
 
@@ -39,7 +41,11 @@ static struct latex_chars latex_chars[] = {
    { 194, "{\\^A}",  "\\^{A}",  "\\^A"  }, /*               with circumflex */
    { 195, "{\\~A}",  "\\~{A}",  "\\~A"  }, /*               with tilde */
    { 196, "{\\\"A}", "\\\"{A}", "\\\"A" }, /*               with diuresis */
-   { 197, "{\\AA}",  "",        ""      }, /*               with ring above */
+   { 197, "{\\AA}",  "{\\r{A}}","\\r{A}"}, /*               with ring above */
+   { 256, "{\\={A}}","\\={A}",  "\\=A"  }, /*               with macron */
+   { 258, "{\\u{A}}","\\u{A}",  "\\u A" }, /*               with breve */
+   { 260, "{\\k{A}}","\\k{A}",  "\\k A" }, /*               with ogonek */
+   { 461, "{\\v{A}}","\\v{A}",  "\\v A" }, /*               with caron */
 
                                            /* Latin Small a */
    { 224, "{\\`a}",  "\\`{a}",  "\\`a"  }, /*               with grave */
@@ -47,49 +53,155 @@ static struct latex_chars latex_chars[] = {
    { 226, "{\\^a}",  "\\^{a}",  "\\^a"  }, /*               with circumflex */
    { 227, "{\\~a}",  "\\~{a}",  "\\~a"  }, /*               with tilde */
    { 228, "{\\\"a}", "\\\"{a}", "\\\"a" }, /*               with diuresis */
-   { 229, "{\\aa}",  "",        ""      }, /*               with ring above */
+   { 229, "{\\aa}",  "{\\r{a}}","\\r{a}"}, /*               with ring above */
+   { 257, "{\\={a}}","\\={a}",  "\\=a"  }, /*               with macron */
+   { 259, "{\\u{a}}","\\u{a}",  "\\u a" }, /*               with breve */
+   { 261, "{\\k{a}}","\\k{a}",  "\\k a" }, /*               with ogonek */
+   { 462, "{\\v{a}}","\\v{a}",  "\\v a" }, /*               with caron */
 
    { 198, "{\\AE}",  "\\AE",    ""      }, /* Latin Capital AE */
    { 230, "{\\ae}",  "\\ae",    ""      }, /* Latin Small ae */
 
-   { 199, "{\\c{C}}","\\c{C}",  ""      }, /* Latin Capital C with cedilla */
-   { 231, "{\\c{c}}","\\c{c}",  ""      }, /* Latin small c with cedilla*/
-   { 262, "{\\'C}",  "\\'{C}",  "\\'C"  }, /* Latin Capital C with acute */
-   { 263, "{\\'c}",  "\\'{c}",  "\\'c"  }, /* Latin small c with acute */
+                                           /* Latin Capital C */
+   { 199, "{\\c{C}}","\\c{C}",  ""      }, /*               with cedilla */
+   { 262, "{\\'{C}}","\\'{C}",  "\\'C"  }, /*               with acute */
+   { 264, "{\\^{C}}","\\^{C}",  "\\^C"  }, /*               with circumflex */
+   { 266, "{\\.{C}}","\\.{C}",  "\\.C"  }, /*               with dot above */
+   { 268, "{\\v{C}}","\\v{C}",  "\\v C" }, /*               with caron (hacek) */
+
+                                           /* Latin Small c */
+   { 231, "{\\c{c}}","\\c{c}",  ""      }, /*               with cedilla*/
+   { 263, "{\\'{c}}","\\'{c}",  "\\'c"  }, /*               with acute */
+   { 265, "{\\^{c}}","\\^{c}",  "\\^c"  }, /*               with circumflex */
+   { 267, "{\\.{c}}","\\.{c}",  "\\.c"  }, /*               with dot above */
+   { 269, "{\\v{c}}","\\v{c}",  "\\v c" }, /*               with caron (hacek) */
+
+                                           /* Latin Capital D */
+   { 270, "{\\v{D}}","\\v{D}",  "\\v D" }, /*               with caron */
+   { 272, "{\\DJ}",  "",        ""      }, /*               with stroke */
+
+                                           /* Latin Small d */
+   { 271, "{\\v{d}}","\\v{d}",  "\\v d" }, /*               with caron */
+   { 273, "{\\dj}",  "",        ""      }, /*               with stroke */
 
                                            /* Latin Capital E */
    { 200, "{\\`E}",  "\\`{E}",  "\\`E"  }, /*               with grave */
    { 201, "{\\'E}",  "\\'{E}",  "\\'E"  }, /*               with acute */
    { 202, "{\\^E}",  "\\^{E}",  "\\^E"  }, /*               with circumflex */
    { 203, "{\\\"E}", "\\\"{E}", "\\\"E" }, /*               with diuresis */
+   { 274, "{\\={E}}","\\={E}",  "\\=E"  }, /*               with macron */
+   { 276, "{\\u{E}}","\\u{E}",  "\\u E" }, /*               with breve */
+   { 278, "{\\.{E}}","\\.{E}",  "\\.E"  }, /*               with dot above */
+   { 280, "{\\k{E}}","\\k{E}",  "\\k E" }, /*               with ogonek */
+   { 282, "{\\v{E}}","\\v{E}",  "\\v E" }, /*               with caron */
  
                                            /* Latin Small e */
    { 232, "{\\`e}",  "\\`{e}",  "\\`e"  }, /*               with grave */
    { 233, "{\\'e}",  "\\'{e}",  "\\'e"  }, /*               with acute */
    { 234, "{\\^e}",  "\\^{e}",  "\\^e"  }, /*               with circumflex */
    { 235, "{\\\"e}", "\\\"{e}", "\\\"e" }, /*               with diuresis */
+   { 275, "{\\={e}}","\\={e}",  "\\=e"  }, /*               with macron */
+   { 277, "{\\u{e}}","\\u{e}",  "\\u e" }, /*               with breve */
+   { 279, "{\\.{e}}","\\.{e}",  "\\.e"  }, /*               with dot above */
+   { 281, "{\\k{e}}","\\k{e}",  "\\k e" }, /*               with ogonek */
+   { 283, "{\\v{e}}","\\v{e}",  "\\v e" }, /*               with caron */
+
+                                           /* Latin Capital G */
+   { 284, "{\\^{G}}","\\^{G}",  "\\^G"  }, /*               with circumflex */
+   { 286, "{\\u{G}}","\\u{G}",  "\\u G" }, /*               with breve */
+   { 288, "{\\.{G}}","\\.{G}",  "\\.G"  }, /*               with dot above */
+   { 290, "{\\c{G}}","\\c{G}",  "\\c G" }, /*               with cedilla */
+   { 486, "{\\v{G}}","\\v{G}",  "\\v G" }, /*               with caron */
+   { 500, "{\\'{G}}","\\'{G}",  "\\'G"  }, /*               with acute */
+
+                                           /* Latin Small g */
+   { 285, "{\\^{g}}","\\^{g}",  "\\^g"  }, /*               with circumflex */
+   { 287, "{\\u{g}}","\\u{g}",  "\\u g" }, /*               with breve */
+   { 289, "{\\.{g}}","\\.{g}",  "\\.g"  }, /*               with dot above */
+   { 291, "{\\c{g}}","\\c{g}",  "\\c g" }, /*               with cedilla */
+   { 487, "{\\v{g}}","\\v{g}",  "\\v g" }, /*               with caron */
+   { 501, "{\\'{g}}","\\'{g}",  "\\'g"  }, /*               with acute */
+
+                                           /* Latin Capital H */
+   { 292, "{\\^{H}}","\\^{H}",  "\\^H"  }, /*               with circumflex */
+/* { 294, "",        "",        ""      },*//*              with stroke */
+
+                                           /* Latin Capital h */
+   { 293, "{\\^{h}}","\\^{h}",  "\\^h"  }, /*               with circumflex */
+/* { 295, "",        "",        ""      },*//*              with stroke */
  
-                                           /* Latin Capital i */
+                                           /* Latin Capital I */
    { 204, "{\\`I}",  "\\`{I}",  "\\`I"  }, /*               with grave */
    { 205, "{\\'I}",  "\\'{I}",  "\\'I"  }, /*               with acute */
    { 206, "{\\^I}",  "\\^{I}",  "\\^I"  }, /*               with circumflex */
    { 207, "{\\\"I}", "\\\"{I}", "\\\"I" }, /*               with diuresis */
+   { 296, "{\\~{I}}","\\~{I}",  "\\~I"  }, /*               with tilde */
+   { 298, "{\\={I}}","\\={I}",  "\\=I"  }, /*               with macron */
+   { 300, "{\\u{I}}","\\u{I}",  "\\u I" }, /*               with breve */
+   { 302, "{\\k{I}}","\\k{I}",  "\\k I" }, /*               with ogonek */
+   { 304, "{\\.{I}}","\\.{I}",  "\\. I" }, /*               with dot above */
+   { 463, "{\\v{I}}","\\v{I}",  "\\v I" }, /*               with caron */
 
                                            /* Latin Small i */
    { 236, "{\\`i}",  "\\`{i}",  "\\`i"  }, /*               with grave */
    { 237, "{\\'i}",  "\\'{i}",  "\\'i"  }, /*               with acute */
    { 238, "{\\^i}",  "\\^{i}",  "\\^i"  }, /*               with circumflex */
    { 239, "{\\\"i}", "\\\"{i}", "\\\"i" }, /*               with diuresis */
-                                           /* Latex \i has no dot on "i"*/
    { 236, "{\\`\\i}",  "\\`{\\i}",  "\\`\\i"  }, /*         with grave */
    { 237, "{\\'\\i}",  "\\'{\\i}",  "\\'\\i"  }, /*         with acute */
    { 238, "{\\^\\i}",  "\\^{\\i}",  "\\^\\i"  }, /*         with circumflex */
    { 239, "{\\\"\\i}", "\\\"{\\i}", "\\\"\\i" }, /*         with diuresis */
-
-   { 209, "{\\~N}",  "\\~{N}",  "\\~N"  }, /* Latin Capital N with tilde */
-   { 327, "{\\vN}",  "\\v{N}",  "\\vN"  }, /* Latin Capital N with caron */
-   { 241, "{\\~n}",  "\\~{n}",  "\\~n"  }, /* Latin Small n with tilde */
-   { 328, "{\\vn}",  "\\v{n}",  "\\vn"  }, /* Latin Small n with caron */
+   { 297, "{\\~{\\i}}","\\~{\\i}",  "\\~\\i{}"}, /*         with tilde */
+   { 299, "{\\={\\i}}", "\\={\\i}", "\\=\\i{}"}, /*         with macron */
+   { 301, "{\\u{\\i}}","\\u{\\i}",  "\\u\\i{}"}, /*         with breve */
+   { 303, "{\\k{i}}","\\k{i}",  "\\k i" }, /*               with ogonek */
+                                           /* Latex \i has no dot on "i"*/
+   { 305, "{\\i}",     "\\i{}",     ""        }, /*         without dot above */
+   { 464, "{\\v \\i{}}", "\\v \\i{}", ""      }, /*         with caron */
+
+/*   { 306, "",  "",    ""      },*/ /* Latin Capital IJ */
+/*   { 307, ""  "",    ""       },*/ /* Latin Small ij */
+
+                                           /* Latin Capital J */
+   { 308, "{\\^{J}}","\\^{J}",  "\\^J"  }, /*                with circumflex */
+
+                                           /* Latin Small j */
+   { 309, "{\\^{j}}","\\^{j}",  "\\^j"  }, /*                with circumflex */
+
+                                           /* Latin Capital K */
+   { 310, "{\\c{K}}","\\c{K}",  "\\c K" }, /*               with cedilla */
+   { 488, "{\\v{K}}","\\v{K}",  "\\v K" }, /*               with caron */
+
+                                           /* Latin Small k */
+   { 311, "{\\c{k}}","\\c{k}",  "\\c k" }, /*               with cedilla */
+   { 489, "{\\v{k}}","\\v{k}",  "\\v k" }, /*               with caron */
+
+                                           /* Latin Capital L */
+   { 313, "{\\'{L}}","\\'{L}",  "\\'L"  }, /*               with acute */
+   { 315, "{\\c{L}}","\\c{L}",  "\\c L" }, /*               with cedilla */
+   { 317, "{\\v{L}}","\\v{l}",  "\\v L" }, /*               with caron */
+   { 319, "{L\\hspace{-0.35em}$\\cdot$}","L\\hspace{-0.35em}$\\cdot$", "" }, /*               with middle dot */
+   { 321, "{\\L}",   "{\\L{}}", "\\L{}" }, /*               with stroke */
+
+                                           /* Latin Small l */
+   { 314, "{\\'{l}}","\\'{l}",  "\\'l"  }, /*               with acute */
+   { 316, "{\\c{l}}","\\c{l}",  "\\c l" }, /*               with cedilla */
+   { 318, "{\\v{l}}","\\v{l}",  "\\v l" }, /*               with caron */
+   { 320, "{l$\\cdot$}","l$\\cdot$", "" }, /*               with middle dot */
+   { 322, "{\\l}",   "{\\l{}}", "\\l{}" }, /*               with stroke */
+
+                                           /* Latin Capital N */
+   { 209, "{\\~{N}}","\\~{N}",  "\\~N"  }, /*               with tilde */
+   { 323, "{\\'{N}}","\\'{N}",  "\\'N"  }, /*               with acute */
+   { 325, "{\\c{N}}","\\c{N}",  "\\c N" }, /*               with cedilla */
+   { 327, "{\\v{N}}","\\v{N}",  "\\v N" }, /*               with caron */
+
+                                           /* Latin Small n */
+   { 241, "{\\~{n}}","\\~{n}",  "\\~n"  }, /*               with tilde */
+   { 324, "{\\'{n}}","\\'{n}",  "\\'n"  }, /*               with acute */
+   { 326, "{\\c{n}}","\\c{n}",  "\\c N" }, /*               with cedilla */
+   { 328, "{\\v{n}}","\\v{n}",  "\\v n" }, /*               with caron */
+   { 329, "\n",      "",        ""      }, /*               preceeded by apostrophe */
  
                                            /* Latin Capital O */
    { 210, "{\\`O}",  "\\`{O}",  "\\`O"  }, /*               with grave */
@@ -98,6 +210,11 @@ static struct latex_chars latex_chars[] = {
    { 213, "{\\~O}",  "\\~{O}",  "\\~O"  }, /*               with tilde */
    { 214, "{\\\"O}", "\\\"{O}", "\\\"O" }, /*               with diaeresis */
    { 216, "{\\O}",   "\\O",     ""      }, /*               with stroke */
+   { 332, "{\\={O}}", "\\={O}", "\\=O"  }, /*               with macron */
+   { 334, "{\\u{O}}", "\\u{O}", "\\u O" }, /*               with breve */
+   { 336, "{\\H{O}}", "\\H{O}", "\\H O" }, /*               with double acute */
+   { 465, "{\\v{O}}", "\\v{O}", "\\v O" }, /*               with caron */
+   { 490, "{\\k{O}}", "\\k{O}", "\\k O" }, /*               with ogonek */
 
                                            /* Latin Small o */
    { 242, "{\\`o}",  "\\`{o}",  "\\`o"  }, /*               with grave */
@@ -106,15 +223,46 @@ static struct latex_chars latex_chars[] = {
    { 245, "{\\~o}",  "\\~{o}",  "\\~o"  }, /*               with tilde */
    { 246, "{\\\"o}", "\\\"{o}", "\\\"o" }, /*               with diaeresis */
    { 248, "{\\o}",   "\\o",     ""      }, /*               with stroke */
+   { 333, "{\\={o}}", "\\={o}", "\\=o"  }, /*               with macron */
+   { 335, "{\\u{o}}", "\\u{o}", "\\u o" }, /*               with breve */
+   { 337, "{\\H{o}}", "\\H{o}", "\\H o" }, /*               with double acute */
+   { 466, "{\\v{o}}", "\\v{o}", "\\v o" }, /*               with caron */
+   { 491, "{\\k{o}}", "\\k{o}", "\\k o" }, /*               with ogonek */
 
    { 338, "{\\OE}",  "\\OE",    ""      }, /* Latin Capital OE */
    { 339, "{\\oe}",  "\\oe",    ""      }, /* Latin Small oe */
 
-   { 341, "{\\vR}",  "\\v{R}",  "\\vR"  }, /* Latin Capital R with caron */
-   { 342, "{\\vr}",  "\\v{r}",  "\\vr"  }, /* Latin Small r with caron */
-
-   { 352, "{\\vS}",  "\\v{S}",  "\\vS"  }, /* Latin Capital S with caron */
-   { 353, "{\\vs}",  "\\v{s}",  "\\vs"  }, /* Latin Small s with caron */
+                                           /* Latin Capital R */
+   { 340, "{\\'{R}}", "\\'{R}", "\\'R"  }, /*                 with acute */
+   { 342, "{\\c{R}}", "\\c{R}", "\\c R" }, /*                 with cedilla */
+   { 344, "{\\v{R}}", "\\v{R}", "\\v R" }, /*                 with caron */
+ 
+                                           /* Latin Small r */
+   { 341, "{\\'{r}}", "\\'{r}", "\\'r"  }, /*               with acute */
+   { 343, "{\\c{r}}", "\\c{r}", "\\c r" }, /*               with cedilla */
+   { 345, "{\\v{r}}", "\\v{r}", "\\v r" }, /*               with caron */
+
+                                           /* Latin Capital S */
+   { 346, "{\\'{S}}", "\\'{S}", "\\'S"  }, /*               with acute */
+   { 348, "{\\^{S}}", "\\^{S}", "\\^S"  }, /*               with circumflex */
+   { 350, "{\\c{S}}", "\\c{S}", "\\c S" }, /*               with cedilla */
+   { 352, "{\\v{S}}", "\\v{S}", "\\v S" }, /*               with caron */
+
+                                           /* Latin Small s */
+   { 347, "{\\'{s}}","\\'{s}",  "\\'s"  }, /*               with acute */
+   { 349, "{\\^{s}}","\\^{s}",  "\\^s"  }, /*               with circumflex */
+   { 351, "{\\c{s}}","\\c{s}",  "\\c s" }, /*               with cedilla */
+   { 353, "{\\v{s}}","\\v{s}",  "\\v s" }, /*               with caron */
+
+                                           /* Latin Capital T */
+   { 354, "{\\c{T}}", "\\c{T}", ""      }, /*               with cedilla */
+   { 356, "{\\v{T}}", "\\v{T}", ""      }, /*               with caron */
+/* { 358, "",         "",       ""      },*//*               with stroke */
+
+                                           /* Latin Small t */
+   { 355, "{\\c{t}}", "\\c{t}", ""      }, /*               with cedilla */
+   { 357, "{\\v{t}}", "\\v{t}", ""      }, /*               with caron */
+/* { 359, "",         "",       ""      },*//*               with stroke */
 
    { 223, "{\\ss}",  "\\ss",    ""      }, /* German sz ligature, "sharp s" */
 
@@ -123,24 +271,53 @@ static struct latex_chars latex_chars[] = {
    { 218, "{\\'U}",  "\\'{U}",  "\\'U"  }, /*               with acute */
    { 219, "{\\^U}",  "\\^{U}",  "\\^U"  }, /*               with circumflex */
    { 220, "{\\\"U}", "\\\"{U}", "\\\"U" }, /*               with diaeresis */
+   { 360, "{\\~{U}}","\\~{U}",  "\\~U"  }, /*               with tilde */
+   { 362, "{\\={U}}","\\={U}",  "\\=U"  }, /*               with macron */
+   { 364, "{\\u{U}}","\\u{U}",  "\\u U" }, /*               with breve */
+   { 366, "{\\r{U}}","\\r{U}",  "\\r U" }, /*               with ring above */
+   { 368, "{\\H{U}}","\\H{U}",  "\\H U" }, /*               with double acute */
+   { 370, "{\\k{U}}","\\k{U}",  "\\k U" }, /*               with ogonek */
+   { 467, "{\\v{U}}","\\v{U}",  "\\v U" }, /*               with caron */
 
                                            /* Latin Small u */
-   { 249, "{\\`u}",  "\\`{u}", "\\`u"   }, /*               with grave */
-   { 250, "{\\'u}",  "\\'{u}", "\\'u"   }, /*               with acute */
-   { 251, "{\\^u}",  "\\^{u}", "\\^u"   }, /*               with circumflex */
+   { 249, "{\\`u}",  "\\`{u}",  "\\`u"  }, /*               with grave */
+   { 250, "{\\'u}",  "\\'{u}",  "\\'u"  }, /*               with acute */
+   { 251, "{\\^u}",  "\\^{u}",  "\\^u"  }, /*               with circumflex */
    { 252, "{\\\"u}", "\\\"{u}", "\\\"u" }, /*               with diaeresis */
-
-				/* Latin Capital Y */
-   { 221, "{\\'Y}",  "\\'{Y}", "\\'Y"   }, /*               with acute */
-   { 376, "{\\\"Y}", "\\\"{Y}", "\\\"Y" }, /*               with diaeresis */
-
-				/* Latin Small y */
+   { 361, "{\\~{u}}","\\~{u}",  ""      }, /*               with tilde */
+   { 363, "{\\={u}}","\\={u}",  "\\=u"  }, /*               with macron */
+   { 365, "{\\u{u}}","\\u{u}",  "\\u u" }, /*               with breve */
+   { 367, "{\\r{u}}","\\r{u}",  "\\r u" }, /*               with ring above */
+   { 369, "{\\H{u}}","\\H{u}",  "\\H u" }, /*               with double acute */
+   { 371, "{\\k{u}}","\\k{u}",  "\\k u" }, /*               with ogonek */
+   { 468, "{\\v{u}}","\\v{u}",  "\\v u" }, /*               with caron */
+
+                                           /* Latin Capital W */
+   { 372, "{\\^{W}}", "\\^{W}", "\\^W"  }, /*               with circumflex */
+
+                                           /* Latin Small w */
+   { 373, "{\\^{w}}", "\\^{w}", "\\^w"  }, /*               with circumflex */
+
+                                           /* Latin Capital Y */
+   { 221, "{\\'{Y}}","\\'{Y}", "\\'Y"   }, /*               with acute */
+   { 374, "{\\^{Y}}","\\^{Y}", "\\^Y"   }, /*               with circumflex */
+   { 376, "{\\\"{Y}}","\\\"{Y}","\\\"Y" }, /*               with diaeresis */
+
+                                           /* Latin Small y */
    { 253, "{\\'y}",  "\\'{y}", "\\'y"   }, /*               with acute */
-   { 255, "{\\\"y}", "\\\"{y}", "\\\"y" }, /*               with diaeresis */
+   { 255, "{\\\"y}", "\\\"{y}","\\\"y"  }, /*               with diaeresis */
+   { 375, "{\\^{y}}","\\^{y}", "\\^y"   }, /*               with circumflex */
+
+                                           /* Latin Capital Z */
+   { 377, "{\\'{Z}}","\\'{Z}", "\\'Z"   }, /*               with acute */
+   { 379, "{\\.{Z}}","\\.{Z}", "\\.Z"   }, /*               with dot above */
+   { 381, "{\\v{Z}}","\\v{Z}", "\\v Z"  }, /*               with caron */
 
+                                           /* Latin Small z */
+   { 378, "{\\'{z}}","\\'{z}", "\\'z"   }, /*               with acute */
+   { 380, "{\\.{z}}","\\.{z}", "\\.z"   }, /*               with dot above */
+   { 382, "{\\v{z}}","\\v{z}", "\\v z"  }, /*               with caron */
 
-                                /* Hacek-containing */
-   { 269, "{\\v c}", "{\\v{c}}", "\\v{c}" }, /* c with a hacek */
 
 				/* Needs to be before \nu */
    { 8203, "$\\null$", "\\null", "" },           /* No space &#x200B; */
@@ -240,8 +417,8 @@ static struct latex_chars latex_chars[] = {
    { 12297, "{\\textrangle}", "\\textrangle", "" } ,   /* L-angle &#x3009; */
 
    { 166, "{\\textbrokenbar}", "\\textbrokenbar", "" }, /* Broken vertical bar &#xA6; */
-   { 167, "{\\textsection}", "\\textsection", "" },   /* Section sign, &#xA7; */
-   { 170, "{\\textordfeminine}", "\\textordfeminine", "" }, /* &#xAA; */
+   { 167, "{\\textsection}", "\\textsection", "\\S{}" },   /* Section sign, &#xA7; */
+   { 170, "{\\textordfeminine}", "\\textordfeminine", "$^a$" }, /* &#xAA; */
    { 172, "{\\textlnot}", "\\textlnot", "" },      /* Lnot &#xAC; */
    { 182, "{\\textparagraph}", "\\textparagraph", "" }, /* Paragraph sign &#xB6; */
    { 183, "{\\textperiodcentered}", "\\textperiodcentered", "" }, /* Period-centered &#xB7; */
diff --git a/lib/latex.h b/lib/latex.h
index 3ea4c33..54192b6 100644
--- a/lib/latex.h
+++ b/lib/latex.h
@@ -1,9 +1,9 @@
 /*
  * latex.h
  *
- * Copyright (c) Chris Putnam 2004-2009
+ * Copyright (c) Chris Putnam 2004-2013
  *
- * Source code released under the GPL
+ * Source code released under the GPL version 2
  *
  */
 #ifndef LATEX_H
diff --git a/lib/list.c b/lib/list.c
index 0c709b0..4ba5618 100644
--- a/lib/list.c
+++ b/lib/list.c
@@ -1,27 +1,122 @@
 /*
  * list.c
  *
- * Copyright (c) Chris Putnam 2004-2010
+ * version: 2013-04-02
  *
- * Source code released under the GPL
+ * Copyright (c) Chris Putnam 2004-2013
+ *
+ * Source code released under the GPL version 2
  *
  * Implements a simple managed array of newstrs.
  *
  */
 #include "list.h"
 
+void
+list_init( list *a  )
+{
+	a->str = NULL;
+	a->max = 0;
+	a->n = 0;
+	a->sorted = 0;
+}
+
+void
+list_empty( list *a )
+{
+	int i;
+	for ( i=0; i<a->max; ++i )
+		newstr_empty( &(a->str[i]) );
+	a->n = 0;
+	a->sorted = 1;
+}
+
+void
+list_free( list *a )
+{
+	int i;
+	for ( i=0; i<a->max; ++i )
+		newstr_free( &(a->str[i]) );
+	free( a->str );
+	list_init( a );
+}
+
+list *
+list_new( void )
+{
+	list *a = ( list * ) malloc( sizeof ( list ) );
+	if ( a ) list_init( a );
+	return a;
+}
+
+void
+list_delete( list *a )
+{
+	list_free( a );
+	free( a );
+}
+
+/*
+ * returns 1 if n is valid string in list
+ */
+static inline int
+list_valid_num( list *a, int n )
+{
+	if ( n < 0 || n >= a->n ) return 0;
+	return 1;
+}
+
+/*
+ * return pointer to newstr 'n', list_getstr() is deprecated
+ */
+newstr *
+list_get( list *a, int n )
+{
+	if ( !list_valid_num( a, n ) ) return NULL;
+	else return &(a->str[n]);
+}
 newstr *
 list_getstr( list *a, int n )
 {
-	if ( n<0 || n>a->n ) return NULL;
+	if ( !list_valid_num( a, n ) ) return NULL;
 	else return &(a->str[n]);
 }
 
+/*
+ * return pointer to C string 'n', list_getstr_char() is deprecated
+ *
+ * Ensure that a pointer is returned even if the newstr doesn't
+ * point to data. Thus we can convert loops like:
+ *
+ * for ( i=0; i<a->n; ++i ) {
+ *      p = list_getc( a, i );
+ *      if ( p==NULL ) continue; // empty string
+ *      ...
+ * }
+ *
+ * to
+ *
+ * i = 0;
+ * while ( ( p = list_getc( a, i ) ) ) {
+ *      ...
+ *      i++;
+ * }
+ *
+ */
+char *
+list_getc( list *a, int n )
+{
+	static char empty[] = "";
+	char *p;
+	if ( !list_valid_num( a, n ) ) return NULL;
+	p = a->str[n].data;
+	if ( p ) return p;
+	else return empty;
+}
 char *
 list_getstr_char( list *a, int n )
 {
-	if ( n<0 || n>a->n ) return NULL;
-	else return a->str[n].data;
+	return list_getc( a, n );
 }
 
 static int
@@ -51,59 +146,130 @@ list_realloc( list *a )
 	return 1;
 }
 
-int
-list_add( list *a, char *value )
+static int
+list_ensure_space( list *a )
 {
 	int ok = 1;
-
-	/* ensure sufficient space */
 	if ( a->max==0 ) ok = list_alloc( a );
 	else if ( a->n >= a->max ) ok = list_realloc( a );
+	return ok;
+}
 
+newstr *
+list_addvp( list *a, void *vp, unsigned char mode )
+{
+	newstr *s = NULL;
+	int ok;
+	ok = list_ensure_space( a );
 	if ( ok ) {
-		newstr_strcpy( &(a->str[a->n]), value );
+		s = &( a->str[a->n] );
+		if ( mode==LIST_CHR )
+			newstr_strcpy( s, (char*) vp );
+		else if ( mode==LIST_STR )
+			newstr_newstrcpy( s, (newstr*) vp );
+		else
+			return NULL;
 		a->sorted = 0;
 		a->n++;
 	}
+	return s;
+}
+newstr *
+list_add( list *a, char *s )
+{
+	return list_addvp( a, (void*)s, LIST_CHR );
+}
+newstr *
+list_addstr( list *a, newstr *s )
+{
+	return list_addvp( a, (void*)s, LIST_STR );
+}
 
-	return ok;
+newstr *
+list_addvp_unique( list *a, void *vp, unsigned char mode )
+{
+	newstr *s;
+	int n;
+	if ( mode==LIST_CHR )
+		n = list_find( a, (char*) vp );
+	else if ( mode==LIST_STR )
+		n = list_find( a, ( (newstr*) vp )->data );
+	else
+		return NULL;
+	if ( n!=-1 )
+		s = &( a->str[n] );
+	else
+		s = list_addvp( a, vp, mode );
+	return s;
+}
+newstr *
+list_add_unique( list *a, char *s )
+{
+	return list_addvp_unique( a, (void*) s, LIST_CHR );
+}
+newstr *
+list_addstr_unique( list *a, newstr *s )
+{
+	return list_addvp_unique( a, (void*) s, LIST_STR );
+}
+
+int
+list_adds( list *a, ... )
+{
+	int ret = 1;
+	va_list ap;
+	newstr *s;
+	char *v;
+	va_start( ap, a );
+	do {
+		v = va_arg( ap, char * );
+		if ( v ) {
+			s = list_addvp( a, (void*) v, LIST_CHR );
+			if ( s==NULL ) { ret = 0; goto out; }
+		}
+	} while ( v );
+out:
+	va_end( ap );
+	return ret;
 }
 
 void
-list_empty( list *a )
+list_append( list *a, list *toadd )
 {
 	int i;
-	for ( i=0; i<a->max; ++i )
-		newstr_empty( &(a->str[i]) );
-	a->n = 0;
-	a->sorted = 1;
+	for ( i=0; i<toadd->n; ++i ) {
+		list_addstr( a, &(toadd->str[i]) );
+	}
 }
 
 void
-list_free( list *a )
+list_append_unique( list *a, list *toadd )
 {
 	int i;
-	for ( i=0; i<a->max; ++i )
-		newstr_free( &(a->str[i]) );
-	free( a->str );
-	list_init( a );
+	for ( i=0; i<toadd->n; ++i ) {
+		list_addstr_unique( a, &(toadd->str[i]) );
+	}
 }
 
 void
-list_init( list *a  )
+list_remove( list *a, int n )
 {
-	a->str = NULL;
-	a->max = 0;
-	a->n = 0;
-	a->sorted = 0;
+	int i;
+	if ( !list_valid_num( a, n ) ) return;
+	for ( i=n+1; i<a->n; ++i )
+		newstr_newstrcpy( &(a->str[i-1]), &(a->str[i]) );
+	a->n--;
 }
 
 static int
 list_comp( const void *v1, const void *v2 )
 {
-	newstr *s1 = ( newstr* ) v1;
+	newstr *s1 = ( newstr *) v1;
 	newstr *s2 = ( newstr *) v2;
-	return strcmp( s1->data, s2->data );
+	if ( !s1->len && !s2->len ) return 0;
+	else if ( !s1->len ) return -1;
+	else if ( !s2->len ) return 1;
+	else return strcmp( s1->data, s2->data );
 }
 
 void
@@ -117,17 +283,21 @@ static int
 list_find_sorted( list *a, char *searchstr )
 {
 	int min, max, mid, comp;
+	newstr s, *cs;
 	if ( a->n==0 ) return -1;
+	newstr_init( &s );
+	newstr_strcpy( &s, searchstr );
 	min = 0;
 	max = a->n - 1;
 	while ( min <= max ) {
 		mid = ( min + max ) / 2;
-		comp = list_comp( (void*)list_getstr_char( a, mid ),
-			(void*) searchstr );
+		cs = list_get( a, mid );
+		comp = list_comp( (void*)cs, (void*) (&s) );
 		if ( comp==0 ) return mid;
 		else if ( comp > 0 ) max = mid - 1;
 		else if ( comp < 0 ) min = mid + 1;
 	}
+	newstr_free( &s );
 	return -1;
 }
 
@@ -170,32 +340,36 @@ int
 list_find_or_add( list *a, char *searchstr )
 {
 	int n = list_find( a, searchstr );
-	if ( n==-1 )
-		n = list_add( a, searchstr );
+	if ( n==-1 ) {
+		list_add( a, searchstr );
+		n = a->n - 1;
+	}
 	return n;
 }
 
-int
-list_fill( list *a, char *filename )
+void
+list_fillfp( list *a, FILE *fp )
 {
 	newstr line;
-	FILE *fp;
-	char *p;
-	char buf[512]="";
+	char *p, buf[512]="";
 	int  bufpos = 0;
 
-	fp = fopen( filename, "r" );
-	if ( !fp ) return 0;
-
 	list_init( a );
-
 	newstr_init( &line );
 	while ( newstr_fget( fp, buf, sizeof(buf), &bufpos, &line ) ) {
 		p = &(line.data[0]);
 		if ( *p=='\0' ) continue;
-		if ( !list_add( a, line.data ) ) return 0;
+		if ( !list_add( a, line.data ) ) return;
 	}
 	newstr_free( &line );
+}
+
+int
+list_fill( list *a, char *filename )
+{
+	FILE *fp = fopen( filename, "r" );
+	if ( !fp ) return 0;
+	list_fillfp( a, fp );
 	fclose( fp );
 	return 1;
 }
@@ -235,3 +409,107 @@ err0:
 	return NULL;
 }
 
+int
+list_match_entry( list *a, int n, char *s )
+{
+	if ( n < 0 || n >= a->n ) return 0;
+	if ( strcmp( a->str[n].data, s ) ) return 0;
+	return 1;
+}
+
+void
+list_trimend( list *a, int n )
+{
+	int i;
+	if ( a->n - n < 1 ) {
+		list_empty( a );
+	} else {
+		for ( i=a->n -n; i<a->n; ++i ) {
+			newstr_empty( &(a->str[i]) );
+		}
+		a->n -= n;
+	}
+}
+
+void
+list_tokenize( list *tokens, newstr *in, char delim, int merge_delim )
+{
+	newstr s;
+	char *p;
+	list_empty( tokens );
+	p = in->data;
+	newstr_init( &s );
+	while ( p && *p ) {
+		while ( *p && *p!=delim ) newstr_addchar( &s, *p++ );
+		if ( s.len ) list_add( tokens, s.data );
+		else if ( !merge_delim ) list_add( tokens, "" );
+		newstr_empty( &s );
+		if ( *p==delim ) p++;
+	}
+	newstr_free( &s );
+}
+
+void
+list_newstrtok( list *t, newstr *s, char *sep )
+{
+	newstr tmp;
+	char *p;
+	list_empty( t );
+	if ( !s->len ) return;
+	newstr_init( &tmp );
+	p = s->data;
+	while ( *p ) {
+		if ( strchr( sep, *p ) ) {
+			if ( tmp.len ) {
+				list_add( t, tmp.data );
+				newstr_empty( &tmp );
+			}
+		} else newstr_addchar( &tmp, *p );
+		p++;
+	}
+	if ( tmp.len ) list_add( t, tmp.data );
+	newstr_free( &tmp );
+}
+
+void
+lists_init( list *a, ... )
+{
+	list *a2;
+	va_list ap;
+	list_init( a );
+	va_start( ap, a );
+	do {
+		a2 = va_arg( ap, list * );
+		if ( a2 ) list_init( a2 );
+	} while ( a2 );
+	va_end( ap );
+}
+
+void
+lists_free( list *a, ... )
+{
+	list *a2;
+	va_list ap;
+	list_free( a );
+	va_start( ap, a );
+	do {
+		a2 = va_arg( ap, list * );
+		if ( a2 ) list_free( a2 );
+	} while ( a2 );
+	va_end( ap );
+}
+
+void
+lists_empty( list *a, ... )
+{
+	list *a2;
+	va_list ap;
+	list_empty( a );
+	va_start( ap, a );
+	do {
+		a2 = va_arg( ap, list * );
+		if ( a2 ) list_empty( a2 );
+	} while ( a2 );
+	va_end( ap );
+}
+
diff --git a/lib/list.h b/lib/list.h
index 8d18091..a6f7ba7 100644
--- a/lib/list.h
+++ b/lib/list.h
@@ -1,9 +1,11 @@
 /*
  * list.h
  *
- * Copyright (c) Chris Putnam 2004-2009
+ * version: 2013-04-02
  *
- * Source code released under the GPL
+ * Copyright (c) Chris Putnam 2004-2013
+ *
+ * Source code released under the GPL version 2
  *
  */
 
@@ -12,26 +14,67 @@
 
 #include <stdio.h>
 #include <stdlib.h>
+#include <stdarg.h>
 #include <string.h>
 #include "newstr.h"
 
+#define LIST_CHR (0)
+#define LIST_STR (1)
+
 typedef struct list {
 	int n, max;
 	int sorted;
 	newstr *str;
 } list;
 
+
+extern void    lists_init( list *a, ... );
+extern void    lists_free( list *a, ... );
+extern void    lists_empty( list *a, ... );
+
+
 extern void    list_init( list *a );
-extern int     list_add( list *a, char *value );
+extern void    list_free( list *a );
+extern void    list_empty( list *a );
+
+extern list *  list_new( void );
+extern void    list_delete( list * );
+
+extern list*   list_dup( list *a );
+extern void    list_copy( list *to, list *from );
+
+extern newstr * list_add( list *a, char *value );
+extern newstr * list_addstr( list *a, newstr *value );
+extern newstr * list_addvp( list *a, void *vp, unsigned char mode );
+
+extern int      list_adds( list *a, ... );
+
+extern newstr * list_add_unique( list *a, char *value );
+extern newstr * list_addstr_unique( list *a, newstr *value );
+extern newstr * list_addvp_unique( list *a, void *vp, unsigned char mode );
+
+extern void    list_append( list *a, list *toadd );
+extern void    list_append_unique( list *a, list *toadd );
+
+extern void    list_remove( list *a, int n );
+
+extern newstr* list_get( list *a, int n );
+extern newstr* list_getstr( list *a, int n );
+extern char*   list_getc( list *a, int n );
+extern char*   list_getstr_char( list *a, int n );
+
 extern void    list_sort( list *a );
+
 extern int     list_find( list *a, char *searchstr );
 extern int     list_findnocase( list *a, char *searchstr );
 extern int     list_find_or_add( list *a, char *searchstr );
-extern void    list_free( list *a );
+extern int     list_match_entry( list *a, int n, char *s );
+extern void    list_trimend( list *a, int n );
+
 extern int     list_fill( list *a, char *filename );
-extern newstr* list_getstr( list *a, int n );
-extern char*   list_getstr_char( list *a, int n );
-extern list*   list_dup( list *a );
-extern void    list_copy( list *to, list *from );
+extern void    list_fillfp( list *a, FILE *fp );
+extern void    list_tokenize( list *tokens, newstr *in, char delim, int merge_delim );
+extern void    list_newstrtok( list *t, newstr *s, char *sep );
+
 
 #endif
diff --git a/lib/marc.c b/lib/marc.c
index 36f05bf..721de53 100644
--- a/lib/marc.c
+++ b/lib/marc.c
@@ -1,3 +1,11 @@
+/*
+ * marc.c
+ *
+ * Copyright (c) Chris Putnam 2004-2013
+ *
+ * Source code released under the GPL version 2
+ *
+ */
 #include "marc.h"
 #include <string.h>
 
diff --git a/lib/marc.h b/lib/marc.h
index c793667..cd5c0b0 100644
--- a/lib/marc.h
+++ b/lib/marc.h
@@ -1,9 +1,9 @@
 /*
  * marc.h
  *
- * Copyright (c) Chris Putnam 2008-9
+ * Copyright (c) Chris Putnam 2008-2013
  *
- * Program and source code released under the GPL
+ * Source code released under the GPL version 2
  *
  */
 #ifndef MARC_H
diff --git a/lib/medin.c b/lib/medin.c
index 9d76021..d3efd2f 100644
--- a/lib/medin.c
+++ b/lib/medin.c
@@ -1,9 +1,9 @@
 /*
  * medin.c
  *
- * Copyright (c) Chris Putnam 2004-2010
+ * Copyright (c) Chris Putnam 2004-2013
  *
- * Program and source code released under the GPL
+ * Source code released under the GPL version 2
  *
  */
 #include <stdio.h>
@@ -15,6 +15,7 @@
 #include "xml.h"
 #include "xml_encoding.h"
 #include "medin.h"
+#include "iso639_2.h"
 #include "bibutils.h"
 
 void
@@ -36,7 +37,6 @@ medin_initparams( param *p, const char *progname )
 	p->processf = medin_processf;
 	p->cleanf   = NULL;
 	p->typef    = NULL;
-/*	p->convertf = medin_convertf;*/
 	p->convertf = NULL;
 	p->all      = NULL;
 	p->nall     = 0;
@@ -207,7 +207,20 @@ medin_medlinedate( fields *info, char *string, int level )
 	newstr_free( &tmp );
 }
 
-
+/* <Langauge>eng</Language>
+ */
+static int
+medin_language( xml *node, fields *info, int level )
+{
+	char *code, *language;
+	int ok;
+	code = xml_data( node );
+	if ( !code ) return 1;
+	language = iso639_2_from_code( code );
+	if ( language ) ok = fields_add( info, "LANGUAGE", language, level );
+	else ok = fields_add( info, "LANGUAGE", code, level );
+	return ok;
+}
 
 /* <Journal>
  *    <ISSN>0027-8424</ISSN>
@@ -249,12 +262,13 @@ medin_journal1( xml *node, fields *info )
 		{ "Year",            NULL, NULL, "PARTYEAR",   1 },
 		{ "Month",           NULL, NULL, "PARTMONTH",  1 },
 		{ "Day",             NULL, NULL, "PARTDAY",    1 },
-		{ "Language",        NULL, NULL, "LANGUAGE",   1 },
 	};
 	int nc = sizeof( c ) / sizeof( c[0] );;
 	if ( xml_hasdata( node ) && !medin_doconvert( node, info, c, nc ) ) {
 		if ( xml_tagexact( node, "MedlineDate" ) )
 			medin_medlinedate( info, xml_data( node ), 1 );
+		if ( xml_tagexact( node, "Language" ) )
+			medin_language( node, info, 1 );
 	}
 	if ( node->down ) medin_journal1( node->down, info );
 	if ( node->next ) medin_journal1( node->next, info );
@@ -464,6 +478,8 @@ medin_article( xml *node, fields *info )
 		medin_abstract( node->down, info );
 	else if ( xml_tagexact( node, "AuthorList" ) )
 		medin_authorlist( node, info );
+	else if ( xml_tagexact( node, "Language" ) )
+		medin_language( node, info, 0 );
 	else if ( xml_tagexact( node, "Affiliation" ) )
 		fields_add( info, "ADDRESS", xml_data( node ), 0 );
 	if ( node->next ) medin_article( node->next, info );
@@ -510,7 +526,7 @@ medin_assembleref( xml *node, fields *info )
 
 	if ( node->next ) medin_assembleref( node->next, info );
 	/* assume everything is a journal article */
-	if ( info->nfields ) {
+	if ( fields_num( info ) ) {
 		fields_add( info, "RESOURCE", "text", 0 );
 		fields_add( info, "ISSUANCE", "continuing", 1 );
 		fields_add( info, "GENRE", "periodical", 1 );
@@ -528,13 +544,3 @@ medin_processf( fields *medin, char *data, char *filename, long nref )
 	xml_free( &top );
 	return 1;
 }
-
-void
-medin_convertf( fields *medin, fields *info, int reftype, int verbose, 
-	variants *all, int nall )
-{
-	int i;
-	for ( i=0; i<medin->nfields; ++i )
-		fields_add( info, medin->tag[i].data, medin->data[i].data,
-				medin->level[i] );
-}
diff --git a/lib/medin.h b/lib/medin.h
index 1aafa5e..ec44d86 100644
--- a/lib/medin.h
+++ b/lib/medin.h
@@ -1,9 +1,9 @@
 /*
  * medin.h
  *
- * Copyright (c) Chris Putnam 2004-2009
+ * Copyright (c) Chris Putnam 2004-2013
  *
- * Program and source code released under the GPL
+ * Source code released under the GPL version 2
  *
  */
 #ifndef MEDIN_H
@@ -16,7 +16,6 @@
 
 extern int medin_readf( FILE *fp, char *buf, int bufsize, int *bufpos, newstr *line, newstr *reference, int *fcharset );
 extern int medin_processf( fields *medin, char *data, char *filename, long nref );
-extern void medin_convertf( fields *medin, fields *info, int reftype, int verbose, variants *all, int nall );
 
 extern void medin_initparams( param *p, const char *progname );
 
diff --git a/lib/modsin.c b/lib/modsin.c
index 8e9bd14..54715a1 100644
--- a/lib/modsin.c
+++ b/lib/modsin.c
@@ -1,9 +1,9 @@
 /*
  * modsin.c
  *
- * Copyright (c) Chris Putnam 2004-2010
+ * Copyright (c) Chris Putnam 2004-2013
  *
- * Source code released under the GPL
+ * Source code released under the GPL version 2
  *
  */
 #include <stdio.h>
@@ -84,10 +84,6 @@ modsin_detail( xml *node, fields *info, int level )
 			fields_add( info, "PAGESTART", value.data, level );
 		} else fields_add( info, type.data, value.data, level );
 		newstrs_free( &type, &value, NULL );
-/*
-		newstr_free( &type );
-		newstr_free( &value );
-*/
 	}
 }
 
@@ -203,32 +199,66 @@ modsin_title( xml *node, fields *info, int level )
 	}
 }
 
-/*
- * find match in roles if newstr has the format of
+/* modsin_marcrole_convert()
+ *
+ * Map MARC-authority roles for people or organizations associated
+ * with a reference to internal roles.
  *
- * creator|cre
+ * Take input strings with roles separated by '|' characters, e.g.
+ * "author" or "author|creator" or "edt" or "editor|edt".
  */
-static int
-modsin_rolesmatch( convert *roles_convert, int nroles, newstr *s )
-{
+static void
+modsin_marcrole_convert( newstr *s, char *suffix, newstr *out )
+{
+	convert roles[] = {
+		{ "author",              "AUTHOR" },
+		{ "aut",                 "AUTHOR" },
+		{ "aud",                 "AUTHOR" },
+		{ "aui",                 "AUTHOR" },
+		{ "aus",                 "AUTHOR" },
+		{ "creator",             "AUTHOR" },
+		{ "cre",                 "AUTHOR" },
+		{ "editor",              "EDITOR" },
+		{ "edt",                 "EDITOR" },
+		{ "degree grantor",      "DEGREEGRANTOR" },
+		{ "dgg",                 "DEGREEGRANTOR" },
+		{ "organizer of meeting","ORGANIZER" },
+		{ "orm",                 "ORGANIZER" },
+		{ "patent holder",       "ASSIGNEE" },
+		{ "pth",                 "ASSIGNEE" }
+	};
+	int nroles = sizeof( roles ) / sizeof( roles[0] );
+	int i, nmismatch, n = -1;
 	char *p, *q;
-	int i, nmismatch;
-	for ( i=0; i<nroles; ++i ) {
-		p = s->data;
-		while ( *p ) {
-			q = roles_convert[i].mods;
-			nmismatch = 0;
-			while ( *p && *p!='|' && nmismatch == 0) {
-				if ( toupper( *p ) != toupper( *q ) )
-					nmismatch++;
-				p++;
-				q++;
+
+	if ( s->len == 0 ) {
+		/* ...default to author on an empty string */
+		n = 0;
+	} else {
+		/* ...find first match in '|'-separated list */
+		for ( i=0; i<nroles && n==-1; ++i ) {
+			p = s->data;
+			while ( *p ) {
+				q = roles[i].mods;
+				nmismatch = 0;
+				while ( *p && *p!='|' && nmismatch == 0) {
+					if ( toupper( (unsigned char)*p ) != toupper( (unsigned char)*q ) )
+						nmismatch++;
+					p++;
+					q++;
+				}
+				if ( !nmismatch && !(*(q++))) n = i;
+				if ( *p=='|' ) p++;
 			}
-			if ( !nmismatch && !(*(q++))) return i;
-			if ( *p=='|' ) p++;
 		}
 	}
-	return -1;
+
+	if ( n!=-1 ) {
+		newstr_strcpy( out, roles[n].internal );
+		if ( suffix ) newstr_strcat( out, suffix );
+	} else {
+		newstr_strcpy( out, s->data );
+	}
 }
 
 static void
@@ -245,106 +275,62 @@ modsin_asis_corp_r( xml *node, newstr *name, newstr *role )
 }
 
 static void
-modsin_personr( xml *node, newstr *name, newstr *roles )
+modsin_personr( xml *node, newstr *name, newstr *suffix, newstr *roles )
 {
+	newstr outname;
+	newstr_init( &outname );
 	if ( xml_tagexact( node, "namePart" ) ) {
 		if ( xml_tag_attrib( node, "namePart", "type", "family" ) ) {
 			if ( name->len ) newstr_prepend( name, "|" );
 			newstr_prepend( name, node->value->data );
+		} else if (xml_tag_attrib( node, "namePart", "type", "suffix") ||
+		           xml_tag_attrib( node, "namePart", "type", "termsOfAddress" )) {
+			if ( suffix->len ) newstr_addchar( suffix, ' ' );
+			newstr_strcat( suffix, node->value->data );
 		} else if (xml_tag_attrib( node, "namePart", "type", "date")){
 		} else {
 			if ( name->len ) newstr_addchar( name, '|' );
-			if ( strchr( node->value->data, ',' ) ) 
-				name_comma( node->value->data, name );
-			else name_nocomma( node->value->data, name );
+			name_parse( &outname, node->value, NULL, NULL );
+			newstr_newstrcat( name, &outname );
 		}
 	} else if ( xml_tagexact( node, "roleTerm" ) ) {
 		if ( roles->len ) newstr_addchar( roles, '|' );
 		newstr_newstrcat( roles, node->value );
 	}
-	if ( node->down ) modsin_personr( node->down, name, roles );
-	if ( node->next ) modsin_personr( node->next, name, roles );
+	if ( node->down ) modsin_personr( node->down, name, suffix, roles );
+	if ( node->next ) modsin_personr( node->next, name, suffix, roles );
+	newstr_free( &outname );
 }
 
 static void
-modsin_asis_corp( xml *node, fields *info, int level, convert *roles_convert,
-		int nroles )
+modsin_asis_corp( xml *node, fields *info, int level, char *suffix )
 {
-	newstr name, roles;
-	int n;
+	newstr name, roles, role_out;
 	xml *dnode = node->down;
 	if ( dnode ) {
-		newstrs_init( &name, &roles, NULL );
+		newstrs_init( &name, &roles, &role_out, NULL );
 		modsin_asis_corp_r( dnode, &name, &roles );
-		if ( roles.len ) {
-			n = modsin_rolesmatch( roles_convert, nroles, &roles );
-			if ( n!=-1 ) {
-				fields_add( info, roles_convert[n].internal, 
-					name.data, level );
-			} else {
-				fields_add( info, roles.data, name.data, level);
-			}
-		}
-		else fields_add( info, roles_convert[0].internal, name.data, 
-			level );
-		newstrs_free( &name, &roles, NULL );
+		modsin_marcrole_convert( &roles, suffix, &role_out );
+		fields_add( info, role_out.data, name.data, level );
+		newstrs_free( &name, &roles, &role_out, NULL );
 	}
 }
 
 static void
-modsin_asis( xml *node, fields *info, int level )
-{
-	convert roles_convert[] = {
-		{ "author",              "AUTHOR:ASIS" },
-		{ "creator",             "AUTHOR:ASIS" },
-		{ "editor",              "EDITOR:ASIS" },
-		{ "degree grantor",      "DEGREEGRANTOR:ASIS" },
-		{ "organizer of meeting","ORGANIZER:ASIS" },
-		{ "patent holder",       "ASSIGNEE:ASIS" }
-	};
-	int nroles = sizeof( roles_convert ) / sizeof( roles_convert[0] );
-	modsin_asis_corp( node, info, level, roles_convert, nroles );
-}
-
-static void
-modsin_corp( xml *node, fields *info, int level )
-{
-	convert roles_convert[] = {
-		{ "author",              "AUTHOR:CORP" },
-		{ "creator",             "AUTHOR:CORP" },
-		{ "editor",              "EDITOR:CORP" },
-		{ "degree grantor",      "DEGREEGRANTOR:CORP" },
-		{ "organizer of meeting","ORGANIZER:CORP" },
-		{ "patent holder",       "ASSIGNEE:CORP" }
-	};
-	int nroles = sizeof( roles_convert ) / sizeof( roles_convert[0] );
-	modsin_asis_corp( node, info, level, roles_convert, nroles );
-}
-
-static void
 modsin_person( xml *node, fields *info, int level )
 {
-	newstr name, roles, role;
-	char *p;
+	newstr name, suffix, roles, role, role_out;
 	xml *dnode = node->down;
 	if ( dnode ) {
-		newstrs_init( &name, &role, &roles, NULL );
-		modsin_personr( dnode, &name, &roles );
-		/* no defined role, default to author */
-		if ( !roles.len ) newstr_strcpy( &roles, "author" );
-		p = roles.data;
-		while ( p && *p ) {
-			while ( p && *p && *p!='|' ) newstr_addchar(&role,*p++);
-			if ( !strcasecmp( role.data, "author" ) ||
-			     !strcasecmp( role.data, "creator" ) ) 
-				fields_add( info, "AUTHOR", name.data, level );
-			else if ( !strcasecmp( role.data, "editor" ) )
-				fields_add( info, "EDITOR", name.data, level );
-			else fields_add( info, role.data, name.data, level );
-			if ( *p=='|' ) p++;
-			newstr_empty( &role );
+		newstrs_init( &name, &suffix, &role, &roles, &role_out, NULL );
+		modsin_personr( dnode, &name, &suffix, &roles );
+		modsin_marcrole_convert( &roles, NULL, &role_out );
+		if ( suffix.len ) {
+			newstr_strcat( &name, "||" );
+			newstr_newstrcat( &name, &suffix );
 		}
-		newstrs_free( &name, &role, &roles, NULL );
+		fields_add( info, role_out.data, name.data, level );
+		newstrs_free( &name, &suffix, &role, &roles, NULL );
 	}
 }
 
@@ -487,10 +473,24 @@ modsin_resource( xml *node, fields *info, int level )
 }
 
 static void
+modsin_languager( xml *node, fields *info, int level )
+{
+	if ( xml_tag_attrib( node, "languageTerm", "type", "text" ) ) {
+		if ( node->value && node->value->len )
+			fields_add( info, "LANGUAGE", node->value->data, level );
+	}
+	if ( node->next ) modsin_languager( node->next, info, level );
+}
+
+static void
 modsin_language( xml *node, fields *info, int level )
 {
+	/* Old versions of MODS had <language>English</language> */
 	if ( node->value && node->value->len )
 		fields_add( info, "LANGUAGE", node->value->data, level );
+
+	/* New versions of MODS have <language><languageTerm>English</languageTerm></language> */
+	if ( node->down ) modsin_languager( node->down, info, level );
 }
 
 static void
@@ -554,8 +554,10 @@ modsin_location( xml *node, fields *info, int level )
 static void
 modsin_descriptionr( xml *node, newstr *s )
 {
-	if ( xml_tagexact( node, "extent" ) ) 
+	if ( xml_tagexact( node, "extent" ) ||
+	     xml_tagexact( node, "note" ) ) {
 		newstr_newstrcpy( s, node->value );
+	}
 	if ( node->down ) modsin_descriptionr( node->down, s );
 	if ( node->next ) modsin_descriptionr( node->next, s );
 }
@@ -659,9 +661,9 @@ modsin_mods( xml *node, fields *info, int level )
 	else if ( xml_tag_attrib( node, "name", "type", "personal" ) )
 		modsin_person( node, info, level );
 	else if ( xml_tag_attrib( node, "name", "type", "corporate" ) )
-		modsin_corp( node, info, level );
+		modsin_asis_corp( node, info, level, ":CORP" );
 	else if ( xml_tagexact( node, "name" ) )
-		modsin_asis( node, info, level );
+		modsin_asis_corp( node, info, level, ":ASIS" );
 	else if ( xml_tagexact( node, "recordInfo" ) && node->down )
 		modsin_recordinfo( node->down, info, level );
 	else if  ( xml_tagexact( node, "part" ) )
@@ -695,7 +697,7 @@ modsin_mods( xml *node, fields *info, int level )
 	else if ( xml_tagexact( node, "physicalDescription" ) )
 		modsin_description( node, info, level );
 	else if ( xml_tag_attrib( node, "relatedItem", "type", "host" ) ||
-	          xml_tag_attrib( node, "relatedItem", "type", "series" ) ) {
+		  xml_tag_attrib( node, "relatedItem", "type", "series" ) ) {
 		if ( node->down ) modsin_mods( node->down, info, level+1 );
 	}
 
@@ -713,16 +715,6 @@ modsin_assembleref( xml *node, fields *info )
 	if ( node->next ) modsin_assembleref( node->next, info );
 }
 
-void
-modsin_convertf( fields *modsin, fields *info, int reftype, int verbose, 
-	variants *all, int nall )
-{
-	int i;
-	for ( i=0; i<modsin->nfields; ++i )
-		fields_add( info, modsin->tag[i].data, modsin->data[i].data,
-				modsin->level[i] );
-}
-
 int
 modsin_processf( fields *modsin, char *data, char *filename, long nref )
 {
diff --git a/lib/modsin.h b/lib/modsin.h
index 8673611..d2282f5 100644
--- a/lib/modsin.h
+++ b/lib/modsin.h
@@ -1,9 +1,9 @@
 /*
  * modsin.h
  *
- * Copyright (c) Chris Putnam 2004-2009
+ * Copyright (c) Chris Putnam 2004-2013
  *
- * Program and source code released under the GPL
+ * Source code released under the GPL version 2
  *
  */
 #ifndef MODSIN_H
@@ -15,7 +15,6 @@
 
 extern int modsin_readf( FILE *fp, char *buf, int bufsize, int *bufpos, newstr *line, newstr *reference, int *fcharset );
 extern int modsin_processf( fields *medin, char *data, char *filename, long nref );
-extern void modsin_convertf( fields *medin, fields *info, int reftype, int verbose, variants *all, int nall );
 extern void modsin_initparams( param *p, const char *progname );
 
 #endif
diff --git a/lib/modsout.c b/lib/modsout.c
index d90e8ff..16d833e 100644
--- a/lib/modsout.c
+++ b/lib/modsout.c
@@ -1,9 +1,9 @@
 /*
  * modsout.c
  *
- * Copyright (c) Chris Putnam 2003-2010
+ * Copyright (c) Chris Putnam 2003-2013
  *
- * Source code released under the GPL
+ * Source code released under the GPL version 2
  *
  */
 #include <stdio.h>
@@ -11,8 +11,10 @@
 #include <string.h>
 #include "is_ws.h"
 #include "newstr.h"
+#include "charsets.h"
 #include "newstr_conv.h"
 #include "fields.h"
+#include "iso639_2.h"
 #include "utf8.h"
 #include "modsout.h"
 #include "modstypes.h"
@@ -82,23 +84,36 @@ output_tab4( FILE *outptr, int level, char *tag, char *aname, char *avalue,
 }
 
 static void
-output_fill2( FILE *outptr, int level, char *tag, fields *info, int n, int cr )
+output_tab6( FILE *outptr, int level, char *tag, char *aname, char *avalue,
+		char *bname, char *bvalue, char *data, int cr )
 {
+	output_tab0( outptr, level );
+	fprintf( outptr, "<%s %s=\"%s\" %s=\"%s\">%s</%s>", tag,aname,avalue,bname,bvalue,data,tag);
+	if ( cr ) fprintf( outptr, "\n" );
+}
+
+static void
+output_fill2( FILE *outptr, int level, char *tag, fields *f, int n, int cr )
+{
+	char *value;
 	if ( n!=-1 ) {
-		output_tab2_attrib( outptr, level, tag, info->data[n].data, 
+		value = fields_value( f, n, FIELDS_CHRP );
+		output_tab2_attrib( outptr, level, tag, value, 
 			NULL, NULL, cr );
-		fields_setused( info, n );
+		fields_setused( f, n );
 	}
 }
 
 static void
 output_fill4( FILE *outptr, int level, char *tag, char *aname, char *avalue,
-		fields *info, int n, int cr )
+		fields *f, int n, int cr )
 {
+	char *value;
 	if ( n!=-1 ) {
+		value = fields_value( f, n, FIELDS_CHRP );
 		output_tab4( outptr, level, tag, aname, avalue,
-				info->data[n].data, cr );
-		fields_setused( info, n );
+				value, cr );
+		fields_setused( f, n );
 	}
 }
 
@@ -109,40 +124,42 @@ output_fill4( FILE *outptr, int level, char *tag, char *aname, char *avalue,
  * Return number of the tags found
  */
 static int
-find_alltags( fields *info, convert *parts, int nparts, int level )
+find_alltags( fields *f, convert *parts, int nparts, int level )
 {
 	int i, n=0;
 	for ( i=0; i<nparts; ++i ) {
-		parts[i].code = fields_find( info, parts[i].internal, level );
+		parts[i].code = fields_find( f, parts[i].internal, level );
 		n += ( parts[i].code!=-1 );
 	}
 	return n;
 }
 
 static void
-output_title( fields *info, FILE *outptr, int level )
+output_title( fields *f, FILE *outptr, int level )
 {
-	int ttl = fields_find( info, "TITLE", level );
-	int subttl = fields_find( info, "SUBTITLE", level );
-	int shrttl = fields_find( info, "SHORTTITLE", level );
+	int ttl    = fields_find( f, "TITLE", level );
+	int subttl = fields_find( f, "SUBTITLE", level );
+	int shrttl = fields_find( f, "SHORTTITLE", level );
+	int parttl = fields_find( f, "PARTTITLE", level );
 
 	output_tab1( outptr, level, "<titleInfo>\n" );
-	output_fill2( outptr, increment_level(level,1), "title", info, ttl, 1);
-	output_fill2( outptr, increment_level(level,1), "subTitle", info, subttl, 1 );
-	if ( ttl==-1 && subttl==-1 ) 
+	output_fill2( outptr, increment_level(level,1), "title", f, ttl, 1 );
+	output_fill2( outptr, increment_level(level,1), "subTitle", f, subttl, 1 );
+	output_fill2( outptr, increment_level(level,1), "partName", f, parttl, 1 );
+	if ( ttl==-1 && subttl==-1 )
 		output_tab1( outptr, increment_level(level,1), "<title/>\n" );
 	output_tab1( outptr, level, "</titleInfo>\n" );
 
 	/* output shorttitle if it's different from normal title */
 	if ( shrttl!=-1 ) {
 		if ( ttl==-1 || subttl!=-1 ||
-			strcmp(info->data[ttl].data,info->data[shrttl].data) ) {
+			strcmp(f->data[ttl].data,f->data[shrttl].data) ) {
 			output_tab1( outptr, level, 
 					"<titleInfo type=\"abbreviated\">\n" );
-			output_fill2( outptr, level+1, "title", info, shrttl,1);
+			output_fill2( outptr, level+1, "title", f, shrttl,1);
 			output_tab1( outptr, level, "</titleInfo>\n" );
 		}
-		fields_setused( info, shrttl );
+		fields_setused( f, shrttl );
 	}
 }
 
@@ -157,10 +174,10 @@ output_personalstart( FILE *outptr, int level )
 static void
 output_name( FILE *outptr, char *p, int level )
 {
-	newstr family, part;
+	newstr family, part, suffix;
 	int n=0;
 
-	newstrs_init( &family, &part, NULL );
+	newstrs_init( &family, &part, &suffix, NULL );
 
 	while ( *p && *p!='|' ) newstr_addchar( &family, *p++ );
 	if ( *p=='|' ) p++;
@@ -180,6 +197,10 @@ output_name( FILE *outptr, char *p, int level )
 		}
 		if ( *p=='|' ) {
 			p++;
+			if ( *p=='|' ) {
+				p++;
+				while ( *p && *p!='|' ) newstr_addchar( &suffix, *p++ );
+			}
 			newstr_empty( &part );
 		}
 	}
@@ -190,51 +211,79 @@ output_name( FILE *outptr, char *p, int level )
 				family.data, 1 );
 	}
 
-	newstrs_free( &part, &family, NULL );
+	if ( suffix.len ) {
+		if ( n==0 ) output_personalstart( outptr, level );
+		output_tab4( outptr, increment_level(level,1), "namePart", "type", "suffix",
+				suffix.data, 1 );
+	}
+
+	newstrs_free( &part, &family, &suffix, NULL );
 }
 
 
+/* MODS v 3.4
+ *
+ * <name [type="corporation"/type="conference"]>
+ *    <namePart></namePart>
+ *    <displayForm></displayForm>
+ *    <affiliation></affiliation>
+ *    <role>
+ *        <roleTerm [authority="marcrealtor"] type="text"></roleTerm>
+ *    </role>
+ *    <description></description>
+ * </name>
+ */
+
 #define NO_AUTHORITY (0)
 #define MARC_AUTHORITY (1)
 
 static void
-output_names( fields *info, FILE *outptr, int level )
+output_names( fields *f, FILE *outptr, int level )
 {
 	convert   names[] = {
-	  { "author",        "AUTHOR",             MARC_AUTHORITY },
-	  { "writer",        "WRITER",             MARC_AUTHORITY },
-	  { "artist",        "ARTIST",             MARC_AUTHORITY },
-	  { "cartographer",  "CARTOGRAPHER",       MARC_AUTHORITY },
-	  { "commentator",   "COMMENTATOR",        NO_AUTHORITY   },
-	  { "degree grantor","DEGREEGRANTOR",      MARC_AUTHORITY },
-	  { "director",      "DIRECTOR",           MARC_AUTHORITY },
-	  { "editor",        "EDITOR",             MARC_AUTHORITY },
-	  { "inventor",      "INVENTOR",           MARC_AUTHORITY },
-	  { "organizer of meeting","ORGANIZER",    MARC_AUTHORITY },
-	  { "patent holder", "ASSIGNEE",           MARC_AUTHORITY },
-	  { "performer",     "PERFORMER",          MARC_AUTHORITY },
-	  { "recipient",     "RECIPIENT",          MARC_AUTHORITY },
-	  { "redactor",      "REDACTOR",           NO_AUTHORITY   },
-	  { "reporter",      "REPORTER",           NO_AUTHORITY   },
-	  { "translator",    "TRANSLATOR",         MARC_AUTHORITY },
-	  { "event",         "EVENT",              NO_AUTHORITY   },
-	  { "author",        "2ND_AUTHOR",         MARC_AUTHORITY },
-	  { "author",        "3RD_AUTHOR",         MARC_AUTHORITY },
-	  { "author",        "SUB_AUTHOR",         MARC_AUTHORITY },
-	  { "author",        "COMMITTEE",          MARC_AUTHORITY },
-	  { "author",        "COURT",              MARC_AUTHORITY },
-	  { "author",        "LEGISLATIVEBODY",    MARC_AUTHORITY }
+	  { "author",                              "AUTHOR",          MARC_AUTHORITY },
+	  { "editor",                              "EDITOR",          MARC_AUTHORITY },
+	  { "annotator",                           "ANNOTATOR",       MARC_AUTHORITY },
+	  { "artist",                              "ARTIST",          MARC_AUTHORITY },
+	  { "author",                              "2ND_AUTHOR",      MARC_AUTHORITY },
+	  { "author",                              "3RD_AUTHOR",      MARC_AUTHORITY },
+	  { "author",                              "SUB_AUTHOR",      MARC_AUTHORITY },
+	  { "author",                              "COMMITTEE",       MARC_AUTHORITY },
+	  { "author",                              "COURT",           MARC_AUTHORITY },
+	  { "author",                              "LEGISLATIVEBODY", MARC_AUTHORITY },
+	  { "author of afterword, colophon, etc.", "AFTERAUTHOR",     MARC_AUTHORITY },
+	  { "author of introduction, etc.",        "INTROAUTHOR",     MARC_AUTHORITY },
+	  { "cartographer",                        "CARTOGRAPHER",    MARC_AUTHORITY },
+	  { "collaborator",                        "COLLABORATOR",    MARC_AUTHORITY },
+	  { "commentator",                         "COMMENTATOR",     MARC_AUTHORITY },
+	  { "compiler",                            "COMPILER",        MARC_AUTHORITY },
+	  { "degree grantor",                      "DEGREEGRANTOR",   MARC_AUTHORITY },
+	  { "director",                            "DIRECTOR",        MARC_AUTHORITY },
+	  { "event",                               "EVENT",           NO_AUTHORITY   },
+	  { "inventor",                            "INVENTOR",        MARC_AUTHORITY },
+	  { "organizer of meeting",                "ORGANIZER",       MARC_AUTHORITY },
+	  { "patent holder",                       "ASSIGNEE",        MARC_AUTHORITY },
+	  { "performer",                           "PERFORMER",       MARC_AUTHORITY },
+	  { "producer",                            "PRODUCER",        MARC_AUTHORITY },
+	  { "recipient",                           "RECIPIENT",       MARC_AUTHORITY },
+	  { "redactor",                            "REDACTOR",        MARC_AUTHORITY },
+	  { "reporter",                            "REPORTER",        MARC_AUTHORITY },
+	  { "sponsor",                             "SPONSOR",         MARC_AUTHORITY },
+	  { "translator",                          "TRANSLATOR",      MARC_AUTHORITY },
+	  { "writer",                              "WRITER",          MARC_AUTHORITY },
 	};
-	int       i, n, ntypes = sizeof( names ) / sizeof( convert );
-	newstr role;
+	int i, n, nfields, ntypes = sizeof( names ) / sizeof( convert );
 	int f_asis, f_corp, f_conf;
+	newstr role;
 
 	newstr_init( &role );
+	nfields = fields_num( f );
 	for ( n=0; n<ntypes; ++n ) {
-		for ( i=0; i<info->nfields; ++i ) {
-			if ( info->level[i]!=level ) continue;
+		for ( i=0; i<nfields; ++i ) {
+			if ( fields_level( f, i )!=level ) continue;
+			if ( f->data[i].len==0 ) continue;
 			f_asis = f_corp = f_conf = 0;
-			newstr_strcpy( &role, info->tag[i].data );
+			newstr_strcpy( &role, f->tag[i].data );
 			if ( newstr_findreplace( &role, ":ASIS", "" )) f_asis=1;
 			if ( newstr_findreplace( &role, ":CORP", "" )) f_corp=1;
 			if ( newstr_findreplace( &role, ":CONF", "" )) f_conf=1;
@@ -243,17 +292,17 @@ output_names( fields *info, FILE *outptr, int level )
 			if ( f_asis ) {
 				output_tab0( outptr, level );
 				fprintf( outptr, "<name>\n" );
-				output_fill2( outptr, increment_level(level,1), "namePart", info, i, 1 );
+				output_fill2( outptr, increment_level(level,1), "namePart", f, i, 1 );
 			} else if ( f_corp ) {
 				output_tab0( outptr, level );
 				fprintf( outptr, "<name type=\"corporate\">\n" );
-				output_fill2( outptr, increment_level(level,1), "namePart", info, i, 1 );
+				output_fill2( outptr, increment_level(level,1), "namePart", f, i, 1 );
 			} else if ( f_conf ) {
 				output_tab0( outptr, level );
 				fprintf( outptr, "<name type=\"conference\">\n" );
-				output_fill2( outptr, increment_level(level,1), "namePart", info, i, 1 );
+				output_fill2( outptr, increment_level(level,1), "namePart", f, i, 1 );
 			} else {
-				output_name(outptr, info->data[i].data, level);
+				output_name(outptr, f->data[i].data, level);
 			}
 			output_tab1( outptr, increment_level(level,1), "<role>\n" );
 			output_tab1( outptr, increment_level(level,2), "<roleTerm" );
@@ -264,33 +313,33 @@ output_names( fields *info, FILE *outptr, int level )
 			fprintf( outptr, "</roleTerm>\n");
 			output_tab1( outptr, increment_level(level,1), "</role>\n" );
 			output_tab1( outptr, level, "</name>\n" );
-			fields_setused( info, i );
+			fields_setused( f, i );
 		}
 	}
 	newstr_free( &role );
 }
 
 static int
-output_finddateissued( fields *info, int level, int pos[3] )
+output_finddateissued( fields *f, int level, int pos[] )
 {
 	char      *src_names[] = { "YEAR", "MONTH", "DAY", "DATE" };
 	char      *alt_names[] = { "PARTYEAR", "PARTMONTH", "PARTDAY", "PARTDATE" };
 	int       i, found = -1, ntypes = 4;
 
 	for ( i=0; i<ntypes; ++i ) {
-		pos[i] = fields_find( info, src_names[i], level );
+		pos[i] = fields_find( f, src_names[i], level );
 		if ( pos[i]!=-1 ) found = pos[i];
 	}
 	/* for LEVEL_MAIN, do what it takes to find a date */
 	if ( found==-1 && level==0 ) {
 		for ( i=0; i<ntypes; ++i ) {
-			pos[i] = fields_find( info, src_names[i], -1 );
+			pos[i] = fields_find( f, src_names[i], -1 );
 			if ( pos[i]!=-1 ) found = pos[i];
 		}
 	}
 	if ( found==-1 && level==0 ) {
 		for ( i=0; i<ntypes; ++i ) {
-			pos[i] = fields_find( info, alt_names[i], -1 );
+			pos[i] = fields_find( f, alt_names[i], -1 );
 			if ( pos[i]!=-1 ) found = pos[i];
 		}
 	}
@@ -298,40 +347,40 @@ output_finddateissued( fields *info, int level, int pos[3] )
 }
 
 static void
-output_datepieces( fields *info, FILE *outptr, int pos[4] )
+output_datepieces( fields *f, FILE *outptr, int pos[4] )
 {
 	int nprinted = 0, i;
 	for ( i=0; i<3 && pos[i]!=-1; ++i ) {
 		if ( nprinted>0 ) fprintf( outptr, "-" );
-		if ( i>0 && info->data[pos[i]].len==1 )
+		if ( i>0 && f->data[pos[i]].len==1 )
 			fprintf( outptr, "0" ); /*zero pad Jan,Feb,etc*/
-		fprintf( outptr,"%s",info->data[pos[i]].data );
+		fprintf( outptr,"%s",f->data[pos[i]].data );
 		nprinted++;
-		fields_setused( info, pos[i] );
+		fields_setused( f, pos[i] );
 	}
 }
 
 static void
-output_dateall( fields *info, FILE *outptr, int pos )
+output_dateall( fields *f, FILE *outptr, int pos )
 {
-	fprintf( outptr, "%s", info->data[pos].data );
-	fields_setused( info, pos );
+	fprintf( outptr, "%s", f->data[pos].data );
+	fields_setused( f, pos );
 }
 
 static void
-output_dateissued( fields *info, FILE *outptr, int level, int pos[4] )
+output_dateissued( fields *f, FILE *outptr, int level, int pos[4] )
 {
 	output_tab1( outptr, increment_level(level,1), "<dateIssued>" );
 	if ( pos[0]!=-1 || pos[1]!=-1 || pos[2]!=-1 ) {
-		output_datepieces( info, outptr, pos );
+		output_datepieces( f, outptr, pos );
 	} else {
-		output_dateall( info, outptr, pos[3] );
+		output_dateall( f, outptr, pos[3] );
 	}
 	fprintf( outptr, "</dateIssued>\n" );
 }
 
 static void
-output_origin( fields *info, FILE *outptr, int level )
+output_origin( fields *f, FILE *outptr, int level )
 {
 	convert origin[] = {
 		{ "issuance",	  "ISSUANCE",	0 },
@@ -346,15 +395,15 @@ output_origin( fields *info, FILE *outptr, int level )
 	/* find all information to be outputted */
 	found = -1;
 	for ( n=0; n<ntypes; ++n ) {
-		pos[n] = fields_find( info, origin[n].internal, level );
+		pos[n] = fields_find( f, origin[n].internal, level );
 		if ( pos[n]!=-1 ) found = pos[n];
 	}
-	datefound = output_finddateissued( info, level, date );
+	datefound = output_finddateissued( f, level, date );
 	if ( found==-1 && datefound==-1 ) return;
 
 	output_tab1( outptr, level, "<originInfo>\n" );
-	output_fill2( outptr, increment_level(level,1), "issuance", info, pos[0], 1 );
-	if ( datefound!=-1 ) output_dateissued( info, outptr, level, date );
+	output_fill2( outptr, increment_level(level,1), "issuance", f, pos[0], 1 );
+	if ( datefound!=-1 ) output_dateissued( f, outptr, level, date );
 
 	for ( n=1; n<ntypes; n++ ) {
 		if ( pos[n]==-1 ) continue;
@@ -364,11 +413,11 @@ output_origin( fields *info, FILE *outptr, int level )
 		if ( origin[n].code ) {
 			fprintf( outptr, "\n" );
 			output_fill4( outptr, increment_level(level,2), 
-				"placeTerm", "type", "text", info, pos[n], 1 );
+				"placeTerm", "type", "text", f, pos[n], 1 );
 			output_tab0( outptr, increment_level(level,1) );
 		} else {
-			fprintf( outptr, "%s", info->data[pos[n]].data );
-			fields_setused( info, pos[n] );
+			fprintf( outptr, "%s", f->data[pos[n]].data );
+			fields_setused( f, pos[n] );
 		}
 		fprintf( outptr, "</%s>\n", origin[n].mods );
 	}
@@ -376,28 +425,56 @@ output_origin( fields *info, FILE *outptr, int level )
 }
 
 static void
-output_language( fields *info, FILE *outptr, int level )
+output_language_core( fields *f, int n, FILE *outptr, char *tag, int level )
 {
-	int n = fields_find( info, "LANGUAGE", level );
-	output_fill2( outptr, level, "language", info, n, 1 );
+	newstr usetag;
+	char *lang, *code;
+	lang = fields_value( f, n, FIELDS_CHRP );
+	code = iso639_2_from_language( lang );
+	newstr_init( &usetag );
+	newstr_addchar( &usetag, '<' );
+	newstr_strcat( &usetag, tag );
+	newstr_strcat( &usetag, ">\n" );
+	output_tab1( outptr, level, usetag.data );
+	output_fill4( outptr, increment_level(level,1),
+		"languageTerm", "type", "text", f, n, 1 );
+	if ( code ) {
+		output_tab6( outptr, increment_level(level,1),
+			"languageTerm", "type", "code", "authority", "iso639-2b",
+			code, 1 );
+	}
+	newstr_strcpy( &usetag, "</" );
+	newstr_strcat( &usetag, tag );
+	newstr_strcat( &usetag, ">\n" );
+	output_tab1( outptr, level, usetag.data );
+	newstr_free( &usetag );
 }
 
 static void
-output_description( fields *info, FILE *outptr, int level )
+output_language( fields *f, FILE *outptr, int level )
 {
-	int n = fields_find( info, "DESCRIPTION", level );
-	if (n != -1) {
+	int n;
+	n = fields_find( f, "LANGUAGE", level );
+	if ( n!=-1 )
+		output_language_core( f, n, outptr, "language", level );
+}
+
+static void
+output_description( fields *f, FILE *outptr, int level )
+{
+	int n = fields_find( f, "DESCRIPTION", level );
+	if ( n!=-1 ) {
 		output_tab1( outptr, level, "<physicalDescription>\n" );
-		output_fill2( outptr, increment_level(level,1), "note", info, n, 1 );
+		output_fill2( outptr, increment_level(level,1), "note", f, n, 1 );
 		output_tab1( outptr, level, "</physicalDescription>\n" );
 	}
 }
 
 static void
-output_toc( fields *info, FILE *outptr, int level )
+output_toc( fields *f, FILE *outptr, int level )
 {
-	int n = fields_find( info, "CONTENTS", level );
-	output_fill2( outptr, level, "tableOfContents", info, n, 1 );
+	int n = fields_find( f, "CONTENTS", level );
+	output_fill2( outptr, level, "tableOfContents", f, n, 1 );
 }
 
 /* detail output
@@ -407,14 +484,14 @@ output_toc( fields *info, FILE *outptr, int level )
  * <detail type="volume"><number>xxx</number></detail
  */
 static void
-mods_output_detail( fields *info, FILE *outptr, int item, char *item_name,
+mods_output_detail( fields *f, FILE *outptr, int item, char *item_name,
 		int level )
 {
 	if ( item==-1 ) return;
 	output_tab0( outptr, increment_level( level, 1 ) );
 	fprintf( outptr, "<detail type=\"%s\"><number>%s</number></detail>\n", 
-			item_name, info->data[item].data );
-	fields_setused( info, item );
+			item_name, f->data[item].data );
+	fields_setused( f, item );
 }
 
 
@@ -426,14 +503,14 @@ mods_output_detail( fields *info, FILE *outptr, int item, char *item_name,
  * </extent>
  */
 static void
-mods_output_extents( fields *info, FILE *outptr, int start, int end,
+mods_output_extents( fields *f, FILE *outptr, int start, int end,
 		int total, char *extype, int level )
 {
 	output_tab0( outptr, increment_level(level,1) );
 	fprintf( outptr, "<extent unit=\"%s\">\n", extype);
-	output_fill2( outptr, increment_level(level,2), "start", info, start, 1 );
-	output_fill2( outptr, increment_level(level,2), "end", info, end, 1 );
-	output_fill2( outptr, increment_level(level,2), "total", info, total, 1 );
+	output_fill2( outptr, increment_level(level,2), "start", f, start, 1 );
+	output_fill2( outptr, increment_level(level,2), "end", f, end, 1 );
+	output_fill2( outptr, increment_level(level,2), "total", f, total, 1 );
 	output_tab1 ( outptr, increment_level(level,1), "</extent>\n" );
 }
 
@@ -455,7 +532,7 @@ try_output_partfooter( FILE *outptr, int wrote_header, int level )
  *
  */
 static int
-output_partdate( fields *info, FILE *outptr, int level, int wrote_header )
+output_partdate( fields *f, FILE *outptr, int level, int wrote_header )
 {
 	convert parts[3] = {
 		{ "",	"PARTYEAR",                -1 },
@@ -464,26 +541,26 @@ output_partdate( fields *info, FILE *outptr, int level, int wrote_header )
 	};
 	int nparts = sizeof(parts)/sizeof(parts[0]);
 
-	if ( !find_alltags( info, parts, nparts, level ) ) return 0;
+	if ( !find_alltags( f, parts, nparts, level ) ) return 0;
 
 	try_output_partheader( outptr, wrote_header, level );
 	output_tab1( outptr, increment_level(level,1), "<date>" );
 
 	if ( parts[0].code!=-1 ) {
-		fprintf( outptr, "%s", info->data[ parts[0].code ].data);
-		fields_setused( info, parts[0].code );
+		fprintf( outptr, "%s", f->data[ parts[0].code ].data);
+		fields_setused( f, parts[0].code );
 	} else fprintf( outptr, "XXXX" );
 
 	if ( parts[1].code!=-1 ) {
-		fprintf( outptr, "-%s", info->data[parts[1].code].data );
-		fields_setused( info, parts[1].code );
+		fprintf( outptr, "-%s", f->data[parts[1].code].data );
+		fields_setused( f, parts[1].code );
 	}
 
 	if ( parts[2].code!=-1 ) {
 		if ( parts[1].code!=-1 ) fprintf( outptr, "-" );
 		else fprintf( outptr, "-XX-" );
-		fprintf( outptr, "%s", info->data[parts[2].code].data );
-		fields_setused( info, parts[2].code );
+		fprintf( outptr, "%s", f->data[parts[2].code].data );
+		fields_setused( f, parts[2].code );
 	}
 
 	fprintf( outptr,"</date>\n");
@@ -492,7 +569,7 @@ output_partdate( fields *info, FILE *outptr, int level, int wrote_header )
 }
 
 static int
-output_partpages( fields *info, FILE *outptr, int level, int wrote_header )
+output_partpages( fields *f, FILE *outptr, int level, int wrote_header )
 {
 	convert parts[3] = {
 		{ "",  "PAGESTART",                -1 },
@@ -501,25 +578,25 @@ output_partpages( fields *info, FILE *outptr, int level, int wrote_header )
 	};
 	int nparts = sizeof(parts)/sizeof(parts[0]);
 
-	if ( !find_alltags( info, parts, nparts, level ) ) return 0;
+	if ( !find_alltags( f, parts, nparts, level ) ) return 0;
 
 	try_output_partheader( outptr, wrote_header, level );
 
 	/* If PAGESTART or PAGEEND are  undefined */
 	if ( parts[0].code==-1 || parts[1].code==-1 ) {
 		if ( parts[0].code!=-1 )
-			mods_output_detail( info, outptr, parts[0].code,
+			mods_output_detail( f, outptr, parts[0].code,
 				"page", level );
 		if ( parts[1].code!=-1 )
-			mods_output_detail( info, outptr, parts[1].code,
+			mods_output_detail( f, outptr, parts[1].code,
 				"page", level );
 		if ( parts[2].code!=-1 )
-			mods_output_extents( info, outptr, -1, -1,
+			mods_output_extents( f, outptr, -1, -1,
 					parts[2].code, "page", level ); 
 	}
 	/* If both PAGESTART and PAGEEND are defined */
 	else {
-		mods_output_extents( info, outptr, parts[0].code, 
+		mods_output_extents( f, outptr, parts[0].code, 
 			parts[1].code, parts[2].code, "page", level ); 
 	}
 
@@ -527,7 +604,7 @@ output_partpages( fields *info, FILE *outptr, int level, int wrote_header )
 }
 
 static int
-output_partelement( fields *info, FILE *outptr, int level, int wrote_header )
+output_partelement( fields *f, FILE *outptr, int level, int wrote_header )
 {
 	convert parts[] = {
 		{ "volume",          "VOLUME",          -1 },
@@ -538,23 +615,24 @@ output_partelement( fields *info, FILE *outptr, int level, int wrote_header )
 		{ "session",         "SESSION",         -1 },
 		{ "articlenumber",   "ARTICLENUMBER",   -1 },
 		{ "part",            "PART",            -1 },
-		{ "chapter",         "CHAPTER",         -1 }
+		{ "chapter",         "CHAPTER",         -1 },
+		{ "report number",   "REPORTNUMBER",    -1 },
 	};
 	int i, nparts = sizeof( parts ) / sizeof( convert ), n;
 
-	n = fields_find( info, "NUMVOLUMES", level );
-	if ( !find_alltags( info, parts, nparts, level ) && n==-1 ) return 0;
+	n = fields_find( f, "NUMVOLUMES", level );
+	if ( !find_alltags( f, parts, nparts, level ) && n==-1 ) return 0;
 	try_output_partheader( outptr, wrote_header, level );
 
 	for ( i=0; i<nparts; ++i ) {
 		if ( parts[i].code==-1 ) continue;
-		mods_output_detail( info, outptr, parts[i].code, parts[i].mods,
+		mods_output_detail( f, outptr, parts[i].code, parts[i].mods,
 				level );
 	}
 
 	if ( n!=-1 ) {
 		output_tab1( outptr, level, "<extent unit=\"volumes\">\n" );
-		output_fill2( outptr, increment_level(level,1), "total", info, n, 1 );
+		output_fill2( outptr, increment_level(level,1), "total", f, n, 1 );
 		output_tab1( outptr, level, "</extent>\n" );
 	}
 
@@ -562,114 +640,126 @@ output_partelement( fields *info, FILE *outptr, int level, int wrote_header )
 }
 
 static void
-output_part( fields *info, FILE *outptr, int level )
+output_part( fields *f, FILE *outptr, int level )
 {
 	int wrote_hdr;
-	wrote_hdr  = output_partdate( info, outptr, level, 0 );
-	wrote_hdr += output_partelement( info, outptr, level, wrote_hdr );
-	wrote_hdr += output_partpages( info, outptr, level, wrote_hdr );
+	wrote_hdr  = output_partdate( f, outptr, level, 0 );
+	wrote_hdr += output_partelement( f, outptr, level, wrote_hdr );
+	wrote_hdr += output_partpages( f, outptr, level, wrote_hdr );
 	try_output_partfooter( outptr, wrote_hdr, level );
 }
 
 static void
-output_genre( fields *info, FILE *outptr, int level )
+output_recordInfo( fields *f, FILE *outptr, int level )
 {
-	int i, ismarc;
-	for ( i=0; i<info->nfields; ++i ) {
-		if ( info->level[i]!=level ) continue;
-		if ( strcasecmp( info->tag[i].data, "GENRE" ) ) continue;
-		if ( marc_findgenre( info->data[i].data )!=-1 ) ismarc = 1;
+	int n;
+	n = fields_find( f, "LANGCATALOG", level );
+	if ( n!=-1 ) {
+		output_tab1( outptr, level, "<recordInfo>\n" );
+		output_language_core( f, n, outptr, "languageOfCataloging", increment_level(level,1) );
+		output_tab1( outptr, level, "</recordInfo>\n" );
+	}
+}
+
+static void
+output_genre( fields *f, FILE *outptr, int level )
+{
+	int i, ismarc, n;
+	char *value;
+	n = fields_num( f );
+	for ( i=0; i<n; ++i ) {
+		if ( fields_level( f, i ) != level ) continue;
+		if ( !fields_match_tag( f, i, "GENRE" ) &&
+		     !fields_match_tag( f, i, "NGENRE" ) )
+			continue;
+		value = fields_value( f, i, FIELDS_CHRP );
+		if ( marc_findgenre( value )!=-1 ) ismarc = 1;
 		else ismarc = 0;
 		output_tab1( outptr, level, "<genre" );
 		if ( ismarc ) 
 			fprintf( outptr, " authority=\"marcgt\"" );
-		fprintf( outptr, ">%s</genre>\n", info->data[i].data );
-		fields_setused( info, i );
+		fprintf( outptr, ">%s</genre>\n", value );
+		fields_setused( f, i );
 	}
 }
 
 static void
-output_typeresource( fields *info, FILE *outptr, int level )
+output_typeresource( fields *f, FILE *outptr, int level )
 {
 	int n, ismarc = 0;
-	n = fields_find( info, "RESOURCE", level );
+	char *value;
+	n = fields_find( f, "RESOURCE", level );
 	if ( n!=-1 ) {
-		if ( marc_findresource( info->data[n].data )!=-1 ) ismarc = 1;
+		value = fields_value( f, n, FIELDS_CHRP );
+		if ( marc_findresource( value )!=-1 ) ismarc = 1;
 		if ( !ismarc ) {
-			fprintf( stderr, "Illegal typeofResource = '%s'\n",
-					info->data[n].data );
+			fprintf( stderr, "Illegal typeofResource = '%s'\n", value );
 		} else {
-			output_fill2( outptr, level, "typeOfResource", info, 
-				n, 1 );
+			output_fill2( outptr, level, "typeOfResource", f, n, 1 );
 		}
-		fields_setused( info, n );
+		fields_setused( f, n );
 	}
 }
 
 static void
-output_type( fields *info, FILE *outptr, int level )
-{
-	int n = fields_find( info, "INTERNAL_TYPE", 0 );
-	if ( n!=-1 ) fields_setused( info, n );
-	output_typeresource( info, outptr, level );
-	output_genre( info, outptr, level );
-}
-
-static void
-output_abs( fields *info, FILE *outptr, int level )
+output_type( fields *f, FILE *outptr, int level )
 {
-	int i;
-	int nabs = fields_find( info, "ABSTRACT", level );
-	output_fill2( outptr, level, "abstract", info, nabs, 1 );
-	for ( i=0; i<info->nfields; ++i ) {
-		if ( info->level[i]!=level ) continue;
-		if ( !strcasecmp( info->tag[i].data, "NOTES" ) )
-			output_fill2( outptr, level, "note", info, i, 1 );
-		if ( !strcasecmp( info->tag[i].data, "ANNOTE" ) )
-			output_fill2( outptr, level, "bibtex-annote", info, i, 1 );
-	}
+	int n = fields_find( f, "INTERNAL_TYPE", 0 );
+	if ( n!=-1 ) fields_setused( f, n );
+	output_typeresource( f, outptr, level );
+	output_genre( f, outptr, level );
 }
 
 static void
-output_timescited( fields *info, FILE *outptr, int level )
+output_abs( fields *f, FILE *outptr, int level )
 {
-	int n = fields_find( info, "TIMESCITED", level );
-	if ( n!=-1 ) {
-		output_tab0( outptr, level );
-		fprintf( outptr, "<note>Times Cited: %s</note>\n",
-				info->data[n].data );
-		fields_setused( info, n );
-	}
+	int nabs = fields_find( f, "ABSTRACT", level );
+	output_fill2( outptr, level, "abstract", f, nabs, 1 );
 }
 
 static void
-output_indexkey( fields *info, FILE *outptr, int level )
+output_notes( fields *f, FILE *outptr, int level )
 {
-	int n = fields_find( info, "BIBKEY", level );
-	if ( n!=-1 ) {
-		output_tab0( outptr, level );
-		fprintf( outptr, "<note>Key: %s</note>\n",
-				info->data[n].data );
-		fields_setused( info, n );
+	int i, n;
+	char *t;
+	n = fields_num( f );
+	for ( i=0; i<n; ++i ) {
+		if ( fields_level( f, i ) != level ) continue;
+		t = fields_tag( f, i, FIELDS_CHRP_NOUSE );
+		if ( !strcasecmp( t, "NOTES" ) )
+			output_fill2( outptr, level, "note", f, i, 1 );
+		else if ( !strcasecmp( t, "PUBSTATE" ) )
+			output_fill4( outptr, level, "note", "type", "publication status", f, i, 1 );
+		else if ( !strcasecmp( t, "ANNOTE" ) )
+			output_fill2( outptr, level, "bibtex-annote", f, i, 1 );
+		else if ( !strcasecmp( t, "TIMESCITED" ) )
+			output_fill4( outptr, level, "note", "type", "times cited", f, i, 1 );
+		else if ( !strcasecmp( t, "ANNOTATION" ) )
+			output_fill4( outptr, level, "note", "type", "annotation", f, i, 1 );
+		else if ( !strcasecmp( t, "ADDENDUM" ) )
+			output_fill4( outptr, level, "note", "type", "addendum", f, i, 1 );
+		else if ( !strcasecmp( t, "BIBKEY" ) )
+			output_fill4( outptr, level, "note", "type", "bibliography key", f, i, 1 );
 	}
 }
 
 static void
-output_key( fields *info, FILE *outptr, int level )
+output_key( fields *f, FILE *outptr, int level )
 {
-	int i;
-	for ( i=0; i<info->nfields; ++i ) {
-		if ( info->level[i]!=level ) continue;
-		if ( !strcasecmp( info->tag[i].data, "KEYWORD" ) ) {
+	int i, n;
+	n = fields_num( f );
+	for ( i=0; i<n; ++i ) {
+		if ( fields_level( f, i ) != level ) continue;
+		if ( !strcasecmp( f->tag[i].data, "KEYWORD" ) ) {
 			output_tab1( outptr, level, "<subject>\n" );
-			output_fill2( outptr, increment_level(level,1), "topic", info, i, 1 );
+			output_fill2( outptr, increment_level(level,1), "topic", f, i, 1 );
 			output_tab1( outptr, level, "</subject>\n" );
 		}
 	}
 }
 
 static void
-output_sn( fields *info, FILE *outptr, int level )
+output_sn( fields *f, FILE *outptr, int level )
 {
 	convert sn_types[] = {
 		{ "isbn",      "ISBN",      0 },
@@ -687,71 +777,82 @@ output_sn( fields *info, FILE *outptr, int level )
 		{ "isi",       "ISIREFNUM", 0 },
 		{ "accessnum", "ACCESSNUM", 0 },
 		{ "jstor",     "JSTOR",     0 },
+		{ "isrn",      "ISRN",      0 },
 	};
 	int n, ntypes = sizeof( sn_types ) / sizeof( sn_types[0] );
-	int       found, i;
+	int found, i, nfields;
 
-	found = fields_find ( info, "CALLNUMBER", level );
-	output_fill2( outptr, level, "classification", info, found, 1 );
+	found = fields_find ( f, "CALLNUMBER", level );
+	output_fill2( outptr, level, "classification", f, found, 1 );
 
 	for ( n=0; n<ntypes; ++n ) {
-		found = fields_find( info, sn_types[n].internal, level );
+		found = fields_find( f, sn_types[n].internal, level );
 		if ( found==-1 ) continue;
 		output_tab0( outptr, level );
 		fprintf( outptr, "<identifier type=\"%s\">%s</identifier>\n",
 				sn_types[n].mods,
-				info->data[found].data
+				f->data[found].data
 		       );
-		fields_setused( info, found );
+		fields_setused( f, found );
 	}
-	for ( i=0; i<info->nfields;++i ) {
-		if ( info->level[i]!=level ) continue;
-		if ( !strcasecmp( info->tag[i].data, "SERIALNUMBER" ) ) {
+	nfields = fields_num( f );
+	for ( i=0; i<nfields; ++i ) {
+		if ( f->level[i]!=level ) continue;
+		if ( !strcasecmp( f->tag[i].data, "SERIALNUMBER" ) ) {
 			output_tab0( outptr, level );
 			fprintf( outptr, "<identifier type=\"%s\">%s</identifier>\n",
-				"serial number", info->data[i].data );
-			fields_setused( info, i );
+				"serial number", f->data[i].data );
+			fields_setused( f, i );
 		}
 	}
 }
 
 static void
-output_url( fields *info, FILE *outptr, int level )
+output_url( fields *f, FILE *outptr, int level )
 {
-	int location = fields_find( info, "LOCATION", level );
-	int url = fields_find( info, "URL", level );
-	int fileattach = fields_find( info, "FILEATTACH", level );
-	int pdflink = fields_find( info, "PDFLINK", level );
-	int i;
-	if ( url==-1 && location==-1 && pdflink==-1 && fileattach==-1) return;
+	int location = fields_find( f, "LOCATION", level );
+	int url = fields_find( f, "URL", level );
+	int fileattach = fields_find( f, "FILEATTACH", level );
+	int pdflink = fields_find( f, "PDFLINK", level );
+	int i, n;
+	if ( url==-1 && location==-1 && pdflink==-1 && fileattach==-1 ) return;
 	output_tab1( outptr, level, "<location>\n" );
-	for ( i=0; i<info->nfields; ++i ) {
-		if ( info->level[i]!=level ) continue;
-		if ( !strcasecmp( info->tag[i].data, "URL" ) ) {
-			output_fill2( outptr, increment_level(level,1), "url", info, i, 1 );
-		} else if ( !strcasecmp( info->tag[i].data, "PDFLINK" ) ) {
+	n = fields_num( f );
+	for ( i=0; i<n; ++i ) {
+		if ( f->level[i]!=level ) continue;
+		if ( !strcasecmp( f->tag[i].data, "URL" ) ) {
+			output_fill2( outptr, increment_level(level,1), "url", f, i, 1 );
+		}
+	}
+	for ( i=0; i<n; ++i ) {
+		if ( f->level[i]!=level ) continue;
+		if ( !strcasecmp( f->tag[i].data, "PDFLINK" ) ) {
 			output_fill2( outptr, increment_level(level,1), "url",
-				/*"urlType", "pdf",*/ info, i, 1 );
-		} else if ( !strcasecmp( info->tag[i].data, "FILEATTACH" ) ){
+				/*"urlType", "pdf",*/ f, i, 1 );
+		}
+	}
+	for ( i=0; i<n; ++i ) {
+		if ( f->level[i]!=level ) continue;
+		if ( !strcasecmp( f->tag[i].data, "FILEATTACH" ) ){
 			output_tab0( outptr, increment_level(level,1) );
 			fprintf( outptr, "<url displayLabel=\"Electronic full text\" access=\"raw object\">" );
-			fprintf( outptr, " %s</url>\n", info->data[i].data );
-			fields_setused( info, i );
+			fprintf( outptr, "%s</url>\n", f->data[i].data );
+			fields_setused( f, i );
 		}
 	}
 	if ( location!=-1 )
-		output_fill2( outptr, increment_level(level,1), "physicalLocation", info, 
+		output_fill2( outptr, increment_level(level,1), "physicalLocation", f, 
 				location, 1 );
 	output_tab1( outptr, level, "</location>\n" );
 }
 
-/* refnum should start with a non-number and not include spaces */
+/* refnum should start with a non-number and not include spaces -- ignore this */
 static void
-output_refnum( fields *info, int n, FILE *outptr )
+output_refnum( fields *f, int n, FILE *outptr )
 {
-	char *p = info->data[n].data;
-	if ( p && ((*p>='0' && *p<='9') || *p=='-' || *p=='_' ))
-		fprintf( outptr, "ref" );
+	char *p = fields_value( f, n, FIELDS_CHRP_NOUSE );
+/*	if ( p && ((*p>='0' && *p<='9') || *p=='-' || *p=='_' ))
+		fprintf( outptr, "ref" );*/
 	while ( p && *p ) {
 		if ( !is_ws(*p) ) fprintf( outptr, "%c", *p );
 /*		if ( (*p>='A' && *p<='Z') ||
@@ -764,15 +865,15 @@ output_refnum( fields *info, int n, FILE *outptr )
 }
 
 static void
-output_head( fields *info, FILE *outptr, int dropkey, unsigned long numrefs )
+output_head( fields *f, FILE *outptr, int dropkey, unsigned long numrefs )
 {
 	int n;
 	fprintf( outptr, "<mods");
 	if ( !dropkey ) {
-		n = fields_find( info, "REFNUM", 0 );
+		n = fields_find( f, "REFNUM", 0 );
 		if ( n!=-1 ) {
 			fprintf( outptr, " ID=\"");
-			output_refnum( info, n, outptr );
+			output_refnum( f, n, outptr );
 			fprintf( outptr, "\"");
 		}
 	}
@@ -780,83 +881,125 @@ output_head( fields *info, FILE *outptr, int dropkey, unsigned long numrefs )
 }
 
 static int
-original_items( fields *info, int level )
+original_items( fields *f, int level )
 {
-	int i, targetlevel;
+	int i, targetlevel, n;
 	if ( level < 0 ) return 0;
 	targetlevel = -( level + 2 );
-	for ( i=0; i<info->nfields; ++i )
-		if ( info->level[i]==targetlevel ) return targetlevel;
+	n = fields_num( f );
+	for ( i=0; i<n; ++i ) {
+		if ( fields_level( f, i ) == targetlevel )
+			return targetlevel;
+	}
 	return 0;
 }
 
 static void
-output_citeparts( fields *info, FILE *outptr, int level, int max )
+output_citeparts( fields *f, FILE *outptr, int level, int max )
 {
 	int orig_level;
-	output_title( info, outptr, level );
-	output_names( info, outptr, level);
-	output_origin( info, outptr, level );
-	output_type( info, outptr, level );
-	output_language( info, outptr, level );
-	output_description( info, outptr, level );
-	if ( level>=0 && level < max ) {
+
+	output_title(       f, outptr, level );
+	output_names(       f, outptr, level );
+	output_origin(      f, outptr, level );
+	output_type(        f, outptr, level );
+	output_language(    f, outptr, level );
+	output_description( f, outptr, level );
+
+	if ( level >= 0 && level < max ) {
 		output_tab0( outptr, level );
 		fprintf( outptr, "<relatedItem type=\"host\">\n" );
-		output_citeparts(info, outptr, increment_level(level,1), max );
+		output_citeparts( f, outptr, increment_level(level,1), max );
 		output_tab0( outptr, level );
 		fprintf( outptr, "</relatedItem>\n");
 	}
 	/* Look for original item things */
-	orig_level = original_items( info, level );
+	orig_level = original_items( f, level );
 	if ( orig_level ) {
 		output_tab0( outptr, level );
 		fprintf( outptr, "<relatedItem type=\"original\">\n" );
-		output_citeparts( info, outptr, orig_level, max );
+		output_citeparts( f, outptr, orig_level, max );
 		output_tab0( outptr, level );
 		fprintf( outptr, "</relatedItem>\n" );
 	}
-	output_abs( info, outptr, level );
-	output_timescited( info, outptr, level );
-	output_indexkey( info, outptr, level );
-	output_toc( info, outptr, level );
-	output_key( info, outptr, level );
-	output_sn( info, outptr, level );
-	output_url( info, outptr, level );
-	/* as of MODS 3.1, <part> tags can be in the main items */
-	/*if ( level>0 ) */
-	output_part( info, outptr, level );
-}
-
-static void
-modsout_report_unused_tag( fields *info, int i, param *p, unsigned long numrefs )
-{
-	if ( p->progname ) fprintf( stderr, "%s: ", p->progname );
-	fprintf( stderr, "Ref %lu unused tag: '%s' value: '%s' level: %d\n",
-			numrefs+1, info->tag[i].data, info->data[i].data,
-			info->level[i] );
-}
-
-static void
-modsout_report_unused_tags( fields *info, param *p, unsigned long numrefs )
-{
-	int i;
-	for ( i=0; i<info->nfields; ++i ) {
-		if ( info->used[i] ) continue;
-		modsout_report_unused_tag( info, i, p, numrefs );
+	output_abs(        f, outptr, level );
+	output_notes(      f, outptr, level );
+	output_toc(        f, outptr, level );
+	output_key(        f, outptr, level );
+	output_sn(         f, outptr, level );
+	output_url(        f, outptr, level );
+	output_part(       f, outptr, level );
+
+	output_recordInfo( f, outptr, level );
+}
+
+static void
+modsout_report_unused_tags( fields *f, param *p, unsigned long numrefs )
+{
+	int i, n, nwritten, nunused = 0, level;
+	char *tag, *value;
+	n = fields_num( f );
+	for ( i=0; i<n; ++i ) {
+		if ( fields_used( f, i ) ) continue;
+		nunused++;
+	}
+	if ( nunused ) {
+		if ( p->progname ) fprintf( stderr, "%s: ", p->progname );
+		fprintf( stderr, "Reference %lu has unused tags.\n", numrefs+1 );
+		/* Find author from level 0 */
+		nwritten = 0;
+		for ( i=0; i<n; ++i ) {
+			if ( fields_level( f, i ) != 0 ) continue;
+			tag = fields_tag( f, i, FIELDS_CHRP_NOUSE );
+			if ( strncasecmp( tag, "AUTHOR", 6 ) ) continue;
+			value = fields_value( f, i, FIELDS_CHRP_NOUSE );
+			if ( nwritten==0 ) fprintf( stderr, "\tAuthor(s) (level=0):\n" );
+			fprintf( stderr, "\t\t'%s'\n", value );
+			nwritten++;
+		}
+		nwritten = 0;
+		for ( i=0; i<n; ++i ) {
+			if ( fields_level( f, i ) != 0 ) continue;
+			tag = fields_tag( f, i, FIELDS_CHRP_NOUSE );
+			if ( strcasecmp( tag, "YEAR" ) && strcasecmp( tag, "PARTYEAR" ) ) continue;
+			value = fields_value( f, i, FIELDS_CHRP_NOUSE );
+			if ( nwritten==0 ) fprintf( stderr, "\tYear(s) (level=0):\n" );
+			fprintf( stderr, "\t\t'%s'\n", value );
+			nwritten++;
+		}
+		nwritten = 0;
+		for ( i=0; i<n; ++i ) {
+			if ( fields_level( f, i ) != 0 ) continue;
+			tag = fields_tag( f, i, FIELDS_CHRP_NOUSE );
+			if ( strncasecmp( tag, "TITLE", 5 ) ) continue;
+			value = fields_value( f, i, FIELDS_CHRP_NOUSE );
+			if ( nwritten==0 ) fprintf( stderr, "\tTitle(s) (level=0):\n" );
+			fprintf( stderr, "\t\t'%s'\n", value );
+			nwritten++;
+		}
+	
+		fprintf( stderr, "\tUnused tags:\n" );
+		for ( i=0; i<n; ++i ) {
+			if ( fields_used( f, i ) ) continue;
+			tag   = fields_tag(   f, i, FIELDS_CHRP_NOUSE );
+			value = fields_value( f, i, FIELDS_CHRP_NOUSE );
+			level = fields_level( f, i );
+			fprintf( stderr, "\t\ttag: '%s' value: '%s' level: %d\n",
+				tag, value, level );
+		}
 	}
 }
 
 void
-modsout_write( fields *info, FILE *outptr, param *p, unsigned long numrefs )
+modsout_write( fields *f, FILE *outptr, param *p, unsigned long numrefs )
 {
 	int max, dropkey;
-	max = fields_maxlevel( info );
+	max = fields_maxlevel( f );
 	dropkey = ( p->format_opts & MODSOUT_DROPKEY );
 
-	output_head( info, outptr, dropkey, numrefs );
-	output_citeparts( info, outptr, 0, max );
-	modsout_report_unused_tags( info, p, numrefs );
+	output_head( f, outptr, dropkey, numrefs );
+	output_citeparts( f, outptr, 0, max );
+	modsout_report_unused_tags( f, p, numrefs );
 
 	fprintf( outptr, "</mods>\n" );
 	fflush( outptr );
@@ -866,7 +1009,8 @@ void
 modsout_writeheader( FILE *outptr, param *p )
 {
 	if ( p->utf8bom ) utf8_writebom( outptr );
-	fprintf(outptr,"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n");
+	fprintf(outptr,"<?xml version=\"1.0\" encoding=\"%s\"?>\n",
+			charset_get_xmlname( p->charsetout ) );
 	fprintf(outptr,"<modsCollection xmlns=\"http://www.loc.gov/mods/v3\">\n");
 }
 
diff --git a/lib/modsout.h b/lib/modsout.h
index e723ec6..1520bbf 100644
--- a/lib/modsout.h
+++ b/lib/modsout.h
@@ -1,9 +1,9 @@
 /*
  * modsout.h
  *
- * Copyright (c) Chris Putnam 2003-2009
+ * Copyright (c) Chris Putnam 2003-2013
  *
- * Source code released under the GPL
+ * Source code released under the GPL version 2
  *
  */
 #ifndef MODSOUT_H
diff --git a/lib/modstypes.c b/lib/modstypes.c
index 47dd440..9041c65 100644
--- a/lib/modstypes.c
+++ b/lib/modstypes.c
@@ -1,3 +1,11 @@
+/*
+ * modstypes.c
+ *
+ * Copyright (c) Chris Putnam 2004-2013
+ *
+ * Source code released under the GPL version 2
+ *      
+ */
 #include <stdio.h>
 #include <string.h>
 #include "modstypes.h"
diff --git a/lib/modstypes.h b/lib/modstypes.h
index 0204dd3..dbeaa14 100644
--- a/lib/modstypes.h
+++ b/lib/modstypes.h
@@ -1,9 +1,9 @@
 /*
  * modstypes.h
  *
- * Copyright (c) Chris Putnam 2008-9
+ * Copyright (c) Chris Putnam 2008-2013
  *
- * Program and source code released under the GPL
+ * Source code released under the GPL version 2
  *
  */
 #ifndef MODSTYPES_H
diff --git a/lib/mycvout.c b/lib/mycvout.c
index c6212d9..6b653fa 100644
--- a/lib/mycvout.c
+++ b/lib/mycvout.c
@@ -1,9 +1,9 @@
 /*
  * bibtexout.c
  *
- * Copyright (c) Chris Putnam 2003-2010
+ * Copyright (c) Chris Putnam 2003-2013
  *
- * Program and source code released under the GPL
+ * Source code released under the GPL version 2
  *
  */
 #include <stdio.h>
@@ -70,7 +70,7 @@ output_citekey( FILE *fp, fields *info, unsigned long refnum, int format_opts )
 		p = info->data[n].data;
 		while ( p && *p && *p!='|' ) {
 			if ( format_opts & BIBOUT_STRICTKEY ) {
-				if ( isdigit(*p) || (*p>='A' && *p<='Z') ||
+				if ( isdigit((unsigned char)*p) || (*p>='A' && *p<='Z') ||
 				     (*p>='a' && *p<='z' ) )
 					fprintf( fp, "%c", *p );
 			}
@@ -191,7 +191,7 @@ output_type( FILE *fp, int type, int format_opts )
 		len = strlen( s );
 		fprintf( fp, "@" );
 		for ( i=0; i<len; ++i )
-			fprintf( fp, "%c", toupper(s[i]) );
+			fprintf( fp, "%c", toupper((unsigned char)s[i]) );
 		fprintf( fp, "{" );
 	}
 }
@@ -207,7 +207,7 @@ output_element( FILE *fp, char *tag, char *data, int format_opts )
 	else {
 		len = strlen( tag );
 		for ( i=0; i<len; ++i )
-			fprintf( fp, "%c", toupper(tag[i]) );
+			fprintf( fp, "%c", toupper((unsigned char)tag[i]) );
 	}
 	if ( format_opts & BIBOUT_WHITESPACE ) fprintf( fp, " = \t" );
 	else fprintf( fp, "=" );
diff --git a/lib/name.c b/lib/name.c
index b391c3c..e0c2792 100644
--- a/lib/name.c
+++ b/lib/name.c
@@ -3,311 +3,469 @@
  *
  * mangle names w/ and w/o commas
  *
- * Copyright (c) Chris Putnam 2004-2010
+ * Copyright (c) Chris Putnam 2004-2013
  *
- * Source code released under the GPL
+ * Source code released under the GPL version 2
  *
  */
 #include <stdio.h>
 #include <ctype.h>
 #include <string.h>
+#include "utf8.h"
+#include "unicode.h"
 #include "is_ws.h"
 #include "newstr.h"
 #include "fields.h"
 #include "list.h"
+#include "intlist.h"
 #include "name.h"
 
-static void
-check_case( char *start, char *end, int *upper, int *lower )
+/* name_build_withcomma()
+ *
+ * reconstruct parsed names in format: 'family|given|given||suffix'
+ * to 'family suffix, given given
+ */
+void
+name_build_withcomma( newstr *s, char *p )
 {
-	int u = 0, l = 0;
-	char *p = start;
-	while ( p < end ) {
-		if ( islower( *p ) ) l = 1;
-		else if ( isupper( *p ) ) u = 1;
-		p++;
-	}
-	*upper = u;
-	*lower = l;
-}
+	int nseps = 0, nch;
+	char *suffix, *stopat;
 
-static int
-should_split( char *last_start, char *last_end, char *first_start, 
-	char *first_end )
-{
-	int upperlast, lowerlast, upperfirst, lowerfirst;
-        check_case( first_start, first_end, &upperfirst, &lowerfirst );
-        check_case( last_start,  last_end,  &upperlast,  &lowerlast );
-        if ( ( upperlast && lowerlast ) && ( upperfirst && !lowerfirst ) )
-                return 1;
-        else return 0;
+	newstr_empty( s );
+
+	suffix = strstr( p, "||" );
+	if ( suffix ) stopat = suffix;
+	else stopat = strchr( p, '\0' );
+
+	 while ( p != stopat ) {
+		nch = 0;
+		if ( nseps==1 ) {
+			if ( suffix ) {
+				newstr_addchar( s, ' ' );
+				newstr_strcat( s, suffix+2 );
+			}
+			newstr_addchar( s, ',' );
+		}
+		if ( nseps ) newstr_addchar( s, ' ' );
+		while ( p!=stopat && *p!='|' ) {
+			newstr_addchar( s, *p++ );
+			nch++;
+		}
+		if ( p!=stopat && *p=='|' ) p++;
+		if ( nseps!=0 && nch==1 ) newstr_addchar( s, '.' );
+		nseps++;
+	}
 }
 
-/* name_addmultibytechar
- * 
- * Add character to newstring s starting at pointer p.
- *
- * Handles the case for multibyte Unicode chars (with high bits
- * set).  Do not progress past the lastp barrier.
+/* name_findetal()
  *
- * Since we can progress more than one byte in the string,
- * return the properly updated pointer p.
+ * Returns number of final tokens to be skipped in processing
+ * of name lists.
  */
-static char *
-name_addmultibytechar( newstr *s, char *p, char *lastp )
+int
+name_findetal( list *tokens )
 {
-	if ( ! ((*p) & 128) ) {
-		newstr_addchar( s, *p );
-		p++;
-	} else {
-		while ( p!=lastp && ((*p) & 128) ) {
-			newstr_addchar( s, *p );
-			p++;
+	newstr *s1, *s2;
+
+	if ( tokens->n==0 ) return 0;
+
+	/* ...check last entry for full 'et al.' or variant */
+	s2 = list_get( tokens, tokens->n - 1 );
+	if ( !strcasecmp( s2->data, "et alia" ) ||
+	     !strcasecmp( s2->data, "et al." )  ||
+	     !strcasecmp( s2->data, "et al.," )  ||
+	     !strcasecmp( s2->data, "et al" )   ||
+	     !strcasecmp( s2->data, "etalia" )  ||
+	     !strcasecmp( s2->data, "etal." ) ||
+	     !strcasecmp( s2->data, "etal" ) ) {
+		return 1;
+	}
+
+	if ( tokens->n==1 ) return 0;
+
+	/* ...check last two entries for full 'et' and 'al.' */
+	s1 = list_get( tokens, tokens->n - 2 );
+	if ( !strcasecmp( s1->data, "et" ) ) {
+		if ( !strcasecmp( s2->data, "alia" ) ||
+		     !strcasecmp( s2->data, "al." )  ||
+		     !strcasecmp( s2->data, "al.," )  ||
+		     !strcasecmp( s2->data, "al" ) ) {
+			return 2;
 		}
 	}
-	return p;
+
+	return 0;
 }
 
-static void
-name_givennames_nosplit( char *start_first, char *end_first, newstr *outname )
+#define WITHCOMMA (1)
+#define JUNIOR    (2)
+#define SENIOR    (4)
+#define THIRD     (8)
+#define FOURTH    (16)
+
+typedef struct {
+	char *s;
+	unsigned short value;
+} suffix_value_t;
+
+static int
+identify_suffix( char *p )
 {
-	char *p;
-	p = start_first;
-	while ( p!=end_first ) {
-		if ( !is_ws( *p ) && *p!='.' ) {
-			p = name_addmultibytechar( outname, p, end_first );
-		} else {
-			if ( *p=='.' ) p++;
-			while ( p!=end_first && is_ws( *p ) ) p++;
-			if ( p!=end_first )
-				newstr_addchar( outname, '|' );
+	suffix_value_t suffixes[] = {
+		{ "Jr."   ,   JUNIOR              },
+		{ "Jr"    ,   JUNIOR              },
+		{ "Jr.,"  ,   JUNIOR | WITHCOMMA },
+		{ "Jr,"   ,   JUNIOR | WITHCOMMA },
+		{ "Sr."   ,   SENIOR              },
+		{ "Sr"    ,   SENIOR              },
+		{ "Sr.,"  ,   SENIOR | WITHCOMMA },
+		{ "Sr,"   ,   SENIOR | WITHCOMMA },
+		{ "III"   ,   THIRD               },
+		{ "III,"  ,   THIRD  | WITHCOMMA },
+		{ "IV"    ,   FOURTH              },
+		{ "IV,"   ,   FOURTH | WITHCOMMA },
+	};
+	int i, nsuffixes = sizeof( suffixes ) / sizeof( suffixes[0] );
+	for ( i=0; i<nsuffixes; ++i ) {
+		if ( !strcmp( p, suffixes[i].s ) )
+			return suffixes[i].value;
+	}
+	return 0;
+}
+
+static int
+has_suffix( list *tokens, int begin, int end, int *suffixpos )
+{
+	int i, ret;
+	newstr *s;
+
+	/* ...check last element, e.g. "H. F. Author, Sr." */
+	s = list_get( tokens, end - 1 );
+	ret = identify_suffix( s->data );
+	if ( ret ) {
+		*suffixpos = end - 1;
+		return ret;
+	}
+
+	/* ...try to find one after a comma, e.g. "Author, Sr., H. F." */
+	for ( i=begin; i<end-1; ++i ) {
+		s = list_get( tokens, i );
+		if ( s->len && s->data[ s->len - 1 ]==',' ) {
+			s = list_get( tokens, i+1 );
+			ret = identify_suffix( s->data );
+			if ( ret ) {
+				*suffixpos = i+1;
+				return ret;
+			}
 		}
 	}
+
+	return 0;
 }
 
-static void
-name_givennames_split( char *start_first, char *end_first, newstr *outname )
+static int
+add_given_split( newstr *name, newstr *s )
 {
-	int n = 0;
-	char *p;
-	p = start_first;
-	while ( p!=end_first ) {
-		if ( !is_ws( *p ) ) {
-			if ( *p=='.' && *(p+1)=='-' ) {
-				newstr_strcat( outname, ".-" );
-				p++; p++;
-				p = skip_ws( p );
-				p = name_addmultibytechar( outname, p, end_first );
-				newstr_addchar( outname, '.' );
-				n++;
-			} else if ( *p=='.' ) {
-				p++;
-			} else if ( *p=='-' ) {
-				newstr_strcat( outname, ".-" );
-				p++;
-				p = skip_ws( p );
-				p = name_addmultibytechar( outname, p, end_first );
-				newstr_addchar( outname, '.' );
-				n++;
-			} else {
-				if ( n ) newstr_addchar( outname, '|' );
-				p = name_addmultibytechar( outname, p, end_first );
-				n++;
+	unsigned int unicode_char;
+	unsigned int pos = 0;
+	char utf8s[7];
+	while ( pos < s->len ) {
+		unicode_char = utf8_decode( s->data, &pos );
+		if ( is_ws( (char) unicode_char ) ) continue;
+		else if ( unicode_char==(unsigned int)'.' ) {
+			if ( s->data[pos]=='-' ) {
+				newstr_strcat( name, ".-" );
+				pos += 1;
+				unicode_char = utf8_decode( s->data, &pos );
+				utf8_encode_str( unicode_char, utf8s );
+				newstr_strcat( name, utf8s );
+				newstr_addchar( name, '.' );
 			}
+		} else if ( unicode_char==(unsigned int)'-' ) {
+			newstr_strcat( name, ".-" );
+			unicode_char = utf8_decode( s->data, &pos );
+			utf8_encode_str( unicode_char, utf8s );
+			newstr_strcat( name, utf8s );
+			newstr_addchar( name, '.' );
+		} else if ( unicode_char==(unsigned int)',' ) { /* nothing */
 		} else {
-			while ( p!=end_first && is_ws( *p ) ) p++;
+			newstr_addchar( name, '|' );
+			utf8_encode_str( unicode_char, utf8s );
+			newstr_strcat( name, utf8s );
 		}
 	}
+	return 1;
 }
 
-static void
-name_givennames( char *first_start, char *first_end, char *last_start,
-	char *last_end, newstr *outname )
+static unsigned char
+token_has_no_upper( list *tokens, int n )
 {
-	int splitfirst;
-        newstr_addchar( outname, '|' );
-	splitfirst = should_split( last_start, last_end, first_start, 
-		first_end );
-	if ( !splitfirst )
-		name_givennames_nosplit( first_start, first_end, outname );
-	else 
-		name_givennames_split( first_start, first_end, outname );
+	unsigned short m;
+	newstr *s;
+	s = list_get( tokens, n );
+	m = unicode_utf8_classify_newstr( s );
+	if ( m & UNICODE_UPPER ) return 0;
+	else return 1;
 }
 
-static char *
-string_end( char *p )
+static unsigned char
+token_has_upper( list *tokens, int n )
 {
-	while ( *p ) p++;
-	return p;
+	if ( token_has_no_upper( tokens, n ) ) return 0;
+	else return 1;
 }
 
-
-/* name_nocomma()
- *
- * names in the format "H. F. Author"
- */
-void
-name_nocomma( char *start, newstr *outname )
+static int
+name_multielement_nocomma( intlist *given, intlist *family, list *tokens, int begin, int end, int suffixpos )
 {
-        char *p, *last_start, *last_end, *first_start, *first_end;
-
-        /** Last name **/
-	p = last_end = string_end( start );
-	while ( p!=start && !is_ws( *p ) ) p--;
-	if ( !strcasecmp( p+1, "Jr." ) || !strcasecmp( p+1, "III" ) ) {
-		while ( p!=start && is_ws( *p ) ) p--;
-		while ( p!=start && !is_ws( *p ) ) p--;
+	int family_start, family_end;
+	int i, n;
+
+	/* ...family name(s) */
+	family_start = family_end = end - 1;
+	if ( family_start == suffixpos ) family_start = family_end = end - 2;
+
+	/* ...if family name is capitalized, then look for first non-capitalized
+	 * ...token and combine range to family name, e.g. single quoted parts of
+	 * ..."Ludwig 'von Beethoven'"
+	 * ..."Johannes Diderik 'van der Waals'"
+	 * ..."Charles Louis Xavier Joseph 'de la Valla Poussin' */
+	if ( token_has_upper( tokens, family_start ) ) {
+		i = family_start - 1;
+		n = -1;
+		while ( i >= begin && ( n==-1 || token_has_no_upper( tokens, i ) ) ) {
+			if ( token_has_no_upper( tokens, i ) ) n = i;
+			i--;
+		}
+		if ( n != -1 ) family_start = n;
 	}
-	last_start = p = skip_ws( p );
-        while ( p!=last_end )
-                newstr_addchar( outname, *p++ );
-
-        /** Given names **/
-        if ( start!=last_start ) {
-		first_start = skip_ws( start );
-		first_end = last_start;
-		while ( first_end!=first_start && !is_ws( *first_end ) )
-			first_end--;
-		name_givennames( first_start, last_start, last_start, last_end, 
-			outname );
+	for ( i=family_start; i<family_end+1; i++ )
+		intlist_add( family, i );
+
+	/* ...given names */
+	for ( i=begin; i<end-1; i++ ) {
+		if ( i>=family_start && i<=family_end ) continue;
+		if ( i==suffixpos ) continue;
+		intlist_add( given, i );
 	}
+
+	return 1;
 }
 
-/*
- * name_comma()
- *
- * names in the format "Author, H.F.", w/comma
- */
-void
-name_comma( char *p, newstr *outname )
+static int
+name_multielement_comma( intlist *given, intlist *family, list *tokens, int begin, int end, int comma, int suffixpos )
 {
-	char *start_first, *end_first, *start_last, *end_last;
+	newstr *s;
+	int i;
 
-	/** Last name **/
-	start_last = end_last = skip_ws( p );
-	while ( *p && ( *p!=',' ) ) {
-		newstr_addchar( outname, *p++ );
-		end_last = p;
+	/* ...family names */
+	for ( i=begin; i<comma; ++i ) {
+		if ( i==suffixpos ) continue;
+		intlist_add( family, i );
 	}
-
-	/** Given names **/
-	if ( *p==',' ) p++;
-	start_first = skip_ws( p );
-	if ( *start_first ) {
-		end_first = string_end( start_first );
-		name_givennames( start_first, end_first, start_last, end_last, 
-				outname );
+	s = list_get( tokens, comma );
+	newstr_trimend( s, 1 ); /* remove comma */
+	intlist_add( family, comma );
+
+	/* ...given names */
+	for ( i=comma+1; i<end; ++i ) {
+		if ( i==suffixpos ) continue;
+		intlist_add( given, i );
 	}
+
+	return 1;
 }
 
-/* Determine if name is of type "corporate" or if it
- * should be added "as-is"; both should not be mangled.
- *
- * First check tag for prefixes ":CORP" and ":ASIS",
- * then optionally check lists, bailing if "corporate"
- * type can be identified.
- *
- * "corporate" is the same as "as-is" plus getting 
- * special MODS treatment, so "corporate" type takes
- * priority
- */
-static void
-name_determine_flags( int *ctf, int *clf, int *atf, int *alf, char *tag, char *data, list *asis, list *corps )
+static int
+name_mutlielement_build( newstr *name, intlist *given, intlist *family, list *tokens )
 {
-	int corp_tag_flag = 0, corp_list_flag = 0;
-	int asis_tag_flag = 0, asis_list_flag = 0;
+	unsigned short case_given = 0, case_family = 0, should_split = 0;
+	newstr *s;
+	int i, m;
+
+	/* ...copy and analyze family name */
+	for ( i=0; i<family->n; ++i ) {
+		m = intlist_get( family, i );
+		s = list_get( tokens, m );
+		if ( i ) newstr_addchar( name, ' '  );
+		newstr_newstrcat( name, s );
+		case_family |= unicode_utf8_classify_newstr( s );
+	}
 
-	if ( strstr( tag, ":CORP" ) ) corp_tag_flag = 1;
-	else if ( list_find( corps, data ) != -1 )
-		corp_list_flag = 1;
+	/* ...check given name case */
+	for ( i=0; i<given->n; ++i ) {
+		m = intlist_get( given, i );
+		s = list_get( tokens, m );
+		case_given |= unicode_utf8_classify_newstr( s );
+	}
 
-	if ( strstr( tag, ":ASIS" ) ) {
-		asis_tag_flag = 1;
-		if ( list_find( corps, data ) != -1 )
-			corp_list_flag = 1;
-	} else {
-		if ( list_find( corps, data ) != -1 )
-			corp_list_flag = 1;
-		else if ( list_find( asis, data ) != -1 )
-			asis_list_flag = 1;
+	if ( ( ( case_family & UNICODE_MIXEDCASE ) == UNICODE_MIXEDCASE ) &&
+	     ( ( case_given  & UNICODE_MIXEDCASE ) == UNICODE_UPPER ) ) {
+		should_split = 1;
 	}
 
-	*ctf = corp_tag_flag;
-	*clf = corp_list_flag;
-	*atf = asis_tag_flag;
-	*alf = asis_list_flag;
+	for ( i=0; i<given->n; ++i ) {
+		m = intlist_get( given, i );
+		s = list_get( tokens, m );
+		if ( !should_split ) {
+			newstr_addchar( name, '|' );
+			newstr_newstrcat( name, s );
+		} else add_given_split( name, s );
+	}
+	return 1;
 }
 
-/*
- * return 1 on a nomangle with a newtag value
- * return 0 on a name to mangle
- */
 static int
-name_nomangle( char *tag, char *data, newstr *newtag, list *asis, list *corps )
+name_construct_multi( newstr *outname, list *tokens, int begin, int end )
 {
-	int corp_tag_flag, corp_list_flag;
-	int asis_tag_flag, asis_list_flag;
-	name_determine_flags( &corp_tag_flag, &corp_list_flag,
-		&asis_tag_flag, &asis_list_flag, tag, data, asis, corps );
-	if ( corp_tag_flag || corp_list_flag || asis_tag_flag || asis_list_flag ) {
-		newstr_strcpy( newtag, tag );
-		if ( corp_tag_flag ) { /* do nothing else */
-		} else if ( corp_list_flag && !asis_tag_flag ) {
-			newstr_strcat( newtag, ":CORP" );
-		} else if ( corp_list_flag && asis_tag_flag ) {
-			newstr_findreplace( newtag, ":ASIS", ":CORP" );
-		} else if ( asis_tag_flag ) { /* do nothing else */
-		} else if ( asis_list_flag ) {
-			newstr_strcat( newtag, ":ASIS" );
+	int i, suffix, suffixpos=-1, comma=-1;
+	intlist given, family;
+	newstr *s;
+
+	intlist_init( &family );
+	intlist_init( &given );
+
+	newstr_empty( outname );
+
+	suffix = has_suffix( tokens, begin, end, &suffixpos );
+
+	for ( i=begin; i<end && comma==-1; i++ ) {
+		if ( i==suffixpos ) continue;
+		s = list_get( tokens, i );
+		if ( s->data[ s->len -1 ] == ',' ) {
+			if ( suffix && i==suffixpos-1 && !(suffix&WITHCOMMA) )
+				newstr_trimend( s, 1 );
+			else
+				comma = i;
 		}
-		return 1;
 	}
-	else return 0;
+
+	if ( comma != -1 )
+		name_multielement_comma( &given, &family, tokens, begin, end, comma, suffixpos );
+	else
+		name_multielement_nocomma( &given, &family, tokens, begin, end, suffixpos );
+
+	name_mutlielement_build( outname, &given, &family, tokens );
+
+	if ( suffix ) {
+		if ( suffix & JUNIOR ) newstr_strcat( outname, "||Jr." );
+		if ( suffix & SENIOR ) newstr_strcat( outname, "||Sr." );
+		if ( suffix & THIRD  ) newstr_strcat( outname, "||III" );
+		if ( suffix & FOURTH ) newstr_strcat( outname, "||IV"  );
+	}
+
+	intlist_free( &given );
+	intlist_free( &family );
+
+	return 1;
 }
 
-static void
-name_person( fields *info, char *tag, int level, newstr *inname )
+int
+name_addmultielement( fields *info, char *tag, list *tokens, int begin, int end, int level )
 {
-	newstr outname;
-	newstr_init( &outname );
-	if ( strchr( inname->data, ',' ) ) 
-		name_comma( inname->data, &outname );
-	else
-		name_nocomma( inname->data, &outname );
-	if ( outname.len!=0 )
-		fields_add( info, tag, outname.data, level );
-	newstr_free( &outname );
+	newstr name;
+	int ok;
+
+	newstr_init( &name );
+
+	name_construct_multi( &name, tokens, begin, end );
+	ok = fields_add( info, tag, name.data, level );
+
+	newstr_free( &name );
+
+	return ok;
+}
+
+
+/* name_addsingleelement()
+ *
+ * Treat names that are single tokens, e.g. {Random Corporation, Inc.} in bibtex
+ * as a name that should not be mangled (e.g. AUTHOR:ASIS or AUTHOR:CORP, if corp
+ * is set).
+ */
+int
+name_addsingleelement( fields *info, char *tag, char *name, int level, int corp )
+{
+	newstr outtag;
+	int ok;
+	newstr_init( &outtag );
+	newstr_strcpy( &outtag, tag );
+	if ( !corp ) newstr_strcat( &outtag, ":ASIS" );
+	else newstr_strcat( &outtag, ":CORP" );
+	ok = fields_add( info, outtag.data, name, level );
+	newstr_free( &outtag );
+	return ok;
 }
 
 /*
- * name_process
+ * Takes a single name in a string and parses it.
+ * Skipped by bibtex/biblatex that come pre-parsed.
  *
- * returns 1 if "et al." needs to be added to the list globally
+ * Returns 0 on error.
+ * Returns 1 on ok.
+ * Returns 2 on ok and name in asis list
+ * Returns 3 on ok and name in corps list
  */
-static int
-name_process( fields *info, char *tag, int level, newstr *inname, list *asis, list *corps )
+int
+name_parse( newstr *outname, newstr *inname, list *asis, list *corps )
 {
-	newstr newtag;
-	int add_etal = 0;
+	list tokens;
+	int ret = 1;
+
+	newstr_empty( outname );
+	if ( !inname || !inname->len ) return ret;
+
+	list_init( &tokens );
+
+	if ( asis && list_find( asis, inname->data ) !=-1 ) {
+		newstr_newstrcpy( outname, inname );
+		ret = 2;
+		goto out;
+	} else if ( corps && list_find( corps, inname->data ) != -1 ) {
+		newstr_newstrcpy( outname, inname );
+		ret = 3;
+		goto out;
+	}
 
-	/* keep "names" like " , " from coredumping program */
-	if ( !inname->len ) return 0;
+	newstr_findreplace( inname, ",", ", " );
+	list_tokenize( &tokens, inname, ' ', 1 );
 
-	/* identify and process asis or corps names */
-	newstr_init( &newtag );
-	if ( name_nomangle( tag, inname->data, &newtag, asis, corps ) ) {
-		fields_add( info, newtag.data, inname->data, level );
+	if ( tokens.n==1 ) {
+		newstr_newstrcpy( outname, inname );
+		ret = 2;
 	} else {
-		if ( strstr( inname->data, "et al." ) ) {
-			add_etal = 1;
-			newstr_findreplace( inname, "et al.", "" );
-		}
-		if ( inname->len ) {
-			name_person( info, tag, level, inname );
-		}
+		name_construct_multi( outname, &tokens, 0, tokens.n );
+		ret = 1;
 	}
-	newstr_free( &newtag );
-	return add_etal;
+
+out:
+
+	list_free( &tokens );
+
+	return ret;
+}
+
+static char *
+name_copy( newstr *name, char *p )
+{
+	char *start, *end, *q;
+
+	newstr_empty( name );
+
+	start = p = skip_ws( p );
+
+	/* strip tailing whitespace and commas */
+	while ( *p && *p!='|' ) p++;
+
+	end = p;
+	while ( is_ws( *end ) || *end==',' || *end=='|' || *end=='\0' )
+		end--;
+	if ( *p=='|' ) p++;
+
+	for ( q=start; q<=end; q++ )
+		newstr_addchar( name, *q );
+
+	return p;
 }
 
 /*
@@ -325,57 +483,39 @@ name_process( fields *info, char *tag, int level, newstr *inname, list *asis, li
  * on if the author name is in the format "H. F. Author" or
  * "Author, H. F."
  */
-void
+int
 name_add( fields *info, char *tag, char *q, int level, list *asis, list *corps )
 {
-	newstr inname, newtag;
-	char *p, *start, *end;
-	int add_etal = 0;
+	int ok, nametype, ret = 1;
+	newstr inname, outname;
+	list tokens;
 
-	if ( !q ) return;
+	if ( !q ) return 0;
 
-	newstr_init( &inname );
-	newstr_init( &newtag );
+	list_init( &tokens );
+	newstrs_init( &inname, &outname, NULL );
 
 	while ( *q ) {
 
-		start = q = skip_ws( q );
-
-		/* strip tailing whitespace and commas */
-		while ( *q && *q!='|' ) q++;
-		end = q;
-		while ( is_ws( *end ) || *end==',' || *end=='|' || *end=='\0' )
-			end--;
-
-		for ( p=start; p<=end; p++ )
-			newstr_addchar( &inname, *p );
-
-		add_etal += name_process( info, tag, level, &inname, asis, corps );
-#if 0
-		/* keep "names" like " , " from coredumping program */
-		if ( inname.len ) {
-			if ( name_nomangle( tag, inname.data, &newtag, asis, corps ) ) {
-				fields_add( info, newtag.data, inname.data, level );
-				newstr_empty( &newtag );
-			} else {
-				if ( strstr( inname.data, "et al." ) ) {
-					add_etal=1;
-					newstr_findreplace( &inname, "et al.", "" );
-				}
-				if ( inname.len ) name_person( info, tag, level, &inname, asis, corps );
-			}
-			newstr_empty( &inname );
-		}
-#endif
+		q = name_copy( &inname, q );
+
+		nametype = name_parse( &outname, &inname, asis, corps );
+		if ( !nametype ) return 0;
+
+		if ( nametype==1 )
+			ok = fields_add( info, tag, outname.data, level );
+		else if ( nametype==2 )
+			ok = name_addsingleelement( info, tag, outname.data, level, 0 );
+		else
+			ok = name_addsingleelement( info, tag, outname.data, level, 1 );
+
+		if ( !ok ) { ret = 0; goto out; }
 
-		newstr_empty( &inname );
-		if ( *q=='|' ) q++;
-	}
-	if ( add_etal ) {
-		newstr_strcpy( &newtag, tag );
-		newstr_strcat( &newtag, ":ASIS" );
-		fields_add( info, newtag.data, "et al.", level );
 	}
-	newstr_free( &inname );
-	newstr_free( &newtag );
+
+out:
+	newstrs_free( &inname, &outname, NULL );
+	newstr_free( &outname );
+
+	return ret;
 }
diff --git a/lib/name.h b/lib/name.h
index 46f1e71..fbad2cf 100644
--- a/lib/name.h
+++ b/lib/name.h
@@ -3,9 +3,9 @@
  *
  * mangle names w/ and w/o commas
  *
- * Copyright (c) Chris Putnam 2004-2009
+ * Copyright (c) Chris Putnam 2004-2013
  *
- * Source code released under the GPL
+ * Source code released under the GPL version 2
  *
  */
 #ifndef NAME_H
@@ -15,11 +15,12 @@
 #include "list.h"
 #include "fields.h"
 
-extern void name_nocomma( char *start, newstr *outname );
-extern void name_comma( char *p, newstr *outname );
-extern void name_add( fields *info, char *tag, char *q, int level,
-	list *asis, list *corps );
-
+extern int  name_add( fields *info, char *tag, char *q, int level, list *asis, list *corps );
+extern void name_build_withcomma( newstr *s, char *p );
+extern int  name_parse( newstr *outname, newstr *inname, list *asis, list *corps );
+extern int  name_addsingleelement( fields *info, char *tag, char *name, int level, int corp );
+extern int  name_addmultielement( fields *info, char *tag, list *tokens, int begin, int end, int level );
+extern int  name_findetal( list *tokens );
 
 #endif
 
diff --git a/lib/newstr.c b/lib/newstr.c
index 56ac662..076fd79 100644
--- a/lib/newstr.c
+++ b/lib/newstr.c
@@ -1,14 +1,14 @@
 /*
  * newstr.c
  *
- * Copyright (c) Chris Putnam 1999-2010
+ * Version: 04/21/13
  *
- * Source code released under the GPL
+ * Copyright (c) Chris Putnam 1999-2013
  *
+ * Source code released under the GPL version 2
  *
- * newstring routines for dynamically allocated strings
  *
- * C. Putnam 3/29/02  Clean up newstr_findreplace() (x4 speed increase too)
+ * routines for dynamically allocated strings
  *
  */
 #include <stdio.h>
@@ -91,6 +91,15 @@ newstr_init( newstr *s )
 }
 
 void
+newstr_initstr( newstr *s, char *initstr )
+{
+	assert( s );
+	assert( initstr );
+	newstr_init( s );
+	newstr_strcpy( s, initstr );
+}
+
+void
 newstrs_init( newstr *s, ... )
 {
 	newstr *s2;
@@ -104,6 +113,20 @@ newstrs_init( newstr *s, ... )
 	va_end( ap );
 }
 
+void
+newstr_mergestrs( newstr *s, ... )
+{
+	va_list ap;
+	char *cp;
+	newstr_empty( s );
+	va_start( ap, s );
+	do {
+		cp = va_arg( ap, char * );
+		if ( cp ) newstr_strcat( s, cp );
+	} while ( cp );
+	va_end( ap );
+}
+
 static void 
 newstr_initalloc( newstr *s, unsigned long minsize )
 {
@@ -193,6 +216,29 @@ newstr_addchar( newstr *s, char newchar )
 	s->data[s->len] = '\0';
 }
 
+/* newstr_addutf8
+ *
+ * Add potential multibyte character to s starting at pointer p.
+ * Multibyte Unicode characters have the high bit set.
+ *
+ * Since we can progress more than one byte at p, return the
+ * properly updated pointer p.
+ */
+char *
+newstr_addutf8( newstr *s, char *p )
+{
+	if ( ! ((*p) & 128 ) ) {
+		newstr_addchar( s, *p );
+		p++;
+	} else {
+		while ( ((*p) & 128) ) {
+			newstr_addchar( s, *p );
+			p++;
+		}
+	}
+	return p;
+}
+
 void 
 newstr_fprintf( FILE *fp, newstr *s )
 {
@@ -299,9 +345,9 @@ newstr_strcpy_internal( newstr *s, char *p, unsigned long n )
 void
 newstr_newstrcpy( newstr *s, newstr *old )
 {
-	assert( s && old );
+	assert( s );
 	if ( s==old ) return;
-	if ( !old->data || !old->dim ) newstr_empty( s );
+	else if ( !old || old->len==0 ) newstr_empty( s );
 	else newstr_strcpy_internal( s, old->data, old->len );
 }
 
@@ -323,6 +369,36 @@ newstr_strdup( char *s1 )
 	return s2;
 }
 
+/*
+ * newstr_indxcpy( s, in, start, stop );
+ *
+ * copies in[start] to in[stop] (includes stop) into s
+ */
+void
+newstr_indxcpy( newstr *s, char *p, int start, int stop )
+{
+	int i;
+	assert( s );
+	assert( p );
+	assert( start <= stop );
+	newstr_strcpy_ensurespace( s, stop-start+1 );
+	for ( i=start; i<=stop; ++i )
+		s->data[i-start] = p[i];
+	s->data[i] = '\0';
+	s->len = stop-start+1;
+}
+
+void
+newstr_indxcat( newstr *s, char *p, int start, int stop )
+{
+	int i;
+	assert( s );
+	assert( p );
+	assert( start <= stop );
+	for ( i=start; i<=stop; ++i )
+		newstr_addchar( s, p[i] );
+}
+
 /* newstr_segcpy( s, start, end );
  *
  * copies [start,end) into s
@@ -454,7 +530,16 @@ newstr_toupper( newstr *s )
 	unsigned long i;
 	assert( s );
 	for ( i=0; i<s->len; ++i )
-		s->data[i] = toupper( s->data[i] );
+		s->data[i] = toupper( (unsigned char)s->data[i] );
+}
+
+void
+newstr_tolower( newstr *s )
+{
+	unsigned long i;
+	assert( s );
+	for ( i=0; i<s->len; ++i )
+		s->data[i] = tolower( (unsigned char)s->data[i] );
 }
 
 /* newstr_swapstrings( s1, s2 )
@@ -486,6 +571,33 @@ newstr_swapstrings( newstr *s1, newstr *s2 )
 }
 
 void
+newstr_trimstartingws( newstr *s )
+{
+	unsigned char still_ws;
+	unsigned long n, m;
+
+	assert( s );
+
+	if ( s->len==0 || !is_ws( s->data[0] ) ) return;
+
+	m = n = 0;
+	still_ws = 1;
+	while ( m <= s->len ) {
+		if ( still_ws && !is_ws( s->data[ m ] ) ) {
+			still_ws = 0;
+		}
+		if ( !still_ws ) {
+			s->data[ n ] = s->data[ m ];
+			n++;
+		}
+		m++;
+	}
+
+	s->len = n;
+}
+	
+
+void
 newstr_trimendingws( newstr *s )
 {
 	assert( s );
@@ -495,3 +607,175 @@ newstr_trimendingws( newstr *s )
 	}
 }
 
+int
+newstr_match_first( newstr *s, char ch )
+{
+	if ( !s->len ) return 0;
+	if ( s->data[0] == ch ) return 1;
+	return 0;
+}
+
+int
+newstr_match_end( newstr *s, char ch )
+{
+	if ( !s->len ) return 0;
+	if ( s->data[ s->len - 1 ] == ch ) return 1;
+	return 0;
+}
+
+void
+newstr_trimbegin( newstr *s, int n )
+{
+	int i;
+	assert( s );
+	if ( s->len - n < 1 ) newstr_empty( s );
+	for ( i=1; i<=s->len; ++i ) /* pick up '\0' with '<=' */
+		s->data[i-1] = s->data[i];
+	s->len -= n;
+}
+
+void
+newstr_trimend( newstr *s, int n )
+{
+	assert( s );
+	if ( s->len - n < 1 ) newstr_empty( s );
+	else {
+		s->len -= n;
+		s->data[ s->len ] = '\0';
+	}
+}
+
+static void
+newstr_check_case( newstr *s, int *lowercase, int *uppercase )
+{
+	int i;
+	*lowercase = 0;
+	*uppercase = 0;
+	if ( s->len < 1 ) return;
+	for ( i=0; i<s->len && !( *lowercase && *uppercase ); ++i ) {
+		if ( isalpha( (unsigned char)s->data[i] ) ) {
+			if ( isupper( (unsigned char)s->data[i] ) ) *uppercase += 1;
+			else if ( islower( (unsigned char)s->data[i] ) ) *lowercase += 1;
+		}
+	}
+}
+
+int
+newstr_is_mixedcase( newstr *s )
+{
+	int lowercase, uppercase;
+	newstr_check_case( s, &lowercase, &uppercase );
+	if ( lowercase > 0 && uppercase > 0 ) return 1;
+	return 0;
+}
+
+int
+newstr_is_lowercase( newstr *s )
+{
+	int lowercase, uppercase;
+	newstr_check_case( s, &lowercase, &uppercase );
+	if ( lowercase > 0 && uppercase == 0 ) return 1;
+	return 0;
+}
+
+int
+newstr_is_uppercase( newstr *s )
+{
+	int lowercase, uppercase;
+	newstr_check_case( s, &lowercase, &uppercase );
+	if ( lowercase == 0 && uppercase > 0 ) return 1;
+	return 0;
+}
+
+void
+newstr_stripws( newstr *s )
+{
+	unsigned long len = 0;
+	char *p, *q;
+	assert( s );
+	if ( s->len ) {
+		p = q = s->data;
+		while ( *p ) {
+			if ( !is_ws( *p ) ) {
+				*q = *p;
+				q++;
+				len++;
+			}
+			p++;
+		}
+		*q = '\0';
+	}
+	s->len = len;
+}
+
+int
+newstr_newstrcmp( newstr *s, newstr *t )
+{
+	assert( s );
+	assert( t );
+	if ( s->len == 0 && t->len == 0 ) return 0;
+	return strcmp( s->data, t->data );
+}
+
+void
+newstr_reverse( newstr *s )
+{
+	newstr ns;
+	unsigned long i;
+
+	assert( s );
+
+	if ( s->len==0 ) return;
+	newstr_init( &ns );
+	i = s->len;
+	do {
+		i--;
+		newstr_addchar( &ns, s->data[i] );
+	} while ( i>0 );
+	newstr_swapstrings( s, &ns );
+	newstr_free( &ns );
+}
+
+int
+newstr_fgetline( newstr *s, FILE *fp )
+{
+	int ch, eol = 0;
+	assert( s );
+	newstr_empty( s );
+	if ( feof( fp ) ) return 0;
+	while ( !feof( fp ) && !eol ) {
+		ch = fgetc( fp );
+		if ( ch == EOF ) eol = 1;
+		else if ( ch == '\n' ) eol = 1;
+		else if ( ch == '\r' ) {
+			ch = fgetc( fp );
+			if ( ch != '\n' ) ungetc( ch, fp );
+			eol = 1;
+		} else {
+			newstr_addchar( s, (char) ch );
+		}
+	}
+	return 1;
+}
+
+/*
+ * s = "Hi!\0", s.len = 3
+ *
+ * newstr_char( s, 0 ) = 'H'  newstr_revchar( s, 0 ) = '\0'
+ * newstr_char( s, 1 ) = 'i'  newstr_revchar( s, 1 ) = '!'
+ * newstr_char( s, 2 ) = '!'  newstr_revchar( s, 2 ) = 'i'
+ * newstr_char( s, 3 ) = '\0' newstr_revchar( s, 3 ) = 'H'
+ */
+char
+newstr_char( newstr *s, unsigned long n )
+{
+	if ( s->len==0 || n >= s->len ) return '\0';
+	return s->data[ n ];
+}
+
+char
+newstr_revchar( newstr *s, unsigned long n )
+{
+	if ( s->len==0 || n >= s->len ) return '\0';
+	return s->data[ s->len - n ];
+}
diff --git a/lib/newstr.h b/lib/newstr.h
index 44a6395..b7d049f 100644
--- a/lib/newstr.h
+++ b/lib/newstr.h
@@ -1,12 +1,13 @@
 /*
- * newstring.h
+ * newstr.h
  *
- * Copyright (c) Chris Putnam 1999-2009
+ * Version: 04/21/13
  *
- * Source code released under the GPL
+ * Copyright (c) Chris Putnam 1999-2013
+ *
+ * Source code released under the GPL version 2
  *
  */
-
 #ifndef NEWSTR_H
 #define NEWSTR_H
 
@@ -21,6 +22,7 @@ typedef struct newstr {
 newstr *newstr_new         ( void ); 
 
 void    newstr_init        ( newstr *s );
+void    newstr_initstr     ( newstr *s, char *initstr );
 void    newstr_empty       ( newstr *s );
 void    newstr_free        ( newstr *s );
 
@@ -28,8 +30,11 @@ void    newstrs_init       ( newstr *s, ... );
 void    newstrs_empty      ( newstr *s, ... );
 void    newstrs_free       ( newstr *s, ... );
 
+void newstr_mergestrs   ( newstr *s, ... );
 newstr *newstr_strdup   ( char *buf );
 void newstr_addchar     ( newstr *s, char newchar );
+void newstr_reverse     ( newstr *s );
+char *newstr_addutf8    ( newstr *s, char *p );
 void newstr_strcat      ( newstr *s, char *addstr );
 void newstr_newstrcat   ( newstr *s, newstr *old );
 void newstr_segcat      ( newstr *s, char *startat, char *endat );
@@ -38,14 +43,32 @@ void newstr_strcpy      ( newstr *s, char *addstr );
 void newstr_newstrcpy   ( newstr *s, newstr *old );
 void newstr_segcpy      ( newstr *s, char *startat, char *endat );
 void newstr_segdel      ( newstr *s, char *startat, char *endat );
+void newstr_indxcpy     ( newstr *s, char *p, int start, int stop );
+void newstr_indxcat     ( newstr *s, char *p, int start, int stop );
 void newstr_fprintf     ( FILE *fp, newstr *s );
 int  newstr_fget        ( FILE *fp, char *buf, int bufsize, int *pbufpos,
                           newstr *outs );
+char newstr_char        ( newstr *s, unsigned long n );
+char newstr_revchar     ( newstr *s, unsigned long n );
+int  newstr_fgetline    ( newstr *s, FILE *fp );
 int  newstr_findreplace ( newstr *s, char *find, char *replace );
 void newstr_toupper     ( newstr *s );
+void newstr_tolower     ( newstr *s );
+void newstr_trimstartingws( newstr *s );
 void newstr_trimendingws( newstr *s );
 void newstr_swapstrings ( newstr *s1, newstr *s2 );
 
+int  newstr_match_first ( newstr *s, char ch );
+int  newstr_match_end   ( newstr *s, char ch );
+void newstr_trimbegin   ( newstr *s, int n );
+void newstr_trimend     ( newstr *s, int n );
+
+int  newstr_is_mixedcase( newstr *s );
+int  newstr_is_lowercase( newstr *s );
+int  newstr_is_uppercase( newstr *s );
+
+int newstr_newstrcmp    ( newstr *s, newstr *t );
+
 /* NEWSTR_PARANOIA
  *
  * set to clear memory before it is freed or reallocated
diff --git a/lib/newstr_conv.c b/lib/newstr_conv.c
index 6f7a0dc..592514c 100644
--- a/lib/newstr_conv.c
+++ b/lib/newstr_conv.c
@@ -1,12 +1,11 @@
 /*
  * newstr_conv.c
  *
- * Copyright (c) Chris Putnam 1999-2010
+ * Copyright (c) Chris Putnam 1999-2013
  *
- * Source code released under the GPL
+ * Source code released under the GPL version 2
  *
- * newstring routines for dynamically allocated strings
- * conversions between character sets
+ * newstring routines for converting newstrings between character sets
  *
  */
 #include <stdio.h>
@@ -19,33 +18,8 @@
 #include "entities.h"
 #include "utf8.h"
 #include "gb18030.h"
-#include "newstr_conv.h"
-
 #include "charsets.h"
-
-int
-get_charset( char *name )
-{
-	int i;
-	if ( name==NULL ) return CHARSET_UNKNOWN;
-	for ( i=0; i<nallcharconvert; ++i ){
-		if ( !strcasecmp( name, allcharconvert[i].name ) ) return i;
-		else if ( allcharconvert[i].name2[0]!='\0' &&
-			!strcasecmp( name, allcharconvert[i].name2 ) ) return i;
-	}
-	return CHARSET_UNKNOWN;
-}
-
-void
-list_charsets( FILE *fp )
-{
-	int i;
-	for ( i=0; i<nallcharconvert; ++i ){
-		fprintf( fp, " %s", allcharconvert[i].name );
-		if ( (i>0 && i%5==0) || (i==nallcharconvert-1) )
-			fprintf( fp, "\n");
-	}
-}
+#include "newstr_conv.h"
 
 static void
 addentity( newstr *s, unsigned int ch )
@@ -121,24 +95,6 @@ addlatexchar( newstr *s, unsigned int ch, int xmlout, int utf8out )
 	}
 }
 
-static unsigned int
-lookupchar( int charsetin, char c )
-{
-	return allcharconvert[charsetin].table[(int)c];
-}
-
-static unsigned int
-lookupuni( int charsetout, unsigned int unicode )
-{
-	int i;
-	if ( charsetout==CHARSET_UNICODE ) return unicode;
-	for ( i=0; i<256; ++i ) {
-		if ( unicode == allcharconvert[charsetout].table[i] )
-			return i;
-	}
-	return '?';
-}
-
 /*
  * get_unicode()
  * 
@@ -183,11 +139,11 @@ get_unicode( newstr *s, unsigned int *pi, int charsetin, int latexin, int utf8in
 		*pi = *pi + 1;
 	}
 	if ( !unicode && charsetin!=CHARSET_UNICODE )
-		ch = lookupchar( charsetin, ch );
+		ch = charset_lookupchar( charsetin, ch );
 	return ch;
 }
 
-static void
+static int
 write_unicode( newstr *s, unsigned int ch, int charsetout, int latexout,
 		int utf8out, int xmlout )
 {
@@ -199,29 +155,43 @@ write_unicode( newstr *s, unsigned int ch, int charsetout, int latexout,
 	} else if ( charsetout==CHARSET_GB18030 ) {
 		addgb18030char( s, ch, xmlout, utf8out );
 	} else {
-		c = lookupuni( charsetout, ch );
+		c = charset_lookupuni( charsetout, ch );
 		if ( xmlout ) addxmlchar( s, c );
 		else newstr_addchar( s, c );
 	}
+	return 1;
 }
 
-void
-newstr_convert( newstr *s, 
+/*
+ * Returns 1 on memory error condition
+ */
+int
+newstr_convert( newstr *s,
 	int charsetin,  int latexin,  int utf8in,  int xmlin,
 	int charsetout, int latexout, int utf8out, int xmlout )
 {
+	unsigned int pos = 0;
 	unsigned int ch;
 	newstr ns;
-	unsigned int pos = 0;
-	if ( s->len==0 ) return;
+	int ok;
+
+	if ( !s || s->len==0 ) return 1;
+
 	newstr_init( &ns );
+
 	if ( charsetin==CHARSET_UNKNOWN ) charsetin = CHARSET_DEFAULT;
 	if ( charsetout==CHARSET_UNKNOWN ) charsetout = CHARSET_DEFAULT;
+
 	while ( s->data[pos] ) {
 		ch = get_unicode( s, &pos, charsetin, latexin, utf8in, xmlin );
-		write_unicode( &ns, ch, charsetout, latexout, utf8out, xmlout );
+		ok = write_unicode( &ns, ch, charsetout, latexout, utf8out, xmlout );
+		if ( !ok ) return 0;
 	}
+
 	newstr_swapstrings( s, &ns );
+
 	newstr_free( &ns );
+
+	return 1;
 }
 
diff --git a/lib/newstr_conv.h b/lib/newstr_conv.h
index 446d1aa..aca9278 100644
--- a/lib/newstr_conv.h
+++ b/lib/newstr_conv.h
@@ -1,28 +1,19 @@
 /*
  * newstring_conv.h
  *
- * Copyright (c) Chris Putnam 1999-2009
+ * Copyright (c) Chris Putnam 1999-2013
  *
- * Source code released under the GPL
+ * Source code released under the GPL version 2
  *
  */
-
 #ifndef NEWSTR_CONV_H
 #define NEWSTR_CONV_H
 
 #include "newstr.h"
 
-#define CHARSET_UNKNOWN (-1)
-#define CHARSET_UNICODE (-2)
-#define CHARSET_GB18030 (-3)
-#define CHARSET_DEFAULT (66)  /* Latin-1/ISO8859-1 */
-
-extern int get_charset( char *name );
-extern void list_charsets( FILE *fp );
-extern void newstr_convert( newstr *s, 
+extern int newstr_convert( newstr *s,
 		int charsetin, int latexin, int utf8in, int xmlin, 
 		int charsetout, int latexout, int utf8out, int xmlout );
 
-
 #endif
 
diff --git a/lib/reftypes.c b/lib/reftypes.c
index 27b288d..6075c21 100644
--- a/lib/reftypes.c
+++ b/lib/reftypes.c
@@ -1,9 +1,9 @@
 /*
  * reftypes.c
  *
- * Copyright (c) Chris Putnam 2003-2010
+ * Copyright (c) Chris Putnam 2003-2013
  *
- * Program and source code released under the GPL
+ * Source code released under the GPL version 2
  *
  */
 #include <stdio.h>
@@ -40,4 +40,18 @@ process_findoldtag( char *oldtag, int reftype, variants all[], int nall )
         return -1;
 }
 
-
+/* translate_oldtag()
+ */
+int
+translate_oldtag( char *oldtag, int reftype, variants all[], int nall,
+		int *processingtype, int *level, char **newtag )
+{
+	int n;
+	n = process_findoldtag( oldtag, reftype, all, nall );
+	if ( n!=-1 ) {
+		*processingtype = ((all[reftype]).tags[n]).processingtype;
+		*level          = ((all[reftype]).tags[n]).level;
+		*newtag         = ((all[reftype]).tags[n]).newstr;
+	}
+	return n;
+}
diff --git a/lib/reftypes.h b/lib/reftypes.h
index 65cbbec..2271bc6 100644
--- a/lib/reftypes.h
+++ b/lib/reftypes.h
@@ -1,31 +1,42 @@
 /*
  * reftypes.h
  *
- * Copyright (c) Chris Putnam 2003-2009
+ * Copyright (c) Chris Putnam 2003-2013
  *
- * Source code released under the GPL
+ * Source code released under the GPL version 2
  *
  */
 #ifndef REFTYPES_H
 #define REFTYPES_H
 
-#define SIMPLE        (0)
-#define TYPE          (1)
-#define PERSON        (2)
-#define DATE          (3)
-#define PAGES         (4)
-#define SERIALNO      (5)
-#define TITLE         (6)
-#define ALWAYS        (7)
-#define NOTES         (8)
-#define DOI           (9)
-#define HOWPUBLISHED  (10)
-#define BIBTEX_URL    (11)
-#define BIBTEX_SENTE  (12)
-#define BIBTEX_FILE   (13)
-#define BIBTEX_GENRE  (14)
-#define BIBTEX_EPRINT (15)
-#define ISI_KEYWORD   (16)
+/* Reftypes handled by core code */
+#define ALWAYS          (0)
+#define DEFAULT         (1)
+
+/* Reftypes to be handled by converters */
+#define SIMPLE          (2)
+#define TYPE            (3)
+#define PERSON          (4)
+#define DATE            (5)
+#define PAGES           (6)
+#define SERIALNO        (7)
+#define TITLE           (8)
+#define NOTES           (9)
+#define DOI             (10)
+#define HOWPUBLISHED    (11)
+#define LINKEDFILE      (12)
+#define KEYWORD         (13)
+#define BT_URL          (14) /* Bibtex URL */
+#define BT_NOTE         (15) /* Bibtex Note */
+#define BT_SENTE        (16) /* Bibtex 'Sente' */
+#define BT_GENRE        (17) /* Bibtex Genre */
+#define BT_EPRINT       (18) /* Bibtex 'Eprint' */
+#define BT_ORG          (19) /* Bibtex Organization */
+#define BLT_THESIS_TYPE (20) /* Biblatex Thesis Type */
+#define BLT_SCHOOL      (21) /* Biblatex School */
+#define BLT_EDITOR      (22) /* Biblatex Editor */
+#define BLT_SUBTYPE     (23) /* Biblatex entrysubtype */
+#define BLT_SKIP        (24) /* Biblatex Skip Entry */
 
 typedef struct {
 	char *oldstr;
@@ -42,6 +53,8 @@ typedef struct {
 
 extern int get_reftype( char *q, long refnum, char *progname, variants *all, int nall, char *tag );
 extern int process_findoldtag( char *oldtag, int reftype, variants all[], int nall );
+extern int translate_oldtag( char *oldtag, int reftype, variants all[], int nall, int *processingtype, int *level, char **newtag );
+
 
 
 #endif
diff --git a/lib/risin.c b/lib/risin.c
index 8b8a830..19863c7 100644
--- a/lib/risin.c
+++ b/lib/risin.c
@@ -1,9 +1,9 @@
 /*
  * risin.c
  *
- * Copyright (c) Chris Putnam 2003-2010
+ * Copyright (c) Chris Putnam 2003-2013
  *
- * Program and source code released under the GPL
+ * Source code released under the GPL version 2
  *
  */
 #include <stdio.h>
@@ -161,6 +161,8 @@ int
 risin_processf( fields *risin, char *p, char *filename, long nref )
 {
 	newstr tag, data;
+	int n;
+
 	newstrs_init( &tag, &data, NULL );
 
 	while ( *p ) {
@@ -171,9 +173,10 @@ risin_processf( fields *risin, char *p, char *filename, long nref )
 			fields_add( risin, tag.data, data.data, 0 );
 		} else {
 			p = process_line2( &tag, &data, p );
-			if ( data.len && risin->nfields>0 ) {
+			n = fields_num( risin );
+			if ( data.len && n>0 ) {
 				newstr *od;
-				od = &(risin->data[risin->nfields-1] );
+				od = fields_value( risin, n-1, FIELDS_STRP );
 				newstr_addchar( od, ' ' );
 				newstr_strcat( od, data.data );
 			}
@@ -186,62 +189,112 @@ risin_processf( fields *risin, char *p, char *filename, long nref )
 }
 
 /* oxfordjournals hide the DOI in the NOTES N1 field */
-static void
-notes_add( fields *info, char *tag, newstr *s, int level )
+static int
+risin_addnotes( fields *f, char *tag, newstr *s, int level )
 {
 	int doi = is_doi( s->data );
 	if ( doi!=-1 )
-		fields_add( info, "DOI", &(s->data[doi]), level );
+		return fields_add( f, "DOI", &(s->data[doi]), level );
 	else
-		fields_add( info, tag, s->data, level );
+		return fields_add( f, tag, s->data, level );
+}
+
+static int
+is_uri_file_scheme( char *p )
+{
+	if ( !strncmp( p, "file:", 5 ) ) return 5;
+	return 0;
+}
+
+static int
+is_uri_remote_scheme( char *p )
+{
+	char *scheme[] = { "http:", "ftp:", "git:", "gopher:" };
+	int i, len, nschemes = sizeof( scheme ) / sizeof( scheme[0] );
+	for ( i=0; i<nschemes; ++i ) {
+		len = strlen( scheme[i] );
+		if ( !strncmp( p, scheme[i], len ) ) return len;
+	}
+	return 0;
+}
+
+static int
+risin_addfile( fields *f, char *tag, newstr *s, int level )
+{
+	char *p;
+	int n;
+
+	/* if URL is file:///path/to/xyz.pdf, only store "///path/to/xyz.pdf" */
+	n = is_uri_file_scheme( s->data );
+	if ( n ) {
+		/* skip past "file:" and store only actual path */
+		p = s->data + n;
+		return fields_add( f, tag, p, level );
+	}
+
+	/* if URL is http:, ftp:, etc. store as a URL */
+	n = is_uri_remote_scheme( s->data );
+	if ( n ) {
+		return fields_add( f, "URL", s->data, level );
+	}
+
+	/* badly formed, RIS wants URI, but store value anyway */
+	return fields_add( f, tag, s->data, level );
 }
 
 /* scopus puts DOI in the DO or DI tag, but it needs cleaning */
-static void
-doi_add( fields *info, char *tag, newstr *s, int level )
+static int
+risin_adddoi( fields *f, char *tag, newstr *s, int level )
 {
 	int doi = is_doi( s->data );
 	if ( doi!=-1 )
-		fields_add( info, "DOI", &(s->data[doi]), level );
+		return fields_add( f, "DOI", &(s->data[doi]), level );
+	else return 1;
 }
 
-static void
-adddate( fields *info, char *tag, char *p, int level )
+static int
+risin_adddate( fields *f, char *tag, newstr *d, int level )
 {
+	char *p = d->data;
 	newstr date;
-	int part = ( !strncasecmp( tag, "PART", 4 ) );
+	int part = ( !strncasecmp( tag, "PART", 4 ) ), ok;
 
 	newstr_init( &date );
 	while ( *p && *p!='/' ) newstr_addchar( &date, *p++ );
 	if ( *p=='/' ) p++;
 	if ( date.len>0 ) {
-		if ( part ) fields_add( info, "PARTYEAR", date.data, level );
-		else        fields_add( info, "YEAR",     date.data, level );
+		if ( part ) ok = fields_add( f, "PARTYEAR", date.data, level );
+		else        ok = fields_add( f, "YEAR",     date.data, level );
+		if ( !ok ) return 0;
 	}
 
 	newstr_empty( &date );
 	while ( *p && *p!='/' ) newstr_addchar( &date, *p++ );
 	if ( *p=='/' ) p++;
 	if ( date.len>0 ) {
-		if ( part ) fields_add( info, "PARTMONTH", date.data, level );
-		else        fields_add( info, "MONTH",     date.data, level );
+		if ( part ) ok = fields_add( f, "PARTMONTH", date.data, level );
+		else        ok = fields_add( f, "MONTH",     date.data, level );
+		if ( !ok ) return 0;
 	}
 
 	newstr_empty( &date );
 	while ( *p && *p!='/' ) newstr_addchar( &date, *p++ );
 	if ( *p=='/' ) p++;
 	if ( date.len>0 ) {
-		if ( part ) fields_add( info, "PARTDAY", date.data, level );
-		else        fields_add( info, "DAY",     date.data, level );
+		if ( part ) ok = fields_add( f, "PARTDAY", date.data, level );
+		else        ok = fields_add( f, "DAY",     date.data, level );
+		if ( !ok ) return 0;
 	}
 
 	newstr_empty( &date );
 	while ( *p ) newstr_addchar( &date, *p++ );
 	if ( date.len>0 ) {
-		if ( part ) fields_add( info, "PARTDATEOTHER", date.data,level);
-		else        fields_add( info, "DATEOTHER", date.data, level );
+		if ( part ) ok = fields_add( f, "PARTDATEOTHER", date.data,level);
+		else        ok = fields_add( f, "DATEOTHER", date.data, level );
+		if ( !ok ) return 0;
 	}
 	newstr_free( &date );
+	return 1;
 }
 
 int
@@ -269,53 +322,84 @@ risin_report_notag( param *p, char *tag )
 	}
 }
 
-void
-risin_convertf( fields *risin, fields *info, int reftype, param *p, variants *all, int nall )
+int
+risin_convertf( fields *risin, fields *f, int reftype, param *p, variants *all, int nall )
 {
+	int process, level, i, n, nfields, ok;
+	char *outtag, *tag, *value;
 	newstr *t, *d;
-	int process, level, i, n;
-	char *newtag;
-	for ( i=0; i<risin->nfields; ++i ) {
-		t = &( risin->tag[i] );
-		d = &( risin->data[i] );
-		n = process_findoldtag( t->data, reftype, all, nall );
+
+	nfields = fields_num( risin );
+
+	for ( i=0; i<nfields; ++i ) {
+		t = fields_tag( risin, i, FIELDS_STRP );
+		n = translate_oldtag( t->data, reftype, all, nall, &process, &level, &outtag );
 		if ( n==-1 ) {
 			risin_report_notag( p, t->data );
 			continue;
 		}
-		process = ((all[reftype]).tags[n]).processingtype;
-		level   = ((all[reftype]).tags[n]).level;
-		newtag  = ((all[reftype]).tags[n]).newstr;
-		if ( process==SIMPLE )
-			fields_add( info, newtag, d->data, level );
-		else if ( process==PERSON )
-			name_add( info, newtag, d->data, level, &(p->asis), 
-					&(p->corps) );
-		else if ( process==TITLE )
-			title_process( info, newtag, d->data, level, 
-					p->nosplittitle );
-		else if ( process==DATE )
-			adddate( info, newtag, d->data, level );
-		else if ( process==SERIALNO )
-			addsn( info, d->data, level );
-		else if ( process==NOTES )
-			notes_add( info, newtag, d, level );
-		else if ( process==DOI )
-			doi_add( info, newtag, d, level );
-		else { /* do nothing */ }
+		if ( process==ALWAYS ) continue; /* add in core code */
+
+		d = fields_value( risin, i, FIELDS_STRP );
+
+		switch ( process ) {
+
+		case SIMPLE:
+			ok = fields_add( f, outtag, d->data, level );
+			break;
+
+		case PERSON:
+			ok = name_add( f, outtag, d->data, level, &(p->asis), &(p->corps) );
+			break;
+
+		case TITLE:
+			ok = title_process( f, outtag, d->data, level, p->nosplittitle );
+			break;
+
+		case SERIALNO:
+			ok = addsn( f, d->data, level );
+			break;
+
+		case DATE:
+			ok = risin_adddate( f, outtag, d, level );
+			break;
+
+		case NOTES:
+			ok = risin_addnotes( f, outtag, d, level );
+			break;
+
+		case DOI:
+			ok = risin_adddoi( f, outtag, d, level );
+			break;
+
+		case LINKEDFILE:
+			ok = risin_addfile( f, outtag, d, level );
+			break;
+
+		default:
+			ok = 1;
+			break;
+
+		}
+		if ( !ok ) return BIBL_ERR_MEMERR;
 	}
+
 	/* look for thesis-type hint */
 	if ( !strcasecmp( all[reftype].type, "THES" ) ) {
-		for ( i=0; i<risin->nfields; ++i ) {
-			if ( strcasecmp(risin->tag[i].data, "U1") )
-				continue;
-			if ( !strcasecmp(risin->data[i].data,"Ph.D. Thesis")||
-			     !strcasecmp(risin->data[i].data,"Masters Thesis")||
-			     !strcasecmp(risin->data[i].data,"Diploma Thesis")||
-			     !strcasecmp(risin->data[i].data,"Doctoral Thesis")||
-			     !strcasecmp(risin->data[i].data,"Habilitation Thesis"))
-				fields_add( info, "GENRE", risin->data[i].data,
-					0 );
+		for ( i=0; i<nfields; ++i ) {
+			tag = fields_tag( risin, i, FIELDS_CHRP );
+			if ( strcasecmp( tag, "U1" ) ) continue;
+			value = fields_value( risin, i, FIELDS_CHRP );
+			if ( !strcasecmp(value,"Ph.D. Thesis")||
+			     !strcasecmp(value,"Masters Thesis")||
+			     !strcasecmp(value,"Diploma Thesis")||
+			     !strcasecmp(value,"Doctoral Thesis")||
+			     !strcasecmp(value,"Habilitation Thesis")) {
+				ok = fields_add( f, "GENRE", value, 0 );
+				if ( !ok ) return BIBL_ERR_MEMERR;
+			}
 		}
 	}
+
+	return BIBL_OK;
 }
diff --git a/lib/risin.h b/lib/risin.h
index 9991504..7e8ac50 100644
--- a/lib/risin.h
+++ b/lib/risin.h
@@ -1,9 +1,9 @@
 /*
  * risin.h
  *
- * Copyright (c) Chris Putnam 2003-2009
+ * Copyright (c) Chris Putnam 2003-2013
  *
- * Program and source code released under the GPL
+ * Source code released under the GPL version 2
  *
  */
 #ifndef RISIN_H
@@ -17,7 +17,7 @@
 extern int risin_readf( FILE *fp, char *buf, int bufsize, int *bufpos, newstr *line, newstr *reference, int *fcharset );
 extern int risin_processf( fields *risin, char *p, char *filename, long nref );
 extern int risin_typef( fields *risin, char *filename, int nref, param *p, variants *all, int nall );
-extern void risin_convertf( fields *risin, fields *info, int reftype, param *p, variants *all, int nall ); 
+extern int risin_convertf( fields *risin, fields *info, int reftype, param *p, variants *all, int nall ); 
 
 extern void risin_initparams( param *p, const char *progname );
 
diff --git a/lib/risout.c b/lib/risout.c
index 07288d7..d727db1 100644
--- a/lib/risout.c
+++ b/lib/risout.c
@@ -1,9 +1,9 @@
 /*
  * risout.c
  *
- * Copyright (c) Chris Putnam 2003-2010
+ * Copyright (c) Chris Putnam 2003-2013
  *
- * Program and source code released under the GPL
+ * Source code released under the GPL version 2
  *
  */
 #include <stdio.h>
@@ -15,6 +15,7 @@
 #include "strsearch.h"
 #include "fields.h"
 #include "doi.h"
+#include "name.h"
 #include "risout.h"
 
 void
@@ -25,14 +26,18 @@ risout_initparams( param *p, const char *progname )
 	p->charsetout       = BIBL_CHARSET_DEFAULT;
 	p->charsetout_src   = BIBL_SRC_DEFAULT;
 	p->latexout         = 0;
-	p->utf8out          = 0;
-	p->utf8bom          = 0;
+	p->utf8out          = BIBL_CHARSET_UTF8_DEFAULT;
+	p->utf8bom          = BIBL_CHARSET_BOM_DEFAULT;
 	p->xmlout           = 0;
 	p->nosplittitle     = 0;
 	p->verbose          = 0;
 	p->addcount         = 0;
 	p->singlerefperfile = 0;
 
+	if ( p->charsetout == BIBL_CHARSET_UNICODE ) {
+		p->utf8out = p->utf8bom = 1;
+	}
+
 	p->headerf = risout_writeheader;
 	p->footerf = NULL;
 	p->writef  = risout_write;
@@ -64,6 +69,7 @@ enum {
 	TYPE_DIPLOMATHESIS,      /* thesis */
 	TYPE_DOCTORALTHESIS,     /* thesis */
 	TYPE_HABILITATIONTHESIS, /* thesis */
+	TYPE_MAP,                /* map, cartographic data */
 	TYPE_UNPUBLISHED,        /* unpublished */
 };
 
@@ -72,14 +78,15 @@ typedef struct match_type {
 	int type;
 } match_type;
 
-/* Try to determine type of reference from <genre></genre> 
- * and <TypeOfResource></TypeOfResource>
+/* Try to determine type of reference from
+ * <genre></genre>
  */
 static int
-get_type_genre( fields *info )
+get_type_genre( fields *f )
 {
 	match_type match_genres[] = {
 		{ "academic journal",          TYPE_ARTICLE },
+		{ "journal article",           TYPE_ARTICLE },
 		{ "magazine",                  TYPE_MAGARTICLE },
 		{ "conference publication",    TYPE_CONF },
 		{ "newspaper",                 TYPE_NEWS },
@@ -88,6 +95,7 @@ get_type_genre( fields *info )
 		{ "hearing",                   TYPE_HEAR },
 		{ "electronic",                TYPE_ELEC },
 		{ "legal case and case notes", TYPE_CASE },
+		{ "book chapter",              TYPE_INBOOK },
 		{ "Ph.D. thesis",              TYPE_PHDTHESIS },
 		{ "Masters thesis",            TYPE_MASTERSTHESIS },
 		{ "Diploma thesis",            TYPE_DIPLOMATHESIS },
@@ -97,68 +105,89 @@ get_type_genre( fields *info )
 		{ "abstract or summary",       TYPE_ABSTRACT },
 		{ "patent",                    TYPE_PATENT },
 		{ "unpublished",               TYPE_UNPUBLISHED },
+		{ "map",                       TYPE_MAP },
 	};
 	int nmatch_genres = sizeof( match_genres ) / sizeof( match_genres[0] );
-	match_type match_res[] = {
-		{ "software, multimedia",      TYPE_PROGRAM },
-	};
-	int nmatch_res = sizeof( match_res ) / sizeof( match_res[0] );
-	char *tag, *data;
-	int type = TYPE_UNKNOWN, i, j;
-	for ( i=0; i<info->nfields; ++i ) {
-		tag = info->tag[i].data;
-		if ( strcasecmp( tag, "GENRE" ) &&
-		     strcasecmp( tag, "NGENRE") ) continue;
-		data = info->data[i].data;
-		for ( j=0; j<nmatch_genres; ++j ) {
-			if ( !strcasecmp( data, match_genres[j].name ) )
+	int type, i, j;
+	char *value;
+
+	type = TYPE_UNKNOWN;
+
+	for ( i=0; i<fields_num( f ); ++i ) {
+		if ( !fields_match_tag( f, i,"GENRE" ) &&
+		     !fields_match_tag( f, i,"NGENRE" ) )
+			continue;
+		value = ( char * ) fields_value( f, i, FIELDS_CHRP );
+		for ( j=0; j<nmatch_genres; ++j )
+			if ( !strcasecmp( match_genres[j].name, value ) )
 				type = match_genres[j].type;
-		}
 		if ( type==TYPE_UNKNOWN ) {
-			if ( !strcasecmp( data, "periodical" ) )
+			if ( !strcasecmp( value, "periodical" ) )
 				type = TYPE_ARTICLE;
-			else if ( !strcasecmp( data, "thesis" ) )
+			else if ( !strcasecmp( value, "thesis" ) )
 				type = TYPE_THESIS;
-			else if ( !strcasecmp( data, "book" ) ) {
-				if ( info->level[i]==0 ) type=TYPE_BOOK;
+			else if ( !strcasecmp( value, "book" ) ) {
+				if ( fields_level( f, i )==0 ) type=TYPE_BOOK;
 				else type=TYPE_INBOOK;
 			}
-			else if ( !strcasecmp( data, "collection" ) ) {
-				if ( info->level[i]==0 ) type=TYPE_BOOK;
+			else if ( !strcasecmp( value, "collection" ) ) {
+				if ( fields_level( f, i )==0 ) type=TYPE_BOOK;
 				else type=TYPE_INBOOK;
 			}
 		}
+
 	}
-	if ( type==TYPE_UNKNOWN ) {
-		for ( i=0; i<info->nfields; ++i ) {
-			tag = info->tag[i].data;
-			if ( strcasecmp( tag, "RESOURCE" ) ) continue;
-			data = info->data[i].data;
-
-			for ( j=0; j<nmatch_res; ++j ) {
-				if ( !strcasecmp( data, match_res[j].name ) )
-					type = match_res[j].type;
-			}
+
+	return type;
+}
+
+/* Try to determine type of reference from
+ * <TypeOfResource></TypeOfResource>
+ */
+static int
+get_type_resource( fields *f )
+{
+	match_type match_res[] = {
+		{ "software, multimedia",      TYPE_PROGRAM },
+		{ "cartographic",              TYPE_MAP     },
+	};
+	int nmatch_res = sizeof( match_res ) / sizeof( match_res[0] );
+	int type, i, j;
+	char *value;
+	vplist a;
+
+	type = TYPE_UNKNOWN;
+
+	vplist_init( &a );
+	fields_findv_each( f, LEVEL_ANY, FIELDS_CHRP, &a, "RESOURCE" );
+
+	for ( i=0; i<a.n; ++i ) {
+		value = ( char * ) vplist_get( &a, i );
+		for ( j=0; j<nmatch_res; ++j ) {
+			if ( !strcasecmp( value, match_res[j].name ) )
+				type = match_res[j].type;
 		}
 	}
+
+	vplist_free( &a );
 	return type;
 }
 
 /* Try to determine type of reference from <issuance></issuance> and */
 /* <typeOfReference></typeOfReference> */
 static int
-get_type_issuance( fields *info )
+get_type_issuance( fields *f )
 {
 	int type = TYPE_UNKNOWN;
 	int i, monographic = 0, text = 0, monographic_level = 0;
-	for ( i=0; i<info->nfields; ++i ) {
-		if ( !strcasecmp( info->tag[i].data, "issuance" ) &&
-		     !strcasecmp( info->data[i].data, "MONOGRAPHIC" ) ){
+	for ( i=0; i<f->n; ++i ) {
+		if ( !strcasecmp( f->tag[i].data, "issuance" ) &&
+		     !strcasecmp( f->data[i].data, "MONOGRAPHIC" ) ){
 			monographic = 1;
-			monographic_level = info->level[i];
+			monographic_level = f->level[i];
 		}
-		if ( !strcasecmp( info->tag[i].data, "typeOfResource" ) &&
-		     !strcasecmp( info->data[i].data,"text") ) {
+		if ( !strcasecmp( f->tag[i].data, "typeOfResource" ) &&
+		     !strcasecmp( f->data[i].data,"text") ) {
 			text = 1;
 		}
 	}
@@ -170,11 +199,12 @@ get_type_issuance( fields *info )
 }
 
 static int
-get_type( fields *info )
+get_type( fields *f )
 {
 	int type;
-	type = get_type_genre( info );
-	if ( type==TYPE_UNKNOWN ) type = get_type_issuance( info );
+	type = get_type_genre( f );
+	if ( type==TYPE_UNKNOWN ) type = get_type_resource( f );
+	if ( type==TYPE_UNKNOWN ) type = get_type_issuance( f );
 	if ( type==TYPE_UNKNOWN ) type = TYPE_STD;
 	return type;
 }
@@ -207,6 +237,7 @@ output_type( FILE *fp, int type, param *p )
 		{ "THES", TYPE_DIPLOMATHESIS },
 		{ "THES", TYPE_DOCTORALTHESIS },
 		{ "THES", TYPE_HABILITATIONTHESIS },
+		{ "MAP",  TYPE_MAP },
 		{ "UNPB", TYPE_UNPUBLISHED }
 	};
 	int ntyout = sizeof( tyout ) / sizeof( tyout[0] );
@@ -220,184 +251,180 @@ output_type( FILE *fp, int type, param *p )
 			found = 1;
 		}
 	}
+	/* Report internal error, default to TYPE_STD */
 	if ( !found ) {
 		if ( p->progname ) fprintf( stderr, "%s: ", p->progname );
 		fprintf( stderr, "Internal Error: Cannot identify type %d\n",
 			type );
+		fprintf( fp, "STD" );
 	}
 	fprintf( fp, "\n" );
 }
 
 static void
-output_person ( FILE *fp, char *p )
+output_people( FILE *fp, fields *f, char *tag, char *ristag, int level )
 {
-	int nseps = 0, nch;
-	while ( *p ) {
-		nch = 0;
-		if ( nseps==1 ) fprintf( fp, "," );
-		if ( nseps ) fprintf( fp, " " );
-		while ( *p && *p!='|' ) {
-			fprintf( fp, "%c", *p++ );
-			nch++;
-		}
-		if ( *p=='|' ) p++;
-		if ( nseps!=0 && nch==1 ) fprintf( fp, "." ); 
-		nseps++;
+	newstr oneperson;
+	vplist people;
+	int i;
+	newstr_init( &oneperson );
+	vplist_init( &people );
+	fields_findv_each( f, level, FIELDS_CHRP, &people, tag );
+	for ( i=0; i<people.n; ++i ) {
+		name_build_withcomma( &oneperson, ( char * ) vplist_get( &people, i ) );
+		fprintf( fp, "%s  - %s\n", ristag, oneperson.data );
 	}
+	vplist_free( &people );
+	newstr_free( &oneperson );
 }
 
 static void
-output_people( FILE *fp, fields *info, long refnum, char *tag, 
-		char *ristag, int level )
+output_date( FILE *fp, fields *f )
 {
-	int i;
-	for ( i=0; i<info->nfields; ++i ) {
-		if ( level!=-1 && info->level[i]!=level ) continue;
-		if ( !strcasecmp( info->tag[i].data, tag ) ) {
-			fprintf( fp, "%s  - ", ristag );
-			output_person ( fp, info->data[i].data );
-			fprintf( fp, "\n" );
-		}
+	char *year  = fields_findv_firstof( f, LEVEL_ANY, FIELDS_CHRP,
+			"YEAR", "PARTYEAR", NULL );
+	char *month = fields_findv_firstof( f, LEVEL_ANY, FIELDS_CHRP,
+			"MONTH", "PARTMONTH", NULL );
+	char *day   = fields_findv_firstof( f, LEVEL_ANY, FIELDS_CHRP,
+			"DAY", "PARTDAY", NULL );
+	if ( year )
+		fprintf( fp, "PY  - %s\n", year );
+	if ( year || month || day ) {
+		fprintf( fp, "DA  - " );
+		if ( year ) fprintf( fp, "%s", year );
+		fprintf( fp, "/" );
+		if ( month ) fprintf( fp, "%s", month );
+		fprintf( fp, "/" );
+		if ( day ) fprintf( fp, "%s", day );
+		fprintf( fp, "\n" );
 	}
 }
 
 static void
-output_date( FILE *fp, fields *info, long refnum )
+output_titlecore( FILE *fp, fields *f, char *ristag, int level,
+	char *maintag, char *subtag )
 {
-	int year = fields_find( info, "YEAR", -1 );
-	int month = fields_find( info, "MONTH", -1 );
-	int day = fields_find( info, "DAY", -1 );
-	if ( year==-1 ) year = fields_find( info, "PARTYEAR", -1 );
-	if ( month==-1 ) month = fields_find( info, "PARTMONTH", -1 );
-	if ( day==-1 ) day = fields_find( info, "PARTDAY", -1 );
-	if ( year==-1 && month==-1 && day==-1 ) return;
-	fprintf( fp, "PY  - " );
-	if ( year!=-1 ) fprintf( fp, "%s", info->data[year].data );
-	fprintf( fp, "/" );
-	if ( month!=-1 ) fprintf( fp, "%s", info->data[month].data );
-	fprintf( fp, "/" );
-	if ( day!=-1 ) fprintf( fp, "%s", info->data[day].data );
+	newstr *mainttl = fields_findv( f, level, FIELDS_STRP, maintag );
+	newstr *subttl  = fields_findv( f, level, FIELDS_STRP, subtag );
+
+	if ( !mainttl ) return;
+
+	fprintf( fp, "%s  - %s", ristag, mainttl->data );
+	if ( subttl ) {
+		if ( mainttl->len > 0 &&
+		     mainttl->data[ mainttl->len - 1 ]!='?' )
+			fprintf( fp, ":" );
+		fprintf( fp, " %s", subttl->data );
+	}
 	fprintf( fp, "\n" );
 }
 
-static void
-output_title( FILE *fp, fields *info, char *ristag, int level )
+static int
+type_is_element( int type )
 {
-	int n1 = fields_find( info, "TITLE", level );
-	int n2 = fields_find( info, "SUBTITLE", level );
-	if ( n1!=-1 ) {
-		fprintf( fp, "%s  - %s", ristag, info->data[n1].data );
-		if ( n2!=-1 ) {
-			if ( info->data[n1].data[info->data[n1].len]!='?' )
-				fprintf( fp, ": " );
-			else fprintf( fp, " " );
-			fprintf( fp, "%s", info->data[n2].data );
-		}
-		fprintf( fp, "\n" );
-	}
+	if ( type==TYPE_ARTICLE )    return 1;
+	if ( type==TYPE_INBOOK )     return 1;
+	if ( type==TYPE_MAGARTICLE ) return 1;
+	if ( type==TYPE_NEWS )       return 1;
+	if ( type==TYPE_ABSTRACT )   return 1;
+	if ( type==TYPE_CONF )       return 1;
+	return 0;
 }
 
-static void
-output_abbrtitle( FILE *fp, fields *info, char *ristag, int level )
+static int
+type_uses_journal( int type )
 {
-	int n1 = fields_find( info, "SHORTTITLE", level );
-	int n2 = fields_find( info, "SHORTSUBTITLE", level );
-	if ( n1!=-1 ) {
-		fprintf( fp, "%s  - %s", ristag, info->data[n1].data );
-		if ( n2!=-1 ){
-			if ( info->data[n1].data[info->data[n1].len]!='?' )
-				fprintf( fp, ": " );
-			else fprintf( fp, " " );
-			fprintf( fp, "%s", info->data[n2].data );
-		}
-		fprintf( fp, "\n" );
-	}
+	if ( type==TYPE_ARTICLE )    return 1;
+	if ( type==TYPE_MAGARTICLE ) return 1;
+	return 0;
 }
 
 static void
-output_pages( FILE *fp, fields *info, long refnum )
+output_alltitles( FILE *fp, fields *f, int type )
 {
-	int sn = fields_find( info, "PAGESTART", -1 );
-	int en = fields_find( info, "PAGEEND", -1 );
-	int ar = fields_find( info, "ARTICLENUMBER", -1 );
-	if ( sn!=-1 || en!=-1 ) {
-		if ( sn!=-1 ) 
-			fprintf( fp, "SP  - %s\n", info->data[sn].data );
-		if ( en!=-1 ) 
-			fprintf( fp, "EP  - %s\n", info->data[en].data );
-	} else if ( ar!=-1 ) {
-		fprintf( fp, "SP  - %s\n", info->data[ar].data );
+	output_titlecore( fp, f, "TI", 0, "TITLE", "SUBTITLE" );
+	output_titlecore( fp, f, "T2", -1, "SHORTTITLE", "SHORTSUBTITLE" );
+	if ( type_is_element( type ) ) {
+		if ( type_uses_journal( type ) )
+			output_titlecore( fp, f, "JO", 1, "TITLE", "SUBTITLE" );
+		else output_titlecore( fp, f, "BT", 1, "TITLE", "SUBTITLE" );
+		output_titlecore( fp, f, "T3", 2, "TITLE", "SUBTITLE" );
+	} else {
+		output_titlecore( fp, f, "T3", 1, "TITLE", "SUBTITLE" );
 	}
 }
 
 static void
-output_keywords( FILE *fp, fields *info )
+output_pages( FILE *fp, fields *f )
 {
-	int i;
-	for ( i=0; i<info->nfields; ++i ) {
-		if ( !strcmp( info->tag[i].data, "KEYWORD" ) )
-			fprintf( fp, "KW  - %s\n", info->data[i].data );
+	char *sn = fields_findv( f, LEVEL_ANY, FIELDS_CHRP, "PAGESTART" );
+	char *en = fields_findv( f, LEVEL_ANY, FIELDS_CHRP, "PAGEEND" );
+	char *ar;
+
+	if ( sn || en ) {
+		if ( sn ) fprintf( fp, "SP  - %s\n", sn );
+		if ( en ) fprintf( fp, "EP  - %s\n", en );
+	} else {
+		ar = fields_findv( f, LEVEL_ANY, FIELDS_CHRP, "ARTICLENUMBER" );
+		if ( ar ) fprintf( fp, "SP  - %s\n", ar );
 	}
 }
 
 static void
-output_doi( FILE *fp, fields *info )
+output_keywords( FILE *fp, fields *f )
 {
-	newstr doi_url;
+	vplist vpl;
 	int i;
-	newstr_init( &doi_url );
-	for ( i=0; i<info->nfields; ++i ) {
-		if ( strcmp( info->tag[i].data, "DOI" ) ) continue;
-		doi_to_url( info, i, "URL", &doi_url );
-		if ( doi_url.len )
-			fprintf( fp, "UR  - %s\n", doi_url.data );
-	}
-	newstr_free( &doi_url );
+	vplist_init( &vpl );
+	fields_findv_each( f, LEVEL_ANY, FIELDS_CHRP, &vpl, "KEYWORD" );
+	for ( i=0; i<vpl.n; ++i )
+		fprintf( fp, "KW  - %s\n", ( char * ) vplist_get( &vpl, i ) );
+	vplist_free( &vpl );
 }
 
 static void
-output_pmid( FILE *fp, fields *info )
+output_pmid( FILE *fp, fields *f )
 {
-	newstr pmid_url;
+	newstr s;
 	int i;
-	newstr_init( &pmid_url );
-	for ( i=0; i<info->nfields; ++i ) {
-		if ( strcmp( info->tag[i].data, "PMID" ) ) continue;
-		pmid_to_url( info, i, "URL", &pmid_url );
-		if ( pmid_url.len )
-			fprintf( fp, "UR  - %s\n", pmid_url.data );
+	newstr_init( &s );
+	for ( i=0; i<fields_num( f ); ++i ) {
+		if ( !fields_match_tag( f, i, "PMID" ) ) continue;
+		pmid_to_url( f, i, "URL", &s );
+		if ( s.len )
+			fprintf( fp, "UR  - %s\n", s.data );
 	}
-	newstr_free( &pmid_url );
+	newstr_free( &s );
 }
 
 static void
-output_arxiv( FILE *fp, fields *info )
+output_arxiv( FILE *fp, fields *f )
 {
-	newstr arxiv_url;
+	newstr s;
 	int i;
-	newstr_init( &arxiv_url );
-	for ( i=0; i<info->nfields; ++i ) {
-		if ( strcmp( info->tag[i].data, "ARXIV" ) ) continue;
-		arxiv_to_url( info, i, "URL", &arxiv_url );
-		if ( arxiv_url.len )
-			fprintf( fp, "UR  - %s\n", arxiv_url.data );
+	newstr_init( &s );
+	for ( i=0; i<fields_num( f ); ++i ) {
+		if ( !fields_match_tag( f, i, "ARXIV" ) ) continue;
+		arxiv_to_url( f, i, "URL", &s );
+		if ( s.len )
+			fprintf( fp, "UR  - %s\n", s.data );
 	}
-	newstr_free( &arxiv_url );
+	newstr_free( &s );
 }
 
 static void
-output_jstor( FILE *fp, fields *info )
+output_jstor( FILE *fp, fields *f )
 {
-	newstr jstor_url;
+	newstr s;
 	int i;
-	newstr_init( &jstor_url );
-	for ( i=0; i<info->nfields; ++i ) {
-		if ( strcmp( info->tag[i].data, "JSTOR" ) ) continue;
-		jstor_to_url( info, i, "URL", &jstor_url );
-		if ( jstor_url.len )
-			fprintf( fp, "UR  - %s\n", jstor_url.data );
+	newstr_init( &s );
+	for ( i=0; i<fields_num( f ); ++i ) {
+		if ( !fields_match_tag( f, i, "JSTOR" ) ) continue;
+		jstor_to_url( f, i, "URL", &s );
+		if ( s.len )
+			fprintf( fp, "UR  - %s\n", s.data );
 	}
-	newstr_free( &jstor_url );
+	newstr_free( &s );
 }
 
 static void
@@ -415,74 +442,126 @@ output_thesishint( FILE *fp, int type )
 		fprintf( fp, "%s  - %s\n", "U1", "Habilitation thesis" );
 }
 
+static int
+is_uri_scheme( char *p )
+{
+	char *scheme[] = { "http:", "file:", "ftp:", "git:", "gopher:" };
+	int i, len, nschemes = sizeof( scheme ) / sizeof( scheme[0] );
+	for ( i=0; i<nschemes; ++i ) {
+		len = strlen( scheme[i] );
+		if ( !strncmp( p, scheme[i], len ) ) return len;
+	}
+	return 0;
+}
+
+
 static void
-output_easy( FILE *fp, fields *info, long refnum, char *tag, char *ristag, int level )
+output_file( FILE *fp, fields *f, char *tag, char *ristag, int level )
 {
-	int n = fields_find( info, tag, level );
-	if ( n!=-1 ) {
-		fprintf( fp, "%s  - %s\n", ristag, info->data[n].data );
+	vplist a;
+	char *fl;
+	int i;
+	vplist_init( &a );
+	fields_findv_each( f, level, FIELDS_CHRP, &a, tag );
+	for ( i=0; i<a.n; ++i ) {
+		fprintf( fp, "%s  - ", ristag );
+		fl = ( char * ) vplist_get( &a, i );
+		if ( !is_uri_scheme( fl ) )
+			fprintf( fp, "file:" );
+		fprintf( fp, "%s\n", fl );
 	}
+	vplist_free( &a );
+}
+
+static void
+output_easy( FILE *fp, fields *f, char *tag, char *ristag, int level )
+{
+	char *value = fields_findv( f, level, FIELDS_CHRP, tag );
+	if ( value ) fprintf( fp, "%s  - %s\n", ristag, value );
 }
 
 static void
-output_easyall( FILE *fp, fields *info, long refnum, char *tag, char *ristag, int level )
+output_easyall( FILE *fp, fields *f, char *tag, char *ristag, int level )
 {
+	vplist a;
 	int i;
-	for ( i=0; i<info->nfields; ++i ) {
-		if ( level!=-1 && level!=info->level[i] ) continue;
-		if ( !strcmp( info->tag[i].data, tag ) )
-			fprintf( fp, "%s  - %s\n", ristag, info->data[i].data );
+	vplist_init( &a );
+	fields_findv_each( f, level, FIELDS_CHRP, &a, tag );
+	for ( i=0; i<a.n; ++i )
+		fprintf( fp, "%s  - %s\n", ristag, (char *) vplist_get( &a, i ) );
+	vplist_free( &a );
+}
+
+static void
+output_allpeople( FILE *fp, fields *f, int type )
+{
+	output_people(  fp, f, "AUTHOR",      "AU", LEVEL_MAIN   );
+	output_easyall( fp, f, "AUTHOR:CORP", "AU", LEVEL_MAIN   );
+	output_easyall( fp, f, "AUTHOR:ASIS", "AU", LEVEL_MAIN   );
+	output_people(  fp, f, "AUTHOR",      "A2", LEVEL_HOST   );
+	output_easyall( fp, f, "AUTHOR:CORP", "A2", LEVEL_HOST   );
+	output_easyall( fp, f, "AUTHOR:ASIS", "A2", LEVEL_HOST   );
+	output_people(  fp, f, "AUTHOR",      "A3", LEVEL_SERIES );
+	output_easyall( fp, f, "AUTHOR:CORP", "A3", LEVEL_SERIES );
+	output_easyall( fp, f, "AUTHOR:ASIS", "A3", LEVEL_SERIES );
+	output_people(  fp, f, "EDITOR",      "ED", LEVEL_MAIN   );
+	output_easyall( fp, f, "EDITOR:CORP", "ED", LEVEL_MAIN   );
+	output_easyall( fp, f, "EDITOR:ASIS", "ED", LEVEL_MAIN   );
+	if ( type_is_element( type ) ) {
+		output_people(  fp, f, "EDITOR",      "ED", LEVEL_HOST   );
+		output_easyall( fp, f, "EDITOR:CORP", "ED", LEVEL_HOST   );
+		output_easyall( fp, f, "EDITOR:ASIS", "ED", LEVEL_HOST   );
+	} else {
+		output_people(  fp, f, "EDITOR",      "A3", LEVEL_HOST   );
+		output_easyall( fp, f, "EDITOR:CORP", "A3", LEVEL_HOST   );
+		output_easyall( fp, f, "EDITOR:ASIS", "A3", LEVEL_HOST   );
 	}
+	output_people(  fp, f, "EDITOR",      "A3", LEVEL_SERIES );
+	output_easyall( fp, f, "EDITOR:CORP", "A3", LEVEL_SERIES );
+	output_easyall( fp, f, "EDITOR:ASIS", "A3", LEVEL_SERIES );
 }
 
 void
-risout_write( fields *info, FILE *fp, param *p, unsigned long refnum )
+risout_write( fields *f, FILE *fp, param *p, unsigned long refnum )
 {
 	int type;
-	type = get_type( info );
+	type = get_type( f );
 	output_type( fp, type, p );
-	output_people( fp, info, refnum, "AUTHOR", "AU", 0 );
-	output_easyall( fp, info, refnum, "AUTHOR:CORP", "AU", 0 );
-	output_easyall( fp, info, refnum, "AUTHOR:ASIS", "AU", 0 );
-	output_people( fp, info, refnum, "AUTHOR", "A2", 1 );
-	output_easyall( fp, info, refnum, "AUTHOR:CORP", "A2", 1 );
-	output_easyall( fp, info, refnum, "AUTHOR:ASIS", "A2", 1 );
-	output_people( fp, info, refnum, "AUTHOR", "A3", 2 );
-	output_easyall( fp, info, refnum, "AUTHOR:CORP", "A3", 2 );
-	output_easyall( fp, info, refnum, "AUTHOR:ASIS", "A3", 2 );
-	output_people( fp, info, refnum, "EDITOR", "ED", -1 );
-	output_easyall( fp, info, refnum, "EDITOR:CORP", "ED", -1 );
-	output_easyall( fp, info, refnum, "EDITOR:ASIS", "ED", -1 );
-	output_date( fp, info, refnum );
-	output_title( fp, info, "TI", 0 );
-	output_abbrtitle( fp, info, "T2", -1 );
-	if ( type==TYPE_ARTICLE || type==TYPE_MAGARTICLE ) {
-		output_title( fp, info, "JO", 1 );
-	}
-	else output_title( fp, info, "BT", 1 );
-	output_title( fp, info, "T3", 2 );
-	output_pages( fp, info, refnum );
-	output_easy( fp, info, refnum, "VOLUME", "VL", -1 );
-	output_easy( fp, info, refnum, "ISSUE", "IS", -1 );
-	output_easy( fp, info, refnum, "NUMBER", "IS", -1 );
-	/* output article number as pages */
-	output_easy( fp, info, refnum, "PUBLISHER", "PB", -1 );
-	output_easy( fp, info, refnum, "DEGREEGRANTOR", "PB", -1 );
-	output_easy( fp, info, refnum, "DEGREEGRANTOR:ASIS", "PB", -1 );
-	output_easy( fp, info, refnum, "DEGREEGRANTOR:CORP", "PB", -1 );
-	output_easy( fp, info, refnum, "ADDRESS", "CY", -1 );
-	output_keywords( fp, info );
-	output_easy( fp, info, refnum, "ABSTRACT", "N2", -1 );
-	output_easy( fp, info, refnum, "ISSN", "SN", -1 );
-	output_easy( fp, info, refnum, "ISBN", "SN", -1 );
-	output_easyall( fp, info, refnum, "URL", "UR", -1 );
-	output_easyall( fp, info, refnum, "FILEATTACH", "L1", -1 );
-	output_doi( fp, info );
-	output_pmid( fp, info );
-	output_arxiv( fp, info );
-	output_jstor( fp, info );
-	output_easy( fp, info, refnum, "NOTES", "N1", -1 );
-	output_easy( fp, info, refnum, "REFNUM", "ID", -1 );
+
+	output_allpeople( fp, f, type );
+
+	output_date( fp, f );
+
+	output_alltitles( fp, f, type );
+
+	output_pages( fp, f );
+	output_easy( fp, f, "VOLUME",             "VL", LEVEL_ANY );
+	output_easy( fp, f, "ISSUE",              "IS", LEVEL_ANY );
+	output_easy( fp, f, "NUMBER",             "IS", LEVEL_ANY );
+	output_easy( fp, f, "EDITION",            "ET", LEVEL_ANY );
+	output_easy( fp, f, "NUMVOLUMES",         "NV", LEVEL_ANY );
+	output_easy( fp, f, "AUTHORADDRESS",      "AD", LEVEL_ANY );
+	output_easy( fp, f, "PUBLISHER",          "PB", LEVEL_ANY );
+	output_easy( fp, f, "DEGREEGRANTOR",      "PB", LEVEL_ANY );
+	output_easy( fp, f, "DEGREEGRANTOR:ASIS", "PB", LEVEL_ANY );
+	output_easy( fp, f, "DEGREEGRANTOR:CORP", "PB", LEVEL_ANY );
+	output_easy( fp, f, "ADDRESS",            "CY", LEVEL_ANY );
+	output_keywords( fp, f );
+	output_easy( fp, f, "ABSTRACT",           "AB", LEVEL_ANY );
+	output_easy( fp, f, "CALLNUMBER",         "CN", LEVEL_ANY );
+	output_easy( fp, f, "ISSN",               "SN", LEVEL_ANY );
+	output_easy( fp, f, "ISBN",               "SN", LEVEL_ANY );
+	output_easyall( fp, f, "URL",             "UR", LEVEL_ANY );
+	output_easyall( fp, f, "DOI",             "DO", LEVEL_ANY );
+	output_file(    fp, f, "FILEATTACH",      "L1", LEVEL_ANY );
+	output_file(    fp, f, "FIGATTACH",       "L4", LEVEL_ANY );
+	output_easy( fp, f, "CAPTION",            "CA", LEVEL_ANY );
+	output_pmid( fp, f );
+	output_arxiv( fp, f );
+	output_jstor( fp, f );
+	output_easy( fp, f, "LANGUAGE",           "LA", LEVEL_ANY );
+	output_easy( fp, f, "NOTES",              "N1", LEVEL_ANY );
+	output_easy( fp, f, "REFNUM",             "ID", LEVEL_ANY );
 	output_thesishint( fp, type );
 	fprintf( fp, "ER  - \n" );
 	fflush( fp );
diff --git a/lib/risout.h b/lib/risout.h
index cbfaaa5..94cc9d3 100644
--- a/lib/risout.h
+++ b/lib/risout.h
@@ -1,7 +1,9 @@
 /*
  * risout.h
  *
- * Copyright (c) Chris Putnam 2005-2009
+ * Copyright (c) Chris Putnam 2005-2013
+ *
+ * Source code released under the GPL version 2
  *
  */
 #ifndef RISOUT_H
diff --git a/lib/ristypes.c b/lib/ristypes.c
index 99f153d..6423a41 100644
--- a/lib/ristypes.c
+++ b/lib/ristypes.c
@@ -1,12 +1,11 @@
 /*
  * ristypes.c
  *
- * Copyright (c) Chris Putnam 2003-2010
+ * Copyright (c) Chris Putnam 2003-2013
  *
- * Program and source code released under the GPL
+ * Source code released under the GPL version 2
  *
  */
-
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
@@ -14,208 +13,311 @@
 #include "reftypes.h"
 	
 static lookups generic[] = {
-	{ "AU", "AUTHOR",       PERSON,  LEVEL_MAIN },
-	{ "A1", "AUTHOR",       PERSON,  LEVEL_MAIN },
-	{ "A2", "AUTHOR",       PERSON,  LEVEL_HOST },
-	{ "A3", "AUTHOR",       PERSON,  LEVEL_SERIES }, 
-	{ "ED", "EDITOR",       PERSON,  LEVEL_MAIN },
-	{ "PY", "YEAR",         DATE,    LEVEL_MAIN },
-	{ "Y1", "YEAR",         DATE,    LEVEL_MAIN },
-	{ "Y2", "MONTH",     SIMPLE,  LEVEL_MAIN },
-	{ "SN", "SERIALNUMBER", SERIALNO,LEVEL_MAIN },
-	{ "TI", "TITLE",        TITLE,   LEVEL_MAIN },
-	{ "T1", "TITLE",        TITLE,   LEVEL_MAIN },
-	{ "T2", "SHORTTITLE",   SIMPLE,  LEVEL_HOST },
-	{ "T3", "TITLE",        SIMPLE,  LEVEL_SERIES },
-	{ "JO", "TITLE",        SIMPLE,  LEVEL_HOST }, /* JOURNAL */
-	{ "JA", "TITLE",        SIMPLE,  LEVEL_HOST },
-	{ "JF", "TITLE",        SIMPLE,  LEVEL_HOST },
-	{ "J1", "TITLE",        SIMPLE,  LEVEL_HOST },
-	{ "J2", "TITLE",        SIMPLE,  LEVEL_HOST },
-	{ "VL", "VOLUME",       SIMPLE,  LEVEL_MAIN },
-	{ "VO", "VOLUME",       SIMPLE,  LEVEL_MAIN },
-	{ "IS", "ISSUE",        SIMPLE,  LEVEL_MAIN },
-	{ "CP", "ISSUE",        SIMPLE,  LEVEL_MAIN },
-	{ "SP", "PAGESTART",    SIMPLE,  LEVEL_MAIN },
-	{ "EP", "PAGEEND",      SIMPLE,  LEVEL_MAIN },
-	{ "AB", "ABSTRACT",     SIMPLE,  LEVEL_MAIN },
-	{ "N1", "NOTES",        NOTES,   LEVEL_MAIN },
-	{ "N2", "ABSTRACT",     SIMPLE,  LEVEL_MAIN }, 
-	{ "KW", "KEYWORD",      SIMPLE,  LEVEL_MAIN },
-	{ "PB", "PUBLISHER",    SIMPLE,  LEVEL_MAIN },
-	{ "BT", "TITLE",        SIMPLE,  LEVEL_HOST }, 
-	{ "CT", "ADDRESS",      SIMPLE,  LEVEL_MAIN },
-	{ "AD", "AUTHORADDRESS",SIMPLE,  LEVEL_MAIN },
-	{ "CY", "ADDRESS",      SIMPLE,  LEVEL_MAIN },
-	{ "RP", "REPRINTSTATUS",SIMPLE,  LEVEL_MAIN },
-	{ "UR", "URL",          SIMPLE,  LEVEL_MAIN },
-	{ "DO", "DOI",          DOI,     LEVEL_MAIN },
-	{ "DI", "DOI",          DOI,     LEVEL_MAIN },
-	{ "L1", "FILEATTACH",   SIMPLE,  LEVEL_MAIN },
-	{ "ID", "REFNUM",       SIMPLE,  LEVEL_MAIN },
-	{ "U1", "NOTES",        NOTES,   LEVEL_MAIN }, /*user defined */
-	{ "U2", "NOTES",        NOTES,   LEVEL_MAIN }, /* put in "notes" */
-	{ "U3", "NOTES",        NOTES,   LEVEL_MAIN },
-	{ "U4", "NOTES",        NOTES,   LEVEL_MAIN },
-	{ "U5", "NOTES",        NOTES,   LEVEL_MAIN },
-	{ "M1", "NOTES",        NOTES,   LEVEL_MAIN }, /*misc */
-	{ "M2", "NOTES",        NOTES,   LEVEL_MAIN }, /* put in "notes" */
-	{ "M3", "NOTES",        NOTES,   LEVEL_MAIN },
+	{ "A1", "AUTHOR",       PERSON,  LEVEL_MAIN },   /* Deprecated? */
+	{ "A2", "AUTHOR",       PERSON,  LEVEL_HOST },   /* 'Secondary' Author */
+	{ "A3", "EDITOR",       PERSON,  LEVEL_SERIES }, /* 'Tertiary' Author -- Series editors */
+	{ "A4", "AUTHOR",       PERSON,  LEVEL_SERIES }, /* 'Subsidiary' Author */
+	{ "AB", "ABSTRACT",     SIMPLE,  LEVEL_MAIN },   /* Abstract */
+	{ "AD", "AUTHORADDRESS",SIMPLE,  LEVEL_MAIN },   /* Author Address */
+	{ "AU", "AUTHOR",       PERSON,  LEVEL_MAIN },   /* Author */
+	{ "BT", "TITLE",        SIMPLE,  LEVEL_HOST },   /* Deprecated? */
+	{ "C1", "NOTES",        NOTES,   LEVEL_MAIN },   /* 'Custom' - put in "notes" */
+	{ "C2", "NOTES",        NOTES,   LEVEL_MAIN },   /* 'Custom' - put in "notes" */
+	{ "C3", "NOTES",        NOTES,   LEVEL_MAIN },   /* 'Custom' - put in "notes" */
+	{ "C4", "NOTES",        NOTES,   LEVEL_MAIN },   /* 'Custom' - put in "notes" */
+	{ "C5", "NOTES",        NOTES,   LEVEL_MAIN },   /* 'Custom' - put in "notes" */
+	{ "C6", "NOTES",        NOTES,   LEVEL_MAIN },   /* 'Custom' - put in "notes" */
+	{ "C7", "NOTES",        NOTES,   LEVEL_MAIN },   /* 'Custom' - put in "notes" */
+	{ "C8", "NOTES",        NOTES,   LEVEL_MAIN },   /* 'Custom' - put in "notes" */
+	{ "CA", "CAPTION",      SIMPLE,  LEVEL_MAIN },   /* Caption */
+	{ "CN", "CALLNUMBER",   SIMPLE,  LEVEL_MAIN },   /* Call Number */
+	{ "CP", "ISSUE",        SIMPLE,  LEVEL_MAIN },   /* Deprecated? */
+	{ "CT", "ADDRESS",      SIMPLE,  LEVEL_MAIN },   /* Deprecated? */
+	{ "CY", "ADDRESS",      SIMPLE,  LEVEL_MAIN },   /* Place Published */
+	{ "DA", "YEAR",         DATE,    LEVEL_MAIN },   /* Date */
+	{ "DB", "DATABASE",     SIMPLE,  LEVEL_MAIN },   /* Name of Database */
+	{ "DI", "DOI",          DOI,     LEVEL_MAIN },   /* Deprecated? */
+	{ "DO", "DOI",          DOI,     LEVEL_MAIN },   /* DOI */
+	{ "DP", "DATABASEPROV", SIMPLE,  LEVEL_MAIN },   /* Database Provider */
+	{ "ED", "EDITOR",       PERSON,  LEVEL_MAIN },   /* Deprecated? */
+	{ "EP", "PAGEEND",      SIMPLE,  LEVEL_MAIN },   /* End Page */
+	{ "ET", "EDITION",      SIMPLE,  LEVEL_MAIN },   /* Edition */
+	{ "ID", "REFNUM",       SIMPLE,  LEVEL_MAIN },   /* Deprecated? */
+	{ "IS", "ISSUE",        SIMPLE,  LEVEL_MAIN },   /* Number */
+	{ "JA", "TITLE",        SIMPLE,  LEVEL_HOST },   /* Deprecated? */
+	{ "J1", "TITLE",        SIMPLE,  LEVEL_HOST },   /* Deprecated? */
+	{ "J2", "TITLE",        SIMPLE,  LEVEL_HOST },   /* Alternate Title, abbreviated book or journal */
+	{ "JF", "TITLE",        SIMPLE,  LEVEL_HOST },   /* Deprecated? */
+	{ "JO", "TITLE",        SIMPLE,  LEVEL_HOST },   /* Deprecated? */
+	{ "KW", "KEYWORD",      SIMPLE,  LEVEL_MAIN },   /* Keywords */
+	{ "L1", "FILEATTACH",   LINKEDFILE, LEVEL_MAIN },   /* File Attachments (local, not URL) */
+	{ "L4", "FIGATTACH",    LINKEDFILE,  LEVEL_MAIN },   /* Figure Attachment (local, not URL) */
+	{ "LA", "LANGUAGE",     SIMPLE,  LEVEL_MAIN },   /* Language */
+	{ "LB", "LABEL",        SIMPLE,  LEVEL_MAIN },   /* Label */
+	{ "M1", "NOTES",        NOTES,   LEVEL_MAIN },   /* Misc or Number? */
+	{ "M2", "NOTES",        NOTES,   LEVEL_MAIN },   /* Misc or Deprecated? */
+	{ "M3", "NOTES",        NOTES,   LEVEL_MAIN },   /* Misc or Type of Work? */
+	{ "N1", "NOTES",        NOTES,   LEVEL_MAIN },   /* Notes */
+	{ "N2", "ABSTRACT",     SIMPLE,  LEVEL_MAIN },   /* Deprecated? */
+	{ "NV", "NUMVOLUMES",   SIMPLE,  LEVEL_MAIN },   /* Number of Volumes */
+	{ "OP", "ORIGPUB",      SIMPLE,  LEVEL_MAIN },   /* Original Publication */
+	{ "PB", "PUBLISHER",    SIMPLE,  LEVEL_MAIN },   /* Publisher */
+	{ "PY", "YEAR",         DATE,    LEVEL_MAIN },   /* Year */
+	{ "RI", "REVIEWEDITEM", SIMPLE,  LEVEL_MAIN },   /* Reviewed Item */
+	{ "RN", "NOTES",        SIMPLE,  LEVEL_MAIN },   /* Resarch Notes -> Notes */
+	{ "RP", "REPRINTSTATUS",SIMPLE,  LEVEL_MAIN },   /* Reprint Edition */
+	{ "SE", "SECTION",      SIMPLE,  LEVEL_MAIN },   /* Section */
+	{ "SN", "SERIALNUMBER", SERIALNO,LEVEL_MAIN },   /* ISBN/ISSN */
+	{ "SP", "PAGESTART",    SIMPLE,  LEVEL_MAIN },   /* Start Page */
+	{ "ST", "SHORTTITLE",   SIMPLE,  LEVEL_MAIN },   /* Short Title */
+	{ "T1", "TITLE",        TITLE,   LEVEL_MAIN },   /* Deprecated? */
+	{ "T2", "SHORTTITLE",   SIMPLE,  LEVEL_HOST },   /* 'Secondary' Title */
+	{ "T3", "TITLE",        SIMPLE,  LEVEL_SERIES }, /* 'Tertiary' Title */
+	{ "TI", "TITLE",        TITLE,   LEVEL_MAIN },   /* Title */
+	{ "TT", "TRANSTITLE",   TITLE,   LEVEL_MAIN },   /* Translated Title */
+	{ "U1", "NOTES",        NOTES,   LEVEL_MAIN },   /* 'User' - Deprecated? */
+	{ "U2", "NOTES",        NOTES,   LEVEL_MAIN },   /* 'User' - Deprecated? */
+	{ "U3", "NOTES",        NOTES,   LEVEL_MAIN },   /* 'User' - Deprecated? */
+	{ "U4", "NOTES",        NOTES,   LEVEL_MAIN },   /* 'User' - Deprecated? */
+	{ "U5", "NOTES",        NOTES,   LEVEL_MAIN },   /* 'User' - Deprecated? */
+	{ "UR", "URL",          SIMPLE,  LEVEL_MAIN },   /* URL */
+	{ "VL", "VOLUME",       SIMPLE,  LEVEL_MAIN },   /* Volume */
+	{ "VO", "VOLUME",       SIMPLE,  LEVEL_MAIN },   /* Deprecated? */
+	{ "Y1", "YEAR",         DATE,    LEVEL_MAIN },   /* Deprecated? */
+	{ "Y2", "MONTH",        SIMPLE,  LEVEL_MAIN },   /* Access Date */
 };
 
 static lookups article[] = {
-	{ "AU", "AUTHOR",       PERSON,  LEVEL_MAIN },
-	{ "A1", "AUTHOR",       PERSON,  LEVEL_MAIN },
-	{ "A2", "AUTHOR",       PERSON,  LEVEL_HOST },
-	{ "A3", "AUTHOR",       PERSON,  LEVEL_SERIES }, 
-	{ "ED", "EDITOR",       PERSON,  LEVEL_HOST },
-	{ "PY", "PARTYEAR",     DATE,    LEVEL_MAIN },
-	{ "Y1", "PARTYEAR",     DATE,    LEVEL_MAIN },
-	{ "Y2", "PARTMONTH", SIMPLE,  LEVEL_MAIN },
-	{ "SN", "SERIALNUMBER", SERIALNO,LEVEL_HOST },
-	{ "TI", "TITLE",        TITLE,   LEVEL_MAIN },
-	{ "T1", "TITLE",        TITLE,   LEVEL_MAIN },
-	{ "T2", "SHORTTITLE",   SIMPLE,  LEVEL_HOST },
-	{ "T3", "TITLE",        SIMPLE,  LEVEL_SERIES },
-	{ "JO", "TITLE",        SIMPLE,  LEVEL_HOST }, /* JOURNAL */
-	{ "JA", "TITLE",        SIMPLE,  LEVEL_HOST },
-	{ "JF", "TITLE",        SIMPLE,  LEVEL_HOST },
-	{ "J1", "TITLE",        SIMPLE,  LEVEL_HOST },
-	{ "J2", "TITLE",        SIMPLE,  LEVEL_SERIES },
-	{ "VL", "VOLUME",       SIMPLE,  LEVEL_MAIN },
-	{ "VO", "VOLUME",       SIMPLE,  LEVEL_MAIN },
-	{ "IS", "ISSUE",        SIMPLE,  LEVEL_MAIN },
-	{ "CP", "ISSUE",        SIMPLE,  LEVEL_MAIN },
-	{ "SP", "PAGESTART",    SIMPLE,  LEVEL_MAIN },
-	{ "EP", "PAGEEND",      SIMPLE,  LEVEL_MAIN },
-	{ "AB", "ABSTRACT",     SIMPLE,  LEVEL_MAIN },
-	{ "N1", "NOTES",        NOTES,   LEVEL_MAIN },
-	{ "N2", "ABSTRACT",     SIMPLE,  LEVEL_MAIN }, 
-	{ "KW", "KEYWORD",      SIMPLE,  LEVEL_MAIN },
-	{ "PB", "PUBLISHER",    SIMPLE,  LEVEL_HOST },
-	{ "CT", "ADDRESS",      SIMPLE,  LEVEL_MAIN },
-	{ "AD", "AUTHORADDRESS",SIMPLE,  LEVEL_MAIN },
-	{ "CY", "ADDRESS",      SIMPLE,  LEVEL_MAIN },
-	{ "RP", "REPRINTSTATUS",SIMPLE,  LEVEL_MAIN },
-	{ "UR", "URL",          SIMPLE,  LEVEL_MAIN },
-	{ "DO", "DOI",          DOI,     LEVEL_MAIN },
-	{ "DI", "DOI",          DOI,     LEVEL_MAIN },
-	{ "L1", "FILEATTACH",   SIMPLE,  LEVEL_MAIN },
-	{ "ID", "REFNUM",       SIMPLE,  LEVEL_MAIN },
-	{ "U1", "NOTES",        NOTES,   LEVEL_MAIN },
-	{ "U2", "NOTES",        NOTES,   LEVEL_MAIN },
-	{ "U3", "NOTES",        NOTES,   LEVEL_MAIN },
-	{ "U4", "NOTES",        NOTES,   LEVEL_MAIN },
-	{ "U5", "NOTES",        NOTES,   LEVEL_MAIN },
-	{ "M1", "NOTES",        NOTES,   LEVEL_MAIN },
-	{ "M2", "NOTES",        NOTES,   LEVEL_MAIN },
-	{ "M3", "NOTES",        NOTES,   LEVEL_MAIN },
+	{ "A1", "AUTHOR",       PERSON,  LEVEL_MAIN },   /* Deprecated? */
+	{ "A2", "AUTHOR",       PERSON,  LEVEL_HOST },   /* 'Secondary' Author */
+	{ "A3", "EDITOR",       PERSON,  LEVEL_SERIES }, /* 'Tertiary' Author -- Series editor */
+	{ "A4", "AUTHOR",       PERSON,  LEVEL_SERIES }, /* 'Subsidiary' Author */
+	{ "AB", "ABSTRACT",     SIMPLE,  LEVEL_MAIN },   /* Abstract */
+	{ "AD", "AUTHORADDRESS",SIMPLE,  LEVEL_MAIN },   /* Author Address */
+	{ "AU", "AUTHOR",       PERSON,  LEVEL_MAIN },   /* Author */
+	{ "C1", "NOTES",        NOTES,   LEVEL_MAIN },   /* 'Custom' - put in "notes" */
+	{ "C2", "NOTES",        NOTES,   LEVEL_MAIN },   /* 'Custom' - put in "notes" */
+	{ "C3", "NOTES",        NOTES,   LEVEL_MAIN },   /* 'Custom' - put in "notes" */
+	{ "C4", "NOTES",        NOTES,   LEVEL_MAIN },   /* 'Custom' - put in "notes" */
+	{ "C5", "NOTES",        NOTES,   LEVEL_MAIN },   /* 'Custom' - put in "notes" */
+	{ "C6", "NOTES",        NOTES,   LEVEL_MAIN },   /* 'Custom' - put in "notes" */
+	{ "C7", "NOTES",        NOTES,   LEVEL_MAIN },   /* 'Custom' - put in "notes" */
+	{ "C8", "NOTES",        NOTES,   LEVEL_MAIN },   /* 'Custom' - put in "notes" */
+	{ "CA", "CAPTION",      SIMPLE,  LEVEL_MAIN },   /* Caption */
+	{ "CN", "CALLNUMBER",   SIMPLE,  LEVEL_MAIN },   /* Call Number */
+	{ "CP", "ISSUE",        SIMPLE,  LEVEL_MAIN },   /* Deprecated? */
+	{ "CT", "ADDRESS",      SIMPLE,  LEVEL_MAIN },   /* Deprecated? */
+	{ "CY", "ADDRESS",      SIMPLE,  LEVEL_MAIN },   /* Place Published */
+	{ "DA", "YEAR",         DATE,    LEVEL_MAIN },   /* Date */
+	{ "DB", "DATABASE",     SIMPLE,  LEVEL_MAIN },   /* Database */
+	{ "DI", "DOI",          DOI,     LEVEL_MAIN },   /* Deprecated? */
+	{ "DO", "DOI",          DOI,     LEVEL_MAIN },   /* DOI */
+	{ "DP", "DATABASEPROV", SIMPLE,  LEVEL_MAIN },   /* Database Provider */
+	{ "ED", "EDITOR",       PERSON,  LEVEL_HOST },   /* Deprecated? */
+	{ "EP", "PAGEEND",      SIMPLE,  LEVEL_MAIN },   /* End Page */
+	{ "ET", "EDITION",      SIMPLE,  LEVEL_MAIN },   /* Edition */
+	{ "ID", "REFNUM",       SIMPLE,  LEVEL_MAIN },   /* Deprecated? */
+	{ "IS", "ISSUE",        SIMPLE,  LEVEL_MAIN },   /* Number */
+	{ "J1", "TITLE",        SIMPLE,  LEVEL_HOST },   /* Deprecated? */
+	{ "J2", "TITLE",        SIMPLE,  LEVEL_SERIES }, /* Alternate Title, abbreviated book or journal */
+	{ "JA", "TITLE",        SIMPLE,  LEVEL_HOST },   /* Deprecated? */
+	{ "JF", "TITLE",        SIMPLE,  LEVEL_HOST },   /* Deprecated? */
+	{ "JO", "TITLE",        SIMPLE,  LEVEL_HOST },   /* Deprecated? */
+	{ "KW", "KEYWORD",      SIMPLE,  LEVEL_MAIN },   /* Keywords */
+	{ "L1", "FILEATTACH",   LINKEDFILE,  LEVEL_MAIN },   /* File Attachment (local, not URL) */
+	{ "L4", "FIGATTACH",    LINKEDFILE,  LEVEL_MAIN },   /* Figure Attachment (local, not URL) */
+	{ "LA", "LANGUAGE",     SIMPLE,  LEVEL_MAIN },   /* Language */
+	{ "LB", "LABEL",        SIMPLE,  LEVEL_MAIN },   /* Label */
+	{ "M1", "NOTES",        NOTES,   LEVEL_MAIN },   /* Misc or Number? */
+	{ "M2", "NOTES",        NOTES,   LEVEL_MAIN },   /* Misc or Deprecated? */
+	{ "M3", "NOTES",        NOTES,   LEVEL_MAIN },   /* Misc or Type of Work? */
+	{ "N1", "NOTES",        NOTES,   LEVEL_MAIN },   /* Notes */
+	{ "N2", "ABSTRACT",     SIMPLE,  LEVEL_MAIN },   /* Deprecated? */
+	{ "NV", "NUMVOLUMES",   SIMPLE,  LEVEL_MAIN },   /* Number of Volumes */
+	{ "OP", "ORIGPUB",      SIMPLE,  LEVEL_MAIN },   /* Original Publication */
+	{ "PB", "PUBLISHER",    SIMPLE,  LEVEL_HOST },   /* Publisher */
+	{ "PY", "PARTYEAR",     DATE,    LEVEL_MAIN },   /* Year */
+	{ "RI", "REVIEWEDITEM", SIMPLE,  LEVEL_MAIN },   /* Reviewed Item */
+	{ "RN", "NOTES",        SIMPLE,  LEVEL_MAIN },   /* Research Notes */
+	{ "RP", "REPRINTSTATUS",SIMPLE,  LEVEL_MAIN },   /* Reprint Edition */
+	{ "SE", "SECTION",      SIMPLE,  LEVEL_MAIN },   /* Section */
+	{ "SN", "SERIALNUMBER", SERIALNO,LEVEL_HOST },   /* ISBN/ISSN */
+	{ "SP", "PAGESTART",    SIMPLE,  LEVEL_MAIN },   /* Start Page */
+	{ "ST", "SHORTTITLE",   SIMPLE,  LEVEL_MAIN },   /* Short Title */
+	{ "T1", "TITLE",        TITLE,   LEVEL_MAIN },   /* Deprecated? */
+	{ "T2", "SHORTTITLE",   SIMPLE,  LEVEL_HOST },   /* 'Secondary' Title */
+	{ "T3", "TITLE",        SIMPLE,  LEVEL_SERIES }, /* 'Tertiary' Title */
+	{ "TI", "TITLE",        TITLE,   LEVEL_MAIN },   /* Title */
+	{ "TT", "TRANSTITLE",   TITLE,   LEVEL_MAIN },   /* Translated Title */
+	{ "U1", "NOTES",        NOTES,   LEVEL_MAIN },   /* 'User' - Deprecated? */
+	{ "U2", "NOTES",        NOTES,   LEVEL_MAIN },   /* 'User' - Deprecated? */
+	{ "U3", "NOTES",        NOTES,   LEVEL_MAIN },   /* 'User' - Deprecated? */
+	{ "U4", "NOTES",        NOTES,   LEVEL_MAIN },   /* 'User' - Deprecated? */
+	{ "U5", "NOTES",        NOTES,   LEVEL_MAIN },   /* 'User' - Deprecated? */
+	{ "UR", "URL",          SIMPLE,  LEVEL_MAIN },   /* URL */
+	{ "VL", "VOLUME",       SIMPLE,  LEVEL_MAIN },   /* Volume */
+	{ "VO", "VOLUME",       SIMPLE,  LEVEL_MAIN },   /* Deprecated? */
+	{ "Y1", "PARTYEAR",     DATE,    LEVEL_MAIN },   /* Deprecated */
+	{ "Y2", "PARTMONTH",    SIMPLE,  LEVEL_MAIN },   /* Access Date */
 	{ "  ", "INTERNAL_TYPE|ARTICLE",           ALWAYS, LEVEL_MAIN },
 	{ "  ", "ISSUANCE|continuing",    ALWAYS, LEVEL_HOST },
 	{ "  ", "RESOURCE|text",          ALWAYS, LEVEL_MAIN },
+	{ "  ", "GENRE|journal article",  ALWAYS, LEVEL_MAIN },
 	{ "  ", "GENRE|periodical",       ALWAYS, LEVEL_HOST },
 	{ "  ", "GENRE|academic journal", ALWAYS, LEVEL_HOST }
 };
 
 /* magazine article */
 static lookups magarticle[] = {
-	{ "AU", "AUTHOR",       PERSON,  LEVEL_MAIN },
-	{ "A1", "AUTHOR",       PERSON,  LEVEL_MAIN },
-	{ "A2", "AUTHOR",       PERSON,  LEVEL_HOST },
-	{ "A3", "AUTHOR",       PERSON,  LEVEL_SERIES }, 
-	{ "ED", "EDITOR",       PERSON,  LEVEL_HOST },
-	{ "PY", "PARTYEAR",     DATE,    LEVEL_MAIN },
-	{ "Y1", "PARTYEAR",     DATE,    LEVEL_MAIN },
-	{ "Y2", "PARTMONTH", SIMPLE,  LEVEL_MAIN },
-	{ "SN", "SERIALNUMBER", SERIALNO,LEVEL_HOST },
-	{ "TI", "TITLE",        TITLE,   LEVEL_MAIN },
-	{ "T1", "TITLE",        TITLE,   LEVEL_MAIN },
-	{ "T2", "SHORTTITLE",   SIMPLE,  LEVEL_HOST },
-	{ "T3", "TITLE",        SIMPLE,  LEVEL_SERIES },
-	{ "JO", "TITLE",        SIMPLE,  LEVEL_HOST }, /* JOURNAL */
-	{ "JA", "TITLE",        SIMPLE,  LEVEL_HOST },
-	{ "JF", "TITLE",        SIMPLE,  LEVEL_HOST },
-	{ "J1", "TITLE",        SIMPLE,  LEVEL_HOST },
-	{ "J2", "TITLE",        SIMPLE,  LEVEL_SERIES },
-	{ "VL", "VOLUME",       SIMPLE,  LEVEL_MAIN },
-	{ "VO", "VOLUME",       SIMPLE,  LEVEL_MAIN },
-	{ "IS", "ISSUE",        SIMPLE,  LEVEL_MAIN },
-	{ "CP", "ISSUE",        SIMPLE,  LEVEL_MAIN },
-	{ "SP", "PAGESTART",    SIMPLE,  LEVEL_MAIN },
-	{ "EP", "PAGEEND",      SIMPLE,  LEVEL_MAIN },
-	{ "AB", "ABSTRACT",     SIMPLE,  LEVEL_MAIN },
-	{ "N1", "NOTES",        NOTES,   LEVEL_MAIN },
-	{ "N2", "ABSTRACT",     SIMPLE,  LEVEL_MAIN }, 
-	{ "KW", "KEYWORD",      SIMPLE,  LEVEL_MAIN },
-	{ "PB", "PUBLISHER",    SIMPLE,  LEVEL_HOST },
-	{ "CT", "ADDRESS",      SIMPLE,  LEVEL_MAIN },
-	{ "AD", "AUTHORADDRESS",SIMPLE,  LEVEL_MAIN },
-	{ "CY", "ADDRESS",      SIMPLE,  LEVEL_MAIN },
-	{ "RP", "REPRINTSTATUS",SIMPLE,  LEVEL_MAIN },
-	{ "UR", "URL",          SIMPLE,  LEVEL_MAIN },
-	{ "L1", "FILEATTACH",   SIMPLE,  LEVEL_MAIN },
-	{ "ID", "REFNUM",       SIMPLE,  LEVEL_MAIN },
-	{ "U1", "NOTES",        NOTES,   LEVEL_MAIN },
-	{ "U2", "NOTES",        NOTES,   LEVEL_MAIN },
-	{ "U3", "NOTES",        NOTES,   LEVEL_MAIN },
-	{ "U4", "NOTES",        NOTES,   LEVEL_MAIN },
-	{ "U5", "NOTES",        NOTES,   LEVEL_MAIN },
-	{ "M1", "NOTES",        NOTES,   LEVEL_MAIN },
-	{ "M2", "NOTES",        NOTES,   LEVEL_MAIN },
-	{ "M3", "NOTES",        NOTES,   LEVEL_MAIN },
+	{ "A1", "AUTHOR",       PERSON,  LEVEL_MAIN },   /* Deprecated? */
+	{ "A2", "AUTHOR",       PERSON,  LEVEL_HOST },   /* 'Secondary' Author */
+	{ "A3", "EDITOR",       PERSON,  LEVEL_SERIES }, /* 'Tertiary' Author - Series editors */
+	{ "A4", "AUTHOR",       PERSON,  LEVEL_SERIES }, /* 'Subsidiary' Author */
+	{ "AB", "ABSTRACT",     SIMPLE,  LEVEL_MAIN },   /* Abstract */
+	{ "AD", "AUTHORADDRESS",SIMPLE,  LEVEL_MAIN },   /* Author Address */
+	{ "AU", "AUTHOR",       PERSON,  LEVEL_MAIN },   /* Author */
+	{ "C1", "NOTES",        NOTES,   LEVEL_MAIN },   /* 'Custom' - put in "notes" */
+	{ "C2", "NOTES",        NOTES,   LEVEL_MAIN },   /* 'Custom' - put in "notes" */
+	{ "C3", "NOTES",        NOTES,   LEVEL_MAIN },   /* 'Custom' - put in "notes" */
+	{ "C4", "NOTES",        NOTES,   LEVEL_MAIN },   /* 'Custom' - put in "notes" */
+	{ "C5", "NOTES",        NOTES,   LEVEL_MAIN },   /* 'Custom' - put in "notes" */
+	{ "C6", "NOTES",        NOTES,   LEVEL_MAIN },   /* 'Custom' - put in "notes" */
+	{ "C7", "NOTES",        NOTES,   LEVEL_MAIN },   /* 'Custom' - put in "notes" */
+	{ "C8", "NOTES",        NOTES,   LEVEL_MAIN },   /* 'Custom' - put in "notes" */
+	{ "CA", "CAPTION",      SIMPLE,  LEVEL_MAIN },   /* Caption */
+	{ "CN", "CALLNUMBER",   SIMPLE,  LEVEL_MAIN },   /* Call Number */
+	{ "CP", "ISSUE",        SIMPLE,  LEVEL_MAIN },   /* Deprecated? */
+	{ "CT", "ADDRESS",      SIMPLE,  LEVEL_MAIN },   /* Deprecated? */
+	{ "CY", "ADDRESS",      SIMPLE,  LEVEL_MAIN },   /* Place Published */
+	{ "DA", "YEAR",         DATE,    LEVEL_MAIN },   /* Date */
+	{ "DB", "DATABASE",     SIMPLE,  LEVEL_MAIN },   /* Database */
+	{ "DI", "DOI",          DOI,     LEVEL_MAIN },   /* Deprecated? */
+	{ "DO", "DOI",          DOI,     LEVEL_MAIN },   /* DOI */
+	{ "DP", "DATABASEPROV", SIMPLE,  LEVEL_MAIN },   /* Database Provider */
+	{ "ED", "EDITOR",       PERSON,  LEVEL_HOST },   /* Deprecated? */
+	{ "EP", "PAGEEND",      SIMPLE,  LEVEL_MAIN },   /* End Page */
+	{ "ET", "EDITION",      SIMPLE,  LEVEL_MAIN },   /* Edition */
+	{ "ID", "REFNUM",       SIMPLE,  LEVEL_MAIN },   /* Deprecated? */
+	{ "IS", "ISSUE",        SIMPLE,  LEVEL_MAIN },   /* Number */
+	{ "J1", "TITLE",        SIMPLE,  LEVEL_HOST },   /* Deprecated? */
+	{ "J2", "TITLE",        SIMPLE,  LEVEL_SERIES }, /* Alternate Title, abbreviated book or journal */
+	{ "JA", "TITLE",        SIMPLE,  LEVEL_HOST },   /* Deprecated? */
+	{ "JF", "TITLE",        SIMPLE,  LEVEL_HOST },   /* Deprecated? */
+	{ "JO", "TITLE",        SIMPLE,  LEVEL_HOST },   /* Deprecated? */
+	{ "KW", "KEYWORD",      SIMPLE,  LEVEL_MAIN },   /* Keywords */
+	{ "L1", "FILEATTACH",   LINKEDFILE,  LEVEL_MAIN },   /* File Attachment (local, not URL) */
+	{ "L4", "FIGATTACH",    LINKEDFILE,  LEVEL_MAIN },   /* Figure Attachment (local, not URL) */
+	{ "LA", "LANGUAGE",     SIMPLE,  LEVEL_MAIN },   /* Language */
+	{ "LB", "LABEL",        SIMPLE,  LEVEL_MAIN },   /* Label */
+	{ "M1", "NOTES",        NOTES,   LEVEL_MAIN },   /* Misc or Number? */
+	{ "M2", "NOTES",        NOTES,   LEVEL_MAIN },   /* Misc or Deprecated? */
+	{ "M3", "NOTES",        NOTES,   LEVEL_MAIN },   /* Misc or Type of Work? */
+	{ "N1", "NOTES",        NOTES,   LEVEL_MAIN },   /* Notes */
+	{ "N2", "ABSTRACT",     SIMPLE,  LEVEL_MAIN },   /* Deprecated? */
+	{ "NV", "NUMVOLUMES",   SIMPLE,  LEVEL_MAIN },   /* Number of Volumes */
+	{ "OP", "ORIGPUB",      SIMPLE,  LEVEL_MAIN },   /* Original Publication */
+	{ "PB", "PUBLISHER",    SIMPLE,  LEVEL_HOST },   /* Publisher */
+	{ "PY", "PARTYEAR",     DATE,    LEVEL_MAIN },   /* Year */
+	{ "RI", "REVIEWEDITEM", SIMPLE,  LEVEL_MAIN },   /* Reviewed Item */
+	{ "RN", "NOTES",        SIMPLE,  LEVEL_MAIN },   /* Research Notes */
+	{ "RP", "REPRINTSTATUS",SIMPLE,  LEVEL_MAIN },   /* Reprint Edition */
+	{ "SE", "SECTION",      SIMPLE,  LEVEL_MAIN },   /* Section */
+	{ "SN", "SERIALNUMBER", SERIALNO,LEVEL_HOST },   /* ISBN/ISSN */
+	{ "SP", "PAGESTART",    SIMPLE,  LEVEL_MAIN },   /* Start Page */
+	{ "ST", "SHORTTITLE",   SIMPLE,  LEVEL_MAIN },   /* Short Title */
+	{ "T1", "TITLE",        TITLE,   LEVEL_MAIN },   /* Deprecated? */
+	{ "T2", "SHORTTITLE",   SIMPLE,  LEVEL_HOST },   /* 'Secondary' Title */
+	{ "T3", "TITLE",        SIMPLE,  LEVEL_SERIES }, /* 'Tertiary' Title */
+	{ "TI", "TITLE",        TITLE,   LEVEL_MAIN },   /* Title */
+	{ "TT", "TRANSTITLE",   TITLE,   LEVEL_MAIN },   /* Translated Title */
+	{ "U1", "NOTES",        NOTES,   LEVEL_MAIN },   /* 'User' - Deprecated? */
+	{ "U2", "NOTES",        NOTES,   LEVEL_MAIN },   /* 'User' - Deprecated? */
+	{ "U3", "NOTES",        NOTES,   LEVEL_MAIN },   /* 'User' - Deprecated? */
+	{ "U4", "NOTES",        NOTES,   LEVEL_MAIN },   /* 'User' - Deprecated? */
+	{ "U5", "NOTES",        NOTES,   LEVEL_MAIN },   /* 'User' - Deprecated? */
+	{ "UR", "URL",          SIMPLE,  LEVEL_MAIN },   /* URL */
+	{ "VL", "VOLUME",       SIMPLE,  LEVEL_MAIN },   /* Volume */
+	{ "VO", "VOLUME",       SIMPLE,  LEVEL_MAIN },   /* Deprecated? */
+	{ "Y1", "PARTYEAR",     DATE,    LEVEL_MAIN },   /* Deprecated */
+	{ "Y2", "PARTMONTH",    SIMPLE,  LEVEL_MAIN },   /* Access Date */
 	{ "  ", "ISSUANCE|continuing",    ALWAYS, LEVEL_HOST },
 	{ "  ", "RESOURCE|text",          ALWAYS, LEVEL_MAIN },
 	{ "  ", "GENRE|periodical",       ALWAYS, LEVEL_HOST },
 	{ "  ", "GENRE|magazine",         ALWAYS, LEVEL_HOST }
 };
 
-
-
 static lookups newsarticle[] = {
-	{ "AU", "AUTHOR",       PERSON,  LEVEL_MAIN },
-	{ "A1", "AUTHOR",       PERSON,  LEVEL_MAIN },
-	{ "A2", "AUTHOR",       PERSON,  LEVEL_HOST },
-	{ "A3", "AUTHOR",       PERSON,  LEVEL_SERIES }, 
-	{ "ED", "EDITOR",       PERSON,  LEVEL_HOST },
-	{ "PY", "PARTYEAR",     DATE,    LEVEL_MAIN },
-	{ "Y1", "PARTYEAR",     DATE,    LEVEL_MAIN },
-	{ "Y2", "PARTMONTH", SIMPLE,  LEVEL_MAIN },
-	{ "SN", "SERIALNUMBER", SERIALNO,LEVEL_HOST },
-	{ "TI", "TITLE",        TITLE,   LEVEL_MAIN },
-	{ "T1", "TITLE",        TITLE,   LEVEL_MAIN },
-	{ "T2", "SHORTTITLE",   SIMPLE,  LEVEL_HOST },
-	{ "T3", "TITLE",        SIMPLE,  LEVEL_SERIES },
-	{ "JO", "TITLE",        SIMPLE,  LEVEL_HOST }, /* JOURNAL */
-	{ "JA", "TITLE",        SIMPLE,  LEVEL_HOST },
-	{ "JF", "TITLE",        SIMPLE,  LEVEL_HOST },
-	{ "J1", "TITLE",        SIMPLE,  LEVEL_HOST },
-	{ "J2", "TITLE",        SIMPLE,  LEVEL_SERIES },
-	{ "VL", "VOLUME",       SIMPLE,  LEVEL_MAIN },
-	{ "VO", "VOLUME",       SIMPLE,  LEVEL_MAIN },
-	{ "IS", "ISSUE",        SIMPLE,  LEVEL_MAIN },
-	{ "CP", "ISSUE",        SIMPLE,  LEVEL_MAIN },
-	{ "SP", "PAGESTART",    SIMPLE,  LEVEL_MAIN },
-	{ "EP", "PAGEEND",      SIMPLE,  LEVEL_MAIN },
-	{ "AB", "ABSTRACT",     SIMPLE,  LEVEL_MAIN },
-	{ "N1", "NOTES",        NOTES,   LEVEL_MAIN },
-	{ "N2", "ABSTRACT",     SIMPLE,  LEVEL_MAIN }, 
-	{ "KW", "KEYWORD",      SIMPLE,  LEVEL_MAIN },
-	{ "PB", "PUBLISHER",    SIMPLE,  LEVEL_HOST },
-	{ "CT", "ADDRESS",      SIMPLE,  LEVEL_MAIN },
-	{ "AD", "AUTHORADDRESS",SIMPLE,  LEVEL_MAIN },
-	{ "CY", "ADDRESS",      SIMPLE,  LEVEL_MAIN },
-	{ "RP", "REPRINTSTATUS",SIMPLE,  LEVEL_MAIN },
-	{ "UR", "URL",          SIMPLE,  LEVEL_MAIN },
-	{ "L1", "FILEATTACH",   SIMPLE,  LEVEL_MAIN },
-	{ "ID", "REFNUM",       SIMPLE,  LEVEL_MAIN },
-	{ "U1", "NOTES",        NOTES,   LEVEL_MAIN },
-	{ "U2", "NOTES",        NOTES,   LEVEL_MAIN },
-	{ "U3", "NOTES",        NOTES,   LEVEL_MAIN },
-	{ "U4", "NOTES",        NOTES,   LEVEL_MAIN },
-	{ "U5", "NOTES",        NOTES,   LEVEL_MAIN },
-	{ "M1", "NOTES",        NOTES,   LEVEL_MAIN },
-	{ "M2", "NOTES",        NOTES,   LEVEL_MAIN },
-	{ "M3", "NOTES",        NOTES,   LEVEL_MAIN },
+	{ "A1", "AUTHOR",       PERSON,  LEVEL_MAIN },   /* Deprecated? */
+	{ "A2", "AUTHOR",       PERSON,  LEVEL_HOST },   /* 'Secondary' Author */
+	{ "A3", "EDITOR",       PERSON,  LEVEL_SERIES }, /* 'Tertiary' Author - Series editor */
+	{ "A4", "AUTHOR",       PERSON,  LEVEL_SERIES }, /* 'Subsidiary' Author */
+	{ "AB", "ABSTRACT",     SIMPLE,  LEVEL_MAIN },   /* Abstract */
+	{ "AD", "AUTHORADDRESS",SIMPLE,  LEVEL_MAIN },   /* Author Address */
+	{ "AU", "AUTHOR",       PERSON,  LEVEL_MAIN },   /* Author */
+	{ "C1", "NOTES",        NOTES,   LEVEL_MAIN },   /* 'Custom' - put in "notes" */
+	{ "C2", "NOTES",        NOTES,   LEVEL_MAIN },   /* 'Custom' - put in "notes" */
+	{ "C3", "NOTES",        NOTES,   LEVEL_MAIN },   /* 'Custom' - put in "notes" */
+	{ "C4", "NOTES",        NOTES,   LEVEL_MAIN },   /* 'Custom' - put in "notes" */
+	{ "C5", "NOTES",        NOTES,   LEVEL_MAIN },   /* 'Custom' - put in "notes" */
+	{ "C6", "NOTES",        NOTES,   LEVEL_MAIN },   /* 'Custom' - put in "notes" */
+	{ "C7", "NOTES",        NOTES,   LEVEL_MAIN },   /* 'Custom' - put in "notes" */
+	{ "C8", "NOTES",        NOTES,   LEVEL_MAIN },   /* 'Custom' - put in "notes" */
+	{ "CA", "CAPTION",      SIMPLE,  LEVEL_MAIN },   /* Caption */
+	{ "CN", "CALLNUMBER",   SIMPLE,  LEVEL_MAIN },   /* Call Number */
+	{ "CP", "ISSUE",        SIMPLE,  LEVEL_MAIN },   /* Deprecated? */
+	{ "CT", "ADDRESS",      SIMPLE,  LEVEL_MAIN },   /* Deprecated? */
+	{ "CY", "ADDRESS",      SIMPLE,  LEVEL_MAIN },   /* Place Published */
+	{ "DA", "YEAR",         DATE,    LEVEL_MAIN },   /* Date */
+	{ "DB", "DATABASE",     SIMPLE,  LEVEL_MAIN },   /* Database */
+	{ "DI", "DOI",          DOI,     LEVEL_MAIN },   /* Deprecated? */
+	{ "DO", "DOI",          DOI,     LEVEL_MAIN },   /* DOI */
+	{ "DP", "DATABASEPROV", SIMPLE,  LEVEL_MAIN },   /* Database Provider */
+	{ "ED", "EDITOR",       PERSON,  LEVEL_HOST },   /* Deprecated? */
+	{ "EP", "PAGEEND",      SIMPLE,  LEVEL_MAIN },   /* End Page */
+	{ "ET", "EDITION",      SIMPLE,  LEVEL_MAIN },   /* Edition */
+	{ "ID", "REFNUM",       SIMPLE,  LEVEL_MAIN },   /* Deprecated? */
+	{ "IS", "ISSUE",        SIMPLE,  LEVEL_MAIN },   /* Number */
+	{ "J1", "TITLE",        SIMPLE,  LEVEL_HOST },   /* Deprecated? */
+	{ "J2", "TITLE",        SIMPLE,  LEVEL_SERIES }, /* Alternate Title, abbreviated book or journal */
+	{ "JA", "TITLE",        SIMPLE,  LEVEL_HOST },   /* Deprecated? */
+	{ "JF", "TITLE",        SIMPLE,  LEVEL_HOST },   /* Deprecated? */
+	{ "JO", "TITLE",        SIMPLE,  LEVEL_HOST },   /* Deprecated? */
+	{ "KW", "KEYWORD",      SIMPLE,  LEVEL_MAIN },   /* Keywords */
+	{ "L1", "FILEATTACH",   LINKEDFILE,  LEVEL_MAIN },   /* File Attachment (local, not URL) */
+	{ "L4", "FIGATTACH",    LINKEDFILE,  LEVEL_MAIN },   /* Figure Attachment (local, not URL) */
+	{ "LA", "LANGUAGE",     SIMPLE,  LEVEL_MAIN },   /* Language */
+	{ "LB", "LABEL",        SIMPLE,  LEVEL_MAIN },   /* Label */
+	{ "M1", "NOTES",        NOTES,   LEVEL_MAIN },   /* Misc or Number? */
+	{ "M2", "NOTES",        NOTES,   LEVEL_MAIN },   /* Misc or Deprecated? */
+	{ "M3", "NOTES",        NOTES,   LEVEL_MAIN },   /* Misc or Type of Work? */
+	{ "N1", "NOTES",        NOTES,   LEVEL_MAIN },   /* Notes */
+	{ "N2", "ABSTRACT",     SIMPLE,  LEVEL_MAIN },   /* Deprecated? */
+	{ "NV", "NUMVOLUMES",   SIMPLE,  LEVEL_MAIN },   /* Number of Volumes */
+	{ "OP", "ORIGPUB",      SIMPLE,  LEVEL_MAIN },   /* Original Publication */
+	{ "PB", "PUBLISHER",    SIMPLE,  LEVEL_HOST },   /* Publisher */
+	{ "PY", "PARTYEAR",     DATE,    LEVEL_MAIN },   /* Year */
+	{ "RI", "REVIEWEDITEM", SIMPLE,  LEVEL_MAIN },   /* Reviewed Item */
+	{ "RN", "NOTES",        SIMPLE,  LEVEL_MAIN },   /* Research Notes */
+	{ "RP", "REPRINTSTATUS",SIMPLE,  LEVEL_MAIN },   /* Reprint Edition */
+	{ "SE", "SECTION",      SIMPLE,  LEVEL_MAIN },   /* Section */
+	{ "SN", "SERIALNUMBER", SERIALNO,LEVEL_HOST },   /* ISBN/ISSN */
+	{ "SP", "PAGESTART",    SIMPLE,  LEVEL_MAIN },   /* Start Page */
+	{ "ST", "SHORTTITLE",   SIMPLE,  LEVEL_MAIN },   /* Short Title */
+	{ "T1", "TITLE",        TITLE,   LEVEL_MAIN },   /* Deprecated? */
+	{ "T2", "SHORTTITLE",   SIMPLE,  LEVEL_HOST },   /* 'Secondary' Title */
+	{ "T3", "TITLE",        SIMPLE,  LEVEL_SERIES }, /* 'Tertiary' Title */
+	{ "TI", "TITLE",        TITLE,   LEVEL_MAIN },   /* Title */
+	{ "TT", "TRANSTITLE",   TITLE,   LEVEL_MAIN },   /* Translated Title */
+	{ "U1", "NOTES",        NOTES,   LEVEL_MAIN },   /* 'User' - Deprecated? */
+	{ "U2", "NOTES",        NOTES,   LEVEL_MAIN },   /* 'User' - Deprecated? */
+	{ "U3", "NOTES",        NOTES,   LEVEL_MAIN },   /* 'User' - Deprecated? */
+	{ "U4", "NOTES",        NOTES,   LEVEL_MAIN },   /* 'User' - Deprecated? */
+	{ "U5", "NOTES",        NOTES,   LEVEL_MAIN },   /* 'User' - Deprecated? */
+	{ "UR", "URL",          SIMPLE,  LEVEL_MAIN },   /* URL */
+	{ "VL", "VOLUME",       SIMPLE,  LEVEL_MAIN },   /* Volume */
+	{ "VO", "VOLUME",       SIMPLE,  LEVEL_MAIN },   /* Deprecated? */
+	{ "Y1", "PARTYEAR",     DATE,    LEVEL_MAIN },   /* Deprecated */
+	{ "Y2", "PARTMONTH",    SIMPLE,  LEVEL_MAIN },   /* Access Date */
 	{ "  ", "INTERNAL_TYPE|NEWSARTICLE",       ALWAYS, LEVEL_MAIN },
 	{ "  ", "ISSUANCE|continuing",    ALWAYS, LEVEL_HOST },
 	{ "  ", "RESOURCE|text",          ALWAYS, LEVEL_MAIN },
@@ -223,752 +325,1240 @@ static lookups newsarticle[] = {
 };
 
 static lookups book[] = {
-	{ "AU", "AUTHOR",       PERSON,  LEVEL_MAIN },
-	{ "A1", "AUTHOR",       PERSON,  LEVEL_MAIN },
-	{ "A2", "AUTHOR",       PERSON,  LEVEL_HOST },
-	{ "A3", "AUTHOR",       PERSON,  LEVEL_SERIES }, 
-	{ "ED", "EDITOR",       PERSON,  LEVEL_MAIN },
-	{ "PY", "YEAR",         DATE,    LEVEL_MAIN },
-	{ "Y1", "YEAR",         DATE,    LEVEL_MAIN },
-	{ "Y2", "MONTH",     SIMPLE,  LEVEL_MAIN }, 
-	{ "SN", "SERIALNUMBER", SERIALNO,LEVEL_MAIN },
-	{ "TI", "TITLE",        TITLE,   LEVEL_MAIN },
-	{ "T1", "TITLE",        TITLE,   LEVEL_MAIN },
-	{ "T2", "SHORTTITLE",   SIMPLE,  LEVEL_HOST },
-	{ "T3", "TITLE",        SIMPLE,  LEVEL_SERIES },
-	{ "JO", "TITLE",        SIMPLE,  LEVEL_HOST },
-	{ "JA", "TITLE",        SIMPLE,  LEVEL_HOST },
-	{ "JF", "TITLE",        SIMPLE,  LEVEL_HOST },
-	{ "J1", "TITLE",        SIMPLE,  LEVEL_HOST },
-	{ "J2", "TITLE",        SIMPLE,  LEVEL_HOST },
-	{ "VL", "VOLUME",       SIMPLE,  LEVEL_MAIN },
-	{ "VO", "VOLUME",       SIMPLE,  LEVEL_MAIN },
-	{ "IS", "ISSUE",        SIMPLE,  LEVEL_MAIN },
-	{ "CP", "ISSUE",        SIMPLE,  LEVEL_MAIN },
-	{ "SP", "PAGESTART",    SIMPLE,  LEVEL_MAIN },
-	{ "EP", "PAGEEND",      SIMPLE,  LEVEL_MAIN },
-	{ "AB", "ABSTRACT",     SIMPLE,  LEVEL_MAIN },
-	{ "N1", "NOTES",        NOTES,   LEVEL_MAIN },
-	{ "N2", "ABSTRACT",     SIMPLE,  LEVEL_MAIN }, 
-	{ "KW", "KEYWORD",      SIMPLE,  LEVEL_MAIN },
-	{ "PB", "PUBLISHER",    SIMPLE,  LEVEL_MAIN },
-	{ "BT", "TITLE",        SIMPLE,  LEVEL_MAIN },  /* BOOKTITLE */
-	{ "CT", "ADDRESS",      SIMPLE,  LEVEL_MAIN },
-	{ "AD", "AUTHORADDRESS",SIMPLE,  LEVEL_MAIN },
-	{ "CY", "ADDRESS",      SIMPLE,  LEVEL_MAIN },
-	{ "RP", "REPRINTSTATUS",SIMPLE,  LEVEL_MAIN },
-	{ "UR", "URL",          SIMPLE,  LEVEL_MAIN },
-	{ "L1", "FILEATTACH",   SIMPLE,  LEVEL_MAIN },
-	{ "ID", "REFNUM",       SIMPLE,  LEVEL_MAIN },
-	{ "U1", "NOTES",        NOTES,   LEVEL_MAIN },
-	{ "U2", "NOTES",        NOTES,   LEVEL_MAIN },
-	{ "U3", "NOTES",        NOTES,   LEVEL_MAIN },
-	{ "U4", "NOTES",        NOTES,   LEVEL_MAIN },
-	{ "U5", "NOTES",        NOTES,   LEVEL_MAIN },
-	{ "M1", "NOTES",        NOTES,   LEVEL_MAIN },
-	{ "M2", "NOTES",        NOTES,   LEVEL_MAIN },
-	{ "M3", "NOTES",        NOTES,   LEVEL_MAIN },
+	{ "A1", "AUTHOR",       PERSON,  LEVEL_MAIN },   /* Deprecated? */
+	{ "A2", "AUTHOR",       PERSON,  LEVEL_HOST },   /* 'Secondary' Author */
+	{ "A3", "EDITOR",       PERSON,  LEVEL_HOST },   /* 'Tertiary' Author - Series editor */
+	{ "A4", "AUTHOR",       PERSON,  LEVEL_SERIES }, /* 'Subsidiary' Author */
+	{ "AB", "ABSTRACT",     SIMPLE,  LEVEL_MAIN },   /* Abstract */
+	{ "AD", "AUTHORADDRESS",SIMPLE,  LEVEL_MAIN },   /* Author Address */
+	{ "AU", "AUTHOR",       PERSON,  LEVEL_MAIN },   /* Author */
+	{ "BT", "TITLE",        SIMPLE,  LEVEL_MAIN },   /* Deprecated? */
+	{ "C1", "NOTES",        NOTES,   LEVEL_MAIN },   /* 'Custom' - put in "notes" */
+	{ "C2", "NOTES",        NOTES,   LEVEL_MAIN },   /* 'Custom' - put in "notes" */
+	{ "C3", "NOTES",        NOTES,   LEVEL_MAIN },   /* 'Custom' - put in "notes" */
+	{ "C4", "NOTES",        NOTES,   LEVEL_MAIN },   /* 'Custom' - put in "notes" */
+	{ "C5", "NOTES",        NOTES,   LEVEL_MAIN },   /* 'Custom' - put in "notes" */
+	{ "C6", "NOTES",        NOTES,   LEVEL_MAIN },   /* 'Custom' - put in "notes" */
+	{ "C7", "NOTES",        NOTES,   LEVEL_MAIN },   /* 'Custom' - put in "notes" */
+	{ "C8", "NOTES",        NOTES,   LEVEL_MAIN },   /* 'Custom' - put in "notes" */
+	{ "CA", "CAPTION",      SIMPLE,  LEVEL_MAIN },   /* Caption */
+	{ "CN", "CALLNUMBER",   SIMPLE,  LEVEL_MAIN },   /* Call Number */
+	{ "CP", "ISSUE",        SIMPLE,  LEVEL_MAIN },   /* Deprecated? */
+	{ "CT", "ADDRESS",      SIMPLE,  LEVEL_MAIN },   /* Deprecated? */
+	{ "CY", "ADDRESS",      SIMPLE,  LEVEL_MAIN },   /* Place Published */
+	{ "DA", "YEAR",         DATE,    LEVEL_MAIN },   /* Date */
+	{ "DB", "DATABASE",     SIMPLE,  LEVEL_MAIN },   /* Database */
+	{ "DI", "DOI",          DOI,     LEVEL_MAIN },   /* Deprecated? */
+	{ "DO", "DOI",          DOI,     LEVEL_MAIN },   /* DOI */
+	{ "DP", "DATABASEPROV", SIMPLE,  LEVEL_MAIN },   /* Database Provider */
+	{ "ED", "EDITOR",       PERSON,  LEVEL_MAIN },   /* Deprecated? */
+	{ "EP", "PAGEEND",      SIMPLE,  LEVEL_MAIN },   /* End Page */
+	{ "ET", "EDITION",      SIMPLE,  LEVEL_MAIN },   /* Edition */
+	{ "ID", "REFNUM",       SIMPLE,  LEVEL_MAIN },   /* Deprecated? */
+	{ "IS", "ISSUE",        SIMPLE,  LEVEL_MAIN },   /* Number */
+	{ "J1", "TITLE",        SIMPLE,  LEVEL_HOST },   /* Deprecated? */
+	{ "J2", "TITLE",        SIMPLE,  LEVEL_HOST },   /* Alternate Title, abbreviated book or journal */
+	{ "JA", "TITLE",        SIMPLE,  LEVEL_HOST },   /* Deprecated? */
+	{ "JF", "TITLE",        SIMPLE,  LEVEL_HOST },   /* Deprecated? */
+	{ "JO", "TITLE",        SIMPLE,  LEVEL_HOST },   /* Deprecated? */
+	{ "KW", "KEYWORD",      SIMPLE,  LEVEL_MAIN },   /* Keywords */
+	{ "L1", "FILEATTACH",   LINKEDFILE,  LEVEL_MAIN },   /* File Attachment (local, not URL) */
+	{ "L4", "FIGATTACH",    LINKEDFILE,  LEVEL_MAIN },   /* Figure Attachment (local, not URL) */
+	{ "LA", "LANGUAGE",     SIMPLE,  LEVEL_MAIN },   /* Language */
+	{ "LB", "LABEL",        SIMPLE,  LEVEL_MAIN },   /* Label */
+	{ "M1", "NOTES",        NOTES,   LEVEL_MAIN },   /* Misc or Number? */
+	{ "M2", "NOTES",        NOTES,   LEVEL_MAIN },   /* Misc or Deprecated? */
+	{ "M3", "NOTES",        NOTES,   LEVEL_MAIN },   /* Misc or Type of Work? */
+	{ "N1", "NOTES",        NOTES,   LEVEL_MAIN },   /* Notes */
+	{ "N2", "ABSTRACT",     SIMPLE,  LEVEL_MAIN },   /* Deprecated? */
+	{ "NV", "NUMVOLUMES",   SIMPLE,  LEVEL_MAIN },   /* Number of Volumes */
+	{ "OP", "ORIGPUB",      SIMPLE,  LEVEL_MAIN },   /* Original Publication */
+	{ "PB", "PUBLISHER",    SIMPLE,  LEVEL_MAIN },   /* Publisher */
+	{ "PY", "YEAR",         DATE,    LEVEL_MAIN },   /* Year */
+	{ "RI", "REVIEWEDITEM", SIMPLE,  LEVEL_MAIN },   /* Reviewed Item */
+	{ "RN", "NOTES",        SIMPLE,  LEVEL_MAIN },   /* Research Notes */
+	{ "RP", "REPRINTSTATUS",SIMPLE,  LEVEL_MAIN },   /* Reprint Edition */
+	{ "SE", "SECTION",      SIMPLE,  LEVEL_MAIN },   /* Section */
+	{ "SN", "SERIALNUMBER", SERIALNO,LEVEL_MAIN },   /* ISBN/ISSN */
+	{ "SP", "PAGESTART",    SIMPLE,  LEVEL_MAIN },   /* Start Page */
+	{ "ST", "SHORTTITLE",   SIMPLE,  LEVEL_MAIN },   /* Short Title */
+	{ "T1", "TITLE",        TITLE,   LEVEL_MAIN },   /* Deprecated? */
+	{ "T2", "SHORTTITLE",   SIMPLE,  LEVEL_HOST },   /* 'Secondary' Title -- here abbreviated title for series*/
+	{ "T3", "TITLE",        SIMPLE,  LEVEL_HOST },   /* 'Tertiary' Title -- series title */
+	{ "TI", "TITLE",        TITLE,   LEVEL_MAIN },   /* Title */
+	{ "TT", "TRANSTITLE",   TITLE,   LEVEL_MAIN },   /* Translated Title */
+	{ "U1", "NOTES",        NOTES,   LEVEL_MAIN },   /* 'User' - Deprecated? */
+	{ "U2", "NOTES",        NOTES,   LEVEL_MAIN },   /* 'User' - Deprecated? */
+	{ "U3", "NOTES",        NOTES,   LEVEL_MAIN },   /* 'User' - Deprecated? */
+	{ "U4", "NOTES",        NOTES,   LEVEL_MAIN },   /* 'User' - Deprecated? */
+	{ "U5", "NOTES",        NOTES,   LEVEL_MAIN },   /* 'User' - Deprecated? */
+	{ "UR", "URL",          SIMPLE,  LEVEL_MAIN },   /* URL */
+	{ "VL", "VOLUME",       SIMPLE,  LEVEL_MAIN },   /* Volume */
+	{ "VO", "VOLUME",       SIMPLE,  LEVEL_MAIN },   /* Deprecated? */
+	{ "Y1", "YEAR",         DATE,    LEVEL_MAIN },   /* Deprecated */
+	{ "Y2", "MONTH",        SIMPLE,  LEVEL_MAIN },   /* Access Date */
 	{ "  ", "ISSUANCE|monographic",  ALWAYS, LEVEL_MAIN },
 	{ "  ", "GENRE|book",    ALWAYS, LEVEL_MAIN },
 	{ "  ", "RESOURCE|text", ALWAYS, LEVEL_MAIN }
 };
 
 static lookups inbook[] = {
-	{ "AU", "AUTHOR",       PERSON,  LEVEL_MAIN },
-	{ "A1", "AUTHOR",       PERSON,  LEVEL_MAIN },
-	{ "A2", "AUTHOR",       PERSON,  LEVEL_HOST },
-	{ "A3", "AUTHOR",       PERSON,  LEVEL_SERIES }, 
-	{ "ED", "EDITOR",       PERSON,  LEVEL_HOST },
-	{ "PY", "YEAR",         DATE,    LEVEL_HOST },
-	{ "Y1", "YEAR",         DATE,    LEVEL_HOST },
-	{ "Y2", "MONTH",     SIMPLE,  LEVEL_HOST }, 
-	{ "SN", "SERIALNUMBER", SERIALNO,LEVEL_HOST },
-	{ "TI", "TITLE",        TITLE,   LEVEL_MAIN },
-	{ "T1", "TITLE",        TITLE,   LEVEL_MAIN },
-	{ "T2", "SHORTTITLE",   SIMPLE,  LEVEL_HOST },
-	{ "T3", "TITLE",        SIMPLE,  LEVEL_SERIES },
-	{ "VL", "VOLUME",       SIMPLE,  LEVEL_HOST },
-	{ "VO", "VOLUME",       SIMPLE,  LEVEL_HOST },
-	{ "IS", "ISSUE",        SIMPLE,  LEVEL_HOST },
-	{ "CP", "ISSUE",        SIMPLE,  LEVEL_HOST },
-	{ "SP", "PAGESTART",    SIMPLE,  LEVEL_MAIN },
-	{ "EP", "PAGEEND",      SIMPLE,  LEVEL_MAIN },
-	{ "AB", "ABSTRACT",     SIMPLE,  LEVEL_MAIN },
-	{ "N1", "NOTES",        NOTES,   LEVEL_MAIN },
-	{ "N2", "ABSTRACT",     SIMPLE,  LEVEL_MAIN }, 
-	{ "KW", "KEYWORD",      SIMPLE,  LEVEL_MAIN },
-	{ "PB", "PUBLISHER",    SIMPLE,  LEVEL_HOST },
-	{ "BT", "TITLE",        SIMPLE,  LEVEL_HOST }, /* BOOKTITLE */
-	{ "CT", "ADDRESS",      SIMPLE,  LEVEL_HOST },
-	{ "AD", "AUTHORADDRESS",SIMPLE,  LEVEL_MAIN },
-	{ "CY", "ADDRESS",      SIMPLE,  LEVEL_MAIN },
-	{ "RP", "REPRINTSTATUS",SIMPLE,  LEVEL_MAIN },
-	{ "UR", "URL",          SIMPLE,  LEVEL_MAIN },
-	{ "L1", "FILEATTACH",   SIMPLE,  LEVEL_MAIN },
-	{ "ID", "REFNUM",       SIMPLE,  LEVEL_MAIN },
-	{ "U1", "NOTES",        NOTES,   LEVEL_MAIN },
-	{ "U2", "NOTES",        NOTES,   LEVEL_MAIN },
-	{ "U3", "NOTES",        NOTES,   LEVEL_MAIN },
-	{ "U4", "NOTES",        NOTES,   LEVEL_MAIN },
-	{ "U5", "NOTES",        NOTES,   LEVEL_MAIN },
-	{ "M1", "NOTES",        NOTES,   LEVEL_MAIN },
-	{ "M2", "NOTES",        NOTES,   LEVEL_MAIN },
-	{ "M3", "NOTES",        NOTES,   LEVEL_MAIN },
-	{ "  ", "GENRE|book",    ALWAYS, LEVEL_HOST },
-	{ "  ", "ISSUANCE|monographic",  ALWAYS, LEVEL_HOST },
-	{ "  ", "RESOURCE|text", ALWAYS, LEVEL_MAIN }
+	{ "A1", "AUTHOR",       PERSON,  LEVEL_MAIN },   /* Deprecated? */
+	{ "A2", "AUTHOR",       PERSON,  LEVEL_HOST },   /* 'Secondary' Author */
+	{ "A3", "EDITOR",       PERSON,  LEVEL_SERIES }, /* 'Tertiary' Author - series editor */
+	{ "A4", "AUTHOR",       PERSON,  LEVEL_SERIES }, /* 'Subsidiary' Author */
+	{ "AB", "ABSTRACT",     SIMPLE,  LEVEL_MAIN },   /* Abstract */
+	{ "AD", "AUTHORADDRESS",SIMPLE,  LEVEL_MAIN },   /* Author Address */
+	{ "AU", "AUTHOR",       PERSON,  LEVEL_MAIN },   /* Author */
+	{ "BT", "TITLE",        SIMPLE,  LEVEL_HOST },   /* Book Title - Deprecated? */
+	{ "C1", "NOTES",        NOTES,   LEVEL_MAIN },   /* 'Custom' - put in "notes" */
+	{ "C2", "NOTES",        NOTES,   LEVEL_MAIN },   /* 'Custom' - put in "notes" */
+	{ "C3", "NOTES",        NOTES,   LEVEL_MAIN },   /* 'Custom' - put in "notes" */
+	{ "C4", "NOTES",        NOTES,   LEVEL_MAIN },   /* 'Custom' - put in "notes" */
+	{ "C5", "NOTES",        NOTES,   LEVEL_MAIN },   /* 'Custom' - put in "notes" */
+	{ "C6", "NOTES",        NOTES,   LEVEL_MAIN },   /* 'Custom' - put in "notes" */
+	{ "C7", "NOTES",        NOTES,   LEVEL_MAIN },   /* 'Custom' - put in "notes" */
+	{ "C8", "NOTES",        NOTES,   LEVEL_MAIN },   /* 'Custom' - put in "notes" */
+	{ "CA", "CAPTION",      SIMPLE,  LEVEL_MAIN },   /* Caption */
+	{ "CN", "CALLNUMBER",   SIMPLE,  LEVEL_MAIN },   /* Call Number */
+	{ "CP", "ISSUE",        SIMPLE,  LEVEL_HOST },   /* Deprecated? */
+	{ "CT", "ADDRESS",      SIMPLE,  LEVEL_HOST },   /* Deprecated? */
+	{ "CY", "ADDRESS",      SIMPLE,  LEVEL_HOST },   /* Place Published */
+	{ "DA", "YEAR",         DATE,    LEVEL_MAIN },   /* Date */
+	{ "DB", "DATABASE",     SIMPLE,  LEVEL_MAIN },   /* Database */
+	{ "DI", "DOI",          DOI,     LEVEL_MAIN },   /* Deprecated? */
+	{ "DO", "DOI",          DOI,     LEVEL_MAIN },   /* DOI */
+	{ "DP", "DATABASEPROV", SIMPLE,  LEVEL_MAIN },   /* Database Provider */
+	{ "ED", "EDITOR",       PERSON,  LEVEL_HOST },   /* Deprecated? */
+	{ "EP", "PAGEEND",      SIMPLE,  LEVEL_MAIN },   /* End Page */
+	{ "ET", "EDITION",      SIMPLE,  LEVEL_HOST },   /* Edition */
+	{ "ID", "REFNUM",       SIMPLE,  LEVEL_MAIN },   /* Deprecated? */
+	{ "IS", "ISSUE",        SIMPLE,  LEVEL_HOST },   /* Number */
+	{ "J1", "TITLE",        SIMPLE,  LEVEL_HOST },   /* Deprecated? */
+	{ "J2", "TITLE",        SIMPLE,  LEVEL_HOST },   /* Alternate Title, abbreviated book or journal */
+	{ "JA", "TITLE",        SIMPLE,  LEVEL_HOST },   /* Deprecated? */
+	{ "JF", "TITLE",        SIMPLE,  LEVEL_HOST },   /* Deprecated? */
+	{ "JO", "TITLE",        SIMPLE,  LEVEL_HOST },   /* Deprecated? */
+	{ "KW", "KEYWORD",      SIMPLE,  LEVEL_MAIN },   /* Keywords */
+	{ "L1", "FILEATTACH",   LINKEDFILE,  LEVEL_MAIN },   /* File Attachment (local, not URL) */
+	{ "L4", "FIGATTACH",    LINKEDFILE,  LEVEL_MAIN },   /* Figure Attachment (local, not URL) */
+	{ "LA", "LANGUAGE",     SIMPLE,  LEVEL_MAIN },   /* Language */
+	{ "LB", "LABEL",        SIMPLE,  LEVEL_MAIN },   /* Label */
+	{ "M1", "NOTES",        NOTES,   LEVEL_MAIN },   /* Misc or Number? */
+	{ "M2", "NOTES",        NOTES,   LEVEL_MAIN },   /* Misc or Deprecated? */
+	{ "M3", "NOTES",        NOTES,   LEVEL_MAIN },   /* Misc or Type of Work? */
+	{ "N1", "NOTES",        NOTES,   LEVEL_MAIN },   /* Notes */
+	{ "N2", "ABSTRACT",     SIMPLE,  LEVEL_MAIN },   /* Deprecated? */
+	{ "NV", "NUMVOLUMES",   SIMPLE,  LEVEL_MAIN },   /* Number of Volumes */
+	{ "OP", "ORIGPUB",      SIMPLE,  LEVEL_MAIN },   /* Original Publication */
+	{ "PB", "PUBLISHER",    SIMPLE,  LEVEL_HOST },   /* Publisher */
+	{ "PY", "YEAR",         DATE,    LEVEL_HOST },   /* Year */
+	{ "RI", "REVIEWEDITEM", SIMPLE,  LEVEL_MAIN },   /* Reviewed Item */
+	{ "RN", "NOTES",        SIMPLE,  LEVEL_MAIN },   /* Research Notes */
+	{ "RP", "REPRINTSTATUS",SIMPLE,  LEVEL_MAIN },   /* Reprint Edition */
+	{ "SE", "SECTION",      SIMPLE,  LEVEL_MAIN },   /* Section */
+	{ "SN", "SERIALNUMBER", SERIALNO,LEVEL_HOST },   /* ISBN/ISSN */
+	{ "SP", "PAGESTART",    SIMPLE,  LEVEL_MAIN },   /* Start Page */
+	{ "ST", "SHORTTITLE",   SIMPLE,  LEVEL_MAIN },   /* Short Title */
+	{ "T1", "TITLE",        TITLE,   LEVEL_MAIN },   /* Deprecated? */
+	{ "T2", "SHORTTITLE",   SIMPLE,  LEVEL_SERIES }, /* 'Secondary' Title -- here abbreviated title for series*/
+	{ "T3", "TITLE",        SIMPLE,  LEVEL_SERIES }, /* 'Tertiary' Title */
+	{ "TI", "TITLE",        TITLE,   LEVEL_MAIN },   /* Title */
+	{ "TT", "TRANSTITLE",   TITLE,   LEVEL_MAIN },   /* Translated Title */
+	{ "U1", "NOTES",        NOTES,   LEVEL_MAIN },   /* 'User' - Deprecated? */
+	{ "U2", "NOTES",        NOTES,   LEVEL_MAIN },   /* 'User' - Deprecated? */
+	{ "U3", "NOTES",        NOTES,   LEVEL_MAIN },   /* 'User' - Deprecated? */
+	{ "U4", "NOTES",        NOTES,   LEVEL_MAIN },   /* 'User' - Deprecated? */
+	{ "U5", "NOTES",        NOTES,   LEVEL_MAIN },   /* 'User' - Deprecated? */
+	{ "UR", "URL",          SIMPLE,  LEVEL_MAIN },   /* URL */
+	{ "VL", "VOLUME",       SIMPLE,  LEVEL_HOST },   /* Volume */
+	{ "VO", "VOLUME",       SIMPLE,  LEVEL_HOST },   /* Deprecated? */
+	{ "Y1", "YEAR",         DATE,    LEVEL_HOST },   /* Deprecated */
+	{ "Y2", "MONTH",        SIMPLE,  LEVEL_HOST },   /* Access Date */
+	{ "  ", "GENRE|book chapter",   ALWAYS, LEVEL_MAIN },
+	{ "  ", "GENRE|book",           ALWAYS, LEVEL_HOST },
+	{ "  ", "ISSUANCE|monographic", ALWAYS, LEVEL_HOST },
+	{ "  ", "RESOURCE|text",        ALWAYS, LEVEL_MAIN }
 };
 
 static lookups conference[] = {
-	{ "AU", "AUTHOR",       PERSON,  LEVEL_MAIN },
-	{ "A1", "AUTHOR",       PERSON,  LEVEL_MAIN },
-	{ "A2", "AUTHOR",       PERSON,  LEVEL_HOST },
-	{ "A3", "AUTHOR",       PERSON,  LEVEL_SERIES }, 
-	{ "ED", "EDITOR",       PERSON,  LEVEL_MAIN },
-	{ "PY", "YEAR",         DATE,    LEVEL_HOST },
-	{ "Y1", "YEAR",         DATE,    LEVEL_HOST },
-	{ "Y2", "MONTH",     SIMPLE,  LEVEL_HOST }, 
-	{ "SN", "SERIALNUMBER", SERIALNO,LEVEL_MAIN },
-	{ "TI", "TITLE",        TITLE,   LEVEL_MAIN },
-	{ "T1", "TITLE",        TITLE,   LEVEL_MAIN },
-	{ "T2", "SHORTTITLE",   SIMPLE,  LEVEL_HOST },
-	{ "T3", "TITLE",        SIMPLE,  LEVEL_SERIES },
-	{ "JO", "TITLE",        SIMPLE,  LEVEL_HOST }, /* JOURNAL */
-	{ "JA", "TITLE",        SIMPLE,  LEVEL_HOST },
-	{ "JF", "TITLE",        SIMPLE,  LEVEL_HOST },
-	{ "J1", "TITLE",        SIMPLE,  LEVEL_HOST },
-	{ "J2", "TITLE",        SIMPLE,  LEVEL_HOST },
-	{ "VL", "VOLUME",       SIMPLE,  LEVEL_MAIN },
-	{ "VO", "VOLUME",       SIMPLE,  LEVEL_MAIN },
-	{ "IS", "ISSUE",        SIMPLE,  LEVEL_MAIN },
-	{ "CP", "ISSUE",        SIMPLE,  LEVEL_MAIN },
-	{ "SP", "PAGESTART",    SIMPLE,  LEVEL_MAIN },
-	{ "EP", "PAGEEND",      SIMPLE,  LEVEL_MAIN },
-	{ "AB", "ABSTRACT",     SIMPLE,  LEVEL_MAIN },
-	{ "N1", "NOTES",        NOTES,   LEVEL_MAIN },
-	{ "N2", "ABSTRACT",     SIMPLE,  LEVEL_MAIN }, 
-	{ "KW", "KEYWORD",      SIMPLE,  LEVEL_MAIN },
-	{ "PB", "PUBLISHER",    SIMPLE,  LEVEL_HOST },
-	{ "BT", "TITLE",        SIMPLE,  LEVEL_HOST }, 
-	{ "CT", "ADDRESS",      SIMPLE,  LEVEL_HOST },
-	{ "AD", "AUTHORADDRESS",SIMPLE,  LEVEL_MAIN },
-	{ "CY", "ADDRESS",      SIMPLE,  LEVEL_MAIN },
-	{ "RP", "REPRINTSTATUS",SIMPLE,  LEVEL_MAIN },
-	{ "UR", "URL",          SIMPLE,  LEVEL_MAIN },
-	{ "L1", "FILEATTACH",   SIMPLE,  LEVEL_MAIN },
-	{ "ID", "REFNUM",       SIMPLE,  LEVEL_MAIN },
-	{ "U1", "NOTES",        NOTES,   LEVEL_MAIN },
-	{ "U2", "NOTES",        NOTES,   LEVEL_MAIN },
-	{ "U3", "NOTES",        NOTES,   LEVEL_MAIN },
-	{ "U4", "NOTES",        NOTES,   LEVEL_MAIN },
-	{ "U5", "NOTES",        NOTES,   LEVEL_MAIN },
-	{ "M1", "NOTES",        NOTES,   LEVEL_MAIN },
-	{ "M2", "NOTES",        NOTES,   LEVEL_MAIN },
-	{ "M3", "NOTES",        NOTES,   LEVEL_MAIN },
+	{ "A1", "AUTHOR",       PERSON,  LEVEL_MAIN },   /* Deprecated? */
+	{ "A2", "AUTHOR:ASIS",  SIMPLE,  LEVEL_HOST },   /* 'Secondary' Author - Name of conference */
+	{ "A3", "EDITOR",       PERSON,  LEVEL_SERIES }, /* 'Tertiary' Author - Series editor */
+	{ "A4", "AUTHOR",       PERSON,  LEVEL_SERIES }, /* 'Subsidiary' Author */
+	{ "AB", "ABSTRACT",     SIMPLE,  LEVEL_MAIN },   /* Abstract */
+	{ "AD", "AUTHORADDRESS",SIMPLE,  LEVEL_MAIN },   /* Author Address */
+	{ "AU", "AUTHOR",       PERSON,  LEVEL_MAIN },   /* Author */
+	{ "C1", "NOTES",        NOTES,   LEVEL_MAIN },   /* 'Custom' - put in "notes" */
+	{ "C2", "NOTES",        NOTES,   LEVEL_MAIN },   /* 'Custom' - put in "notes" */
+	{ "C3", "NOTES",        NOTES,   LEVEL_MAIN },   /* 'Custom' - put in "notes" */
+	{ "C4", "NOTES",        NOTES,   LEVEL_MAIN },   /* 'Custom' - put in "notes" */
+	{ "C5", "NOTES",        NOTES,   LEVEL_MAIN },   /* 'Custom' - put in "notes" */
+	{ "C6", "NOTES",        NOTES,   LEVEL_MAIN },   /* 'Custom' - put in "notes" */
+	{ "C7", "NOTES",        NOTES,   LEVEL_MAIN },   /* 'Custom' - put in "notes" */
+	{ "C8", "NOTES",        NOTES,   LEVEL_MAIN },   /* 'Custom' - put in "notes" */
+	{ "CA", "CAPTION",      SIMPLE,  LEVEL_MAIN },   /* Caption */
+	{ "CN", "CALLNUMBER",   SIMPLE,  LEVEL_MAIN },   /* Call Number */
+	{ "CP", "ISSUE",        SIMPLE,  LEVEL_MAIN },   /* Deprecated? */
+	{ "CT", "ADDRESS",      SIMPLE,  LEVEL_MAIN },   /* Deprecated? */
+	{ "CY", "ADDRESS",      SIMPLE,  LEVEL_MAIN },   /* Place Published */
+	{ "DA", "YEAR",         DATE,    LEVEL_MAIN },   /* Date */
+	{ "DB", "DATABASE",     SIMPLE,  LEVEL_MAIN },   /* Database */
+	{ "DI", "DOI",          DOI,     LEVEL_MAIN },   /* Deprecated? */
+	{ "DO", "DOI",          DOI,     LEVEL_MAIN },   /* DOI */
+	{ "DP", "DATABASEPROV", SIMPLE,  LEVEL_MAIN },   /* Database Provider */
+	{ "ED", "EDITOR",       PERSON,  LEVEL_MAIN },   /* Deprecated? */
+	{ "EP", "PAGEEND",      SIMPLE,  LEVEL_MAIN },   /* End Page */
+	{ "ET", "EDITION",      SIMPLE,  LEVEL_MAIN },   /* Edition */
+	{ "ID", "REFNUM",       SIMPLE,  LEVEL_MAIN },   /* Deprecated? */
+	{ "IS", "ISSUE",        SIMPLE,  LEVEL_MAIN },   /* Number */
+	{ "J1", "TITLE",        SIMPLE,  LEVEL_HOST },   /* Deprecated? */
+	{ "J2", "TITLE",        SIMPLE,  LEVEL_HOST },   /* Alternate Title, abbreviated book or journal */
+	{ "JA", "TITLE",        SIMPLE,  LEVEL_HOST },   /* Deprecated? */
+	{ "JF", "TITLE",        SIMPLE,  LEVEL_HOST },   /* Deprecated? */
+	{ "JO", "TITLE",        SIMPLE,  LEVEL_HOST },   /* Deprecated? */
+	{ "KW", "KEYWORD",      SIMPLE,  LEVEL_MAIN },   /* Keywords */
+	{ "L1", "FILEATTACH",   LINKEDFILE,  LEVEL_MAIN },   /* File Attachment (local, not URL) */
+	{ "L4", "FIGATTACH",    LINKEDFILE,  LEVEL_MAIN },   /* Figure Attachment (local, not URL) */
+	{ "LA", "LANGUAGE",     SIMPLE,  LEVEL_MAIN },   /* Language */
+	{ "LB", "LABEL",        SIMPLE,  LEVEL_MAIN },   /* Label */
+	{ "M1", "NOTES",        NOTES,   LEVEL_MAIN },   /* Misc or Number? */
+	{ "M2", "NOTES",        NOTES,   LEVEL_MAIN },   /* Misc or Deprecated? */
+	{ "M3", "NOTES",        NOTES,   LEVEL_MAIN },   /* Misc or Type of Work? */
+	{ "N1", "NOTES",        NOTES,   LEVEL_MAIN },   /* Notes */
+	{ "N2", "ABSTRACT",     SIMPLE,  LEVEL_MAIN },   /* Deprecated? */
+	{ "NV", "NUMVOLUMES",   SIMPLE,  LEVEL_MAIN },   /* Number of Volumes */
+	{ "OP", "ORIGPUB",      SIMPLE,  LEVEL_MAIN },   /* Original Publication */
+	{ "PB", "PUBLISHER",    SIMPLE,  LEVEL_HOST },   /* Publisher */
+	{ "PY", "YEAR",         DATE,    LEVEL_HOST },   /* Year */
+	{ "RI", "REVIEWEDITEM", SIMPLE,  LEVEL_MAIN },   /* Reviewed Item */
+	{ "RN", "NOTES",        SIMPLE,  LEVEL_MAIN },   /* Research Notes */
+	{ "RP", "REPRINTSTATUS",SIMPLE,  LEVEL_MAIN },   /* Reprint Edition */
+	{ "SE", "SECTION",      SIMPLE,  LEVEL_MAIN },   /* Section */
+	{ "SN", "SERIALNUMBER", SERIALNO,LEVEL_MAIN },   /* ISBN/ISSN */
+	{ "SP", "PAGESTART",    SIMPLE,  LEVEL_MAIN },   /* Start Page */
+	{ "ST", "SHORTTITLE",   SIMPLE,  LEVEL_MAIN },   /* Short Title */
+	{ "T1", "TITLE",        TITLE,   LEVEL_MAIN },   /* Deprecated? */
+	{ "BT", "TITLE",        SIMPLE,  LEVEL_HOST },   /* Book Title */
+	{ "T2", "SHORTTITLE",   SIMPLE,  LEVEL_SERIES },   /* 'Secondary' Title - Abbreviated series TItle*/
+	{ "T3", "TITLE",        SIMPLE,  LEVEL_SERIES }, /* 'Tertiary' Title  - Series Title*/
+	{ "TI", "TITLE",        TITLE,   LEVEL_MAIN },   /* Title */
+	{ "TT", "TRANSTITLE",   TITLE,   LEVEL_MAIN },   /* Translated Title */
+	{ "U1", "NOTES",        NOTES,   LEVEL_MAIN },   /* 'User' - Deprecated? */
+	{ "U2", "NOTES",        NOTES,   LEVEL_MAIN },   /* 'User' - Deprecated? */
+	{ "U3", "NOTES",        NOTES,   LEVEL_MAIN },   /* 'User' - Deprecated? */
+	{ "U4", "NOTES",        NOTES,   LEVEL_MAIN },   /* 'User' - Deprecated? */
+	{ "U5", "NOTES",        NOTES,   LEVEL_MAIN },   /* 'User' - Deprecated? */
+	{ "UR", "URL",          SIMPLE,  LEVEL_MAIN },   /* URL */
+	{ "VL", "VOLUME",       SIMPLE,  LEVEL_MAIN },   /* Volume */
+	{ "VO", "VOLUME",       SIMPLE,  LEVEL_MAIN },   /* Deprecated? */
+	{ "Y1", "YEAR",         DATE,    LEVEL_HOST },   /* Deprecated */
+	{ "Y2", "MONTH",        SIMPLE,  LEVEL_HOST },   /* Access Date */
 	{ "  ", "INTERNAL_TYPE|CONFERENCE",       ALWAYS, LEVEL_MAIN },
 	{ "  ", "RESOURCE|text",                ALWAYS, LEVEL_MAIN },
 	{ "  ", "GENRE|conference publication", ALWAYS, LEVEL_HOST }
 };
 
 static lookups statute[] = {
-	{ "AU", "AUTHOR",       PERSON,  LEVEL_MAIN },
-	{ "A1", "AUTHOR",       PERSON,  LEVEL_MAIN },
-	{ "A2", "AUTHOR",       PERSON,  LEVEL_HOST },
-	{ "A3", "AUTHOR",       PERSON,  LEVEL_SERIES }, 
-	{ "ED", "EDITOR",       PERSON,  LEVEL_MAIN },
-	{ "PY", "YEAR",         DATE,    LEVEL_MAIN },
-	{ "Y1", "YEAR",         DATE,    LEVEL_MAIN },
-	{ "Y2", "MONTH",     SIMPLE,  LEVEL_MAIN }, 
-	{ "SN", "SERIALNUMBER", SERIALNO,LEVEL_MAIN },
-	{ "TI", "TITLE",        TITLE,   LEVEL_MAIN },
-	{ "T1", "TITLE",        TITLE,   LEVEL_MAIN },
-	{ "T2", "SHORTTITLE",   SIMPLE,  LEVEL_HOST },
-	{ "T3", "TITLE",        SIMPLE,  LEVEL_SERIES },
-	{ "JO", "TITLE",        SIMPLE,  LEVEL_HOST }, /* JOURNAL */
-	{ "JA", "TITLE",        SIMPLE,  LEVEL_HOST },
-	{ "JF", "TITLE",        SIMPLE,  LEVEL_HOST },
-	{ "J1", "TITLE",        SIMPLE,  LEVEL_HOST },
-	{ "J2", "TITLE",        SIMPLE,  LEVEL_HOST },
-	{ "VL", "VOLUME",       SIMPLE,  LEVEL_MAIN },
-	{ "VO", "VOLUME",       SIMPLE,  LEVEL_MAIN },
-	{ "IS", "ISSUE",        SIMPLE,  LEVEL_MAIN },
-	{ "CP", "ISSUE",        SIMPLE,  LEVEL_MAIN },
-	{ "SP", "PAGESTART",    SIMPLE,  LEVEL_MAIN },
-	{ "EP", "PAGEEND",      SIMPLE,  LEVEL_MAIN },
-	{ "AB", "ABSTRACT",     SIMPLE,  LEVEL_MAIN },
-	{ "N1", "NOTES",        NOTES,   LEVEL_MAIN },
-	{ "N2", "ABSTRACT",     SIMPLE,  LEVEL_MAIN }, 
-	{ "KW", "KEYWORD",      SIMPLE,  LEVEL_MAIN },
-	{ "PB", "PUBLISHER",    SIMPLE,  LEVEL_MAIN },
-	{ "BT", "TITLE",        SIMPLE,  LEVEL_HOST },  /* book title */
-	{ "CT", "ADDRESS",      SIMPLE,  LEVEL_MAIN },
-	{ "AD", "AUTHORADDRESS",SIMPLE,  LEVEL_MAIN },
-	{ "CY", "ADDRESS",      SIMPLE,  LEVEL_MAIN },
-	{ "RP", "REPRINTSTATUS",SIMPLE,  LEVEL_MAIN },
-	{ "UR", "URL",          SIMPLE,  LEVEL_MAIN },
-	{ "L1", "FILEATTACH",   SIMPLE,  LEVEL_MAIN },
-	{ "ID", "REFNUM",       SIMPLE,  LEVEL_MAIN },
-	{ "U1", "NOTES",        NOTES,   LEVEL_MAIN },
-	{ "U2", "NOTES",        NOTES,   LEVEL_MAIN },
-	{ "U3", "NOTES",        NOTES,   LEVEL_MAIN },
-	{ "U4", "NOTES",        NOTES,   LEVEL_MAIN },
-	{ "U5", "NOTES",        NOTES,   LEVEL_MAIN },
-	{ "M1", "NOTES",        NOTES,   LEVEL_MAIN },
-	{ "M2", "NOTES",        NOTES,   LEVEL_MAIN },
-	{ "M3", "NOTES",        NOTES,   LEVEL_MAIN },
+	{ "A1", "AUTHOR",       PERSON,  LEVEL_MAIN },   /* Deprecated? */
+	{ "A2", "AUTHOR",       PERSON,  LEVEL_HOST },   /* 'Secondary' Author */
+	{ "A3", "EDITOR",       PERSON,  LEVEL_SERIES }, /* 'Tertiary' Author - Series editor */
+	{ "A4", "AUTHOR",       PERSON,  LEVEL_SERIES }, /* 'Subsidiary' Author */
+	{ "AB", "ABSTRACT",     SIMPLE,  LEVEL_MAIN },   /* Abstract */
+	{ "AD", "AUTHORADDRESS",SIMPLE,  LEVEL_MAIN },   /* Author Address */
+	{ "AU", "AUTHOR",       PERSON,  LEVEL_MAIN },   /* Author */
+	{ "BT", "TITLE",        SIMPLE,  LEVEL_HOST },   /* Book Title - Deprecated? */
+	{ "C1", "NOTES",        NOTES,   LEVEL_MAIN },   /* 'Custom' - put in "notes" */
+	{ "C2", "NOTES",        NOTES,   LEVEL_MAIN },   /* 'Custom' - put in "notes" */
+	{ "C3", "NOTES",        NOTES,   LEVEL_MAIN },   /* 'Custom' - put in "notes" */
+	{ "C4", "NOTES",        NOTES,   LEVEL_MAIN },   /* 'Custom' - put in "notes" */
+	{ "C5", "NOTES",        NOTES,   LEVEL_MAIN },   /* 'Custom' - put in "notes" */
+	{ "C6", "NOTES",        NOTES,   LEVEL_MAIN },   /* 'Custom' - put in "notes" */
+	{ "C7", "NOTES",        NOTES,   LEVEL_MAIN },   /* 'Custom' - put in "notes" */
+	{ "C8", "NOTES",        NOTES,   LEVEL_MAIN },   /* 'Custom' - put in "notes" */
+	{ "CA", "CAPTION",      SIMPLE,  LEVEL_MAIN },   /* Caption */
+	{ "CN", "CALLNUMBER",   SIMPLE,  LEVEL_MAIN },   /* Call Number */
+	{ "CP", "ISSUE",        SIMPLE,  LEVEL_MAIN },   /* Deprecated? */
+	{ "CT", "ADDRESS",      SIMPLE,  LEVEL_MAIN },   /* Deprecated? */
+	{ "CY", "ADDRESS",      SIMPLE,  LEVEL_MAIN },   /* Place Published */
+	{ "DA", "YEAR",         DATE,    LEVEL_MAIN },   /* Date */
+	{ "DB", "DATABASE",     SIMPLE,  LEVEL_MAIN },   /* Database */
+	{ "DI", "DOI",          DOI,     LEVEL_MAIN },   /* Deprecated? */
+	{ "DO", "DOI",          DOI,     LEVEL_MAIN },   /* DOI */
+	{ "DP", "DATABASEPROV", SIMPLE,  LEVEL_MAIN },   /* Database Provider */
+	{ "ED", "EDITOR",       PERSON,  LEVEL_MAIN },   /* Deprecated? */
+	{ "EP", "PAGEEND",      SIMPLE,  LEVEL_MAIN },   /* End Page */
+	{ "ET", "EDITION",      SIMPLE,  LEVEL_MAIN },   /* Edition */
+	{ "ID", "REFNUM",       SIMPLE,  LEVEL_MAIN },   /* Deprecated? */
+	{ "IS", "ISSUE",        SIMPLE,  LEVEL_MAIN },   /* Number */
+	{ "J1", "TITLE",        SIMPLE,  LEVEL_HOST },   /* Deprecated? */
+	{ "J2", "TITLE",        SIMPLE,  LEVEL_HOST },   /* Alternate Title, abbreviated book or journal */
+	{ "JA", "TITLE",        SIMPLE,  LEVEL_HOST },   /* Deprecated? */
+	{ "JF", "TITLE",        SIMPLE,  LEVEL_HOST },   /* Deprecated? */
+	{ "JO", "TITLE",        SIMPLE,  LEVEL_HOST },   /* Deprecated? */
+	{ "KW", "KEYWORD",      SIMPLE,  LEVEL_MAIN },   /* Keywords */
+	{ "L1", "FILEATTACH",   LINKEDFILE,  LEVEL_MAIN },   /* File Attachment (local, not URL) */
+	{ "L4", "FIGATTACH",    LINKEDFILE,  LEVEL_MAIN },   /* Figure Attachment (local, not URL) */
+	{ "LA", "LANGUAGE",     SIMPLE,  LEVEL_MAIN },   /* Language */
+	{ "LB", "LABEL",        SIMPLE,  LEVEL_MAIN },   /* Label */
+	{ "M1", "NOTES",        NOTES,   LEVEL_MAIN },   /* Misc or Number? */
+	{ "M2", "NOTES",        NOTES,   LEVEL_MAIN },   /* Misc or Deprecated? */
+	{ "M3", "NOTES",        NOTES,   LEVEL_MAIN },   /* Misc or Type of Work? */
+	{ "N1", "NOTES",        NOTES,   LEVEL_MAIN },   /* Notes */
+	{ "N2", "ABSTRACT",     SIMPLE,  LEVEL_MAIN },   /* Deprecated? */
+	{ "NV", "NUMVOLUMES",   SIMPLE,  LEVEL_MAIN },   /* Number of Volumes */
+	{ "OP", "ORIGPUB",      SIMPLE,  LEVEL_MAIN },   /* Original Publication */
+	{ "PB", "PUBLISHER",    SIMPLE,  LEVEL_MAIN },   /* Publisher */
+	{ "PY", "YEAR",         DATE,    LEVEL_MAIN },   /* Year */
+	{ "RI", "REVIEWEDITEM", SIMPLE,  LEVEL_MAIN },   /* Reviewed Item */
+	{ "RN", "NOTES",        SIMPLE,  LEVEL_MAIN },   /* Research Notes */
+	{ "RP", "REPRINTSTATUS",SIMPLE,  LEVEL_MAIN },   /* Reprint Edition */
+	{ "SE", "SECTION",      SIMPLE,  LEVEL_MAIN },   /* Section */
+	{ "SN", "SERIALNUMBER", SERIALNO,LEVEL_MAIN },   /* ISBN/ISSN */
+	{ "SP", "PAGESTART",    SIMPLE,  LEVEL_MAIN },   /* Start Page */
+	{ "ST", "SHORTTITLE",   SIMPLE,  LEVEL_MAIN },   /* Short Title */
+	{ "T1", "TITLE",        TITLE,   LEVEL_MAIN },   /* Deprecated? */
+	{ "T2", "SHORTTITLE",   SIMPLE,  LEVEL_HOST },   /* 'Secondary' Title */
+	{ "T3", "TITLE",        SIMPLE,  LEVEL_SERIES }, /* 'Tertiary' Title */
+	{ "TI", "TITLE",        TITLE,   LEVEL_MAIN },   /* Title */
+	{ "TT", "TRANSTITLE",   TITLE,   LEVEL_MAIN },   /* Translated Title */
+	{ "U1", "NOTES",        NOTES,   LEVEL_MAIN },   /* 'User' - Deprecated? */
+	{ "U2", "NOTES",        NOTES,   LEVEL_MAIN },   /* 'User' - Deprecated? */
+	{ "U3", "NOTES",        NOTES,   LEVEL_MAIN },   /* 'User' - Deprecated? */
+	{ "U4", "NOTES",        NOTES,   LEVEL_MAIN },   /* 'User' - Deprecated? */
+	{ "U5", "NOTES",        NOTES,   LEVEL_MAIN },   /* 'User' - Deprecated? */
+	{ "UR", "URL",          SIMPLE,  LEVEL_MAIN },   /* URL */
+	{ "VL", "VOLUME",       SIMPLE,  LEVEL_MAIN },   /* Volume */
+	{ "VO", "VOLUME",       SIMPLE,  LEVEL_MAIN },   /* Deprecated? */
+	{ "Y1", "YEAR",         DATE,    LEVEL_MAIN },   /* Deprecated */
+	{ "Y2", "MONTH",        SIMPLE,  LEVEL_MAIN },   /* Access Date */
 	{ "  ", "INTERNAL_TYPE|STATUTE",          ALWAYS, LEVEL_MAIN },
 	{ "  ", "RESOURCE|text",         ALWAYS, LEVEL_MAIN },
 	{ "  ", "GENRE|legislation",     ALWAYS, LEVEL_MAIN }
 };
 
 static lookups hearing[] = {
-	{ "AU", "AUTHOR",       PERSON,  LEVEL_MAIN },
-	{ "A1", "AUTHOR",       PERSON,  LEVEL_MAIN },
-	{ "A2", "AUTHOR",       PERSON,  LEVEL_HOST },
-	{ "A3", "AUTHOR",       PERSON,  LEVEL_SERIES }, 
-	{ "ED", "EDITOR",       PERSON,  LEVEL_MAIN },
-	{ "PY", "YEAR",         DATE,    LEVEL_MAIN },
-	{ "Y1", "YEAR",         DATE,    LEVEL_MAIN },
-	{ "Y2", "MONTH",     SIMPLE,  LEVEL_MAIN }, 
-	{ "SN", "SERIALNUMBER", SERIALNO,LEVEL_MAIN },
-	{ "TI", "TITLE",        TITLE,   LEVEL_MAIN },
-	{ "T1", "TITLE",        TITLE,   LEVEL_MAIN },
-	{ "T2", "SHORTTITLE",   SIMPLE,  LEVEL_HOST },
-	{ "T3", "TITLE",        SIMPLE,  LEVEL_SERIES }, /* series title */
-	{ "JO", "TITLE",        SIMPLE,  LEVEL_HOST }, /* JOURNAL */
-	{ "JA", "TITLE",        SIMPLE,  LEVEL_HOST },
-	{ "JF", "TITLE",        SIMPLE,  LEVEL_HOST },
-	{ "J1", "TITLE",        SIMPLE,  LEVEL_HOST },
-	{ "J2", "TITLE",        SIMPLE,  LEVEL_HOST },
-	{ "VL", "VOLUME",       SIMPLE,  LEVEL_MAIN },
-	{ "VO", "VOLUME",       SIMPLE,  LEVEL_MAIN },
-	{ "IS", "ISSUE",        SIMPLE,  LEVEL_MAIN },
-	{ "CP", "ISSUE",        SIMPLE,  LEVEL_MAIN },
-	{ "SP", "PAGESTART",    SIMPLE,  LEVEL_MAIN },
-	{ "EP", "PAGEEND",      SIMPLE,  LEVEL_MAIN },
-	{ "AB", "ABSTRACT",     SIMPLE,  LEVEL_MAIN },
-	{ "N1", "NOTES",        NOTES,   LEVEL_MAIN },
-	{ "N2", "ABSTRACT",     SIMPLE,  LEVEL_MAIN }, 
-	{ "KW", "KEYWORD",      SIMPLE,  LEVEL_MAIN },
-	{ "PB", "PUBLISHER",    SIMPLE,  LEVEL_MAIN },
-	{ "BT", "TITLE",        SIMPLE,  LEVEL_MAIN }, 
-	{ "CT", "ADDRESS",      SIMPLE,  LEVEL_MAIN },
-	{ "AD", "AUTHORADDRESS",SIMPLE,  LEVEL_MAIN },
-	{ "CY", "ADDRESS",      SIMPLE,  LEVEL_MAIN },
-	{ "RP", "REPRINTSTATUS",SIMPLE,  LEVEL_MAIN },
-	{ "UR", "URL",          SIMPLE,  LEVEL_MAIN },
-	{ "L1", "FILEATTACH",   SIMPLE,  LEVEL_MAIN },
-	{ "ID", "REFNUM",       SIMPLE,  LEVEL_MAIN },
-	{ "U1", "NOTES",        NOTES,   LEVEL_MAIN },
-	{ "U2", "NOTES",        NOTES,   LEVEL_MAIN },
-	{ "U3", "NOTES",        NOTES,   LEVEL_MAIN },
-	{ "U4", "NOTES",        NOTES,   LEVEL_MAIN },
-	{ "U5", "NOTES",        NOTES,   LEVEL_MAIN },
-	{ "M1", "NOTES",        NOTES,   LEVEL_MAIN },
-	{ "M2", "NOTES",        NOTES,   LEVEL_MAIN },
-	{ "M3", "NOTES",        NOTES,   LEVEL_MAIN },
-	{ "  ", "INTERNAL_TYPE|HEARING",          ALWAYS, LEVEL_MAIN },
+	{ "A1", "AUTHOR",       PERSON,  LEVEL_MAIN },   /* Deprecated? */
+	{ "A2", "AUTHOR",       PERSON,  LEVEL_HOST },   /* 'Secondary' Author */
+	{ "A3", "EDITOR",       PERSON,  LEVEL_SERIES }, /* 'Tertiary' Author - series editor */
+	{ "A4", "AUTHOR",       PERSON,  LEVEL_SERIES }, /* 'Subsidiary' Author */
+	{ "AB", "ABSTRACT",     SIMPLE,  LEVEL_MAIN },   /* Abstract */
+	{ "AD", "AUTHORADDRESS",SIMPLE,  LEVEL_MAIN },   /* Author Address */
+	{ "AU", "AUTHOR",       PERSON,  LEVEL_MAIN },   /* Author */
+	{ "BT", "TITLE",        SIMPLE,  LEVEL_MAIN },   /* Book Title - Deprecated? */
+	{ "C1", "NOTES",        NOTES,   LEVEL_MAIN },   /* 'Custom' - put in "notes" */
+	{ "C2", "NOTES",        NOTES,   LEVEL_MAIN },   /* 'Custom' - put in "notes" */
+	{ "C3", "NOTES",        NOTES,   LEVEL_MAIN },   /* 'Custom' - put in "notes" */
+	{ "C4", "NOTES",        NOTES,   LEVEL_MAIN },   /* 'Custom' - put in "notes" */
+	{ "C5", "NOTES",        NOTES,   LEVEL_MAIN },   /* 'Custom' - put in "notes" */
+	{ "C6", "NOTES",        NOTES,   LEVEL_MAIN },   /* 'Custom' - put in "notes" */
+	{ "C7", "NOTES",        NOTES,   LEVEL_MAIN },   /* 'Custom' - put in "notes" */
+	{ "C8", "NOTES",        NOTES,   LEVEL_MAIN },   /* 'Custom' - put in "notes" */
+	{ "CA", "CAPTION",      SIMPLE,  LEVEL_MAIN },   /* Caption */
+	{ "CN", "CALLNUMBER",   SIMPLE,  LEVEL_MAIN },   /* Call Number */
+	{ "CP", "ISSUE",        SIMPLE,  LEVEL_MAIN },   /* Deprecated? */
+	{ "CT", "ADDRESS",      SIMPLE,  LEVEL_MAIN },   /* Deprecated? */
+	{ "CY", "ADDRESS",      SIMPLE,  LEVEL_MAIN },   /* Place Published */
+	{ "DA", "YEAR",         DATE,    LEVEL_MAIN },   /* Date */
+	{ "DB", "DATABASE",     SIMPLE,  LEVEL_MAIN },   /* Database */
+	{ "DI", "DOI",          DOI,     LEVEL_MAIN },   /* Deprecated? */
+	{ "DO", "DOI",          DOI,     LEVEL_MAIN },   /* DOI */
+	{ "DP", "DATABASEPROV", SIMPLE,  LEVEL_MAIN },   /* Database Provider */
+	{ "ED", "EDITOR",       PERSON,  LEVEL_MAIN },   /* Deprecated? */
+	{ "EP", "PAGEEND",      SIMPLE,  LEVEL_MAIN },   /* End Page */
+	{ "ET", "EDITION",      SIMPLE,  LEVEL_MAIN },   /* Edition */
+	{ "ID", "REFNUM",       SIMPLE,  LEVEL_MAIN },   /* Deprecated? */
+	{ "IS", "ISSUE",        SIMPLE,  LEVEL_MAIN },   /* Number */
+	{ "J1", "TITLE",        SIMPLE,  LEVEL_HOST },   /* Deprecated? */
+	{ "J2", "TITLE",        SIMPLE,  LEVEL_HOST },   /* Alternate Title, abbreviated book or journal */
+	{ "JA", "TITLE",        SIMPLE,  LEVEL_HOST },   /* Deprecated? */
+	{ "JF", "TITLE",        SIMPLE,  LEVEL_HOST },   /* Deprecated? */
+	{ "JO", "TITLE",        SIMPLE,  LEVEL_HOST },   /* Deprecated? */
+	{ "KW", "KEYWORD",      SIMPLE,  LEVEL_MAIN },   /* Keywords */
+	{ "L1", "FILEATTACH",   LINKEDFILE,  LEVEL_MAIN },   /* File Attachment (local, not URL) */
+	{ "L4", "FIGATTACH",    LINKEDFILE,  LEVEL_MAIN },   /* Figure Attachment (local, not URL) */
+	{ "LA", "LANGUAGE",     SIMPLE,  LEVEL_MAIN },   /* Language */
+	{ "LB", "LABEL",        SIMPLE,  LEVEL_MAIN },   /* Label */
+	{ "M1", "NOTES",        NOTES,   LEVEL_MAIN },   /* Misc or Number? */
+	{ "M2", "NOTES",        NOTES,   LEVEL_MAIN },   /* Misc or Deprecated? */
+	{ "M3", "NOTES",        NOTES,   LEVEL_MAIN },   /* Misc or Type of Work? */
+	{ "N1", "NOTES",        NOTES,   LEVEL_MAIN },   /* Notes */
+	{ "N2", "ABSTRACT",     SIMPLE,  LEVEL_MAIN },   /* Deprecated? */
+	{ "NV", "NUMVOLUMES",   SIMPLE,  LEVEL_MAIN },   /* Number of Volumes */
+	{ "OP", "ORIGPUB",      SIMPLE,  LEVEL_MAIN },   /* Original Publication */
+	{ "PB", "PUBLISHER",    SIMPLE,  LEVEL_MAIN },   /* Publisher */
+	{ "PY", "YEAR",         DATE,    LEVEL_MAIN },   /* Year */
+	{ "RI", "REVIEWEDITEM", SIMPLE,  LEVEL_MAIN },   /* Reviewed Item */
+	{ "RN", "NOTES",        SIMPLE,  LEVEL_MAIN },   /* Research Notes */
+	{ "RP", "REPRINTSTATUS",SIMPLE,  LEVEL_MAIN },   /* Reprint Edition */
+	{ "SE", "SECTION",      SIMPLE,  LEVEL_MAIN },   /* Section */
+	{ "SN", "SERIALNUMBER", SERIALNO,LEVEL_MAIN },   /* ISBN/ISSN */
+	{ "SP", "PAGESTART",    SIMPLE,  LEVEL_MAIN },   /* Start Page */
+	{ "ST", "SHORTTITLE",   SIMPLE,  LEVEL_MAIN },   /* Short Title */
+	{ "T1", "TITLE",        TITLE,   LEVEL_MAIN },   /* Deprecated? */
+	{ "T2", "SHORTTITLE",   SIMPLE,  LEVEL_HOST },   /* 'Secondary' Title */
+	{ "T3", "TITLE",        SIMPLE,  LEVEL_SERIES }, /* 'Tertiary' Title */
+	{ "TI", "TITLE",        TITLE,   LEVEL_MAIN },   /* Title */
+	{ "TT", "TRANSTITLE",   TITLE,   LEVEL_MAIN },   /* Translated Title */
+	{ "U1", "NOTES",        NOTES,   LEVEL_MAIN },   /* 'User' - Deprecated? */
+	{ "U2", "NOTES",        NOTES,   LEVEL_MAIN },   /* 'User' - Deprecated? */
+	{ "U3", "NOTES",        NOTES,   LEVEL_MAIN },   /* 'User' - Deprecated? */
+	{ "U4", "NOTES",        NOTES,   LEVEL_MAIN },   /* 'User' - Deprecated? */
+	{ "U5", "NOTES",        NOTES,   LEVEL_MAIN },   /* 'User' - Deprecated? */
+	{ "UR", "URL",          SIMPLE,  LEVEL_MAIN },   /* URL */
+	{ "VL", "VOLUME",       SIMPLE,  LEVEL_MAIN },   /* Volume */
+	{ "VO", "VOLUME",       SIMPLE,  LEVEL_MAIN },   /* Deprecated? */
+	{ "Y1", "YEAR",         DATE,    LEVEL_MAIN },   /* Deprecated */
+	{ "Y2", "MONTH",        SIMPLE,  LEVEL_MAIN },   /* Access Date */
+	{ "  ", "INTERNAL_TYPE|HEARING", ALWAYS, LEVEL_MAIN },
 	{ "  ", "GENRE|hearing",         ALWAYS, LEVEL_MAIN }
 };
 
 static lookups cases[] = {
-	{ "AU", "AUTHOR",       PERSON,  LEVEL_MAIN },
-	{ "A1", "AUTHOR",       PERSON,  LEVEL_MAIN },
-	{ "A2", "AUTHOR",       PERSON,  LEVEL_HOST },
-	{ "A3", "AUTHOR",       PERSON,  LEVEL_SERIES }, 
-	{ "ED", "EDITOR",       PERSON,  LEVEL_MAIN },
-	{ "PY", "YEAR",         DATE,    LEVEL_MAIN },
-	{ "Y1", "YEAR",         DATE,    LEVEL_MAIN },
-	{ "Y2", "MONTH",     SIMPLE,  LEVEL_MAIN }, 
-	{ "SN", "SERIALNUMBER", SERIALNO,LEVEL_MAIN },
-	{ "TI", "TITLE",        TITLE,   LEVEL_MAIN },
-	{ "T1", "TITLE",        TITLE,   LEVEL_MAIN },
-	{ "T2", "SHORTTITLE",   SIMPLE,  LEVEL_HOST },
-	{ "T3", "TITLE",        SIMPLE,  LEVEL_SERIES },
-	{ "JO", "TITLE",        SIMPLE,  LEVEL_HOST }, /* JOURNAL */
-	{ "JA", "TITLE",        SIMPLE,  LEVEL_HOST },
-	{ "JF", "TITLE",        SIMPLE,  LEVEL_HOST },
-	{ "J1", "TITLE",        SIMPLE,  LEVEL_HOST },
-	{ "J2", "TITLE",        SIMPLE,  LEVEL_HOST },
-	{ "VL", "VOLUME",       SIMPLE,  LEVEL_MAIN },
-	{ "VO", "VOLUME",       SIMPLE,  LEVEL_MAIN },
-	{ "IS", "ISSUE",        SIMPLE,  LEVEL_MAIN },
-	{ "CP", "ISSUE",        SIMPLE,  LEVEL_MAIN },
-	{ "SP", "PAGESTART",    SIMPLE,  LEVEL_MAIN },
-	{ "EP", "PAGEEND",      SIMPLE,  LEVEL_MAIN },
-	{ "AB", "ABSTRACT",     SIMPLE,  LEVEL_MAIN },
-	{ "N1", "NOTES",        NOTES,   LEVEL_MAIN },
-	{ "N2", "ABSTRACT",     SIMPLE,  LEVEL_MAIN }, 
-	{ "KW", "KEYWORD",      SIMPLE,  LEVEL_MAIN },
-	{ "PB", "PUBLISHER",    SIMPLE,  LEVEL_MAIN },
-	{ "BT", "TITLE",        SIMPLE,  LEVEL_MAIN }, 
-	{ "CT", "ADDRESS",      SIMPLE,  LEVEL_MAIN },
-	{ "AD", "AUTHORADDRESS",SIMPLE,  LEVEL_MAIN },
-	{ "CY", "ADDRESS",      SIMPLE,  LEVEL_MAIN },
-	{ "RP", "REPRINTSTATUS",SIMPLE,  LEVEL_MAIN },
-	{ "UR", "URL",          SIMPLE,  LEVEL_MAIN },
-	{ "L1", "FILEATTACH",   SIMPLE,  LEVEL_MAIN },
-	{ "ID", "REFNUM",       SIMPLE,  LEVEL_MAIN },
-	{ "U1", "NOTES",        NOTES,   LEVEL_MAIN },
-	{ "U2", "NOTES",        NOTES,   LEVEL_MAIN },
-	{ "U3", "NOTES",        NOTES,   LEVEL_MAIN },
-	{ "U4", "NOTES",        NOTES,   LEVEL_MAIN },
-	{ "U5", "NOTES",        NOTES,   LEVEL_MAIN },
-	{ "M1", "NOTES",        NOTES,   LEVEL_MAIN },
-	{ "M2", "NOTES",        NOTES,   LEVEL_MAIN },
-	{ "M3", "NOTES",        NOTES,   LEVEL_MAIN },
-	{ "  ", "INTERNAL_TYPE|CASE",          ALWAYS, LEVEL_MAIN },
+	{ "A1", "AUTHOR",       PERSON,  LEVEL_MAIN },   /* Deprecated? */
+	{ "A2", "AUTHOR",       PERSON,  LEVEL_HOST },   /* 'Secondary' Author */
+	{ "A3", "EDITOR",       PERSON,  LEVEL_SERIES }, /* 'Tertiary' Author - series editor */
+	{ "A4", "AUTHOR",       PERSON,  LEVEL_SERIES }, /* 'Subsidiary' Author */
+	{ "AB", "ABSTRACT",     SIMPLE,  LEVEL_MAIN },   /* Abstract */
+	{ "AD", "AUTHORADDRESS",SIMPLE,  LEVEL_MAIN },   /* Author Address */
+	{ "AU", "AUTHOR",       PERSON,  LEVEL_MAIN },   /* Author */
+	{ "BT", "TITLE",        SIMPLE,  LEVEL_MAIN },   /* Book Title - Deprecated? */
+	{ "C1", "NOTES",        NOTES,   LEVEL_MAIN },   /* 'Custom' - put in "notes" */
+	{ "C2", "NOTES",        NOTES,   LEVEL_MAIN },   /* 'Custom' - put in "notes" */
+	{ "C3", "NOTES",        NOTES,   LEVEL_MAIN },   /* 'Custom' - put in "notes" */
+	{ "C4", "NOTES",        NOTES,   LEVEL_MAIN },   /* 'Custom' - put in "notes" */
+	{ "C5", "NOTES",        NOTES,   LEVEL_MAIN },   /* 'Custom' - put in "notes" */
+	{ "C6", "NOTES",        NOTES,   LEVEL_MAIN },   /* 'Custom' - put in "notes" */
+	{ "C7", "NOTES",        NOTES,   LEVEL_MAIN },   /* 'Custom' - put in "notes" */
+	{ "C8", "NOTES",        NOTES,   LEVEL_MAIN },   /* 'Custom' - put in "notes" */
+	{ "CA", "CAPTION",      SIMPLE,  LEVEL_MAIN },   /* Caption */
+	{ "CN", "CALLNUMBER",   SIMPLE,  LEVEL_MAIN },   /* Call Number */
+	{ "CP", "ISSUE",        SIMPLE,  LEVEL_MAIN },   /* Deprecated? */
+	{ "CT", "ADDRESS",      SIMPLE,  LEVEL_MAIN },   /* Deprecated? */
+	{ "CY", "ADDRESS",      SIMPLE,  LEVEL_MAIN },   /* Place Published */
+	{ "DA", "YEAR",         DATE,    LEVEL_MAIN },   /* Date */
+	{ "DB", "DATABASE",     SIMPLE,  LEVEL_MAIN },   /* Database */
+	{ "DI", "DOI",          DOI,     LEVEL_MAIN },   /* Deprecated? */
+	{ "DO", "DOI",          DOI,     LEVEL_MAIN },   /* DOI */
+	{ "DP", "DATABASEPROV", SIMPLE,  LEVEL_MAIN },   /* Database Provider */
+	{ "ED", "EDITOR",       PERSON,  LEVEL_MAIN },   /* Deprecated? */
+	{ "EP", "PAGEEND",      SIMPLE,  LEVEL_MAIN },   /* End Page */
+	{ "ET", "EDITION",      SIMPLE,  LEVEL_MAIN },   /* Edition */
+	{ "ID", "REFNUM",       SIMPLE,  LEVEL_MAIN },   /* Deprecated? */
+	{ "IS", "ISSUE",        SIMPLE,  LEVEL_MAIN },   /* Number */
+	{ "J1", "TITLE",        SIMPLE,  LEVEL_HOST },   /* Deprecated? */
+	{ "J2", "TITLE",        SIMPLE,  LEVEL_HOST },   /* Alternate Title, abbreviated book or journal */
+	{ "JA", "TITLE",        SIMPLE,  LEVEL_HOST },   /* Deprecated? */
+	{ "JF", "TITLE",        SIMPLE,  LEVEL_HOST },   /* Deprecated? */
+	{ "JO", "TITLE",        SIMPLE,  LEVEL_HOST },   /* Deprecated? */
+	{ "KW", "KEYWORD",      SIMPLE,  LEVEL_MAIN },   /* Keywords */
+	{ "L1", "FILEATTACH",   LINKEDFILE,  LEVEL_MAIN },   /* File Attachment (local, not URL) */
+	{ "L4", "FIGATTACH",    LINKEDFILE,  LEVEL_MAIN },   /* Figure Attachment (local, not URL) */
+	{ "LA", "LANGUAGE",     SIMPLE,  LEVEL_MAIN },   /* Language */
+	{ "LB", "LABEL",        SIMPLE,  LEVEL_MAIN },   /* Label */
+	{ "M1", "NOTES",        NOTES,   LEVEL_MAIN },   /* Misc or Number? */
+	{ "M2", "NOTES",        NOTES,   LEVEL_MAIN },   /* Misc or Deprecated? */
+	{ "M3", "NOTES",        NOTES,   LEVEL_MAIN },   /* Misc or Type of Work? */
+	{ "N1", "NOTES",        NOTES,   LEVEL_MAIN },   /* Notes */
+	{ "N2", "ABSTRACT",     SIMPLE,  LEVEL_MAIN },   /* Deprecated? */
+	{ "NV", "NUMVOLUMES",   SIMPLE,  LEVEL_MAIN },   /* Number of Volumes */
+	{ "OP", "ORIGPUB",      SIMPLE,  LEVEL_MAIN },   /* Original Publication */
+	{ "PB", "PUBLISHER",    SIMPLE,  LEVEL_MAIN },   /* Publisher */
+	{ "PY", "YEAR",         DATE,    LEVEL_MAIN },   /* Year */
+	{ "RI", "REVIEWEDITEM", SIMPLE,  LEVEL_MAIN },   /* Reviewed Item */
+	{ "RN", "NOTES",        SIMPLE,  LEVEL_MAIN },   /* Research Notes */
+	{ "RP", "REPRINTSTATUS",SIMPLE,  LEVEL_MAIN },   /* Reprint Edition */
+	{ "SE", "SECTION",      SIMPLE,  LEVEL_MAIN },   /* Section */
+	{ "SN", "SERIALNUMBER", SERIALNO,LEVEL_MAIN },   /* ISBN/ISSN */
+	{ "SP", "PAGESTART",    SIMPLE,  LEVEL_MAIN },   /* Start Page */
+	{ "ST", "SHORTTITLE",   SIMPLE,  LEVEL_MAIN },   /* Short Title */
+	{ "T1", "TITLE",        TITLE,   LEVEL_MAIN },   /* Deprecated? */
+	{ "T2", "SHORTTITLE",   SIMPLE,  LEVEL_HOST },   /* 'Secondary' Title */
+	{ "T3", "TITLE",        SIMPLE,  LEVEL_SERIES }, /* 'Tertiary' Title */
+	{ "TI", "TITLE",        TITLE,   LEVEL_MAIN },   /* Title */
+	{ "TT", "TRANSTITLE",   TITLE,   LEVEL_MAIN },   /* Translated Title */
+	{ "U1", "NOTES",        NOTES,   LEVEL_MAIN },   /* 'User' - Deprecated? */
+	{ "U2", "NOTES",        NOTES,   LEVEL_MAIN },   /* 'User' - Deprecated? */
+	{ "U3", "NOTES",        NOTES,   LEVEL_MAIN },   /* 'User' - Deprecated? */
+	{ "U4", "NOTES",        NOTES,   LEVEL_MAIN },   /* 'User' - Deprecated? */
+	{ "U5", "NOTES",        NOTES,   LEVEL_MAIN },   /* 'User' - Deprecated? */
+	{ "UR", "URL",          SIMPLE,  LEVEL_MAIN },   /* URL */
+	{ "VL", "VOLUME",       SIMPLE,  LEVEL_MAIN },   /* Volume */
+	{ "VO", "VOLUME",       SIMPLE,  LEVEL_MAIN },   /* Deprecated? */
+	{ "Y1", "YEAR",         DATE,    LEVEL_MAIN },   /* Deprecated */
+	{ "Y2", "MONTH",        SIMPLE,  LEVEL_MAIN },   /* Access Date */
+	{ "  ", "INTERNAL_TYPE|CASE",              ALWAYS, LEVEL_MAIN },
 	{ "  ", "GENRE|legal case and case notes", ALWAYS, LEVEL_MAIN }
 };
 
 static lookups communication[] = {
-	{ "AU", "AUTHOR",       PERSON,  LEVEL_MAIN },
-	{ "A1", "AUTHOR",       PERSON,  LEVEL_MAIN },
-	{ "A2", "RECIPIENT",    PERSON,  LEVEL_MAIN },
-	{ "A3", "AUTHOR",       PERSON,  LEVEL_HOST }, 
-	{ "ED", "EDITOR",       PERSON,  LEVEL_MAIN },
-	{ "PY", "YEAR",         DATE,    LEVEL_MAIN },
-	{ "Y1", "YEAR",         DATE,    LEVEL_MAIN },
-	{ "Y2", "MONTH",     SIMPLE,  LEVEL_MAIN },
-	{ "SN", "SERIALNUMBER", SERIALNO,LEVEL_MAIN },
-	{ "TI", "TITLE",        TITLE,   LEVEL_MAIN },
-	{ "T1", "TITLE",        TITLE,   LEVEL_MAIN },
-	{ "T2", "SHORTTITLE",   SIMPLE,  LEVEL_HOST },
-	{ "T3", "TITLE",        SIMPLE,  LEVEL_SERIES },
-	{ "JO", "TITLE",        SIMPLE,  LEVEL_HOST }, /* JOURNAL */
-	{ "JA", "TITLE",        SIMPLE,  LEVEL_HOST },
-	{ "JF", "TITLE",        SIMPLE,  LEVEL_HOST },
-	{ "J1", "TITLE",        SIMPLE,  LEVEL_HOST },
-	{ "J2", "TITLE",        SIMPLE,  LEVEL_HOST },
-	{ "VL", "VOLUME",       SIMPLE,  LEVEL_MAIN },
-	{ "VO", "VOLUME",       SIMPLE,  LEVEL_MAIN },
-	{ "IS", "ISSUE",        SIMPLE,  LEVEL_MAIN },
-	{ "CP", "ISSUE",        SIMPLE,  LEVEL_MAIN },
-	{ "SP", "PAGESTART",    SIMPLE,  LEVEL_MAIN },
-	{ "EP", "PAGEEND",      SIMPLE,  LEVEL_MAIN },
-	{ "AB", "ABSTRACT",     SIMPLE,  LEVEL_MAIN },
-	{ "N1", "NOTES",        NOTES,   LEVEL_MAIN },
-	{ "N2", "ABSTRACT",     SIMPLE,  LEVEL_MAIN }, 
-	{ "KW", "KEYWORD",      SIMPLE,  LEVEL_MAIN },
-	{ "PB", "PUBLISHER",    SIMPLE,  LEVEL_MAIN },
-	{ "BT", "TITLE",        SIMPLE,  LEVEL_MAIN }, 
-	{ "CT", "ADDRESS",      SIMPLE,  LEVEL_MAIN },
-	{ "AD", "AUTHORADDRESS",SIMPLE,  LEVEL_MAIN },
-	{ "CY", "ADDRESS",      SIMPLE,  LEVEL_MAIN },
-	{ "RP", "REPRINTSTATUS",SIMPLE,  LEVEL_MAIN },
-	{ "UR", "URL",          SIMPLE,  LEVEL_MAIN },
-	{ "L1", "FILEATTACH",   SIMPLE,  LEVEL_MAIN },
-	{ "ID", "REFNUM",       SIMPLE,  LEVEL_MAIN },
-	{ "U1", "NOTES",        NOTES,   LEVEL_MAIN },
-	{ "U2", "NOTES",        NOTES,   LEVEL_MAIN },
-	{ "U3", "NOTES",        NOTES,   LEVEL_MAIN },
-	{ "U4", "NOTES",        NOTES,   LEVEL_MAIN },
-	{ "U5", "NOTES",        NOTES,   LEVEL_MAIN },
-	{ "M1", "GENRE",        SIMPLE,  LEVEL_MAIN },
-	{ "M2", "NOTES",        NOTES,   LEVEL_MAIN },
-	{ "M3", "NOTES",        NOTES,   LEVEL_MAIN },
-	{ "  ", "INTERNAL_TYPE|ARTICLE",           ALWAYS, LEVEL_MAIN },
-	{ "  ", "GENRE|communication",    ALWAYS, LEVEL_MAIN }
+	{ "A1", "AUTHOR",       PERSON,  LEVEL_MAIN },   /* Deprecated? */
+	{ "A2", "RECIPIENT",    PERSON,  LEVEL_MAIN },   /* SPECIAL */
+	{ "A3", "EDITOR",       PERSON,  LEVEL_SERIES }, /* 'Tertiary' Author - Series editor */
+	{ "A4", "AUTHOR",       PERSON,  LEVEL_SERIES }, /* 'Subsidiary' Author */
+	{ "AB", "ABSTRACT",     SIMPLE,  LEVEL_MAIN },   /* Abstract */
+	{ "AD", "AUTHORADDRESS",SIMPLE,  LEVEL_MAIN },   /* Author Address */
+	{ "AU", "AUTHOR",       PERSON,  LEVEL_MAIN },   /* Author */
+	{ "BT", "TITLE",        SIMPLE,  LEVEL_MAIN },   /* Book Title - Deprecated? */
+	{ "C1", "NOTES",        NOTES,   LEVEL_MAIN },   /* 'Custom' - put in "notes" */
+	{ "C2", "NOTES",        NOTES,   LEVEL_MAIN },   /* 'Custom' - put in "notes" */
+	{ "C3", "NOTES",        NOTES,   LEVEL_MAIN },   /* 'Custom' - put in "notes" */
+	{ "C4", "NOTES",        NOTES,   LEVEL_MAIN },   /* 'Custom' - put in "notes" */
+	{ "C5", "NOTES",        NOTES,   LEVEL_MAIN },   /* 'Custom' - put in "notes" */
+	{ "C6", "NOTES",        NOTES,   LEVEL_MAIN },   /* 'Custom' - put in "notes" */
+	{ "C7", "NOTES",        NOTES,   LEVEL_MAIN },   /* 'Custom' - put in "notes" */
+	{ "C8", "NOTES",        NOTES,   LEVEL_MAIN },   /* 'Custom' - put in "notes" */
+	{ "CA", "CAPTION",      SIMPLE,  LEVEL_MAIN },   /* Caption */
+	{ "CN", "CALLNUMBER",   SIMPLE,  LEVEL_MAIN },   /* Call Number */
+	{ "CP", "ISSUE",        SIMPLE,  LEVEL_MAIN },   /* Deprecated? */
+	{ "CT", "ADDRESS",      SIMPLE,  LEVEL_MAIN },   /* Deprecated? */
+	{ "CY", "ADDRESS",      SIMPLE,  LEVEL_MAIN },   /* Place Published */
+	{ "DA", "YEAR",         DATE,    LEVEL_MAIN },   /* Date */
+	{ "DB", "DATABASE",     SIMPLE,  LEVEL_MAIN },   /* Database */
+	{ "DI", "DOI",          DOI,     LEVEL_MAIN },   /* Deprecated? */
+	{ "DO", "DOI",          DOI,     LEVEL_MAIN },   /* DOI */
+	{ "DP", "DATABASEPROV", SIMPLE,  LEVEL_MAIN },   /* Database Provider */
+	{ "ED", "EDITOR",       PERSON,  LEVEL_MAIN },   /* Deprecated? */
+	{ "EP", "PAGEEND",      SIMPLE,  LEVEL_MAIN },   /* End Page */
+	{ "ET", "EDITION",      SIMPLE,  LEVEL_MAIN },   /* Edition */
+	{ "ID", "REFNUM",       SIMPLE,  LEVEL_MAIN },   /* Deprecated? */
+	{ "IS", "ISSUE",        SIMPLE,  LEVEL_MAIN },   /* Number */
+	{ "J1", "TITLE",        SIMPLE,  LEVEL_HOST },   /* Deprecated? */
+	{ "J2", "TITLE",        SIMPLE,  LEVEL_HOST },   /* Alternate Title, abbreviated book or journal */
+	{ "JA", "TITLE",        SIMPLE,  LEVEL_HOST },   /* Deprecated? */
+	{ "JF", "TITLE",        SIMPLE,  LEVEL_HOST },   /* Deprecated? */
+	{ "JO", "TITLE",        SIMPLE,  LEVEL_HOST },   /* Deprecated? */
+	{ "KW", "KEYWORD",      SIMPLE,  LEVEL_MAIN },   /* Keywords */
+	{ "L1", "FILEATTACH",   LINKEDFILE,  LEVEL_MAIN },   /* File Attachment (local, not URL) */
+	{ "L4", "FIGATTACH",    LINKEDFILE,  LEVEL_MAIN },   /* Figure Attachment (local, not URL) */
+	{ "LA", "LANGUAGE",     SIMPLE,  LEVEL_MAIN },   /* Language */
+	{ "LB", "LABEL",        SIMPLE,  LEVEL_MAIN },   /* Label */
+	{ "M1", "GENRE",        SIMPLE,  LEVEL_MAIN },   /* Misc or Number? */
+	{ "M2", "NOTES",        NOTES,   LEVEL_MAIN },   /* Misc or Deprecated? */
+	{ "M3", "NOTES",        NOTES,   LEVEL_MAIN },   /* Misc or Type of Work? */
+	{ "N1", "NOTES",        NOTES,   LEVEL_MAIN },   /* Notes */
+	{ "N2", "ABSTRACT",     SIMPLE,  LEVEL_MAIN },   /* Deprecated? */
+	{ "NV", "NUMVOLUMES",   SIMPLE,  LEVEL_MAIN },   /* Number of Volumes */
+	{ "OP", "ORIGPUB",      SIMPLE,  LEVEL_MAIN },   /* Original Publication */
+	{ "PB", "PUBLISHER",    SIMPLE,  LEVEL_MAIN },   /* Publisher */
+	{ "PY", "YEAR",         DATE,    LEVEL_MAIN },   /* Year */
+	{ "RI", "REVIEWEDITEM", SIMPLE,  LEVEL_MAIN },   /* Reviewed Item */
+	{ "RN", "NOTES",        SIMPLE,  LEVEL_MAIN },   /* Research Notes */
+	{ "RP", "REPRINTSTATUS",SIMPLE,  LEVEL_MAIN },   /* Reprint Edition */
+	{ "SE", "SECTION",      SIMPLE,  LEVEL_MAIN },   /* Section */
+	{ "SN", "SERIALNUMBER", SERIALNO,LEVEL_MAIN },   /* ISBN/ISSN */
+	{ "SP", "PAGESTART",    SIMPLE,  LEVEL_MAIN },   /* Start Page */
+	{ "ST", "SHORTTITLE",   SIMPLE,  LEVEL_MAIN },   /* Short Title */
+	{ "T1", "TITLE",        TITLE,   LEVEL_MAIN },   /* Deprecated? */
+	{ "T2", "SHORTTITLE",   SIMPLE,  LEVEL_HOST },   /* 'Secondary' Title */
+	{ "T3", "TITLE",        SIMPLE,  LEVEL_SERIES }, /* 'Tertiary' Title */
+	{ "TI", "TITLE",        TITLE,   LEVEL_MAIN },   /* Title */
+	{ "TT", "TRANSTITLE",   TITLE,   LEVEL_MAIN },   /* Translated Title */
+	{ "U1", "NOTES",        NOTES,   LEVEL_MAIN },   /* 'User' - Deprecated? */
+	{ "U2", "NOTES",        NOTES,   LEVEL_MAIN },   /* 'User' - Deprecated? */
+	{ "U3", "NOTES",        NOTES,   LEVEL_MAIN },   /* 'User' - Deprecated? */
+	{ "U4", "NOTES",        NOTES,   LEVEL_MAIN },   /* 'User' - Deprecated? */
+	{ "U5", "NOTES",        NOTES,   LEVEL_MAIN },   /* 'User' - Deprecated? */
+	{ "UR", "URL",          SIMPLE,  LEVEL_MAIN },   /* URL */
+	{ "VL", "VOLUME",       SIMPLE,  LEVEL_MAIN },   /* Volume */
+	{ "VO", "VOLUME",       SIMPLE,  LEVEL_MAIN },   /* Deprecated? */
+	{ "Y1", "YEAR",         DATE,    LEVEL_MAIN },   /* Deprecated */
+	{ "Y2", "MONTH",        SIMPLE,  LEVEL_MAIN },   /* Access Date */
+	{ "  ", "INTERNAL_TYPE|ARTICLE", ALWAYS, LEVEL_MAIN },
+	{ "  ", "GENRE|communication",   ALWAYS, LEVEL_MAIN }
 };
 
 static lookups thesis[] = {
-	{ "AU", "AUTHOR",       PERSON,  LEVEL_MAIN },
-	{ "A1", "AUTHOR",       PERSON,  LEVEL_MAIN },
-	{ "A2", "AUTHOR",       PERSON,  LEVEL_HOST },
-	{ "A3", "AUTHOR",       PERSON,  LEVEL_SERIES }, 
-	{ "ED", "EDITOR",       PERSON,  LEVEL_MAIN },
-	{ "PY", "YEAR",         DATE,    LEVEL_MAIN },
-	{ "Y1", "YEAR",         DATE,    LEVEL_MAIN },
-	{ "Y2", "MONTH",     SIMPLE,  LEVEL_MAIN },
-	{ "SN", "SERIALNUMBER", SERIALNO,LEVEL_MAIN },
-	{ "TI", "TITLE",        TITLE,   LEVEL_MAIN },
-	{ "T1", "TITLE",        TITLE,   LEVEL_MAIN },
-	{ "T2", "SHORTTITLE",   SIMPLE,  LEVEL_HOST },
-	{ "T3", "TITLE",        SIMPLE,  LEVEL_SERIES },
-	{ "JO", "TITLE",        SIMPLE,  LEVEL_HOST }, /* JOURNAL */
-	{ "JA", "TITLE",        SIMPLE,  LEVEL_HOST },
-	{ "JF", "TITLE",        SIMPLE,  LEVEL_HOST },
-	{ "J1", "TITLE",        SIMPLE,  LEVEL_HOST },
-	{ "J2", "TITLE",        SIMPLE,  LEVEL_HOST },
-	{ "VL", "VOLUME",       SIMPLE,  LEVEL_MAIN },
-	{ "VO", "VOLUME",       SIMPLE,  LEVEL_MAIN },
-	{ "IS", "ISSUE",        SIMPLE,  LEVEL_MAIN },
-	{ "CP", "ISSUE",        SIMPLE,  LEVEL_MAIN },
-	{ "SP", "PAGESTART",    SIMPLE,  LEVEL_MAIN },
-	{ "EP", "PAGEEND",      SIMPLE,  LEVEL_MAIN },
-	{ "AB", "ABSTRACT",     SIMPLE,  LEVEL_MAIN },
-	{ "N1", "NOTES",        NOTES,   LEVEL_MAIN },
-	{ "N2", "ABSTRACT",     SIMPLE,  LEVEL_MAIN }, 
-	{ "KW", "KEYWORD",      SIMPLE,  LEVEL_MAIN },
-	{ "PB", "PUBLISHER",    SIMPLE,  LEVEL_MAIN },
-	{ "BT", "TITLE",        SIMPLE,  LEVEL_HOST }, 
-	{ "CT", "ADDRESS",      SIMPLE,  LEVEL_MAIN },
-	{ "AD", "AUTHORADDRESS",SIMPLE,  LEVEL_MAIN },
-	{ "CY", "ADDRESS",      SIMPLE,  LEVEL_MAIN },
-	{ "RP", "REPRINTSTATUS",SIMPLE,  LEVEL_MAIN },
-	{ "UR", "URL",          SIMPLE,  LEVEL_MAIN },
-	{ "L1", "FILEATTACH",   SIMPLE,  LEVEL_MAIN },
-	{ "ID", "REFNUM",       SIMPLE,  LEVEL_MAIN },
-	{ "U1", "NOTES",        NOTES,   LEVEL_MAIN }, /*user defined */
-	{ "U2", "NOTES",        NOTES,   LEVEL_MAIN }, /* put in "notes" */
-	{ "U3", "NOTES",        NOTES,   LEVEL_MAIN },
-	{ "U4", "NOTES",        NOTES,   LEVEL_MAIN },
-	{ "U5", "NOTES",        NOTES,   LEVEL_MAIN },
-	{ "M1", "NOTES",        NOTES,   LEVEL_MAIN }, /*misc */
-	{ "M2", "NOTES",        NOTES,   LEVEL_MAIN }, /* put in "notes" */
-	{ "M3", "NOTES",        NOTES,   LEVEL_MAIN },
+	{ "A1", "AUTHOR",       PERSON,  LEVEL_MAIN },   /* Deprecated? */
+	{ "A2", "AUTHOR",       PERSON,  LEVEL_HOST },   /* 'Secondary' Author */
+	{ "A3", "EDITOR",       PERSON,  LEVEL_SERIES }, /* 'Tertiary' Author - Series editor */
+	{ "A4", "AUTHOR",       PERSON,  LEVEL_SERIES }, /* 'Subsidiary' Author */
+	{ "AB", "ABSTRACT",     SIMPLE,  LEVEL_MAIN },   /* Abstract */
+	{ "AD", "AUTHORADDRESS",SIMPLE,  LEVEL_MAIN },   /* Author Address */
+	{ "AU", "AUTHOR",       PERSON,  LEVEL_MAIN },   /* Author */
+	{ "BT", "TITLE",        SIMPLE,  LEVEL_MAIN },   /* Book Title - Deprecated? */
+	{ "C1", "NOTES",        NOTES,   LEVEL_MAIN },   /* 'Custom' - put in "notes" */
+	{ "C2", "NOTES",        NOTES,   LEVEL_MAIN },   /* 'Custom' - put in "notes" */
+	{ "C3", "NOTES",        NOTES,   LEVEL_MAIN },   /* 'Custom' - put in "notes" */
+	{ "C4", "NOTES",        NOTES,   LEVEL_MAIN },   /* 'Custom' - put in "notes" */
+	{ "C5", "NOTES",        NOTES,   LEVEL_MAIN },   /* 'Custom' - put in "notes" */
+	{ "C6", "NOTES",        NOTES,   LEVEL_MAIN },   /* 'Custom' - put in "notes" */
+	{ "C7", "NOTES",        NOTES,   LEVEL_MAIN },   /* 'Custom' - put in "notes" */
+	{ "C8", "NOTES",        NOTES,   LEVEL_MAIN },   /* 'Custom' - put in "notes" */
+	{ "CA", "CAPTION",      SIMPLE,  LEVEL_MAIN },   /* Caption */
+	{ "CN", "CALLNUMBER",   SIMPLE,  LEVEL_MAIN },   /* Call Number */
+	{ "CP", "ISSUE",        SIMPLE,  LEVEL_MAIN },   /* Deprecated? */
+	{ "CT", "ADDRESS",      SIMPLE,  LEVEL_MAIN },   /* Deprecated? */
+	{ "CY", "ADDRESS",      SIMPLE,  LEVEL_MAIN },   /* Place Published */
+	{ "DA", "YEAR",         DATE,    LEVEL_MAIN },   /* Date */
+	{ "DB", "DATABASE",     SIMPLE,  LEVEL_MAIN },   /* Database */
+	{ "DI", "DOI",          DOI,     LEVEL_MAIN },   /* Deprecated? */
+	{ "DO", "DOI",          DOI,     LEVEL_MAIN },   /* DOI */
+	{ "DP", "DATABASEPROV", SIMPLE,  LEVEL_MAIN },   /* Database Provider */
+	{ "ED", "EDITOR",       PERSON,  LEVEL_MAIN },   /* Deprecated? */
+	{ "EP", "PAGEEND",      SIMPLE,  LEVEL_MAIN },   /* End Page */
+	{ "ET", "EDITION",      SIMPLE,  LEVEL_MAIN },   /* Edition */
+	{ "ID", "REFNUM",       SIMPLE,  LEVEL_MAIN },   /* Deprecated? */
+	{ "IS", "ISSUE",        SIMPLE,  LEVEL_MAIN },   /* Number */
+	{ "J1", "TITLE",        SIMPLE,  LEVEL_HOST },   /* Deprecated? */
+	{ "J2", "TITLE",        SIMPLE,  LEVEL_HOST },   /* Alternate Title, abbreviated book or journal */
+	{ "JA", "TITLE",        SIMPLE,  LEVEL_HOST },   /* Deprecated? */
+	{ "JF", "TITLE",        SIMPLE,  LEVEL_HOST },   /* Deprecated? */
+	{ "JO", "TITLE",        SIMPLE,  LEVEL_HOST },   /* Deprecated? */
+	{ "KW", "KEYWORD",      SIMPLE,  LEVEL_MAIN },   /* Keywords */
+	{ "L1", "FILEATTACH",   LINKEDFILE,  LEVEL_MAIN },   /* File Attachment (local, not URL) */
+	{ "L4", "FIGATTACH",    LINKEDFILE,  LEVEL_MAIN },   /* Figure Attachment (local, not URL) */
+	{ "LA", "LANGUAGE",     SIMPLE,  LEVEL_MAIN },   /* Language */
+	{ "LB", "LABEL",        SIMPLE,  LEVEL_MAIN },   /* Label */
+	{ "M1", "NOTES",        SIMPLE,  LEVEL_MAIN },   /* Misc or Number? */
+	{ "M2", "NOTES",        NOTES,   LEVEL_MAIN },   /* Misc or Deprecated? */
+	{ "M3", "NOTES",        NOTES,   LEVEL_MAIN },   /* Misc or Type of Work? */
+	{ "N1", "NOTES",        NOTES,   LEVEL_MAIN },   /* Notes */
+	{ "N2", "ABSTRACT",     SIMPLE,  LEVEL_MAIN },   /* Deprecated? */
+	{ "NV", "NUMVOLUMES",   SIMPLE,  LEVEL_MAIN },   /* Number of Volumes */
+	{ "OP", "ORIGPUB",      SIMPLE,  LEVEL_MAIN },   /* Original Publication */
+	{ "PB", "PUBLISHER",    SIMPLE,  LEVEL_MAIN },   /* Publisher */
+	{ "PY", "YEAR",         DATE,    LEVEL_MAIN },   /* Year */
+	{ "RI", "REVIEWEDITEM", SIMPLE,  LEVEL_MAIN },   /* Reviewed Item */
+	{ "RN", "NOTES",        SIMPLE,  LEVEL_MAIN },   /* Research Notes */
+	{ "RP", "REPRINTSTATUS",SIMPLE,  LEVEL_MAIN },   /* Reprint Edition */
+	{ "SE", "SECTION",      SIMPLE,  LEVEL_MAIN },   /* Section */
+	{ "SN", "SERIALNUMBER", SERIALNO,LEVEL_MAIN },   /* ISBN/ISSN */
+	{ "SP", "PAGESTART",    SIMPLE,  LEVEL_MAIN },   /* Start Page */
+	{ "ST", "SHORTTITLE",   SIMPLE,  LEVEL_MAIN },   /* Short Title */
+	{ "T1", "TITLE",        TITLE,   LEVEL_MAIN },   /* Deprecated? */
+	{ "T2", "SHORTTITLE",   SIMPLE,  LEVEL_HOST },   /* 'Secondary' Title */
+	{ "T3", "TITLE",        SIMPLE,  LEVEL_SERIES }, /* 'Tertiary' Title */
+	{ "TI", "TITLE",        TITLE,   LEVEL_MAIN },   /* Title */
+	{ "TT", "TRANSTITLE",   TITLE,   LEVEL_MAIN },   /* Translated Title */
+	{ "U1", "NOTES",        NOTES,   LEVEL_MAIN },   /* 'User' - Deprecated? */
+	{ "U2", "NOTES",        NOTES,   LEVEL_MAIN },   /* 'User' - Deprecated? */
+	{ "U3", "NOTES",        NOTES,   LEVEL_MAIN },   /* 'User' - Deprecated? */
+	{ "U4", "NOTES",        NOTES,   LEVEL_MAIN },   /* 'User' - Deprecated? */
+	{ "U5", "NOTES",        NOTES,   LEVEL_MAIN },   /* 'User' - Deprecated? */
+	{ "UR", "URL",          SIMPLE,  LEVEL_MAIN },   /* URL */
+	{ "VL", "VOLUME",       SIMPLE,  LEVEL_MAIN },   /* Volume */
+	{ "VO", "VOLUME",       SIMPLE,  LEVEL_MAIN },   /* Deprecated? */
+	{ "Y1", "YEAR",         DATE,    LEVEL_MAIN },   /* Deprecated */
+	{ "Y2", "MONTH",        SIMPLE,  LEVEL_MAIN },   /* Access Date */
 	{ "  ", "INTERNAL_TYPE|THESIS",  ALWAYS,  LEVEL_MAIN },
-	{ "  ", "RESOURCE|text",ALWAYS,  LEVEL_MAIN },
-	{ "  ", "GENRE|thesis", ALWAYS,  LEVEL_MAIN },
+	{ "  ", "RESOURCE|text",         ALWAYS,  LEVEL_MAIN },
+	{ "  ", "GENRE|thesis",          ALWAYS,  LEVEL_MAIN },
 };
 
 static lookups report[] = {
-	{ "AU", "AUTHOR",       PERSON,  LEVEL_MAIN },
-	{ "A1", "AUTHOR",       PERSON,  LEVEL_MAIN },
-	{ "A2", "AUTHOR",       PERSON,  LEVEL_HOST },
-	{ "A3", "AUTHOR",       PERSON,  LEVEL_SERIES }, 
-	{ "ED", "EDITOR",       PERSON,  LEVEL_MAIN },
-	{ "PY", "YEAR",         DATE,    LEVEL_MAIN },
-	{ "Y1", "YEAR",         DATE,    LEVEL_MAIN },
-	{ "Y2", "MONTH",     SIMPLE,  LEVEL_MAIN },
-	{ "SN", "SERIALNUMBER", SERIALNO,LEVEL_MAIN },
-	{ "TI", "TITLE",        TITLE,   LEVEL_MAIN },
-	{ "T1", "TITLE",        TITLE,   LEVEL_MAIN },
-	{ "T2", "SHORTTITLE",   SIMPLE,  LEVEL_HOST },
-	{ "T3", "TITLE",        SIMPLE,  LEVEL_SERIES },
-	{ "JO", "TITLE",        SIMPLE,  LEVEL_HOST }, /* JOURNAL */
-	{ "JA", "TITLE",        SIMPLE,  LEVEL_HOST },
-	{ "JF", "TITLE",        SIMPLE,  LEVEL_HOST },
-	{ "J1", "TITLE",        SIMPLE,  LEVEL_HOST },
-	{ "J2", "TITLE",        SIMPLE,  LEVEL_HOST },
-	{ "VL", "VOLUME",       SIMPLE,  LEVEL_MAIN },
-	{ "VO", "VOLUME",       SIMPLE,  LEVEL_MAIN },
-	{ "IS", "ISSUE",        SIMPLE,  LEVEL_MAIN },
-	{ "CP", "ISSUE",        SIMPLE,  LEVEL_MAIN },
-	{ "SP", "PAGESTART",    SIMPLE,  LEVEL_MAIN },
-	{ "EP", "PAGEEND",      SIMPLE,  LEVEL_MAIN },
-	{ "AB", "ABSTRACT",     SIMPLE,  LEVEL_MAIN },
-	{ "N1", "NOTES",        NOTES,   LEVEL_MAIN },
-	{ "N2", "ABSTRACT",     SIMPLE,  LEVEL_MAIN }, 
-	{ "KW", "KEYWORD",      SIMPLE,  LEVEL_MAIN },
-	{ "PB", "PUBLISHER",    SIMPLE,  LEVEL_MAIN },
-	{ "BT", "TITLE",        SIMPLE,  LEVEL_HOST }, 
-	{ "CT", "ADDRESS",      SIMPLE,  LEVEL_MAIN },
-	{ "AD", "AUTHORADDRESS",SIMPLE,  LEVEL_MAIN },
-	{ "CY", "ADDRESS",      SIMPLE,  LEVEL_MAIN },
-	{ "RP", "REPRINTSTATUS",SIMPLE,  LEVEL_MAIN },
-	{ "UR", "URL",          SIMPLE,  LEVEL_MAIN },
-	{ "L1", "FILEATTACH",   SIMPLE,  LEVEL_MAIN },
-	{ "ID", "REFNUM",       SIMPLE,  LEVEL_MAIN },
-	{ "U1", "NOTES",        NOTES,   LEVEL_MAIN }, /*user defined */
-	{ "U2", "NOTES",        NOTES,   LEVEL_MAIN }, /* put in "notes" */
-	{ "U3", "NOTES",        NOTES,   LEVEL_MAIN },
-	{ "U4", "NOTES",        NOTES,   LEVEL_MAIN },
-	{ "U5", "NOTES",        NOTES,   LEVEL_MAIN },
-	{ "M1", "NOTES",        NOTES,   LEVEL_MAIN }, /*misc */
-	{ "M2", "NOTES",        NOTES,   LEVEL_MAIN }, /* put in "notes" */
-	{ "M3", "NOTES",        NOTES,   LEVEL_MAIN },
+	{ "A1", "AUTHOR",       PERSON,  LEVEL_MAIN },   /* Deprecated? */
+	{ "A2", "AUTHOR",       PERSON,  LEVEL_HOST },   /* 'Secondary' Author */
+	{ "A3", "EDITOR",       PERSON,  LEVEL_SERIES }, /* 'Tertiary' Author - Series editor */
+	{ "A4", "AUTHOR",       PERSON,  LEVEL_SERIES }, /* 'Subsidiary' Author */
+	{ "AB", "ABSTRACT",     SIMPLE,  LEVEL_MAIN },   /* Abstract */
+	{ "AD", "AUTHORADDRESS",SIMPLE,  LEVEL_MAIN },   /* Author Address */
+	{ "AU", "AUTHOR",       PERSON,  LEVEL_MAIN },   /* Author */
+	{ "BT", "TITLE",        SIMPLE,  LEVEL_MAIN },   /* Book Title - Deprecated? */
+	{ "C1", "NOTES",        NOTES,   LEVEL_MAIN },   /* 'Custom' - put in "notes" */
+	{ "C2", "NOTES",        NOTES,   LEVEL_MAIN },   /* 'Custom' - put in "notes" */
+	{ "C3", "NOTES",        NOTES,   LEVEL_MAIN },   /* 'Custom' - put in "notes" */
+	{ "C4", "NOTES",        NOTES,   LEVEL_MAIN },   /* 'Custom' - put in "notes" */
+	{ "C5", "NOTES",        NOTES,   LEVEL_MAIN },   /* 'Custom' - put in "notes" */
+	{ "C6", "NOTES",        NOTES,   LEVEL_MAIN },   /* 'Custom' - put in "notes" */
+	{ "C7", "NOTES",        NOTES,   LEVEL_MAIN },   /* 'Custom' - put in "notes" */
+	{ "C8", "NOTES",        NOTES,   LEVEL_MAIN },   /* 'Custom' - put in "notes" */
+	{ "CA", "CAPTION",      SIMPLE,  LEVEL_MAIN },   /* Caption */
+	{ "CN", "CALLNUMBER",   SIMPLE,  LEVEL_MAIN },   /* Call Number */
+	{ "CP", "ISSUE",        SIMPLE,  LEVEL_MAIN },   /* Deprecated? */
+	{ "CT", "ADDRESS",      SIMPLE,  LEVEL_MAIN },   /* Deprecated? */
+	{ "CY", "ADDRESS",      SIMPLE,  LEVEL_MAIN },   /* Place Published */
+	{ "DA", "YEAR",         DATE,    LEVEL_MAIN },   /* Date */
+	{ "DB", "DATABASE",     SIMPLE,  LEVEL_MAIN },   /* Database */
+	{ "DI", "DOI",          DOI,     LEVEL_MAIN },   /* Deprecated? */
+	{ "DO", "DOI",          DOI,     LEVEL_MAIN },   /* DOI */
+	{ "DP", "DATABASEPROV", SIMPLE,  LEVEL_MAIN },   /* Database Provider */
+	{ "ED", "EDITOR",       PERSON,  LEVEL_MAIN },   /* Deprecated? */
+	{ "EP", "PAGEEND",      SIMPLE,  LEVEL_MAIN },   /* End Page */
+	{ "ET", "EDITION",      SIMPLE,  LEVEL_MAIN },   /* Edition */
+	{ "ID", "REFNUM",       SIMPLE,  LEVEL_MAIN },   /* Deprecated? */
+	{ "IS", "ISSUE",        SIMPLE,  LEVEL_MAIN },   /* Number */
+	{ "J1", "TITLE",        SIMPLE,  LEVEL_HOST },   /* Deprecated? */
+	{ "J2", "TITLE",        SIMPLE,  LEVEL_HOST },   /* Alternate Title, abbreviated book or journal */
+	{ "JA", "TITLE",        SIMPLE,  LEVEL_HOST },   /* Deprecated? */
+	{ "JF", "TITLE",        SIMPLE,  LEVEL_HOST },   /* Deprecated? */
+	{ "JO", "TITLE",        SIMPLE,  LEVEL_HOST },   /* Deprecated? */
+	{ "KW", "KEYWORD",      SIMPLE,  LEVEL_MAIN },   /* Keywords */
+	{ "L1", "FILEATTACH",   LINKEDFILE,  LEVEL_MAIN },   /* File Attachment (local, not URL) */
+	{ "L4", "FIGATTACH",    LINKEDFILE,  LEVEL_MAIN },   /* Figure Attachment (local, not URL) */
+	{ "LA", "LANGUAGE",     SIMPLE,  LEVEL_MAIN },   /* Language */
+	{ "LB", "LABEL",        SIMPLE,  LEVEL_MAIN },   /* Label */
+	{ "M1", "NOTES",        SIMPLE,  LEVEL_MAIN },   /* Misc or Number? */
+	{ "M2", "NOTES",        NOTES,   LEVEL_MAIN },   /* Misc or Deprecated? */
+	{ "M3", "NOTES",        NOTES,   LEVEL_MAIN },   /* Misc or Type of Work? */
+	{ "N1", "NOTES",        NOTES,   LEVEL_MAIN },   /* Notes */
+	{ "N2", "ABSTRACT",     SIMPLE,  LEVEL_MAIN },   /* Deprecated? */
+	{ "NV", "NUMVOLUMES",   SIMPLE,  LEVEL_MAIN },   /* Number of Volumes */
+	{ "OP", "ORIGPUB",      SIMPLE,  LEVEL_MAIN },   /* Original Publication */
+	{ "PB", "PUBLISHER",    SIMPLE,  LEVEL_MAIN },   /* Publisher */
+	{ "PY", "YEAR",         DATE,    LEVEL_MAIN },   /* Year */
+	{ "RI", "REVIEWEDITEM", SIMPLE,  LEVEL_MAIN },   /* Reviewed Item */
+	{ "RN", "NOTES",        SIMPLE,  LEVEL_MAIN },   /* Research Notes */
+	{ "RP", "REPRINTSTATUS",SIMPLE,  LEVEL_MAIN },   /* Reprint Edition */
+	{ "SE", "SECTION",      SIMPLE,  LEVEL_MAIN },   /* Section */
+	{ "SN", "SERIALNUMBER", SERIALNO,LEVEL_MAIN },   /* ISBN/ISSN */
+	{ "SP", "PAGESTART",    SIMPLE,  LEVEL_MAIN },   /* Start Page */
+	{ "ST", "SHORTTITLE",   SIMPLE,  LEVEL_MAIN },   /* Short Title */
+	{ "T1", "TITLE",        TITLE,   LEVEL_MAIN },   /* Deprecated? */
+	{ "T2", "SHORTTITLE",   SIMPLE,  LEVEL_HOST },   /* 'Secondary' Title */
+	{ "T3", "TITLE",        SIMPLE,  LEVEL_SERIES }, /* 'Tertiary' Title */
+	{ "TI", "TITLE",        TITLE,   LEVEL_MAIN },   /* Title */
+	{ "TT", "TRANSTITLE",   TITLE,   LEVEL_MAIN },   /* Translated Title */
+	{ "U1", "NOTES",        NOTES,   LEVEL_MAIN },   /* 'User' - Deprecated? */
+	{ "U2", "NOTES",        NOTES,   LEVEL_MAIN },   /* 'User' - Deprecated? */
+	{ "U3", "NOTES",        NOTES,   LEVEL_MAIN },   /* 'User' - Deprecated? */
+	{ "U4", "NOTES",        NOTES,   LEVEL_MAIN },   /* 'User' - Deprecated? */
+	{ "U5", "NOTES",        NOTES,   LEVEL_MAIN },   /* 'User' - Deprecated? */
+	{ "UR", "URL",          SIMPLE,  LEVEL_MAIN },   /* URL */
+	{ "VL", "VOLUME",       SIMPLE,  LEVEL_MAIN },   /* Volume */
+	{ "VO", "VOLUME",       SIMPLE,  LEVEL_MAIN },   /* Deprecated? */
+	{ "Y1", "YEAR",         DATE,    LEVEL_MAIN },   /* Deprecated */
+	{ "Y2", "MONTH",        SIMPLE,  LEVEL_MAIN },   /* Access Date */
 	{ "  ", "INTERNAL_TYPE|REPORT",  ALWAYS,  LEVEL_MAIN },
-	{ "  ", "RESOURCE|text",ALWAYS,  LEVEL_MAIN },
-	{ "  ", "GENRE|report", ALWAYS,  LEVEL_MAIN }
+	{ "  ", "RESOURCE|text",         ALWAYS,  LEVEL_MAIN },
+	{ "  ", "GENRE|report",          ALWAYS,  LEVEL_MAIN }
 };
 
 static lookups abstract[] = {
-	{ "AU", "AUTHOR",       PERSON,  LEVEL_MAIN },
-	{ "A1", "AUTHOR",       PERSON,  LEVEL_MAIN },
-	{ "A2", "AUTHOR",       PERSON,  LEVEL_HOST },
-	{ "A3", "AUTHOR",       PERSON,  LEVEL_SERIES }, 
-	{ "ED", "EDITOR",       PERSON,  LEVEL_MAIN },
-	{ "PY", "YEAR",         DATE,    LEVEL_MAIN },
-	{ "Y1", "YEAR",         DATE,    LEVEL_MAIN },
-	{ "Y2", "MONTH",     SIMPLE,  LEVEL_MAIN },
-	{ "SN", "SERIALNUMBER", SERIALNO,LEVEL_MAIN },
-	{ "TI", "TITLE",        TITLE,   LEVEL_MAIN },
-	{ "T1", "TITLE",        TITLE,   LEVEL_MAIN },
-	{ "T2", "SHORTTITLE",   SIMPLE,  LEVEL_HOST },
-	{ "T3", "TITLE",        SIMPLE,  LEVEL_SERIES },
-	{ "JO", "TITLE",        SIMPLE,  LEVEL_HOST }, /* JOURNAL */
-	{ "JA", "TITLE",        SIMPLE,  LEVEL_HOST },
-	{ "JF", "TITLE",        SIMPLE,  LEVEL_HOST },
-	{ "J1", "TITLE",        SIMPLE,  LEVEL_HOST },
-	{ "J2", "TITLE",        SIMPLE,  LEVEL_HOST },
-	{ "VL", "VOLUME",       SIMPLE,  LEVEL_MAIN },
-	{ "VO", "VOLUME",       SIMPLE,  LEVEL_MAIN },
-	{ "IS", "ISSUE",        SIMPLE,  LEVEL_MAIN },
-	{ "CP", "ISSUE",        SIMPLE,  LEVEL_MAIN },
-	{ "SP", "PAGESTART",    SIMPLE,  LEVEL_MAIN },
-	{ "EP", "PAGEEND",      SIMPLE,  LEVEL_MAIN },
-	{ "AB", "ABSTRACT",     SIMPLE,  LEVEL_MAIN },
-	{ "N1", "NOTES",        NOTES,   LEVEL_MAIN },
-	{ "N2", "ABSTRACT",     SIMPLE,  LEVEL_MAIN }, 
-	{ "KW", "KEYWORD",      SIMPLE,  LEVEL_MAIN },
-	{ "PB", "PUBLISHER",    SIMPLE,  LEVEL_MAIN },
-	{ "BT", "TITLE",        SIMPLE,  LEVEL_HOST }, 
-	{ "CT", "ADDRESS",      SIMPLE,  LEVEL_MAIN },
-	{ "AD", "AUTHORADDRESS",SIMPLE,  LEVEL_MAIN },
-	{ "CY", "ADDRESS",      SIMPLE,  LEVEL_MAIN },
-	{ "RP", "REPRINTSTATUS",SIMPLE,  LEVEL_MAIN },
-	{ "UR", "URL",          SIMPLE,  LEVEL_MAIN },
-	{ "L1", "FILEATTACH",   SIMPLE,  LEVEL_MAIN },
-	{ "ID", "REFNUM",       SIMPLE,  LEVEL_MAIN },
-	{ "U1", "NOTES",        NOTES,   LEVEL_MAIN }, /*user defined */
-	{ "U2", "NOTES",        NOTES,   LEVEL_MAIN }, /* put in "notes" */
-	{ "U3", "NOTES",        NOTES,   LEVEL_MAIN },
-	{ "U4", "NOTES",        NOTES,   LEVEL_MAIN },
-	{ "U5", "NOTES",        NOTES,   LEVEL_MAIN },
-	{ "M1", "NOTES",        NOTES,   LEVEL_MAIN }, /*misc */
-	{ "M2", "NOTES",        NOTES,   LEVEL_MAIN }, /* put in "notes" */
-	{ "M3", "NOTES",        NOTES,   LEVEL_MAIN },
+	{ "A1", "AUTHOR",       PERSON,  LEVEL_MAIN },   /* Deprecated? */
+	{ "A2", "AUTHOR",       PERSON,  LEVEL_HOST },   /* 'Secondary' Author */
+	{ "A3", "EDITOR",       PERSON,  LEVEL_SERIES }, /* 'Tertiary' Author - Series editor */
+	{ "A4", "AUTHOR",       PERSON,  LEVEL_SERIES }, /* 'Subsidiary' Author */
+	{ "AB", "ABSTRACT",     SIMPLE,  LEVEL_MAIN },   /* Abstract */
+	{ "AD", "AUTHORADDRESS",SIMPLE,  LEVEL_MAIN },   /* Author Address */
+	{ "AU", "AUTHOR",       PERSON,  LEVEL_MAIN },   /* Author */
+	{ "BT", "TITLE",        SIMPLE,  LEVEL_MAIN },   /* Book Title - Deprecated? */
+	{ "C1", "NOTES",        NOTES,   LEVEL_MAIN },   /* 'Custom' - put in "notes" */
+	{ "C2", "NOTES",        NOTES,   LEVEL_MAIN },   /* 'Custom' - put in "notes" */
+	{ "C3", "NOTES",        NOTES,   LEVEL_MAIN },   /* 'Custom' - put in "notes" */
+	{ "C4", "NOTES",        NOTES,   LEVEL_MAIN },   /* 'Custom' - put in "notes" */
+	{ "C5", "NOTES",        NOTES,   LEVEL_MAIN },   /* 'Custom' - put in "notes" */
+	{ "C6", "NOTES",        NOTES,   LEVEL_MAIN },   /* 'Custom' - put in "notes" */
+	{ "C7", "NOTES",        NOTES,   LEVEL_MAIN },   /* 'Custom' - put in "notes" */
+	{ "C8", "NOTES",        NOTES,   LEVEL_MAIN },   /* 'Custom' - put in "notes" */
+	{ "CA", "CAPTION",      SIMPLE,  LEVEL_MAIN },   /* Caption */
+	{ "CN", "CALLNUMBER",   SIMPLE,  LEVEL_MAIN },   /* Call Number */
+	{ "CP", "ISSUE",        SIMPLE,  LEVEL_MAIN },   /* Deprecated? */
+	{ "CT", "ADDRESS",      SIMPLE,  LEVEL_MAIN },   /* Deprecated? */
+	{ "CY", "ADDRESS",      SIMPLE,  LEVEL_MAIN },   /* Place Published */
+	{ "DA", "YEAR",         DATE,    LEVEL_MAIN },   /* Date */
+	{ "DB", "DATABASE",     SIMPLE,  LEVEL_MAIN },   /* Database */
+	{ "DI", "DOI",          DOI,     LEVEL_MAIN },   /* Deprecated? */
+	{ "DO", "DOI",          DOI,     LEVEL_MAIN },   /* DOI */
+	{ "DP", "DATABASEPROV", SIMPLE,  LEVEL_MAIN },   /* Database Provider */
+	{ "ED", "EDITOR",       PERSON,  LEVEL_MAIN },   /* Deprecated? */
+	{ "EP", "PAGEEND",      SIMPLE,  LEVEL_MAIN },   /* End Page */
+	{ "ET", "EDITION",      SIMPLE,  LEVEL_MAIN },   /* Edition */
+	{ "ID", "REFNUM",       SIMPLE,  LEVEL_MAIN },   /* Deprecated? */
+	{ "IS", "ISSUE",        SIMPLE,  LEVEL_MAIN },   /* Number */
+	{ "J1", "TITLE",        SIMPLE,  LEVEL_HOST },   /* Deprecated? */
+	{ "J2", "TITLE",        SIMPLE,  LEVEL_HOST },   /* Alternate Title, abbreviated book or journal */
+	{ "JA", "TITLE",        SIMPLE,  LEVEL_HOST },   /* Deprecated? */
+	{ "JF", "TITLE",        SIMPLE,  LEVEL_HOST },   /* Deprecated? */
+	{ "JO", "TITLE",        SIMPLE,  LEVEL_HOST },   /* Deprecated? */
+	{ "KW", "KEYWORD",      SIMPLE,  LEVEL_MAIN },   /* Keywords */
+	{ "L1", "FILEATTACH",   LINKEDFILE,  LEVEL_MAIN },   /* File Attachment (local, not URL) */
+	{ "L4", "FIGATTACH",    LINKEDFILE,  LEVEL_MAIN },   /* Figure Attachment (local, not URL) */
+	{ "LA", "LANGUAGE",     SIMPLE,  LEVEL_MAIN },   /* Language */
+	{ "LB", "LABEL",        SIMPLE,  LEVEL_MAIN },   /* Label */
+	{ "M1", "NOTES",        SIMPLE,  LEVEL_MAIN },   /* Misc or Number? */
+	{ "M2", "NOTES",        NOTES,   LEVEL_MAIN },   /* Misc or Deprecated? */
+	{ "M3", "NOTES",        NOTES,   LEVEL_MAIN },   /* Misc or Type of Work? */
+	{ "N1", "NOTES",        NOTES,   LEVEL_MAIN },   /* Notes */
+	{ "N2", "ABSTRACT",     SIMPLE,  LEVEL_MAIN },   /* Deprecated? */
+	{ "NV", "NUMVOLUMES",   SIMPLE,  LEVEL_MAIN },   /* Number of Volumes */
+	{ "OP", "ORIGPUB",      SIMPLE,  LEVEL_MAIN },   /* Original Publication */
+	{ "PB", "PUBLISHER",    SIMPLE,  LEVEL_MAIN },   /* Publisher */
+	{ "PY", "YEAR",         DATE,    LEVEL_MAIN },   /* Year */
+	{ "RI", "REVIEWEDITEM", SIMPLE,  LEVEL_MAIN },   /* Reviewed Item */
+	{ "RN", "NOTES",        SIMPLE,  LEVEL_MAIN },   /* Research Notes */
+	{ "RP", "REPRINTSTATUS",SIMPLE,  LEVEL_MAIN },   /* Reprint Edition */
+	{ "SE", "SECTION",      SIMPLE,  LEVEL_MAIN },   /* Section */
+	{ "SN", "SERIALNUMBER", SERIALNO,LEVEL_MAIN },   /* ISBN/ISSN */
+	{ "SP", "PAGESTART",    SIMPLE,  LEVEL_MAIN },   /* Start Page */
+	{ "ST", "SHORTTITLE",   SIMPLE,  LEVEL_MAIN },   /* Short Title */
+	{ "T1", "TITLE",        TITLE,   LEVEL_MAIN },   /* Deprecated? */
+	{ "T2", "SHORTTITLE",   SIMPLE,  LEVEL_HOST },   /* 'Secondary' Title */
+	{ "T3", "TITLE",        SIMPLE,  LEVEL_SERIES }, /* 'Tertiary' Title */
+	{ "TI", "TITLE",        TITLE,   LEVEL_MAIN },   /* Title */
+	{ "TT", "TRANSTITLE",   TITLE,   LEVEL_MAIN },   /* Translated Title */
+	{ "U1", "NOTES",        NOTES,   LEVEL_MAIN },   /* 'User' - Deprecated? */
+	{ "U2", "NOTES",        NOTES,   LEVEL_MAIN },   /* 'User' - Deprecated? */
+	{ "U3", "NOTES",        NOTES,   LEVEL_MAIN },   /* 'User' - Deprecated? */
+	{ "U4", "NOTES",        NOTES,   LEVEL_MAIN },   /* 'User' - Deprecated? */
+	{ "U5", "NOTES",        NOTES,   LEVEL_MAIN },   /* 'User' - Deprecated? */
+	{ "UR", "URL",          SIMPLE,  LEVEL_MAIN },   /* URL */
+	{ "VL", "VOLUME",       SIMPLE,  LEVEL_MAIN },   /* Volume */
+	{ "VO", "VOLUME",       SIMPLE,  LEVEL_MAIN },   /* Deprecated? */
+	{ "Y1", "YEAR",         DATE,    LEVEL_MAIN },   /* Deprecated */
+	{ "Y2", "MONTH",        SIMPLE,  LEVEL_MAIN },   /* Access Date */
 	{ "  ", "GENRE|abstract or summary", ALWAYS,  LEVEL_MAIN }
 };
 
 static lookups program[] = {
-	{ "AU", "AUTHOR",       PERSON,  LEVEL_MAIN },
-	{ "A1", "AUTHOR",       PERSON,  LEVEL_MAIN },
-	{ "A2", "AUTHOR",       PERSON,  LEVEL_HOST },
-	{ "A3", "AUTHOR",       PERSON,  LEVEL_SERIES }, 
-	{ "ED", "EDITOR",       PERSON,  LEVEL_MAIN },
-	{ "PY", "YEAR",         DATE,    LEVEL_MAIN },
-	{ "Y1", "YEAR",         DATE,    LEVEL_MAIN },
-	{ "Y2", "MONTH",     SIMPLE,  LEVEL_MAIN },
-	{ "SN", "SERIALNUMBER", SERIALNO,LEVEL_MAIN },
-	{ "TI", "TITLE",        TITLE,   LEVEL_MAIN },
-	{ "T1", "TITLE",        TITLE,   LEVEL_MAIN },
-	{ "T2", "SHORTTITLE",   SIMPLE,  LEVEL_HOST },
-	{ "T3", "TITLE",        SIMPLE,  LEVEL_SERIES },
-	{ "JO", "TITLE",        SIMPLE,  LEVEL_HOST }, /* JOURNAL */
-	{ "JA", "TITLE",        SIMPLE,  LEVEL_HOST },
-	{ "JF", "TITLE",        SIMPLE,  LEVEL_HOST },
-	{ "J1", "TITLE",        SIMPLE,  LEVEL_HOST },
-	{ "J2", "TITLE",        SIMPLE,  LEVEL_HOST },
-	{ "VL", "VOLUME",       SIMPLE,  LEVEL_MAIN },
-	{ "VO", "VOLUME",       SIMPLE,  LEVEL_MAIN },
-	{ "IS", "ISSUE",        SIMPLE,  LEVEL_MAIN },
-	{ "CP", "ISSUE",        SIMPLE,  LEVEL_MAIN },
-	{ "SP", "PAGESTART",    SIMPLE,  LEVEL_MAIN },
-	{ "EP", "PAGEEND",      SIMPLE,  LEVEL_MAIN },
-	{ "AB", "ABSTRACT",     SIMPLE,  LEVEL_MAIN },
-	{ "N1", "NOTES",        NOTES,   LEVEL_MAIN },
-	{ "N2", "ABSTRACT",     SIMPLE,  LEVEL_MAIN }, 
-	{ "KW", "KEYWORD",      SIMPLE,  LEVEL_MAIN },
-	{ "PB", "PUBLISHER",    SIMPLE,  LEVEL_MAIN },
-	{ "BT", "TITLE",        SIMPLE,  LEVEL_HOST }, 
-	{ "CT", "ADDRESS",      SIMPLE,  LEVEL_MAIN },
-	{ "AD", "AUTHORADDRESS",SIMPLE,  LEVEL_MAIN },
-	{ "CY", "ADDRESS",      SIMPLE,  LEVEL_MAIN },
-	{ "RP", "REPRINTSTATUS",SIMPLE,  LEVEL_MAIN },
-	{ "UR", "URL",          SIMPLE,  LEVEL_MAIN },
-	{ "L1", "FILEATTACH",   SIMPLE,  LEVEL_MAIN },
-	{ "ID", "REFNUM",       SIMPLE,  LEVEL_MAIN },
-	{ "U1", "NOTES",        NOTES,   LEVEL_MAIN }, /*user defined */
-	{ "U2", "NOTES",        NOTES,   LEVEL_MAIN }, /* put in "notes" */
-	{ "U3", "NOTES",        NOTES,   LEVEL_MAIN },
-	{ "U4", "NOTES",        NOTES,   LEVEL_MAIN },
-	{ "U5", "NOTES",        NOTES,   LEVEL_MAIN },
-	{ "M1", "NOTES",        NOTES,   LEVEL_MAIN }, /*misc */
-	{ "M2", "NOTES",        NOTES,   LEVEL_MAIN }, /* put in "notes" */
-	{ "M3", "NOTES",        NOTES,   LEVEL_MAIN },
+	{ "A1", "AUTHOR",       PERSON,  LEVEL_MAIN },   /* Deprecated? */
+	{ "A2", "AUTHOR",       PERSON,  LEVEL_HOST },   /* 'Secondary' Author */
+	{ "A3", "EDITOR",       PERSON,  LEVEL_SERIES }, /* 'Tertiary' Author - Series editor */
+	{ "A4", "AUTHOR",       PERSON,  LEVEL_SERIES }, /* 'Subsidiary' Author */
+	{ "AB", "ABSTRACT",     SIMPLE,  LEVEL_MAIN },   /* Abstract */
+	{ "AD", "AUTHORADDRESS",SIMPLE,  LEVEL_MAIN },   /* Author Address */
+	{ "AU", "AUTHOR",       PERSON,  LEVEL_MAIN },   /* Author */
+	{ "BT", "TITLE",        SIMPLE,  LEVEL_MAIN },   /* Book Title - Deprecated? */
+	{ "C1", "NOTES",        NOTES,   LEVEL_MAIN },   /* 'Custom' - put in "notes" */
+	{ "C2", "NOTES",        NOTES,   LEVEL_MAIN },   /* 'Custom' - put in "notes" */
+	{ "C3", "NOTES",        NOTES,   LEVEL_MAIN },   /* 'Custom' - put in "notes" */
+	{ "C4", "NOTES",        NOTES,   LEVEL_MAIN },   /* 'Custom' - put in "notes" */
+	{ "C5", "NOTES",        NOTES,   LEVEL_MAIN },   /* 'Custom' - put in "notes" */
+	{ "C6", "NOTES",        NOTES,   LEVEL_MAIN },   /* 'Custom' - put in "notes" */
+	{ "C7", "NOTES",        NOTES,   LEVEL_MAIN },   /* 'Custom' - put in "notes" */
+	{ "C8", "NOTES",        NOTES,   LEVEL_MAIN },   /* 'Custom' - put in "notes" */
+	{ "CA", "CAPTION",      SIMPLE,  LEVEL_MAIN },   /* Caption */
+	{ "CN", "CALLNUMBER",   SIMPLE,  LEVEL_MAIN },   /* Call Number */
+	{ "CP", "ISSUE",        SIMPLE,  LEVEL_MAIN },   /* Deprecated? */
+	{ "CT", "ADDRESS",      SIMPLE,  LEVEL_MAIN },   /* Deprecated? */
+	{ "CY", "ADDRESS",      SIMPLE,  LEVEL_MAIN },   /* Place Published */
+	{ "DA", "YEAR",         DATE,    LEVEL_MAIN },   /* Date */
+	{ "DB", "DATABASE",     SIMPLE,  LEVEL_MAIN },   /* Database */
+	{ "DI", "DOI",          DOI,     LEVEL_MAIN },   /* Deprecated? */
+	{ "DO", "DOI",          DOI,     LEVEL_MAIN },   /* DOI */
+	{ "DP", "DATABASEPROV", SIMPLE,  LEVEL_MAIN },   /* Database Provider */
+	{ "ED", "EDITOR",       PERSON,  LEVEL_MAIN },   /* Deprecated? */
+	{ "EP", "PAGEEND",      SIMPLE,  LEVEL_MAIN },   /* End Page */
+	{ "ET", "EDITION",      SIMPLE,  LEVEL_MAIN },   /* Edition */
+	{ "ID", "REFNUM",       SIMPLE,  LEVEL_MAIN },   /* Deprecated? */
+	{ "IS", "ISSUE",        SIMPLE,  LEVEL_MAIN },   /* Number */
+	{ "J1", "TITLE",        SIMPLE,  LEVEL_HOST },   /* Deprecated? */
+	{ "J2", "TITLE",        SIMPLE,  LEVEL_HOST },   /* Alternate Title, abbreviated book or journal */
+	{ "JA", "TITLE",        SIMPLE,  LEVEL_HOST },   /* Deprecated? */
+	{ "JF", "TITLE",        SIMPLE,  LEVEL_HOST },   /* Deprecated? */
+	{ "JO", "TITLE",        SIMPLE,  LEVEL_HOST },   /* Deprecated? */
+	{ "KW", "KEYWORD",      SIMPLE,  LEVEL_MAIN },   /* Keywords */
+	{ "L1", "FILEATTACH",   LINKEDFILE,  LEVEL_MAIN },   /* File Attachment (local, not URL) */
+	{ "L4", "FIGATTACH",    LINKEDFILE,  LEVEL_MAIN },   /* Figure Attachment (local, not URL) */
+	{ "LA", "LANGUAGE",     SIMPLE,  LEVEL_MAIN },   /* Language */
+	{ "LB", "LABEL",        SIMPLE,  LEVEL_MAIN },   /* Label */
+	{ "M1", "NOTES",        SIMPLE,  LEVEL_MAIN },   /* Misc or Number? */
+	{ "M2", "NOTES",        NOTES,   LEVEL_MAIN },   /* Misc or Deprecated? */
+	{ "M3", "NOTES",        NOTES,   LEVEL_MAIN },   /* Misc or Type of Work? */
+	{ "N1", "NOTES",        NOTES,   LEVEL_MAIN },   /* Notes */
+	{ "N2", "ABSTRACT",     SIMPLE,  LEVEL_MAIN },   /* Deprecated? */
+	{ "NV", "NUMVOLUMES",   SIMPLE,  LEVEL_MAIN },   /* Number of Volumes */
+	{ "OP", "ORIGPUB",      SIMPLE,  LEVEL_MAIN },   /* Original Publication */
+	{ "PB", "PUBLISHER",    SIMPLE,  LEVEL_MAIN },   /* Publisher */
+	{ "PY", "YEAR",         DATE,    LEVEL_MAIN },   /* Year */
+	{ "RI", "REVIEWEDITEM", SIMPLE,  LEVEL_MAIN },   /* Reviewed Item */
+	{ "RN", "NOTES",        SIMPLE,  LEVEL_MAIN },   /* Research Notes */
+	{ "RP", "REPRINTSTATUS",SIMPLE,  LEVEL_MAIN },   /* Reprint Edition */
+	{ "SE", "SECTION",      SIMPLE,  LEVEL_MAIN },   /* Section */
+	{ "SN", "SERIALNUMBER", SERIALNO,LEVEL_MAIN },   /* ISBN/ISSN */
+	{ "SP", "PAGESTART",    SIMPLE,  LEVEL_MAIN },   /* Start Page */
+	{ "ST", "SHORTTITLE",   SIMPLE,  LEVEL_MAIN },   /* Short Title */
+	{ "T1", "TITLE",        TITLE,   LEVEL_MAIN },   /* Deprecated? */
+	{ "T2", "SHORTTITLE",   SIMPLE,  LEVEL_HOST },   /* 'Secondary' Title */
+	{ "T3", "TITLE",        SIMPLE,  LEVEL_SERIES }, /* 'Tertiary' Title */
+	{ "TI", "TITLE",        TITLE,   LEVEL_MAIN },   /* Title */
+	{ "TT", "TRANSTITLE",   TITLE,   LEVEL_MAIN },   /* Translated Title */
+	{ "U1", "NOTES",        NOTES,   LEVEL_MAIN },   /* 'User' - Deprecated? */
+	{ "U2", "NOTES",        NOTES,   LEVEL_MAIN },   /* 'User' - Deprecated? */
+	{ "U3", "NOTES",        NOTES,   LEVEL_MAIN },   /* 'User' - Deprecated? */
+	{ "U4", "NOTES",        NOTES,   LEVEL_MAIN },   /* 'User' - Deprecated? */
+	{ "U5", "NOTES",        NOTES,   LEVEL_MAIN },   /* 'User' - Deprecated? */
+	{ "UR", "URL",          SIMPLE,  LEVEL_MAIN },   /* URL */
+	{ "VL", "VOLUME",       SIMPLE,  LEVEL_MAIN },   /* Volume */
+	{ "VO", "VOLUME",       SIMPLE,  LEVEL_MAIN },   /* Deprecated? */
+	{ "Y1", "YEAR",         DATE,    LEVEL_MAIN },   /* Deprecated */
+	{ "Y2", "MONTH",        SIMPLE,  LEVEL_MAIN },   /* Access Date */
 	{ "  ", "RESOURCE|software, multimedia", ALWAYS, LEVEL_MAIN }
 };
 
 static lookups patent[] = {
-	{ "AU", "AUTHOR",       PERSON,  LEVEL_MAIN },
-	{ "A1", "AUTHOR",       PERSON,  LEVEL_MAIN },
-	{ "A2", "AUTHOR",       PERSON,  LEVEL_HOST },
-	{ "A3", "AUTHOR",       PERSON,  LEVEL_SERIES }, 
-	{ "ED", "EDITOR",       PERSON,  LEVEL_MAIN },
-	{ "PY", "YEAR",         DATE,    LEVEL_MAIN },
-	{ "Y1", "YEAR",         DATE,    LEVEL_MAIN },
-	{ "Y2", "MONTH",     SIMPLE,  LEVEL_MAIN },
-	{ "SN", "SERIALNUMBER", SERIALNO,LEVEL_MAIN },
-	{ "TI", "TITLE",        TITLE,   LEVEL_MAIN },
-	{ "T1", "TITLE",        TITLE,   LEVEL_MAIN },
-	{ "T2", "SHORTTITLE",   SIMPLE,  LEVEL_HOST },
-	{ "T3", "TITLE",        SIMPLE,  LEVEL_SERIES },
-	{ "JO", "TITLE",        SIMPLE,  LEVEL_HOST }, /* JOURNAL */
-	{ "JA", "TITLE",        SIMPLE,  LEVEL_HOST },
-	{ "JF", "TITLE",        SIMPLE,  LEVEL_HOST },
-	{ "J1", "TITLE",        SIMPLE,  LEVEL_HOST },
-	{ "J2", "TITLE",        SIMPLE,  LEVEL_HOST },
-	{ "VL", "VOLUME",       SIMPLE,  LEVEL_MAIN },
-	{ "VO", "VOLUME",       SIMPLE,  LEVEL_MAIN },
-	{ "IS", "ISSUE",        SIMPLE,  LEVEL_MAIN },
-	{ "CP", "ISSUE",        SIMPLE,  LEVEL_MAIN },
-	{ "SP", "PAGESTART",    SIMPLE,  LEVEL_MAIN },
-	{ "EP", "PAGEEND",      SIMPLE,  LEVEL_MAIN },
-	{ "AB", "ABSTRACT",     SIMPLE,  LEVEL_MAIN },
-	{ "N1", "NOTES",        NOTES,   LEVEL_MAIN },
-	{ "N2", "ABSTRACT",     SIMPLE,  LEVEL_MAIN }, 
-	{ "KW", "KEYWORD",      SIMPLE,  LEVEL_MAIN },
-	{ "PB", "PUBLISHER",    SIMPLE,  LEVEL_MAIN },
-	{ "BT", "TITLE",        SIMPLE,  LEVEL_HOST }, 
-	{ "CT", "ADDRESS",      SIMPLE,  LEVEL_MAIN },
-	{ "AD", "AUTHORADDRESS",SIMPLE,  LEVEL_MAIN },
-	{ "CY", "ADDRESS",      SIMPLE,  LEVEL_MAIN },
-	{ "RP", "REPRINTSTATUS",SIMPLE,  LEVEL_MAIN },
-	{ "UR", "URL",          SIMPLE,  LEVEL_MAIN },
-	{ "ID", "REFNUM",       SIMPLE,  LEVEL_MAIN },
-	{ "U1", "NOTES",        NOTES,   LEVEL_MAIN }, /*user defined */
-	{ "L1", "FILEATTACH",   SIMPLE,  LEVEL_MAIN },
-	{ "U2", "NOTES",        NOTES,   LEVEL_MAIN }, /* put in "notes" */
-	{ "U3", "NOTES",        NOTES,   LEVEL_MAIN },
-	{ "U4", "NOTES",        NOTES,   LEVEL_MAIN },
-	{ "U5", "NOTES",        NOTES,   LEVEL_MAIN },
-	{ "M1", "NOTES",        NOTES,   LEVEL_MAIN }, /*misc */
-	{ "M2", "NOTES",        NOTES,   LEVEL_MAIN }, /* put in "notes" */
-	{ "M3", "NOTES",        NOTES,   LEVEL_MAIN },
-        { "  ", "RESOURCE|text", ALWAYS, LEVEL_MAIN },
-        { "  ", "GENRE|patent", ALWAYS, LEVEL_MAIN }
+	{ "A1", "AUTHOR",       PERSON,  LEVEL_MAIN },   /* Deprecated? */
+	{ "A2", "AUTHOR",       PERSON,  LEVEL_HOST },   /* 'Secondary' Author */
+	{ "A3", "EDITOR",       PERSON,  LEVEL_SERIES }, /* 'Tertiary' Author - Series editor */
+	{ "A4", "AUTHOR",       PERSON,  LEVEL_SERIES }, /* 'Subsidiary' Author */
+	{ "AB", "ABSTRACT",     SIMPLE,  LEVEL_MAIN },   /* Abstract */
+	{ "AD", "AUTHORADDRESS",SIMPLE,  LEVEL_MAIN },   /* Author Address */
+	{ "AU", "AUTHOR",       PERSON,  LEVEL_MAIN },   /* Author */
+	{ "BT", "TITLE",        SIMPLE,  LEVEL_MAIN },   /* Book Title - Deprecated? */
+	{ "C1", "NOTES",        NOTES,   LEVEL_MAIN },   /* 'Custom' - put in "notes" */
+	{ "C2", "NOTES",        NOTES,   LEVEL_MAIN },   /* 'Custom' - put in "notes" */
+	{ "C3", "NOTES",        NOTES,   LEVEL_MAIN },   /* 'Custom' - put in "notes" */
+	{ "C4", "NOTES",        NOTES,   LEVEL_MAIN },   /* 'Custom' - put in "notes" */
+	{ "C5", "NOTES",        NOTES,   LEVEL_MAIN },   /* 'Custom' - put in "notes" */
+	{ "C6", "NOTES",        NOTES,   LEVEL_MAIN },   /* 'Custom' - put in "notes" */
+	{ "C7", "NOTES",        NOTES,   LEVEL_MAIN },   /* 'Custom' - put in "notes" */
+	{ "C8", "NOTES",        NOTES,   LEVEL_MAIN },   /* 'Custom' - put in "notes" */
+	{ "CA", "CAPTION",      SIMPLE,  LEVEL_MAIN },   /* Caption */
+	{ "CN", "CALLNUMBER",   SIMPLE,  LEVEL_MAIN },   /* Call Number */
+	{ "CP", "ISSUE",        SIMPLE,  LEVEL_MAIN },   /* Deprecated? */
+	{ "CT", "ADDRESS",      SIMPLE,  LEVEL_MAIN },   /* Deprecated? */
+	{ "CY", "ADDRESS",      SIMPLE,  LEVEL_MAIN },   /* Place Published */
+	{ "DA", "YEAR",         DATE,    LEVEL_MAIN },   /* Date */
+	{ "DB", "DATABASE",     SIMPLE,  LEVEL_MAIN },   /* Database */
+	{ "DI", "DOI",          DOI,     LEVEL_MAIN },   /* Deprecated? */
+	{ "DO", "DOI",          DOI,     LEVEL_MAIN },   /* DOI */
+	{ "DP", "DATABASEPROV", SIMPLE,  LEVEL_MAIN },   /* Database Provider */
+	{ "ED", "EDITOR",       PERSON,  LEVEL_MAIN },   /* Deprecated? */
+	{ "EP", "PAGEEND",      SIMPLE,  LEVEL_MAIN },   /* End Page */
+	{ "ET", "EDITION",      SIMPLE,  LEVEL_MAIN },   /* Edition */
+	{ "ID", "REFNUM",       SIMPLE,  LEVEL_MAIN },   /* Deprecated? */
+	{ "IS", "ISSUE",        SIMPLE,  LEVEL_MAIN },   /* Number */
+	{ "J1", "TITLE",        SIMPLE,  LEVEL_HOST },   /* Deprecated? */
+	{ "J2", "TITLE",        SIMPLE,  LEVEL_HOST },   /* Alternate Title, abbreviated book or journal */
+	{ "JA", "TITLE",        SIMPLE,  LEVEL_HOST },   /* Deprecated? */
+	{ "JF", "TITLE",        SIMPLE,  LEVEL_HOST },   /* Deprecated? */
+	{ "JO", "TITLE",        SIMPLE,  LEVEL_HOST },   /* Deprecated? */
+	{ "KW", "KEYWORD",      SIMPLE,  LEVEL_MAIN },   /* Keywords */
+	{ "L1", "FILEATTACH",   LINKEDFILE,  LEVEL_MAIN },   /* File Attachment (local, not URL) */
+	{ "L4", "FIGATTACH",    LINKEDFILE,  LEVEL_MAIN },   /* Figure Attachment (local, not URL) */
+	{ "LA", "LANGUAGE",     SIMPLE,  LEVEL_MAIN },   /* Language */
+	{ "LB", "LABEL",        SIMPLE,  LEVEL_MAIN },   /* Label */
+	{ "M1", "NOTES",        NOTES,   LEVEL_MAIN },   /* Misc or Deprecated? */
+	{ "M2", "NOTES",        NOTES,   LEVEL_MAIN },   /* Misc or Deprecated? */
+	{ "M3", "NOTES",        NOTES,   LEVEL_MAIN },   /* Misc or Type of Work? */
+	{ "N1", "NOTES",        NOTES,   LEVEL_MAIN },   /* Notes */
+	{ "N2", "ABSTRACT",     SIMPLE,  LEVEL_MAIN },   /* Deprecated? */
+	{ "NV", "NUMVOLUMES",   SIMPLE,  LEVEL_MAIN },   /* Number of Volumes */
+	{ "OP", "ORIGPUB",      SIMPLE,  LEVEL_MAIN },   /* Original Publication */
+	{ "PB", "PUBLISHER",    SIMPLE,  LEVEL_MAIN },   /* Publisher */
+	{ "PY", "YEAR",         DATE,    LEVEL_MAIN },   /* Year */
+	{ "RI", "REVIEWEDITEM", SIMPLE,  LEVEL_MAIN },   /* Reviewed Item */
+	{ "RN", "NOTES",        SIMPLE,  LEVEL_MAIN },   /* Research Notes */
+	{ "RP", "REPRINTSTATUS",SIMPLE,  LEVEL_MAIN },   /* Reprint Edition */
+	{ "SE", "SECTION",      SIMPLE,  LEVEL_MAIN },   /* Section */
+	{ "SN", "SERIALNUMBER", SERIALNO,LEVEL_MAIN },   /* ISBN/ISSN */
+	{ "SP", "PAGESTART",    SIMPLE,  LEVEL_MAIN },   /* Start Page */
+	{ "ST", "SHORTTITLE",   SIMPLE,  LEVEL_MAIN },   /* Short Title */
+	{ "T1", "TITLE",        TITLE,   LEVEL_MAIN },   /* Deprecated? */
+	{ "T2", "SHORTTITLE",   SIMPLE,  LEVEL_HOST },   /* 'Secondary' Title */
+	{ "T3", "TITLE",        SIMPLE,  LEVEL_SERIES }, /* 'Tertiary' Title */
+	{ "TI", "TITLE",        TITLE,   LEVEL_MAIN },   /* Title */
+	{ "TT", "TRANSTITLE",   TITLE,   LEVEL_MAIN },   /* Translated Title */
+	{ "U1", "NOTES",        NOTES,   LEVEL_MAIN },   /* 'User' - Deprecated? */
+	{ "U2", "NOTES",        NOTES,   LEVEL_MAIN },   /* 'User' - Deprecated? */
+	{ "U3", "NOTES",        NOTES,   LEVEL_MAIN },   /* 'User' - Deprecated? */
+	{ "U4", "NOTES",        NOTES,   LEVEL_MAIN },   /* 'User' - Deprecated? */
+	{ "U5", "NOTES",        NOTES,   LEVEL_MAIN },   /* 'User' - Deprecated? */
+	{ "UR", "URL",          SIMPLE,  LEVEL_MAIN },   /* URL */
+	{ "VL", "VOLUME",       SIMPLE,  LEVEL_MAIN },   /* Volume */
+	{ "VO", "VOLUME",       SIMPLE,  LEVEL_MAIN },   /* Deprecated? */
+	{ "Y1", "YEAR",         DATE,    LEVEL_MAIN },   /* Deprecated */
+	{ "Y2", "MONTH",        SIMPLE,  LEVEL_MAIN },   /* Access Date */
+	{ "  ", "RESOURCE|text", ALWAYS, LEVEL_MAIN },
+	{ "  ", "GENRE|patent",  ALWAYS, LEVEL_MAIN }
 };
 
 static lookups electric[] = {
-	{ "AU", "AUTHOR",       PERSON,  LEVEL_MAIN },
-	{ "A1", "AUTHOR",       PERSON,  LEVEL_MAIN },
-	{ "A2", "AUTHOR",       PERSON,  LEVEL_HOST },
-	{ "A3", "AUTHOR",       PERSON,  LEVEL_SERIES }, 
-	{ "ED", "EDITOR",       PERSON,  LEVEL_MAIN },
-	{ "PY", "YEAR",         DATE,    LEVEL_MAIN },
-	{ "Y1", "YEAR",         DATE,    LEVEL_MAIN },
-	{ "Y2", "MONTH",     SIMPLE,  LEVEL_MAIN },
-	{ "SN", "SERIALNUMBER", SERIALNO,LEVEL_MAIN },
-	{ "TI", "TITLE",        TITLE,   LEVEL_MAIN },
-	{ "T1", "TITLE",        TITLE,   LEVEL_MAIN },
-	{ "T2", "SHORTTITLE",   SIMPLE,  LEVEL_HOST },
-	{ "T3", "TITLE",        SIMPLE,  LEVEL_SERIES },
-	{ "JO", "TITLE",        SIMPLE,  LEVEL_HOST }, /* JOURNAL */
-	{ "JA", "TITLE",        SIMPLE,  LEVEL_HOST },
-	{ "JF", "TITLE",        SIMPLE,  LEVEL_HOST },
-	{ "J1", "TITLE",        SIMPLE,  LEVEL_HOST },
-	{ "J2", "TITLE",        SIMPLE,  LEVEL_HOST },
-	{ "VL", "VOLUME",       SIMPLE,  LEVEL_MAIN },
-	{ "VO", "VOLUME",       SIMPLE,  LEVEL_MAIN },
-	{ "IS", "ISSUE",        SIMPLE,  LEVEL_MAIN },
-	{ "CP", "ISSUE",        SIMPLE,  LEVEL_MAIN },
-	{ "SP", "PAGESTART",    SIMPLE,  LEVEL_MAIN },
-	{ "EP", "PAGEEND",      SIMPLE,  LEVEL_MAIN },
-	{ "AB", "ABSTRACT",     SIMPLE,  LEVEL_MAIN },
-	{ "N1", "NOTES",        NOTES,   LEVEL_MAIN },
-	{ "N2", "ABSTRACT",     SIMPLE,  LEVEL_MAIN }, 
-	{ "KW", "KEYWORD",      SIMPLE,  LEVEL_MAIN },
-	{ "PB", "PUBLISHER",    SIMPLE,  LEVEL_MAIN },
-	{ "BT", "TITLE",        SIMPLE,  LEVEL_HOST }, 
-	{ "CT", "ADDRESS",      SIMPLE,  LEVEL_MAIN },
-	{ "AD", "AUTHORADDRESS",SIMPLE,  LEVEL_MAIN },
-	{ "CY", "ADDRESS",      SIMPLE,  LEVEL_MAIN },
-	{ "RP", "REPRINTSTATUS",SIMPLE,  LEVEL_MAIN },
-	{ "UR", "URL",          SIMPLE,  LEVEL_MAIN },
-	{ "L1", "FILEATTACH",   SIMPLE,  LEVEL_MAIN },
-	{ "ID", "REFNUM",       SIMPLE,  LEVEL_MAIN },
-	{ "U1", "NOTES",        NOTES,   LEVEL_MAIN }, /*user defined */
-	{ "U2", "NOTES",        NOTES,   LEVEL_MAIN }, /* put in "notes" */
-	{ "U3", "NOTES",        NOTES,   LEVEL_MAIN },
-	{ "U4", "NOTES",        NOTES,   LEVEL_MAIN },
-	{ "U5", "NOTES",        NOTES,   LEVEL_MAIN },
-	{ "M1", "NOTES",        NOTES,   LEVEL_MAIN }, /*misc */
-	{ "M2", "NOTES",        NOTES,   LEVEL_MAIN }, /* put in "notes" */
-	{ "M3", "NOTES",        NOTES,   LEVEL_MAIN },
-        { " ",  "RESOURCE|software, multimedia",    ALWAYS, LEVEL_MAIN },
-        { " ",  "GENRE|electronic",       ALWAYS, LEVEL_MAIN },
+	{ "A1", "AUTHOR",       PERSON,  LEVEL_MAIN },   /* Deprecated? */
+	{ "A2", "AUTHOR",       PERSON,  LEVEL_HOST },   /* 'Secondary' Author */
+	{ "A3", "EDITOR",       PERSON,  LEVEL_SERIES }, /* 'Tertiary' Author - Series editor */
+	{ "A4", "AUTHOR",       PERSON,  LEVEL_SERIES }, /* 'Subsidiary' Author */
+	{ "AB", "ABSTRACT",     SIMPLE,  LEVEL_MAIN },   /* Abstract */
+	{ "AD", "AUTHORADDRESS",SIMPLE,  LEVEL_MAIN },   /* Author Address */
+	{ "AU", "AUTHOR",       PERSON,  LEVEL_MAIN },   /* Author */
+	{ "BT", "TITLE",        SIMPLE,  LEVEL_MAIN },   /* Book Title - Deprecated? */
+	{ "C1", "NOTES",        NOTES,   LEVEL_MAIN },   /* 'Custom' - put in "notes" */
+	{ "C2", "NOTES",        NOTES,   LEVEL_MAIN },   /* 'Custom' - put in "notes" */
+	{ "C3", "NOTES",        NOTES,   LEVEL_MAIN },   /* 'Custom' - put in "notes" */
+	{ "C4", "NOTES",        NOTES,   LEVEL_MAIN },   /* 'Custom' - put in "notes" */
+	{ "C5", "NOTES",        NOTES,   LEVEL_MAIN },   /* 'Custom' - put in "notes" */
+	{ "C6", "NOTES",        NOTES,   LEVEL_MAIN },   /* 'Custom' - put in "notes" */
+	{ "C7", "NOTES",        NOTES,   LEVEL_MAIN },   /* 'Custom' - put in "notes" */
+	{ "C8", "NOTES",        NOTES,   LEVEL_MAIN },   /* 'Custom' - put in "notes" */
+	{ "CA", "CAPTION",      SIMPLE,  LEVEL_MAIN },   /* Caption */
+	{ "CN", "CALLNUMBER",   SIMPLE,  LEVEL_MAIN },   /* Call Number */
+	{ "CP", "ISSUE",        SIMPLE,  LEVEL_MAIN },   /* Deprecated? */
+	{ "CT", "ADDRESS",      SIMPLE,  LEVEL_MAIN },   /* Deprecated? */
+	{ "CY", "ADDRESS",      SIMPLE,  LEVEL_MAIN },   /* Place Published */
+	{ "DA", "YEAR",         DATE,    LEVEL_MAIN },   /* Date */
+	{ "DB", "DATABASE",     SIMPLE,  LEVEL_MAIN },   /* Database */
+	{ "DI", "DOI",          DOI,     LEVEL_MAIN },   /* Deprecated? */
+	{ "DO", "DOI",          DOI,     LEVEL_MAIN },   /* DOI */
+	{ "DP", "DATABASEPROV", SIMPLE,  LEVEL_MAIN },   /* Database Provider */
+	{ "ED", "EDITOR",       PERSON,  LEVEL_MAIN },   /* Deprecated? */
+	{ "EP", "PAGEEND",      SIMPLE,  LEVEL_MAIN },   /* End Page */
+	{ "ET", "EDITION",      SIMPLE,  LEVEL_MAIN },   /* Edition */
+	{ "ID", "REFNUM",       SIMPLE,  LEVEL_MAIN },   /* Deprecated? */
+	{ "IS", "ISSUE",        SIMPLE,  LEVEL_MAIN },   /* Number */
+	{ "J1", "TITLE",        SIMPLE,  LEVEL_HOST },   /* Deprecated? */
+	{ "J2", "TITLE",        SIMPLE,  LEVEL_HOST },   /* Alternate Title, abbreviated book or journal */
+	{ "JA", "TITLE",        SIMPLE,  LEVEL_HOST },   /* Deprecated? */
+	{ "JF", "TITLE",        SIMPLE,  LEVEL_HOST },   /* Deprecated? */
+	{ "JO", "TITLE",        SIMPLE,  LEVEL_HOST },   /* Deprecated? */
+	{ "KW", "KEYWORD",      SIMPLE,  LEVEL_MAIN },   /* Keywords */
+	{ "L1", "FILEATTACH",   LINKEDFILE,  LEVEL_MAIN },   /* File Attachment (local, not URL) */
+	{ "L4", "FIGATTACH",    LINKEDFILE,  LEVEL_MAIN },   /* Figure Attachment (local, not URL) */
+	{ "LA", "LANGUAGE",     SIMPLE,  LEVEL_MAIN },   /* Language */
+	{ "LB", "LABEL",        SIMPLE,  LEVEL_MAIN },   /* Label */
+	{ "M1", "NOTES",        NOTES,   LEVEL_MAIN },   /* Misc or Deprecated? */
+	{ "M2", "NOTES",        NOTES,   LEVEL_MAIN },   /* Misc or Deprecated? */
+	{ "M3", "NOTES",        NOTES,   LEVEL_MAIN },   /* Misc or Type of Work? */
+	{ "N1", "NOTES",        NOTES,   LEVEL_MAIN },   /* Notes */
+	{ "N2", "ABSTRACT",     SIMPLE,  LEVEL_MAIN },   /* Deprecated? */
+	{ "NV", "NUMVOLUMES",   SIMPLE,  LEVEL_MAIN },   /* Number of Volumes */
+	{ "OP", "ORIGPUB",      SIMPLE,  LEVEL_MAIN },   /* Original Publication */
+	{ "PB", "PUBLISHER",    SIMPLE,  LEVEL_MAIN },   /* Publisher */
+	{ "PY", "YEAR",         DATE,    LEVEL_MAIN },   /* Year */
+	{ "RI", "REVIEWEDITEM", SIMPLE,  LEVEL_MAIN },   /* Reviewed Item */
+	{ "RN", "NOTES",        SIMPLE,  LEVEL_MAIN },   /* Research Notes */
+	{ "RP", "REPRINTSTATUS",SIMPLE,  LEVEL_MAIN },   /* Reprint Edition */
+	{ "SE", "SECTION",      SIMPLE,  LEVEL_MAIN },   /* Section */
+	{ "SN", "SERIALNUMBER", SERIALNO,LEVEL_MAIN },   /* ISBN/ISSN */
+	{ "SP", "PAGESTART",    SIMPLE,  LEVEL_MAIN },   /* Start Page */
+	{ "ST", "SHORTTITLE",   SIMPLE,  LEVEL_MAIN },   /* Short Title */
+	{ "T1", "TITLE",        TITLE,   LEVEL_MAIN },   /* Deprecated? */
+	{ "T2", "SHORTTITLE",   SIMPLE,  LEVEL_HOST },   /* 'Secondary' Title */
+	{ "T3", "TITLE",        SIMPLE,  LEVEL_SERIES }, /* 'Tertiary' Title */
+	{ "TI", "TITLE",        TITLE,   LEVEL_MAIN },   /* Title */
+	{ "TT", "TRANSTITLE",   TITLE,   LEVEL_MAIN },   /* Translated Title */
+	{ "U1", "NOTES",        NOTES,   LEVEL_MAIN },   /* 'User' - Deprecated? */
+	{ "U2", "NOTES",        NOTES,   LEVEL_MAIN },   /* 'User' - Deprecated? */
+	{ "U3", "NOTES",        NOTES,   LEVEL_MAIN },   /* 'User' - Deprecated? */
+	{ "U4", "NOTES",        NOTES,   LEVEL_MAIN },   /* 'User' - Deprecated? */
+	{ "U5", "NOTES",        NOTES,   LEVEL_MAIN },   /* 'User' - Deprecated? */
+	{ "UR", "URL",          SIMPLE,  LEVEL_MAIN },   /* URL */
+	{ "VL", "VOLUME",       SIMPLE,  LEVEL_MAIN },   /* Volume */
+	{ "VO", "VOLUME",       SIMPLE,  LEVEL_MAIN },   /* Deprecated? */
+	{ "Y1", "YEAR",         DATE,    LEVEL_MAIN },   /* Deprecated */
+	{ "Y2", "MONTH",        SIMPLE,  LEVEL_MAIN },   /* Access Date */
+	{ " ",  "RESOURCE|software, multimedia", ALWAYS, LEVEL_MAIN },
+	{ " ",  "GENRE|electronic",              ALWAYS, LEVEL_MAIN },
 };
 
 static lookups pamphlet[] = {
-	{ "AU", "AUTHOR",       PERSON,  LEVEL_MAIN },
-	{ "A1", "AUTHOR",       PERSON,  LEVEL_MAIN },
-	{ "A2", "AUTHOR",       PERSON,  LEVEL_HOST },
-	{ "A3", "AUTHOR",       PERSON,  LEVEL_SERIES }, 
-	{ "ED", "EDITOR",       PERSON,  LEVEL_MAIN },
-	{ "PY", "YEAR",         DATE,    LEVEL_MAIN },
-	{ "Y1", "YEAR",         DATE,    LEVEL_MAIN },
-	{ "Y2", "MONTH",     SIMPLE,  LEVEL_MAIN },
-	{ "SN", "SERIALNUMBER", SERIALNO,LEVEL_MAIN },
-	{ "TI", "TITLE",        TITLE,   LEVEL_MAIN },
-	{ "T1", "TITLE",        TITLE,   LEVEL_MAIN },
-	{ "T2", "SHORTTITLE",   SIMPLE,  LEVEL_HOST },
-	{ "T3", "TITLE",        SIMPLE,  LEVEL_SERIES },
-	{ "JO", "TITLE",        SIMPLE,  LEVEL_HOST }, /* JOURNAL */
-	{ "JA", "TITLE",        SIMPLE,  LEVEL_HOST },
-	{ "JF", "TITLE",        SIMPLE,  LEVEL_HOST },
-	{ "J1", "TITLE",        SIMPLE,  LEVEL_HOST },
-	{ "J2", "TITLE",        SIMPLE,  LEVEL_HOST },
-	{ "VL", "VOLUME",       SIMPLE,  LEVEL_MAIN },
-	{ "VO", "VOLUME",       SIMPLE,  LEVEL_MAIN },
-	{ "IS", "ISSUE",        SIMPLE,  LEVEL_MAIN },
-	{ "CP", "ISSUE",        SIMPLE,  LEVEL_MAIN },
-	{ "SP", "PAGESTART",    SIMPLE,  LEVEL_MAIN },
-	{ "EP", "PAGEEND",      SIMPLE,  LEVEL_MAIN },
-	{ "AB", "ABSTRACT",     SIMPLE,  LEVEL_MAIN },
-	{ "N1", "NOTES",        NOTES,   LEVEL_MAIN },
-	{ "N2", "ABSTRACT",     SIMPLE,  LEVEL_MAIN }, 
-	{ "KW", "KEYWORD",      SIMPLE,  LEVEL_MAIN },
-	{ "PB", "PUBLISHER",    SIMPLE,  LEVEL_MAIN },
-	{ "BT", "TITLE",        SIMPLE,  LEVEL_HOST }, 
-	{ "CT", "ADDRESS",      SIMPLE,  LEVEL_MAIN },
-	{ "AD", "AUTHORADDRESS",SIMPLE,  LEVEL_MAIN },
-	{ "CY", "ADDRESS",      SIMPLE,  LEVEL_MAIN },
-	{ "RP", "REPRINTSTATUS",SIMPLE,  LEVEL_MAIN },
-	{ "UR", "URL",          SIMPLE,  LEVEL_MAIN },
-	{ "L1", "FILEATTACH",   SIMPLE,  LEVEL_MAIN },
-	{ "ID", "REFNUM",       SIMPLE,  LEVEL_MAIN },
-	{ "U1", "NOTES",        NOTES,   LEVEL_MAIN }, /*user defined */
-	{ "U2", "NOTES",        NOTES,   LEVEL_MAIN }, /* put in "notes" */
-	{ "U3", "NOTES",        NOTES,   LEVEL_MAIN },
-	{ "U4", "NOTES",        NOTES,   LEVEL_MAIN },
-	{ "U5", "NOTES",        NOTES,   LEVEL_MAIN },
-	{ "M1", "NOTES",        NOTES,   LEVEL_MAIN }, /*misc */
-	{ "M2", "NOTES",        NOTES,   LEVEL_MAIN }, /* put in "notes" */
-	{ "M3", "NOTES",        NOTES,   LEVEL_MAIN },
-        { " ",  "RESOURCE|text",    ALWAYS, LEVEL_MAIN },
-        { " ",  "GENRE|pamphlet",       ALWAYS, LEVEL_MAIN },
+	{ "A1", "AUTHOR",       PERSON,  LEVEL_MAIN },   /* Deprecated? */
+	{ "A2", "AUTHOR",       PERSON,  LEVEL_HOST },   /* 'Secondary' Author */
+	{ "A3", "EDITOR",       PERSON,  LEVEL_SERIES }, /* 'Tertiary' Author - Series editor */
+	{ "A4", "AUTHOR",       PERSON,  LEVEL_SERIES }, /* 'Subsidiary' Author */
+	{ "AB", "ABSTRACT",     SIMPLE,  LEVEL_MAIN },   /* Abstract */
+	{ "AD", "AUTHORADDRESS",SIMPLE,  LEVEL_MAIN },   /* Author Address */
+	{ "AU", "AUTHOR",       PERSON,  LEVEL_MAIN },   /* Author */
+	{ "BT", "TITLE",        SIMPLE,  LEVEL_MAIN },   /* Book Title - Deprecated? */
+	{ "C1", "NOTES",        NOTES,   LEVEL_MAIN },   /* 'Custom' - put in "notes" */
+	{ "C2", "NOTES",        NOTES,   LEVEL_MAIN },   /* 'Custom' - put in "notes" */
+	{ "C3", "NOTES",        NOTES,   LEVEL_MAIN },   /* 'Custom' - put in "notes" */
+	{ "C4", "NOTES",        NOTES,   LEVEL_MAIN },   /* 'Custom' - put in "notes" */
+	{ "C5", "NOTES",        NOTES,   LEVEL_MAIN },   /* 'Custom' - put in "notes" */
+	{ "C6", "NOTES",        NOTES,   LEVEL_MAIN },   /* 'Custom' - put in "notes" */
+	{ "C7", "NOTES",        NOTES,   LEVEL_MAIN },   /* 'Custom' - put in "notes" */
+	{ "C8", "NOTES",        NOTES,   LEVEL_MAIN },   /* 'Custom' - put in "notes" */
+	{ "CA", "CAPTION",      SIMPLE,  LEVEL_MAIN },   /* Caption */
+	{ "CN", "CALLNUMBER",   SIMPLE,  LEVEL_MAIN },   /* Call Number */
+	{ "CP", "ISSUE",        SIMPLE,  LEVEL_MAIN },   /* Deprecated? */
+	{ "CT", "ADDRESS",      SIMPLE,  LEVEL_MAIN },   /* Deprecated? */
+	{ "CY", "ADDRESS",      SIMPLE,  LEVEL_MAIN },   /* Place Published */
+	{ "DA", "YEAR",         DATE,    LEVEL_MAIN },   /* Date */
+	{ "DB", "DATABASE",     SIMPLE,  LEVEL_MAIN },   /* Database */
+	{ "DI", "DOI",          DOI,     LEVEL_MAIN },   /* Deprecated? */
+	{ "DO", "DOI",          DOI,     LEVEL_MAIN },   /* DOI */
+	{ "DP", "DATABASEPROV", SIMPLE,  LEVEL_MAIN },   /* Database Provider */
+	{ "ED", "EDITOR",       PERSON,  LEVEL_MAIN },   /* Deprecated? */
+	{ "EP", "PAGEEND",      SIMPLE,  LEVEL_MAIN },   /* End Page */
+	{ "ET", "EDITION",      SIMPLE,  LEVEL_MAIN },   /* Edition */
+	{ "ID", "REFNUM",       SIMPLE,  LEVEL_MAIN },   /* Deprecated? */
+	{ "IS", "ISSUE",        SIMPLE,  LEVEL_MAIN },   /* Number */
+	{ "J1", "TITLE",        SIMPLE,  LEVEL_HOST },   /* Deprecated? */
+	{ "J2", "TITLE",        SIMPLE,  LEVEL_HOST },   /* Alternate Title, abbreviated book or journal */
+	{ "JA", "TITLE",        SIMPLE,  LEVEL_HOST },   /* Deprecated? */
+	{ "JF", "TITLE",        SIMPLE,  LEVEL_HOST },   /* Deprecated? */
+	{ "JO", "TITLE",        SIMPLE,  LEVEL_HOST },   /* Deprecated? */
+	{ "KW", "KEYWORD",      SIMPLE,  LEVEL_MAIN },   /* Keywords */
+	{ "L1", "FILEATTACH",   LINKEDFILE,  LEVEL_MAIN },   /* File Attachment (local, not URL) */
+	{ "L4", "FIGATTACH",    LINKEDFILE,  LEVEL_MAIN },   /* Figure Attachment (local, not URL) */
+	{ "LA", "LANGUAGE",     SIMPLE,  LEVEL_MAIN },   /* Language */
+	{ "LB", "LABEL",        SIMPLE,  LEVEL_MAIN },   /* Label */
+	{ "M1", "NOTES",        NOTES,   LEVEL_MAIN },   /* Misc or Deprecated? */
+	{ "M2", "NOTES",        NOTES,   LEVEL_MAIN },   /* Misc or Deprecated? */
+	{ "M3", "NOTES",        NOTES,   LEVEL_MAIN },   /* Misc or Type of Work? */
+	{ "N1", "NOTES",        NOTES,   LEVEL_MAIN },   /* Notes */
+	{ "N2", "ABSTRACT",     SIMPLE,  LEVEL_MAIN },   /* Deprecated? */
+	{ "NV", "NUMVOLUMES",   SIMPLE,  LEVEL_MAIN },   /* Number of Volumes */
+	{ "OP", "ORIGPUB",      SIMPLE,  LEVEL_MAIN },   /* Original Publication */
+	{ "PB", "PUBLISHER",    SIMPLE,  LEVEL_MAIN },   /* Publisher */
+	{ "PY", "YEAR",         DATE,    LEVEL_MAIN },   /* Year */
+	{ "RI", "REVIEWEDITEM", SIMPLE,  LEVEL_MAIN },   /* Reviewed Item */
+	{ "RN", "NOTES",        SIMPLE,  LEVEL_MAIN },   /* Research Notes */
+	{ "RP", "REPRINTSTATUS",SIMPLE,  LEVEL_MAIN },   /* Reprint Edition */
+	{ "SE", "SECTION",      SIMPLE,  LEVEL_MAIN },   /* Section */
+	{ "SN", "SERIALNUMBER", SERIALNO,LEVEL_MAIN },   /* ISBN/ISSN */
+	{ "SP", "PAGESTART",    SIMPLE,  LEVEL_MAIN },   /* Start Page */
+	{ "ST", "SHORTTITLE",   SIMPLE,  LEVEL_MAIN },   /* Short Title */
+	{ "T1", "TITLE",        TITLE,   LEVEL_MAIN },   /* Deprecated? */
+	{ "T2", "SHORTTITLE",   SIMPLE,  LEVEL_HOST },   /* 'Secondary' Title */
+	{ "T3", "TITLE",        SIMPLE,  LEVEL_SERIES }, /* 'Tertiary' Title */
+	{ "TI", "TITLE",        TITLE,   LEVEL_MAIN },   /* Title */
+	{ "TT", "TRANSTITLE",   TITLE,   LEVEL_MAIN },   /* Translated Title */
+	{ "U1", "NOTES",        NOTES,   LEVEL_MAIN },   /* 'User' - Deprecated? */
+	{ "U2", "NOTES",        NOTES,   LEVEL_MAIN },   /* 'User' - Deprecated? */
+	{ "U3", "NOTES",        NOTES,   LEVEL_MAIN },   /* 'User' - Deprecated? */
+	{ "U4", "NOTES",        NOTES,   LEVEL_MAIN },   /* 'User' - Deprecated? */
+	{ "U5", "NOTES",        NOTES,   LEVEL_MAIN },   /* 'User' - Deprecated? */
+	{ "UR", "URL",          SIMPLE,  LEVEL_MAIN },   /* URL */
+	{ "VL", "VOLUME",       SIMPLE,  LEVEL_MAIN },   /* Volume */
+	{ "VO", "VOLUME",       SIMPLE,  LEVEL_MAIN },   /* Deprecated? */
+	{ "Y1", "YEAR",         DATE,    LEVEL_MAIN },   /* Deprecated */
+	{ "Y2", "MONTH",        SIMPLE,  LEVEL_MAIN },   /* Access Date */
+	{ " ",  "RESOURCE|text",  ALWAYS, LEVEL_MAIN },
+	{ " ",  "GENRE|pamphlet", ALWAYS, LEVEL_MAIN },
+};
+
+static lookups map[] = {
+	{ "A1", "AUTHOR",       PERSON,  LEVEL_MAIN },   /* Deprecated? */
+	{ "A2", "AUTHOR",       PERSON,  LEVEL_HOST },   /* 'Secondary' Author */
+	{ "A3", "EDITOR",       PERSON,  LEVEL_SERIES }, /* 'Tertiary' Author - Series editor */
+	{ "A4", "AUTHOR",       PERSON,  LEVEL_SERIES }, /* 'Subsidiary' Author */
+	{ "AB", "ABSTRACT",     SIMPLE,  LEVEL_MAIN },   /* Abstract */
+	{ "AD", "AUTHORADDRESS",SIMPLE,  LEVEL_MAIN },   /* Author Address */
+	{ "AU", "AUTHOR",       PERSON,  LEVEL_MAIN },   /* Author */
+	{ "BT", "TITLE",        SIMPLE,  LEVEL_HOST },   /* Deprecated? */
+	{ "C1", "NOTES",        NOTES,   LEVEL_MAIN },   /* 'Custom' - put in "notes" */
+	{ "C2", "NOTES",        NOTES,   LEVEL_MAIN },   /* 'Custom' - put in "notes" */
+	{ "C3", "NOTES",        NOTES,   LEVEL_MAIN },   /* 'Custom' - put in "notes" */
+	{ "C4", "NOTES",        NOTES,   LEVEL_MAIN },   /* 'Custom' - put in "notes" */
+	{ "C5", "NOTES",        NOTES,   LEVEL_MAIN },   /* 'Custom' - put in "notes" */
+	{ "C6", "NOTES",        NOTES,   LEVEL_MAIN },   /* 'Custom' - put in "notes" */
+	{ "C7", "NOTES",        NOTES,   LEVEL_MAIN },   /* 'Custom' - put in "notes" */
+	{ "C8", "NOTES",        NOTES,   LEVEL_MAIN },   /* 'Custom' - put in "notes" */
+	{ "CA", "CAPTION",      SIMPLE,  LEVEL_MAIN },   /* Caption */
+	{ "CN", "CALLNUMBER",   SIMPLE,  LEVEL_MAIN },   /* Call Number */
+	{ "CP", "ISSUE",        SIMPLE,  LEVEL_MAIN },   /* Deprecated? */
+	{ "CT", "ADDRESS",      SIMPLE,  LEVEL_MAIN },   /* Deprecated? */
+	{ "CY", "ADDRESS",      SIMPLE,  LEVEL_MAIN },   /* Place Published */
+	{ "DA", "YEAR",         DATE,    LEVEL_MAIN },   /* Date */
+	{ "DB", "DATABASE",     SIMPLE,  LEVEL_MAIN },   /* Name of Database */
+	{ "DI", "DOI",          DOI,     LEVEL_MAIN },   /* Deprecated? */
+	{ "DO", "DOI",          DOI,     LEVEL_MAIN },   /* DOI */
+	{ "DP", "DATABASEPROV", SIMPLE,  LEVEL_MAIN },   /* Database Provider */
+	{ "ED", "EDITOR",       PERSON,  LEVEL_MAIN },   /* Deprecated? */
+	{ "EP", "PAGEEND",      SIMPLE,  LEVEL_MAIN },   /* End Page */
+	{ "ET", "EDITION",      SIMPLE,  LEVEL_MAIN },   /* Edition */
+	{ "ID", "REFNUM",       SIMPLE,  LEVEL_MAIN },   /* Deprecated? */
+	{ "IS", "ISSUE",        SIMPLE,  LEVEL_MAIN },   /* Number */
+	{ "JA", "TITLE",        SIMPLE,  LEVEL_HOST },   /* Deprecated? */
+	{ "J1", "TITLE",        SIMPLE,  LEVEL_HOST },   /* Deprecated? */
+	{ "J2", "TITLE",        SIMPLE,  LEVEL_HOST },   /* Alternate Title, abbreviated book or journal */
+	{ "JF", "TITLE",        SIMPLE,  LEVEL_HOST },   /* Deprecated? */
+	{ "JO", "TITLE",        SIMPLE,  LEVEL_HOST },   /* Deprecated? */
+	{ "KW", "KEYWORD",      SIMPLE,  LEVEL_MAIN },   /* Keywords */
+	{ "L1", "FILEATTACH",   LINKEDFILE, LEVEL_MAIN },   /* File Attachments (local, not URL) */
+	{ "L4", "FIGATTACH",    LINKEDFILE,  LEVEL_MAIN },   /* Figure Attachment (local, not URL) */
+	{ "LA", "LANGUAGE",     SIMPLE,  LEVEL_MAIN },   /* Language */
+	{ "LB", "LABEL",        SIMPLE,  LEVEL_MAIN },   /* Label */
+	{ "M1", "NOTES",        NOTES,   LEVEL_MAIN },   /* Misc or Number? */
+	{ "M2", "NOTES",        NOTES,   LEVEL_MAIN },   /* Misc or Deprecated? */
+	{ "M3", "NOTES",        NOTES,   LEVEL_MAIN },   /* Misc or Type of Work? */
+	{ "N1", "NOTES",        NOTES,   LEVEL_MAIN },   /* Notes */
+	{ "N2", "ABSTRACT",     SIMPLE,  LEVEL_MAIN },   /* Deprecated? */
+	{ "NV", "NUMVOLUMES",   SIMPLE,  LEVEL_MAIN },   /* Number of Volumes */
+	{ "OP", "ORIGPUB",      SIMPLE,  LEVEL_MAIN },   /* Original Publication */
+	{ "PB", "PUBLISHER",    SIMPLE,  LEVEL_MAIN },   /* Publisher */
+	{ "PY", "YEAR",         DATE,    LEVEL_MAIN },   /* Year */
+	{ "RI", "REVIEWEDITEM", SIMPLE,  LEVEL_MAIN },   /* Reviewed Item */
+	{ "RN", "NOTES",        SIMPLE,  LEVEL_MAIN },   /* Resarch Notes -> Notes */
+	{ "RP", "REPRINTSTATUS",SIMPLE,  LEVEL_MAIN },   /* Reprint Edition */
+	{ "SE", "SECTION",      SIMPLE,  LEVEL_MAIN },   /* Section */
+	{ "SN", "SERIALNUMBER", SERIALNO,LEVEL_MAIN },   /* ISBN/ISSN */
+	{ "SP", "PAGESTART",    SIMPLE,  LEVEL_MAIN },   /* Start Page */
+	{ "ST", "SHORTTITLE",   SIMPLE,  LEVEL_MAIN },   /* Short Title */
+	{ "T1", "TITLE",        TITLE,   LEVEL_MAIN },   /* Deprecated? */
+	{ "T2", "SHORTTITLE",   SIMPLE,  LEVEL_HOST },   /* 'Secondary' Title */
+	{ "T3", "TITLE",        SIMPLE,  LEVEL_SERIES }, /* 'Tertiary' Title */
+	{ "TI", "TITLE",        TITLE,   LEVEL_MAIN },   /* Title */
+	{ "TT", "TRANSTITLE",   TITLE,   LEVEL_MAIN },   /* Translated Title */
+	{ "U1", "NOTES",        NOTES,   LEVEL_MAIN },   /* 'User' - Deprecated? */
+	{ "U2", "NOTES",        NOTES,   LEVEL_MAIN },   /* 'User' - Deprecated? */
+	{ "U3", "NOTES",        NOTES,   LEVEL_MAIN },   /* 'User' - Deprecated? */
+	{ "U4", "NOTES",        NOTES,   LEVEL_MAIN },   /* 'User' - Deprecated? */
+	{ "U5", "NOTES",        NOTES,   LEVEL_MAIN },   /* 'User' - Deprecated? */
+	{ "UR", "URL",          SIMPLE,  LEVEL_MAIN },   /* URL */
+	{ "VL", "VOLUME",       SIMPLE,  LEVEL_MAIN },   /* Volume */
+	{ "VO", "VOLUME",       SIMPLE,  LEVEL_MAIN },   /* Deprecated? */
+	{ "Y1", "YEAR",         DATE,    LEVEL_MAIN },   /* Deprecated? */
+	{ "Y2", "MONTH",        SIMPLE,  LEVEL_MAIN },   /* Access Date */
+	{ " ",  "RESOURCE|cartographic",   ALWAYS, LEVEL_MAIN },
+	{ " ",  "GENRE|map",               ALWAYS, LEVEL_MAIN }
 };
 
 static lookups unpublished[] = {
-	{ "AU", "AUTHOR",       PERSON,  LEVEL_MAIN },
-	{ "A1", "AUTHOR",       PERSON,  LEVEL_MAIN },
-	{ "A2", "AUTHOR",       PERSON,  LEVEL_HOST },
-	{ "A3", "AUTHOR",       PERSON,  LEVEL_SERIES }, 
-	{ "ED", "EDITOR",       PERSON,  LEVEL_MAIN },
-	{ "PY", "YEAR",         DATE,    LEVEL_MAIN },
-	{ "Y1", "YEAR",         DATE,    LEVEL_MAIN },
-	{ "Y2", "MONTH",     SIMPLE,  LEVEL_MAIN },
-	{ "SN", "SERIALNUMBER", SERIALNO,LEVEL_MAIN },
-	{ "TI", "TITLE",        TITLE,   LEVEL_MAIN },
-	{ "T1", "TITLE",        TITLE,   LEVEL_MAIN },
-	{ "T2", "SHORTTITLE",   SIMPLE,  LEVEL_HOST },
-	{ "T3", "TITLE",        SIMPLE,  LEVEL_SERIES },
-	{ "JO", "TITLE",        SIMPLE,  LEVEL_HOST }, /* JOURNAL */
-	{ "JA", "TITLE",        SIMPLE,  LEVEL_HOST },
-	{ "JF", "TITLE",        SIMPLE,  LEVEL_HOST },
-	{ "J1", "TITLE",        SIMPLE,  LEVEL_HOST },
-	{ "J2", "TITLE",        SIMPLE,  LEVEL_HOST },
-	{ "VL", "VOLUME",       SIMPLE,  LEVEL_MAIN },
-	{ "VO", "VOLUME",       SIMPLE,  LEVEL_MAIN },
-	{ "IS", "ISSUE",        SIMPLE,  LEVEL_MAIN },
-	{ "CP", "ISSUE",        SIMPLE,  LEVEL_MAIN },
-	{ "SP", "PAGESTART",    SIMPLE,  LEVEL_MAIN },
-	{ "EP", "PAGEEND",      SIMPLE,  LEVEL_MAIN },
-	{ "AB", "ABSTRACT",     SIMPLE,  LEVEL_MAIN },
-	{ "N1", "NOTES",        NOTES,   LEVEL_MAIN },
-	{ "N2", "ABSTRACT",     SIMPLE,  LEVEL_MAIN }, 
-	{ "KW", "KEYWORD",      SIMPLE,  LEVEL_MAIN },
-	{ "PB", "PUBLISHER",    SIMPLE,  LEVEL_MAIN },
-	{ "BT", "TITLE",        SIMPLE,  LEVEL_HOST }, 
-	{ "CT", "ADDRESS",      SIMPLE,  LEVEL_MAIN },
-	{ "AD", "AUTHORADDRESS",SIMPLE,  LEVEL_MAIN },
-	{ "CY", "ADDRESS",      SIMPLE,  LEVEL_MAIN },
-	{ "RP", "REPRINTSTATUS",SIMPLE,  LEVEL_MAIN },
-	{ "UR", "URL",          SIMPLE,  LEVEL_MAIN },
-	{ "L1", "FILEATTACH",   SIMPLE,  LEVEL_MAIN },
-	{ "ID", "REFNUM",       SIMPLE,  LEVEL_MAIN },
-	{ "U1", "NOTES",        NOTES,   LEVEL_MAIN }, /*user defined */
-	{ "U2", "NOTES",        NOTES,   LEVEL_MAIN }, /* put in "notes" */
-	{ "U3", "NOTES",        NOTES,   LEVEL_MAIN },
-	{ "U4", "NOTES",        NOTES,   LEVEL_MAIN },
-	{ "U5", "NOTES",        NOTES,   LEVEL_MAIN },
-	{ "M1", "NOTES",        NOTES,   LEVEL_MAIN }, /*misc */
-	{ "M2", "NOTES",        NOTES,   LEVEL_MAIN }, /* put in "notes" */
-	{ "M3", "NOTES",        NOTES,   LEVEL_MAIN },
-        { " ",         "RESOURCE|text",   ALWAYS, LEVEL_MAIN },
-        { " ",         "GENRE|unpublished",      ALWAYS, LEVEL_MAIN }
+	{ "A1", "AUTHOR",       PERSON,  LEVEL_MAIN },   /* Deprecated? */
+	{ "A2", "AUTHOR",       PERSON,  LEVEL_HOST },   /* 'Secondary' Author */
+	{ "A3", "EDITOR",       PERSON,  LEVEL_SERIES }, /* 'Tertiary' Author - Series editor */
+	{ "A4", "AUTHOR",       PERSON,  LEVEL_SERIES }, /* 'Subsidiary' Author */
+	{ "AB", "ABSTRACT",     SIMPLE,  LEVEL_MAIN },   /* Abstract */
+	{ "AD", "AUTHORADDRESS",SIMPLE,  LEVEL_MAIN },   /* Author Address */
+	{ "AU", "AUTHOR",       PERSON,  LEVEL_MAIN },   /* Author */
+	{ "BT", "TITLE",        SIMPLE,  LEVEL_MAIN },   /* Book Title - Deprecated? */
+	{ "C1", "NOTES",        NOTES,   LEVEL_MAIN },   /* 'Custom' - put in "notes" */
+	{ "C2", "NOTES",        NOTES,   LEVEL_MAIN },   /* 'Custom' - put in "notes" */
+	{ "C3", "NOTES",        NOTES,   LEVEL_MAIN },   /* 'Custom' - put in "notes" */
+	{ "C4", "NOTES",        NOTES,   LEVEL_MAIN },   /* 'Custom' - put in "notes" */
+	{ "C5", "NOTES",        NOTES,   LEVEL_MAIN },   /* 'Custom' - put in "notes" */
+	{ "C6", "NOTES",        NOTES,   LEVEL_MAIN },   /* 'Custom' - put in "notes" */
+	{ "C7", "NOTES",        NOTES,   LEVEL_MAIN },   /* 'Custom' - put in "notes" */
+	{ "C8", "NOTES",        NOTES,   LEVEL_MAIN },   /* 'Custom' - put in "notes" */
+	{ "CA", "CAPTION",      SIMPLE,  LEVEL_MAIN },   /* Caption */
+	{ "CN", "CALLNUMBER",   SIMPLE,  LEVEL_MAIN },   /* Call Number */
+	{ "CP", "ISSUE",        SIMPLE,  LEVEL_MAIN },   /* Deprecated? */
+	{ "CT", "ADDRESS",      SIMPLE,  LEVEL_MAIN },   /* Deprecated? */
+	{ "CY", "ADDRESS",      SIMPLE,  LEVEL_MAIN },   /* Place Published */
+	{ "DA", "YEAR",         DATE,    LEVEL_MAIN },   /* Date */
+	{ "DB", "DATABASE",     SIMPLE,  LEVEL_MAIN },   /* Database */
+	{ "DI", "DOI",          DOI,     LEVEL_MAIN },   /* Deprecated? */
+	{ "DO", "DOI",          DOI,     LEVEL_MAIN },   /* DOI */
+	{ "DP", "DATABASEPROV", SIMPLE,  LEVEL_MAIN },   /* Database Provider */
+	{ "ED", "EDITOR",       PERSON,  LEVEL_MAIN },   /* Deprecated? */
+	{ "EP", "PAGEEND",      SIMPLE,  LEVEL_MAIN },   /* End Page */
+	{ "ET", "EDITION",      SIMPLE,  LEVEL_MAIN },   /* Edition */
+	{ "ID", "REFNUM",       SIMPLE,  LEVEL_MAIN },   /* Deprecated? */
+	{ "IS", "ISSUE",        SIMPLE,  LEVEL_MAIN },   /* Number */
+	{ "J1", "TITLE",        SIMPLE,  LEVEL_HOST },   /* Deprecated? */
+	{ "J2", "TITLE",        SIMPLE,  LEVEL_HOST },   /* Alternate Title, abbreviated book or journal */
+	{ "JA", "TITLE",        SIMPLE,  LEVEL_HOST },   /* Deprecated? */
+	{ "JF", "TITLE",        SIMPLE,  LEVEL_HOST },   /* Deprecated? */
+	{ "JO", "TITLE",        SIMPLE,  LEVEL_HOST },   /* Deprecated? */
+	{ "KW", "KEYWORD",      SIMPLE,  LEVEL_MAIN },   /* Keywords */
+	{ "L1", "FILEATTACH",   LINKEDFILE,  LEVEL_MAIN },   /* File Attachment (local, not URL) */
+	{ "L4", "FIGATTACH",    LINKEDFILE,  LEVEL_MAIN },   /* Figure Attachment (local, not URL) */
+	{ "LA", "LANGUAGE",     SIMPLE,  LEVEL_MAIN },   /* Language */
+	{ "LB", "LABEL",        SIMPLE,  LEVEL_MAIN },   /* Label */
+	{ "M1", "NOTES",        NOTES,   LEVEL_MAIN },   /* Misc or Deprecated? */
+	{ "M2", "NOTES",        NOTES,   LEVEL_MAIN },   /* Misc or Deprecated? */
+	{ "M3", "NOTES",        NOTES,   LEVEL_MAIN },   /* Misc or Type of Work? */
+	{ "N1", "NOTES",        NOTES,   LEVEL_MAIN },   /* Notes */
+	{ "N2", "ABSTRACT",     SIMPLE,  LEVEL_MAIN },   /* Deprecated? */
+	{ "NV", "NUMVOLUMES",   SIMPLE,  LEVEL_MAIN },   /* Number of Volumes */
+	{ "OP", "ORIGPUB",      SIMPLE,  LEVEL_MAIN },   /* Original Publication */
+	{ "PB", "PUBLISHER",    SIMPLE,  LEVEL_MAIN },   /* Publisher */
+	{ "PY", "YEAR",         DATE,    LEVEL_MAIN },   /* Year */
+	{ "RI", "REVIEWEDITEM", SIMPLE,  LEVEL_MAIN },   /* Reviewed Item */
+	{ "RN", "NOTES",        SIMPLE,  LEVEL_MAIN },   /* Research Notes */
+	{ "RP", "REPRINTSTATUS",SIMPLE,  LEVEL_MAIN },   /* Reprint Edition */
+	{ "SE", "SECTION",      SIMPLE,  LEVEL_MAIN },   /* Section */
+	{ "SN", "SERIALNUMBER", SERIALNO,LEVEL_MAIN },   /* ISBN/ISSN */
+	{ "SP", "PAGESTART",    SIMPLE,  LEVEL_MAIN },   /* Start Page */
+	{ "ST", "SHORTTITLE",   SIMPLE,  LEVEL_MAIN },   /* Short Title */
+	{ "T1", "TITLE",        TITLE,   LEVEL_MAIN },   /* Deprecated? */
+	{ "T2", "SHORTTITLE",   SIMPLE,  LEVEL_HOST },   /* 'Secondary' Title */
+	{ "T3", "TITLE",        SIMPLE,  LEVEL_SERIES }, /* 'Tertiary' Title */
+	{ "TI", "TITLE",        TITLE,   LEVEL_MAIN },   /* Title */
+	{ "TT", "TRANSTITLE",   TITLE,   LEVEL_MAIN },   /* Translated Title */
+	{ "U1", "NOTES",        NOTES,   LEVEL_MAIN },   /* 'User' - Deprecated? */
+	{ "U2", "NOTES",        NOTES,   LEVEL_MAIN },   /* 'User' - Deprecated? */
+	{ "U3", "NOTES",        NOTES,   LEVEL_MAIN },   /* 'User' - Deprecated? */
+	{ "U4", "NOTES",        NOTES,   LEVEL_MAIN },   /* 'User' - Deprecated? */
+	{ "U5", "NOTES",        NOTES,   LEVEL_MAIN },   /* 'User' - Deprecated? */
+	{ "UR", "URL",          SIMPLE,  LEVEL_MAIN },   /* URL */
+	{ "VL", "VOLUME",       SIMPLE,  LEVEL_MAIN },   /* Volume */
+	{ "VO", "VOLUME",       SIMPLE,  LEVEL_MAIN },   /* Deprecated? */
+	{ "Y1", "YEAR",         DATE,    LEVEL_MAIN },   /* Deprecated */
+	{ "Y2", "MONTH",        SIMPLE,  LEVEL_MAIN },   /* Access Date */
+	{ " ",         "RESOURCE|text",   ALWAYS, LEVEL_MAIN },
+	{ " ",         "GENRE|unpublished",      ALWAYS, LEVEL_MAIN }
 };
 
 #define ORIG(a) ( &(a[0]) )
@@ -996,6 +1586,7 @@ variants ris_all[] = {
 	REFTYPE( "ABST", abstract ),
 	REFTYPE( "COMP", program ),
 	REFTYPE( "PAT", patent ),
+	REFTYPE( "MAP", map ),
 	REFTYPE( "UNPB", unpublished ),
 };
 
diff --git a/lib/rules.h b/lib/rules.h
deleted file mode 100644
index ecdfa36..0000000
--- a/lib/rules.h
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
- * rules.h
- *
- * Copyright (c) Chris Putnam 2005-2010
- *
- * Source code released under the GPL
- *
- */
-#include <stdio.h>
-#include <stdlib.h>
-#include "bibutils.h"
-
-/* internal includes */
-#include "reftypes.h"
-#include "bibtexin.h"
-#include "biblatexin.h"
-#include "bibtexout.h"
-#include "copacin.h"
-#include "endin.h"
-#include "endxmlin.h"
-#include "endout.h"
-#include "isiin.h"
-#include "isiout.h"
-#include "medin.h"
-#include "modsin.h"
-#include "risin.h"
-#include "wordin.h"
-#include "risout.h"
-#include "modsout.h"
-#include "wordout.h"
-#include "adsout.h"
-#include "newstr_conv.h"
-#include "is_ws.h"
-
-#include "ebiin.h"
-
-typedef struct convert_rules {
-	int  (*readf)(FILE*,char*,int,int*,newstr*,newstr*,int*);
-	int  (*processf)(fields*,char*,char*,long);
-	void (*cleanf)(bibl*,param*);
-	int  (*typef) (fields*,char*,int,param*,variants*,int);
-	void (*convertf)(fields*,fields*,int,param*,variants*,int);
-	void (*headerf)(FILE*,param*);
-	void (*footerf)(FILE*);
-	void (*writef)(fields*,FILE*,param*,unsigned long);
-	variants *all;
-	int  nall;
-} convert_rules;
-
diff --git a/lib/serialno.c b/lib/serialno.c
index 98578ba..f89258e 100644
--- a/lib/serialno.c
+++ b/lib/serialno.c
@@ -1,15 +1,15 @@
 /*
  * serialno.c
  *
- * Copyright (c) Chris Putnam 2005-2010
+ * Copyright (c) Chris Putnam 2005-2013
  *
- * Source code released under the GPL
+ * Source code released under the GPL version 2
  *
  */
 #include <string.h>
 #include "serialno.h"
 
-void
+int
 addsn( fields *info, char *buf, int level )
 {
 	int ndigits=0, issn=0, isbn=0;
@@ -30,7 +30,7 @@ addsn( fields *info, char *buf, int level )
 		else if ( ndigits==10 || ndigits==13 ) isbn = 1;
 	}
 	
-	if ( issn ) fields_add( info, "ISSN", buf, level );
-	else if ( isbn ) fields_add( info, "ISBN", buf, level );
-	else fields_add( info, "SERIALNUMBER", buf, level );
+	if ( issn ) return fields_add( info, "ISSN", buf, level );
+	else if ( isbn ) return fields_add( info, "ISBN", buf, level );
+	else return fields_add( info, "SERIALNUMBER", buf, level );
 }
diff --git a/lib/serialno.h b/lib/serialno.h
index 929bf07..2a83c12 100644
--- a/lib/serialno.h
+++ b/lib/serialno.h
@@ -1,9 +1,9 @@
 /*
  * serialno.h
  *
- * Copyright (c) Chris Putnam 2005-2009
+ * Copyright (c) Chris Putnam 2005-2013
  *
- * Source code released under the GPL
+ * Source code released under the GPL version 2
  *
  */
 #ifndef SERIALNO_H
@@ -11,6 +11,6 @@
 #include <stdio.h>
 #include "fields.h"
 
-extern void addsn( fields *info, char *buf, int level );
+extern int addsn( fields *info, char *buf, int level );
 
 #endif
diff --git a/lib/strsearch.c b/lib/strsearch.c
index e1c0ef9..b662005 100644
--- a/lib/strsearch.c
+++ b/lib/strsearch.c
@@ -1,8 +1,8 @@
 /* strsearch.c
  *
- * Copyright (c) Chris Putnam 1995-2010
+ * Copyright (c) Chris Putnam 1995-2013
  *
- * Source code released under the GPL
+ * Source code released under the GPL version 2
  *
  * strsearch() locates a case-independent substring
  *    e.g. a case-independent version of strstr()
@@ -14,8 +14,8 @@
  *
  * strsearch returns haystack when needle is empty as per strstr()
  * conventions
+ *
  */
-
 #include <stdio.h>
 #include <ctype.h>
 #include "strsearch.h"
@@ -28,7 +28,7 @@ char *strsearch (const char *haystack, const char *needle)
 	if ( !(*needle) ) returnptr = (char *) haystack;
 
 	while (*(haystack+pos) && returnptr==NULL) {
-		if ( toupper(*(haystack+pos)) == toupper(*(needle+pos)) )
+		if ( toupper((unsigned char)*(haystack+pos)) == toupper((unsigned char)*(needle+pos)) )
 			pos++;
 		else {
 			pos = 0;
diff --git a/lib/strsearch.h b/lib/strsearch.h
index 97b47d1..3ce5c45 100644
--- a/lib/strsearch.h
+++ b/lib/strsearch.h
@@ -1,12 +1,11 @@
 /*
  * strsearch.h
  *
- * Copyright (c) Chris Putnam 1995-2009
+ * Copyright (c) Chris Putnam 1995-2013
  *
- * Source code released under the GPL
+ * Source code released under the GPL version 2
  *
  */
-
 #ifndef STRSEARCH_H
 #define STRSEARCH_H
 
diff --git a/lib/title.c b/lib/title.c
index c48c09f..a4fa127 100644
--- a/lib/title.c
+++ b/lib/title.c
@@ -3,9 +3,9 @@
  *
  * process titles into title/subtitle pairs for MODS
  *
- * Copyright (c) Chris Putnam 2004-2010
+ * Copyright (c) Chris Putnam 2004-2013
  *
- * Source code released under the GPL
+ * Source code released under the GPL version 2
  *
  */
 #include <stdio.h>
@@ -16,12 +16,14 @@
 #include "title.h"
 #include "is_ws.h"
 
-void
+int
 title_process( fields *info, char *tag, char *data, int level, 
-						unsigned char nosplittitle )
+	unsigned char nosplittitle )
 {
 	newstr title, subtitle;
 	char *p, *q;
+	int ok;
+
 	newstr_init( &title );
 	newstr_init( &subtitle );
 
@@ -42,17 +44,25 @@ title_process( fields *info, char *tag, char *data, int level,
 	}
 
 	if ( strncasecmp( "SHORT", tag, 5 ) ) {
-		if ( title.len>0 ) 
-			fields_add( info, "TITLE", title.data, level );
-		if ( subtitle.len>0 ) 
-			fields_add( info, "SUBTITLE", subtitle.data, level );
+		if ( title.len>0 ) {
+			ok = fields_add( info, "TITLE", title.data, level );
+			if ( !ok ) return 0;
+		}
+		if ( subtitle.len>0 ) {
+			ok = fields_add( info, "SUBTITLE", subtitle.data, level );
+			if ( !ok ) return 0;
+		}
 	} else {
-		if ( title.len>0 )
-			fields_add( info, "SHORTTITLE", title.data, level );
+		if ( title.len>0 ) {
+			ok = fields_add( info, "SHORTTITLE", title.data, level );
+			if ( !ok ) return 0;
+		}
 		/* no SHORT-SUBTITLE! */
 	}
 
 	newstr_free( &subtitle );
 	newstr_free( &title );
+
+	return 1;
 }
 
diff --git a/lib/title.h b/lib/title.h
index 24f0a63..9f22a5a 100644
--- a/lib/title.h
+++ b/lib/title.h
@@ -3,9 +3,9 @@
  *
  * process titles into title/subtitle pairs for MODS
  *
- * Copyright (c) Chris Putnam 2004-2009
+ * Copyright (c) Chris Putnam 2004-2013
  *
- * Source code released under the GPL
+ * Source code released under the GPL verison 2
  *
  */
 #ifndef TITLE_H
@@ -14,7 +14,7 @@
 #include "newstr.h"
 #include "fields.h"
 
-extern void title_process( fields *info, char *tag, char *data, int level,
+extern int title_process( fields *info, char *tag, char *data, int level,
 		unsigned char nosplittitle );
 
 #endif
diff --git a/lib/tmp1 b/lib/tmp1
deleted file mode 100644
index 5558268..0000000
--- a/lib/tmp1
+++ /dev/null
@@ -1,17 +0,0 @@
-void
-modsout_initparams( param *p, int readmode, int writemode, char *progname )
-{
-	p->writeformat      = BIBL_BIBTEXOUT;
-	p->format_opts      = 0;
-	p->charsetout       = BIBL_CHARSET_UNICODE;
-	p->charsetout_src   = BIBL_SRC_DEFAULT;
-	p->latexout         = 0;
-	p->utf8out          = 1;
-	p->utf8bom          = 1;
-	p->xmlout           = 1;
-	p->nosplittitle     = 0;
-	p->verbose          = 0;
-	p->addcount         = 0;
-	p->singlerefperfile = 0;
-	p->output_raw       = 0;	/* keep MODS tags for output filter */
-}
diff --git a/lib/unicode.c b/lib/unicode.c
new file mode 100644
index 0000000..664f46f
--- /dev/null
+++ b/lib/unicode.c
@@ -0,0 +1,333 @@
+/*
+ * unicode.c
+ *
+ * Helper unicode functions/values to determine the
+ * types of unicode characters.
+ */
+#include "utf8.h"
+#include "unicode.h"
+
+typedef struct {
+	unsigned int value;
+	unsigned short info;
+} unicodeinfo_t;
+
+static unicodeinfo_t unicodeinfo[] = {
+	{  48, UNICODE_NUMBER }, /* 0 */
+	{  49, UNICODE_NUMBER }, /* 1 */
+	{  50, UNICODE_NUMBER }, /* 2 */
+	{  51, UNICODE_NUMBER }, /* 3 */
+	{  52, UNICODE_NUMBER }, /* 4 */
+	{  53, UNICODE_NUMBER }, /* 5 */
+	{  54, UNICODE_NUMBER }, /* 6 */
+	{  55, UNICODE_NUMBER }, /* 7 */
+	{  56, UNICODE_NUMBER }, /* 8 */
+	{  57, UNICODE_NUMBER }, /* 9 */
+	{  65, UNICODE_UPPER }, /* Latin Capital A */
+	{  66, UNICODE_UPPER }, /* Latin Capital B */
+	{  67, UNICODE_UPPER }, /* Latin Capital C */
+	{  68, UNICODE_UPPER }, /* Latin Capital D */
+	{  69, UNICODE_UPPER }, /* Latin Capital E */
+	{  70, UNICODE_UPPER }, /* Latin Capital F */
+	{  71, UNICODE_UPPER }, /* Latin Capital G */
+	{  72, UNICODE_UPPER }, /* Latin Capital H */
+	{  73, UNICODE_UPPER }, /* Latin Capital I */
+	{  74, UNICODE_UPPER }, /* Latin Capital J */
+	{  75, UNICODE_UPPER }, /* Latin Capital K */
+	{  76, UNICODE_UPPER }, /* Latin Capital L */
+	{  77, UNICODE_UPPER }, /* Latin Capital M */
+	{  78, UNICODE_UPPER }, /* Latin Capital N */
+	{  79, UNICODE_UPPER }, /* Latin Capital O */
+	{  80, UNICODE_UPPER }, /* Latin Capital P */
+	{  81, UNICODE_UPPER }, /* Latin Capital Q */
+	{  82, UNICODE_UPPER }, /* Latin Capital R */
+	{  83, UNICODE_UPPER }, /* Latin Capital S */
+	{  84, UNICODE_UPPER }, /* Latin Capital T */
+	{  85, UNICODE_UPPER }, /* Latin Capital U */
+	{  86, UNICODE_UPPER }, /* Latin Capital V */
+	{  87, UNICODE_UPPER }, /* Latin Capital W */
+	{  88, UNICODE_UPPER }, /* Latin Capital X */
+	{  89, UNICODE_UPPER }, /* Latin Capital Y */
+	{  90, UNICODE_UPPER }, /* Latin Capital Z */
+	{  97, UNICODE_LOWER }, /* Latin Small   a */
+	{  98, UNICODE_LOWER }, /* Latin Small   b */
+	{  99, UNICODE_LOWER }, /* Latin Small   c */
+	{ 100, UNICODE_LOWER }, /* Latin Small   d */
+	{ 101, UNICODE_LOWER }, /* Latin Small   e */
+	{ 102, UNICODE_LOWER }, /* Latin Small   f */
+	{ 103, UNICODE_LOWER }, /* Latin Small   g */
+	{ 104, UNICODE_LOWER }, /* Latin Small   h */
+	{ 105, UNICODE_LOWER }, /* Latin Small   i */
+	{ 106, UNICODE_LOWER }, /* Latin Small   j */
+	{ 107, UNICODE_LOWER }, /* Latin Small   k */
+	{ 108, UNICODE_LOWER }, /* Latin Small   l */
+	{ 109, UNICODE_LOWER }, /* Latin Small   m */
+	{ 110, UNICODE_LOWER }, /* Latin Small   n */
+	{ 111, UNICODE_LOWER }, /* Latin Small   o */
+	{ 112, UNICODE_LOWER }, /* Latin Small   p */
+	{ 113, UNICODE_LOWER }, /* Latin Small   q */
+	{ 114, UNICODE_LOWER }, /* Latin Small   r */
+	{ 115, UNICODE_LOWER }, /* Latin Small   s */
+	{ 116, UNICODE_LOWER }, /* Latin Small   t */
+	{ 117, UNICODE_LOWER }, /* Latin Small   u */
+	{ 118, UNICODE_LOWER }, /* Latin Small   v */
+	{ 119, UNICODE_LOWER }, /* Latin Small   w */
+	{ 120, UNICODE_LOWER }, /* Latin Small   x */
+	{ 121, UNICODE_LOWER }, /* Latin Small   y */
+	{ 122, UNICODE_LOWER }, /* Latin Small   z */
+	{ 192, UNICODE_UPPER }, /* Latin Capital A with grave */
+	{ 193, UNICODE_UPPER }, /* Latin Capital A with acute */
+	{ 194, UNICODE_UPPER }, /* Latin Capital A with circumflex */
+	{ 195, UNICODE_UPPER }, /* Latin Capital A with tilde */
+	{ 196, UNICODE_UPPER }, /* Latin Capital A with diuresis */
+	{ 197, UNICODE_UPPER }, /* Latin Capital A with ring above */
+	{ 198, UNICODE_UPPER }, /* Latin Capital AE */
+	{ 199, UNICODE_UPPER }, /* Latin Capital C with cedilla */
+	{ 200, UNICODE_UPPER }, /* Latin Capital E with grave */
+	{ 201, UNICODE_UPPER }, /* Latin Capital E with acute */
+	{ 202, UNICODE_UPPER }, /* Latin Capital E with circumflex */
+	{ 203, UNICODE_UPPER }, /* Latin Capital E with diuresis */
+	{ 204, UNICODE_UPPER }, /* Latin Capital I with grave */
+	{ 205, UNICODE_UPPER }, /* Latin Capital I with acute */
+	{ 206, UNICODE_UPPER }, /* Latin Capital I with circumflex */
+	{ 207, UNICODE_UPPER }, /* Latin Capital I with diuresis */
+	{ 208, UNICODE_UPPER }, /* Latin Capital ETH */
+	{ 209, UNICODE_UPPER }, /* Latin Capital N with tilde */
+	{ 210, UNICODE_UPPER }, /* Latin Capital O with grave */
+	{ 211, UNICODE_UPPER }, /* Latin Capital O with acute */
+	{ 212, UNICODE_UPPER }, /* Latin Capital O with circumflex */
+	{ 213, UNICODE_UPPER }, /* Latin Capital O with tilde */
+	{ 214, UNICODE_UPPER }, /* Latin Captial O with diaeresis */
+	{ 216, UNICODE_UPPER }, /* Latin Capital O with stroke */
+	{ 217, UNICODE_UPPER }, /* Latin Capital U with grave */
+	{ 218, UNICODE_UPPER }, /* Latin Capital U with acute */
+	{ 219, UNICODE_UPPER }, /* Latin Capital U with circumflex */
+	{ 220, UNICODE_UPPER }, /* Latin Capital U with diaeresis */
+	{ 221, UNICODE_UPPER }, /* Latin Capital Y with acute */
+	{ 222, UNICODE_UPPER }, /* Latin Capital THORN */
+	{ 223, UNICODE_LOWER }, /* German sz ligature */
+	{ 224, UNICODE_LOWER }, /* Latin Small   a with grave */
+	{ 225, UNICODE_LOWER }, /* Latin Small   a with acute */
+	{ 226, UNICODE_LOWER }, /* Latin Small   a with circumflex */
+	{ 227, UNICODE_LOWER }, /* Latin Small   a with tilde */
+	{ 228, UNICODE_LOWER }, /* Latin Small   a with diuresis */
+	{ 229, UNICODE_LOWER }, /* Latin Small   a with ring above */
+	{ 230, UNICODE_LOWER }, /* Latin Small   ae */
+	{ 231, UNICODE_LOWER }, /* Latin Small   c with cedilla */
+	{ 232, UNICODE_LOWER }, /* Latin Small   e with grave */
+	{ 233, UNICODE_LOWER }, /* Latin Small   e with acute */
+	{ 234, UNICODE_LOWER }, /* Latin Small   e with circumflex */
+	{ 235, UNICODE_LOWER }, /* Latin Small   e with diuresis */
+	{ 236, UNICODE_LOWER }, /* Latin Small   i with grave */
+	{ 237, UNICODE_LOWER }, /* Latin Small   i with acute */
+	{ 238, UNICODE_LOWER }, /* Latin Small   i with circumflex */
+	{ 239, UNICODE_LOWER }, /* Latin Small   i with diuresis */
+	{ 240, UNICODE_LOWER }, /* Latin Small   eth */
+	{ 241, UNICODE_LOWER }, /* Latin Small   n with tilde */
+	{ 242, UNICODE_LOWER }, /* Latin Small   o with grave */
+	{ 243, UNICODE_LOWER }, /* Latin Small   o with acute */
+	{ 244, UNICODE_LOWER }, /* Latin Small   o with circumflex */
+	{ 245, UNICODE_LOWER }, /* Latin Small   o with tilde */
+	{ 246, UNICODE_LOWER }, /* Latin Small   o with diaeresis */
+	{ 248, UNICODE_LOWER }, /* Latin Small   o with stroke */
+	{ 249, UNICODE_LOWER }, /* Latin Small   u with grave */
+	{ 250, UNICODE_LOWER }, /* Latin Small   u with acute */
+	{ 251, UNICODE_LOWER }, /* Latin Small   u with circumflex */
+	{ 252, UNICODE_LOWER }, /* Latin Small   u with diaeresis */
+	{ 253, UNICODE_LOWER }, /* Latin Small   y with acute */
+	{ 254, UNICODE_LOWER }, /* Latin Small   thorn */
+	{ 255, UNICODE_LOWER }, /* Latin Small   y with diaeresis */
+	{ 256, UNICODE_UPPER }, /* Latin Capital A with macron */
+	{ 257, UNICODE_LOWER }, /* Latin Small   a with macron */
+	{ 258, UNICODE_UPPER }, /* Latin Capital A with breve */
+	{ 259, UNICODE_LOWER }, /* Latin Small   a with breve */
+	{ 260, UNICODE_UPPER }, /* Latin Capital A with ogonek */
+	{ 261, UNICODE_LOWER }, /* Latin Small   a with ogonek */
+	{ 262, UNICODE_UPPER }, /* Latin Capital C with acute */
+	{ 263, UNICODE_LOWER }, /* Latin Small   c with acute */
+	{ 264, UNICODE_UPPER }, /* Latin Capital C with circumflex */
+	{ 265, UNICODE_LOWER }, /* Latin Small   c with circumflex */
+	{ 266, UNICODE_UPPER }, /* Latin Capital C with dot above */
+	{ 267, UNICODE_LOWER }, /* Latin Small   c with dot above */
+	{ 268, UNICODE_UPPER }, /* Latin Capital C with caron (hacek) */
+	{ 269, UNICODE_LOWER }, /* Latin Small   c with caron (hacek) */
+	{ 270, UNICODE_UPPER }, /* Latin Capital D with caron (hacek) */
+	{ 271, UNICODE_LOWER }, /* Latin Small   d with caron (hacek) */
+	{ 272, UNICODE_UPPER }, /* Latin Capital D with stroke */
+	{ 273, UNICODE_LOWER }, /* Latin Small   d with stroke */
+	{ 274, UNICODE_UPPER }, /* Latin Capital E with macron */
+	{ 275, UNICODE_LOWER }, /* Latin Small   e with macron */
+	{ 276, UNICODE_UPPER }, /* Latin Capital E with breve */
+	{ 277, UNICODE_LOWER }, /* Latin Small   e with breve */
+	{ 278, UNICODE_UPPER }, /* Latin Capital E with dot above */
+	{ 279, UNICODE_LOWER }, /* Latin Small   e with dot above */
+	{ 280, UNICODE_UPPER }, /* Latin Capital E with ogonek */
+	{ 281, UNICODE_LOWER }, /* Latin Small   e with ogonek */
+	{ 282, UNICODE_UPPER }, /* Latin Capital E with caron (hacek) */
+	{ 283, UNICODE_LOWER }, /* Latin Small   e with caron */
+	{ 284, UNICODE_UPPER }, /* Latin Capital G with circumflex */
+	{ 285, UNICODE_LOWER }, /* Latin Small   g with circumflex */
+	{ 286, UNICODE_UPPER }, /* Latin Capital G with breve */
+	{ 287, UNICODE_LOWER }, /* Latin Small   g with breve */
+	{ 288, UNICODE_UPPER }, /* Latin Capital G with dot above */
+	{ 289, UNICODE_LOWER }, /* Latin Small   g with dot above */
+	{ 290, UNICODE_UPPER }, /* Latin Capital G with cedilla */
+	{ 291, UNICODE_LOWER }, /* Latin Small   g with cedilla */
+	{ 292, UNICODE_UPPER }, /* Latin Capital H with circumflex */
+	{ 293, UNICODE_LOWER }, /* Latin Small   h with circumflex */
+	{ 294, UNICODE_UPPER }, /* Latin Capital H with stroke */
+	{ 295, UNICODE_LOWER }, /* Latin Small   h with stroke */
+	{ 296, UNICODE_UPPER }, /* Latin Capital I with tilde */
+	{ 297, UNICODE_LOWER }, /* Latin Small   i with tilde */
+	{ 298, UNICODE_UPPER }, /* Latin Capital I with macron */
+	{ 299, UNICODE_LOWER }, /* Latin Small   i with macron */
+	{ 300, UNICODE_UPPER }, /* Latin Capital I with breve */
+	{ 301, UNICODE_LOWER }, /* Latin Small   i with breve */
+	{ 302, UNICODE_UPPER }, /* Latin Capital I with ogonek */
+	{ 303, UNICODE_LOWER }, /* Latin Small   i with ogonek */
+	{ 304, UNICODE_UPPER }, /* Latin Capital I with dot above */
+	{ 305, UNICODE_LOWER }, /* Latin Small   i without dot above */
+	{ 306, UNICODE_UPPER }, /* Latin Capital IJ */
+	{ 307, UNICODE_LOWER }, /* Latin Small IJ */
+	{ 308, UNICODE_UPPER }, /* Latin Capital J with circumflex */
+	{ 309, UNICODE_LOWER }, /* Latin Small   j with circumflex */
+	{ 310, UNICODE_UPPER }, /* Latin Capital K with cedilla */
+	{ 311, UNICODE_LOWER }, /* Latin Small   j with cedilla */
+	{ 312, UNICODE_LOWER }, /* Latin Small   kra */
+	{ 313, UNICODE_UPPER }, /* Latin Capital L with acute */
+	{ 314, UNICODE_LOWER }, /* Latin Small   l with acute */
+	{ 315, UNICODE_UPPER }, /* Latin Capital L with cedilla */
+	{ 316, UNICODE_LOWER }, /* Latin Small   l with cedilla */
+	{ 317, UNICODE_UPPER }, /* Latin Capital L with caron */
+	{ 318, UNICODE_LOWER }, /* Latin Small   l with caron */
+	{ 319, UNICODE_UPPER }, /* Latin Capital L with middle dot */
+	{ 320, UNICODE_LOWER }, /* Latin Small   l with middle dot */
+	{ 321, UNICODE_UPPER }, /* Latin Capital L with stroke */
+	{ 322, UNICODE_LOWER }, /* Latin Small   l with stroke */
+	{ 323, UNICODE_UPPER }, /* Latin Capital N with acute */
+	{ 324, UNICODE_LOWER }, /* Latin Small   n with acute */
+	{ 325, UNICODE_UPPER }, /* Latin Capital N with cedilla */
+	{ 326, UNICODE_LOWER }, /* Latin Small   n with cedilla */
+	{ 327, UNICODE_UPPER }, /* Latin Capital N with caron */
+	{ 328, UNICODE_LOWER }, /* Latin Small   n with caron */
+	{ 329, UNICODE_LOWER }, /* Latin Small   n preceeded by apostrophe */
+	{ 330, UNICODE_UPPER }, /* Latin Capital Eng */
+	{ 331, UNICODE_LOWER }, /* Latin Small   eng */
+	{ 332, UNICODE_UPPER }, /* Latin Capital O with macron */
+	{ 333, UNICODE_LOWER }, /* Latin Small   o with macron */
+	{ 334, UNICODE_UPPER }, /* Latin Capital O with breve */
+	{ 335, UNICODE_LOWER }, /* Latin Small   o with breve */
+	{ 336, UNICODE_UPPER }, /* Latin Capital O with double acute */
+	{ 337, UNICODE_LOWER }, /* Latin Small   o with double acute */
+	{ 338, UNICODE_UPPER }, /* Latin Capital OE */
+	{ 339, UNICODE_LOWER }, /* Latin Small   oe */
+	{ 340, UNICODE_UPPER }, /* Latin Capital R with acute */
+	{ 341, UNICODE_LOWER }, /* Latin Small   r with acute */
+	{ 342, UNICODE_UPPER }, /* Latin Capital R with cedilla */
+	{ 343, UNICODE_LOWER }, /* Latin Small   r with cedilla */
+	{ 344, UNICODE_UPPER }, /* Latin Capital R with caron */
+	{ 345, UNICODE_LOWER }, /* Latin Small   r with caron */
+	{ 346, UNICODE_UPPER }, /* Latin Capital S with acute */
+	{ 347, UNICODE_LOWER }, /* Latin Small   s with acute */
+	{ 348, UNICODE_UPPER }, /* Latin Capital S with circumflex */
+	{ 349, UNICODE_LOWER }, /* Latin Small   s with circumflex */
+	{ 350, UNICODE_UPPER }, /* Latin Capital S with cedilla */
+	{ 351, UNICODE_LOWER }, /* Latin Small   s with cedilla */
+	{ 352, UNICODE_UPPER }, /* Latin Capital S with caron */
+	{ 353, UNICODE_LOWER }, /* Latin Small   s with caron */
+	{ 354, UNICODE_UPPER }, /* Latin Capital T with cedilla */
+	{ 355, UNICODE_LOWER }, /* Latin Small   t with cedilla */
+	{ 356, UNICODE_UPPER }, /* Latin Capital T with caron */
+	{ 357, UNICODE_LOWER }, /* Latin Small   t with caron */
+	{ 358, UNICODE_UPPER }, /* Latin Capital T with stroke */
+	{ 359, UNICODE_LOWER }, /* Latin Small   t with stroke */
+	{ 360, UNICODE_UPPER }, /* Latin Capital U with tilde */
+	{ 361, UNICODE_LOWER }, /* Latin Small   u with tilde */
+	{ 362, UNICODE_UPPER }, /* Latin Capital U with macron */
+	{ 363, UNICODE_LOWER }, /* Latin Small   u with macron */
+	{ 364, UNICODE_UPPER }, /* Latin Capital U with breve */
+	{ 365, UNICODE_LOWER }, /* Latin Small   u with breve */
+	{ 366, UNICODE_UPPER }, /* Latin Capital U with ring above */
+	{ 367, UNICODE_LOWER }, /* Latin Small   u with ring above */
+	{ 368, UNICODE_UPPER }, /* Latin Capital U with double acute */
+	{ 369, UNICODE_LOWER }, /* Latin Small   u with double acute */
+	{ 370, UNICODE_UPPER }, /* Latin Capital U with ogonek */
+	{ 371, UNICODE_LOWER }, /* Latin Small   u with ogonek */
+	{ 372, UNICODE_UPPER }, /* Latin Capital W with circumflex */
+	{ 373, UNICODE_LOWER }, /* Latin Small   w with circumflex */
+	{ 374, UNICODE_UPPER }, /* Latin Capital Y with circumflex */
+	{ 375, UNICODE_LOWER }, /* Latin Small   y with circumflex */
+	{ 376, UNICODE_UPPER }, /* Latin Capital Y with diaeresis */
+	{ 377, UNICODE_UPPER }, /* Latin Capital Z with acute */
+	{ 378, UNICODE_LOWER }, /* Latin Small   z with acute */
+	{ 379, UNICODE_UPPER }, /* Latin Capital Z with dot above */
+	{ 380, UNICODE_LOWER }, /* Latin Small   z with dot above */
+	{ 381, UNICODE_UPPER }, /* Latin Capital Z with caron */
+	{ 382, UNICODE_LOWER }, /* Latin Small   z with caron */
+	{ 383, UNICODE_LOWER }, /* Latin Small   long S */
+
+	{ 461, UNICODE_UPPER }, /* Latin Capital A with caron (hacek) */
+	{ 462, UNICODE_LOWER }, /* Latin Small   a with caron (hacek) */
+	{ 463, UNICODE_UPPER }, /* Latin Capital I with caron (hacek) */
+	{ 464, UNICODE_LOWER }, /* Latin Small   i with caron (hacek) */
+	{ 465, UNICODE_UPPER }, /* Latin Capital O with caron (hacek) */
+	{ 466, UNICODE_LOWER }, /* Latin Small   o with caron (hacek) */
+	{ 467, UNICODE_UPPER }, /* Latin Capital U with caron (hacek) */
+	{ 468, UNICODE_LOWER }, /* Latin Small   u with caron (hacek) */
+
+	{ 486, UNICODE_UPPER }, /* Latin Capital G with caron */
+	{ 487, UNICODE_LOWER }, /* Latin Small   g with caron */
+	{ 488, UNICODE_UPPER }, /* Latin Capital J with caron */
+	{ 489, UNICODE_LOWER }, /* Latin Small   j with caron */
+	{ 490, UNICODE_UPPER }, /* Latin Capital O with caron */
+	{ 491, UNICODE_LOWER }, /* Latin Small   o with caron */
+
+	{ 500, UNICODE_UPPER }, /* Latin Capital G with acute */
+	{ 501, UNICODE_LOWER }, /* Latin Small   g with caron */
+};
+
+static int nunicodeinfo = sizeof( unicodeinfo ) / sizeof( unicodeinfo[0] );
+
+static int
+unicode_find( unsigned int unicode_character )
+{
+	int min = 0, max = nunicodeinfo, mid;
+	while ( min < max ) {
+		mid = ( min + max ) / 2;
+		if ( unicodeinfo[mid].value < unicode_character )
+			min = mid + 1;
+		else
+			max = mid;
+	}
+	if ( ( max==min ) && ( unicodeinfo[min].value == unicode_character ) )
+		return min;
+	else
+		return -1;
+}
+
+unsigned short
+unicode_utf8_classify( char *p )
+{
+	unsigned int unicode_character, pos = 0;
+	int n;
+	unicode_character = utf8_decode( p, &pos );
+	n = unicode_find( unicode_character );
+	if ( n==-1 ) return UNICODE_SYMBOL;
+	else return unicodeinfo[n].info;
+}
+
+unsigned short
+unicode_utf8_classify_newstr( newstr *s )
+{
+	unsigned int unicode_character, pos = 0;
+	unsigned short value = 0;
+	int n;
+	while ( pos < s->len ) {
+		unicode_character = utf8_decode( s->data, &pos );
+		n = unicode_find( unicode_character );
+		if ( n==-1 ) value |= UNICODE_SYMBOL;
+		else value |= unicodeinfo[n].info;
+	}
+	return value;
+}
+
diff --git a/lib/unicode.h b/lib/unicode.h
new file mode 100644
index 0000000..d136265
--- /dev/null
+++ b/lib/unicode.h
@@ -0,0 +1,22 @@
+/*
+ * unicode.h
+ *
+ * Copyright (c) Chris Putnam 2004-2013
+ *
+ * Program and source code released under the GPL version 2
+ */
+#ifndef UNICODE_H
+#define UNICODE_H
+
+#include "newstr.h"
+
+#define UNICODE_SYMBOL    (1)
+#define UNICODE_UPPER     (2) /* Uppercase letter */
+#define UNICODE_LOWER     (4) /* Lowercase letter */
+#define UNICODE_NUMBER    (8) /* Numeric character */
+#define UNICODE_MIXEDCASE ( UNICODE_UPPER | UNICODE_LOWER )
+
+extern unsigned short unicode_utf8_classify( char *p );
+extern unsigned short unicode_utf8_classify_newstr( newstr *s );
+
+#endif
diff --git a/lib/utf8.c b/lib/utf8.c
index 532b51b..854f291 100644
--- a/lib/utf8.c
+++ b/lib/utf8.c
@@ -1,9 +1,9 @@
 /*
  * utf8.c
  *
- * Copyright (c) Chris Putnam 2004-2010
+ * Copyright (c) Chris Putnam 2004-2013
  *
- * Source code released under the GPL
+ * Source code released under the GPL version 2
  *
  */
 #include <stdio.h>
@@ -79,6 +79,18 @@ utf8_encode( unsigned int value, unsigned char out[6] )
 	}
 }
 
+/* Generate UTF8 character as null-terminated string */
+void
+utf8_encode_str( unsigned int value, char outstr[7] )
+{
+	unsigned char encoded[6];
+	int i, n;
+	n = utf8_encode( value, encoded );
+	for ( i=0; i<n; ++i )
+		outstr[i] = ( char ) encoded[i];
+	outstr[n] = '\0';
+}
+
 unsigned int
 utf8_decode( char *s, unsigned int *pi )
 {
diff --git a/lib/utf8.h b/lib/utf8.h
index 1a289d5..0a56c99 100644
--- a/lib/utf8.h
+++ b/lib/utf8.h
@@ -1,18 +1,18 @@
 /*
  * utf8.h
  *
- * Copyright (c) Chris Putnam 2004-2010
+ * Copyright (c) Chris Putnam 2004-2013
  *
- * Source code released under the GPL
+ * Source code released under the GPL version 2
  *
  */
-
 #ifndef UTF8_H
 #define UTF8_H
 
 #include <stdio.h>
 
 extern int utf8_encode( unsigned int value, unsigned char out[6] );
+extern void utf8_encode_str( unsigned int value, char outstr[7] );
 extern unsigned int utf8_decode( char *s, unsigned int *pi );
 extern void utf8_writebom( FILE *outptr );
 
diff --git a/lib/vplist.c b/lib/vplist.c
new file mode 100644
index 0000000..9dbf9b1
--- /dev/null
+++ b/lib/vplist.c
@@ -0,0 +1,216 @@
+/*
+ * vplist.c
+ *
+ * Version: 4/08/2013
+ *
+ * Copyright (c) Chris Putnam 2011-2013
+ *
+ * Source code released under the GPL version 2
+ *
+ * Implements a simple managed array of pointers to void
+ *
+ */
+#include <stdlib.h>
+#include <assert.h>
+#include "vplist.h"
+
+void
+vplist_init( vplist *vpl )
+{
+	assert( vpl );
+	vpl->data = NULL;
+	vpl->n = vpl->max = 0;
+}
+
+vplist *
+vplist_new( void )
+{
+	vplist *vpl;
+	vpl = ( vplist * ) malloc( sizeof( vplist ) );
+	if ( vpl ) vplist_init( vpl );
+	return vpl;
+}
+
+int
+vplist_find( vplist *vpl, void *v )
+{
+	int i;
+	assert( vpl );
+	for ( i=0; i<vpl->n; ++i )
+		if ( vpl->data[i]==v ) return i;
+	return -1;
+}
+
+int
+vplist_copy( vplist *to, vplist *from )
+{
+	int i;
+	assert( to );
+	assert( from );
+	if ( from->n > to->max ) {
+		if ( to->max ) free( to->data );
+		to->data = ( void ** ) malloc( sizeof( void * ) * from->n );
+		if ( !to->data ) return 0;
+		to->max = from->n;
+	}
+	for ( i=0; i<from->n; ++i )
+		to->data[i] = from->data[i];
+	to->n = from->n;
+	return 1;
+}
+
+int
+vplist_append( vplist *to, vplist *from )
+{
+	int i, ok;
+	assert( to );
+	assert( from );
+	for ( i=0; i<from->n; ++i ) {
+		ok = vplist_add( to, from->data[i] );
+		if ( !ok ) return 0;
+	}
+	return 1;
+}
+
+static int
+vplist_validindex( vplist *vpl, int n )
+{
+	if ( n < 0 || n >= vpl->n ) return 0;
+	return 1;
+}
+
+static int
+vplist_alloc( vplist *vpl )
+{
+	int alloc = 20;
+	vpl->data = ( void ** ) malloc( sizeof( void * ) * alloc );
+	if ( !vpl->data ) return 0;
+	vpl->max = alloc;
+	vpl->n = 0;
+	return 1;
+}
+
+static int
+vplist_realloc( vplist *vpl )
+{
+	void **more;
+	int alloc = vpl->max * 2;
+	more = ( void ** ) realloc( vpl->data, sizeof( void * ) * alloc );
+	if ( !more ) return 0;
+	vpl->data = more;
+	vpl->max = alloc;
+	return 1;
+}
+
+int
+vplist_add( vplist *vpl, void *v )
+{
+	int ok = 1;
+
+	assert( vpl );
+
+	/* ensure sufficient space */
+	if ( vpl->max==0 ) ok = vplist_alloc( vpl );
+	else if ( vpl->n >= vpl->max ) ok = vplist_realloc( vpl );
+
+	if ( ok ) {
+		vpl->data[vpl->n] = v;
+		vpl->n++;
+	}
+
+	return ok;
+}
+
+void *
+vplist_get( vplist *vpl, int n )
+{
+	assert( vpl );
+	if ( !vplist_validindex( vpl, n ) ) return NULL;
+	return vpl->data[ n ];
+}
+
+void
+vplist_set( vplist *vpl, int n, void *v )
+{
+	assert( vpl );
+	if ( !vplist_validindex( vpl, n ) ) return;
+	vpl->data[ n ] = v;
+}
+
+void
+vplist_remove( vplist *vpl, int n )
+{
+	int i;
+	assert( vpl );
+	if ( !vplist_validindex( vpl, n ) ) return;
+	for ( i=n+1; i<vpl->n; ++i )
+		vpl->data[ i-1 ] = vpl->data[ i ];
+	vpl->n -= 1;
+}
+
+void
+vplist_removevp( vplist *vpl, void *v )
+{
+	int n;
+	assert( vpl );
+	do {
+		n = vplist_find( vpl, v );
+		if ( n!=-1 ) vplist_remove( vpl, n );
+	} while ( n!=-1 );
+}
+
+static void
+vplist_freemembers( vplist *vpl, vplist_ptrfree vpf )
+{
+	int i;
+	for ( i=0; i<vpl->n; ++i )
+		(*vpf)( vplist_get( vpl, i ) );
+}
+
+void
+vplist_empty( vplist *vpl )
+{
+	assert( vpl );
+	vpl->n = 0;
+}
+
+void
+vplist_emptyfn( vplist *vpl, vplist_ptrfree vpf )
+{
+	assert( vpl );
+	vplist_freemembers( vpl, vpf );
+	vplist_empty( vpl );
+}
+
+void
+vplist_free( vplist *vpl )
+{
+	assert( vpl );
+	if ( vpl->data ) free( vpl->data );
+	vplist_init( vpl );
+}
+
+void
+vplist_freefn( vplist *vpl, vplist_ptrfree vpf )
+{
+	assert( vpl );
+	vplist_freemembers( vpl, vpf );
+	vplist_free( vpl );
+}
+
+void
+vplist_destroy( vplist **vpl )
+{
+	assert( *vpl );
+	vplist_free( *vpl );
+	free( *vpl );
+	*vpl = NULL;
+}
+
+void
+vplist_destroyfn( vplist **vpl, vplist_ptrfree vpf )
+{
+	assert( *vpl );
+	vplist_freemembers( *vpl, vpf );
+	vplist_destroy( vpl );
+}
diff --git a/lib/vplist.h b/lib/vplist.h
new file mode 100644
index 0000000..d6d4c83
--- /dev/null
+++ b/lib/vplist.h
@@ -0,0 +1,68 @@
+/*
+ * vplist.h
+ *
+ * Version: 4/08/2013
+ *
+ * Copyright (c) Chris Putnam 2011-2013
+ *
+ * Source code released under the GPL version 2
+ *
+ */
+
+#ifndef VPLIST_H
+#define VPLIST_H
+
+/* vplist = void pointer list (generic container struct)
+ */
+typedef struct vplist {
+	int n, max;
+	void **data;
+} vplist;
+
+typedef void (*vplist_ptrfree)(void*);
+
+extern void     vplist_init( vplist *vpl );
+extern vplist * vplist_new( void );
+extern int      vplist_add( vplist *vpl, void *v );
+extern int      vplist_copy( vplist *to, vplist *from );
+extern int      vplist_append( vplist *to, vplist *from );
+extern void *   vplist_get( vplist *vpl, int n );
+extern void     vplist_set( vplist *vpl, int n, void *v );
+extern void     vplist_remove( vplist *vpl, int n );
+extern void     vplist_removevp( vplist *vpl, void *v );
+extern int      vplist_find( vplist *vpl, void *v );
+/*
+ * vplist_empty does not free space
+ *
+ * if members require their own free calls, then call vplist_emptyfn()
+ *
+ * void
+ * member_free( void *v )
+ * {
+ *     member *m = ( member * ) v;
+ *     member_free( m );
+ *     free( m );
+ * }
+ * vplist_emptyfn( &vpl, member_free );
+ *
+ * if members are simply allocated with malloc(), then use free()
+ *
+ * vplist_emptyfn( &vpl, free );
+ */
+extern void   vplist_empty( vplist *vpl );
+extern void   vplist_emptyfn( vplist *vpl, vplist_ptrfree fn );
+/*
+ * vplist_free frees the space for the data array of void * elements.
+ *
+ * if members require their own free calls, then call vplist_freefn()
+ */
+extern void vplist_free( vplist *vpl );
+extern void vplist_freefn( vplist *vpl, vplist_ptrfree fn );
+/*
+ * vplist_destroy does vplist_free and deallocates the struct
+ * vplist * and replaces with NULL.
+ */
+extern void vplist_destroy( vplist **vpl );
+extern void vplist_destroyfn( vplist **vpl, vplist_ptrfree fn );
+
+#endif
diff --git a/lib/wordin.c b/lib/wordin.c
index d7b7d14..f07f7b9 100644
--- a/lib/wordin.c
+++ b/lib/wordin.c
@@ -1,9 +1,9 @@
 /*
  * wordin.c
  *
- * Copyright (c) Chris Putnam 2010
+ * Copyright (c) Chris Putnam 2010-2013
  *
- * Program and source code released under the GPL
+ * Source code released under the GPL version 2
  *
  */
 #include <stdio.h>
@@ -35,7 +35,6 @@ wordin_initparams( param *p, const char *progname )
 	p->processf = wordin_processf;
 	p->cleanf   = NULL;
 	p->typef    = NULL;
-/*	p->convertf = wordin_convertf;*/
 	p->convertf = NULL;
 	p->all      = NULL;
 	p->nall     = 0;
@@ -86,7 +85,6 @@ wordin_readf( FILE *fp, char *buf, int bufsize, int *bufpos, newstr *line, newst
 			if ( endptr ) {
 				newstr_segcpy( reference, tmp.data, endptr );
 				haveref = 1;
-fprintf(stderr,"reference='%s'\n",reference->data);
 			}
 		}
 	}
@@ -122,346 +120,6 @@ typedef struct xml_convert {
 	int level;
 } xml_convert;
 
-#if 0
-static int
-medin_doconvert( xml *node, fields *info, xml_convert *c, int nc )
-{
-	int i, found = 0;
-	char *d;
-	if ( !xml_hasdata( node ) ) return 0;
-	d = xml_data( node );
-	for ( i=0; i<nc && found==0; ++i ) {
-		if ( c[i].a==NULL ) {
-			if ( xml_tagexact( node, c[i].in ) ) {
-				found = 1;
-				fields_add( info, c[i].out, d, c[i].level );
-			}
-		} else {
-			if ( xml_tag_attrib( node, c[i].in, c[i].a, c[i].aval)){
-				found = 1;
-				fields_add( info, c[i].out, d, c[i].level );
-			}
-		}
-	
-	}
-	return found;
-}
-
-/* <ArticleTitle>Mechanism and.....</ArticleTitle>
- */
-static void
-medin_articletitle( xml *node, fields *info )
-{
-	if ( xml_hasdata( node ) )
-		fields_add( info, "TITLE", xml_data( node ), 0 );
-}
-
-/*            <MedlineDate>2003 Jan-Feb</MedlineDate> */
-static void
-medin_medlinedate( fields *info, char *string, int level )
-{
-	newstr tmp;
-	char *p, *q;
-	newstr_init( &tmp );
-	/* extract year */
-	p = string;
-	q = skip_notws( string );
-/*	p = q = string;*/
-/*	while ( *q && !is_ws(*q) ) q++;*/
-	newstr_segcpy( &tmp, p, q );
-	fields_add( info, "PARTYEAR", tmp.data, level );
-	q = skip_ws( q );
-	/* extract month */
-	if ( q ) {
-		p = q;
-		newstr_empty( &tmp );
-		q = skip_notws( q );
-/*		while ( *q && !is_ws(*q) ) q++;*/
-		newstr_segcpy( &tmp, p, q );
-		newstr_findreplace( &tmp, "-", "/" );
-		fields_add( info, "PARTMONTH", tmp.data, level );
-		q = skip_ws( q );
-	}
-	/* extract day */
-	if ( q ) {
-		p = q;
-		newstr_empty( &tmp );
-		q = skip_notws( q );
-/*		while ( *q && !is_ws(*q) ) q++;*/
-		newstr_segcpy( &tmp, p, q );
-		fields_add( info, "PARTDAY", tmp.data, level );
-	}
-	newstr_free( &tmp );
-}
-
-
-
-/* <Journal>
- *    <ISSN>0027-8424</ISSN>
- *    <JournalIssue PrintYN="Y">
- *       <Volume>100</Volume>
- *       <Issue>21</Issue>
- *       <PubDate>
- *          <Year>2003</Year>
- *          <Month>Oct</Month>
- *          <Day>14</Day>
- *       </PubDate>
- *    </Journal Issue>
- * </Journal>
- *
- * or....
- *
- * <Journal>
- *    <ISSN IssnType="Print">0735-0414</ISSN>
- *    <JournalIssue CitedMedium="Print">
- *        <Volume>38</Volume>
- *        <Issue>1</Issue>
- *        <PubDate>
- *            <MedlineDate>2003 Jan-Feb</MedlineDate>
- *        </PubDate>
- *    </JournalIssue>
- *    <Title>Alcohol and alcoholism (Oxford, Oxfordshire)  </Title>
- *    <ISOAbbreviation>Alcohol Alcohol.</ISOAbbreviation>
- * </Journal>
- */
-static void
-medin_journal1( xml *node, fields *info )
-{
-	xml_convert c[] = {
-		{ "ISSN",     NULL, NULL, "ISSN",      1 },
-		{ "Volume",   NULL, NULL, "VOLUME",    1 },
-		{ "Issue",    NULL, NULL, "ISSUE",     1 },
-		{ "Year",     NULL, NULL, "PARTYEAR",  1 },
-		{ "Month",    NULL, NULL, "PARTMONTH", 1 },
-		{ "Day",      NULL, NULL, "PARTDAY",   1 },
-		{ "Language", NULL, NULL, "LANGUAGE",  1 },
-	};
-	int nc = sizeof( c ) / sizeof( c[0] );;
-	if ( xml_hasdata( node ) && !medin_doconvert( node, info, c, nc ) ) {
-		if ( xml_tagexact( node, "MedlineDate" ) )
-			medin_medlinedate( info, xml_data( node ), 1 );
-	}
-	if ( node->down ) medin_journal1( node->down, info );
-	if ( node->next ) medin_journal1( node->next, info );
-}
-
-/* <Pagination>
- *    <MedlinePgn>12111-6</MedlinePgn>
- * </Pagination>
- */
-static void
-medin_pagination( xml *node, fields *info )
-{
-	newstr sp, ep;
-	char *p;
-	int i;
-	if ( xml_tagexact( node, "MedlinePgn" ) && node->value ) {
-		newstrs_init( &sp, &ep, NULL );
-		p = xml_data( node );
-		while ( *p && *p!='-' )
-			newstr_addchar( &sp, *p++ );
-		if ( *p=='-' ) p++;
-		while ( *p )
-			newstr_addchar( &ep, *p++ );
-		if ( sp.len ) fields_add( info, "PAGESTART", sp.data, 1 );
-		if ( ep.len ) {
-			if ( sp.len > ep.len ) {
-				for ( i=sp.len-ep.len; i<sp.len; ++i )
-					sp.data[i] = ep.data[i-sp.len+ep.len];
-				fields_add( info, "PAGEEND", sp.data, 1 );
-			} else
-				fields_add( info, "PAGEEND", ep.data, 1 );
-		}
-		newstrs_free( &sp, &ep, NULL );
-	}
-	if ( node->down ) medin_pagination( node->down, info );
-	if ( node->next ) medin_pagination( node->next, info );
-}
-
-/* <Abstract>
- *    <AbstractText>ljwejrelr</AbstractText>
- * </Abstract>
- */
-static void
-medin_abstract( xml *node, fields *info )
-{
-	if ( xml_tagwithdata( node, "AbstractText" ) )
-		fields_add( info, "ABSTRACT", xml_data( node ), 0 );
-	else if ( node->next ) medin_abstract( node->next, info );
-}
-
-/* <AuthorList CompleteYN="Y">
- *    <Author>
- *        <LastName>Barondeau</LastName>
- *        <ForeName>David P</ForeName>
- *        ( or <FirstName>David P</FirstName> )
- *        <Initials>DP</Initials>
- *    </Author>
- * </AuthorList>
- */
-static void
-medin_author( xml *node, newstr *name )
-{
-	char *p;
-	if ( xml_tagexact( node, "LastName" ) ) {
-		if ( name->len ) {
-			newstr_prepend( name, "|" );
-			newstr_prepend( name, xml_data( node ) );
-		}
-		else newstr_strcat( name, xml_data( node ) );
-	} else if ( xml_tagexact( node, "ForeName" ) || 
-	            xml_tagexact( node, "FirstName" ) ) {
-		p = xml_data( node );
-		while ( p && *p ) {
-			if ( name->len ) newstr_addchar( name, '|' );
-			while ( *p && *p==' ' ) p++;
-			while ( *p && *p!=' ' ) newstr_addchar( name, *p++ );
-		}
-	} else if ( xml_tagexact( node, "Initials" ) && !strchr( name->data, '|' )) {
-		p = xml_data( node );
-		while ( p && *p ) {
-			if ( name->len ) newstr_addchar( name, '|' );
-			if ( !is_ws(*p) ) newstr_addchar( name, *p++ );
-		}
-	}
-	if ( node->down ) medin_author( node->down, name );
-	if ( node->next ) medin_author( node->next, name );
-}
-
-static void
-medin_authorlist( xml *node, fields *info )
-{
-	newstr name;
-	newstr_init( &name );
-	node = node->down;
-	while ( node ) {
-		if ( xml_tagexact( node, "Author" ) && node->down ) {
-			medin_author( node->down, &name );
-			if ( name.len ) fields_add(info,"AUTHOR",name.data,0);
-			newstr_empty( &name );
-		}
-		node = node->next;
-	}
-	newstr_free( &name );
-}
-
-/* <PublicationTypeList>
- *    <PublicationType>Journal Article</PublicationType>
- * </PublicationTypeList>
- */
-
-/* <MedlineJournalInfo>
- *    <Country>United States</Country>
- *    <MedlineTA>Proc Natl Acad Sci U S A</MedlineTA>
- *    <NlmUniqueID>7507876</NlmUniqueID>
- * </MedlineJournalInfo>
- */
-
-static void
-medin_journal2( xml *node, fields *info )
-{
-	if ( xml_tagwithdata( node, "MedlineTA" ) )
-		fields_add( info, "TITLE", xml_data( node ), 1 );
-	if ( node->down ) medin_journal2( node->down, info );
-	if ( node->next ) medin_journal2( node->next, info );
-}
-
-/*
-<MeshHeadingList>
-<MeshHeading>
-<DescriptorName MajorTopicYN="N">Biophysics</DescriptorName>
-</MeshHeading>
-<MeshHeading>
-<DescriptorName MajorTopicYN="N">Crystallography, X-Ray</DescriptorName>
-</MeshHeading>
-</MeshHeadingList>
-*/
-static void
-medin_meshheading( xml *node, fields *info )
-{
-	if ( xml_tagwithdata( node, "DescriptorName" ) )
-		fields_add( info, "KEYWORD", xml_data( node ), 0 );
-	if ( node->next ) medin_meshheading( node->next, info );
-}
-
-static void
-medin_meshheadinglist( xml *node, fields *info )
-{
-	if ( xml_tagexact( node, "MeshHeading" ) && node->down )
-		medin_meshheading( node->down, info );
-	if ( node->next ) medin_meshheadinglist( node->next, info );
-}
-
-/* <PubmedData>
- *     ....
- *     <ArticleIdList>
- *         <ArticleId IdType="pubmed">14523232</ArticleId>
- *         <ArticleId IdType="doi">10.1073/pnas.2133463100</ArticleId>
- *         <ArticleId IdType="pii">2133463100</ArticleId>
- *         <ArticleId IdType="medline">22922082</ArticleId>
- *     </ArticleIdList>
- * </PubmedData>
- *
- * I think "pii" is "Publisher Item Identifier"
- */
-
-static void
-medin_pubmeddata( xml *node, fields *info )
-{
-	xml_convert c[] = {
-		{ "ArticleId", "IdType", "doi",     "DOI",     0 },
-		{ "ArticleId", "IdType", "pubmed",  "PMID",    0 },
-		{ "ArticleId", "IdType", "medline", "MEDLINE", 0 },
-		{ "ArticleId", "IdType", "pii",     "PII",     0 },
-	};
-	int nc = sizeof( c ) / sizeof( c[0] );
-	medin_doconvert( node, info, c, nc );
-	if ( node->next ) medin_pubmeddata( node->next, info );
-	if ( node->down ) medin_pubmeddata( node->down, info );
-}
-
-static void
-medin_article( xml *node, fields *info )
-{
-	if ( xml_tagexact( node, "Journal" ) ) 
-		medin_journal1( node, info );
-	else if ( xml_tagexact( node, "ArticleTitle" ) )
-		medin_articletitle( node, info );
-	else if ( xml_tagexact( node, "Pagination" ) && node->down )
-		medin_pagination( node->down, info );
-	else if ( xml_tagexact( node, "Abstract" ) && node->down )
-		medin_abstract( node->down, info );
-	else if ( xml_tagexact( node, "AuthorList" ) )
-		medin_authorlist( node, info );
-	if ( node->next ) medin_article( node->next, info );
-}
-
-static void
-medin_medlinecitation( xml *node, fields *info )
-{
-	if ( node->down ) {
-		if ( xml_tagexact( node, "Article" ) )
-			medin_article( node->down, info );
-		else if ( xml_tagexact( node, "MedlineJournalInfo" ) )
-			medin_journal2( node->down, info );
-		else if ( xml_tagexact( node, "MeshHeadingList" ) )
-			medin_meshheadinglist( node->down, info );
-	}
-	if ( node->next ) medin_medlinecitation( node->next, info );
-}
-
-static void
-medin_pubmedarticle( xml *node, fields *info )
-{
-	if ( node->down ) {
-		if ( xml_tagexact( node, "MedlineCitation" ) )
-			medin_medlinecitation( node->down, info );
-		else if ( xml_tagexact( node, "PubmedData" ) )
-			medin_pubmeddata( node->down, info );
-	}
-	if ( node->next ) medin_pubmedarticle( node->next, info );
-}
-#endif
 static void
 wordin_person( xml *node, fields *info, char *type )
 {
@@ -585,13 +243,3 @@ wordin_processf( fields *wordin, char *data, char *filename, long nref )
 	xml_free( &top );
 	return 1;
 }
-
-void
-wordin_convertf( fields *wordin, fields *info, int reftype, int verbose, 
-	variants *all, int nall )
-{
-	int i;
-	for ( i=0; i<wordin->nfields; ++i )
-		fields_add( info, wordin->tag[i].data, wordin->data[i].data,
-				wordin->level[i] );
-}
diff --git a/lib/wordin.h b/lib/wordin.h
index cd28beb..2ae9f92 100644
--- a/lib/wordin.h
+++ b/lib/wordin.h
@@ -1,9 +1,9 @@
 /*
  * wordin.h
  *
- * Copyright (c) Chris Putnam 2009
+ * Copyright (c) Chris Putnam 2009-2013
  *
- * Program and source code released under the GPL
+ * Source code released under the GPL version 2
  *
  */
 #ifndef WORDIN_H
@@ -16,7 +16,6 @@
 
 extern int wordin_readf( FILE *fp, char *buf, int bufsize, int *bufpos, newstr *line, newstr *reference, int *fcharset );
 extern int wordin_processf( fields *wordin, char *data, char *filename, long nref );
-extern void wordin_convertf( fields *wordin, fields *info, int reftype, int verbose, variants *all, int nall );
 
 extern void wordin_initparams( param *p, const char *progname );
 
diff --git a/lib/wordout.c b/lib/wordout.c
index b084129..0ef754d 100644
--- a/lib/wordout.c
+++ b/lib/wordout.c
@@ -3,9 +3,9 @@
  * 
  * (Word 2007 format)
  *
- * Copyright (c) Chris Putnam 2007-2010
+ * Copyright (c) Chris Putnam 2007-2013
  *
- * Source code released under the GPL
+ * Source code released under the GPL version 2
  *
  */
 #include <stdio.h>
@@ -24,8 +24,8 @@ wordout_initparams( param *p, const char *progname )
 	p->charsetout       = BIBL_CHARSET_UNICODE;
 	p->charsetout_src   = BIBL_SRC_DEFAULT;
 	p->latexout         = 0;
-	p->utf8out          = 0;
-	p->utf8bom          = 0;
+	p->utf8out          = BIBL_CHARSET_UTF8_DEFAULT;
+	p->utf8bom          = BIBL_CHARSET_BOM_DEFAULT;
 	if ( !p->utf8out ) p->xmlout = 3;
 	else p->xmlout = 1;
 	p->nosplittitle     = 0;
@@ -44,11 +44,6 @@ typedef struct convert {
 	int  code;
 } convert;
 
-typedef struct outtype {
-	int value;
-	char *out;
-} outtype;
-
 /*
 At the moment 17 unique types of sources are defined:
 
@@ -125,28 +120,32 @@ output_item( fields *info, FILE *outptr, char *tag, int item, int level )
 	fields_setused( info, item );
 }
 
+static void
+output_itemv( FILE *outptr, char *tag, char *item, int level )
+{
+	int i;
+	for ( i=0; i<level; ++i ) fprintf( outptr, " " );
+	fprintf( outptr, "<%s>%s</%s>\n", tag, item, tag );
+}
+
 /* range output
  *
  * <TAG>start-end</TAG>
  *
  */
 static void
-output_range( fields *info, FILE *outptr, char *tag, int start, int end,
-		int level )
+output_range( FILE *outptr, char *tag, char *start, char *end, int level )
 {
 	int i;
-	if ( start==-1 && end==-1 ) return;
-	if ( start==-1 )
-		output_item( info, outptr, tag, end, 0 );
-	else if ( end==-1 )
-		output_item( info, outptr, tag, start, 0 );
+	if ( start==NULL && end==NULL ) return;
+	if ( start==NULL )
+		output_itemv( outptr, tag, end, 0 );
+	else if ( end==NULL )
+		output_itemv( outptr, tag, start, 0 );
 	else {
 		for ( i=0; i<level; ++i )
 			fprintf( outptr, " " );
-		fprintf( outptr, "<%s>%s-%s</%s>\n", tag, 
-			info->data[start].data, info->data[end].data, tag );
-		fields_setused( info, start );
-		fields_setused( info, end );
+		fprintf( outptr, "<%s>%s-%s</%s>\n", tag, start, end, tag );
 	}
 }
 
@@ -161,6 +160,11 @@ output_list( fields *info, FILE *outptr, convert *c, int nc )
 
 }
 
+typedef struct outtype {
+	int value;
+	char *out;
+} outtype;
+
 static
 outtype genres[] = {
 	{ TYPE_PATENT, "patent" },
@@ -190,7 +194,7 @@ get_type_from_genre( fields *info )
 {
 	int type = TYPE_UNKNOWN, i, j, level;
 	char *genre;
-	for ( i=0; i<info->nfields; ++i ) {
+	for ( i=0; i<info->n; ++i ) {
 		if ( strcasecmp( info->tag[i].data, "GENRE" ) &&
 			strcasecmp( info->tag[i].data, "NGENRE" ) ) continue;
 		genre = info->data[i].data;
@@ -235,7 +239,7 @@ get_type_from_resource( fields *info )
 {
 	int type = TYPE_UNKNOWN, i;
 	char *resource;
-	for ( i=0; i<info->nfields; ++i ) {
+	for ( i=0; i<info->n; ++i ) {
 		if ( strcasecmp( info->tag[i].data, "GENRE" )!=0 &&
 			strcasecmp( info->tag[i].data, "NGENRE" )!=0 ) continue;
 		resource = info->data[i].data;
@@ -258,25 +262,19 @@ get_type( fields *info )
 static void
 output_titleinfo( fields *info, FILE *outptr, char *tag, int level )
 {
-	char *p;
-	int ttl, subttl;
-	ttl = fields_find( info, "TITLE", level );
-	subttl = fields_find( info, "SUBTITLE", level );
-	if ( ttl!=-1 || subttl!=-1 ) {
+	newstr *mainttl = fields_findv( info, level, FIELDS_STRP, "TITLE" );
+	newstr *subttl  = fields_findv( info, level, FIELDS_STRP, "SUBTITLE" );
+	if ( mainttl || subttl ) {
 		fprintf( outptr, "<%s>", tag );
-		if ( ttl!=-1 ) {
-			fprintf( outptr, "%s", info->data[ttl].data );
-			fields_setused( info, ttl );
-		}
-		if ( subttl!=-1 ) {
-			if ( ttl!=-1 ) {
-				p = info->data[ttl].data;
-				if ( p[info->data[ttl].len-1]!='?' )
-					fprintf( outptr, ":" );
-				fprintf( outptr, " " );
+		if ( mainttl ) fprintf( outptr, "%s", mainttl->data );
+		if ( subttl ) {
+			if ( mainttl ) {
+				if ( mainttl->len > 0 &&
+				     mainttl->data[mainttl->len-1]!='?' )
+					fprintf( outptr, ": " );
+				else fprintf( outptr, " " );
 			}
-			fprintf( outptr, "%s", info->data[subttl].data );
-			fields_setused( info, subttl );
+			fprintf( outptr, "%s", subttl->data );
 		}
 		fprintf( outptr, "</%s>\n", tag );
 	}
@@ -285,21 +283,19 @@ output_titleinfo( fields *info, FILE *outptr, char *tag, int level )
 static void
 output_title( fields *info, FILE *outptr, int level )
 {
-	int ttl = fields_find( info, "TITLE", level );
-	int subttl = fields_find( info, "SUBTITLE", level );
-	int shrttl = fields_find( info, "SHORTTITLE", level );
+	char *ttl    = fields_findv( info, level, FIELDS_CHRP, "TITLE" );
+	char *subttl = fields_findv( info, level, FIELDS_CHRP, "SUBTITLE" );
+	char *shrttl = fields_findv( info, level, FIELDS_CHRP, "SHORTTITLE" );
 
-	output_titleinfo( info, outptr, "b:Title", 0 );
+	output_titleinfo( info, outptr, "b:Title", level );
 
 	/* output shorttitle if it's different from normal title */
-	if ( shrttl!=-1 ) {
-		if ( ttl==-1 || subttl!=-1 ||
-			strcmp(info->data[ttl].data,info->data[shrttl].data) ) {
+	if ( shrttl ) {
+		if ( !ttl || ( strcmp( shrttl, ttl ) || subttl ) ) {
 			fprintf( outptr,  " <b:ShortTitle>" );
-			fprintf( outptr, "%s", info->data[shrttl].data );
+			fprintf( outptr, "%s", shrttl );
 			fprintf( outptr, "</b:ShortTitle>\n" );
 		}
-		fields_setused( info, shrttl );
 	}
 }
 
@@ -370,10 +366,11 @@ output_name_type( fields *info, FILE *outptr, int level,
 			char *map[], int nmap, char *tag )
 {
 	newstr ntag;
-	int i, j, n=0, code;
+	int i, j, n=0, code, nfields;
 	newstr_init( &ntag );
+	nfields = fields_num( info );
 	for ( j=0; j<nmap; ++j ) {
-		for ( i=0; i<info->nfields; ++i ) {
+		for ( i=0; i<nfields; ++i ) {
 			code = extract_name_and_info( &ntag, &(info->tag[i]) );
 			if ( strcasecmp( ntag.data, map[j] ) ) continue;
 			if ( n==0 )
@@ -418,39 +415,27 @@ output_names( fields *info, FILE *outptr, int level, int type )
 static void
 output_date( fields *info, FILE *outptr, int level )
 {
-	convert parts[3] = {
-		{ "PARTYEAR",  "b:Year",  -1 },
-		{ "PARTMONTH", "b:Month", -1 },
-		{ "PARTDAY",   "b:Day",   -1 }
-	};
-
-	convert fulls[3] = {
-		{ "YEAR",  "", -1 },
-		{ "MONTH", "", -1 },
-		{ "DAY",   "", -1 }
-	};
-
-	int i, np, nf;
-	for ( i=0; i<3; ++i ) {
-		np = fields_find( info, parts[i].oldtag, level );
-		nf = fields_find( info, fulls[i].oldtag, level );
-		if ( np!=-1 )
-			output_item( info, outptr, parts[i].newtag, np, 0 );
-		else if ( nf!=-1 )
-			output_item( info, outptr, parts[i].newtag, nf, 0 );
-	}
+	char *year  = fields_findv_firstof( info, level, FIELDS_CHRP,
+			"PARTYEAR", "YEAR", NULL );
+	char *month = fields_findv_firstof( info, level, FIELDS_CHRP,
+			"PARTMONTH", "MONTH", NULL );
+	char *day   = fields_findv_firstof( info, level, FIELDS_CHRP,
+			"PARTDAY", "DAY", NULL );
+	if ( year )  output_itemv( outptr, "b:Year", year, 0 );
+	if ( month ) output_itemv( outptr, "b:Month", month, 0 );
+	if ( day )   output_itemv( outptr, "b:Day", day, 0 );
 }
 
 static void
 output_pages( fields *info, FILE *outptr, int level )
 {
-	int start = fields_find( info, "PAGESTART", -1 );
-	int end = fields_find( info, "PAGEEND", -1 );
-	int ar = fields_find( info, "ARTICLENUMBER", -1 );
-	if ( start!=-1 || end!=-1 )
-		output_range( info, outptr, "b:Pages", start, end, level );
-	else if ( ar!=-1 )
-		output_range( info, outptr, "b:Pages", ar, -1, level );
+	char *sn = fields_findv( info, LEVEL_ANY, FIELDS_CHRP, "PAGESTART" );
+	char *en = fields_findv( info, LEVEL_ANY, FIELDS_CHRP, "PAGEEND" );
+	char *ar = fields_findv( info, LEVEL_ANY, FIELDS_CHRP, "ARTICLENUMBER" );
+	if ( sn || en )
+		output_range( outptr, "b:Pages", sn, en, level );
+	else if ( ar )
+		output_range( outptr, "b:Pages", ar, NULL, level );
 }
 
 static void
@@ -459,7 +444,7 @@ output_includedin( fields *info, FILE *outptr, int type )
 	if ( type==TYPE_JOURNALARTICLE ) {
 		output_titleinfo( info, outptr, "b:JournalName", 1 );
 	} else if ( type==TYPE_ARTICLEINAPERIODICAL ) {
-		output_titleinfo( info, outptr, "b:PeriodicalName", 1 );
+		output_titleinfo( info, outptr, "b:PeriodicalTitle", 1 );
 	} else if ( type==TYPE_BOOKSECTION ) {
 		output_titleinfo( info, outptr, "b:ConferenceName", 1 ); /*??*/
 	} else if ( type==TYPE_PROCEEDINGS ) {
@@ -470,26 +455,31 @@ output_includedin( fields *info, FILE *outptr, int type )
 static int
 type_is_thesis( int type )
 {
-	if ( type==TYPE_THESIS || type==TYPE_PHDTHESIS || 
-			type==TYPE_MASTERSTHESIS )
+	if ( type==TYPE_THESIS ||
+	     type==TYPE_PHDTHESIS ||
+	     type==TYPE_MASTERSTHESIS )
 		return 1;
-	else return 0;
+	else
+		return 0;
 }
 
 static void
 output_thesisdetails( fields *info, FILE *outptr, int type )
 {
-	int i;
+	char *tag;
+	int i, n;
 
 	if ( type==TYPE_PHDTHESIS )
 		output_fixed( outptr, "b:ThesisType", "Ph.D. Thesis", 0 );
 	else if ( type==TYPE_MASTERSTHESIS ) 
 		output_fixed( outptr, "b:ThesisType", "Masters Thesis", 0 );
 
-	for ( i=0; i<info->nfields; ++i ) {
-		if ( strcasecmp( info->tag[i].data, "DEGREEGRANTOR" ) &&
-			strcasecmp( info->tag[i].data, "DEGREEGRANTOR:ASIS") &&
-			strcasecmp( info->tag[i].data, "DEGREEGRANTOR:CORP"))
+	n = fields_num( info );
+	for ( i=0; i<n; ++i ) {
+		tag = fields_tag( info, i, FIELDS_CHRP );
+		if ( strcasecmp( tag, "DEGREEGRANTOR" ) &&
+			strcasecmp( tag, "DEGREEGRANTOR:ASIS") &
+			strcasecmp( tag, "DEGREEGRANTOR:CORP"))
 				continue;
 		output_item( info, outptr, "b:Institution", i, 0 );
 	}
@@ -542,50 +532,49 @@ output_type( fields *info, FILE *outptr, int type )
 static void
 output_comments( fields *info, FILE *outptr, int level )
 {
-	int i, written=0;
-	int nabs = fields_find( info, "ABSTRACT", level );
-	if ( nabs!=-1 ) {
-		fprintf( outptr, "<b:Comments>" );
-		fprintf( outptr, "%s", info->data[nabs].data );
-		written = 1;
-	}
-	for ( i=0; i<info->nfields; ++i ) {
-		if ( info->level[i]!=level ) continue;
-		if ( strcasecmp( info->tag[i].data, "NOTES" ) ) continue;
-		if ( !written ) {
-			fprintf( outptr, "<b:Comments>" );
-			written = 1;
-		}
-		fprintf( outptr, "%s", info->data[i].data );
-	}
-	if ( written ) fprintf( outptr, "</b:Comments>\n" );
+	vplist notes;
+	char *abs;
+	int i;
+
+	vplist_init( &notes );
+
+	abs = fields_findv( info, level, FIELDS_CHRP, "ABSTRACT" );
+	fields_findv_each( info, level, FIELDS_CHRP, &notes, "NOTES" );
+
+	if ( abs || notes.n ) fprintf( outptr, "<b:Comments>" );
+	if ( abs ) fprintf( outptr, "%s", abs );
+	for ( i=0; i<notes.n; ++i )
+		fprintf( outptr, "%s", (char*)vplist_get( &notes, i ) );
+	if ( abs || notes.n ) fprintf( outptr, "</b:Comments>\n" );
+
+	vplist_free( &notes );
 }
 
 static void
 output_bibkey( fields *info, FILE *outptr )
 {
-	int  n = fields_find( info, "REFNUM", -1 );
-	if ( n==-1 ) n = fields_find( info, "BIBKEY", -1 );
-	output_item( info, outptr, "b:Tag", n, 0 );
+	char *bibkey = fields_findv_firstof( info, LEVEL_ANY, FIELDS_CHRP,
+			"REFNUM", "BIBKEY", NULL );
+	if ( bibkey ) output_itemv( outptr, "b:Tag", bibkey, 0 );
 }
 
 static void
 output_citeparts( fields *info, FILE *outptr, int level, int max, int type )
 {
 	convert origin[] = {
-		{ "ADDRESS",	"b:City",	-1 },
-		{ "PUBLISHER",	"b:Publisher",	-1 },
-		{ "EDITION",	"b:Edition",	-1 }
+		{ "ADDRESS",	"b:City",	LEVEL_ANY },
+		{ "PUBLISHER",	"b:Publisher",	LEVEL_ANY },
+		{ "EDITION",	"b:Edition",	LEVEL_ANY }
 	};
 	int norigin = sizeof( origin ) / sizeof ( convert );
 	
 	convert parts[] = {
-		{ "VOLUME",          "b:Volume",  -1 },
-		{ "SECTION",         "b:Section", -1 },
-		{ "ISSUE",           "b:Issue",   -1 },
-		{ "NUMBER",          "b:Issue",   -1 },
-		{ "PUBLICLAWNUMBER", "b:Volume",  -1 },
-		{ "SESSION",         "b:Issue",   -1 },
+		{ "VOLUME",          "b:Volume",  LEVEL_ANY },
+		{ "SECTION",         "b:Section", LEVEL_ANY },
+		{ "ISSUE",           "b:Issue",   LEVEL_ANY },
+		{ "NUMBER",          "b:Issue",   LEVEL_ANY },
+		{ "PUBLICLAWNUMBER", "b:Volume",  LEVEL_ANY },
+		{ "SESSION",         "b:Issue",   LEVEL_ANY },
 	};
 	int nparts=sizeof(parts)/sizeof(convert);
 	
@@ -597,7 +586,7 @@ output_citeparts( fields *info, FILE *outptr, int level, int max, int type )
 	output_list( info, outptr, parts, nparts );
 	output_pages( info, outptr, level );
 	output_names( info, outptr, level, type );
-	output_title( info, outptr, level );
+	output_title( info, outptr, 0 );
 	output_comments( info, outptr, level );
 }
 
diff --git a/lib/wordout.h b/lib/wordout.h
index 7dcbfc8..adc1684 100644
--- a/lib/wordout.h
+++ b/lib/wordout.h
@@ -1,9 +1,9 @@
 /*
  * wordout.h
  *
- * Copyright (c) Chris Putnam 2008-2009
+ * Copyright (c) Chris Putnam 2008-2013
  *
- * Source code released under the GPL
+ * Source code released under the GPL version 2
  *
  */
 #ifndef WORDOUT_H
diff --git a/lib/xml.c b/lib/xml.c
index 4b05137..1ef1bad 100644
--- a/lib/xml.c
+++ b/lib/xml.c
@@ -1,9 +1,9 @@
 /*
  * xml.c
  *
- * Copyright (c) Chris Putnam 2004-2010
+ * Copyright (c) Chris Putnam 2004-2013
  *
- * Source code released under the GPL
+ * Source code released under the GPL version 2
  *
  */
 #include <stdio.h>
diff --git a/lib/xml.h b/lib/xml.h
index 86b118c..e800f69 100644
--- a/lib/xml.h
+++ b/lib/xml.h
@@ -1,9 +1,9 @@
 /*
  * xml.h
  *
- * Copyright (c) Chris Putnam 2004-2009
+ * Copyright (c) Chris Putnam 2004-2013
  *
- * Source code released under the GPL
+ * Source code released under the GPL version 2
  *
  */
 #ifndef XML_H
diff --git a/lib/xml_encoding.c b/lib/xml_encoding.c
index 4a2d5a6..1a85690 100644
--- a/lib/xml_encoding.c
+++ b/lib/xml_encoding.c
@@ -1,14 +1,15 @@
 /*
  * xml_getencoding.c
  *
- * Copyright (c) Chris Putnam 2007-2010
+ * Copyright (c) Chris Putnam 2007-2013
  *
- * Source code released under the GPL
+ * Source code released under the GPL version 2
  *
  */
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
+#include "charsets.h"
 #include "newstr.h"
 #include "newstr_conv.h"
 #include "xml.h"
@@ -22,9 +23,13 @@ xml_getencodingr( xml *node )
 	if ( xml_tagexact( node, "xml" ) ) {
 		s = xml_getattrib( node, "encoding" );
 		if ( s && s->data ) {
-			if ( !strcasecmp( s->data, "UTF-8" ) ) 
+			if ( !strcasecmp( s->data, "UTF-8" ) )
 				n = CHARSET_UNICODE;
-			else n = get_charset( s->data );
+			else if ( !strcasecmp( s->data, "UTF8" ) )
+				n = CHARSET_UNICODE;
+			else if ( !strcasecmp( s->data, "GB18030" ) )
+				n = CHARSET_GB18030;
+			else n = charset_find( s->data );
 			if ( n==CHARSET_UNKNOWN ) {
 				fprintf( stderr, "Warning: did not recognize "
 					"encoding '%s'\n", s->data );
diff --git a/lib/xml_encoding.h b/lib/xml_encoding.h
index 1e1fb80..366977c 100644
--- a/lib/xml_encoding.h
+++ b/lib/xml_encoding.h
@@ -1,9 +1,9 @@
 /*
  * xml_getencoding.h
  *
- * Copyright (c) Chris Putnam 2007-2009
+ * Copyright (c) Chris Putnam 2007-2013
  *
- * Source code released under the GPL
+ * Source code released under the GPL version 2
  *
  */
 #ifndef XML_GETENCODING_H
diff --git a/makedeb.csh b/makedeb.csh
deleted file mode 100644
index f7c4997..0000000
--- a/makedeb.csh
+++ /dev/null
@@ -1,91 +0,0 @@
-#!/bin/csh -f
-#
-# $1 = version number
-# $2 = postfix
-#
-#
-# Build up this directory tree/files
-#
-# update/debian/
-#              /DEBIAN/
-#                     control
-#                     postinst.bibutils
-#                     postrm.bibutils
-#              /usr/local/bibutils-${1}/
-#                                      programs
-#
-# Then run dpkg on this to build a .deb package
-#
-
-if ( ( $2 != _osx ) && ( $2 != _i386 ) && ( $2 != _amd64 ) ) exit
-
-set programs = ( biblatex2xml bib2xml copac2xml ebi2xml end2xml endx2xml isi2xml med2xml modsclean ris2xml wordbib2xml xml2ads xml2bib xml2end xml2isi xml2ris xml2wordbib )
-
-if ( -e update/debian ) /bin/rm -r update/debian
-if ( -e update/bibutils-${1}.deb ) /bin/rm -f update/*.deb
-if ( ! (-e update) ) mkdir update
-cd update
-mkdir -p debian/DEBIAN
-
-set outdir = debian
-set pkgdir = debian/DEBIAN
-
-#
-# Build control file
-#
-if ( $2 == _i386 ) set arch = i386
-if ( $2 == _amd64 ) set arch = i386
-if ( $2 == _osx ) set arch = darwin-powerpc
-
-set cntrl = ${pkgdir}/control
-echo $cntrl
-echo "Package: bibutils" >! $cntrl
-echo "Version:" $1 >> $cntrl
-echo "Essential: no" >> $cntrl
-echo "Maintainer: Chris Putnam [cdputnam at ucsd.edu]" >> $cntrl
-echo "Provides: bibutils" >> $cntrl
-echo "Architecture: ${arch}" >> $cntrl
-echo "Description: Bibutils converts between bibliography formats" >> $cntrl
-echo "             including BibTeX, RIS, Endnote (Refer), ISI," >> $cntrl
-echo "             COPAC, and Medline XML using a MODS v3.0 XML intermediate." >> $cntrl
-
-#
-# Build post-install script
-#
-set postinst = ${pkgdir}/postinst.bibutils
-
-echo "#\!/bin/sh" >! $postinst
-
-#
-# Build un-install script
-#
-set postrm = ${pkgdir}/postrm.bibutils
-
-echo "#\!/bin/sh" >! $postrm
-
-#
-# Build binaries directory
-#
-# Fink installs on MacOSX install to /sw/bin
-#
-if ( $2 == _i386 ) set binarydir = ${outdir}/usr/local/bin
-if ( $2 == _amd64 ) set binarydir = ${outdir}/usr/local/bin
-if ( $2 == _osx ) set binarydir = ${outdir}/sw/bin
-
-mkdir -p ${binarydir}
-
-foreach program ( $programs )
-	cp ../bin/${program} ${binarydir}/.
-end
-
-#
-# Build update
-#
-set path = ( $path /sw/bin ~/src/bibutils/dpkg-1.10.28/main ~/src/bibutils/dpkg-1.10.28/dpkg-deb )
-dpkg --build ${outdir}  bibutils-${1}${2}.deb
-
-/bin/rm -r ${outdir}
-
-#   123  0:00    set path = ( $path /home/cdputnam/src/bibutils/dpkg-1.10.28/dpkg-deb )
-#   125  0:00    dpkg -c *.deb
-
diff --git a/makedeb.sh b/makedeb.sh
new file mode 100755
index 0000000..2a3ed56
--- /dev/null
+++ b/makedeb.sh
@@ -0,0 +1,105 @@
+#!/bin/sh
+#
+# $1 = version number
+# $2 = postfix
+#
+#
+# Build up this directory tree/files
+#
+# update/debian/
+#              /DEBIAN/
+#                     control
+#                     postinst.bibutils
+#                     postrm.bibutils
+#              /usr/local/bibutils-${1}/
+#                                      programs
+#
+# Then run dpkg on this to build a .deb package
+#
+programs="biblatex2xml bib2xml copac2xml ebi2xml end2xml endx2xml isi2xml med2xml modsclean ris2xml wordbib2xml xml2ads xml2bib xml2end xml2isi xml2ris xml2wordbib"
+VERSION=$1
+POSTFIX=$2
+
+if [ "$2" = "_i386" ] ; then
+	ARCH="i386"
+elif [ "$2" = "_amd64" ] ; then
+	ARCH="i386"
+elif [ "$2" = "_osx" ] ; then
+	ARCH="darwin-powerpc"
+else
+	echo "Can only accept _i386 _amd64 and _osx as postfixes."
+	echo "Skipping make deb for this architecture."
+	exit
+fi
+
+#
+# Clean up any old version
+#
+if [ -e update/debian ] ; then
+	rm -r update/debian
+fi
+if [ -e update/bibutils-${VERSION}.deb ] ; then
+	rm -f update/*.deb
+fi
+mkdir -p update/debian/DEBIAN
+cd update
+
+OUTDIR="debian"
+PKGDIR="debian/DEBIAN"
+
+#
+# Build control file
+#
+CNTRL="${PKGDIR}/control"
+echo "Package: bibutils"                                                       >  ${CNTRL}
+echo "Version:" ${VERSION}                                                     >> ${CNTRL}
+echo "Essential: no"                                                           >> ${CNTRL}
+echo "Maintainer: Chris Putnam [cdputnam at ucsd.edu]"                            >> ${CNTRL}
+echo "Provides: bibutils"                                                      >> ${CNTRL}
+echo "Architecture: ${ARCH}"                                                   >> ${CNTRL}
+echo "Description: Bibutils converts between bibliography formats"             >> ${CNTRL}
+echo "             including BibTeX, RIS, Endnote (Refer), ISI,"               >> ${CNTRL}
+echo "             COPAC, and Medline XML using a MODS v3.0 XML intermediate." >> ${CNTRL}
+
+#
+# Build post-install script
+#
+POSTINST="${PKGDIR}/postinst.bibutils"
+
+echo '#!/bin/sh' > ${POSTINST}
+
+#
+# Build un-install script
+#
+POSTRM="${PKGDIR}/postrm.bibutils"
+
+echo '#!/bin/sh' > ${POSTRM}
+
+#
+# Build binaries directory
+#
+# Fink installs on MacOSX install to /sw/bin
+#
+if [ "${POSTFIX}" = "_i386" ] ; then
+	BINARYDIR="${OUTDIR}/usr/local/bin"
+elif [ "${POSTFIX}" = "_amd64" ] ; then
+	BINARYDIR="${OUTDIR}/usr/local/bin"
+elif [ "${POSTFIX}" = "_osx" ] ; then
+	BINARYDIR="${OUTDIR}/sw/bin"
+fi
+
+mkdir -p ${BINARYDIR}
+
+for program in ${programs} ; do
+	cp ../bin/${program} ${BINARYDIR}/.
+done
+
+#
+# Build update
+#
+PATH=${PATH}:/sw/bin/:~/src/bibutils/dpkg-1.10.28/main:~/src/bibutils/dpkg-1.10.28/dpkg-deb
+
+dpkg --build ${OUTDIR}  bibutils-${VERSION}${POSTFIX}.deb
+
+rm -r ${OUTDIR}
+
diff --git a/maketgz.csh b/maketgz.csh
deleted file mode 100644
index 14314c0..0000000
--- a/maketgz.csh
+++ /dev/null
@@ -1,27 +0,0 @@
-#!/bin/csh -f
-#
-# $1 = version number
-# $2 = postfix
-#
-#
-set programs = ( biblatex2xml bib2xml copac2xml ebi2xml end2xml endx2xml ebi2xml isi2xml med2xml wordbib2xml modsclean ris2xml xml2ads xml2bib xml2end xml2isi xml2ris xml2wordbib )
-
-set VERSION = $1
-set POSTFIX = $2
-
-if ( ! (-e update) ) mkdir update
-if ( -e update/bibutils_${VERSION} ) /bin/rm -r update/bibutils_${VERSION}
-mkdir update/bibutils_${VERSION}
-
-foreach p ( $programs )
-	cp bin/${p} update/bibutils_${VERSION}/${p}
-end
-
-cd update
-
-tar cvf - bibutils_${VERSION} | gzip - > bibutils_${VERSION}${POSTFIX}.tgz
-
-cd ..
-
-rm -r update/bibutils_${VERSION}
-
diff --git a/maketgz.sh b/maketgz.sh
new file mode 100755
index 0000000..e239ff6
--- /dev/null
+++ b/maketgz.sh
@@ -0,0 +1,28 @@
+#!/bin/sh
+#
+# $1 = version number
+# $2 = postfix
+# $3 = library target
+# $4 = executable extension (.exe for Windows)
+#
+programs="biblatex2xml bib2xml copac2xml ebi2xml end2xml endx2xml ebi2xml isi2xml med2xml wordbib2xml modsclean ris2xml xml2ads xml2bib xml2end xml2isi xml2ris xml2wordbib"
+VERSION=$1
+POSTFIX=$2
+LIBTARGET=$3
+EXEEXT=$4
+
+if [ -e update/bibutils_${VERSION} ] ; then
+	rm -r update/bibutils_${VERSION}
+fi
+mkdir -p update/bibutils_${VERSION}
+for p in $programs ; do
+	cp bin/${p}${EXEEXT} update/bibutils_${VERSION}/
+done
+if [ ${LIBTARGET} != libbibutils.a ]; then
+	cp lib/${LIBTARGET} update/bibutils_${VERSION}/
+fi
+cd update
+tar cvf - bibutils_${VERSION} | gzip - > bibutils_${VERSION}${POSTFIX}.tgz
+cd ..
+rm -r update/bibutils_${VERSION}
+
diff --git a/readme.txt b/readme.txt
index 6724ce5..0dc0250 100644
--- a/readme.txt
+++ b/readme.txt
@@ -22,7 +22,7 @@ To configure the makefile, simply run:
 
 or alternatively
 
-% csh -f configure
+% sh -f configure
 
 The output should look something like:
 
diff --git a/test/Makefile b/test/Makefile
index 724bc38..01feccc 100644
--- a/test/Makefile
+++ b/test/Makefile
@@ -2,23 +2,23 @@
 # bibutils unit tests MAKEFILE
 #
 
-CFLAGS     = -Wall -I ../lib
-LIBDIR     = -L../lib
-LIBS       = -lbibutils 
-PROGS      = newstr_test entities_test utf8_test
+CFLAGS     = -I ../lib $(CFLAGSIN)
+PROGS      = entities_test \
+             newstr_test \
+             utf8_test
 
 all: $(PROGS)
 
-entities_test : entities_test.o ../lib/libbibutils.a
-	$(CC) $(LDFLAGS) $^ $(LOADLIBS) $(LDLIBS) -o $@
+entities_test : entities_test.o ../lib/libbibcore.a
+	$(CC) $(LDFLAGS) $^ $(LOADLIBES) $(LDLIBS) -o $@
 
-utf8_test : utf8_test.o ../lib/libbibutils.a
-	$(CC) $(LDFLAGS) $^ $(LOADLIBS) $(LDLIBS) -o $@
+utf8_test : utf8_test.o ../lib/libbibcore.a
+	$(CC) $(LDFLAGS) $^ $(LOADLIBES) $(LDLIBS) -o $@
 
-newstr_test : newstr_test.o ../lib/libbibutils.a
-	$(CC) $(LDFLAGS) $^ $(LOADLIBS) $(LDLIBS) -o $@
+newstr_test : newstr_test.o ../lib/libbibcore.a
+	$(CC) $(LDFLAGS) $^ $(LOADLIBES) $(LDLIBS) -o $@
 
-test: entities_test newstr_test FORCE
+test: $(PROGS) FORCE
 	./newstr_test
 	./entities_test
 	./utf8_test
@@ -28,5 +28,8 @@ clean:
 
 realclean:
 	rm -f *.o core $(PROGS)
+	@for p in $(PROGS); \
+               do ( rm -f $$p$(EXEEXT) ); \
+        done
 
 FORCE:
diff --git a/test/Makefile.dynamic b/test/Makefile.dynamic
new file mode 100644
index 0000000..8b23cb2
--- /dev/null
+++ b/test/Makefile.dynamic
@@ -0,0 +1,40 @@
+#
+# bibutils unit tests MAKEFILE
+#
+
+CFLAGS   = -I ../lib $(CFLAGSIN)
+LDFLAGS  = -L ../lib
+LDLIBS   = -lbibutils
+
+PROGS    = entities_test \
+           newstr_test \
+           utf8_test
+
+all: $(PROGS)
+
+entities_test : entities_test.o
+	$(CC) $(LDFLAGS) $^ $(LOADLIBES) $(LDLIBS) -o $@
+
+utf8_test : utf8_test.o
+	$(CC) $(LDFLAGS) $^ $(LOADLIBES) $(LDLIBS) -o $@
+
+newstr_test : newstr_test.o
+	$(CC) $(LDFLAGS) $^ $(LOADLIBES) $(LDLIBS) -o $@
+
+test: $(PROGS) FORCE
+	( LD_LIBRARY_PATH="../lib"; \
+	export LD_LIBRARY_PATH ; \
+	./newstr_test; \
+	./entities_test; \
+	./utf8_test )
+
+clean:
+	rm -f *.o core 
+
+realclean:
+	rm -f *.o core $(PROGS)
+	@for p in ${PROGS}; \
+               do ( rm -f $$p${EXEEXT} ); \
+        done
+
+FORCE:
diff --git a/test/Makefile.static b/test/Makefile.static
new file mode 100644
index 0000000..01feccc
--- /dev/null
+++ b/test/Makefile.static
@@ -0,0 +1,35 @@
+#
+# bibutils unit tests MAKEFILE
+#
+
+CFLAGS     = -I ../lib $(CFLAGSIN)
+PROGS      = entities_test \
+             newstr_test \
+             utf8_test
+
+all: $(PROGS)
+
+entities_test : entities_test.o ../lib/libbibcore.a
+	$(CC) $(LDFLAGS) $^ $(LOADLIBES) $(LDLIBS) -o $@
+
+utf8_test : utf8_test.o ../lib/libbibcore.a
+	$(CC) $(LDFLAGS) $^ $(LOADLIBES) $(LDLIBS) -o $@
+
+newstr_test : newstr_test.o ../lib/libbibcore.a
+	$(CC) $(LDFLAGS) $^ $(LOADLIBES) $(LDLIBS) -o $@
+
+test: $(PROGS) FORCE
+	./newstr_test
+	./entities_test
+	./utf8_test
+
+clean:
+	rm -f *.o core 
+
+realclean:
+	rm -f *.o core $(PROGS)
+	@for p in $(PROGS); \
+               do ( rm -f $$p$(EXEEXT) ); \
+        done
+
+FORCE:
diff --git a/test/entities_test.o b/test/entities_test.o
new file mode 100644
index 0000000..04cda1d
Binary files /dev/null and b/test/entities_test.o differ
diff --git a/todos.txt b/todos.txt
deleted file mode 100644
index 02a83ec..0000000
--- a/todos.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-Handle name suffixes better
-Finish wordbib2xml support
-Fix ris input that has both AB and N2 -- append new data to previously
-existing ABSTRACT field...

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/debian-science/packages/bibutils.git



More information about the debian-science-commits mailing list