]> git.ipfire.org Git - thirdparty/bind9.git/commitdiff
1196. [contrib] update mdnkit to 2.2.3.
authorMark Andrews <marka@isc.org>
Fri, 8 Feb 2002 05:42:24 +0000 (05:42 +0000)
committerMark Andrews <marka@isc.org>
Fri, 8 Feb 2002 05:42:24 +0000 (05:42 +0000)
185 files changed:
CHANGES
contrib/idn/mdnkit/ChangeLog
contrib/idn/mdnkit/DISTFILES [new file with mode: 0644]
contrib/idn/mdnkit/INSTALL [new file with mode: 0644]
contrib/idn/mdnkit/INSTALL.ja [new file with mode: 0644]
contrib/idn/mdnkit/LICENSE.txt
contrib/idn/mdnkit/Makefile.in
contrib/idn/mdnkit/NEWS
contrib/idn/mdnkit/README
contrib/idn/mdnkit/README.ja
contrib/idn/mdnkit/acconfig.h
contrib/idn/mdnkit/aclocal.m4
contrib/idn/mdnkit/config.guess
contrib/idn/mdnkit/config.sub
contrib/idn/mdnkit/configure
contrib/idn/mdnkit/configure.in
contrib/idn/mdnkit/include/Makefile.in
contrib/idn/mdnkit/include/config.h.in
contrib/idn/mdnkit/include/config.h.win
contrib/idn/mdnkit/include/mdn/Makefile.in
contrib/idn/mdnkit/include/mdn/ace.h
contrib/idn/mdnkit/include/mdn/altdude.h
contrib/idn/mdnkit/include/mdn/amcacem.h
contrib/idn/mdnkit/include/mdn/amcaceo.h
contrib/idn/mdnkit/include/mdn/amcacer.h
contrib/idn/mdnkit/include/mdn/amcacev.h [new file with mode: 0644]
contrib/idn/mdnkit/include/mdn/amcacew.h [new file with mode: 0644]
contrib/idn/mdnkit/include/mdn/amcacez.h [new file with mode: 0644]
contrib/idn/mdnkit/include/mdn/api.h
contrib/idn/mdnkit/include/mdn/assert.h
contrib/idn/mdnkit/include/mdn/brace.h
contrib/idn/mdnkit/include/mdn/checker.h
contrib/idn/mdnkit/include/mdn/converter.h
contrib/idn/mdnkit/include/mdn/debug.h
contrib/idn/mdnkit/include/mdn/delimitermap.h
contrib/idn/mdnkit/include/mdn/dn.h
contrib/idn/mdnkit/include/mdn/dude.h
contrib/idn/mdnkit/include/mdn/filechecker.h
contrib/idn/mdnkit/include/mdn/filemapper.h
contrib/idn/mdnkit/include/mdn/lace.h
contrib/idn/mdnkit/include/mdn/localencoding.h
contrib/idn/mdnkit/include/mdn/log.h
contrib/idn/mdnkit/include/mdn/logmacro.h
contrib/idn/mdnkit/include/mdn/mace.h [new file with mode: 0644]
contrib/idn/mdnkit/include/mdn/mapper.h
contrib/idn/mdnkit/include/mdn/mapselector.h
contrib/idn/mdnkit/include/mdn/msgheader.h
contrib/idn/mdnkit/include/mdn/msgtrans.h
contrib/idn/mdnkit/include/mdn/nameprep.h
contrib/idn/mdnkit/include/mdn/normalizer.h
contrib/idn/mdnkit/include/mdn/race.h
contrib/idn/mdnkit/include/mdn/res.h
contrib/idn/mdnkit/include/mdn/resconf.h
contrib/idn/mdnkit/include/mdn/result.h
contrib/idn/mdnkit/include/mdn/selectiveencode.h
contrib/idn/mdnkit/include/mdn/strhash.h
contrib/idn/mdnkit/include/mdn/ucsmap.h
contrib/idn/mdnkit/include/mdn/ucsset.h
contrib/idn/mdnkit/include/mdn/unicode.h
contrib/idn/mdnkit/include/mdn/unormalize.h
contrib/idn/mdnkit/include/mdn/utf5.h
contrib/idn/mdnkit/include/mdn/utf6.h
contrib/idn/mdnkit/include/mdn/utf8.h
contrib/idn/mdnkit/include/mdn/util.h
contrib/idn/mdnkit/include/mdn/version.h
contrib/idn/mdnkit/lib/Makefile.in
contrib/idn/mdnkit/lib/ace.c
contrib/idn/mdnkit/lib/altdude.c
contrib/idn/mdnkit/lib/amcacem.c
contrib/idn/mdnkit/lib/amcaceo.c
contrib/idn/mdnkit/lib/amcacer.c
contrib/idn/mdnkit/lib/amcacev.c [new file with mode: 0644]
contrib/idn/mdnkit/lib/amcacew.c [new file with mode: 0644]
contrib/idn/mdnkit/lib/amcacez.c [new file with mode: 0644]
contrib/idn/mdnkit/lib/api.c
contrib/idn/mdnkit/lib/brace.c
contrib/idn/mdnkit/lib/checker.c
contrib/idn/mdnkit/lib/converter.c
contrib/idn/mdnkit/lib/debug.c
contrib/idn/mdnkit/lib/delimitermap.c
contrib/idn/mdnkit/lib/dn.c
contrib/idn/mdnkit/lib/dude.c
contrib/idn/mdnkit/lib/filechecker.c
contrib/idn/mdnkit/lib/filemapper.c
contrib/idn/mdnkit/lib/lace.c
contrib/idn/mdnkit/lib/localencoding.c
contrib/idn/mdnkit/lib/log.c
contrib/idn/mdnkit/lib/mace.c [new file with mode: 0644]
contrib/idn/mdnkit/lib/make.wnt
contrib/idn/mdnkit/lib/mapper.c
contrib/idn/mdnkit/lib/mapselector.c
contrib/idn/mdnkit/lib/mdn.conf.sample.in
contrib/idn/mdnkit/lib/msgheader.c
contrib/idn/mdnkit/lib/msgtrans.c
contrib/idn/mdnkit/lib/nameprep.c
contrib/idn/mdnkit/lib/nameprep_template.c
contrib/idn/mdnkit/lib/nameprepdata.c
contrib/idn/mdnkit/lib/normalizer.c
contrib/idn/mdnkit/lib/race.c
contrib/idn/mdnkit/lib/res.c
contrib/idn/mdnkit/lib/resconf.c
contrib/idn/mdnkit/lib/result.c
contrib/idn/mdnkit/lib/selectiveencode.c
contrib/idn/mdnkit/lib/strhash.c
contrib/idn/mdnkit/lib/ucsmap.c
contrib/idn/mdnkit/lib/ucsset.c
contrib/idn/mdnkit/lib/unicode.c
contrib/idn/mdnkit/lib/unicode_template.c [new file with mode: 0644]
contrib/idn/mdnkit/lib/unicodedata_301.c [moved from contrib/idn/mdnkit/lib/unicodedata.c with 99% similarity]
contrib/idn/mdnkit/lib/unicodedata_310.c [new file with mode: 0644]
contrib/idn/mdnkit/lib/unormalize.c
contrib/idn/mdnkit/lib/utf5.c
contrib/idn/mdnkit/lib/utf6.c
contrib/idn/mdnkit/lib/utf8.c
contrib/idn/mdnkit/lib/util.c
contrib/idn/mdnkit/lib/version.c
contrib/idn/mdnkit/make.wnt
contrib/idn/mdnkit/man/Makefile.in
contrib/idn/mdnkit/man/libmdn.3.in
contrib/idn/mdnkit/man/mdn.conf.5.in
contrib/idn/mdnkit/map/Makefile.in
contrib/idn/mdnkit/map/jp.map
contrib/idn/mdnkit/mdnsproxy/Makefile.in
contrib/idn/mdnkit/mdnsproxy/acl.c
contrib/idn/mdnkit/mdnsproxy/logging.c
contrib/idn/mdnkit/mdnsproxy/make.wnt
contrib/idn/mdnkit/mdnsproxy/mdnsproxy.8.in
contrib/idn/mdnkit/mdnsproxy/mdnsproxy.conf.sample
contrib/idn/mdnkit/mdnsproxy/mdnsproxy.h
contrib/idn/mdnkit/mdnsproxy/message.c
contrib/idn/mdnkit/mdnsproxy/os2main.c
contrib/idn/mdnkit/mdnsproxy/proxycnf.c
contrib/idn/mdnkit/mdnsproxy/proxycnf.h
contrib/idn/mdnkit/mdnsproxy/server.c
contrib/idn/mdnkit/mdnsproxy/translate.c
contrib/idn/mdnkit/mdnsproxy/unxmain.c
contrib/idn/mdnkit/mdnsproxy/winmain.c
contrib/idn/mdnkit/mdnsproxy/winserv.c
contrib/idn/mdnkit/mdnsproxy/winserv.h
contrib/idn/mdnkit/mkinstalldirs
contrib/idn/mdnkit/patch/bind9/bind-9.1.3-patch [new file with mode: 0644]
contrib/idn/mdnkit/patch/bind9/bind-9.2.0-patch [new file with mode: 0644]
contrib/idn/mdnkit/patch/bind9/patch.most
contrib/idn/mdnkit/tools/Makefile.in
contrib/idn/mdnkit/tools/mdnconv/Makefile.in
contrib/idn/mdnkit/tools/mdnconv/mdnconv.1
contrib/idn/mdnkit/tools/mdnconv/mdnconv.c
contrib/idn/mdnkit/tools/mdnconv/mdnslookup.in [new file with mode: 0644]
contrib/idn/mdnkit/tools/mdnconv/util.c
contrib/idn/mdnkit/tools/mdnconv/util.h
contrib/idn/mdnkit/tools/runmdn/Makefile.in
contrib/idn/mdnkit/tools/runmdn/resolver.c
contrib/idn/mdnkit/tools/runmdn/runmdn.1
contrib/idn/mdnkit/tools/runmdn/runmdn.in
contrib/idn/mdnkit/tools/runmdn/stub.c
contrib/idn/mdnkit/tools/runmdn/stub.h
contrib/idn/mdnkit/util/SparseMap.pm
contrib/idn/mdnkit/util/UCD.pm
contrib/idn/mdnkit/util/generate_nameprep_data.pl
contrib/idn/mdnkit/util/generate_normalize_data.pl
contrib/idn/mdnkit/win/README.WIN
contrib/idn/mdnkit/wsock/common/checkdll.c
contrib/idn/mdnkit/wsock/common/convert.c
contrib/idn/mdnkit/wsock/common/dllmain.c
contrib/idn/mdnkit/wsock/common/dump.c
contrib/idn/mdnkit/wsock/common/encoding.c
contrib/idn/mdnkit/wsock/common/hook.c
contrib/idn/mdnkit/wsock/common/jpnicmdn.h
contrib/idn/mdnkit/wsock/common/make.wnt
contrib/idn/mdnkit/wsock/common/printf.c
contrib/idn/mdnkit/wsock/config/make.wnt
contrib/idn/mdnkit/wsock/config/mdnconf.tcl
contrib/idn/mdnkit/wsock/make.wnt
contrib/idn/mdnkit/wsock/wsock11/dlldef.h
contrib/idn/mdnkit/wsock/wsock11/dllfunc.c
contrib/idn/mdnkit/wsock/wsock11/dllload.c
contrib/idn/mdnkit/wsock/wsock11/dllmain.c
contrib/idn/mdnkit/wsock/wsock11/dllstub.c
contrib/idn/mdnkit/wsock/wsock11/make.wnt
contrib/idn/mdnkit/wsock/wsock20/dlldef.h
contrib/idn/mdnkit/wsock/wsock20/dllfunc.c
contrib/idn/mdnkit/wsock/wsock20/dllload.c
contrib/idn/mdnkit/wsock/wsock20/dllmain.c
contrib/idn/mdnkit/wsock/wsock20/dllstub.c
contrib/idn/mdnkit/wsock/wsock20/make.wnt

diff --git a/CHANGES b/CHANGES
index a04dd1312afe3cdec40a260a7edb1f780f3c865c..2186003dbcc34ee9d5c6e3760998cb86afa6ca58 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -1,3 +1,5 @@
+1196.  [contrib]       update mdnkit to 2.2.3.
+
 1195.  [bug]           Attempts to redefine builtin acls should be caught.
                        [RT #2403]
 
index 2c7f660bb18d9753aca3629a233ea68c3486dad6..da26f2b48f7d154ee2f1e99c3a1d70765c9ffc48 100644 (file)
@@ -1,3 +1,421 @@
+2001-12-06
+       * 2.2.3 release.
+
+       * lib/uticode.c: fix a bug in mdn__unicode_decompose() that assumes
+       sizeof(size_t) equals to sizeof(int).
+       * lib/converter.c: always include <mdn/utf5.h>.
+
+2001-12-03
+       * DISTFILES: add patch/bind9/bind-9.2.0.patch.
+
+       * lib/checker.c, lib/mapper.c, lib/nameprep.c, lib/nameprepdata.c,
+       lib/normalizer.c: recognize "nameprep-06".
+       * lib/mdn.conf.sample.in, man/mdn.conf.5.in, tools/mdnconv/mdnconv.1:
+       add description about "nameprep-06".
+
+2001-11-28
+
+       * lib/Makefile.in, tools/runmdn/Makefile.in: Change LIB_REVISION 
+       from 2 to 3.
+
+       * include/mdn/version.h: set MDNKIT_VERSION to "2.2.3".
+
+2001-11-21
+       * tools/runmdn/stub.c: fix type mismatch bug of `fp'.
+       * lib/converter.c: always include <mdn/debug.h>.
+
+2001-10-31
+       * 2.2.2 release.
+
+       * include/mdn/version.h: set MDNKIT_VERSION to "2.2.3".
+
+       * configure.in: on NetBSD, use `:' as a separator of LD_PRELOAD
+       if /usr/bin/grep is ELF binary, use ` ' otherwise.
+       * wsock/config/mdnconf.tcl: update version number to 2.2.2.
+
+       * README, README.ja: update the list of supported systems.
+
+2001-10-30
+       * wsock/config/mdnconf.tcl: update version number to 2.2.1.
+       
+2001-10-29
+       * 2.2.1 release.
+
+       * include/mdn/version.h: set MDNKIT_VERSION to "2.2.1".
+
+       * lib/Makefile.in, tools/runmdn/Makefile.in: Change LIB_REVISION 
+       from 1 to 2.
+
+2001-10-17
+       * lib/checker.c (mdn_checker_lookup): Fix a serious bug that the
+       function overlooks a prohibited character.
+
+2001-09-19
+       * 2.2 release.
+
+2001-09-17
+       * NEWS: add description about deletion of `allow-utf8' to "Major
+       changes in version 2.1".
+
+       * README, README.ja: add some platforms to the list of supported
+       systems.
+
+       * include/mdn/version.h: set MDNKIT_VERSION to "2.2".
+
+2001-09-14
+       * lib/amcacez.c, include/mdn/amcacez.h: update draft version.
+
+2001-09-12
+       * wsock/config/mdnconf.tcl: update version number.
+
+2001-09-11
+       * INSTALL.ja: The title is fixed.
+
+2001-09-10
+       * Makefile.in: add dummy target 'force' to work around a problem
+       in cygwin, where the existance of "INSTALL" file disturbs
+       "make install".
+       * lib/make.wnt: add rules for amcace[vwz].o and mace.o.
+       * util/SparseMap.pm, util/generate_nameprep_data.pl,
+       util/generate_normalize_data.pl: add 'const' qualification to
+       the generated (large) constant tables, for better data sharing.
+       * lib/nameprepdata.c, lib/unicodedata_301.c, lib/unicodedata_310.c:
+       regenerated using above scripts.
+       * lib/nameprep.c, lib/nameprep_template.c, lib/unicode.c,
+       lib/unicode_template.c: accommodate declarations to the above
+       changes.
+
+2001-08-28
+       * 2.2rc1 release.
+
+       * DISTFILES: delete patch/bind9/bind-9.1.2-patch.
+
+       * include/mdn/version.h: set MDNKIT_VERSION to 2.2rc1.
+
+2001-08-27
+       * include/mdn/amcacez.h, lib/amcacez.c: update to conform to
+       version 0.3.0 (draft-ietf-idn-amc-ace-z-00.txt).
+
+       * configure.in, lib/amcacez.c, INSTALL, INSTALL.ja: define "zq--"
+       as new default ACE prefix for AMC-ACE-Z.
+
+2001-08-21
+       * lib/mdn.conf.sample.in, man/mdn.conf.5.in, tools/mdnconv/mdnconv.1:
+       undocument unicode-form-{c,d,kd}, unicode-{upper,lower,fold}case,
+       ascii-{upper,lower}case and nameprep-{02,04}.
+
+2001-08-20
+       * tools/runmdn/runmdn.1: Use the term "codeset" rather than
+       "encoding".
+
+2001-08-17
+       * INSTALL: fix typo.
+
+2001-08-15
+       * README, README.ja: show a list of supported systems as a table.
+
+       * tools/runmdn/runmdn.in: parse command line options, and recognize
+       option `-e' which sets local encoding.
+       * tools/runmdn/runmdn.1: add description about `-e' option.
+       * tools/runmdn/Makefile.in: update `runmdn' if it is older than
+       `runmdn.in'.
+
+       * INSTALL and INSTALL.ja: new files.
+       * README, README.ja: `Compilation and Intallation' section is moved
+       to INSTALL and INSTALL.ja.
+       * DISTFILES: add INSTALL and INSTALL.ja.
+
+       * lib/converter.c, README, README.ja: unless --enable-extra-ace
+       option to configure is specified, support only three ACEs:
+       AMC-ACE-Z, RACE and DUDE.
+
+       * lib/namrprep.c, lib/converter.c, lib/checker.c, lib/mapper.c:
+       delete `nameprep-02' and `nameprep-04' supports.
+
+       * lib/mdn.conf.sample.in, man/mdn.conf.5.in, tools/mdnconv/mdnconv.1:
+       delete description about `nameprep-02', `nameprep-04' and extra ACEs.
+
+2001-08-14
+       * README, README.ja: update information about compilation problem
+       of libiconv-1.6.1 on NetBSD.
+
+2001-08-13
+       * README, README.ja: revise description of compilation and
+       installation process.
+       * tools/mdnconv/mdnconv.c: revise error messages displayed
+       when default input/output codeset is wrong.
+
+2001-08-06
+       * 2.2beta3 release.
+
+       * include/mdn/version.h: set MDNKIT_VERSION to "2.2beta3".
+       * README, README.ja: describe CPU architure of FreeBSD on which
+       we have tested.
+
+2001-08-01
+       * util/generate_nameprep_data.pl: add pragma 'use bytes;' to
+       avoid outputing incorrect map data when perl 5.6.1 is used.
+       * lib/nameprepdata.c: add data for nameprep-04 and -05.
+       * lib/nameprep.c: add support for 'nameprep-04' and 'nameprep-05'.
+       current version is now nameprep-05.
+       * lib/checker.c, lib/mapper.c: add 'nameprep-04' and 'nameprep-05'.
+       * lib/unicodedata.c: removed.
+       * lib/unicodedata_301.c, lib/unicodedata_310.c: created.
+       both contains various Unicode table of version 3.0.1 and 3.1.0.
+       * lib/unicode_template.c: created. contains helper functions for
+       each Unicode versions.
+       * include/mdn/unicode.h, lib/unicode.c: add new interface
+       functions 'mdn__unicode_create' and 'mdn__unicode_destroy'.
+       now all existing functions take an extra argument which specifies
+       the version of Unicode standard.
+       * include/mdn/unicode.h, lib/unicode.c
+       * include/mdn/unormalize.h, lib/unormalize.c: change interface
+       so that the version of Unicode standard can be specified.
+       * lib/normalizer.c: add bunch of normalization schemes,
+       unicode-from-{c,d,kc,kd}/{3.0.1,3.1.0}, nameprep-{04,05}.
+       use new unormalize module interface.
+       * DISTFILES, lib/Makefile.in: add unicode_template.c,
+       unicodedata_301.c and unicodedata_310.c.  remove unicodedata.c.
+       * util/generate_normalize_data.pl: add -prefix option.
+       * man/mdn.conf.5.in, tools/mdnconv/mdnconv.1: add description of
+       newly added schemes.
+       * lib/mdn.conf.sample.in: likewise.
+
+2001-07-31
+       * include/mdn/res.h, lib/res.c: add new functions and macros
+       mdn_res_nameprep() and mdn_res_nameprepcheck().
+       * include/mdn/api.h: add new macro mdn_nameprepcheck().
+
+2001-07-27
+       * README, README.ja: describe `--with-utf-6-prefix'.
+
+2001-07-26
+       * tools/mdnconv/mdnconv.1: add a description on the nameprep check
+       performed in reverse conversion mode.
+       * tools/mdnconv/util.c: fix typo in comment.
+
+       * tools/mdnconv/mdnconv.c: don't perform selective-decode or
+       selective-decode if both `-whole' and `-reverse' options are specified.
+       * tools/mdnconv/mdnconv.c: perform NAMEPREP unassigned check if both
+       `-reverse' and `-unassigncheck' options are specified
+
+       * tools/mdnconv/mdnslookup.in: add missing quotation.
+
+       * DISTFILES: add patch/bind9/bind-9.1.3-patch.
+
+2001-07-25
+       * tools/mdnconv/mdnslookup.in: new file.
+       * tools/mdnconv/Makefile.in: `all' target also depends on `mdnslookup'.
+       generate `mdnslookup' from `mdnslookup.in'.
+       * README, README.ja: add the ``Check your configuration'' section.
+       * DISTFILES: add tools/mdnconv/mdnslookup.in.
+
+       * tools/mdnconv/Makefile.in: honor LDFLAGS.
+       * lib/amcacez.c: do some optimization.
+
+2001-07-24
+       * README, README.ja: add TOC, ``Supported systems'' section and
+       ``Other configure options'' subsection.
+
+2001-07-23
+       * tools/mdnconv/mdnconv.1, tools/runmdn/runmdn.1: add the ``LOCAL
+       CODESET'' section.
+
+2001-07-18
+       * 2.2beta2 release.
+
+       * README, README.ja: update version number in the title.
+
+2001-07-17
+       * include/mdn/version.h: set MDNKIT_VERSION to "2.2beta2".
+
+       * configure.in: fix result messages of cheking gethostbyaddr()
+       and getnameinfo() flavors.  display "none" if the function is
+       not found.
+
+2001-07-16
+       * include/mdn/amcacez.h, lib/amcacez.c: update to conform to
+       version 0.2.1, which is the version of -00 draft.
+
+2001-07-12
+       * README, README.ja: explain `--enable-debug' option.
+
+2001-07-11
+       * configure.in: add `--enable-debug' option.
+       if this option is specified, add "-DDEBUG" to CFLAGS.
+
+2001-07-10
+       * configure.in: check flavor of getnameinfo().
+       * configure.in: test program for checking flavor of gethostbyaddr()
+       includes <sys/types.h> and <sys/socket.h>, since some system defines
+       `socklen_t' in either file.
+       * configure.in: define GNI_SALEN_T, GNI_HOSTLEN_T, GNI_SERVLEN_T
+       and GNI_FLAGS_T.
+       * tools/runmdn/resolver.c, tools/runmdn/stub.c, tools/runmdn/stub.h:
+       use GNI_SALEN_T, GNI_HOSTLEN_T, GNI_SERVLEN_T and GNI_FLAGS_T to
+       represent types of arguments to getnameinfo().
+
+       * include/mdn/logmacro.h: enable trace-level log even if compiled
+       without DEBUG option.
+       * lib/log.c: slightly optimize mdn_log_getlevel(), as it is called
+       number of times from everywhere.
+
+2001-07-09
+       * lib/res.c: in mdn_res_nameconv(), procedures of insn `!m', `!n'
+       and `!N' converted an input string into a result of NAMEPREP, but
+       it must do NAMEPREP check only.  fixed.
+
+2001-07-06
+       * lib/msgtrans.c: perform NAMEPREP check at decoding a name.
+       * lib/api.c, include/mdn/api.h: mdn_decodename() accepts
+       MDN_UNASCHECK action.
+
+       * mdnsproxy/translate.c: fix typo in a warning message.
+
+       * include/mdn/res.h, lib/mdn/res.c: conversion to alternate encoding
+       is no longer supported.
+       * include/mdn/resconf.h, lib/resconf.c: no longer support 
+       alternate encoding, though functions related to alternate encoding
+       such as mdn_resconf_setalternateconverter() are still remained.
+       ignore `alternate-encoding' entry in a configuration file.
+       * lib/mdn.conf.sample.in: delete `alternate-encoding' entry.
+       * man/mdn.conf.5.in: delete "ALTERNATE-ENCODING ENTRY" section.
+       delete `alternate-encoding' entry in the sample configuration.
+       * man/libmdn.3.in: delete description about alternate encoding.
+
+       * lib/res.c: mdn_res_nameconv() doesn't support insn `a' or `A'
+       any longer.  nameconv_A() and nameconv_a() are removed.
+
+2001-07-05
+       * include/mdn/version.h: set MDNKIT_VERSION to "2.2snap0705".
+
+2001-07-04
+       * include/mdn/amcacez.h, lib/amcacez.c: created.
+       * include/mdn/Makefile.in, lib/Makefile.in, tools/runmdn/Makefile.in:
+       add above new files.
+       * DISTFILES: add above new files.
+       * lib/converter.c: add AMC-ACE-Z.
+       * configure.in: add prefix configuration option
+       (--with-amc-ace-z-prefix) for this ACE.
+       * configure: rebuilt.
+       * lib/amcacew.c: correct a bug in input range check.
+
+       * include/mdn/api.h: add MDN_NAMEPREP to MDN_DECODE_APP.
+       * lib/mdn/api.c: mdn_decodename() recognizes MDN_NAMEPREP action.
+
+       * include/mdn/converter.h: define encoding types: MDN_NONACE,
+       MDN_ACE_STRICTCASE and MDN_ACE_LOOSECASE.
+       * include/mdn/converter.h, lib/converter.c: add new function
+       mdn_converter_encodingtype().
+       * include/mdn/converter.h, lib/converter.c: 3rd argument of
+       mdn_converter_register() is now `encoding_type'.
+
+       * include/mdn/res.h, lib/mdn/res.c: add new insn `!m', `!n', `!p',
+       `!N' and `!u' to mdn_res_nameconv().
+       * include/mdn/res.h, lib/mdn/res.c: mdn_res_dnstoucs(...) is
+       equivalent to mdn_res_nameconv("i!N", ...).
+
+       * lib/checker.c, lib/mapper.c: fix a bug that allocated memory is
+       not disposed if input name is too long.
+
+       * lib/checker.c: mdn_checker_lookup() returns `mdn_success' if
+       registered character is found in an input string.
+       
+2001-07-03
+       * configure.in: check if the codeset name for UTF-8 encoding (`UTF-8',
+       which is default, or the one specified with --with-utf8 option) is
+       valid, and give a warning message if it doesn't seem so.
+       * configure: rebuilt.
+
+2001-07-02
+       * configure.in: check if `iconv.h' exists in the directory specified
+       by --with-iconv-include=DIR, or in the `PREFIX/include' directory
+       specified by --with-libiconv=PREFIX.
+       * configure.in: check if C compiler can find `iconv.h'.
+
+2001-06-25
+       * 2.2beta1 release.
+
+       * include/mdn/version.h: set MDNKIT_VERSION to "2.2beta1", and set
+       MDNKIT_MINOR_VERSION to 2.
+       * lib/Makefile.in, tools/runmdn/Makefile.in: Set library version
+       (LIB_CURRENT:LIB_REVISION:LIB_AGE) to 7:1:0.
+
+2001-06-19
+       * configure.in: add missing double quotation mark (") in
+       AC_OUTPUT_COMMANDS.
+       * include/mdn/dude.h, lib/dude.c: update to conform to -02 spec.
+       * include/mdn/amcacev.h, lib/amcacev.c: created.
+       * include/mdn/amcacew.h, lib/amcacew.c: created.
+       * include/mdn/mace.h, lib/mace.c: created.
+       * include/mdn/Makefile.in, lib/Makefile.in, tools/runmdn/Makefile.in:
+       add above new files.
+       * DISTFILES: add above new files.
+       * lib/converter.c: add AMC-ACE-V, AMC-ACE-W and MACE.
+       * configure.in: add prefix configuration options (--with-*-prefix)
+       for these new ACEs.
+       * configure: rebuilt.
+       * include/mdn/version.h: set MDNKIT_VERSION to "2.2snap0619".
+
+       * configure.in: add `--with-iconv-include' and `--with-libiconv'
+       options.
+       * lib/Makefile.in, mdnsproxy/Makefile.in, tools/mdnconv/Makefile.in,
+       tools/runmnd/Makefile.in: define ICONVINC and append its value to
+       INCS.
+
+2001-06-18
+       * mdnsproxy/logging.c: fix a bug that whether libmdn message is
+       logged or not is determined by `log-level', not `libmdn-log-level'.
+
+       * configure.in: also check glib-2.2 flavor of gethostbyaddr().
+       * configure.in, include/config.h: define GHBA_ADDR_T which is
+       type of 1st argument to gethostbyaddr() and gethostbyaddr_r().
+       * configure.in, tools/Makefile.in: if parameter type list of
+       gethostbyaddr() is unknown, nothing will be built in `tools/runmdn'
+       directory.
+       * tools/runmdn/resolver.c, tools/runmdn/stub.c, tools/runmdn/stub.h:
+       use GHBA_ADD_T as type of 1st parameter to gethostbyaddr() and
+       gethostbyaddr_r().
+       * acconfig.h: delete GETHOST_R_GLIBC_FLAVOR and GHBA_ADDRLEN_T.
+
+2001-06-14
+       * mdnsproxy/logging.c: shorten a program. use vfprintf() rather
+       than vsprintf()+fputs(). 
+
+2001-06-12
+       * lib/converter.c: output warning message if iconv() or iconv_open()
+       fails.
+       * lib/api.c, lib/res.c: output 256 characters maximum, when they
+       output a string to be translated and its result as trace message.
+       * lib/msgtrans.c: log a string to be translated and its result with
+       the priority INFO.
+
+       * lib/res.c, include/mdn/res.h: use the term `insn' rather than
+       `action', for the 2nd argument to mdn_res_nameconv().
+
+2001-06-07
+       * include/mdn/amcacer.h, lib/amcacer.c: update to meet -01 spec.
+
+2001-06-04
+       * mdnsproxy/mdnsproxy.h: define LOGMODE_STDERR.
+       * mdnsproxy/logging.c: output messages to standard error if the
+       configuration entry `log-file' is set to `stderr'.
+       * mdsproxy/logging.c: merge libmdn_logproc_syslog() and 
+       libmdn_logproc_file() into libmdn_logproc().
+       * mdsproxy/logging.c: insert date string to log messages if
+       mdnsproxy logs events to regular file.
+       * mdnsproxy/logging.c: fix a bug that mdnsproxy doesn't turn over
+       a log file correctly.
+       * mdnsproxy/unxmain.c: do not close file descriptor 2.
+
+       * lib/resconf.c: 2nd arguemnt to the following functions can be NULL:
+       mdn_resconf_setalternateconverter(), mdn_resconf_setdelimitermap(),
+       mdn_resconf_setidnconverter(), mdn_resconf_setlocalconverter(),
+       mdn_resconf_setlocalmapselector(), mdn_resconf_setmapper(),
+       mdn_resconf_setnormalizer(), mdn_resconf_setprohibitchecker(),
+       mdn_resconf_setunassignedchecker().
+
 2001-06-01
        * 2.1 release.
 
diff --git a/contrib/idn/mdnkit/DISTFILES b/contrib/idn/mdnkit/DISTFILES
new file mode 100644 (file)
index 0000000..8a6a4c2
--- /dev/null
@@ -0,0 +1,200 @@
+# $Id: DISTFILES,v 1.1 2002/02/08 05:38:30 marka Exp $
+README
+README.ja
+INSTALL
+INSTALL.ja
+ChangeLog
+DISTFILES
+LICENSE.txt
+Makefile.in
+NEWS
+make.wnt
+acconfig.h
+aclocal.m4
+config.guess
+config.sub
+ltconfig
+ltmain.sh
+configure.in
+configure
+install-sh
+mkinstalldirs
+include/Makefile.in
+include/config.h.in
+include/config.h.win
+include/mdn/Makefile.in
+include/mdn/ace.h
+include/mdn/altdude.h
+include/mdn/amcacem.h
+include/mdn/amcaceo.h
+include/mdn/amcacer.h
+include/mdn/amcacev.h
+include/mdn/amcacew.h
+include/mdn/amcacez.h
+include/mdn/api.h
+include/mdn/assert.h
+include/mdn/brace.h
+include/mdn/checker.h
+include/mdn/converter.h
+include/mdn/debug.h
+include/mdn/delimitermap.h
+include/mdn/dn.h
+include/mdn/dude.h
+include/mdn/filechecker.h
+include/mdn/filemapper.h
+include/mdn/lace.h
+include/mdn/localencoding.h
+include/mdn/log.h
+include/mdn/logmacro.h
+include/mdn/mace.h
+include/mdn/mapper.h
+include/mdn/mapselector.h
+include/mdn/msgheader.h
+include/mdn/msgtrans.h
+include/mdn/nameprep.h
+include/mdn/normalizer.h
+include/mdn/race.h
+include/mdn/res.h
+include/mdn/resconf.h
+include/mdn/result.h
+include/mdn/selectiveencode.h
+include/mdn/strhash.h
+include/mdn/ucsmap.h
+include/mdn/ucsset.h
+include/mdn/unicode.h
+include/mdn/unormalize.h
+include/mdn/utf5.h
+include/mdn/utf6.h
+include/mdn/utf8.h
+include/mdn/util.h
+include/mdn/version.h
+lib/Makefile.in
+lib/ace.c
+lib/altdude.c
+lib/amcacem.c
+lib/amcaceo.c
+lib/amcacer.c
+lib/amcacev.c
+lib/amcacew.c
+lib/amcacez.c
+lib/api.c
+lib/brace.c
+lib/checker.c
+lib/converter.c
+lib/debug.c
+lib/delimitermap.c
+lib/dn.c
+lib/dude.c
+lib/filechecker.c
+lib/filemapper.c
+lib/lace.c
+lib/localencoding.c
+lib/log.c
+lib/make.wnt
+lib/mace.c
+lib/mapper.c
+lib/mapselector.c
+lib/msgheader.c
+lib/msgtrans.c
+lib/nameprep.c
+lib/nameprep_template.c
+lib/nameprepdata.c
+lib/normalizer.c
+lib/race.c
+lib/res.c
+lib/resconf.c
+lib/result.c
+lib/selectiveencode.c
+lib/strhash.c
+lib/ucsmap.c
+lib/ucsset.c
+lib/unicode.c
+lib/unicode_template.c
+lib/unicodedata_301.c
+lib/unicodedata_310.c
+lib/unormalize.c
+lib/utf5.c
+lib/utf6.c
+lib/utf8.c
+lib/util.c
+lib/version.c
+lib/mdn.conf.sample.in
+mdnsproxy/Makefile.in
+mdnsproxy/acl.c
+mdnsproxy/logging.c
+mdnsproxy/make.wnt
+mdnsproxy/mdnsproxy.8.in
+mdnsproxy/mdnsproxy.conf.sample
+mdnsproxy/mdnsproxy.def
+mdnsproxy/mdnsproxy.h
+mdnsproxy/message.c
+mdnsproxy/os2main.c
+mdnsproxy/proxycnf.c
+mdnsproxy/proxycnf.h
+mdnsproxy/server.c
+mdnsproxy/translate.c
+mdnsproxy/unxmain.c
+mdnsproxy/winmain.c
+mdnsproxy/winserv.c
+mdnsproxy/winserv.h
+tools/Makefile.in
+tools/mdnconv/Makefile.in
+tools/mdnconv/mdnconv.c
+tools/mdnconv/util.c
+tools/mdnconv/util.h
+tools/mdnconv/mdnconv.1
+tools/mdnconv/mdnslookup.in
+tools/rpm/mdnsproxy.init
+tools/rpm/mdnkit.spec
+tools/runmdn/Makefile.in
+tools/runmdn/resolver.c
+tools/runmdn/stub.c
+tools/runmdn/stub.h
+tools/runmdn/runmdn.1
+tools/runmdn/runmdn.in
+man/Makefile.in
+man/libmdn.3.in
+man/mdn.conf.5.in
+patch/bind8/bind-8.2.3-patch
+patch/bind9/bind-9.1.3-patch
+patch/bind9/bind-9.2.0-patch
+patch/libiconv/libiconv-1.6.1.patch
+patch/squid/squid-2.4.STABLE1-patch
+win/README.WIN
+wsock/README.txt
+wsock/README_j.txt
+wsock/make.wnt
+wsock/common/checkdll.c
+wsock/common/convert.c
+wsock/common/dllmain.c
+wsock/common/dump.c
+wsock/common/encoding.c
+wsock/common/hook.c
+wsock/common/jpnicmdn.def
+wsock/common/jpnicmdn.h
+wsock/common/make.wnt
+wsock/common/printf.c
+wsock/config/make.wnt
+wsock/config/mdnconf.tcl
+wsock/wsock11/dlldef.h
+wsock/wsock11/dllfunc.c
+wsock/wsock11/dllload.c
+wsock/wsock11/dllmain.c
+wsock/wsock11/dllstub.c
+wsock/wsock11/make.wnt
+wsock/wsock11/wsock32.def
+wsock/wsock11/wsock32o.def
+wsock/wsock20/dlldef.h
+wsock/wsock20/dllfunc.c
+wsock/wsock20/dllload.c
+wsock/wsock20/dllmain.c
+wsock/wsock20/dllstub.c
+wsock/wsock20/make.wnt
+wsock/wsock20/ws2_32.def
+wsock/wsock20/ws2_32o.def
+util/SparseMap.pm
+util/UCD.pm
+util/generate_nameprep_data.pl
+util/generate_normalize_data.pl
+map/Makefile.in
+map/jp.map
diff --git a/contrib/idn/mdnkit/INSTALL b/contrib/idn/mdnkit/INSTALL
new file mode 100644 (file)
index 0000000..1a047e4
--- /dev/null
@@ -0,0 +1,248 @@
+
+                               mDNkit
+                    Compilation and Installation
+              Japan Network Information Center (JPNIC)
+
+
+This file explains how to compile and install the source package.
+These procedures take the following steps:
+
+    + Prerequisite: making iconv() available
+    + System Configuration: running `configure' script
+    + Compilation: running `make'
+    + Installation: running `make install'
+    + Site Configuration: tailoring `mdn.conf'
+    + Configuration Check (optional)
+
+
+0. Prerequisite
+
+If your system's library does not have iconv() function, which is a
+general codeset conversion utility, install it as an external library.
+You also need external library if the system's implementation cannot
+handle UTF-8 encoding, or it doesn't support some encodings which your
+client applications uses.
+
+You can get a free version of iconv() implementation (under LGPL
+license, aka GNU libiconv) from:
+
+       http://clisp.cons.org/~haible/packages-libiconv.html
+
+*Note*
+  GNU libiconv-1.6.1 have a compilation problem on NetBSD 1.5.  There
+  is a patch file for the bug under patch/libiconv directory.  If you
+  are a NetBSD 1.5 user and found a problem in compiling libiconv,
+  apply the patch and try again.  The patch file contains brief
+  instructions on how to apply it at the beginning.
+
+
+1. Running configure script
+
+Run `configure' script in the top directory.  This checks various
+characteristics of your system and it will create Makefiles and
+config.h appropriate for your system.
+
+       % ./configure
+
+`configure' accepts many options.  Here is a list of some important
+options.
+
+    --prefix=PREFIX
+       Specifies the prefix of install directories of mDNkit.  The
+       default is /usr/local.  
+
+    --with-libiconv=LIBICONV_PREFIX
+       If you have installed GNU libiconv and would like to link it
+       to mDNkit, specify this option.  The argument LIBICONV_PREFIX
+       is install prefix of GNU libiconv.  If the argument is omitted,
+       PREFIX (derived from --prefix=PREFIX option) is assumed.
+
+       --with-libiconv is shorthand option for GNU libiconv.
+
+           --with-libiconv=/usr/local
+
+       This is equivalent to:
+
+           --with-iconv-include='-I/usr/local/include'
+           --with-iconv='-L/usr/local/lib -R/usr/local/lib -liconv'
+
+       If both the shorthand option (--with-libiconv) and longhand
+       options (--with-iconv-include and/or --with-iconv) are specified,
+       the longhand options have priority.
+
+    --with-iconv-include=ICONV_INCDIR
+       If the header file "iconv.h" resides in a directory where your
+       C compiler doesn't search by default, specify the directory as
+       DIR like this:
+       
+           --with-iconv-include=/usr/local/include
+
+    --with-iconv=ICONV_LIB
+       If your libc doesn't contain iconv(), specify the library
+       that contains iconv().  For example, if iconv() is libiconv
+       in /usr/local/lib, you should specify:
+
+           --with-iconv="-L/usr/local/lib -liconv"
+
+       Note that if the library is a shared one, you might also want
+       to specify -R option, like:
+
+           --with-iconv="-L/usr/local/lib -R/usr/local/lib -liconv"
+
+    --with-iconv-sofile=SOFILE_PATH
+       ``runmdn'' command in this kit needs to know the pathname of
+       shared library file that contains iconv(), if iconv() is not
+       part of libc.  mDNkit tries to find out the pathname from the
+       informaiton provided by ``--with-iconv'' option described
+       above.  But when it fails, you have to specify it with this
+       option, like:
+
+           --with-iconv-sofile=/usr/local/lib/libiconv.so.2.0
+
+    --with-utf8=UTF8_NAME
+       If your iconv() (precisely, iconv_open()) does not accept
+       "UTF-8" as the name of UTF-8 encoding, specify the name for
+       it.  For example if your iconv() uses "utf8" instead, you
+       should specify:
+
+           --with-utf8=utf8
+
+
+2. Other configure options
+
+The configure script has many other options though they are not widely
+used:
+
+    --with-preference=PREFERENCE
+       This option sets the preference for the sample mDNkit
+       configuration file (mdn.conf.sample).  Also this option
+       enables to install default configuration file (mdn.conf)
+       if the file didn't exist.
+       The only preference supported by this version is "jp".
+
+    --with-amc-ace-z-prefix=AMCZ_PREFIX
+       AMC-ACE-Z is a proposed encoding for multilingual domain name
+       in DNS protocol data.  It requires a specific prefix string
+       to distinguish domain names encoded by them from normal ASCII
+       domain names, but the current Internet draft of AMC-ACE-Z
+       doesn't define prefix.  You can specify the prefix with this
+       option.  Otherwise mDNkit defines "zq--" as the prefix.
+
+    --with-race-prefix=RACE_PREFIX
+    --with-dude-prefix=DUDE_PREFIX
+       Also RACE and DUDE are encodings for multilingual domain name,
+       but they are obsolete.  Since Internet drafts for these
+       encodings defines ACE prefixes, mDNkit uses them by default,
+       but you can specify prefix with these options.
+
+    --exec-prefix=EXEC_PREFIX
+       Specifies the prefix of install directories for machine-specific
+       files.  The default is PREFIX (derived from ``--prefix=PREFIX''
+       and its default is /usr/local).
+
+    --sbindir=SBINDIR
+       Specifies the install directory for mdnsproxy.  The default is
+       EXEC_PREFIX/sbin.
+
+    --bindir=BINDIR
+       Specifies the install directory for mdnconv and runmdn.
+       The default is EXEC_PREFIX/bin.
+
+    --libdir=LIBDIR
+       Specifies the install directory for the MDN library (libmdn).
+       The default is EXEC_PREFIX/lib.
+
+    --includedir=INCDIR
+       Specifies the install directory for the header files of the MDN
+       library.  The default is PREFIX/include.
+
+    --sysconfdir=SYSCONFDIR
+       Specifies the install directory for sample configuration files
+       of the MDN Library and mdnsproxy.  The default is PREFIX/etc.
+
+    --mandir=MANDIR
+       Specifies the base install directory for online manuals.
+       The default is PREFIX/man.
+
+    --datadir=DATADIR
+       Specifies the base install directory for machine independent
+       data files.  The default is PREFIX/share.  Some data files for
+       mDNkit will be put under the DATADIR/mdnkit directory.
+
+    --localstatedir=LOCALSTATEDIR
+    --with-logdir=LOGDIR
+       LOGDIR specifies the directory where mdnsproxy outputs log
+       files by default.  Its default value is LOCALSTATEDIR/mdnsproxy,
+       and the default value of LOCALSTATEDIR is PREFIX/var.
+
+    --enable-debug
+       Enable debugging codes.  The fault is "no".
+
+    --enable-shared
+       Build shared library.  The fault is "yes".
+
+    --enable-static
+       Build static library.  The fault is "yes".
+
+To see the list of available options, you should run it with --help
+option.
+
+       % ./configure --help
+
+
+3. Compiling
+
+Run `make' for compilation.
+
+       % make
+
+
+4. Installation
+
+Run `make install' to install binaries and manuals.  Don't forget to
+become a super-user before the installation.
+
+       % su
+       # make install
+
+
+5. Configuration and usage
+
+mDNkit needs a configuration file `mdn.conf' to work properly.  Unless
+you specified --with-preference option to the `configure' script, you
+have to create the file.  Please refer the manual for `mdn.conf' for
+details.  A sample configuration (`mdn.conf.sample') is also provided
+for your convenience.
+
+Also online manuals for `mdnsproxy', `mdnconv' and `runmdn' commands
+are available.  Please refer them for the usage and configuration of
+these commands.
+
+       % man mdn.conf
+       % man mdnsproxy
+       % man mdnconv
+       % man runmdn
+
+
+6. Check your configuration
+
+A simple shell script `mdnslookup' is available in the directory
+`tools/mdnconv', with which you can make queries for multilingual
+domain names.  It may help you check your configuration.
+
+The usage of `mdnslookup' is:
+
+       % tools/mdnconv/mdnslookup <domain-name> <dns-server>
+
+Suppose that <domain-name> is an internationalized domain name written
+in the local codeset (see ``LOCAL CODESET'' in the `mdn.conf' man page
+for details), and <dns-server> is a hostname or IP address of DNS
+server.
+
+`mdnslookup' inquires <mdn-domain-name> from <dns-server>, using
+`mdnconv' and `nslookup' commands.  If something is wrong, you will
+see an error message output by `mdnconv', `nslookup' or `mdnslookup'
+itself.
+
+
+; $Id: INSTALL,v 1.1 2002/02/08 05:38:30 marka Exp $
diff --git a/contrib/idn/mdnkit/INSTALL.ja b/contrib/idn/mdnkit/INSTALL.ja
new file mode 100644 (file)
index 0000000..0edec71
--- /dev/null
@@ -0,0 +1,253 @@
+
+                               mDNkit
+                   \e$B%3%s%Q%$%k$H%$%s%9%H!<%k$NJ}K!\e(B
+       (\e$B<R\e(B) \e$BF|K\%M%C%H%o!<%/%$%s%U%)%a!<%7%g%s%;%s%?!<\e(B (JPNIC)
+
+
+\e$BK\%Q%C%1!<%8$N%3%s%Q%$%k$*$h$S%$%s%9%H!<%k$O!"<!$N$h$&$J%9%F%C%W$G9T\e(B
+\e$B$$$^$9!#\e(B
+
+    + \e$BA0=`Hw\e(B: iconv() \e$B$,MxMQ$G$-$k$h$&$K$9$k\e(B
+    + \e$B%7%9%F%`@_Dj\e(B: `configure' \e$B%9%/%j%W%H$N<B9T\e(B
+    + \e$B%3%s%Q%$%k\e(B: `make' \e$B$N<B9T\e(B
+    + \e$B%$%s%9%H!<%k\e(B: `make install' \e$B$N<B9T\e(B
+    + \e$B%5%$%HKh$N@_Dj\e(B: `mdn.conf' \e$B$K$h$k@_Dj\e(B
+    + \e$B@_Dj$N3NG'\e(B (\e$B>JN,2D\e(B)
+
+
+0. \e$BA0=`Hw\e(B
+  
+\e$B$b$7$"$J$?$N;HMQ$7$F$$$k%7%9%F%`$N%i%$%V%i%j$K\e(B iconv() \e$B$,$J$$>l9g!"$"\e(B
+\e$B$k$$$O$"$C$F$b\e(B UTF-8 \e$B$r07$&$3$H$,$G$-$J$$>l9g$K$O$"$i$+$8$a\e(B iconv() \e$B$r\e(B
+\e$B%$%s%9%H!<%k$7$F$*$$$F$/$@$5$$!#\e(Biconv() \e$B$O!"Nc$($P\e(B GNU libiconv \e$B$H8F$P\e(B
+\e$B$l$k%U%j!<\e(B (LGPL) \e$B$N<BAu$,\e(B
+
+       http://clisp.cons.org/~haible/packages-libiconv.html
+
+\e$B$+$iF~<j2DG=$G$9!#\e(B
+
+*\e$BCm0U\e(B*
+  GNU libiconv-1.6.1 \e$B$O\e(B NetBSD 1.5 \e$B$H$NAH9g$o$;$GLdBj$,$"$j!"%3%s%Q%$\e(B
+  \e$B%k;~$K%(%i!<$,H/@8$7$^$9!#$3$N%P%0$r=$@5$9$k$?$a$N%Q%C%A$,\e(B
+  patch/libiconv \e$B%G%#%l%/%H%j$N2<$KMQ0U$5$l$F$$$^$9$N$G!"$3$NLdBj$KAx\e(B
+  \e$B6x$7$?>l9g$K$O\e(B libiconv \e$B$K%Q%C%A$rEv$F$F:F%$%s%9%H!<%k$7$F$/$@$5$$!#\e(B
+  \e$B$J$*!"%Q%C%A$NEv$FJ}$O%Q%C%A%U%!%$%k$N@hF,$K=q$+$l$F$$$^$9!#\e(B
+
+
+1. configure \e$B%9%/%j%W%H$N<B9T\e(B
+
+\e$B%H%C%W%G%#%l%/%H%j$K$"$k\e(B configure \e$B%9%/%j%W%H$r<B9T$7$F$/$@$5$$!#\e(B
+
+       % ./configure
+
+configure \e$B%9%/%j%W%H$K$O!"?tB?$/$N%*%W%7%g%s$,MQ0U$5$l$F$$$^$9!#$=$N$&\e(B
+\e$B$A=EMW$H;W$o$l$k$b$N$O<!$NDL$j$G$9!#\e(B
+
+    --prefix=PREFIX
+       mDNkit \e$B$r%$%s%9%H!<%k$9$k%G%#%l%/%H%j$N%Q%9$r;XDj$7$^$9!#%G%U%)\e(B
+       \e$B%k%H$O\e(B /usr/local \e$B$G$9!#\e(B
+
+    --with-libiconv=LIBICONV_PREFIX
+       \e$B$"$i$+$8$a%$%s%9%H!<%k$7$F$"$k\e(B GNU libiconv \e$B$r\e(B mDNkit \e$B$K%j%s%/\e(B
+       \e$B$5$;$k>l9g$O!"$3$N%*%W%7%g%s$r;XDj$7$F2<$5$$!#0z?t\e(B LIBICONV_PREFIX
+       \e$B$K$O!"\e(BGNU libiconv \e$B$,%$%s%9%H!<%k$5$l$F$$$k0LCV$r;XDj$7$^$9!#\e(B
+       \e$B0z?t$r>JN,$9$k$H!"\e(BPREFIX (PREFIX \e$B$NCM$O\e(B --prefix=PREFIX \e$B$+$i\e(B
+       \e$BF3=P$5$l$^$9\e(B) \e$B$r;XDj$7$?$b$N$H8+$J$5$l$^$9!#\e(B
+
+       --with-libiconv \e$B$O\e(B GNU libiconv \e$BMQ$NC;=L7A$N%*%W%7%g%s$G\e(B
+
+           --with-libiconv=/usr/local
+
+       \e$B$3$l$O<!$HEy2A$K$J$j$^$9!#\e(B
+
+           --with-iconv-include='-I/usr/local/include'
+           --with-iconv='-L/usr/local/lib -R/usr/local/lib -liconv'
+
+       \e$BC;=L7A$N%*%W%7%g%s\e(B (--with-libiconv) \e$B$HDL>oMQ$N%*%W%7%g%s\e(B
+       (--with-iconv-include, --with-iconv) \e$B$rN>J}$H$b;XDj$7$?>l9g$O!"\e(B
+       \e$BDL>oMQ$N%*%W%7%g%s$[$&$,M%@h$5$l$^$9!#\e(B
+
+    --with-iconv-include=ICONV_INCDIR
+       C \e$B%3%s%Q%$%i$,DL>o$G$O8!:w$7$J$$%G%#%l%/%H%j$K\e(B "iconv.h" \e$B$,CV\e(B
+       \e$B$+$l$F$$$k>l9g!"<!$N$h$&$K$7$F$=$N%G%#%l%/%H%j$r;XDj$7$^$9!#\e(B
+       
+           --with-iconv-include=/usr/local/include
+
+    --with-iconv=ICONV_LIB
+       libc \e$B$K\e(B iconv \e$B$,F~$C$F$$$J$$>l9g\e(B (\e$B>e5-$N%Q%C%1!<%8$rF~$l$?\e(B
+       \e$B>l9g$J$I\e(B) \e$B$K!"\e(Biconv \e$B$N%i%$%V%i%j$r;XDj$7$^$9!#Nc$($P\e(B
+
+               --with-iconv="-L/usr/local/lib -liconv"
+
+       \e$B$N$h$&$K;XDj$7$^$9!#$b$7\e(B iconv \e$B$,6&M-%i%$%V%i%j$K$J$C$F$$$k\e(B
+       \e$B>l9g$K$O!"\e(B-R \e$B%*%W%7%g%s$b;XDj$7$F\e(B
+
+               --with-iconv="-L/usr/local/lib -R/usr/local/lib -liconv"
+
+       \e$B$H$9$kI,MW$,$"$k$+$b$7$l$^$;$s!#\e(B
+
+    --with-iconv-sofile=SOFILE_PATH
+       mDNkit \e$B$K4^$^$l$F$$$k\e(B runmdn \e$B%3%^%s%I$O!"\e(Biconv() \e$B$,\e(B libc \e$B$N0l\e(B
+       \e$BIt$H$7$FDs6!$5$l$J$$$H$-$K!"\e(Biconv() \e$B$r4^$`6&M-%i%$%V%i%j$X$N%Q\e(B
+       \e$B%9L>$rCN$kI,MW$,$"$j$^$9!#\e(BmDNkit \e$B$O!"\e(B--with-iconv \e$B%*%W%7%g%s$N\e(B
+       \e$B5-=R$r4p$K%Q%9L>$r8!:w$7$^$9$,!"$3$l$K<:GT$7$?$H$-$K!"0J2<$N$h\e(B
+       \e$B$&$K6&M-%i%$%V%i%j$r;XDj$9$k$3$H$,$G$-$^$9!#\e(B
+
+               --with-iconv-sofile=/usr/local/lib/libiconvv.so.2.0
+
+    --with-utf8=UTF8_NAME
+       iconv \e$B$K\e(B utf-8 \e$B%(%s%3!<%G%#%s%0$r;XDj$9$k>l9g!"K\%i%$%V%i%j$O\e(B
+       \e$B%G%U%)%k%H$G$O\e(B "UTF-8" \e$B$H$$$&L>A0$r;XDj$7$^$9!#$b$7$"$J$?$N\e(B
+       \e$B%7%9%F%`$N\e(B iconv \e$B$,\e(B "UTF-8" \e$B$H$$$&L>A0$r<u$1IU$1$J$$>l9g$K$O!"\e(B
+       \e$BBe$j$NL>A0$r;XDj$7$^$9!#Nc$($P\e(B "UTF-8" \e$B$G$O$J$/\e(B "utf8" \e$B$N\e(B
+       \e$B>l9g$K$O<!$N$h$&$K;XDj$7$^$9!#\e(B
+
+               --with-utf8=utf8
+
+
+2. \e$B$=$NB>$N\e(B configure \e$B$N%*%W%7%g%s\e(B
+
+\e$B$=$l$[$I$h$/;H$&$o$1$G$O$"$j$^$;$s$,!"\e(Bconfigure \e$B$K$OA09`$N$b$N0J30$K\e(B
+\e$B$bMM!9$J%*%W%7%g%s$,MQ0U$5$l$F$$$^$9!#\e(B
+
+    --with-preference=PREFERENCE
+       mDNkit \e$B$N%5%s%W%k%3%s%U%#%.%e%l!<%7%g%s%U%!%$%k\e(B (mdn.conf.sample) 
+       \e$B$N@_Dj$r\e(B PREFERENCE \e$B8~$1$N$b$N$K$7$^$9!#$^$?$3$N%*%W%7%g%s$r;XDj\e(B
+       \e$B$9$k$H%G%U%)%k%H$N%3%s%U%#%.%e%l!<%7%g%s%U%!%$%k\e(B (mdn.conf) \e$B$,\e(B
+       \e$B%$%s%9%H!<%k$5$l$^$9!#$?$@$7%U%!%$%k$,$9$G$KB8:_$7$F$$$k>l9g$K$O\e(B
+       \e$B%$%s%9%H!<%k$7$^$;$s!#\e(B
+       \e$B8=:_$N$H$3$m!";XDj$G$-$k\e(B PREFERENCE \e$B$O\e(B "jp" \e$B$N$_$G$9!#\e(B
+
+    --with-amc-ace-z-prefix=AMCZ_PREFIX
+       AMC-ACE-Z \e$B$O\e(B DNS \e$B%W%m%H%3%k>e$G;HMQ$5$l$kB?8@8l%I%a%$%sL>$K4X$7\e(B
+       \e$B$FDs0F$5$l$F$$$k%(%s%3!<%G%#%s%0J}<0$G$9!#$3$N%(%s%3!<%G%#%s%0\e(B
+       \e$B$G%3%s%3!<%I$5$l$?%I%a%$%sL>$H=>Mh$N\e(B ASCII \e$B%I%a%$%sL>$H6hJL$9\e(B
+       \e$B$k$?$a$K$O!"8GDj$N@\F,<-$rMQ0U$9$kI,MW$,$"$j$^$9!#$7$+$7$J$,$i!"\e(B
+       \e$B8=:_$N\e(B AMCE-ACE-Z \e$B$N%$%s%?!<%M%C%H%I%i%U%H$G$O@\F,<-$rDj5A$7$F\e(B
+       \e$B$$$^$;$s!#$3$N%*%W%7%g%s$rMQ$$$k$3$H$G!"@\F,<-$r;XDj$9$k$3$H$,\e(B
+       \e$B$G$-$^$9!#;XDj$7$J$1$l$P!"\e(B"zq--" \e$B$,@\F,<-$H$7$FDj5A$5$l$^$9!#\e(B
+
+    --with-race-prefix=RACE_PREFIX
+    --with-dude-prefix=DUDE_PREFIX
+       RACE \e$B$b\e(B DUDE \e$B$b\e(B DNS \e$B%W%m%H%3%k>e$G;HMQ$5$l$kB?8@8l%I%a%$%sL>$K\e(B
+       \e$B4X$7$FDs0F$5$l$F$$$k%(%s%3!<%G%#%s%0J}<0$G$9$,!"$9$G$KGQ$l$?$b\e(B
+       \e$B$N$H$J$C$F$$$^$9!#%(%s%3!<%G%#%s%0J}<0$K$D$$$F5-=R$7$?%$%s%?!<\e(B
+       \e$B%M%C%H%I%i%U%H$K$O@\F,<-$,Dj5A$5$l$F$$$^$9$,!"$3$l$i$N%*%W%7%g\e(B
+       \e$B%s$rMQ$$$F@\F,<-$rJQ99$9$k$3$H$b2DG=$G$9!#\e(B
+
+    --exec-prefix=EXEC_PREFIX
+       \e$B%^%7%s8GM-$N%U%!%$%k$r%$%s%9%H!<%k$9$k%G%#%l%/%H%j$N%Q%9$r;XDj\e(B
+       \e$B$7$^$9!#%G%U%)%k%H$O\e(B PREFIX (``--prefix=PREFIX'' \e$B$K$h$C$F;XDj\e(B
+       \e$B2DG=!"\e(BPREFIX \e$B$N%G%U%)%k%H$O\e(B /usr/local) \e$B$K$J$j$^$9!#\e(B
+
+    --sbindir=SBINDIR
+       mdnsproxy \e$B$r%$%s%9%H!<%k$9$k%G%#%l%/%H%j$r;XDj$7$^$9!#%G%U%)%k\e(B
+       \e$B%H$G$O\e(B EXEC_PREFIX/sbin \e$B$G$9!#\e(B
+
+    --bindir=BINDIR
+       mdnconv \e$B$H\e(B runmdn \e$B$r%$%s%9%H!<%k$9$k%G%#%l%/%H%j$r;XDj$7$^$9!#\e(B
+       \e$B%G%U%)%k%H$G$O\e(B EXEC_PREFIX/bin \e$B$G$9!#\e(B
+
+    --libdir=LIBDIR
+       MDN \e$B%i%$%V%i%j\e(B (libmdn) \e$B$r%$%s%9%H!<%k$9$k%G%#%l%/%H%j$r;XDj$7\e(B
+       \e$B$^$9!#%G%U%)%k%H$G$O\e(B EXEC_PREFIX/lib \e$B$G$9!#\e(B
+
+    --includedir=INCDIR
+       MDN \e$B%i%$%V%i%j$N%X%C%@%U%!%$%k$r%$%s%9%H!<%k$9$k%G%#%l%/%H%j$r\e(B
+       \e$B;XDj$7$^$9!#%G%U%)%k%H$G$O\e(B PREFIX/include \e$B$G$9!#\e(B
+
+    --sysconfdir=SYSCONFDIR
+       MDN \e$B%i%$%V%i%j$*$h$S\e(B mdnsproxy \e$B$N@_Dj%U%!%$%k$N%5%s%W%k$r%$%s\e(B
+       \e$B%9%H!<%k$9$k%G%#%l%/%H%j$r;XDj$7$^$9!#%G%U%)%k%H$G$O\e(B PREFIX/etc
+       \e$B$G$9!#\e(B
+
+    --mandir=MANDIR
+       \e$B%*%s%i%$%s%^%K%e%"%k$N%$%s%9%H!<%k%G%#%l%/%H%j$r;XDj$7$^$9!#\e(B
+       \e$B%G%U%)%k%H$G$O\e(B PREFIX/man \e$B$G$9!#\e(B
+
+    --datadir=DATADIR
+       \e$B0[$J$k%^%7%s$G6&M-2DG=$J%U%!%$%k$r%$%s%9%H!<%k$9$k%G%#%l%/%H%j\e(B
+       \e$B$r;XDj$7$^$9!#%G%U%)%k%H$O\e(B PREFIX/share \e$B$G$9!#\e(BDATADIR/mdnkit 
+       \e$B$N2<$K!"\e(BmDNkit \e$B$G;HMQ$9$k4v$D$+$N%G!<%?%U%!%$%k$,%$%s%9%H!<%k\e(B
+       \e$B$5$l$^$9!#\e(B
+
+    --localstatedir=LOCALSTATEDIR
+    --with-logdir=LOGDIR
+       LOGDIR \e$B$O\e(B mdnsproxy \e$B$N%m%0%U%!%$%k$r=PNO$9$kI8=`$N%G%#%l%/%H%j\e(B
+       \e$B$r;XDj$7$^$9!#\e(BLOGDIR \e$B$N%G%U%)%k%H$O\e(B LOLOCALSTATEDIR/mdnsproxy
+       \e$B$G!"\e(BLOLOCALSTATEDIR \e$B$N%G%U%)%k%H$O\e(B PREFIX/var \e$B$G$9!#\e(B
+
+    --enable-debug
+       \e$B%G%P%C%0MQ$N%3!<%I$rM-8z$K$7$^$9!#%G%U%)%k%H$O\e(B "no" (\e$BL58z\e(B) \e$B$G$9!#\e(B
+
+    --enable-shared
+       \e$B6&M-%i%$%V%i%j$r:n@.$7$^$9!#%G%U%)%k%H$O\e(B "yes" (\e$B:n@.$9$k\e(B) \e$B$G$9!#\e(B
+
+    --enable-static
+       \e$B@EE*%i%$%V%i%j$r:n@.$7$^$9!#%G%U%)%k%H$O\e(B "yes" (\e$B:n@.$9$k\e(B) \e$B$G$9!#\e(B
+
+configure \e$B$K$OB>$K$bB?$/$N%*%W%7%g%s$,$"$j$^$9$,!";D$j$O0lHLE*$J%*%W%7%g\e(B
+\e$B%s$J$N$G@bL@$O>J$-$^$9!#\e(B
+
+       % ./configure --help
+
+\e$B$r<B9T$9$k$H%*%W%7%g%s$N0lMw$,I=<($5$l$^$9!#\e(B
+
+
+3. \e$B%3%s%Q%$%k\e(B
+
+configure \e$B$r<B9T$9$k$H\e(B Makefile \e$B$J$I$,@8@.$5$l$^$9$N$G!"B3$1$F\e(B make\e$B$r\e(B
+\e$B<B9T$7$F%3%s%Q%$%k$7$^$9!#\e(B
+
+       % make
+
+
+4. \e$B%$%s%9%H!<%k\e(B
+
+\e$B%9!<%Q%f!<%6$K$J$C$F%$%s%9%H!<%k$7$^$9!#\e(B
+
+       % su
+       # make install
+
+
+5. \e$B@_Dj$H;HMQJ}K!\e(B
+
+mDNkit \e$B$r@5$7$/F0:n$5$;$k$K$O!"@_Dj%U%!%$%k\e(B `mdn.conf' \e$B$,I,MW$G$9!#\e(B
+configure \e$B%9%/%j%W%H$K\e(B --with-preference \e$B%*%W%7%g%s$r;XDj$7$J$+$C$?>l\e(B
+\e$B9g$K$O$3$N%U%!%$%k$r:n@.$9$kI,MW$,$"$j$^$9!#$3$N@_Dj%U%!%$%k$N>\:Y$K$D\e(B
+\e$B$$$F$O\e(Bmdn.conf \e$B$N%*%s%i%$%s%^%K%e%"%k$r$4Mw$/$@$5$$!#$^$?@_DjNc$,=q$+\e(B
+\e$B$l$?%5%s%W%k%U%!%$%k\e(B (mdn.conf.sample) \e$B$b%$%s%9%H!<%k$5$l$^$9$N$G$4Mx\e(B
+\e$BMQ$/$@$5$$!#\e(B
+
+\e$B$^$?!"\e(Bmdnsproxy\e$B!"\e(Bmdnconv\e$B!"\e(Brunmdn \e$B$H$$$C$?%D!<%k$N%*%s%i%$%s%^%K%e%"%k\e(B
+\e$B$bDs6!$5$l$F$$$^$9!#$3$l$i$N%3%^%s%I$N;H$$J}!"@_DjJ}K!$K4X$7$F$O$=$A$i\e(B
+\e$B$r;2>H$7$F$/$@$5$$!#\e(B
+
+       % man mdn.conf
+       % man mdnsproxy
+       % man mdnconv
+       % man runmdn
+
+
+6. \e$B@_Dj$N3NG'\e(B
+
+`mdnsproxy' \e$B$H$$$&4JC1$J%7%'%k%9%/%j%W%H$,\e(B tools/mdnconv \e$B%G%#%l%/%H%j\e(B
+\e$B$KMQ0U$5$l$F$$$^$9!#$3$N%9%/%j%W%H$r;H$&$H\e(B DNS \e$B%5!<%P$KBP$7$FB?8@8l%I\e(B
+\e$B%a%$%sL>$rLd$$9g$o$;$k$3$H$,$G$-$^$9!#@_Dj%U%!%$%k$N3NG'$KLrN)$D$+$bCN\e(B
+\e$B$l$^$;$s!#\e(B
+
+`mdnslookup' \e$B$N;HMQJ}K!$O!"<!$NDL$j$G$9!#\e(B
+
+       % tools/mdnconv/mdnslookup <domain-name> <dns-server>
+
+\e$B$3$3$G\e(B <domain-name> \e$B$O%m!<%+%k%3!<%I%;%C%H\e(B (\e$B>\$7$/$O\e(B mdn.conf \e$B$N%^%K%e\e(B
+\e$B%"%k$N\e(B ``LOCAL CODESET'' \e$B$r;2>H$N$3$H\e(B) \e$B$G=q$+$l$?B?8@8l%I%a%$%sL>$G!"\e(B
+<dns-server> \e$B$O\e(B DNS \e$B%5!<%P$N%[%9%HL>$b$7$/$O\e(B IP \e$B%"%I%l%9$G$9!#\e(B
+
+`mdnslookup' \e$B$O\e(B `mdnconv' \e$B$*$h$S\e(B `nslookup' \e$B%3%^%s%I$rMQ$$$F!"\e(B
+<dns-server> \e$B$KBP$7$F\e(B <domain-name> \e$B$r0z$-$K9T$-$^$9!#@_Dj$K2?$+4V0c$$\e(B
+\e$B$,$"$l$P!"\e(B`mdnconv', `nslookup', \e$B$"$k$$$O\e(B `mdnslookup' \e$B<+?H$K$h$k%(%i!<\e(B
+\e$B%a%C%;!<%8$,=PNO$5$l$^$9!#\e(B
+
+
+; $Id: INSTALL.ja,v 1.1 2002/02/08 05:38:30 marka Exp $
index 0e333813382f9a6efab420dbdc11f3892dc72fb4..e2e0b79fae8dd75ec1a15872a84c57b2fa61416b 100644 (file)
@@ -1,4 +1,5 @@
-Copyright (c) 2000 Japan Network Information Center.  All rights reserved.
+Copyright (c) 2000, 2001 Japan Network Information Center.
+            All rights reserved.
  
 By using this file, you agree to the terms and conditions set forth bellow.
 
@@ -6,8 +7,8 @@ By using this file, you agree to the terms and conditions set forth bellow.
 
 The following License Terms and Conditions apply, unless a different
 license is obtained from Japan Network Information Center ("JPNIC"),
-a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku,
-Tokyo, Japan.
+a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda,
+Chiyoda-ku, Tokyo 101-0047, Japan.
 
 1. Use, Modification and Redistribution (including distribution of any
    modified or derived work) in source and/or binary forms is permitted
index 602e22caf76972963224aff2071ec38cb59c6378..f005bbefa0fa81685990cf6f22989e07af4e892d 100644 (file)
@@ -1,4 +1,4 @@
-# $Id: Makefile.in,v 1.44 2001/04/17 03:24:09 m-kasahr Exp $
+# $Id: Makefile.in,v 1.1 2002/01/02 02:46:20 marka Exp $
 # Copyright (c) 2000 Japan Network Information Center.  All rights reserved.
 #  
 # By using this file, you agree to the terms and conditions set forth bellow.
@@ -7,8 +7,8 @@
 # 
 # The following License Terms and Conditions apply, unless a different
 # license is obtained from Japan Network Information Center ("JPNIC"),
-# a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku,
-# Tokyo, Japan.
+# a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda,
+# Chiyoda-ku, Tokyo 101-0047, Japan.
 # 
 # 1. Use, Modification and Redistribution (including distribution of any
 #    modified or derived work) in source and/or binary forms is permitted
@@ -67,18 +67,20 @@ SHELL = @SHELL@
 
 SUBDIRS = include lib mdnsproxy man tools map
 
-all:
+all: force
        for d in $(SUBDIRS); do (cd $$d; $(MAKE) all); done
 
-install:
+install: force
        for d in $(SUBDIRS); do (cd $$d; $(MAKE) install); done
 
-clean:
+clean: force
        for d in $(SUBDIRS); do (cd $$d; $(MAKE) clean); done
 
-dist:
+dist: force
        @v=`sed -ne '/^# *define *MDNKIT_VERSION/s/^.*"\([^"]*\)".*$$/\1/p' \
                $(srcdir)/include/mdn/version.h`; \
        echo generate mdnkit-$$v-src.tar.gz; \
        cd $(srcdir); \
        $(PERL) $(MKTARPKG) --gzip=9 mdnkit-$$v-src
+
+force:
index 165fad440f035a2de55a291fb09ed3e52847062a..ce287bb69e05b34fec9fdb155b9a85cb3d05953a 100644 (file)
@@ -1,13 +1,70 @@
-; $Id: NEWS,v 1.22 2001/06/01 01:20:39 ishisone Exp $
+; $Id: NEWS,v 1.1 2002/01/02 02:46:20 marka Exp $
+
+Major changes in version 2.2.3:
+
+* BIND-9 patch for BIND-9.2.0 is available.
+
+* NAMEPREP draft -06 is supported.
+
+* Problems on Tru64 are fixed.
+
+Major changes in version 2.2.2:
+
+* Now runmdn can work on NetBSD-1.5 or later.
+
+Major changes in version 2.2.1:
+
+* Fix a bug that the MDN library misses prohibited characters.
+
+Major changes in version 2.2:
+
+* Alternate encoding is no longer supported. 
+  mDNkit now follows IDNA-03 which says in the section 2.1.2 that An
+  IDNA-aware application MUST NOT do any preparation or conversion to
+  ACE on any non-internationalized name part.  `alternate-encoding'
+  entry in configuration file is simply ignored.
+
+* The MDN library (libmdn) performs NAMEPREP check at decoding an ACE
+  name.  If the name is not NAMEPREPed, libmdn returns a name with ACE
+  encoding instead of local encoding.
+
+* Supported ACEs are now AMC-ACE-Z, RACE and DUDE only.
+  Since the IDN working group has chosen AMC-ACE-Z, most of other ACEs
+  are no longer supported by default.  If you wanted to use those
+  ACEs, specify `--enable-extra-ace' option of configure.
+
+* mdnsproxy can output log messages to standard error.
+
+* mdnsproxy adds date and time string to a message logged to a regular
+  file.
+
+* `--with-iconv-include', `--with-libiconv' and `--enable-debug'
+  options are added to `configure'.
+
+* `--with-libiconv' option is also added to `configure' in BIND-9 patch.
+
+* A build problem on Linux with glibc-2.2 is fixed.
+
+* The base version of BIND-9 patch is now 9.1.3.
+
+* Supported NAMEPREP drafts are -03 and -05.
+  -02 and -04 are not supported.
+
+* `-e' option is added to runmdn to set local encoding.
+
+* `dig', `host' and `nslookup' of BIND-9 with MDN support patch
+  recognize the MDN_DISABLE environment variable.  Those commands turn
+  off MDN support if the variable is defined.
 
 Major changes in version 2.1:
 
 * BIND-9 patch is back.  The patch adds encoding conversion and
   NAMEPREP capability to `dig', `host' and `nslookup'.
-  Since version 2 adopts IDNA, in which all the MDN processing are
-  performed in the application layer before calling the resolver
-  layer, patch to the BIND-9's light-weight resolver found in version
-  1.x are removed.
+  Since mDNkit version 2 adopts IDNA, in which all the MDN processing
+  are performed in the application layer before calling the resolver
+  layer, the patch no longer contains modification of the light-weight
+  resolver or `allow-utf8' extension of `named' configuration syntax
+  found in mDNkit version 1.x.
 
 * Runmdn is back.  The strategy for making resolver MDN-aware has been
   changed from replacing low-level resolver functions to wrapping
index 74f946a3352a8955e8f38e2914bdb22254794b95..398005775d686c5d84f0c08de7fee766106070c1 100644 (file)
@@ -1,11 +1,23 @@
 
                                mDNkit
                -- multilingual domain name toolkit --
-                            version 2.1
+                           version 2.2.3
               Japan Network Information Center (JPNIC)
 
 
-* Overview
+Table of contents of this file:
+
+  1. Overview
+  2. Directory structure of this distribution
+  3. Applying patches
+  4. Supported systems
+  5. Contact information
+
+See the file INSTALL for compilation and installation instructions.
+See the file NEWS for a list of major changes in the current release.
+
+
+1. Overview
 
 mDNkit is a toolkit for handling multilingualized/internationalized 
 domain names.  To handle such names, the following features are required:
@@ -147,13 +159,16 @@ using above components.
    |application|             +---------+---------+           +----------+
    +-----------+
 
-* Directory structure of this distribution
+
+2. Directory structure of this distribution
 
 Below is a directory structure of this distribution with some 
 important files and their brief description.
 
     +README            this file
     +README.ja         .. in Japanese
+    +INSTALL           compilation and installation instructions.
+    +INSTALL.ja                .. in Japanese
     +DISTFILES         list of files in this distribution
     +NEWS              what's new in this version
     +ChangeLog         list of changes
@@ -176,184 +191,72 @@ important files and their brief description.
     +wsock/            source directory for mDN wrapper
 
 
-* Compilation and installation
-
-0. Prerequisite
-
-If your system's library does not have iconv() function, which is a
-general codeset conversion utility, install it as an external library.
-You also need external library if the system's implementation cannot
-handle UTF-8 encoding, or it doesn't support some encodings which your
-client applications uses.
-
-You can get a free version of iconv() implementation (under LGPL
-license), from:
-
-       http://clisp.cons.org/~haible/packages-libiconv.html
-
-*Note*
-  The current version of the above implementation (libiconv-1.6.1) is
-  known to have a compilation problem on NetBSD 1.5.  There is a patch
-  file for the bug under patch/libiconv directory.  If you are a
-  NetBSD 1.5 user and found a problem in compiling libiconv, apply the
-  patch and try again.  The patch file contains brief instructions on
-  how to apply it at the beginning.
-
-1. Running configure script
-
-Run `configure' script in the top directory.  This checks various
-characteristics of your system and it will create Makefiles and
-config.h appropriate for your system.
-
-       % ./configure
-
-`configure' accepts many options.  Here is a list of some important
-options.
-
-    --with-iconv=LIB
-       If your libc doesn't contain iconv(), specify the library
-       that contains iconv().  For example, if iconv() is libiconv
-       in /usr/local/lib, you should specify:
-
-           --with-iconv="-L/usr/local/lib -liconv"
-
-       Note that if the library is a shared one, you might also want to
-       specify -R option, like:
-
-           --with-iconv="-L/usr/local/lib -R/usr/local/lib -liconv"
-
-       If the header file "iconv.h" has installed in a non-standard
-       directory like /usr/local/include, you should specify CFLAGS
-       environment variable.  See below.
-
-    --with-iconv-sofile=PATH
-       ``runmdn'' command in this kit needs to know the pathname of
-       shared library file that contains iconv(), if iconv() is not
-       part of libc.  mDNkit tries to find out the pathname from the
-       informaiton provided by ``--with-iconv'' option described
-       above.  But when it fails, you have to specify it with this
-       option, like:
-
-           --with-iconv-sofile=/usr/local/lib/libiconv.so.2.0
-
-    --with-utf8=NAME
-       If your iconv() (precisely, iconv_open()) does not accept
-       "UTF-8" as the name of UTF-8 encoding, specify the name for
-       it.  For example if your iconv() uses "utf8" instead, you
-       should specify:
-
-           --with-utf8=utf8
-
-    --with-preference=PREFERENCE
-       This option sets the preference for the sample mDNkit
-       configuration file (mdn.conf.sample).  Also this option
-       enables to install default configuration file (mdn.conf)
-       if the file didn't exist.
-       The only preference supported by this version is "jp".
-
-    --with-race-prefix=PREFIX
-    --with-brace-suffix=SUFFIX
-    --with-lace-prefix=PREFIX
-    --with-dude-prefix=PREFIX
-       RACE (Row-based ASCII-Compatible Encoding), BRACE (Bi-mode
-       Row-based ASCII-Compatible Encoding), LACE (Length-based ASCII
-       Compatible Encoding) and DUDE (Differential Unicode Domain
-       Encoding) are proposed encodings for multilingual domain name
-       in DNS protocol data.  They uses a fixed prefix (or suffix)
-       string to distinguish names encoded by them from normal ASCII
-       domain names.  These prefix/suffix are defined by the current
-       Internet Drafts and mDNkit uses them by default, but later
-       version of the drafts may change them.  In that case you can
-       specify the prefix/suffix with these options.
-
-    --with-altdude-prefix=PREFIX
-    --with-altdude-suffix=SUFFIX
-    --with-amc-ace-m-prefix=PREFIX
-    --with-amc-ace-m-suffix=SUFFIX
-    --with-amc-ace-o-prefix=PREFIX
-    --with-amc-ace-o-suffix=SUFFIX
-    --with-amc-ace-r-prefix=PREFIX
-       AltDUDE, AMC-ACE-M, AMC-ACE-O and AMC-ACE-R are also proposed
-       encodings for multilingual domain names.  Unlike encodings
-       mentioned above, the Internet Drafts for these do not define
-       specific prefixes nor suffixes.  mDNkit provides default for
-       them, but you can override them with these options.
-       You can specify either prefix or suffix for AltDUDE, AMC-ACE-M
-       and AMC-ACE-O.  In case both are specified, prefix is
-       preferred.
-
-    --sbindir=DIR
-       Specifies the install directory for mdnsproxy.  Default is
-       /usr/local/sbin.
+3. Applying patches
 
-    --bindir=DIR
-       Specifies the install directory for mdnconv and runmdn.
-       Default is /usr/local/bin.
+This distribution also contains patches for BIND 9.1.3, BIND 8.2.3 and
+Squid 2.4.STABLE1.  The top of these patch files describe how to apply
+the patch and (re)install.
 
-    --sysconfdir=DIR
-       Specifies the install directory for sample files of mdnsproxy
-       configuration and mDNkit's resolver configuration.  Default is
-       /usr/local/etc.
+Note that on Solaris, "patch" command that comes with the system
+sometimes doesn't work correctly.  You may want to install the GNU
+version of the command (http://www.gnu.org/software/patch/) and use
+it.
 
-    --mandir=DIR
-       Specifies the base install directory for online manuals.
-       Default is /usr/local/man.
 
-`configure' has many more options.  To see the list of available
-options, you should run it with --help option.
+4. Supported systems
 
-       % ./configure --help
+We've had successful builds on the following systems:
 
-If you want to specify extra compiler options, like adding non-standard
-directory to include file search path, use environment variable CFLAGS.
+    -------------------------------------------------------------------
+    OS                      iconv library      configure options
+    ===================================================================
+    FreeBSD 4.4-RELEASE     GNU libiconv       --with-libiconv
+    for Intel               1.6.1
+    -------------------------------------------------------------------
+    FreeBSD 3.5.1-RELEASE   GNU libiconv       --with-libiconv
+    for Intel               1.7
+    -------------------------------------------------------------------
+    NetBSD 1.5.2            GNU libiconv       --with-libiconv
+    for Intel               1.7
+    -------------------------------------------------------------------
+    Red Hat Linux 7.1       standard library   none
+    for Intel               (glibc)
+    -------------------------------------------------------------------
+    Red Hat Linux 7.0       standard library   none
+    for Intel               (glibc)
+    -------------------------------------------------------------------
+    Debian/GNU Linux 2.2r3  standard library   none
+    for Intel               (glibc)
+    -------------------------------------------------------------------
+    Solaris 2.6             standard library   none
+    for Sparc               (libc)
+    -------------------------------------------------------------------
+    Windows2000             GNU libiconv       --with-libiconv
+    (cygwin-1.3.2) *1       1.7
+    -------------------------------------------------------------------
 
-       % CFLAGS="-I/usr/local/include -O2" ./configure ...         (for sh)
-       % setenv CFLAGS "-I/usr/local/include -g"; ./configure ...  (for csh)
+    *1: Only mdnconv can work on that system.
 
-2. Compiling
+The latest information about supported/unsupported systems will be
+found at the mDNkit FAQ page linked from:
 
-Run `make' for compilation.
+       http://www.nic.ad.jp/jp/research/idn/
 
-       % make
 
-3. Installation
-
-Run `make install' to install binaries and manuals.  Don't forget to
-become a super-user before the installation.
-
-       % su
-       # make install
-
-4. Configuration and usage
-
-Please consult online manuals for configuration and usage of `mdnsproxy'
-`mdnconv', and `runmdn'.  Also for `mdnconv' and `runmdn', please refer
-the manual of mDNkit's resolver configuration file `mdn.conf'.
-
-       % man mdnsproxy
-       % man mdnconv
-       % man mdn.conf
+5. Contact information
 
+Please see
 
-* Applying patches
-
-This distribution also contains patches for BIND 9.1.1, BIND 8.2.3 and
-Squid 2.4.STABLE1.  The top of these patch files describe how to apply
-the patch and (re)install.
-
-Note that on Solaris, "patch" command that comes with the system
-sometimes doesn't work correctly.  You may want to install the GNU
-version of the command (http://www.gnu.org/software/patch/) and use
-it.
+       http://www.nic.ad.jp/jp/research/idn/
 
+for the latest news about this kit.
+Bug reports and comments on this kit should be sent to
 
-* Contact information
-
-Please see http://www.nic.ad.jp/jp/research/idn/ for the latest news
-about this kit.
+       mdnkit-bugs@nic.ad.jp
+and
+       idn-cmt@nic.ad.jp
 
-Bug reports and comments on this kit should be sent to
-mdnkit-bugs@nic.ad.jp and idn-cmt@nic.ad.jp, respectively.
+respectively.
 
 
-; $Id: README,v 1.29 2001/06/01 01:13:46 ishisone Exp $
+; $Id: README,v 1.1 2002/01/02 02:46:21 marka Exp $
index 456e9f820152fe837ccd9111c04be44c0c47c979..0effa902de52775bad0a4302357d7d33a652a59b 100644 (file)
@@ -1,11 +1,24 @@
 
                                mDNkit
                  -- Â¿¸À¸ì¥É¥á¥¤¥ó̾¥Ä¡¼¥ë¥­¥Ã¥È --
-                           ¥Ð¡¼¥¸¥ç¥ó 2.1
+                          ¥Ð¡¼¥¸¥ç¥ó 2.2.3
        (¼Ò) ÆüËܥͥåȥ¥¯¥¤¥ó¥Õ¥©¥á¡¼¥·¥ç¥ó¥»¥ó¥¿¡¼ (JPNIC)
 
 
-* ³µÍ×
+¤³¤Î¥Õ¥¡¥¤¥ë¤ÎÌܼ¡:
+
+  1. ³µÍ×
+  2. ¥Ç¥£¥ì¥¯¥È¥ê¹½À®
+  3. ¥Ñ¥Ã¥Á¤ÎÅö¤ÆÊý
+  4. ËÜ¥­¥Ã¥È¤¬Âбþ¤·¤Æ¤¤¤ë¥·¥¹¥Æ¥à
+  5. ËÜ¥­¥Ã¥È¤Ë´Ø¤¹¤ëºÇ¿·¾ðÊó¡¢Ì䤤¹ç¤ï¤»¤Ë¤Ä¤¤¤Æ
+
+¥³¥ó¥Ñ¥¤¥ë¤ª¤è¤Ó¥¤¥ó¥¹¥È¡¼¥ëÊýË¡¤Ë¤Ä¤¤¤Æ¤Ï¡¢INSTALL.ja ¤È¤¤¤¦¥Õ¥¡¥¤¥ë¤ò
+¤´Í÷²¼¤µ¤¤¡£¤³¤Î¥Ð¡¼¥¸¥ç¥ó¤Ç¤Î¼ç¤ÊÊѹ¹ÅÀ¤ËÉÕ¤¤¤Æ¤Ï¡¢(±Ñʸ¤Ç¤¹¤¬) NEWS 
+¤È¤¤¤¦¥Õ¥¡¥¤¥ë¤ò¤´Í÷²¼¤µ¤¤¡£
+
+
+1. ³µÍ×
 
 mDNkit ¤È¤Ï¿¸À¸ì¥É¥á¥¤¥ó̾¤ò°·¤¦¤¿¤á¤Î¥Ä¡¼¥ë¥­¥Ã¥È¤Ç¤¹¡£Â¿¸À¸ì¥É¥á¥¤
 ¥ó̾¤ò°·¤¦¤¿¤á¤Ë¤Ï¡¢¼¡¤Î¤è¤¦¤Êµ¡Ç½¤¬Í׵ᤵ¤ì¤Þ¤¹¡£
@@ -140,12 +153,14 @@ mDNkit 
    +----------------+           +---------+------------+           +------+
 
 
-* ¥Ç¥£¥ì¥¯¥È¥ê¹½À®
+2. ¥Ç¥£¥ì¥¯¥È¥ê¹½À®
 
 ÇÛÉÛ¥­¥Ã¥È¤Î¥Ç¥£¥ì¥¯¥È¥ê¹½À®¤È¡¢¼çÍפʥե¡¥¤¥ë¤ò¼¨¤·¤Þ¤¹¡£
 
        README                  ±Ñ¸ìÈǤΠREADME
        README.ja               ¤³¤Î¥Õ¥¡¥¤¥ë
+       INSTALL                 ±Ñ¸ìÈǤΠINSTALL
+       INSTALL.ja              ¥³¥ó¥Ñ¥¤¥ë¤È¥¤¥ó¥¹¥È¡¼¥ëÊýË¡
        DISTFILES               ÇÛÉÛ¤µ¤ì¤ë¥Õ¥¡¥¤¥ë°ìÍ÷
        NEWS                    ¼ç¤ÊÊѹ¹
        ChangeLog               Êѹ¹¾ÜºÙ
@@ -168,173 +183,9 @@ mDNkit 
        wsock/                  mDN ¥é¥Ã¥Ñ¡¼¥½¡¼¥¹
 
 
-* ¥³¥ó¥Ñ¥¤¥ë¤ª¤è¤Ó¥¤¥ó¥¹¥È¡¼¥ë
-
-0. Á°½àÈ÷
-  
-¤â¤·¤¢¤Ê¤¿¤Î»ÈÍѤ·¤Æ¤¤¤ë¥·¥¹¥Æ¥à¤Î¥é¥¤¥Ö¥é¥ê¤Ë iconv() ¤¬¤Ê¤¤¾ì¹ç¡¢¤¢
-¤ë¤¤¤Ï¤¢¤Ã¤Æ¤â UTF-8 ¤ò°·¤¦¤³¤È¤¬¤Ç¤­¤Ê¤¤¾ì¹ç¤Ë¤Ï¤¢¤é¤«¤¸¤á iconv() ¤ò
-¥¤¥ó¥¹¥È¡¼¥ë¤·¤Æ¤ª¤¤¤Æ¤¯¤À¤µ¤¤¡£iconv() ¤Î¼ÂÁõ¤Ï¡¢Î㤨¤Ð LGPL ¤Î¤â¤Î¤¬
-
-       http://clisp.cons.org/~haible/packages-libiconv.html
-
-¤«¤éÆþ¼ê²Äǽ¤Ç¤¹¡£
-
-*Ãí°Õ*
-  ¾åµ­¼ÂÁõ¤ÎºÇ¿·ÈÇ (libiconv-1.6.1) ¤Ï NetBSD 1.5 ¤È¤ÎÁȹç¤ï¤»¤ÇÌäÂ꤬
-  ¤¢¤ê¡¢¥³¥ó¥Ñ¥¤¥ë»þ¤Ë¥¨¥é¡¼¤¬È¯À¸¤·¤Þ¤¹¡£¤³¤Î¥Ð¥°¤ò½¤Àµ¤¹¤ë¤¿¤á¤Î¥Ñ¥Ã
-  ¥Á¤¬ patch/libiconv ¥Ç¥£¥ì¥¯¥È¥ê¤Î²¼¤ËÍѰդµ¤ì¤Æ¤¤¤Þ¤¹¤Î¤Ç¡¢¤³¤ÎÌäÂê
-  ¤ËÁø¶ø¤·¤¿¾ì¹ç¤Ë¤Ï¥Ñ¥Ã¥Á¤òÅö¤Æ¤Æ¤«¤éºÆ¥¤¥ó¥¹¥È¡¼¥ë¤·¤Æ¤¯¤À¤µ¤¤¡£¤Ê¤ª¡¢
-  ¥Ñ¥Ã¥Á¤ÎÅö¤ÆÊý¤Ï¥Ñ¥Ã¥Á¥Õ¥¡¥¤¥ë¤ÎÀèÆ¬¤Ë½ñ¤«¤ì¤Æ¤¤¤Þ¤¹¡£
-
-1. configure ¥¹¥¯¥ê¥×¥È¤Î¼Â¹Ô
-
-¥È¥Ã¥×¥Ç¥£¥ì¥¯¥È¥ê¤Ë¤¢¤ë configure ¥¹¥¯¥ê¥×¥È¤ò¼Â¹Ô¤·¤Æ¤¯¤À¤µ¤¤¡£
-
-       % ./configure
-
-configure ¥¹¥¯¥ê¥×¥È¤Ë¤Ï¤¤¤¯¤Ä¤«¤Î¥ª¥×¥·¥ç¥ó¤ò»ØÄꤹ¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£
-mdn ¤ËľÀÜ´Ø·¸¤¹¤ë¤â¤Î¤Ï¼¡¤ÎÄ̤ê¤Ç¤¹¡£
-
-    --with-iconv=LIB
-       libc ¤Ë iconv ¤¬Æþ¤Ã¤Æ¤¤¤Ê¤¤¾ì¹ç (¾åµ­¤Î¥Ñ¥Ã¥±¡¼¥¸¤òÆþ¤ì¤¿
-       ¾ì¹ç¤Ê¤É) ¤Ë¡¢iconv ¤Î¥é¥¤¥Ö¥é¥ê¤ò»ØÄꤷ¤Þ¤¹¡£Î㤨¤Ð
-
-               --with-iconv="-L/usr/local/lib -liconv"
-
-       ¤Î¤è¤¦¤Ë»ØÄꤷ¤Þ¤¹¡£¤â¤· iconv ¤¬¶¦Í­¥é¥¤¥Ö¥é¥ê¤Ë¤Ê¤Ã¤Æ¤¤¤ë
-       ¾ì¹ç¤Ë¤Ï¡¢-R ¥ª¥×¥·¥ç¥ó¤â»ØÄꤷ¤Æ
-
-               --with-iconv="-L/usr/local/lib -R/usr/local/lib -liconv"
-
-       ¤È¤¹¤ëɬÍפ¬¤¢¤ë¤«¤â¤·¤ì¤Þ¤»¤ó¡£
-
-    --with-iconv-sofile=PATH
-       mDNkit ¤Ë´Þ¤Þ¤ì¤Æ¤¤¤ë runmdn ¥³¥Þ¥ó¥É¤Ï¡¢iconv() ¤¬ libc ¤Î°ì
-       Éô¤È¤·¤ÆÄ󶡤µ¤ì¤Ê¤¤¤È¤­¤Ë¡¢iconv() ¤ò´Þ¤à¶¦Í­¥é¥¤¥Ö¥é¥ê¤Ø¤Î¥Ñ
-       ¥¹Ì¾¤òÃΤëɬÍפ¬¤¢¤ê¤Þ¤¹¡£mDNkit ¤Ï¡¢--with-iconv ¥ª¥×¥·¥ç¥ó¤Î
-       µ­½Ò¤ò´ð¤Ë¥Ñ¥¹Ì¾¤ò¸¡º÷¤·¤Þ¤¹¤¬¡¢¤³¤ì¤Ë¼ºÇÔ¤·¤¿¤È¤­¤Ë¡¢°Ê²¼¤Î¤è
-       ¤¦¤Ë¶¦Í­¥é¥¤¥Ö¥é¥ê¤ò»ØÄꤹ¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£
-
-               --with-iconv-sofile=/usr/local/lib/libiconvv.so.2.0
-
-    --with-utf8=NAME
-       iconv ¤Ë utf-8 ¥¨¥ó¥³¡¼¥Ç¥£¥ó¥°¤ò»ØÄꤹ¤ë¾ì¹ç¡¢Ëܥ饤¥Ö¥é¥ê¤Ï
-       ¥Ç¥Õ¥©¥ë¥È¤Ç¤Ï "UTF-8" ¤È¤¤¤¦Ì¾Á°¤ò»ØÄꤷ¤Þ¤¹¡£¤â¤·¤¢¤Ê¤¿¤Î
-       ¥·¥¹¥Æ¥à¤Î iconv ¤¬ "UTF-8" ¤È¤¤¤¦Ì¾Á°¤ò¼õ¤±ÉÕ¤±¤Ê¤¤¾ì¹ç¤Ë¤Ï¡¢
-       Âå¤ê¤Î̾Á°¤ò»ØÄꤷ¤Þ¤¹¡£Î㤨¤Ð "UTF-8" ¤Ç¤Ï¤Ê¤¯ "utf8" ¤Î
-       ¾ì¹ç¤Ë¤Ï¼¡¤Î¤è¤¦¤Ë»ØÄꤷ¤Þ¤¹¡£
-
-               --with-utf8=utf8
-
-    --with-preference=PREFERENCE
-       mDNkit ¤Î¥µ¥ó¥×¥ë¥³¥ó¥Õ¥£¥®¥å¥ì¡¼¥·¥ç¥ó¥Õ¥¡¥¤¥ë (mdn.conf.sample) 
-       ¤ÎÀßÄê¤ò PREFERENCE ¸þ¤±¤Î¤â¤Î¤Ë¤·¤Þ¤¹¡£¤Þ¤¿¤³¤Î¥ª¥×¥·¥ç¥ó¤ò»ØÄê
-       ¤¹¤ë¤È¥Ç¥Õ¥©¥ë¥È¤Î¥³¥ó¥Õ¥£¥®¥å¥ì¡¼¥·¥ç¥ó¥Õ¥¡¥¤¥ë (mdn.conf) ¤¬
-       ¥¤¥ó¥¹¥È¡¼¥ë¤µ¤ì¤Þ¤¹¡£¤¿¤À¤·¥Õ¥¡¥¤¥ë¤¬¤¹¤Ç¤Ë¸ºß¤·¤Æ¤¤¤ë¾ì¹ç¤Ë¤Ï
-       ¥¤¥ó¥¹¥È¡¼¥ë¤·¤Þ¤»¤ó¡£
-       ¸½ºß¤Î¤È¤³¤í¡¢»ØÄê¤Ç¤­¤ë PREFERENCE ¤Ï "jp" ¤Î¤ß¤Ç¤¹¡£
-
-    --with-race-prefix=PREFIX
-    --with-brace-suffix=SUFFIX
-    --with-lace-prefix=PREFIX
-    --with-dude-prefix=PREFIX
-       RACE (Row-based ASCII-Compatible Encoding)¡¢BRACE (Bi-mode
-       Row-based ASCII-Compatible Encoding)¡¢ LACE (Length-based
-       ASCII Compatible Encoding) ¤ª¤è¤Ó DUDE (Differential Unicode
-       Domain Encoding) ¤Ï¤¤¤º¤ì¤â DNS ¥×¥í¥È¥³¥ë¾å¤Ç»ÈÍѤµ¤ì¤ë¿¸À¸ì
-       ¥É¥á¥¤¥ó̾¤Ë´Ø¤·¤ÆÄ󰯤µ¤ì¤Æ¤¤¤ë¥¨¥ó¥³¡¼¥Ç¥£¥ó¥°Êý¼°¤Ç¤¹¡£Ä̾ï
-       ¤Î ASCII ¥É¥á¥¤¥ó̾¤È¤³¤ì¤é¤Ë¤è¤Ã¤Æ¥¨¥ó¥³¡¼¥É¤µ¤ì¤¿¥É¥á¥¤¥ó̾
-       ¤ò¶èÊ̤¹¤ë¤¿¤á¤Ë¡¢¸ÇÄê¤ÎÀÜÆ¬¼­ (BRACE ¤Î¾ì¹ç¤Ë¤ÏÀÜÈø¼­) ¤¬ÍѤ¤
-       ¤é¤ì¤Þ¤¹¡£
-       mDNkit ¤Ç¤Ï¸½ºß¤Î¥¤¥ó¥¿¡¼¥Í¥Ã¥È¥É¥é¥Õ¥È¤ÇÄêµÁ¤µ¤ì¤Æ¤¤¤ëÀÜÆ¬¼­
-       ¤¢¤ë¤¤¤ÏÀÜÈø¼­¤ò»ÈÍѤ¹¤ë¤è¤¦¤Ë¤Ê¤Ã¤Æ¤¤¤Þ¤¹¤¬¡¢º£¸å¤Î¥É¥é¥Õ¥È¤Ç
-       ÊѤï¤ë¤«¤â¤·¤ì¤Þ¤»¤ó¡£¤½¤³¤Ç¡¢¤³¤ì¤é¤Î¥ª¥×¥·¥ç¥ó¤òÍѤ¤¤Æ»ØÄê¤Ç
-       ¤­¤ë¤è¤¦¤Ë¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡£
-
-    --with-altdude-prefix=PREFIX
-    --with-altdude-suffix=SUFFIX
-    --with-amc-ace-m-prefix=PREFIX
-    --with-amc-ace-m-suffix=SUFFIX
-    --with-amc-ace-o-prefix=PREFIX
-    --with-amc-ace-o-suffix=SUFFIX
-    --with-amc-ace-r-prefix=PREFIX
-       AltDUDE¡¢AMC-ACE-M¡¢AMC-ACE-O ¤ª¤è¤Ó AMC-ACE-R ¤â RACE ¤Ê¤É¤È
-       Æ±ÍͤË¿¸À¸ì¥É¥á¥¤¥ó¤Î¥¨¥ó¥³¡¼¥Ç¥£¥ó¥°¤È¤·¤ÆÄ󰯤µ¤ì¤Æ¤¤¤ë¤â¤Î
-       ¤Ç¤¹¡£¤¿¤À¤·¤³¤ì¤é¤Î¥¨¥ó¥³¡¼¥Ç¥£¥ó¥°¤Ï RACE ¤Ê¤É¾å¤Ë¤¢¤²¤¿¤â¤Î
-       ¤È°Û¤Ê¤ê¡¢¥¤¥ó¥¿¡¼¥Í¥Ã¥È¥É¥é¥Õ¥È¤Ç¤ÏÆÃÄê¤ÎÀÜÆ¬¼­¡¢ÀÜÈø¼­¤¬ÄêµÁ
-       ¤µ¤ì¤Æ¤¤¤Þ¤»¤ó¡£mDNkit ¤Ç¤Ï¥Ç¥Õ¥©¥ë¥È¤ÎÀÜÆ¬¼­/ÀÜÈø¼­¤òÀßÄꤷ¤Æ
-       ¤¢¤ê¤Þ¤¹¤¬¡¢¤³¤³¤Ë¤¢¤²¤¿¥ª¥×¥·¥ç¥ó¤ò»ÈÍѤ¹¤ì¤ÐÊ̤Τâ¤Î¤ËÊѹ¹¤¹
-       ¤ë¤³¤È¤¬²Äǽ¤Ç¤¹¡£
-       AltDUDE¡¢AMC-ACE-M ¤ª¤è¤Ó AMC-ACE-O ¤Ë¤Ä¤¤¤Æ¤Ï¡¢ÀÜÆ¬¼­¡¢ÀÜÈø¼­
-       ¤Î¤É¤Á¤é¤ò»ØÄꤹ¤ë¤³¤È¤â²Äǽ¤Ç¤¹¡£¤â¤·ÀÜÆ¬¼­¤ÈÀÜÈø¼­¤ÎξÊý¤¬»Ø
-       Äꤵ¤ì¤¿¾ì¹ç¤Ë¤Ï¡¢ÀÜÆ¬¼­¤Î»ØÄ꤬ͥÀ褵¤ì¤Þ¤¹¡£
+4. ¥Ñ¥Ã¥Á¤ÎÅö¤ÆÊý
 
-    --sbindir=DIR
-       DNS ¥×¥í¥­¥·¥µ¡¼¥Ð¤ò¥¤¥ó¥¹¥È¡¼¥ë¤¹¤ë¥Ç¥£¥ì¥¯¥È¥ê¤ò»ØÄꤷ¤Þ¤¹¡£
-       ¥Ç¥Õ¥©¥ë¥È¤Ç¤Ï /usr/local/sbin ¤Ç¤¹¡£
-
-    --bindir=DIR
-       ¥³¡¼¥É¥»¥Ã¥È¥³¥ó¥Ð¡¼¥¿ mdnconv ¤ò¥¤¥ó¥¹¥È¡¼¥ë¤¹¤ë¥Ç¥£¥ì¥¯¥È¥ê¤ò
-       »ØÄꤷ¤Þ¤¹¡£¥Ç¥Õ¥©¥ë¥È¤Ç¤Ï /usr/local/bin ¤Ç¤¹¡£
-
-    --sysconfdir=DIR
-       DNS ¥×¥í¥­¥·¥µ¡¼¥Ð¤ÎÀßÄê¥Õ¥¡¥¤¥ë¤ò¥¤¥ó¥¹¥È¡¼¥ë¤¹¤ë¥Ç¥£¥ì¥¯¥È¥ê¤ò
-       »ØÄꤷ¤Þ¤¹¡£¥Ç¥Õ¥©¥ë¥È¤Ç¤Ï /usr/local/etc ¤Ç¤¹¡£
-
-    --mandir=DIR
-       ¥ª¥ó¥é¥¤¥ó¥Þ¥Ë¥å¥¢¥ë¤Î¥¤¥ó¥¹¥È¡¼¥ë¥Ç¥£¥ì¥¯¥È¥ê¤ò»ØÄꤷ¤Þ¤¹¡£
-       ¥Ç¥Õ¥©¥ë¥È¤Ç¤Ï /usr/local/man ¤Ç¤¹¡£
-
---with-iconv ¥ª¥×¥·¥ç¥ó¤Ç¤Ï¥é¥¤¥Ö¥é¥ê¤À¤±¤ò»ØÄꤷ¤Þ¤¹¡£¤â¤·¥¤¥ó¥¯¥ë¡¼
-¥É¥Õ¥¡¥¤¥ë iconv.h ¤¬¥Ç¥Õ¥©¥ë¥È¤Î¥¤¥ó¥¯¥ë¡¼¥É¥Õ¥¡¥¤¥ë¤Î¥Ñ¥¹¤Ë¥¤¥ó¥¹¥È¡¼
-¥ë¤µ¤ì¤Æ¤¤¤Ê¤¤¾ì¹ç¡¢¤¢¤ë¤¤¤Ï¾¤Ë C ¥³¥ó¥Ñ¥¤¥é¤Ø¤Î¥ª¥×¥·¥ç¥ó¤ò»ØÄꤷ¤¿
-¤¤¾ì¹ç¤Ë¤Ï´Ä¶­ÊÑ¿ô CFLAGS ¤ò»ÈÍѤ·¤Æ¤¯¤À¤µ¤¤¡£Î㤨¤Ð
-
-       % CFLAGS=-I/usr/local/include ./configure ...
-                               (sh ·Ï¤Î¥·¥§¥ë¤Î¾ì¹ç)
-       % setenv CFLAGS -I/usr/local/include; ./configure ...
-                               (csh ·Ï¤Î¥·¥§¥ë¤Î¾ì¹ç)
-
-¤È¤·¤Þ¤¹¡£
-
-configure ¤Ë¤Ï¾¤Ë¤â¿¤¯¤Î¥ª¥×¥·¥ç¥ó¤¬¤¢¤ê¤Þ¤¹¤¬¡¢»Ä¤ê¤Ï°ìÈÌŪ¤Ê¥ª¥×¥·¥ç
-¥ó¤Ê¤Î¤ÇÀâÌÀ¤Ï¾Ê¤­¤Þ¤¹¡£
-
-       % ./configure --help
-
-¤ò¼Â¹Ô¤¹¤ë¤È¥ª¥×¥·¥ç¥ó¤Î°ìÍ÷¤¬É½¼¨¤µ¤ì¤Þ¤¹¡£
-
-2. ¥³¥ó¥Ñ¥¤¥ë
-
-configure ¤ò¼Â¹Ô¤¹¤ë¤È Makefile ¤Ê¤É¤¬À¸À®¤µ¤ì¤Þ¤¹¤Î¤Ç¡¢Â³¤±¤Æ make¤ò
-¼Â¹Ô¤·¤Æ¥³¥ó¥Ñ¥¤¥ë¤·¤Þ¤¹¡£
-
-       % make
-
-3. ¥¤¥ó¥¹¥È¡¼¥ë
-
-¥¹¡¼¥Ñ¥æ¡¼¥¶¤Ë¤Ê¤Ã¤Æ¥¤¥ó¥¹¥È¡¼¥ë¤·¤Þ¤¹¡£
-
-       % su
-       # make install
-
-4. Configuration and usage
-
-¥¤¥ó¥¹¥È¡¼¥ë¤µ¤ì¤ë¥Ä¡¼¥ë (mdnsproxy¡¢mdnconv¡¢runmdn) ¤Î»È¤¤Êý¡¢ÀßÄêÊý
-Ë¡¤Ë´Ø¤·¤Æ¤Ï¥ª¥ó¥é¥¤¥ó¥Þ¥Ë¥å¥¢¥ë¤ò¤´Í÷¤¯¤À¤µ¤¤¡£mdnconv ¤È runmdn ¤Ë¤Ä
-¤¤¤Æ¤Ï¡¢mDNkit ¤Î¥ê¥¾¥ë¥ÐÀßÄê¥Õ¥¡¥¤¥ë mdn.conf ¤Î¥Þ¥Ë¥å¥¢¥ë¤â»²¾È¤·¤Æ
-¤¯¤À¤µ¤¤¡£
-
-       % man mdnsproxy
-       % man mdnconv
-       % man runmdn
-       % man mdn.conf
-
-
-* ¥Ñ¥Ã¥Á¤ÎÅö¤ÆÊý
-
-¤³¤ÎÇÛÉÛ¥­¥Ã¥È¤Ë¤Ï¡¢bind-9.1.1¡¢bind-8.2.3 ¤ª¤è¤Ó squid-2.4-STABLE1 ¤Ë
+¤³¤ÎÇÛÉÛ¥­¥Ã¥È¤Ë¤Ï¡¢bind-9.1.3¡¢bind-8.2.3 ¤ª¤è¤Ó squid-2.4-STABLE1 ¤Ë
 ÂФ¹¤ë¥Ñ¥Ã¥Á¤¬´Þ¤Þ¤ì¤Æ¤¤¤Þ¤¹¡£¥Ñ¥Ã¥Á¤ÎÅö¤ÆÊý¤Ï¡¢¥Ñ¥Ã¥Á¥Õ¥¡¥¤¥ë¤ÎÀèÆ¬¤Ë
 ½ñ¤«¤ì¤Æ¤¤¤Þ¤¹¤Î¤Ç¤½¤Á¤é¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£
 
@@ -344,13 +195,60 @@ Solaris 
 ¤Æ¤¯¤À¤µ¤¤¡£
 
 
-* ËÜ¥­¥Ã¥È¤Ë´Ø¤¹¤ëºÇ¿·¾ðÊó¡¢Ì䤤¹ç¤ï¤»¤Ë¤Ä¤¤¤Æ
+5. ËÜ¥­¥Ã¥È¤¬Âбþ¤·¤Æ¤¤¤ë¥·¥¹¥Æ¥à
+
+Àµ¾ï¤Ë¥¤¥ó¥¹¥È¡¼¥ë¤Ç¤­¤ë¤³¤È¤¬³Îǧ¤Ç¤­¤Æ¤¤¤ë¤Î¤Ï¡¢¼¡¤Î¥·¥¹¥Æ¥à¤Ç¤¹¡£
+
+    ------------------------------------------------------------------
+    OS                      iconv              configure ¤Î¥ª¥×¥·¥ç¥ó
+    ==================================================================
+    FreeBSD 4.4-RELEASE     GNU libiconv       --with-libiconv
+    Intel                   1.6.1
+    -------------------------------------------------------------------
+    FreeBSD 3.5.1-RELEASE   GNU libiconv       --with-libiconv
+    Intel                   1.7
+    -------------------------------------------------------------------
+    NetBSD 1.5.2            GNU libiconv       --with-libiconv
+    Intel                   1.7
+    ------------------------------------------------------------------
+    Red Hat Linux 7.1       É¸½à¥é¥¤¥Ö¥é¥ê     ¤Ê¤·
+    Intel                   (glibc)
+    ------------------------------------------------------------------
+    Red Hat Linux 7.0       É¸½à¥é¥¤¥Ö¥é¥ê     ¤Ê¤·
+    Intel                   (glibc)
+    -------------------------------------------------------------------
+    Debian/GNU Linux 2.2r3  É¸½à¥é¥¤¥Ö¥é¥ê     ¤Ê¤·
+    Intel                   (glibc)
+    ------------------------------------------------------------------
+    Solaris 2.6             É¸½à¥é¥¤¥Ö¥é¥ê     ¤Ê¤·
+    Sparc                   (libc)
+    ------------------------------------------------------------------
+    Windows 2000            GNU libiconv       --with-libiconv
+    (cygwin-1.3.2) *1       1.7
+    -------------------------------------------------------------------
+
+    *1: Æ°ºî¤¹¤ë¤Î¤Ï mdnconv ¤À¤±¤Ç¤¹¡£
+
+ËÜ¥­¥Ã¥È¤¬Âбþ¤·¤Æ¤¤¤ë/¤·¤Æ¤¤¤Ê¤¤¥·¥¹¥Æ¥à¤Ë´Ø¤¹¤ëºÇ¿·¤Î¾ðÊó¤Ï¡¢¼¡¤Î¤È
+¤³¤í¤«¤éé¤ì¤ë mDNkit FAQ ¤Î¥Ú¡¼¥¸¤Ëµ­¤µ¤ì¤Æ¤¤¤Þ¤¹¡£
+
+       http://www.nic.ad.jp/jp/research/idn/
+
+
+6. ËÜ¥­¥Ã¥È¤Ë´Ø¤¹¤ëºÇ¿·¾ðÊó¡¢Ì䤤¹ç¤ï¤»¤Ë¤Ä¤¤¤Æ
 
 ËÜ¥­¥Ã¥È¤Ë´Ø¤¹¤ëºÇ¿·¾ðÊó¤Ë¤Ä¤¤¤Æ¤Ï¡¢
-http://www.nic.ad.jp/jp/research/idn/ ¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤
 
+       http://www.nic.ad.jp/jp/research/idn/
+
+¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤
 ËÜ¥­¥Ã¥È¤Ë´Ø¤¹¤ë¥Ð¥°¥ì¥Ý¡¼¥È¤ª¤è¤Ó¥³¥á¥ó¥È¤Ï¡¢¤½¤ì¤¾¤ì 
-mdnkit-bugs@nic.ad.jp ¤ª¤è¤Ó idn-cmt@nic.ad.jp ¤Ø¤ª´ê¤¤¤·¤Þ¤¹¡£
+
+       mdnkit-bugs@nic.ad.jp
+¤ª¤è¤Ó
+       idn-cmt@nic.ad.jp
+
+¤Ø¤ª´ê¤¤¤·¤Þ¤¹¡£
 
 
-; $Id: README.ja,v 1.29 2001/06/01 01:13:46 ishisone Exp $
+; $Id: README.ja,v 1.1 2002/01/02 02:46:21 marka Exp $
index 6915f20aa01969afc445f61b495b2299026ae133..d0b1671fef8f22ed13bf9179e61be4532a9ef5ec 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: acconfig.h,v 1.8 2001/04/18 02:07:32 ishisone Exp $ */
+/* $Id: acconfig.h,v 1.1 2002/01/02 02:46:21 marka Exp $ */
 /*
  * Copyright (c) 2000 Japan Network Information Center.  All rights reserved.
  *  
@@ -8,8 +8,8 @@
  * 
  * The following License Terms and Conditions apply, unless a different
  * license is obtained from Japan Network Information Center ("JPNIC"),
- * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku,
- * Tokyo, Japan.
+ * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda,
+ * Chiyoda-ku, Tokyo 101-0047, Japan.
  * 
  * 1. Use, Modification and Redistribution (including distribution of any
  *    modified or derived work) in source and/or binary forms is permitted
 /* Define as an appropriate type (ex. int) if your system doesn't have. */
 #undef BOOL
 
-/* Define if the prototype of gethost*_r is glibc flavor. */
-#undef GETHOST_R_GLIBC_FLAVOR
-
-/* Define as the type of the 2nd argument of gethostbyaddr. */
-#undef GHBA_ADDRLEN_T
-
 @BOTTOM@
 /* Define as the pathname of the shared libc object if your system has one. */
 #undef SOPATH_LIBC
index 1ddc51a97357592dfd09b602f484260e00270216..7e35578c1fe0ac757aba6eebe1ec7095fdbc7e0d 100644 (file)
@@ -1,5 +1,5 @@
 ##
-## $Id: aclocal.m4,v 1.5 2001/04/19 07:20:51 ishisone Exp $
+## $Id: aclocal.m4,v 1.1 2002/01/02 02:46:21 marka Exp $
 ##
 dnl
 dnl AC_ACE_PREFIX(ace-name, default)
index 0ce538bb85cc7ee026a4f024e6572cb1ce99b522..dff9e481b70f9505b49ce999629a168a19976f4f 100644 (file)
@@ -1,8 +1,10 @@
 #! /bin/sh
 # Attempt to guess a canonical system name.
-#   Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000
+#   Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001
 #   Free Software Foundation, Inc.
-#
+
+timestamp='2001-09-04'
+
 # This file is free software; you can redistribute it and/or modify it
 # under the terms of the GNU General Public License as published by
 # the Free Software Foundation; either version 2 of the License, or
 # exits with 0.  Otherwise, it exits with 1.
 #
 # The plan is that this can be called by configure scripts if you
-# don't specify an explicit system type (host/target name).
-#
-# Only a few systems have been added to this list; please add others
-# (but try to keep the structure clean).
-#
+# don't specify an explicit build system type.
 
-# Use $HOST_CC if defined. $CC may point to a cross-compiler
-if test x"$CC_FOR_BUILD" = x; then
-  if test x"$HOST_CC" != x; then
-    CC_FOR_BUILD="$HOST_CC"
-  else
-    if test x"$CC" != x; then
-      CC_FOR_BUILD="$CC"
-    else
-      CC_FOR_BUILD=cc
-    fi
-  fi
+me=`echo "$0" | sed -e 's,.*/,,'`
+
+usage="\
+Usage: $0 [OPTION]
+
+Output the configuration name of the system \`$me' is run on.
+
+Operation modes:
+  -h, --help         print this help, then exit
+  -t, --time-stamp   print date of last modification, then exit
+  -v, --version      print version number, then exit
+
+Report bugs and patches to <config-patches@gnu.org>."
+
+version="\
+GNU config.guess ($timestamp)
+
+Originally written by Per Bothner.
+Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001
+Free Software Foundation, Inc.
+
+This is free software; see the source for copying conditions.  There is NO
+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
+
+help="
+Try \`$me --help' for more information."
+
+# Parse command line
+while test $# -gt 0 ; do
+  case $1 in
+    --time-stamp | --time* | -t )
+       echo "$timestamp" ; exit 0 ;;
+    --version | -v )
+       echo "$version" ; exit 0 ;;
+    --help | --h* | -h )
+       echo "$usage"; exit 0 ;;
+    -- )     # Stop option processing
+       shift; break ;;
+    - )        # Use stdin as input.
+       break ;;
+    -* )
+       echo "$me: invalid option $1$help" >&2
+       exit 1 ;;
+    * )
+       break ;;
+  esac
+done
+
+if test $# != 0; then
+  echo "$me: too many arguments$help" >&2
+  exit 1
 fi
 
 
+dummy=dummy-$$
+trap 'rm -f $dummy.c $dummy.o $dummy.rel $dummy; exit 1' 1 2 15
+
+# CC_FOR_BUILD -- compiler used by this script.
+# Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still
+# use `HOST_CC' if defined, but it is deprecated.
+
+set_cc_for_build='case $CC_FOR_BUILD,$HOST_CC,$CC in
+ ,,)    echo "int dummy(){}" > $dummy.c ;
+       for c in cc gcc c89 ; do
+         ($c $dummy.c -c -o $dummy.o) >/dev/null 2>&1 ;
+         if test $? = 0 ; then
+            CC_FOR_BUILD="$c"; break ;
+         fi ;
+       done ;
+       rm -f $dummy.c $dummy.o $dummy.rel ;
+       if test x"$CC_FOR_BUILD" = x ; then
+         CC_FOR_BUILD=no_compiler_found ;
+       fi
+       ;;
+ ,,*)   CC_FOR_BUILD=$CC ;;
+ ,*,*)  CC_FOR_BUILD=$HOST_CC ;;
+esac'
+
 # This is needed to find uname on a Pyramid OSx when run in the BSD universe.
-# (ghazi@noc.rutgers.edu 8/24/94.)
+# (ghazi@noc.rutgers.edu 1994-08-24)
 if (test -f /.attbin/uname) >/dev/null 2>&1 ; then
        PATH=$PATH:/.attbin ; export PATH
 fi
 
 UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown
 UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown
-UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown
+UNAME_SYSTEM=`(uname -s) 2>/dev/null`  || UNAME_SYSTEM=unknown
 UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown
 
-dummy=dummy-$$
-trap 'rm -f $dummy.c $dummy.o $dummy; exit 1' 1 2 15
-
 # Note: order is significant - the case branches are not exclusive.
 
 case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
@@ -77,7 +136,7 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
        # object file format.
        # Determine the machine/vendor (is the vendor relevant).
        case "${UNAME_MACHINE}" in
-           amiga) machine=m68k-cbm ;;
+           amiga) machine=m68k-unknown ;;
            arm32) machine=arm-unknown ;;
            atari*) machine=m68k-atari ;;
            sun3*) machine=m68k-sun ;;
@@ -87,16 +146,25 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
            ibmrt|romp-ibm) machine=romp-ibm ;;
            *) machine=${UNAME_MACHINE}-unknown ;;
        esac
-       # The Operating System including object format.
-       if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \
-               | grep __ELF__ >/dev/null
-       then
-           # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout).
-           # Return netbsd for either.  FIX?
-           os=netbsd
-       else
-           os=netbsdelf
-       fi
+       # The Operating System including object format, if it has switched
+       # to ELF recently, or will in the future.
+       case "${UNAME_MACHINE}" in
+           i386|sparc|amiga|arm*|hp300|mvme68k|vax|atari|luna68k|mac68k|news68k|next68k|pc532|sun3*|x68k)
+               eval $set_cc_for_build
+               if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \
+                       | grep __ELF__ >/dev/null
+               then
+                   # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout).
+                   # Return netbsd for either.  FIX?
+                   os=netbsd
+               else
+                   os=netbsdelf
+               fi
+               ;;
+           *)
+               os=netbsd
+               ;;
+       esac
        # The OS release
        release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'`
        # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM:
@@ -137,6 +205,7 @@ main:
        jsr \$26,exit
        .end main
 EOF
+       eval $set_cc_for_build
        $CC_FOR_BUILD $dummy.s -o $dummy 2>/dev/null
        if test "$?" = 0 ; then
                case `./$dummy` in
@@ -158,6 +227,9 @@ EOF
                        2-307)
                                UNAME_MACHINE="alphaev67"
                                ;;
+                       2-1307)
+                               UNAME_MACHINE="alphaev68"
+                               ;;
                esac
        fi
        rm -f $dummy.s $dummy
@@ -173,7 +245,7 @@ EOF
        echo alpha-dec-winnt3.5
        exit 0 ;;
     Amiga*:UNIX_System_V:4.0:*)
-       echo m68k-cbm-sysv4
+       echo m68k-unknown-sysv4
        exit 0;;
     amiga:OpenBSD:*:*)
        echo m68k-unknown-openbsd${UNAME_RELEASE}
@@ -205,7 +277,7 @@ EOF
     arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*)
        echo arm-acorn-riscix${UNAME_RELEASE}
        exit 0;;
-    SR2?01:HI-UX/MPP:*:*)
+    SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*)
        echo hppa1.1-hitachi-hiuxmpp
        exit 0;;
     Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*)
@@ -261,6 +333,9 @@ EOF
     aushp:SunOS:*:*)
        echo sparc-auspex-sunos${UNAME_RELEASE}
        exit 0 ;;
+    sparc*:NetBSD:*)
+       echo `uname -p`-unknown-netbsd${UNAME_RELEASE}
+       exit 0 ;;
     atari*:OpenBSD:*:*)
        echo m68k-unknown-openbsd${UNAME_RELEASE}
        exit 0 ;;
@@ -318,6 +393,7 @@ EOF
        echo clipper-intergraph-clix${UNAME_RELEASE}
        exit 0 ;;
     mips:*:*:UMIPS | mips:*:*:RISCos)
+       eval $set_cc_for_build
        sed 's/^        //' << EOF >$dummy.c
 #ifdef __cplusplus
 #include <stdio.h>  /* for printf() prototype */
@@ -341,10 +417,13 @@ EOF
 EOF
        $CC_FOR_BUILD $dummy.c -o $dummy \
          && ./$dummy `echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` \
-         && rm $dummy.c $dummy && exit 0
+         && rm -f $dummy.c $dummy && exit 0
        rm -f $dummy.c $dummy
        echo mips-mips-riscos${UNAME_RELEASE}
        exit 0 ;;
+    Motorola:PowerMAX_OS:*:*)
+       echo powerpc-motorola-powermax
+       exit 0 ;;
     Night_Hawk:Power_UNIX:*:*)
        echo powerpc-harris-powerunix
        exit 0 ;;
@@ -392,11 +471,20 @@ EOF
     ????????:AIX?:[12].1:2)   # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX.
        echo romp-ibm-aix      # uname -m gives an 8 hex-code CPU id
        exit 0 ;;              # Note that: echo "'`uname -s`'" gives 'AIX '
-    i?86:AIX:*:*)
+    i*86:AIX:*:*)
        echo i386-ibm-aix
        exit 0 ;;
+    ia64:AIX:*:*)
+       if [ -x /usr/bin/oslevel ] ; then
+               IBM_REV=`/usr/bin/oslevel`
+       else
+               IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE}
+       fi
+       echo ${UNAME_MACHINE}-ibm-aix${IBM_REV}
+       exit 0 ;;
     *:AIX:2:3)
        if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then
+               eval $set_cc_for_build
                sed 's/^                //' << EOF >$dummy.c
                #include <sys/systemcfg.h>
 
@@ -408,7 +496,7 @@ EOF
                        exit(0);
                        }
 EOF
-               $CC_FOR_BUILD $dummy.c -o $dummy && ./$dummy && rm $dummy.c $dummy && exit 0
+               $CC_FOR_BUILD $dummy.c -o $dummy && ./$dummy && rm -f $dummy.c $dummy && exit 0
                rm -f $dummy.c $dummy
                echo rs6000-ibm-aix3.2.5
        elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then
@@ -417,9 +505,9 @@ EOF
                echo rs6000-ibm-aix3.2
        fi
        exit 0 ;;
-    *:AIX:*:4)
+    *:AIX:*:[45])
        IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | head -1 | awk '{ print $1 }'`
-       if /usr/sbin/lsattr -EHl ${IBM_CPU_ID} | grep POWER >/dev/null 2>&1; then
+       if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then
                IBM_ARCH=rs6000
        else
                IBM_ARCH=powerpc
@@ -427,7 +515,7 @@ EOF
        if [ -x /usr/bin/oslevel ] ; then
                IBM_REV=`/usr/bin/oslevel`
        else
-               IBM_REV=4.${UNAME_RELEASE}
+               IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE}
        fi
        echo ${IBM_ARCH}-ibm-aix${IBM_REV}
        exit 0 ;;
@@ -453,10 +541,29 @@ EOF
        echo m68k-hp-bsd4.4
        exit 0 ;;
     9000/[34678]??:HP-UX:*:*)
+       HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
        case "${UNAME_MACHINE}" in
            9000/31? )            HP_ARCH=m68000 ;;
            9000/[34]?? )         HP_ARCH=m68k ;;
            9000/[678][0-9][0-9])
+              case "${HPUX_REV}" in
+                11.[0-9][0-9])
+                  if [ -x /usr/bin/getconf ]; then
+                    sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null`
+                    sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null`
+                    case "${sc_cpu_version}" in
+                      523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0
+                      528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1
+                      532)                      # CPU_PA_RISC2_0
+                        case "${sc_kernel_bits}" in
+                          32) HP_ARCH="hppa2.0n" ;;
+                          64) HP_ARCH="hppa2.0w" ;;
+                        esac ;;
+                    esac
+                  fi ;;
+              esac
+              if [ "${HP_ARCH}" = "" ]; then
+             eval $set_cc_for_build
               sed 's/^              //' << EOF >$dummy.c
 
               #define _HPUX_SOURCE
@@ -490,13 +597,19 @@ EOF
                   exit (0);
               }
 EOF
-       (CCOPTS= $CC_FOR_BUILD $dummy.c -o $dummy 2>/dev/null ) && HP_ARCH=`./$dummy`
-       rm -f $dummy.c $dummy
+           (CCOPTS= $CC_FOR_BUILD $dummy.c -o $dummy 2>/dev/null ) && HP_ARCH=`./$dummy`
+           if test -z "$HP_ARCH"; then HP_ARCH=hppa; fi
+           rm -f $dummy.c $dummy
+       fi ;;
        esac
-       HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
        echo ${HP_ARCH}-hp-hpux${HPUX_REV}
        exit 0 ;;
+    ia64:HP-UX:*:*)
+       HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
+       echo ia64-hp-hpux${HPUX_REV}
+       exit 0 ;;
     3050*:HI-UX:*:*)
+       eval $set_cc_for_build
        sed 's/^        //' << EOF >$dummy.c
        #include <unistd.h>
        int
@@ -522,7 +635,7 @@ EOF
          exit (0);
        }
 EOF
-       $CC_FOR_BUILD $dummy.c -o $dummy && ./$dummy && rm $dummy.c $dummy && exit 0
+       $CC_FOR_BUILD $dummy.c -o $dummy && ./$dummy && rm -f $dummy.c $dummy && exit 0
        rm -f $dummy.c $dummy
        echo unknown-hitachi-hiuxwe2
        exit 0 ;;
@@ -532,7 +645,7 @@ EOF
     9000/8??:4.3bsd:*:*)
        echo hppa1.0-hp-bsd
        exit 0 ;;
-    *9??*:MPE/iX:*:*)
+    *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*)
        echo hppa1.0-hp-mpeix
        exit 0 ;;
     hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* )
@@ -541,7 +654,7 @@ EOF
     hp8??:OSF1:*:*)
        echo hppa1.0-hp-osf
        exit 0 ;;
-    i?86:OSF1:*:*)
+    i*86:OSF1:*:*)
        if [ -x /usr/sbin/sysversion ] ; then
            echo ${UNAME_MACHINE}-unknown-osf1mk
        else
@@ -576,37 +689,39 @@ EOF
        echo xmp-cray-unicos
         exit 0 ;;
     CRAY*Y-MP:*:*:*)
-       echo ymp-cray-unicos${UNAME_RELEASE}
+       echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
        exit 0 ;;
     CRAY*[A-Z]90:*:*:*)
        echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \
        | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \
-             -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/
+             -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \
+             -e 's/\.[^.]*$/.X/'
        exit 0 ;;
     CRAY*TS:*:*:*)
        echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
        exit 0 ;;
-    CRAY*T3E:*:*:*)
+    CRAY*T3D:*:*:*)
        echo alpha-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
        exit 0 ;;
+    CRAY*T3E:*:*:*)
+       echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+       exit 0 ;;
     CRAY*SV1:*:*:*)
        echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
        exit 0 ;;
     CRAY-2:*:*:*)
        echo cray2-cray-unicos
         exit 0 ;;
-    F300:UNIX_System_V:*:*)
+    F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*)
+       FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
         FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
         FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'`
-        echo "f300-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
+        echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
         exit 0 ;;
-    F301:UNIX_System_V:*:*)
-       echo f301-fujitsu-uxpv`echo $UNAME_RELEASE | sed 's/ .*//'`
-       exit 0 ;;
     hp300:OpenBSD:*:*)
        echo m68k-unknown-openbsd${UNAME_RELEASE}
        exit 0 ;;
-    i?86:BSD/386:*:* | i?86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*)
+    i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*)
        echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE}
        exit 0 ;;
     sparc*:BSD/OS:*:*)
@@ -627,6 +742,9 @@ EOF
     i*:MINGW*:*)
        echo ${UNAME_MACHINE}-pc-mingw32
        exit 0 ;;
+    i*:PW*:*)
+       echo ${UNAME_MACHINE}-pc-pw32
+       exit 0 ;;
     i*:Windows_NT*:* | Pentium*:Windows_NT*:*)
        # How do we know it's Interix rather than the generic POSIX subsystem?
        # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we
@@ -645,187 +763,96 @@ EOF
     *:GNU:*:*)
        echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'`
        exit 0 ;;
-    *:Linux:*:*)
-
+    i*86:Minix:*:*)
+       echo ${UNAME_MACHINE}-pc-minix
+       exit 0 ;;
+    arm*:Linux:*:*)
+       echo ${UNAME_MACHINE}-unknown-linux-gnu
+       exit 0 ;;
+    ia64:Linux:*:*)
+       echo ${UNAME_MACHINE}-unknown-linux
+       exit 0 ;;
+    m68*:Linux:*:*)
+       echo ${UNAME_MACHINE}-unknown-linux-gnu
+       exit 0 ;;
+    mips:Linux:*:*)
+       case `sed -n '/^byte/s/^.*: \(.*\) endian/\1/p' < /proc/cpuinfo` in
+         big)    echo mips-unknown-linux-gnu && exit 0 ;;
+         little) echo mipsel-unknown-linux-gnu && exit 0 ;;
+       esac
+       ;;
+    ppc:Linux:*:*)
+       echo powerpc-unknown-linux-gnu
+       exit 0 ;;
+    ppc64:Linux:*:*)
+       echo powerpc64-unknown-linux-gnu
+       exit 0 ;;
+    alpha:Linux:*:*)
+       case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in
+         EV5)   UNAME_MACHINE=alphaev5 ;;
+         EV56)  UNAME_MACHINE=alphaev56 ;;
+         PCA56) UNAME_MACHINE=alphapca56 ;;
+         PCA57) UNAME_MACHINE=alphapca56 ;;
+         EV6)   UNAME_MACHINE=alphaev6 ;;
+         EV67)  UNAME_MACHINE=alphaev67 ;;
+         EV68*) UNAME_MACHINE=alphaev68 ;;
+        esac
+       objdump --private-headers /bin/sh | grep ld.so.1 >/dev/null
+       if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi
+       echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC}
+       exit 0 ;;
+    parisc:Linux:*:* | hppa:Linux:*:*)
+       # Look for CPU level
+       case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in
+         PA7*) echo hppa1.1-unknown-linux-gnu ;;
+         PA8*) echo hppa2.0-unknown-linux-gnu ;;
+         *)    echo hppa-unknown-linux-gnu ;;
+       esac
+       exit 0 ;;
+    parisc64:Linux:*:* | hppa64:Linux:*:*)
+       echo hppa64-unknown-linux-gnu
+       exit 0 ;;
+    s390:Linux:*:* | s390x:Linux:*:*)
+       echo ${UNAME_MACHINE}-ibm-linux
+       exit 0 ;;
+    sh*:Linux:*:*)
+       echo ${UNAME_MACHINE}-unknown-linux-gnu
+       exit 0 ;;
+    sparc:Linux:*:* | sparc64:Linux:*:*)
+       echo ${UNAME_MACHINE}-unknown-linux-gnu
+       exit 0 ;;
+    x86_64:Linux:*:*)
+       echo x86_64-unknown-linux-gnu
+       exit 0 ;;
+    i*86:Linux:*:*)
        # The BFD linker knows what the default object file format is, so
        # first see if it will tell us. cd to the root directory to prevent
        # problems with other programs or directories called `ld' in the path.
-       ld_help_string=`cd /; ld --help 2>&1`
-       ld_supported_emulations=`echo $ld_help_string \
-                        | sed -ne '/supported emulations:/!d
+       ld_supported_targets=`cd /; ld --help 2>&1 \
+                        | sed -ne '/supported targets:/!d
                                    s/[         ][      ]*/ /g
-                                   s/.*supported emulations: *//
+                                   s/.*supported targets: *//
                                    s/ .*//
                                    p'`
-        case "$ld_supported_emulations" in
-         *ia64)
-               echo "${UNAME_MACHINE}-unknown-linux"
-               exit 0
+        case "$ld_supported_targets" in
+         elf32-i386)
+               TENTATIVE="${UNAME_MACHINE}-pc-linux-gnu"
                ;;
-         i?86linux)
+         a.out-i386-linux)
                echo "${UNAME_MACHINE}-pc-linux-gnuaout"
-               exit 0
-               ;;
-         elf_i?86)
-               echo "${UNAME_MACHINE}-pc-linux"
-               exit 0
-               ;;
-         i?86coff)
+               exit 0 ;;               
+         coff-i386)
                echo "${UNAME_MACHINE}-pc-linux-gnucoff"
-               exit 0
-               ;;
-         sparclinux)
-               echo "${UNAME_MACHINE}-unknown-linux-gnuaout"
-               exit 0
-               ;;
-         armlinux)
-               echo "${UNAME_MACHINE}-unknown-linux-gnuaout"
-               exit 0
-               ;;
-         elf32arm*)
-               echo "${UNAME_MACHINE}-unknown-linux-gnuoldld"
-               exit 0
-               ;;
-         armelf_linux*)
-               echo "${UNAME_MACHINE}-unknown-linux-gnu"
-               exit 0
-               ;;
-         m68klinux)
-               echo "${UNAME_MACHINE}-unknown-linux-gnuaout"
-               exit 0
-               ;;
-         elf32ppc | elf32ppclinux)
-               # Determine Lib Version
-               cat >$dummy.c <<EOF
-#include <features.h>
-#if defined(__GLIBC__)
-extern char __libc_version[];
-extern char __libc_release[];
-#endif
-main(argc, argv)
-     int argc;
-     char *argv[];
-{
-#if defined(__GLIBC__)
-  printf("%s %s\n", __libc_version, __libc_release);
-#else
-  printf("unkown\n");
-#endif
-  return 0;
-}
-EOF
-               LIBC=""
-               $CC_FOR_BUILD $dummy.c -o $dummy 2>/dev/null
-               if test "$?" = 0 ; then
-                       ./$dummy | grep 1\.99 > /dev/null
-                       if test "$?" = 0 ; then
-                               LIBC="libc1"
-                       fi
-               fi
-               rm -f $dummy.c $dummy
-               echo powerpc-unknown-linux-gnu${LIBC}
-               exit 0
-               ;;
+               exit 0 ;;
+         "")
+               # Either a pre-BFD a.out linker (linux-gnuoldld) or
+               # one that does not give us useful --help.
+               echo "${UNAME_MACHINE}-pc-linux-gnuoldld"
+               exit 0 ;;
        esac
-
-       if test "${UNAME_MACHINE}" = "alpha" ; then
-               cat <<EOF >$dummy.s
-                       .data
-               \$Lformat:
-                       .byte 37,100,45,37,120,10,0     # "%d-%x\n"
-
-                       .text
-                       .globl main
-                       .align 4
-                       .ent main
-               main:
-                       .frame \$30,16,\$26,0
-                       ldgp \$29,0(\$27)
-                       .prologue 1
-                       .long 0x47e03d80 # implver \$0
-                       lda \$2,-1
-                       .long 0x47e20c21 # amask \$2,\$1
-                       lda \$16,\$Lformat
-                       mov \$0,\$17
-                       not \$1,\$18
-                       jsr \$26,printf
-                       ldgp \$29,0(\$26)
-                       mov 0,\$16
-                       jsr \$26,exit
-                       .end main
-EOF
-               LIBC=""
-               $CC_FOR_BUILD $dummy.s -o $dummy 2>/dev/null
-               if test "$?" = 0 ; then
-                       case `./$dummy` in
-                       0-0)
-                               UNAME_MACHINE="alpha"
-                               ;;
-                       1-0)
-                               UNAME_MACHINE="alphaev5"
-                               ;;
-                       1-1)
-                               UNAME_MACHINE="alphaev56"
-                               ;;
-                       1-101)
-                               UNAME_MACHINE="alphapca56"
-                               ;;
-                       2-303)
-                               UNAME_MACHINE="alphaev6"
-                               ;;
-                       2-307)
-                               UNAME_MACHINE="alphaev67"
-                               ;;
-                       esac
-
-                       objdump --private-headers $dummy | \
-                         grep ld.so.1 > /dev/null
-                       if test "$?" = 0 ; then
-                               LIBC="libc1"
-                       fi
-               fi
-               rm -f $dummy.s $dummy
-               echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC} ; exit 0
-       elif test "${UNAME_MACHINE}" = "mips" ; then
-         cat >$dummy.c <<EOF
-#ifdef __cplusplus
-#include <stdio.h>  /* for printf() prototype */
-       int main (int argc, char *argv[]) {
-#else
-       int main (argc, argv) int argc; char *argv[]; {
-#endif
-#ifdef __MIPSEB__
-  printf ("%s-unknown-linux-gnu\n", argv[1]);
-#endif
-#ifdef __MIPSEL__
-  printf ("%sel-unknown-linux-gnu\n", argv[1]);
-#endif
-  return 0;
-}
-EOF
-         $CC_FOR_BUILD $dummy.c -o $dummy 2>/dev/null && ./$dummy "${UNAME_MACHINE}" && rm $dummy.c $dummy && exit 0
-         rm -f $dummy.c $dummy
-       elif test "${UNAME_MACHINE}" = "s390"; then
-         echo s390-ibm-linux && exit 0
-       else
-         # Either a pre-BFD a.out linker (linux-gnuoldld)
-         # or one that does not give us useful --help.
-         # GCC wants to distinguish between linux-gnuoldld and linux-gnuaout.
-         # If ld does not provide *any* "supported emulations:"
-         # that means it is gnuoldld.
-         echo "$ld_help_string" | grep >/dev/null 2>&1 "supported emulations:"
-         test $? != 0 && echo "${UNAME_MACHINE}-pc-linux-gnuoldld" && exit 0
-
-         case "${UNAME_MACHINE}" in
-         i?86)
-           VENDOR=pc;
-           ;;
-         *)
-           VENDOR=unknown;
-           ;;
-         esac
-         # Determine whether the default compiler is a.out or elf
-         cat >$dummy.c <<EOF
+       # Determine whether the default compiler is a.out or elf
+       eval $set_cc_for_build
+       cat >$dummy.c <<EOF
 #include <features.h>
 #ifdef __cplusplus
 #include <stdio.h>  /* for printf() prototype */
@@ -836,28 +863,30 @@ EOF
 #ifdef __ELF__
 # ifdef __GLIBC__
 #  if __GLIBC__ >= 2
-    printf ("%s-${VENDOR}-linux-gnu\n", argv[1]);
+    printf ("%s-pc-linux-gnu\n", argv[1]);
 #  else
-    printf ("%s-${VENDOR}-linux-gnulibc1\n", argv[1]);
+    printf ("%s-pc-linux-gnulibc1\n", argv[1]);
 #  endif
 # else
-   printf ("%s-${VENDOR}-linux-gnulibc1\n", argv[1]);
+   printf ("%s-pc-linux-gnulibc1\n", argv[1]);
 # endif
 #else
-  printf ("%s-${VENDOR}-linux-gnuaout\n", argv[1]);
+  printf ("%s-pc-linux-gnuaout\n", argv[1]);
 #endif
   return 0;
 }
 EOF
-         $CC_FOR_BUILD $dummy.c -o $dummy 2>/dev/null && ./$dummy "${UNAME_MACHINE}" && rm $dummy.c $dummy && exit 0
-         rm -f $dummy.c $dummy
-       fi ;;
-# ptx 4.0 does uname -s correctly, with DYNIX/ptx in there.  earlier versions
-# are messed up and put the nodename in both sysname and nodename.
-    i?86:DYNIX/ptx:4*:*)
+       $CC_FOR_BUILD $dummy.c -o $dummy 2>/dev/null && ./$dummy "${UNAME_MACHINE}" && rm -f $dummy.c $dummy && exit 0
+       rm -f $dummy.c $dummy
+       test x"${TENTATIVE}" != x && echo "${TENTATIVE}" && exit 0
+       ;;
+    i*86:DYNIX/ptx:4*:*)
+       # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there.
+       # earlier versions are messed up and put the nodename in both
+       # sysname and nodename.
        echo i386-sequent-sysv4
        exit 0 ;;
-    i?86:UNIX_SV:4.2MP:2.*)
+    i*86:UNIX_SV:4.2MP:2.*)
         # Unixware is an offshoot of SVR4, but it has its own version
         # number series starting with 2...
         # I am not positive that other SVR4 systems won't match this,
@@ -865,7 +894,7 @@ EOF
         # Use sysv4.2uw... so that sysv4* matches it.
        echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION}
        exit 0 ;;
-    i?86:*:4.*:* | i?86:SYSTEM_V:4.*:*)
+    i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*)
        UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'`
        if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then
                echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL}
@@ -873,16 +902,15 @@ EOF
                echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL}
        fi
        exit 0 ;;
-    i?86:*:5:7*)
-        # Fixed at (any) Pentium or better
-        UNAME_MACHINE=i586
-        if [ ${UNAME_SYSTEM} = "UnixWare" ] ; then
-           echo ${UNAME_MACHINE}-sco-sysv${UNAME_RELEASE}uw${UNAME_VERSION}
-       else
-           echo ${UNAME_MACHINE}-pc-sysv${UNAME_RELEASE}
-       fi
+    i*86:*:5:[78]*)
+       case `/bin/uname -X | grep "^Machine"` in
+           *486*)           UNAME_MACHINE=i486 ;;
+           *Pentium)        UNAME_MACHINE=i586 ;;
+           *Pent*|*Celeron) UNAME_MACHINE=i686 ;;
+       esac
+       echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION}
        exit 0 ;;
-    i?86:*:3.2:*)
+    i*86:*:3.2:*)
        if test -f /usr/options/cb.name; then
                UNAME_REL=`sed -n 's/.*Version //p' </usr/options/cb.name`
                echo ${UNAME_MACHINE}-pc-isc$UNAME_REL
@@ -900,7 +928,7 @@ EOF
                echo ${UNAME_MACHINE}-pc-sysv32
        fi
        exit 0 ;;
-    i?86:*DOS:*:*)
+    i*86:*DOS:*:*)
        echo ${UNAME_MACHINE}-pc-msdosdjgpp
        exit 0 ;;
     pc:*:*:*)
@@ -928,7 +956,7 @@ EOF
        exit 0 ;;
     M68*:*:R3V[567]*:*)
        test -r /sysV68 && echo 'm68k-motorola-sysv' && exit 0 ;;
-    3[34]??:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 4850:*:4.0:3.0)
+    3[34]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 4850:*:4.0:3.0)
        OS_REL=''
        test -r /etc/.relid \
        && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid`
@@ -939,21 +967,24 @@ EOF
     3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*)
         /bin/uname -p 2>/dev/null | grep 86 >/dev/null \
           && echo i486-ncr-sysv4 && exit 0 ;;
-    m68*:LynxOS:2.*:*)
+    m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*)
        echo m68k-unknown-lynxos${UNAME_RELEASE}
        exit 0 ;;
     mc68030:UNIX_System_V:4.*:*)
        echo m68k-atari-sysv4
        exit 0 ;;
-    i?86:LynxOS:2.*:* | i?86:LynxOS:3.[01]*:*)
+    i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.0*:*)
        echo i386-unknown-lynxos${UNAME_RELEASE}
        exit 0 ;;
     TSUNAMI:LynxOS:2.*:*)
        echo sparc-unknown-lynxos${UNAME_RELEASE}
        exit 0 ;;
-    rs6000:LynxOS:2.*:* | PowerPC:LynxOS:2.*:*)
+    rs6000:LynxOS:2.*:*)
        echo rs6000-unknown-lynxos${UNAME_RELEASE}
        exit 0 ;;
+    PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.0*:*)
+       echo powerpc-unknown-lynxos${UNAME_RELEASE}
+       exit 0 ;;
     SM[BE]S:UNIX_SV:*:*)
        echo mips-dde-sysv${UNAME_RELEASE}
        exit 0 ;;
@@ -971,8 +1002,8 @@ EOF
                echo ns32k-sni-sysv
        fi
        exit 0 ;;
-    PENTIUM:CPunix:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort
-                           # says <Richard.M.Bartel@ccMail.Census.GOV>
+    PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort
+                      # says <Richard.M.Bartel@ccMail.Census.GOV>
         echo i586-unisys-sysv4
         exit 0 ;;
     *:UNIX_System_V:4*:FTX*)
@@ -984,10 +1015,14 @@ EOF
        # From seanf@swdc.stratus.com.
        echo i860-stratus-sysv4
        exit 0 ;;
+    *:VOS:*:*)
+       # From Paul.Green@stratus.com.
+       echo hppa1.1-stratus-vos
+       exit 0 ;;
     mc68*:A/UX:*:*)
        echo m68k-apple-aux${UNAME_RELEASE}
        exit 0 ;;
-    news*:NEWS-OS:*:6*)
+    news*:NEWS-OS:6*:*)
        echo mips-sony-newsos6
        exit 0 ;;
     R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*)
@@ -1030,20 +1065,64 @@ EOF
     *:QNX:*:4*)
        echo i386-pc-qnx
        exit 0 ;;
-    NSR-W:NONSTOP_KERNEL:*:*)
+    NSR-[KW]:NONSTOP_KERNEL:*:*)
        echo nsr-tandem-nsk${UNAME_RELEASE}
        exit 0 ;;
+    *:NonStop-UX:*:*)
+       echo mips-compaq-nonstopux
+       exit 0 ;;
     BS2000:POSIX*:*:*)
        echo bs2000-siemens-sysv
        exit 0 ;;
     DS/*:UNIX_System_V:*:*)
        echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE}
        exit 0 ;;
+    *:Plan9:*:*)
+       # "uname -m" is not consistent, so use $cputype instead. 386
+       # is converted to i386 for consistency with other x86
+       # operating systems.
+       if test "$cputype" = "386"; then
+           UNAME_MACHINE=i386
+       else
+           UNAME_MACHINE="$cputype"
+       fi
+       echo ${UNAME_MACHINE}-unknown-plan9
+       exit 0 ;;
+    i*86:OS/2:*:*)
+       # If we were able to find `uname', then EMX Unix compatibility
+       # is probably installed.
+       echo ${UNAME_MACHINE}-pc-os2-emx
+       exit 0 ;;
+    *:TOPS-10:*:*)
+       echo pdp10-unknown-tops10
+       exit 0 ;;
+    *:TENEX:*:*)
+       echo pdp10-unknown-tenex
+       exit 0 ;;
+    KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*)
+       echo pdp10-dec-tops20
+       exit 0 ;;
+    XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*)
+       echo pdp10-xkl-tops20
+       exit 0 ;;
+    *:TOPS-20:*:*)
+       echo pdp10-unknown-tops20
+       exit 0 ;;
+    *:ITS:*:*)
+       echo pdp10-unknown-its
+       exit 0 ;;
+    i*86:XTS-300:*:STOP)
+       echo ${UNAME_MACHINE}-unknown-stop
+       exit 0 ;;
+    i*86:atheos:*:*)
+       echo ${UNAME_MACHINE}-unknown-atheos
+       exit 0 ;;
 esac
 
 #echo '(No uname command or uname output not recognized.)' 1>&2
 #echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2
 
+eval $set_cc_for_build
 cat >$dummy.c <<EOF
 #ifdef _SEQUENT_
 # include <sys/types.h>
@@ -1130,11 +1209,24 @@ main ()
 #endif
 
 #if defined (vax)
-#if !defined (ultrix)
-  printf ("vax-dec-bsd\n"); exit (0);
-#else
-  printf ("vax-dec-ultrix\n"); exit (0);
-#endif
+# if !defined (ultrix)
+#  include <sys/param.h>
+#  if defined (BSD)
+#   if BSD == 43
+      printf ("vax-dec-bsd4.3\n"); exit (0);
+#   else
+#    if BSD == 199006
+      printf ("vax-dec-bsd4.3reno\n"); exit (0);
+#    else
+      printf ("vax-dec-bsd\n"); exit (0);
+#    endif
+#   endif
+#  else
+    printf ("vax-dec-bsd\n"); exit (0);
+#  endif
+# else
+    printf ("vax-dec-ultrix\n"); exit (0);
+# endif
 #endif
 
 #if defined (alliant) && defined (i860)
@@ -1145,7 +1237,7 @@ main ()
 }
 EOF
 
-$CC_FOR_BUILD $dummy.c -o $dummy 2>/dev/null && ./$dummy && rm $dummy.c $dummy && exit 0
+$CC_FOR_BUILD $dummy.c -o $dummy 2>/dev/null && ./$dummy && rm -f $dummy.c $dummy && exit 0
 rm -f $dummy.c $dummy
 
 # Apollos put the system type in the environment.
@@ -1178,6 +1270,48 @@ then
     esac
 fi
 
-#echo '(Unable to guess system type)' 1>&2
+cat >&2 <<EOF
+$0: unable to guess system type
+
+This script, last modified $timestamp, has failed to recognize
+the operating system you are using. It is advised that you
+download the most up to date version of the config scripts from
+
+    ftp://ftp.gnu.org/pub/gnu/config/
+
+If the version you run ($0) is already up to date, please
+send the following data and any information you think might be
+pertinent to <config-patches@gnu.org> in order to provide the needed
+information to handle your system.
+
+config.guess timestamp = $timestamp
+
+uname -m = `(uname -m) 2>/dev/null || echo unknown`
+uname -r = `(uname -r) 2>/dev/null || echo unknown`
+uname -s = `(uname -s) 2>/dev/null || echo unknown`
+uname -v = `(uname -v) 2>/dev/null || echo unknown`
+
+/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null`
+/bin/uname -X     = `(/bin/uname -X) 2>/dev/null`
+
+hostinfo               = `(hostinfo) 2>/dev/null`
+/bin/universe          = `(/bin/universe) 2>/dev/null`
+/usr/bin/arch -k       = `(/usr/bin/arch -k) 2>/dev/null`
+/bin/arch              = `(/bin/arch) 2>/dev/null`
+/usr/bin/oslevel       = `(/usr/bin/oslevel) 2>/dev/null`
+/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null`
+
+UNAME_MACHINE = ${UNAME_MACHINE}
+UNAME_RELEASE = ${UNAME_RELEASE}
+UNAME_SYSTEM  = ${UNAME_SYSTEM}
+UNAME_VERSION = ${UNAME_VERSION}
+EOF
 
 exit 1
+
+# Local variables:
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "timestamp='"
+# time-stamp-format: "%:y-%02m-%02d"
+# time-stamp-end: "'"
+# End:
index c8e77851e69dd619632d512ff3cf4468f39b6d91..393f13d373dc87d2dbdd58b8243d27974bb5079d 100644 (file)
@@ -1,8 +1,10 @@
 #! /bin/sh
-# Configuration validation subroutine script, version 1.1.
-#   Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000
+# Configuration validation subroutine script.
+#   Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001
 #   Free Software Foundation, Inc.
-#
+
+timestamp='2001-09-07'
+
 # This file is (in principle) common to ALL GNU software.
 # The presence of a machine in this file suggests that SOME GNU software
 # can handle that machine.  It does not imply ALL GNU software can.
@@ -27,7 +29,6 @@
 # configuration script generated by Autoconf, you may include it under
 # the same distribution terms that you use for the rest of that program.
 
-# Written by Per Bothner <bothner@cygnus.com>.
 # Please send patches to <config-patches@gnu.org>.
 #
 # Configuration subroutine to validate and canonicalize a configuration type.
 #      CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM
 # It is wrong to echo any other type of specification.
 
-if [ x$1 = x ]
-then
-       echo Configuration name missing. 1>&2
-       echo "Usage: $0 CPU-MFR-OPSYS" 1>&2
-       echo "or     $0 ALIAS" 1>&2
-       echo where ALIAS is a recognized configuration type. 1>&2
-       exit 1
-fi
+me=`echo "$0" | sed -e 's,.*/,,'`
 
-# First pass through any local machine types.
-case $1 in
-       *local*)
-               echo $1
-               exit 0
-               ;;
-       *)
-       ;;
+usage="\
+Usage: $0 [OPTION] CPU-MFR-OPSYS
+       $0 [OPTION] ALIAS
+
+Canonicalize a configuration name.
+
+Operation modes:
+  -h, --help         print this help, then exit
+  -t, --time-stamp   print date of last modification, then exit
+  -v, --version      print version number, then exit
+
+Report bugs and patches to <config-patches@gnu.org>."
+
+version="\
+GNU config.sub ($timestamp)
+
+Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001
+Free Software Foundation, Inc.
+
+This is free software; see the source for copying conditions.  There is NO
+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
+
+help="
+Try \`$me --help' for more information."
+
+# Parse command line
+while test $# -gt 0 ; do
+  case $1 in
+    --time-stamp | --time* | -t )
+       echo "$timestamp" ; exit 0 ;;
+    --version | -v )
+       echo "$version" ; exit 0 ;;
+    --help | --h* | -h )
+       echo "$usage"; exit 0 ;;
+    -- )     # Stop option processing
+       shift; break ;;
+    - )        # Use stdin as input.
+       break ;;
+    -* )
+       echo "$me: invalid option $1$help"
+       exit 1 ;;
+
+    *local*)
+       # First pass through any local machine types.
+       echo $1
+       exit 0;;
+
+    * )
+       break ;;
+  esac
+done
+
+case $# in
+ 0) echo "$me: missing argument$help" >&2
+    exit 1;;
+ 1) ;;
+ *) echo "$me: too many arguments$help" >&2
+    exit 1;;
 esac
 
 # Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any).
 # Here we must recognize all the valid KERNEL-OS combinations.
 maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'`
 case $maybe_os in
-  nto-qnx* | linux-gnu*)
+  nto-qnx* | linux-gnu* | storm-chaos* | os2-emx* | windows32-*)
     os=-$maybe_os
     basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`
     ;;
@@ -99,7 +143,7 @@ case $os in
        -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\
        -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \
        -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \
-       -apple)
+       -apple | -axis)
                os=
                basic_machine=$1
                ;;
@@ -113,6 +157,14 @@ case $os in
                os=-vxworks
                basic_machine=$1
                ;;
+       -chorusos*)
+               os=-chorusos
+               basic_machine=$1
+               ;;
+       -chorusrdb)
+               os=-chorusrdb
+               basic_machine=$1
+               ;;
        -hiux*)
                os=-hiuxwe2
                ;;
@@ -171,30 +223,50 @@ esac
 case $basic_machine in
        # Recognize the basic CPU types without company name.
        # Some are omitted here because they have special meanings below.
-       tahoe | i860 | ia64 | m32r | m68k | m68000 | m88k | ns32k | arc | arm \
-               | arme[lb] | pyramid | mn10200 | mn10300 | tron | a29k \
-               | 580 | i960 | h8300 \
-               | x86 | ppcbe | mipsbe | mipsle | shbe | shle | armbe | armle \
-               | hppa | hppa1.0 | hppa1.1 | hppa2.0 | hppa2.0w | hppa2.0n \
-               | hppa64 \
-               | alpha | alphaev[4-8] | alphaev56 | alphapca5[67] \
-               | alphaev6[78] \
-               | we32k | ns16k | clipper | i370 | sh | powerpc | powerpcle \
-               | 1750a | dsp16xx | pdp11 | mips16 | mips64 | mipsel | mips64el \
-               | mips64orion | mips64orionel | mipstx39 | mipstx39el \
-               | mips64vr4300 | mips64vr4300el | mips64vr4100 | mips64vr4100el \
-               | mips64vr5000 | miprs64vr5000el | mcore \
-               | sparc | sparclet | sparclite | sparc64 | sparcv9 | v850 | c4x \
-               | thumb | d10v | fr30 | avr)
+       1750a | 580 \
+       | a29k \
+       | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \
+       | arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr \
+       | c4x | clipper \
+       | d10v | d30v | dsp16xx \
+       | fr30 \
+       | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
+       | i370 | i860 | i960 | ia64 \
+       | m32r | m68000 | m68k | m88k | mcore \
+       | mips16 | mips64 | mips64el | mips64orion | mips64orionel \
+       | mips64vr4100 | mips64vr4100el | mips64vr4300 \
+       | mips64vr4300el | mips64vr5000 | mips64vr5000el \
+       | mipsbe | mipseb | mipsel | mipsle | mipstx39 | mipstx39el \
+       | mipsisa32 \
+       | mn10200 | mn10300 \
+       | ns16k | ns32k \
+       | openrisc \
+       | pdp10 | pdp11 | pj | pjl \
+       | powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \
+       | pyramid \
+       | s390 | s390x \
+       | sh | sh[34] | sh[34]eb | shbe | shle \
+       | sparc | sparc64 | sparclet | sparclite | sparcv9 | sparcv9b \
+       | stormy16 | strongarm \
+       | tahoe | thumb | tic80 | tron \
+       | v850 \
+       | we32k \
+       | x86 | xscale \
+       | z8k)
                basic_machine=$basic_machine-unknown
                ;;
-       m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | z8k | v70 | h8500 | w65 | pj | pjl)
+       m6811 | m68hc11 | m6812 | m68hc12)
+               # Motorola 68HC11/12.
+               basic_machine=$basic_machine-unknown
+               os=-none
+               ;;
+       m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k)
                ;;
 
        # We use `pc' rather than `unknown'
        # because (1) that's what they normally are, and
        # (2) the word "unknown" tends to confuse beginning users.
-       i[34567]86)
+       i*86 | x86_64)
          basic_machine=$basic_machine-pc
          ;;
        # Object if more than one company name word.
@@ -203,28 +275,43 @@ case $basic_machine in
                exit 1
                ;;
        # Recognize the basic CPU types with company name.
-       # FIXME: clean up the formatting here.
-       vax-* | tahoe-* | i[34567]86-* | i860-* | ia64-* | m32r-* | m68k-* | m68000-* \
-             | m88k-* | sparc-* | ns32k-* | fx80-* | arc-* | arm-* | c[123]* \
-             | mips-* | pyramid-* | tron-* | a29k-* | romp-* | rs6000-* \
-             | power-* | none-* | 580-* | cray2-* | h8300-* | h8500-* | i960-* \
-             | xmp-* | ymp-* \
-             | x86-* | ppcbe-* | mipsbe-* | mipsle-* | shbe-* | shle-* | armbe-* | armle-* \
-             | hppa-* | hppa1.0-* | hppa1.1-* | hppa2.0-* | hppa2.0w-* \
-             | hppa2.0n-* | hppa64-* \
-             | alpha-* | alphaev[4-8]-* | alphaev56-* | alphapca5[67]-* \
-             | alphaev6[78]-* \
-             | we32k-* | cydra-* | ns16k-* | pn-* | np1-* | xps100-* \
-             | clipper-* | orion-* \
-             | sparclite-* | pdp11-* | sh-* | powerpc-* | powerpcle-* \
-             | sparc64-* | sparcv9-* | sparc86x-* | mips16-* | mips64-* | mipsel-* \
-             | mips64el-* | mips64orion-* | mips64orionel-* \
-             | mips64vr4100-* | mips64vr4100el-* | mips64vr4300-* | mips64vr4300el-* \
-             | mipstx39-* | mipstx39el-* | mcore-* \
-             | f301-* | armv*-* | s390-* | sv1-* | t3e-* \
-             | m88110-* | m680[01234]0-* | m683?2-* | m68360-* | z8k-* | d10v-* \
-             | thumb-* | v850-* | d30v-* | tic30-* | c30-* | fr30-* \
-             | bs2000-*)
+       580-* \
+       | a29k-* \
+       | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \
+       | alphapca5[67]-* | arc-* \
+       | arm-*  | armbe-* | armle-* | armv*-* \
+       | bs2000-* \
+       | c[123]* | c30-* | [cjt]90-* | c54x-* \
+       | clipper-* | cray2-* | cydra-* \
+       | d10v-* | d30v-* \
+       | elxsi-* \
+       | f30[01]-* | f700-* | fr30-* | fx80-* \
+       | h8300-* | h8500-* \
+       | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \
+       | i*86-* | i860-* | i960-* | ia64-* \
+       | m32r-* \
+       | m68000-* | m680[01234]0-* | m68360-* | m683?2-* | m68k-* \
+       | m88110-* | m88k-* | mcore-* \
+       | mips-* | mips16-* | mips64-* | mips64el-* | mips64orion-* \
+       | mips64orionel-* | mips64vr4100-* | mips64vr4100el-* \
+       | mips64vr4300-* | mips64vr4300el-* | mipsbe-* | mipseb-* \
+       | mipsle-* | mipsel-* | mipstx39-* | mipstx39el-* \
+       | none-* | np1-* | ns16k-* | ns32k-* \
+       | orion-* \
+       | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \
+       | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \
+       | pyramid-* \
+       | romp-* | rs6000-* \
+       | s390-* | s390x-* \
+       | sh-* | sh[34]-* | sh[34]eb-* | shbe-* | shle-* \
+       | sparc-* | sparc64-* | sparc86x-* | sparclite-* \
+       | sparcv9-* | sparcv9b-* | stormy16-* | strongarm-* | sv1-* \
+       | t3e-* | tahoe-* | thumb-* | tic30-* | tic54x-* | tic80-* | tron-* \
+       | v850-* | vax-* \
+       | we32k-* \
+       | x86-* | x86_64-* | xmp-* | xps100-* | xscale-* \
+       | ymp-* \
+       | z8k-*)
                ;;
        # Recognize the various machine names and aliases which stand
        # for a CPU type and a company and sometimes even an OS.
@@ -261,14 +348,14 @@ case $basic_machine in
                os=-sysv
                ;;
        amiga | amiga-*)
-               basic_machine=m68k-cbm
+               basic_machine=m68k-unknown
                ;;
        amigaos | amigados)
-               basic_machine=m68k-cbm
+               basic_machine=m68k-unknown
                os=-amigaos
                ;;
        amigaunix | amix)
-               basic_machine=m68k-cbm
+               basic_machine=m68k-unknown
                os=-sysv4
                ;;
        apollo68)
@@ -315,13 +402,16 @@ case $basic_machine in
                basic_machine=cray2-cray
                os=-unicos
                ;;
-       [ctj]90-cray)
-               basic_machine=c90-cray
+       [cjt]90)
+               basic_machine=${basic_machine}-cray
                os=-unicos
                ;;
        crds | unos)
                basic_machine=m68k-crds
                ;;
+       cris | cris-* | etrax*)
+               basic_machine=cris-axis
+               ;;
        da30 | da30-*)
                basic_machine=m68k-da30
                ;;
@@ -369,6 +459,10 @@ case $basic_machine in
                basic_machine=tron-gmicro
                os=-sysv
                ;;
+       go32)
+               basic_machine=i386-pc
+               os=-go32
+               ;;
        h3050r* | hiux*)
                basic_machine=hppa1.1-hitachi
                os=-hiuxwe2
@@ -444,19 +538,19 @@ case $basic_machine in
                basic_machine=i370-ibm
                ;;
 # I'm not sure what "Sysv32" means.  Should this be sysv3.2?
-       i[34567]86v32)
+       i*86v32)
                basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
                os=-sysv32
                ;;
-       i[34567]86v4*)
+       i*86v4*)
                basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
                os=-sysv4
                ;;
-       i[34567]86v)
+       i*86v)
                basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
                os=-sysv
                ;;
-       i[34567]86sol2)
+       i*86sol2)
                basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
                os=-solaris2
                ;;
@@ -468,14 +562,6 @@ case $basic_machine in
                basic_machine=i386-unknown
                os=-vsta
                ;;
-       i386-go32 | go32)
-               basic_machine=i386-unknown
-               os=-go32
-               ;;
-       i386-mingw32 | mingw32)
-               basic_machine=i386-unknown
-               os=-mingw32
-               ;;
        iris | iris4d)
                basic_machine=mips-sgi
                case $os in
@@ -501,6 +587,10 @@ case $basic_machine in
                basic_machine=ns32k-utek
                os=-sysv
                ;;
+       mingw32)
+               basic_machine=i386-pc
+               os=-mingw32
+               ;;
        miniframe)
                basic_machine=m68000-convergent
                ;;
@@ -531,7 +621,7 @@ case $basic_machine in
                os=-coff
                ;;
        msdos)
-               basic_machine=i386-unknown
+               basic_machine=i386-pc
                os=-msdos
                ;;
        mvs)
@@ -595,6 +685,10 @@ case $basic_machine in
                basic_machine=i960-intel
                os=-mon960
                ;;
+       nonstopux)
+               basic_machine=mips-compaq
+               os=-nonstopux
+               ;;
        np1)
                basic_machine=np1-gould
                ;;
@@ -630,28 +724,28 @@ case $basic_machine in
         pc532 | pc532-*)
                basic_machine=ns32k-pc532
                ;;
-       pentium | p5 | k5 | k6 | nexen)
+       pentium | p5 | k5 | k6 | nexgen)
                basic_machine=i586-pc
                ;;
-       pentiumpro | p6 | 6x86)
+       pentiumpro | p6 | 6x86 | athlon)
                basic_machine=i686-pc
                ;;
        pentiumii | pentium2)
-               basic_machine=i786-pc
+               basic_machine=i686-pc
                ;;
-       pentium-* | p5-* | k5-* | k6-* | nexen-*)
+       pentium-* | p5-* | k5-* | k6-* | nexgen-*)
                basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'`
                ;;
-       pentiumpro-* | p6-* | 6x86-*)
+       pentiumpro-* | p6-* | 6x86-* | athlon-*)
                basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'`
                ;;
        pentiumii-* | pentium2-*)
-               basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'`
+               basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'`
                ;;
        pn)
                basic_machine=pn-gould
                ;;
-       power)  basic_machine=rs6000-ibm
+       power)  basic_machine=power-ibm
                ;;
        ppc)    basic_machine=powerpc-unknown
                ;;
@@ -663,9 +757,23 @@ case $basic_machine in
        ppcle-* | powerpclittle-*)
                basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'`
                ;;
+       ppc64)  basic_machine=powerpc64-unknown
+               ;;
+       ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'`
+               ;;
+       ppc64le | powerpc64little | ppc64-le | powerpc64-little)
+               basic_machine=powerpc64le-unknown
+               ;;
+       ppc64le-* | powerpc64little-*)
+               basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'`
+               ;;
        ps2)
                basic_machine=i386-ibm
                ;;
+       pw32)
+               basic_machine=i586-unknown
+               os=-pw32
+               ;;
        rom68k)
                basic_machine=m68k-rom68k
                os=-coff
@@ -757,6 +865,10 @@ case $basic_machine in
                basic_machine=t3e-cray
                os=-unicos
                ;;
+       tic54x | c54x*)
+               basic_machine=tic54x-unknown
+               os=-coff
+               ;;
        tx39)
                basic_machine=mipstx39-unknown
                ;;
@@ -809,6 +921,10 @@ case $basic_machine in
                basic_machine=hppa1.1-winbond
                os=-proelf
                ;;
+       windows32)
+               basic_machine=i386-pc
+               os=-windows32-msvcrt
+               ;;
        xmp)
                basic_machine=xmp-cray
                os=-unicos
@@ -852,13 +968,20 @@ case $basic_machine in
        vax)
                basic_machine=vax-dec
                ;;
+       pdp10)
+               # there are many clones, so DEC is not a safe bet
+               basic_machine=pdp10-unknown
+               ;;
        pdp11)
                basic_machine=pdp11-dec
                ;;
        we32k)
                basic_machine=we32k-att
                ;;
-       sparc | sparcv9)
+       sh3 | sh4 | sh3eb | sh4eb)
+               basic_machine=sh-unknown
+               ;;
+       sparc | sparcv9 | sparcv9b)
                basic_machine=sparc-sun
                ;;
         cydra)
@@ -880,6 +1003,9 @@ case $basic_machine in
                basic_machine=c4x-none
                os=-coff
                ;;
+       *-unknown)
+               # Make sure to match an already-canonicalized machine name.
+               ;;
        *)
                echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2
                exit 1
@@ -936,15 +1062,18 @@ case $os in
              | -lynxos* | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \
              | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \
              | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \
+             | -chorusos* | -chorusrdb* \
              | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
              | -mingw32* | -linux-gnu* | -uxpv* | -beos* | -mpeix* | -udk* \
              | -interix* | -uwin* | -rhapsody* | -darwin* | -opened* \
-             | -openstep* | -oskit*)
+             | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \
+             | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \
+             | -os2* | -vos*)
        # Remember, each alternative MUST END IN *, to match a version number.
                ;;
        -qnx*)
                case $basic_machine in
-                   x86-* | i[34567]86-*)
+                   x86-* | i*86-*)
                        ;;
                    *)
                        os=-nto$os
@@ -1000,7 +1129,7 @@ case $os in
        -ns2 )
                os=-nextstep2
                ;;
-       -nsk)
+       -nsk*)
                os=-nsk
                ;;
        # Preserve the version number of sinix5.
@@ -1037,7 +1166,7 @@ case $os in
        -xenix)
                os=-xenix
                ;;
-        -*mint | -*MiNT)
+        -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*)
                os=-mint
                ;;
        -none)
@@ -1071,6 +1200,9 @@ case $basic_machine in
        arm*-semi)
                os=-aout
                ;;
+       pdp10-*)
+               os=-tops20
+               ;;
         pdp11-*)
                os=-none
                ;;
@@ -1179,7 +1311,7 @@ case $basic_machine in
        *-masscomp)
                os=-rtu
                ;;
-       f301-fujitsu)
+       f30[01]-fujitsu | f700-fujitsu)
                os=-uxpv
                ;;
        *-rom68k)
@@ -1257,12 +1389,23 @@ case $basic_machine in
                        -mpw* | -macos*)
                                vendor=apple
                                ;;
-                       -*mint | -*MiNT)
+                       -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*)
                                vendor=atari
                                ;;
+                       -vos*)
+                               vendor=stratus
+                               ;;
                esac
                basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"`
                ;;
 esac
 
 echo $basic_machine$os
+exit 0
+
+# Local variables:
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "timestamp='"
+# time-stamp-format: "%:y-%02m-%02d"
+# time-stamp-end: "'"
+# End:
index f462b5bb9121550708bbc990054e450a84605ae2..3f51ec916f269b8b70d1836e6d36108f23fd27e9 100644 (file)
@@ -11,6 +11,8 @@
 ac_help=
 ac_default_prefix=/usr/local
 # Any additions from configure.in:
+ac_help="$ac_help
+  --enable-debug          enable debug codes [default=no]"
 ac_help="$ac_help
   --with-logdir=DIR       mdnsproxy's log files are in DIR.
                           [default=LOCALSTATEDIR/mdnsproxy]"
@@ -42,10 +44,22 @@ ac_help="$ac_help
   --with-amc-ace-o-suffix=SUFFIX  suffix for AMC-ACE-O encoding [-amc2]"
 ac_help="$ac_help
   --with-amc-ace-r-prefix=PREFIX  prefix for AMC-ACE-R encoding [amc3-]"
+ac_help="$ac_help
+  --with-amc-ace-v-prefix=PREFIX  prefix for AMC-ACE-V encoding [amc4-]"
+ac_help="$ac_help
+  --with-amc-ace-w-prefix=PREFIX  prefix for AMC-ACE-W encoding [amc5-]"
+ac_help="$ac_help
+  --with-amc-ace-z-prefix=PREFIX  prefix for AMC-ACE-Z encoding [zq--]"
+ac_help="$ac_help
+  --with-mace-prefix=PREFIX  prefix for MACE encoding [mq--]"
+ac_help="$ac_help
+  --with-libiconv=IPREFIX  GNU libiconv are installed in IPREFIX [PREFIX]"
+ac_help="$ac_help
+  --with-iconv-include=DIR  iconv include files are in DIR []"
 ac_help="$ac_help
   --with-iconv=LIB        special library for iconv []"
 ac_help="$ac_help
-  --with-iconv-sofile=PATH shared library file for libiconv []"
+  --with-iconv-sofile=PATH  shared library file for libiconv []"
 ac_help="$ac_help
   --with-preference=ARG   change the default configuration to the one
                           suitable for ARG."
@@ -596,7 +610,7 @@ else { echo "configure: error: can not run $ac_config_sub" 1>&2; exit 1; }
 fi
 
 echo $ac_n "checking host system type""... $ac_c" 1>&6
-echo "configure:600: checking host system type" >&5
+echo "configure:614: checking host system type" >&5
 
 host_alias=$host
 case "$host_alias" in
@@ -617,6 +631,19 @@ host_os=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
 echo "$ac_t""$host" 1>&6
 
 
+debug=no
+# Check whether --enable-debug or --disable-debug was given.
+if test "${enable_debug+set}" = set; then
+  enableval="$enable_debug"
+  debug=$enableval
+fi
+
+case "$enableval" in
+yes)
+    CFLAGS="$CFLAGS -DDEBUG"
+    ;;
+esac
+
 logdir=no
 # Check whether --with-logdir or --without-logdir was given.
 if test "${with_logdir+set}" = set; then
@@ -664,6 +691,7 @@ fi
 
 case "$utf8name" in
 no)
+    utf8name=UTF-8
     ;;
 yes)
     { echo "configure: error: You must specify NAME to --with-utf8 option." 1>&2; exit 1; }
@@ -946,8 +974,160 @@ EOF
 
 fi
 
+ace_prefix=no
+# Check whether --with-amc-ace-v-prefix or --without-amc-ace-v-prefix was given.
+if test "${with_amc_ace_v_prefix+set}" = set; then
+  withval="$with_amc_ace_v_prefix"
+  ace_prefix=$withval
+fi
+
+case "${ace_prefix}" in
+no)
+    ace_prefix="amc4-"
+    ;;
+yes)
+    { echo "configure: error: You must specify PREFIX to --with-amc-ace-v-prefix option." 1>&2; exit 1; }
+    ;;
+esac
+if test "${ace_prefix}" != ""; then
+    cat >> confdefs.h <<EOF
+#define MDN_AMCACEV_PREFIX "${ace_prefix}"
+EOF
+
+fi
+
+ace_prefix=no
+# Check whether --with-amc-ace-w-prefix or --without-amc-ace-w-prefix was given.
+if test "${with_amc_ace_w_prefix+set}" = set; then
+  withval="$with_amc_ace_w_prefix"
+  ace_prefix=$withval
+fi
+
+case "${ace_prefix}" in
+no)
+    ace_prefix="amc5-"
+    ;;
+yes)
+    { echo "configure: error: You must specify PREFIX to --with-amc-ace-w-prefix option." 1>&2; exit 1; }
+    ;;
+esac
+if test "${ace_prefix}" != ""; then
+    cat >> confdefs.h <<EOF
+#define MDN_AMCACEW_PREFIX "${ace_prefix}"
+EOF
+
+fi
+
+ace_prefix=no
+# Check whether --with-amc-ace-z-prefix or --without-amc-ace-z-prefix was given.
+if test "${with_amc_ace_z_prefix+set}" = set; then
+  withval="$with_amc_ace_z_prefix"
+  ace_prefix=$withval
+fi
+
+case "${ace_prefix}" in
+no)
+    ace_prefix="zq--"
+    ;;
+yes)
+    { echo "configure: error: You must specify PREFIX to --with-amc-ace-z-prefix option." 1>&2; exit 1; }
+    ;;
+esac
+if test "${ace_prefix}" != ""; then
+    cat >> confdefs.h <<EOF
+#define MDN_AMCACEZ_PREFIX "${ace_prefix}"
+EOF
+
+fi
+
+ace_prefix=no
+# Check whether --with-mace-prefix or --without-mace-prefix was given.
+if test "${with_mace_prefix+set}" = set; then
+  withval="$with_mace_prefix"
+  ace_prefix=$withval
+fi
+
+case "${ace_prefix}" in
+no)
+    ace_prefix="mq--"
+    ;;
+yes)
+    { echo "configure: error: You must specify PREFIX to --with-mace-prefix option." 1>&2; exit 1; }
+    ;;
+esac
+if test "${ace_prefix}" != ""; then
+    cat >> confdefs.h <<EOF
+#define MDN_MACE_PREFIX "${ace_prefix}"
+EOF
+
+fi
+
+
+ICONVINC=
+ICONVLIB=
+
+libiconv=unspec
+# Check whether --with-libiconv or --without-libiconv was given.
+if test "${with_libiconv+set}" = set; then
+  withval="$with_libiconv"
+  libiconv=$withval
+fi
+
+case "$libiconv" in
+unspec)
+    ;;
+no)
+    ICONVINC=
+    ICONVLIB=
+    ;;
+yes)
+    if test X$prefix = XNONE ; then
+       libiconv=$ac_default_prefix
+    else
+       libiconv=$prefix
+    fi
+    ICONVINC="-I$libiconv/include"
+    ICONVLIB="-L$libiconv/lib -R$libiconv/lib -liconv"
+    ;;
+*)
+    ICONVINC="-I$libiconv/include"
+    ICONVLIB="-L$libiconv/lib -R$libiconv/lib -liconv"
+    ;;
+esac
+
+iconv_include=unspec
+# Check whether --with-iconv-include or --without-iconv-include was given.
+if test "${with_iconv_include+set}" = set; then
+  withval="$with_iconv_include"
+  iconv_include=$withval
+fi
+
+case "$iconv_include" in
+unspec)
+    ;;
+no)
+    ICONVINC=
+    ;;
+yes)
+    echo "configure: warning: You must supply DIR to --with-iconv-include option.
+  Ignored." 1>&2
+    ICONVINC=
+    ;;
+*)
+    ICONVINC="-I$iconv_include"
+    ;;
+esac
+
+if test "X$ICONVINC" != X ; then
+    iconv_include="`echo X$ICONVINC | sed -e 's/^X-I//'`"
+    if test ! -f "$iconv_include/iconv.h" ; then
+       { echo "configure: error: iconv.h doesn't exist in $iconv_include" 1>&2; exit 1; }
+    fi
+fi
+
 
-iconv=no
+
+iconv=unspec
 # Check whether --with-iconv or --without-iconv was given.
 if test "${with_iconv+set}" = set; then
   withval="$with_iconv"
@@ -955,6 +1135,8 @@ if test "${with_iconv+set}" = set; then
 fi
 
 case "$iconv" in
+unspec)
+    ;;
 no)
     ICONVLIB=
     ;;
@@ -990,7 +1172,7 @@ guess)
        ICONVSOFILE=none
     else
        echo $ac_n "checking pathname of iconv shared library""... $ac_c" 1>&6
-echo "configure:994: checking pathname of iconv shared library" >&5
+echo "configure:1176: checking pathname of iconv shared library" >&5
        ic_libdir=
        ic_libname=
        case "$host" in
@@ -1081,15 +1263,25 @@ case "$host" in
     PRELOAD_VAR="_RLD_LIST"
     PRELOAD_LAST=":DEFAULT"
     ;;
+*-netbsd*)
+    if test -x /usr/bin/file -a -x /usr/bin/grep ; then
+        case "`/usr/bin/file /usr/bin/grep`" in
+       *ELF*)
+           PRELOAD_SEP=" "
+           ;;
+       esac
+    fi
+    ;;
 esac
 
 
 
 
+
 # Extract the first word of "gcc", so it can be a program name with args.
 set dummy gcc; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1093: checking for $ac_word" >&5
+echo "configure:1285: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -1119,7 +1311,7 @@ if test -z "$CC"; then
   # Extract the first word of "cc", so it can be a program name with args.
 set dummy cc; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1123: checking for $ac_word" >&5
+echo "configure:1315: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -1170,7 +1362,7 @@ fi
       # Extract the first word of "cl", so it can be a program name with args.
 set dummy cl; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1174: checking for $ac_word" >&5
+echo "configure:1366: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -1202,7 +1394,7 @@ fi
 fi
 
 echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6
-echo "configure:1206: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5
+echo "configure:1398: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5
 
 ac_ext=c
 # CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
@@ -1213,12 +1405,12 @@ cross_compiling=$ac_cv_prog_cc_cross
 
 cat > conftest.$ac_ext << EOF
 
-#line 1217 "configure"
+#line 1409 "configure"
 #include "confdefs.h"
 
 main(){return(0);}
 EOF
-if { (eval echo configure:1222: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:1414: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   ac_cv_prog_cc_works=yes
   # If we can't run a trivial program, we are probably using a cross compiler.
   if (./conftest; exit) 2>/dev/null; then
@@ -1244,12 +1436,12 @@ if test $ac_cv_prog_cc_works = no; then
   { echo "configure: error: installation or configuration problem: C compiler cannot create executables." 1>&2; exit 1; }
 fi
 echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler""... $ac_c" 1>&6
-echo "configure:1248: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5
+echo "configure:1440: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5
 echo "$ac_t""$ac_cv_prog_cc_cross" 1>&6
 cross_compiling=$ac_cv_prog_cc_cross
 
 echo $ac_n "checking whether we are using GNU C""... $ac_c" 1>&6
-echo "configure:1253: checking whether we are using GNU C" >&5
+echo "configure:1445: checking whether we are using GNU C" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_gcc'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -1258,7 +1450,7 @@ else
   yes;
 #endif
 EOF
-if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:1262: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
+if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:1454: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
   ac_cv_prog_gcc=yes
 else
   ac_cv_prog_gcc=no
@@ -1277,7 +1469,7 @@ ac_test_CFLAGS="${CFLAGS+set}"
 ac_save_CFLAGS="$CFLAGS"
 CFLAGS=
 echo $ac_n "checking whether ${CC-cc} accepts -g""... $ac_c" 1>&6
-echo "configure:1281: checking whether ${CC-cc} accepts -g" >&5
+echo "configure:1473: checking whether ${CC-cc} accepts -g" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_cc_g'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -1320,7 +1512,7 @@ fi
 # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
 # ./install, which can be erroneously created by make from ./install.sh.
 echo $ac_n "checking for a BSD compatible install""... $ac_c" 1>&6
-echo "configure:1324: checking for a BSD compatible install" >&5
+echo "configure:1516: checking for a BSD compatible install" >&5
 if test -z "$INSTALL"; then
 if eval "test \"`echo '$''{'ac_cv_path_install'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -1442,7 +1634,7 @@ else
 fi
 
 echo $ac_n "checking build system type""... $ac_c" 1>&6
-echo "configure:1446: checking build system type" >&5
+echo "configure:1638: checking build system type" >&5
 
 build_alias=$build
 case "$build_alias" in
@@ -1462,7 +1654,7 @@ echo "$ac_t""$build" 1>&6
 # Extract the first word of "ranlib", so it can be a program name with args.
 set dummy ranlib; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1466: checking for $ac_word" >&5
+echo "configure:1658: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_RANLIB'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -1501,7 +1693,7 @@ ac_prog=ld
 if test "$ac_cv_prog_gcc" = yes; then
   # Check if gcc -print-prog-name=ld gives a path.
   echo $ac_n "checking for ld used by GCC""... $ac_c" 1>&6
-echo "configure:1505: checking for ld used by GCC" >&5
+echo "configure:1697: checking for ld used by GCC" >&5
   ac_prog=`($CC -print-prog-name=ld) 2>&5`
   case "$ac_prog" in
     # Accept absolute paths.
@@ -1525,10 +1717,10 @@ echo "configure:1505: checking for ld used by GCC" >&5
   esac
 elif test "$with_gnu_ld" = yes; then
   echo $ac_n "checking for GNU ld""... $ac_c" 1>&6
-echo "configure:1529: checking for GNU ld" >&5
+echo "configure:1721: checking for GNU ld" >&5
 else
   echo $ac_n "checking for non-GNU ld""... $ac_c" 1>&6
-echo "configure:1532: checking for non-GNU ld" >&5
+echo "configure:1724: checking for non-GNU ld" >&5
 fi
 if eval "test \"`echo '$''{'ac_cv_path_LD'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -1563,7 +1755,7 @@ else
 fi
 test -z "$LD" && { echo "configure: error: no acceptable ld found in \$PATH" 1>&2; exit 1; }
 echo $ac_n "checking if the linker ($LD) is GNU ld""... $ac_c" 1>&6
-echo "configure:1567: checking if the linker ($LD) is GNU ld" >&5
+echo "configure:1759: checking if the linker ($LD) is GNU ld" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_gnu_ld'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -1579,7 +1771,7 @@ echo "$ac_t""$ac_cv_prog_gnu_ld" 1>&6
 
 
 echo $ac_n "checking for BSD-compatible nm""... $ac_c" 1>&6
-echo "configure:1583: checking for BSD-compatible nm" >&5
+echo "configure:1775: checking for BSD-compatible nm" >&5
 if eval "test \"`echo '$''{'ac_cv_path_NM'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -1615,7 +1807,7 @@ NM="$ac_cv_path_NM"
 echo "$ac_t""$NM" 1>&6
 
 echo $ac_n "checking whether ln -s works""... $ac_c" 1>&6
-echo "configure:1619: checking whether ln -s works" >&5
+echo "configure:1811: checking whether ln -s works" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_LN_S'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -1664,8 +1856,8 @@ test x"$silent" = xyes && libtool_flags="$libtool_flags --silent"
 case "$lt_target" in
 *-*-irix6*)
   # Find out which ABI we are using.
-  echo '#line 1668 "configure"' > conftest.$ac_ext
-  if { (eval echo configure:1669: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+  echo '#line 1860 "configure"' > conftest.$ac_ext
+  if { (eval echo configure:1861: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
     case "`/usr/bin/file conftest.o`" in
     *32-bit*)
       LD="${LD-ld} -32"
@@ -1686,19 +1878,19 @@ case "$lt_target" in
   SAVE_CFLAGS="$CFLAGS"
   CFLAGS="$CFLAGS -belf"
   echo $ac_n "checking whether the C compiler needs -belf""... $ac_c" 1>&6
-echo "configure:1690: checking whether the C compiler needs -belf" >&5
+echo "configure:1882: checking whether the C compiler needs -belf" >&5
 if eval "test \"`echo '$''{'lt_cv_cc_needs_belf'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 1695 "configure"
+#line 1887 "configure"
 #include "confdefs.h"
 
 int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:1702: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:1894: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   lt_cv_cc_needs_belf=yes
 else
@@ -1801,7 +1993,7 @@ exec 5>>./config.log
 
 
 echo $ac_n "checking how to run the C preprocessor""... $ac_c" 1>&6
-echo "configure:1805: checking how to run the C preprocessor" >&5
+echo "configure:1997: checking how to run the C preprocessor" >&5
 # On Suns, sometimes $CPP names a directory.
 if test -n "$CPP" && test -d "$CPP"; then
   CPP=
@@ -1816,13 +2008,13 @@ else
   # On the NeXT, cc -E runs the code through the compiler's parser,
   # not just through cpp.
   cat > conftest.$ac_ext <<EOF
-#line 1820 "configure"
+#line 2012 "configure"
 #include "confdefs.h"
 #include <assert.h>
 Syntax Error
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:1826: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:2018: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   :
@@ -1833,13 +2025,13 @@ else
   rm -rf conftest*
   CPP="${CC-cc} -E -traditional-cpp"
   cat > conftest.$ac_ext <<EOF
-#line 1837 "configure"
+#line 2029 "configure"
 #include "confdefs.h"
 #include <assert.h>
 Syntax Error
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:1843: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:2035: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   :
@@ -1850,13 +2042,13 @@ else
   rm -rf conftest*
   CPP="${CC-cc} -nologo -E"
   cat > conftest.$ac_ext <<EOF
-#line 1854 "configure"
+#line 2046 "configure"
 #include "confdefs.h"
 #include <assert.h>
 Syntax Error
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:1860: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:2052: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   :
@@ -1884,17 +2076,17 @@ for ac_hdr in unistd.h locale.h langinfo.h resolv.h
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:1888: checking for $ac_hdr" >&5
+echo "configure:2080: checking for $ac_hdr" >&5
 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 1893 "configure"
+#line 2085 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:1898: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:2090: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -1924,17 +2116,17 @@ for ac_hdr in sys/select.h arpa/nameser.h
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:1928: checking for $ac_hdr" >&5
+echo "configure:2120: checking for $ac_hdr" >&5
 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 1933 "configure"
+#line 2125 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:1938: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:2130: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -1964,17 +2156,17 @@ for ac_hdr in dlfcn.h
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:1968: checking for $ac_hdr" >&5
+echo "configure:2160: checking for $ac_hdr" >&5
 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 1973 "configure"
+#line 2165 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:1978: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:2170: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -2001,13 +2193,51 @@ fi
 done
 
 
+saved_CPPFLAGS=$CPPFLAGS
+CPPFLAGS="$CPPFLAGS $ICONVINC"
+ac_safe=`echo "iconv.h" | sed 'y%./+-%__p_%'`
+echo $ac_n "checking for iconv.h""... $ac_c" 1>&6
+echo "configure:2201: checking for iconv.h" >&5
+if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+  cat > conftest.$ac_ext <<EOF
+#line 2206 "configure"
+#include "confdefs.h"
+#include <iconv.h>
+EOF
+ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
+{ (eval echo configure:2211: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
+if test -z "$ac_err"; then
+  rm -rf conftest*
+  eval "ac_cv_header_$ac_safe=yes"
+else
+  echo "$ac_err" >&5
+  echo "configure: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+  rm -rf conftest*
+  eval "ac_cv_header_$ac_safe=no"
+fi
+rm -f conftest*
+fi
+if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
+  echo "$ac_t""yes" 1>&6
+  :
+else
+  echo "$ac_t""no" 1>&6
+{ echo "configure: error: iconv.h doesn't exist" 1>&2; exit 1; }
+fi
+
+CPPFLAGS=$saved_CPPFLAGS
+
 echo $ac_n "checking for uid_t in sys/types.h""... $ac_c" 1>&6
-echo "configure:2006: checking for uid_t in sys/types.h" >&5
+echo "configure:2236: checking for uid_t in sys/types.h" >&5
 if eval "test \"`echo '$''{'ac_cv_type_uid_t'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 2011 "configure"
+#line 2241 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 EOF
@@ -2036,12 +2266,12 @@ EOF
 fi
 
 echo $ac_n "checking for ANSI C header files""... $ac_c" 1>&6
-echo "configure:2040: checking for ANSI C header files" >&5
+echo "configure:2270: checking for ANSI C header files" >&5
 if eval "test \"`echo '$''{'ac_cv_header_stdc'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 2045 "configure"
+#line 2275 "configure"
 #include "confdefs.h"
 #include <stdlib.h>
 #include <stdarg.h>
@@ -2049,7 +2279,7 @@ else
 #include <float.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:2053: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:2283: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -2066,7 +2296,7 @@ rm -f conftest*
 if test $ac_cv_header_stdc = yes; then
   # SunOS 4.x string.h does not declare mem*, contrary to ANSI.
 cat > conftest.$ac_ext <<EOF
-#line 2070 "configure"
+#line 2300 "configure"
 #include "confdefs.h"
 #include <string.h>
 EOF
@@ -2084,7 +2314,7 @@ fi
 if test $ac_cv_header_stdc = yes; then
   # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
 cat > conftest.$ac_ext <<EOF
-#line 2088 "configure"
+#line 2318 "configure"
 #include "confdefs.h"
 #include <stdlib.h>
 EOF
@@ -2105,7 +2335,7 @@ if test "$cross_compiling" = yes; then
   :
 else
   cat > conftest.$ac_ext <<EOF
-#line 2109 "configure"
+#line 2339 "configure"
 #include "confdefs.h"
 #include <ctype.h>
 #define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
@@ -2116,7 +2346,7 @@ if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) exit(2);
 exit (0); }
 
 EOF
-if { (eval echo configure:2120: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:2350: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
 then
   :
 else
@@ -2140,12 +2370,12 @@ EOF
 fi
 
 echo $ac_n "checking for BOOL""... $ac_c" 1>&6
-echo "configure:2144: checking for BOOL" >&5
+echo "configure:2374: checking for BOOL" >&5
 if eval "test \"`echo '$''{'ac_cv_type_BOOL'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 2149 "configure"
+#line 2379 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #if STDC_HEADERS
@@ -2174,7 +2404,7 @@ fi
 
 
 echo $ac_n "checking for socket in -lsocket""... $ac_c" 1>&6
-echo "configure:2178: checking for socket in -lsocket" >&5
+echo "configure:2408: checking for socket in -lsocket" >&5
 ac_lib_var=`echo socket'_'socket | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -2182,7 +2412,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lsocket  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 2186 "configure"
+#line 2416 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -2193,7 +2423,7 @@ int main() {
 socket()
 ; return 0; }
 EOF
-if { (eval echo configure:2197: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2427: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -2221,7 +2451,7 @@ else
 fi
 
 echo $ac_n "checking for inet_addr in -lnsl""... $ac_c" 1>&6
-echo "configure:2225: checking for inet_addr in -lnsl" >&5
+echo "configure:2455: checking for inet_addr in -lnsl" >&5
 ac_lib_var=`echo nsl'_'inet_addr | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -2229,7 +2459,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lnsl  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 2233 "configure"
+#line 2463 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -2240,7 +2470,7 @@ int main() {
 inet_addr()
 ; return 0; }
 EOF
-if { (eval echo configure:2244: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2474: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -2268,7 +2498,7 @@ else
 fi
 
 echo $ac_n "checking for dlopen in -ldl""... $ac_c" 1>&6
-echo "configure:2272: checking for dlopen in -ldl" >&5
+echo "configure:2502: checking for dlopen in -ldl" >&5
 ac_lib_var=`echo dl'_'dlopen | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -2276,7 +2506,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-ldl  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 2280 "configure"
+#line 2510 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -2287,7 +2517,7 @@ int main() {
 dlopen()
 ; return 0; }
 EOF
-if { (eval echo configure:2291: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2521: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -2319,12 +2549,12 @@ fi
 for ac_func in vsnprintf setvbuf setlocale nl_langinfo memmove bcopy syslog
 do
 echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:2323: checking for $ac_func" >&5
+echo "configure:2553: checking for $ac_func" >&5
 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 2328 "configure"
+#line 2558 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -2347,7 +2577,7 @@ $ac_func();
 
 ; return 0; }
 EOF
-if { (eval echo configure:2351: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2581: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_$ac_func=yes"
 else
@@ -2374,12 +2604,12 @@ done
 for ac_func in gethostbyname gethostbyname2 gethostbyaddr
 do
 echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:2378: checking for $ac_func" >&5
+echo "configure:2608: checking for $ac_func" >&5
 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 2383 "configure"
+#line 2613 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -2402,7 +2632,7 @@ $ac_func();
 
 ; return 0; }
 EOF
-if { (eval echo configure:2406: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2636: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_$ac_func=yes"
 else
@@ -2429,12 +2659,12 @@ done
 for ac_func in gethostbyname_r gethostbyname2_r gethostbyaddr_r
 do
 echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:2433: checking for $ac_func" >&5
+echo "configure:2663: checking for $ac_func" >&5
 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 2438 "configure"
+#line 2668 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -2457,7 +2687,7 @@ $ac_func();
 
 ; return 0; }
 EOF
-if { (eval echo configure:2461: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2691: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_$ac_func=yes"
 else
@@ -2484,12 +2714,12 @@ done
 for ac_func in getipnodebyname getipnodebyaddr freehostent
 do
 echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:2488: checking for $ac_func" >&5
+echo "configure:2718: checking for $ac_func" >&5
 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 2493 "configure"
+#line 2723 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -2512,7 +2742,7 @@ $ac_func();
 
 ; return 0; }
 EOF
-if { (eval echo configure:2516: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2746: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_$ac_func=yes"
 else
@@ -2539,12 +2769,12 @@ done
 for ac_func in getaddrinfo freeaddrinfo getnameinfo
 do
 echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:2543: checking for $ac_func" >&5
+echo "configure:2773: checking for $ac_func" >&5
 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 2548 "configure"
+#line 2778 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -2567,7 +2797,7 @@ $ac_func();
 
 ; return 0; }
 EOF
-if { (eval echo configure:2571: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2801: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_$ac_func=yes"
 else
@@ -2594,12 +2824,12 @@ done
 for ac_func in dlopen dlsym
 do
 echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:2598: checking for $ac_func" >&5
+echo "configure:2828: checking for $ac_func" >&5
 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 2603 "configure"
+#line 2833 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -2622,7 +2852,7 @@ $ac_func();
 
 ; return 0; }
 EOF
-if { (eval echo configure:2626: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2856: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_$ac_func=yes"
 else
@@ -2648,18 +2878,51 @@ done
 
 
 echo $ac_n "checking flavor of gethostbyaddr""... $ac_c" 1>&6
-echo "configure:2652: checking flavor of gethostbyaddr" >&5
+echo "configure:2882: checking flavor of gethostbyaddr" >&5
 if eval "test \"`echo '$''{'ac_cv_flavor_gethostbyaddr'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
-  if test "$cross_compiling" = yes; then
-  ac_cv_flavor_gethostbyaddr=traditional
+  ac_cv_flavor_gethostbyaddr=unknown
+if test "$cross_compiling" = yes; then
+  ac_cv_flavor_gethostbyaddr=unknown
 else
   cat > conftest.$ac_ext <<EOF
-#line 2660 "configure"
+#line 2891 "configure"
 #include "confdefs.h"
 
 #include <stddef.h>
+#include <sys/types.h>
+#include <sys/socket.h>
+#include <netdb.h>
+struct hostent *gethostbyaddr(const void *addr, socklen_t len, int type) {
+    return NULL;
+}
+int main() {
+    (void)gethostbyaddr(NULL, 0, 0);
+    return 0;
+}
+
+EOF
+if { (eval echo configure:2907: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+then
+  ac_cv_flavor_gethostbyaddr=glibc2_2
+else
+  echo "configure: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+fi
+rm -fr conftest*
+fi
+
+if test "$cross_compiling" = yes; then
+  ac_cv_flavor_gethostbyaddr=unknown
+else
+  cat > conftest.$ac_ext <<EOF
+#line 2921 "configure"
+#include "confdefs.h"
+
+#include <stddef.h>
+#include <sys/types.h>
+#include <sys/socket.h>
 #include <netdb.h>
 struct hostent *gethostbyaddr(const char *addr, size_t len, int type) {
     return NULL;
@@ -2670,36 +2933,276 @@ int main() {
 }
 
 EOF
-if { (eval echo configure:2674: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:2937: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
 then
-  ac_cv_flavor_gethostbyaddr=standard
+  ac_cv_flavor_gethostbyaddr=glibc
 else
   echo "configure: failed program was:" >&5
   cat conftest.$ac_ext >&5
-  rm -fr conftest*
+fi
+rm -fr conftest*
+fi
+
+if test "$cross_compiling" = yes; then
+  ac_cv_flavor_gethostbyaddr=unknown
+else
+  cat > conftest.$ac_ext <<EOF
+#line 2951 "configure"
+#include "confdefs.h"
+
+#include <stddef.h>
+#include <sys/types.h>
+#include <sys/socket.h>
+#include <netdb.h>
+struct hostent *gethostbyaddr(const char *addr, int len, int type) {
+    return NULL;
+}
+int main() {
+    (void)gethostbyaddr(NULL, 0, 0);
+    return 0;
+}
+
+EOF
+if { (eval echo configure:2967: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+then
   ac_cv_flavor_gethostbyaddr=traditional
+else
+  echo "configure: failed program was:" >&5
+  cat conftest.$ac_ext >&5
 fi
 rm -fr conftest*
 fi
 
+if test "$ac_cv_func_gethostbyaddr" = no ; then
+    ac_cv_flavor_gethostbyaddr=none
+fi
 fi
 
 echo "$ac_t""$ac_cv_flavor_gethostbyaddr" 1>&6
-if test "$ac_cv_flavor_gethostbyaddr" = "standard"; then
-    cat >> confdefs.h <<\EOF
-#define GHBA_ADDRLEN_T size_t
+
+case "$ac_cv_flavor_gethostbyaddr" in
+glibc2_2)
+    ac_cv_type_ghba_addr_t='const void *'
+    ac_cv_type_ghba_addrlen_t='socklen_t'
+    ;;
+glibc)
+    ac_cv_type_ghba_addr_t='const char *'
+    ac_cv_type_ghba_addrlen_t='size_t'
+    ;;
+traditional | none)
+    ac_cv_type_ghba_addr_t='const char *'
+    ac_cv_type_ghba_addrlen_t='int'
+    ;;
+*)
+    echo "configure: warning: runmdn command will not be built." 1>&2
+    ;;
+esac
+cat >> confdefs.h <<EOF
+#define GHBA_ADDR_T $ac_cv_type_ghba_addr_t
 EOF
 
+cat >> confdefs.h <<EOF
+#define GHBA_ADDRLEN_T $ac_cv_type_ghba_addrlen_t
+EOF
+
+
+echo $ac_n "checking flavor of getnameinfo""... $ac_c" 1>&6
+echo "configure:3011: checking flavor of getnameinfo" >&5
+if eval "test \"`echo '$''{'ac_cv_flavor_getnameinfo'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
 else
-    cat >> confdefs.h <<\EOF
-#define GHBA_ADDRLEN_T int
+  ac_cv_flavor_getnameinfo=unknown
+if test "$cross_compiling" = yes; then
+  ac_cv_flavor_getnameinfo=unknown
+else
+  cat > conftest.$ac_ext <<EOF
+#line 3020 "configure"
+#include "confdefs.h"
+
+#include <stddef.h>
+#include <sys/types.h>
+#include <sys/socket.h>
+#include <netdb.h>
+int getnameinfo(const struct sockaddr *sa, socklen_t salen, char *host,
+                socklen_t hostlen, char *serv, socklen_t servlen,
+                unsigned int flags) {
+    return NULL;
+}
+int main() {
+    (void)getnameinfo(NULL, 0, NULL, 0, NULL, 0, 0);
+    return 0;
+}
+
+EOF
+if { (eval echo configure:3038: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+then
+  ac_cv_flavor_getnameinfo=glibc2_2_2
+else
+  echo "configure: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+fi
+rm -fr conftest*
+fi
+
+if test "$cross_compiling" = yes; then
+  ac_cv_flavor_getnameinfo=unknown
+else
+  cat > conftest.$ac_ext <<EOF
+#line 3052 "configure"
+#include "confdefs.h"
+
+#include <stddef.h>
+#include <sys/types.h>
+#include <sys/socket.h>
+#include <netdb.h>
+int getnameinfo(const struct sockaddr *sa, socklen_t salen, char *host,
+                socklen_t hostlen, char *serv, socklen_t servlen, int flags) {
+    return NULL;
+}
+int main() {
+    (void)getnameinfo(NULL, 0, NULL, 0, NULL, 0, 0);
+    return 0;
+}
+
+EOF
+if { (eval echo configure:3069: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+then
+  ac_cv_flavor_getnameinfo=rfc2553bis_03
+else
+  echo "configure: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+fi
+rm -fr conftest*
+fi
+
+if test "$cross_compiling" = yes; then
+  ac_cv_flavor_getnameinfo=unknown
+else
+  cat > conftest.$ac_ext <<EOF
+#line 3083 "configure"
+#include "confdefs.h"
+
+#include <stddef.h>
+#include <sys/types.h>
+#include <sys/socket.h>
+#include <netdb.h>
+int getnameinfo(const struct sockaddr *sa, socklen_t salen, char *host,
+                size_t hostlen, char *serv, size_t servlen, int flags) {
+    return NULL;
+}
+int main() {
+    (void)getnameinfo(NULL, 0, NULL, 0, NULL, 0, 0);
+    return 0;
+}
+
+EOF
+if { (eval echo configure:3100: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+then
+  ac_cv_flavor_getnameinfo=rfc2553
+else
+  echo "configure: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+fi
+rm -fr conftest*
+fi
+
+if test "$cross_compiling" = yes; then
+  ac_cv_flavor_getnameinfo=unknown
+else
+  cat > conftest.$ac_ext <<EOF
+#line 3114 "configure"
+#include "confdefs.h"
+
+#include <stddef.h>
+#include <sys/types.h>
+#include <sys/socket.h>
+#include <netdb.h>
+int getnameinfo(const struct sockaddr *sa, size_t salen, char *host,
+                size_t hostlen, char *serv, size_t servlen, int flags) {
+    return NULL;
+}
+int main() {
+    (void)getnameinfo(NULL, 0, NULL, 0, NULL, 0, 0);
+    return 0;
+}
+
+EOF
+if { (eval echo configure:3131: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+then
+  ac_cv_flavor_getnameinfo=rfc2133
+else
+  echo "configure: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+fi
+rm -fr conftest*
+fi
+
+if test "$ac_cv_func_getnameinfo" = no ; then
+    ac_cv_flavor_getnameinfo=none
+fi
+fi
+
+echo "$ac_t""$ac_cv_flavor_getnameinfo" 1>&6
+
+case "$ac_cv_flavor_getnameinfo" in
+glibc2_2_2)
+    ac_cv_type_gni_salen_t='socklen_t'
+    ac_cv_type_gni_hostlen_t='socklen_t'
+    ac_cv_type_gni_servlen_t='socklen_t'
+    ac_cv_type_gni_flags_t='unsigned int'
+    ;;
+rfc2553bis_03)
+    ac_cv_type_gni_salen_t='socklen_t'
+    ac_cv_type_gni_hostlen_t='socklen_t'
+    ac_cv_type_gni_servlen_t='socklen_t'
+    ac_cv_type_gni_flags_t='int'
+    ;;
+rfc2553)
+    ac_cv_type_gni_salen_t='socklen_t'
+    ac_cv_type_gni_hostlen_t='size_t'
+    ac_cv_type_gni_servlen_t='size_t'
+    ac_cv_type_gni_flags_t='int'
+    ;;
+rfc2133 | none)
+    ac_cv_type_gni_salen_t='size_t'
+    ac_cv_type_gni_hostlen_t='size_t'
+    ac_cv_type_gni_servlen_t='size_t'
+    ac_cv_type_gni_flags_t='int'
+    ;;
+*)
+    echo "configure: warning: runmdn command will not be built." 1>&2
+    ;;
+esac
+
+cat >> confdefs.h <<EOF
+#define GNI_SALEN_T $ac_cv_type_gni_salen_t
 EOF
 
+cat >> confdefs.h <<EOF
+#define GNI_HOSTLEN_T $ac_cv_type_gni_hostlen_t
+EOF
+
+cat >> confdefs.h <<EOF
+#define GNI_SERVLEN_T $ac_cv_type_gni_servlen_t
+EOF
+
+cat >> confdefs.h <<EOF
+#define GNI_FLAGS_T $ac_cv_type_gni_flags_t
+EOF
+
+
+RUNMDN_SUBDIR=runmdn
+if test "$ac_cv_flavor_gethostbyaddr" = unknown ; then
+    RUNMDN_SUBDIR=
+fi
+if test "$ac_cv_flavor_getnameinfo" = unknown ; then
+    RUNMDN_SUBDIR=
 fi
 
+
 if test "$find_gethost_r" = yes; then
     echo $ac_n "checking flavor of gethostbyname_r""... $ac_c" 1>&6
-echo "configure:2703: checking flavor of gethostbyname_r" >&5
+echo "configure:3206: checking flavor of gethostbyname_r" >&5
 if eval "test \"`echo '$''{'ac_cv_flavor_gethost_r'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -2707,11 +3210,14 @@ else
   ac_cv_flavor_gethost_r=sun
 else
   cat > conftest.$ac_ext <<EOF
-#line 2711 "configure"
+#line 3214 "configure"
 #include "confdefs.h"
 
-#include <stdio.h>
+#include <stddef.h>
+#include <sys/types.h>
+#include <sys/socket.h>
 #include <netdb.h>
+#include <stdio.h>
 int main()
 {
     int err = 0;
@@ -2726,7 +3232,7 @@ int main()
 }
 
 EOF
-if { (eval echo configure:2730: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:3236: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
 then
        ac_cv_flavor_gethost_r=glibc
 else
@@ -2751,7 +3257,7 @@ fi
 
 
 echo $ac_n "checking for libc shared object""... $ac_c" 1>&6
-echo "configure:2755: checking for libc shared object" >&5
+echo "configure:3261: checking for libc shared object" >&5
 shobj_name=libc
 shobj_path=
 case "$host" in
@@ -2789,7 +3295,7 @@ fi
 
 
 echo $ac_n "checking for libnsl shared object""... $ac_c" 1>&6
-echo "configure:2793: checking for libnsl shared object" >&5
+echo "configure:3299: checking for libnsl shared object" >&5
 shobj_name=libnsl
 shobj_path=
 case "$host" in
@@ -2827,11 +3333,13 @@ fi
 
 
 echo $ac_n "checking for iconv""... $ac_c" 1>&6
-echo "configure:2831: checking for iconv" >&5
+echo "configure:3337: checking for iconv" >&5
+saved_CPPFLAGS=$CPPFLAGS
 saved_LIBS=$LIBS
+CPPFLAGS="$CPPFLAGS $ICONVINC"
 LIBS="$LIBS $ICONVLIB"
 cat > conftest.$ac_ext <<EOF
-#line 2835 "configure"
+#line 3343 "configure"
 #include "confdefs.h"
 
 #include <iconv.h>
@@ -2843,7 +3351,7 @@ int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:2847: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3355: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   iconv_try_link=yes
 else
@@ -2854,11 +3362,66 @@ else
 fi
 rm -f conftest*
 LIBS=$saved_LIBS
+CPPFLAGS=$saved_CPPFLAGS
 echo "$ac_t""$iconv_try_link" 1>&6
 if test "$iconv_try_link" = no ; then
     { echo "configure: error: iconv function not available" 1>&2; exit 1; }
 fi
 
+echo $ac_n "checking for codeset name $utf8name""... $ac_c" 1>&6
+echo "configure:3373: checking for codeset name $utf8name" >&5
+saved_CPPFLAGS=$CPPFLAGS
+saved_LIBS=$LIBS
+CPPFLAGS="$CPPFLAGS $ICONVINC"
+LIBS="$LIBS $ICONVLIB"
+if test "$cross_compiling" = yes; then
+  utf8_name_valid=unknown
+else
+  cat > conftest.$ac_ext <<EOF
+#line 3382 "configure"
+#include "confdefs.h"
+
+#include <stddef.h>
+#include <stdlib.h>
+#include <iconv.h>
+#define UTF8_NAME "$utf8name"
+#define ICONV_FAIL ((iconv_t)(-1))
+/* Check if the codeset name UTF8_NAME is valid by performing iconv_open(). */
+int main() {
+    int i;
+    /* list of codeset names likely to exist */
+    static char *codeset[] = {
+       "ASCII", "ISO-8859-1", "ISO8859-1", "iso8859_1", "8859-1",
+       "Shift_JIS", "SJIS", "sjis", NULL,
+    };
+
+    /* First try null conversion. */
+    if (iconv_open(UTF8_NAME, UTF8_NAME) != ICONV_FAIL) return 0;
+
+    /* Unfortunately, above check fails on certain systems, such as Solaris. */
+    for (i = 0; codeset[i] != NULL; i++) {
+       if (iconv_open(UTF8_NAME, codeset[i]) != ICONV_FAIL) return 0;
+    }
+    return 1;
+}
+
+EOF
+if { (eval echo configure:3410: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+then
+  utf8_name_valid=yes
+else
+  echo "configure: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+  rm -fr conftest*
+  utf8_name_valid=no
+fi
+rm -fr conftest*
+fi
+
+LIBS=$saved_LIBS
+CPPFLAGS=$saved_CPPFLAGS
+echo "$ac_t""$utf8_name_valid" 1>&6
+
 
 trap '' 1 2 15
 cat > confcache <<\EOF
@@ -3010,6 +3573,7 @@ s%@host_cpu@%$host_cpu%g
 s%@host_vendor@%$host_vendor%g
 s%@host_os@%$host_os%g
 s%@logdir@%$logdir%g
+s%@ICONVINC@%$ICONVINC%g
 s%@ICONVLIB@%$ICONVLIB%g
 s%@ICONVSOFILE@%$ICONVSOFILE%g
 s%@CONF_PREFERENCE@%$CONF_PREFERENCE%g
@@ -3031,6 +3595,7 @@ s%@LN_S@%$LN_S%g
 s%@LIBTOOL@%$LIBTOOL%g
 s%@CPP@%$CPP%g
 s%@LIBDL@%$LIBDL%g
+s%@RUNMDN_SUBDIR@%$RUNMDN_SUBDIR%g
 
 CEOF
 EOF
@@ -3261,3 +3826,23 @@ chmod +x $CONFIG_STATUS
 rm -fr confdefs* $ac_clean_files
 test "$no_create" = yes || ${CONFIG_SHELL-/bin/sh} $CONFIG_STATUS || exit 1
 
+
+
+if test "$ac_cv_flavor_gethostbyaddr" = unknown ; then
+    echo 
+    echo "NOTICE: runmdn command will not be built, since parameter type"
+    echo "        list of gethostbyaddr() is unknown to configure."
+fi
+if test "$ac_cv_flavor_getnameinfo" = unknown ; then
+    echo 
+    echo "NOTICE: runmdn command will not be built, since parameter type"
+    echo "        list of getnameinfo() is unknown to configure."
+fi
+if test "$utf8_name_valid" = no ; then
+    echo
+    echo "WARNING: It seems that iconv does not accept codeset name $utf8name,"
+    echo "         which is supposed to refer to UTF-8 encoding."
+    echo "         Please make sure it is indeed correct."
+fi
+
+
index b767c21d0c91eafb7201b96501d4c66922bb8f9b..ec4c02af2ff479be705f6d3ec33ec4067bc064f6 100644 (file)
@@ -1,4 +1,4 @@
-dnl $Id: configure.in,v 1.47 2001/05/18 04:02:29 ishisone Exp $
+dnl $Id: configure.in,v 1.1 2002/01/02 02:46:23 marka Exp $
 dnl Process this file with autoconf to produce a configure script.
 dnl
 dnl Copyright (c) 2000 Japan Network Information Center.  All rights reserved.
@@ -9,8 +9,8 @@ dnl                     LICENSE TERMS AND CONDITIONS
 dnl 
 dnl The following License Terms and Conditions apply, unless a different
 dnl license is obtained from Japan Network Information Center ("JPNIC"),
-dnl a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku,
-dnl Tokyo, Japan.
+dnl a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda,
+dnl Chiyoda-ku, Tokyo 101-0047, Japan.
 dnl 
 dnl 1. Use, Modification and Redistribution (including distribution of any
 dnl    modified or derived work) in source and/or binary forms is permitted
@@ -61,6 +61,16 @@ AC_INIT(include/mdn/converter.h)
 
 AC_CANONICAL_HOST
 
+debug=no
+AC_ARG_ENABLE(debug,
+[  --enable-debug          enable debug codes [default=no]],
+       debug=$enableval)
+case "$enableval" in
+yes)
+    CFLAGS="$CFLAGS -DDEBUG"
+    ;;
+esac
+
 logdir=no
 AC_ARG_WITH(logdir,
 [  --with-logdir=DIR       mdnsproxy's log files are in DIR.
@@ -98,6 +108,7 @@ AC_ARG_WITH(utf8,
        utf8name=$withval)
 case "$utf8name" in
 no)
+    utf8name=UTF-8
     ;;
 yes)
     AC_MSG_ERROR([You must specify NAME to --with-utf8 option.])
@@ -117,12 +128,76 @@ AC_ACE_SIGNATURE(AltDUDE, [a---], [])
 AC_ACE_SIGNATURE(AMC-ACE-M, [], [-amc1])
 AC_ACE_SIGNATURE(AMC-ACE-O, [], [-amc2])
 AC_ACE_PREFIX(AMC-ACE-R, [amc3-])
+AC_ACE_PREFIX(AMC-ACE-V, [amc4-])
+AC_ACE_PREFIX(AMC-ACE-W, [amc5-])
+AC_ACE_PREFIX(AMC-ACE-Z, [zq--])
+AC_ACE_PREFIX(MACE, [mq--])
 
-iconv=no
+ICONVINC=
+ICONVLIB=
+
+libiconv=unspec
+AC_ARG_WITH(libiconv,
+[  --with-libiconv=IPREFIX  GNU libiconv are installed in IPREFIX [PREFIX]],
+       libiconv=$withval)
+case "$libiconv" in
+unspec)
+    ;;
+no)
+    ICONVINC=
+    ICONVLIB=
+    ;;
+yes)
+    if test X$prefix = XNONE ; then
+       libiconv=$ac_default_prefix
+    else
+       libiconv=$prefix
+    fi
+    ICONVINC="-I$libiconv/include"
+    ICONVLIB="-L$libiconv/lib -R$libiconv/lib -liconv"
+    ;;
+*)
+    ICONVINC="-I$libiconv/include"
+    ICONVLIB="-L$libiconv/lib -R$libiconv/lib -liconv"
+    ;;
+esac
+
+iconv_include=unspec
+AC_ARG_WITH(iconv-include,
+[  --with-iconv-include=DIR  iconv include files are in DIR []],
+       iconv_include=$withval)
+case "$iconv_include" in
+unspec)
+    ;;
+no)
+    ICONVINC=
+    ;;
+yes)
+    AC_MSG_WARN([You must supply DIR to --with-iconv-include option.
+  Ignored.])
+    ICONVINC=
+    ;;
+*)
+    ICONVINC="-I$iconv_include"
+    ;;
+esac
+
+if test "X$ICONVINC" != X ; then
+    iconv_include="`echo X$ICONVINC | sed -e 's/^X-I//'`"
+    if test ! -f "$iconv_include/iconv.h" ; then
+       AC_MSG_ERROR([iconv.h doesn't exist in $iconv_include])
+    fi
+fi
+
+AC_SUBST(ICONVINC)
+
+iconv=unspec
 AC_ARG_WITH(iconv,
 [  --with-iconv=LIB        special library for iconv []],
        iconv=$withval)
 case "$iconv" in
+unspec)
+    ;;
 no)
     ICONVLIB=
     ;;
@@ -138,7 +213,7 @@ esac
 AC_SUBST(ICONVLIB)
 
 AC_ARG_WITH(iconv-sofile,
-[  --with-iconv-sofile=PATH shared library file for libiconv []],
+[  --with-iconv-sofile=PATH  shared library file for libiconv []],
        iconv_file=$withval, iconv_file=guess)
 ICONVSOFILE=
 case "$iconv_file" in
@@ -242,7 +317,17 @@ case "$host" in
     PRELOAD_VAR="_RLD_LIST"
     PRELOAD_LAST=":DEFAULT"
     ;;
+*-netbsd*)
+    if test -x /usr/bin/file -a -x /usr/bin/grep ; then
+        case "`/usr/bin/file /usr/bin/grep`" in
+       *ELF*)
+           PRELOAD_SEP=" "
+           ;;
+       esac
+    fi
+    ;;
 esac
+
 AC_SUBST(PRELOAD_VAR)
 AC_SUBST(PRELOAD_SEP)
 AC_SUBST(PRELOAD_LAST)
@@ -257,6 +342,11 @@ AC_CHECK_HEADERS(unistd.h locale.h langinfo.h resolv.h)
 AC_CHECK_HEADERS(sys/select.h arpa/nameser.h)
 AC_CHECK_HEADERS(dlfcn.h)
 
+saved_CPPFLAGS=$CPPFLAGS
+CPPFLAGS="$CPPFLAGS $ICONVINC"
+AC_CHECK_HEADER(iconv.h, , [AC_MSG_ERROR([iconv.h doesn't exist])])
+CPPFLAGS=$saved_CPPFLAGS
+
 dnl Checks for data types.
 AC_TYPE_UID_T
 dnl for dnsproxy.
@@ -268,7 +358,7 @@ AC_CHECK_LIB(nsl, inet_addr)
 AC_CHECK_LIB(dl, dlopen, [
     LIBS="-ldl $LIBS"
     LIBDL="-ldl"
-    AC_DEFINE(HAVE_LIBDL, 1)
+    AC_DEFINE(HAVE_LIBDL, 1, [Define if you have the dl library (-ldl).])
     AC_SUBST(LIBDL)
 ])
 
@@ -282,9 +372,27 @@ AC_CHECK_FUNCS(dlopen dlsym)
 
 dnl Checks the flavor of gethostbyaddr* functions.
 AC_CACHE_CHECK(flavor of gethostbyaddr, ac_cv_flavor_gethostbyaddr,
-[AC_TRY_RUN(
+[ac_cv_flavor_gethostbyaddr=unknown
+AC_TRY_RUN(
+[
+#include <stddef.h>
+#include <sys/types.h>
+#include <sys/socket.h>
+#include <netdb.h>
+struct hostent *gethostbyaddr(const void *addr, socklen_t len, int type) {
+    return NULL;
+}
+int main() {
+    (void)gethostbyaddr(NULL, 0, 0);
+    return 0;
+}
+], ac_cv_flavor_gethostbyaddr=glibc2_2,,
+   ac_cv_flavor_gethostbyaddr=unknown)
+AC_TRY_RUN(
 [
 #include <stddef.h>
+#include <sys/types.h>
+#include <sys/socket.h>
 #include <netdb.h>
 struct hostent *gethostbyaddr(const char *addr, size_t len, int type) {
     return NULL;
@@ -293,15 +401,169 @@ int main() {
     (void)gethostbyaddr(NULL, 0, 0);
     return 0;
 }
-],
-  ac_cv_flavor_gethostbyaddr=standard,
-  ac_cv_flavor_gethostbyaddr=traditional,
-  ac_cv_flavor_gethostbyaddr=traditional)])
-if test "$ac_cv_flavor_gethostbyaddr" = "standard"; then
-    AC_DEFINE(GHBA_ADDRLEN_T, size_t)
-else
-    AC_DEFINE(GHBA_ADDRLEN_T, int)
+], ac_cv_flavor_gethostbyaddr=glibc,,
+   ac_cv_flavor_gethostbyaddr=unknown)
+AC_TRY_RUN(
+[
+#include <stddef.h>
+#include <sys/types.h>
+#include <sys/socket.h>
+#include <netdb.h>
+struct hostent *gethostbyaddr(const char *addr, int len, int type) {
+    return NULL;
+}
+int main() {
+    (void)gethostbyaddr(NULL, 0, 0);
+    return 0;
+}
+], ac_cv_flavor_gethostbyaddr=traditional,,
+   ac_cv_flavor_gethostbyaddr=unknown)
+if test "$ac_cv_func_gethostbyaddr" = no ; then
+    ac_cv_flavor_gethostbyaddr=none
+fi])
+
+case "$ac_cv_flavor_gethostbyaddr" in
+glibc2_2)
+    ac_cv_type_ghba_addr_t='const void *'
+    ac_cv_type_ghba_addrlen_t='socklen_t'
+    ;;
+glibc)
+    ac_cv_type_ghba_addr_t='const char *'
+    ac_cv_type_ghba_addrlen_t='size_t'
+    ;;
+traditional | none)
+    ac_cv_type_ghba_addr_t='const char *'
+    ac_cv_type_ghba_addrlen_t='int'
+    ;;
+*)
+    AC_MSG_WARN([runmdn command will not be built.])
+    ;;
+esac
+AC_DEFINE_UNQUOTED(GHBA_ADDR_T, $ac_cv_type_ghba_addr_t,
+    [Define as the type of the 1st argument of gethostbyaddr.])
+AC_DEFINE_UNQUOTED(GHBA_ADDRLEN_T, $ac_cv_type_ghba_addrlen_t,
+    [Define as the type of the 2nd argument of gethostbyaddr.])
+
+dnl Checks the flavor of getnameinfo functions.
+AC_CACHE_CHECK(flavor of getnameinfo, ac_cv_flavor_getnameinfo,
+[ac_cv_flavor_getnameinfo=unknown
+AC_TRY_RUN(
+[
+#include <stddef.h>
+#include <sys/types.h>
+#include <sys/socket.h>
+#include <netdb.h>
+int getnameinfo(const struct sockaddr *sa, socklen_t salen, char *host,
+                socklen_t hostlen, char *serv, socklen_t servlen,
+                unsigned int flags) {
+    return NULL;
+}
+int main() {
+    (void)getnameinfo(NULL, 0, NULL, 0, NULL, 0, 0);
+    return 0;
+}
+], ac_cv_flavor_getnameinfo=glibc2_2_2,,
+   ac_cv_flavor_getnameinfo=unknown)
+AC_TRY_RUN(
+[
+#include <stddef.h>
+#include <sys/types.h>
+#include <sys/socket.h>
+#include <netdb.h>
+int getnameinfo(const struct sockaddr *sa, socklen_t salen, char *host,
+                socklen_t hostlen, char *serv, socklen_t servlen, int flags) {
+    return NULL;
+}
+int main() {
+    (void)getnameinfo(NULL, 0, NULL, 0, NULL, 0, 0);
+    return 0;
+}
+], ac_cv_flavor_getnameinfo=rfc2553bis_03,,
+   ac_cv_flavor_getnameinfo=unknown)
+AC_TRY_RUN(
+[
+#include <stddef.h>
+#include <sys/types.h>
+#include <sys/socket.h>
+#include <netdb.h>
+int getnameinfo(const struct sockaddr *sa, socklen_t salen, char *host,
+                size_t hostlen, char *serv, size_t servlen, int flags) {
+    return NULL;
+}
+int main() {
+    (void)getnameinfo(NULL, 0, NULL, 0, NULL, 0, 0);
+    return 0;
+}
+], ac_cv_flavor_getnameinfo=rfc2553,,
+   ac_cv_flavor_getnameinfo=unknown)
+AC_TRY_RUN(
+[
+#include <stddef.h>
+#include <sys/types.h>
+#include <sys/socket.h>
+#include <netdb.h>
+int getnameinfo(const struct sockaddr *sa, size_t salen, char *host,
+                size_t hostlen, char *serv, size_t servlen, int flags) {
+    return NULL;
+}
+int main() {
+    (void)getnameinfo(NULL, 0, NULL, 0, NULL, 0, 0);
+    return 0;
+}
+], ac_cv_flavor_getnameinfo=rfc2133,,
+   ac_cv_flavor_getnameinfo=unknown)
+if test "$ac_cv_func_getnameinfo" = no ; then
+    ac_cv_flavor_getnameinfo=none
+fi])
+
+case "$ac_cv_flavor_getnameinfo" in
+glibc2_2_2)
+    ac_cv_type_gni_salen_t='socklen_t'
+    ac_cv_type_gni_hostlen_t='socklen_t'
+    ac_cv_type_gni_servlen_t='socklen_t'
+    ac_cv_type_gni_flags_t='unsigned int'
+    ;;
+rfc2553bis_03)
+    ac_cv_type_gni_salen_t='socklen_t'
+    ac_cv_type_gni_hostlen_t='socklen_t'
+    ac_cv_type_gni_servlen_t='socklen_t'
+    ac_cv_type_gni_flags_t='int'
+    ;;
+rfc2553)
+    ac_cv_type_gni_salen_t='socklen_t'
+    ac_cv_type_gni_hostlen_t='size_t'
+    ac_cv_type_gni_servlen_t='size_t'
+    ac_cv_type_gni_flags_t='int'
+    ;;
+rfc2133 | none)
+    ac_cv_type_gni_salen_t='size_t'
+    ac_cv_type_gni_hostlen_t='size_t'
+    ac_cv_type_gni_servlen_t='size_t'
+    ac_cv_type_gni_flags_t='int'
+    ;;
+*)
+    AC_MSG_WARN([runmdn command will not be built.])
+    ;;
+esac
+AC_SUBST(RUNMDN_SUBDIR)
+AC_DEFINE_UNQUOTED(GNI_SALEN_T, $ac_cv_type_gni_salen_t,
+    [Define as the type of the 2nd argument of getnameinfo.])
+AC_DEFINE_UNQUOTED(GNI_HOSTLEN_T, $ac_cv_type_gni_hostlen_t,
+    [Define as the type of the 4th argument of getnameinfo.])
+AC_DEFINE_UNQUOTED(GNI_SERVLEN_T, $ac_cv_type_gni_servlen_t,
+    [Define as the type of the 6th argument of getnameinfo.])
+AC_DEFINE_UNQUOTED(GNI_FLAGS_T, $ac_cv_type_gni_flags_t,
+    [Define as the type of the 7th argument of getnameinfo.])
+
+dnl Check whether building runmdn or not.
+RUNMDN_SUBDIR=runmdn
+if test "$ac_cv_flavor_gethostbyaddr" = unknown ; then
+    RUNMDN_SUBDIR=
 fi
+if test "$ac_cv_flavor_getnameinfo" = unknown ; then
+    RUNMDN_SUBDIR=
+fi
+AC_SUBST(RUNMDN_SUBDIR)
 
 dnl Checks the flavor of gethost*_r functions.
 if test "$find_gethost_r" = yes; then
@@ -309,8 +571,11 @@ if test "$find_gethost_r" = yes; then
     [AC_TRY_RUN(
 changequote(<<, >>)dnl
 <<
-#include <stdio.h>
+#include <stddef.h>
+#include <sys/types.h>
+#include <sys/socket.h>
 #include <netdb.h>
+#include <stdio.h>
 int main()
 {
     int err = 0;
@@ -329,7 +594,8 @@ changequote([, ])dnl
        ac_cv_flavor_gethost_r=sun,
        ac_cv_flavor_gethost_r=sun)])
     if test "$ac_cv_flavor_gethost_r" = "glibc"; then
-       AC_DEFINE(GETHOST_R_GLIBC_FLAVOR)
+       AC_DEFINE(GETHOST_R_GLIBC_FLAVOR, 1,
+           [Define if the prototype of gethost*_r is glibc flavor.])
     fi
 fi
 
@@ -339,7 +605,9 @@ AC_FIND_SYSTEM_SHOBJ(libnsl)
 
 dnl Checks for iconv library.
 AC_MSG_CHECKING(for iconv)
+saved_CPPFLAGS=$CPPFLAGS
 saved_LIBS=$LIBS
+CPPFLAGS="$CPPFLAGS $ICONVINC"
 LIBS="$LIBS $ICONVLIB"
 AC_TRY_LINK([
 #include <iconv.h>
@@ -348,11 +616,47 @@ AC_TRY_LINK([
     i = iconv_open("ISO-8859-1", "UTF-8");
 ], [iconv_try_link=yes], [iconv_try_link=no])
 LIBS=$saved_LIBS
+CPPFLAGS=$saved_CPPFLAGS
 AC_MSG_RESULT($iconv_try_link)
 if test "$iconv_try_link" = no ; then
     AC_MSG_ERROR(iconv function not available)
 fi
 
+dnl Check for codeset name for UTF-8.
+AC_MSG_CHECKING([for codeset name $utf8name])
+saved_CPPFLAGS=$CPPFLAGS
+saved_LIBS=$LIBS
+CPPFLAGS="$CPPFLAGS $ICONVINC"
+LIBS="$LIBS $ICONVLIB"
+AC_TRY_RUN([
+#include <stddef.h>
+#include <stdlib.h>
+#include <iconv.h>
+#define UTF8_NAME "$utf8name"
+#define ICONV_FAIL ((iconv_t)(-1))
+/* Check if the codeset name UTF8_NAME is valid by performing iconv_open(). */
+int main() {
+    int i;
+    /* list of codeset names likely to exist */
+    static char *codeset[] = {
+       "ASCII", "ISO-8859-1", "ISO8859-1", "iso8859_1", "8859-1",
+       "Shift_JIS", "SJIS", "sjis", NULL,
+    };
+
+    /* First try null conversion. */
+    if (iconv_open(UTF8_NAME, UTF8_NAME) != ICONV_FAIL) return 0;
+
+    /* Unfortunately, above check fails on certain systems, such as Solaris. */
+    for (i = 0; codeset[i] != NULL; i++) {
+       if (iconv_open(UTF8_NAME, codeset[i]) != ICONV_FAIL) return 0;
+    }
+    return 1;
+}
+], utf8_name_valid=yes, utf8_name_valid=no, utf8_name_valid=unknown)
+LIBS=$saved_LIBS
+CPPFLAGS=$saved_CPPFLAGS
+AC_MSG_RESULT($utf8_name_valid)
+
 dnl Output.
 AC_CONFIG_HEADER(include/config.h)
 AC_OUTPUT(
@@ -368,3 +672,21 @@ AC_OUTPUT(
        tools/runmdn/runmdn
        map/Makefile
 )
+AC_OUTPUT_COMMANDS([
+if test "$ac_cv_flavor_gethostbyaddr" = unknown ; then
+    echo 
+    echo "NOTICE: runmdn command will not be built, since parameter type"
+    echo "        list of gethostbyaddr() is unknown to configure."
+fi
+if test "$ac_cv_flavor_getnameinfo" = unknown ; then
+    echo 
+    echo "NOTICE: runmdn command will not be built, since parameter type"
+    echo "        list of getnameinfo() is unknown to configure."
+fi
+if test "$utf8_name_valid" = no ; then
+    echo
+    echo "WARNING: It seems that iconv does not accept codeset name $utf8name,"
+    echo "         which is supposed to refer to UTF-8 encoding."
+    echo "         Please make sure it is indeed correct."
+fi
+])
index b0a953af9e0681128d17b6cb88fa46d11a9aba6b..9dcf84268b7125361cb52c77b37bd12ca8204c11 100644 (file)
@@ -1,4 +1,4 @@
-# $Id: Makefile.in,v 1.2 2001/03/28 02:12:35 m-kasahr Exp $
+# $Id: Makefile.in,v 1.1 2002/01/02 02:46:25 marka Exp $
 # Copyright (c) 2000 Japan Network Information Center.  All rights reserved.
 #  
 # By using this file, you agree to the terms and conditions set forth bellow.
@@ -7,8 +7,8 @@
 # 
 # The following License Terms and Conditions apply, unless a different
 # license is obtained from Japan Network Information Center ("JPNIC"),
-# a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku,
-# Tokyo, Japan.
+# a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda,
+# Chiyoda-ku, Tokyo 101-0047, Japan.
 # 
 # 1. Use, Modification and Redistribution (including distribution of any
 #    modified or derived work) in source and/or binary forms is permitted
index 2fb964ebd2ab60a37f3edc976e1a989746395632..f8fd4795ead72c095d886a8377eb3c16137cae8f 100644 (file)
@@ -1,5 +1,5 @@
 /* include/config.h.in.  Generated automatically from configure.in by autoheader.  */
-/* $Id: config.h.in,v 1.30 2001/04/25 06:26:18 m-kasahr Exp $ */
+/* $Id: config.h.in,v 1.1 2002/01/02 02:46:25 marka Exp $ */
 /*
  * Copyright (c) 2000 Japan Network Information Center.  All rights reserved.
  *  
@@ -9,8 +9,8 @@
  * 
  * The following License Terms and Conditions apply, unless a different
  * license is obtained from Japan Network Information Center ("JPNIC"),
- * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku,
- * Tokyo, Japan.
+ * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda,
+ * Chiyoda-ku, Tokyo 101-0047, Japan.
  * 
  * 1. Use, Modification and Redistribution (including distribution of any
  *    modified or derived work) in source and/or binary forms is permitted
 /* Define as an appropriate type (ex. int) if your system doesn't have. */
 #undef BOOL
 
-/* Define if the prototype of gethost*_r is glibc flavor. */
-#undef GETHOST_R_GLIBC_FLAVOR
-
-/* Define as the type of the 2nd argument of gethostbyaddr. */
-#undef GHBA_ADDRLEN_T
-
 /* Define if you have the bcopy function.  */
 #undef HAVE_BCOPY
 
 /* Define if you have the <unistd.h> header file.  */
 #undef HAVE_UNISTD_H
 
-/* Define if you have the dl library (-ldl).  */
-#undef HAVE_LIBDL
-
 /* Define if you have the nsl library (-lnsl).  */
 #undef HAVE_LIBNSL
 
 /* Define if the prefix of AMC-ACE-R encoding differs from 'amc3-'. */
 #undef MDN_AMCACER_PREFIX
 
+/* Define if the prefix of AMC-ACE-V encoding differs from 'amc4-'. */
+#undef MDN_AMCACEV_PREFIX
+
+/* Define if the prefix of AMC-ACE-W encoding differs from 'amc5-'. */
+#undef MDN_AMCACEW_PREFIX
+
+/* Define if the prefix of AMC-ACE-Z encoding differs from 'zq--'. */
+#undef MDN_AMCACEZ_PREFIX
+
+/* Define if the prefix of MACE encoding differs from 'mq--'. */
+#undef MDN_MACE_PREFIX
+
+/* Define if you have the dl library (-ldl). */
+#undef HAVE_LIBDL
+
+/* Define as the type of the 1st argument of gethostbyaddr. */
+#undef GHBA_ADDR_T
+
+/* Define as the type of the 2nd argument of gethostbyaddr. */
+#undef GHBA_ADDRLEN_T
+
+/* Define as the type of the 2nd argument of getnameinfo. */
+#undef GNI_SALEN_T
+
+/* Define as the type of the 4th argument of getnameinfo. */
+#undef GNI_HOSTLEN_T
+
+/* Define as the type of the 6th argument of getnameinfo. */
+#undef GNI_SERVLEN_T
+
+/* Define as the type of the 7th argument of getnameinfo. */
+#undef GNI_FLAGS_T
+
+/* Define if the prototype of gethost*_r is glibc flavor. */
+#undef GETHOST_R_GLIBC_FLAVOR
+
 /* Define as the pathname of the shared libc object if your system has one. */
 #undef SOPATH_LIBC
 
index 1e18141540aec05566e6614da18a7d75a9f2e9d0..b1ead9e328c951563c1192b3b1392689856ee5ae 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: config.h.win,v 1.3 2000/08/07 08:20:40 ishisone Exp $ */
+/* $Id: config.h.win,v 1.1 2002/01/02 02:46:26 marka Exp $ */
 /*
  * Copyright (c) 2000 Japan Network Information Center.  All rights reserved.
  *  
@@ -8,8 +8,8 @@
  * 
  * The following License Terms and Conditions apply, unless a different
  * license is obtained from Japan Network Information Center ("JPNIC"),
- * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku,
- * Tokyo, Japan.
+ * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda,
+ * Chiyoda-ku, Tokyo 101-0047, Japan.
  * 
  * 1. Use, Modification and Redistribution (including distribution of any
  *    modified or derived work) in source and/or binary forms is permitted
index 0e1ab9f8837dfc77115e3793ad941e97a0fe90ae..588bea12f70009cf531b0e748d1960787b60341e 100644 (file)
@@ -1,4 +1,4 @@
-# $Id: Makefile.in,v 1.21 2001/04/16 06:20:25 m-kasahr Exp $
+# $Id: Makefile.in,v 1.1 2002/01/02 02:46:26 marka Exp $
 # Copyright (c) 2000 Japan Network Information Center.  All rights reserved.
 #  
 # By using this file, you agree to the terms and conditions set forth bellow.
@@ -7,8 +7,8 @@
 # 
 # The following License Terms and Conditions apply, unless a different
 # license is obtained from Japan Network Information Center ("JPNIC"),
-# a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku,
-# Tokyo, Japan.
+# a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda,
+# Chiyoda-ku, Tokyo 101-0047, Japan.
 # 
 # 1. Use, Modification and Redistribution (including distribution of any
 #    modified or derived work) in source and/or binary forms is permitted
@@ -76,6 +76,9 @@ HDRS = \
        amcacem.h \
        amcaceo.h \
        amcacer.h \
+       amcacev.h \
+       amcacew.h \
+       amcacez.h \
        api.h \
        assert.h \
        brace.h \
@@ -91,6 +94,7 @@ HDRS = \
        localencoding.h \
        log.h \
        logmacro.h \
+       mace.h \
        mapper.h \
        mapselector.h \
        msgheader.h \
index 9d18e8c927996d7186b45fd7e4f38e5fc427c17d..7c5422172831226f346b789f2ab68770c1f2ad92 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: ace.h,v 1.1 2001/06/09 00:29:55 tale Exp $ */
+/* $Id: ace.h,v 1.2 2002/02/08 05:38:53 marka Exp $ */
 /*
  * Copyright (c) 2001 Japan Network Information Center.  All rights reserved.
  *  
@@ -8,8 +8,8 @@
  * 
  * The following License Terms and Conditions apply, unless a different
  * license is obtained from Japan Network Information Center ("JPNIC"),
- * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku,
- * Tokyo, Japan.
+ * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda,
+ * Chiyoda-ku, Tokyo 101-0047, Japan.
  * 
  * 1. Use, Modification and Redistribution (including distribution of any
  *    modified or derived work) in source and/or binary forms is permitted
index 9dd523a7add436a3cd6fc861eddc58d8dfaeeeaa..12fe9444b938189602da8de1728a6f0208954528 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: altdude.h,v 1.1 2001/06/09 00:29:55 tale Exp $ */
+/* $Id: altdude.h,v 1.2 2002/02/08 05:38:55 marka Exp $ */
 /*
  * Copyright (c) 2000,2001 Japan Network Information Center.
  * All rights reserved.
@@ -9,8 +9,8 @@
  * 
  * The following License Terms and Conditions apply, unless a different
  * license is obtained from Japan Network Information Center ("JPNIC"),
- * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku,
- * Tokyo, Japan.
+ * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda,
+ * Chiyoda-ku, Tokyo 101-0047, Japan.
  * 
  * 1. Use, Modification and Redistribution (including distribution of any
  *    modified or derived work) in source and/or binary forms is permitted
index 828c41d15c21472d42919dd5c2b10dcfdba189ea..cb54ab8ca291b4dc7183adcde980326c8bc3e362 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: amcacem.h,v 1.1 2001/06/09 00:29:55 tale Exp $ */
+/* $Id: amcacem.h,v 1.2 2002/02/08 05:38:56 marka Exp $ */
 /*
  * Copyright (c) 2001 Japan Network Information Center.  All rights reserved.
  *  
@@ -8,8 +8,8 @@
  * 
  * The following License Terms and Conditions apply, unless a different
  * license is obtained from Japan Network Information Center ("JPNIC"),
- * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku,
- * Tokyo, Japan.
+ * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda,
+ * Chiyoda-ku, Tokyo 101-0047, Japan.
  * 
  * 1. Use, Modification and Redistribution (including distribution of any
  *    modified or derived work) in source and/or binary forms is permitted
index 157888ecd534d1256b68a7b63722382b25080db7..b4703945e07ed32e9ef2d81064eb53f194def89a 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: amcaceo.h,v 1.1 2001/06/09 00:29:55 tale Exp $ */
+/* $Id: amcaceo.h,v 1.2 2002/02/08 05:38:57 marka Exp $ */
 /*
  * Copyright (c) 2001 Japan Network Information Center.  All rights reserved.
  *  
@@ -8,8 +8,8 @@
  * 
  * The following License Terms and Conditions apply, unless a different
  * license is obtained from Japan Network Information Center ("JPNIC"),
- * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku,
- * Tokyo, Japan.
+ * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda,
+ * Chiyoda-ku, Tokyo 101-0047, Japan.
  * 
  * 1. Use, Modification and Redistribution (including distribution of any
  *    modified or derived work) in source and/or binary forms is permitted
index b42b2965c290db7244bf0e247ee5248efe6f2e83..ffd5f899fa34df1028ac5aec22cbd1ab6a830ee8 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: amcacer.h,v 1.1 2001/06/09 00:29:55 tale Exp $ */
+/* $Id: amcacer.h,v 1.2 2002/02/08 05:38:58 marka Exp $ */
 /*
  * Copyright (c) 2001 Japan Network Information Center.  All rights reserved.
  *  
@@ -8,8 +8,8 @@
  * 
  * The following License Terms and Conditions apply, unless a different
  * license is obtained from Japan Network Information Center ("JPNIC"),
- * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku,
- * Tokyo, Japan.
+ * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda,
+ * Chiyoda-ku, Tokyo 101-0047, Japan.
  * 
  * 1. Use, Modification and Redistribution (including distribution of any
  *    modified or derived work) in source and/or binary forms is permitted
@@ -63,8 +63,8 @@
 /*
  * AMC-ACE-R Converter.
  *
- * See Internet Draft draft-ietf-idn-amc-ace-r-00.txt (but not yet
- * published at the time of this writing) for details.
+ * See Internet Draft draft-ietf-idn-amc-ace-r-01.txt for details.
+ * Note that -01 has some imcompatible changes over -00 spec.
  */
 
 #include <mdn/result.h>
diff --git a/contrib/idn/mdnkit/include/mdn/amcacev.h b/contrib/idn/mdnkit/include/mdn/amcacev.h
new file mode 100644 (file)
index 0000000..569dd2e
--- /dev/null
@@ -0,0 +1,85 @@
+/* $Id: amcacev.h,v 1.1 2002/02/08 05:38:59 marka Exp $ */
+/*
+ * Copyright (c) 2001 Japan Network Information Center.  All rights reserved.
+ *  
+ * By using this file, you agree to the terms and conditions set forth bellow.
+ * 
+ *                     LICENSE TERMS AND CONDITIONS 
+ * 
+ * The following License Terms and Conditions apply, unless a different
+ * license is obtained from Japan Network Information Center ("JPNIC"),
+ * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda,
+ * Chiyoda-ku, Tokyo 101-0047, Japan.
+ * 
+ * 1. Use, Modification and Redistribution (including distribution of any
+ *    modified or derived work) in source and/or binary forms is permitted
+ *    under this License Terms and Conditions.
+ * 
+ * 2. Redistribution of source code must retain the copyright notices as they
+ *    appear in each source code file, this License Terms and Conditions.
+ * 
+ * 3. Redistribution in binary form must reproduce the Copyright Notice,
+ *    this License Terms and Conditions, in the documentation and/or other
+ *    materials provided with the distribution.  For the purposes of binary
+ *    distribution the "Copyright Notice" refers to the following language:
+ *    "Copyright (c) Japan Network Information Center.  All rights reserved."
+ * 
+ * 4. Neither the name of JPNIC may be used to endorse or promote products
+ *    derived from this Software without specific prior written approval of
+ *    JPNIC.
+ * 
+ * 5. Disclaimer/Limitation of Liability: THIS SOFTWARE IS PROVIDED BY JPNIC
+ *    "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ *    LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+ *    PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL JPNIC BE LIABLE
+ *    FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ *    CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ *    SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+ *    BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ *    WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ *    OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ *    ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+ * 
+ * 6. Indemnification by Licensee
+ *    Any person or entities using and/or redistributing this Software under
+ *    this License Terms and Conditions shall defend indemnify and hold
+ *    harmless JPNIC from and against any and all judgements damages,
+ *    expenses, settlement liabilities, cost and other liabilities of any
+ *    kind as a result of use and redistribution of this Software or any
+ *    claim, suite, action, litigation or proceeding by any third party
+ *    arising out of or relates to this License Terms and Conditions.
+ * 
+ * 7. Governing Law, Jurisdiction and Venue
+ *    This License Terms and Conditions shall be governed by and and
+ *    construed in accordance with the law of Japan. Any person or entities
+ *    using and/or redistributing this Software under this License Terms and
+ *    Conditions hereby agrees and consent to the personal and exclusive
+ *    jurisdiction and venue of Tokyo District Court of Japan.
+ */
+
+#ifndef MDN_AMCACEV_H
+#define MDN_AMCACEV_H 1
+
+/*
+ * AMC-ACE-V Converter.
+ *
+ * See Internet Draft draft-ietf-idn-amc-ace-v-00.txt for details.
+ */
+
+#include <mdn/result.h>
+#include <mdn/converter.h>
+
+extern mdn_result_t
+mdn__amcacev_open(mdn_converter_t ctx, mdn_converter_dir_t dir,
+                 void **privdata);
+
+extern mdn_result_t
+mdn__amcacev_close(mdn_converter_t ctx, void *privdata,
+                  mdn_converter_dir_t dir);
+
+extern mdn_result_t
+mdn__amcacev_convert(mdn_converter_t ctx, void *privdata,
+                    mdn_converter_dir_t dir, const char *from, char *to,
+                    size_t tolen);
+
+#endif /* MDN_AMCACEV_H */
diff --git a/contrib/idn/mdnkit/include/mdn/amcacew.h b/contrib/idn/mdnkit/include/mdn/amcacew.h
new file mode 100644 (file)
index 0000000..9d25c32
--- /dev/null
@@ -0,0 +1,85 @@
+/* $Id: amcacew.h,v 1.1 2002/02/08 05:39:00 marka Exp $ */
+/*
+ * Copyright (c) 2001 Japan Network Information Center.  All rights reserved.
+ *  
+ * By using this file, you agree to the terms and conditions set forth bellow.
+ * 
+ *                     LICENSE TERMS AND CONDITIONS 
+ * 
+ * The following License Terms and Conditions apply, unless a different
+ * license is obtained from Japan Network Information Center ("JPNIC"),
+ * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda,
+ * Chiyoda-ku, Tokyo 101-0047, Japan.
+ * 
+ * 1. Use, Modification and Redistribution (including distribution of any
+ *    modified or derived work) in source and/or binary forms is permitted
+ *    under this License Terms and Conditions.
+ * 
+ * 2. Redistribution of source code must retain the copyright notices as they
+ *    appear in each source code file, this License Terms and Conditions.
+ * 
+ * 3. Redistribution in binary form must reproduce the Copyright Notice,
+ *    this License Terms and Conditions, in the documentation and/or other
+ *    materials provided with the distribution.  For the purposes of binary
+ *    distribution the "Copyright Notice" refers to the following language:
+ *    "Copyright (c) Japan Network Information Center.  All rights reserved."
+ * 
+ * 4. Neither the name of JPNIC may be used to endorse or promote products
+ *    derived from this Software without specific prior written approval of
+ *    JPNIC.
+ * 
+ * 5. Disclaimer/Limitation of Liability: THIS SOFTWARE IS PROVIDED BY JPNIC
+ *    "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ *    LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+ *    PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL JPNIC BE LIABLE
+ *    FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ *    CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ *    SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+ *    BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ *    WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ *    OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ *    ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+ * 
+ * 6. Indemnification by Licensee
+ *    Any person or entities using and/or redistributing this Software under
+ *    this License Terms and Conditions shall defend indemnify and hold
+ *    harmless JPNIC from and against any and all judgements damages,
+ *    expenses, settlement liabilities, cost and other liabilities of any
+ *    kind as a result of use and redistribution of this Software or any
+ *    claim, suite, action, litigation or proceeding by any third party
+ *    arising out of or relates to this License Terms and Conditions.
+ * 
+ * 7. Governing Law, Jurisdiction and Venue
+ *    This License Terms and Conditions shall be governed by and and
+ *    construed in accordance with the law of Japan. Any person or entities
+ *    using and/or redistributing this Software under this License Terms and
+ *    Conditions hereby agrees and consent to the personal and exclusive
+ *    jurisdiction and venue of Tokyo District Court of Japan.
+ */
+
+#ifndef MDN_AMCACEW_H
+#define MDN_AMCACEW_H 1
+
+/*
+ * AMC-ACE-W Converter.
+ *
+ * See Internet Draft draft-ietf-idn-amc-ace-w-00.txt for details.
+ */
+
+#include <mdn/result.h>
+#include <mdn/converter.h>
+
+extern mdn_result_t
+mdn__amcacew_open(mdn_converter_t ctx, mdn_converter_dir_t dir,
+                 void **privdata);
+
+extern mdn_result_t
+mdn__amcacew_close(mdn_converter_t ctx, void *privdata,
+                  mdn_converter_dir_t dir);
+
+extern mdn_result_t
+mdn__amcacew_convert(mdn_converter_t ctx, void *privdata,
+                    mdn_converter_dir_t dir, const char *from, char *to,
+                    size_t tolen);
+
+#endif /* MDN_AMCACEW_H */
diff --git a/contrib/idn/mdnkit/include/mdn/amcacez.h b/contrib/idn/mdnkit/include/mdn/amcacez.h
new file mode 100644 (file)
index 0000000..6c8e10a
--- /dev/null
@@ -0,0 +1,86 @@
+/* $Id: amcacez.h,v 1.1 2002/02/08 05:39:00 marka Exp $ */
+/*
+ * Copyright (c) 2001 Japan Network Information Center.  All rights reserved.
+ *  
+ * By using this file, you agree to the terms and conditions set forth bellow.
+ * 
+ *                     LICENSE TERMS AND CONDITIONS 
+ * 
+ * The following License Terms and Conditions apply, unless a different
+ * license is obtained from Japan Network Information Center ("JPNIC"),
+ * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda,
+ * Chiyoda-ku, Tokyo 101-0047, Japan.
+ * 
+ * 1. Use, Modification and Redistribution (including distribution of any
+ *    modified or derived work) in source and/or binary forms is permitted
+ *    under this License Terms and Conditions.
+ * 
+ * 2. Redistribution of source code must retain the copyright notices as they
+ *    appear in each source code file, this License Terms and Conditions.
+ * 
+ * 3. Redistribution in binary form must reproduce the Copyright Notice,
+ *    this License Terms and Conditions, in the documentation and/or other
+ *    materials provided with the distribution.  For the purposes of binary
+ *    distribution the "Copyright Notice" refers to the following language:
+ *    "Copyright (c) Japan Network Information Center.  All rights reserved."
+ * 
+ * 4. Neither the name of JPNIC may be used to endorse or promote products
+ *    derived from this Software without specific prior written approval of
+ *    JPNIC.
+ * 
+ * 5. Disclaimer/Limitation of Liability: THIS SOFTWARE IS PROVIDED BY JPNIC
+ *    "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ *    LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+ *    PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL JPNIC BE LIABLE
+ *    FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ *    CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ *    SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+ *    BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ *    WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ *    OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ *    ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+ * 
+ * 6. Indemnification by Licensee
+ *    Any person or entities using and/or redistributing this Software under
+ *    this License Terms and Conditions shall defend indemnify and hold
+ *    harmless JPNIC from and against any and all judgements damages,
+ *    expenses, settlement liabilities, cost and other liabilities of any
+ *    kind as a result of use and redistribution of this Software or any
+ *    claim, suite, action, litigation or proceeding by any third party
+ *    arising out of or relates to this License Terms and Conditions.
+ * 
+ * 7. Governing Law, Jurisdiction and Venue
+ *    This License Terms and Conditions shall be governed by and and
+ *    construed in accordance with the law of Japan. Any person or entities
+ *    using and/or redistributing this Software under this License Terms and
+ *    Conditions hereby agrees and consent to the personal and exclusive
+ *    jurisdiction and venue of Tokyo District Court of Japan.
+ */
+
+#ifndef MDN_AMCACEZ_H
+#define MDN_AMCACEZ_H 1
+
+/*
+ * AMC-ACE-Z (version 0.3.1) Converter.
+ *
+ * See Internet Draft draft-ietf-idn-amc-ace-z-01.txt
+ * for details.
+ */
+
+#include <mdn/result.h>
+#include <mdn/converter.h>
+
+extern mdn_result_t
+mdn__amcacez_open(mdn_converter_t ctx, mdn_converter_dir_t dir,
+                 void **privdata);
+
+extern mdn_result_t
+mdn__amcacez_close(mdn_converter_t ctx, void *privdata,
+                  mdn_converter_dir_t dir);
+
+extern mdn_result_t
+mdn__amcacez_convert(mdn_converter_t ctx, void *privdata,
+                    mdn_converter_dir_t dir, const char *from, char *to,
+                    size_t tolen);
+
+#endif /* MDN_AMCACEZ_H */
index 4a6ee276a46dbb880e2a504a0d19706d21e3b800..e9b0e9a62a19fd3d512df5d86e6d09a14aa6e0cc 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: api.h,v 1.1 2001/06/09 00:29:55 tale Exp $ */
+/* $Id: api.h,v 1.2 2002/02/08 05:39:00 marka Exp $ */
 /*
  * Copyright (c) 2001 Japan Network Information Center.  All rights reserved.
  *  
@@ -8,8 +8,8 @@
  * 
  * The following License Terms and Conditions apply, unless a different
  * license is obtained from Japan Network Information Center ("JPNIC"),
- * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku,
- * Tokyo, Japan.
+ * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda,
+ * Chiyoda-ku, Tokyo 101-0047, Japan.
  * 
  * 1. Use, Modification and Redistribution (including distribution of any
  *    modified or derived work) in source and/or binary forms is permitted
@@ -83,7 +83,7 @@
  */
 #define MDN_ENCODE_APP \
        (MDN_LOCALCONV|MDN_DELIMMAP|MDN_LOCALMAP|MDN_NAMEPREP|MDN_IDNCONV)
-#define MDN_DECODE_APP (MDN_IDNCONV|MDN_LOCALCONV)
+#define MDN_DECODE_APP (MDN_IDNCONV|MDN_NAMEPREP|MDN_LOCALCONV)
 
 /*
  * Initialize the whole library, and load configuration from the default
@@ -175,7 +175,10 @@ mdn_encodename(int actions, const char *from, char *to, size_t tolen);
  * a bitwise-or of the following flags:
  *
  *   MDN_IDNCONV       -- perform IDN encoding to UTF-8 conversion (step 1)
- *   MDN_LOCALCONV     -- perform UTF-8 to local encoding conversion (step 2)
+ *   MDN_NAMEPREP      -- perform NAMEPREP for verification (step 2)
+ *   MDN_UNASCHECK     -- perform optional unassigned codepoint check for
+ *                        verification (also step 2)
+ *   MDN_LOCALCONV     -- perform UTF-8 to local encoding conversion (step 3)
  *
  * Note that if no flags are specified, 'mdn_decodename' does nothing
  * but copying the given name verbatim.
@@ -215,6 +218,8 @@ mdn_decodename(int actions, const char *from, char *to, size_t tolen);
        mdn_decodename(MDN_IDNCONV, from, to, tolen)
 #define mdn_utf8tolocal(from, to, tolen) \
        mdn_decodename(MDN_LOCALCONV, from, to, tolen)
+#define mdn_nameprepcheck(from, to, tolen) \
+       mdn_decodename(MDN_NAMEPREP, from, to, tolen)
 
 #define mdn_localtoidn(from, to, tolen) \
        mdn_encodename(MDN_ENCODE_APP, from, to, tolen)
index 6463f1664b3acad0c98d2832b31060bc4d18d4d2..656643e25489bd95803d990d284a74aa4774878b 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: assert.h,v 1.5 2000/07/04 03:52:31 ishisone Exp $ */
+/* $Id: assert.h,v 1.1 2002/01/02 02:46:29 marka Exp $ */
 /*
  * Copyright (c) 2000 Japan Network Information Center.  All rights reserved.
  *  
@@ -8,8 +8,8 @@
  * 
  * The following License Terms and Conditions apply, unless a different
  * license is obtained from Japan Network Information Center ("JPNIC"),
- * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku,
- * Tokyo, Japan.
+ * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda,
+ * Chiyoda-ku, Tokyo 101-0047, Japan.
  * 
  * 1. Use, Modification and Redistribution (including distribution of any
  *    modified or derived work) in source and/or binary forms is permitted
index f562e8e1dcc22aac48baaf6a329814bab5cb783d..dac7a7f86a4d4032cc370592c8990c2fdc266a90 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: brace.h,v 1.2 2001/02/26 09:32:25 m-kasahr Exp $ */
+/* $Id: brace.h,v 1.1 2002/01/02 02:46:29 marka Exp $ */
 /*
  * Copyright (c) 2000 Japan Network Information Center.  All rights reserved.
  *  
@@ -8,8 +8,8 @@
  * 
  * The following License Terms and Conditions apply, unless a different
  * license is obtained from Japan Network Information Center ("JPNIC"),
- * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku,
- * Tokyo, Japan.
+ * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda,
+ * Chiyoda-ku, Tokyo 101-0047, Japan.
  * 
  * 1. Use, Modification and Redistribution (including distribution of any
  *    modified or derived work) in source and/or binary forms is permitted
index 0efb436100c68d8697ebb410ecf3ce34c4f4096a..070e9a6378cedc6c845d21b6c040887c00cf0109 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: checker.h,v 1.1 2001/06/09 00:29:56 tale Exp $ */
+/* $Id: checker.h,v 1.2 2002/02/08 05:39:04 marka Exp $ */
 /*
  * Copyright (c) 2001 Japan Network Information Center.  All rights reserved.
  *  
@@ -8,8 +8,8 @@
  * 
  * The following License Terms and Conditions apply, unless a different
  * license is obtained from Japan Network Information Center ("JPNIC"),
- * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku,
- * Tokyo, Japan.
+ * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda,
+ * Chiyoda-ku, Tokyo 101-0047, Japan.
  * 
  * 1. Use, Modification and Redistribution (including distribution of any
  *    modified or derived work) in source and/or binary forms is permitted
index 6d62924524a7d8e03c2f76dcb1dad2a312a3eae8..9d777de332ed3789ed4a5850cdda876be25da561 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: converter.h,v 1.15 2001/02/26 09:32:25 m-kasahr Exp $ */
+/* $Id: converter.h,v 1.1 2002/01/02 02:46:30 marka Exp $ */
 /*
  * Copyright (c) 2000 Japan Network Information Center.  All rights reserved.
  *  
@@ -8,8 +8,8 @@
  * 
  * The following License Terms and Conditions apply, unless a different
  * license is obtained from Japan Network Information Center ("JPNIC"),
- * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku,
- * Tokyo, Japan.
+ * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda,
+ * Chiyoda-ku, Tokyo 101-0047, Japan.
  * 
  * 1. Use, Modification and Redistribution (including distribution of any
  *    modified or derived work) in source and/or binary forms is permitted
@@ -88,6 +88,13 @@ typedef enum {
 #define MDN_CONVERTER_DELAYEDOPEN      1
 #define MDN_CONVERTER_RTCHECK          2
 
+/*
+ * Encoding types.
+ */
+#define MDN_NONACE                     0
+#define MDN_ACE_STRICTCASE             1
+#define MDN_ACE_LOOSECASE              2
+
 /*
  * Initialize module.  Must be called before any other calls of
  * the functions of this module.
@@ -167,13 +174,23 @@ extern char *
 mdn_converter_localencoding(mdn_converter_t ctx);
 
 /*
- * Return if this local encoding is a special one that a string in this
- * encoding just looks like an ordinary ASCII string.
- * A few types of encoding designed specially for domain name conversion
- * (such as UTF-5) fall into this category.
+ * Return the encoding type of this local encoding.
+ *
+ * Returns:
+ *     MDN_NOACE               -- encoding is not ACE.
+ *     MDN_ACE_STRICTCASE      -- encoding is ACE.
+ *                                decoder of this ACE preserve letter case.
+ *     MDN_ACE_LOOSECASE       -- encoding type is ACE.
+ *                                decoder cannot preserve letter case.
+ */
+extern int
+mdn_converter_encodingtype(mdn_converter_t ctx);
+
+/*
+ * Return if this local encoding is ACE (Ascii Compatible Encoding).
  *
  * Returns:
- *     1       -- yes, it is special.
+ *     1       -- yes, it is ACE.
  *     0       -- no.
  */
 extern int
@@ -229,8 +246,7 @@ typedef mdn_result_t (*mdn_converter_convertproc_t)(mdn_converter_t ctx,
 
 /*
  * Register a new converter.
- * 'ascii_compatible' is a boolean flag indicating this encoding is
- * an `ascii-compatible encoding'.
+ * 'encoding_type' is a value which mdn_converter_encodingtype() returns.
  *
  * Returns:
  *     mdn_success             -- ok.
@@ -241,6 +257,6 @@ mdn_converter_register(const char *name,
                       mdn_converter_openproc_t open,
                       mdn_converter_closeproc_t close,
                       mdn_converter_convertproc_t convert,
-                      int ascii_compatible);
+                      int encoding_type);
 
 #endif /* MDN_CONVERTER_H */
index e043179be06b1890f3da41493ce16bb933e4e729..27469bc1188192af046e4a6755e0942a4f83576e 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: debug.h,v 1.7 2000/07/04 03:52:32 ishisone Exp $ */
+/* $Id: debug.h,v 1.1 2002/01/02 02:46:30 marka Exp $ */
 /*
  * Copyright (c) 2000 Japan Network Information Center.  All rights reserved.
  *  
@@ -8,8 +8,8 @@
  * 
  * The following License Terms and Conditions apply, unless a different
  * license is obtained from Japan Network Information Center ("JPNIC"),
- * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku,
- * Tokyo, Japan.
+ * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda,
+ * Chiyoda-ku, Tokyo 101-0047, Japan.
  * 
  * 1. Use, Modification and Redistribution (including distribution of any
  *    modified or derived work) in source and/or binary forms is permitted
index 9fef761117739c1393941fbf924478c5b7f8c304..5a5719259f8f1da7f2bf3b0f7fbd598604d12443 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: delimitermap.h,v 1.1 2001/06/09 00:29:58 tale Exp $ */
+/* $Id: delimitermap.h,v 1.2 2002/02/08 05:39:07 marka Exp $ */
 /*
  * Copyright (c) 2001 Japan Network Information Center.  All rights reserved.
  *  
@@ -8,8 +8,8 @@
  * 
  * The following License Terms and Conditions apply, unless a different
  * license is obtained from Japan Network Information Center ("JPNIC"),
- * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku,
- * Tokyo, Japan.
+ * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda,
+ * Chiyoda-ku, Tokyo 101-0047, Japan.
  * 
  * 1. Use, Modification and Redistribution (including distribution of any
  *    modified or derived work) in source and/or binary forms is permitted
index b275b50b659365351c7d29b11b7fb34be2aecb21..1b3df48a3c56ab0863df2138a409dabe3341c042 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: dn.h,v 1.7 2000/08/02 02:06:40 ishisone Exp $ */
+/* $Id: dn.h,v 1.1 2002/01/02 02:46:30 marka Exp $ */
 /*
  * Copyright (c) 2000 Japan Network Information Center.  All rights reserved.
  *  
@@ -8,8 +8,8 @@
  * 
  * The following License Terms and Conditions apply, unless a different
  * license is obtained from Japan Network Information Center ("JPNIC"),
- * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku,
- * Tokyo, Japan.
+ * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda,
+ * Chiyoda-ku, Tokyo 101-0047, Japan.
  * 
  * 1. Use, Modification and Redistribution (including distribution of any
  *    modified or derived work) in source and/or binary forms is permitted
index aaa4aeb5fda60a99b02ca6066d52bfe74ecc58ac..efba60a2040c8c9546628a039adced25d96c646c 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: dude.h,v 1.1 2001/06/09 00:29:58 tale Exp $ */
+/* $Id: dude.h,v 1.2 2002/02/08 05:39:10 marka Exp $ */
 /*
  * Copyright (c) 2000,2001 Japan Network Information Center.
  * All rights reserved.
@@ -9,8 +9,8 @@
  * 
  * The following License Terms and Conditions apply, unless a different
  * license is obtained from Japan Network Information Center ("JPNIC"),
- * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku,
- * Tokyo, Japan.
+ * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda,
+ * Chiyoda-ku, Tokyo 101-0047, Japan.
  * 
  * 1. Use, Modification and Redistribution (including distribution of any
  *    modified or derived work) in source and/or binary forms is permitted
@@ -64,9 +64,9 @@
 /*
  * DUDE Converter.
  *
- * See Internet Draft draft-ietf-idn-dude-01.txt for details.  Note
+ * See Internet Draft draft-ietf-idn-dude-02.txt for details.  Note
  * that this implementation does not support the optional feature of
- * DUDE, which is "case preservation".  Implementing this feature
+ * DUDE, which is "Mixed-case annotation".  Implementing this feature
  * requires reimplementation of NAMEPREP process of libmdn.
  */
 
index 653c6aa7b57b27e2e3dc7c73a23372e52c94a134..cde4d1796cf03c5ed66c5a669694f49371272e98 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: filechecker.h,v 1.1 2001/06/09 00:29:58 tale Exp $ */
+/* $Id: filechecker.h,v 1.2 2002/02/08 05:39:11 marka Exp $ */
 /*
  * Copyright (c) 2001 Japan Network Information Center.  All rights reserved.
  *  
@@ -8,8 +8,8 @@
  * 
  * The following License Terms and Conditions apply, unless a different
  * license is obtained from Japan Network Information Center ("JPNIC"),
- * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku,
- * Tokyo, Japan.
+ * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda,
+ * Chiyoda-ku, Tokyo 101-0047, Japan.
  * 
  * 1. Use, Modification and Redistribution (including distribution of any
  *    modified or derived work) in source and/or binary forms is permitted
index 045d19181afbc427c2a17e0729a1136cc1811629..cc19be046b5983187a0344bbcd7a3f1eb575d53d 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: filemapper.h,v 1.1 2001/06/09 00:29:58 tale Exp $ */
+/* $Id: filemapper.h,v 1.2 2002/02/08 05:39:12 marka Exp $ */
 /*
  * Copyright (c) 2001 Japan Network Information Center.  All rights reserved.
  *  
@@ -8,8 +8,8 @@
  * 
  * The following License Terms and Conditions apply, unless a different
  * license is obtained from Japan Network Information Center ("JPNIC"),
- * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku,
- * Tokyo, Japan.
+ * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda,
+ * Chiyoda-ku, Tokyo 101-0047, Japan.
  * 
  * 1. Use, Modification and Redistribution (including distribution of any
  *    modified or derived work) in source and/or binary forms is permitted
index 8f2a561439b3d7d46259b3523f9bb1b944a83c99..29f0e6ec0297e4297f223d8d4c8e2a1e6920442b 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: lace.h,v 1.2 2001/02/26 09:32:25 m-kasahr Exp $ */
+/* $Id: lace.h,v 1.1 2002/01/02 02:46:31 marka Exp $ */
 /*
  * Copyright (c) 2000 Japan Network Information Center.  All rights reserved.
  *  
@@ -8,8 +8,8 @@
  * 
  * The following License Terms and Conditions apply, unless a different
  * license is obtained from Japan Network Information Center ("JPNIC"),
- * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku,
- * Tokyo, Japan.
+ * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda,
+ * Chiyoda-ku, Tokyo 101-0047, Japan.
  * 
  * 1. Use, Modification and Redistribution (including distribution of any
  *    modified or derived work) in source and/or binary forms is permitted
index 3cefe4818a5d63fea402dfc497e48a792cc2a50a..5e3d50a76c471a9f1054a6e7f1a60d904cdd3164 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: localencoding.h,v 1.7 2000/08/02 02:06:40 ishisone Exp $ */
+/* $Id: localencoding.h,v 1.1 2002/01/02 02:46:31 marka Exp $ */
 /*
  * Copyright (c) 2000 Japan Network Information Center.  All rights reserved.
  *  
@@ -8,8 +8,8 @@
  * 
  * The following License Terms and Conditions apply, unless a different
  * license is obtained from Japan Network Information Center ("JPNIC"),
- * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku,
- * Tokyo, Japan.
+ * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda,
+ * Chiyoda-ku, Tokyo 101-0047, Japan.
  * 
  * 1. Use, Modification and Redistribution (including distribution of any
  *    modified or derived work) in source and/or binary forms is permitted
index 2360fcc94f41cecfdf7dab522f349632ac730ac3..53f232e9aa4c3c9e2d5dd4fb07498bcc59a27f8a 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: log.h,v 1.9 2000/10/16 05:00:17 ishisone Exp $ */
+/* $Id: log.h,v 1.1 2002/01/02 02:46:31 marka Exp $ */
 /*
  * Copyright (c) 2000 Japan Network Information Center.  All rights reserved.
  *  
@@ -8,8 +8,8 @@
  * 
  * The following License Terms and Conditions apply, unless a different
  * license is obtained from Japan Network Information Center ("JPNIC"),
- * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku,
- * Tokyo, Japan.
+ * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda,
+ * Chiyoda-ku, Tokyo 101-0047, Japan.
  * 
  * 1. Use, Modification and Redistribution (including distribution of any
  *    modified or derived work) in source and/or binary forms is permitted
index df4385effca4281d3a830279df32ba95f352efe7..9d862afd083c8d02dba98992181bbaee0156f1b7 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: logmacro.h,v 1.9 2000/09/20 02:47:29 ishisone Exp $ */
+/* $Id: logmacro.h,v 1.1 2002/01/02 02:46:32 marka Exp $ */
 /*
  * Copyright (c) 2000 Japan Network Information Center.  All rights reserved.
  *  
@@ -8,8 +8,8 @@
  * 
  * The following License Terms and Conditions apply, unless a different
  * license is obtained from Japan Network Information Center ("JPNIC"),
- * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku,
- * Tokyo, Japan.
+ * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda,
+ * Chiyoda-ku, Tokyo 101-0047, Japan.
  * 
  * 1. Use, Modification and Redistribution (including distribution of any
  *    modified or derived work) in source and/or binary forms is permitted
 #define FATAL(x)       mdn_log_fatal x
 #define ERROR(x)       mdn_log_error x
 #define WARNING(x)     mdn_log_warning x
-#define INFO(x)                mdn_log_info x
+#define INFO(x)                LOG_AT_LEVEL(mdn_log_level_info, mdn_log_info, x)
+#define TRACE(x)       LOG_AT_LEVEL(mdn_log_level_trace, mdn_log_trace, x)
 
 #ifdef DEBUG
-#define TRACE(x)       mdn_log_trace x
-#define DUMP(x)                mdn_log_dump x
+#define DUMP(x)                LOG_AT_LEVEL(mdn_log_level_dump, mdn_log_dump, x)
 #else
-#define TRACE(x)
 #define DUMP(x)
 #endif /* DEBUG */
 
+#define LOG_AT_LEVEL(lv, fun, x) do {if (LOGLEVEL >= (lv)) fun x; } while (0)
 #define LOGLEVEL       mdn_log_getlevel()
 
 #endif /* MDN_LOGMACRO_H */
diff --git a/contrib/idn/mdnkit/include/mdn/mace.h b/contrib/idn/mdnkit/include/mdn/mace.h
new file mode 100644 (file)
index 0000000..f79d16a
--- /dev/null
@@ -0,0 +1,86 @@
+/* $Id: mace.h,v 1.1 2002/02/08 05:39:19 marka Exp $ */
+/*
+ * Copyright (c) 2001 Japan Network Information Center.  All rights reserved.
+ *  
+ * By using this file, you agree to the terms and conditions set forth bellow.
+ * 
+ *                     LICENSE TERMS AND CONDITIONS 
+ * 
+ * The following License Terms and Conditions apply, unless a different
+ * license is obtained from Japan Network Information Center ("JPNIC"),
+ * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda,
+ * Chiyoda-ku, Tokyo 101-0047, Japan.
+ * 
+ * 1. Use, Modification and Redistribution (including distribution of any
+ *    modified or derived work) in source and/or binary forms is permitted
+ *    under this License Terms and Conditions.
+ * 
+ * 2. Redistribution of source code must retain the copyright notices as they
+ *    appear in each source code file, this License Terms and Conditions.
+ * 
+ * 3. Redistribution in binary form must reproduce the Copyright Notice,
+ *    this License Terms and Conditions, in the documentation and/or other
+ *    materials provided with the distribution.  For the purposes of binary
+ *    distribution the "Copyright Notice" refers to the following language:
+ *    "Copyright (c) Japan Network Information Center.  All rights reserved."
+ * 
+ * 4. Neither the name of JPNIC may be used to endorse or promote products
+ *    derived from this Software without specific prior written approval of
+ *    JPNIC.
+ * 
+ * 5. Disclaimer/Limitation of Liability: THIS SOFTWARE IS PROVIDED BY JPNIC
+ *    "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ *    LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+ *    PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL JPNIC BE LIABLE
+ *    FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ *    CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ *    SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+ *    BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ *    WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ *    OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ *    ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+ * 
+ * 6. Indemnification by Licensee
+ *    Any person or entities using and/or redistributing this Software under
+ *    this License Terms and Conditions shall defend indemnify and hold
+ *    harmless JPNIC from and against any and all judgements damages,
+ *    expenses, settlement liabilities, cost and other liabilities of any
+ *    kind as a result of use and redistribution of this Software or any
+ *    claim, suite, action, litigation or proceeding by any third party
+ *    arising out of or relates to this License Terms and Conditions.
+ * 
+ * 7. Governing Law, Jurisdiction and Venue
+ *    This License Terms and Conditions shall be governed by and and
+ *    construed in accordance with the law of Japan. Any person or entities
+ *    using and/or redistributing this Software under this License Terms and
+ *    Conditions hereby agrees and consent to the personal and exclusive
+ *    jurisdiction and venue of Tokyo District Court of Japan.
+ */
+
+#ifndef MDN_MACE_H
+#define MDN_MACE_H 1
+
+/*
+ * MACE Converter.
+ *
+ * See Internet Draft draft-ietf-idn-mace-00.txt (but not yet
+ * published at the time of this writing) for details.
+ */
+
+#include <mdn/result.h>
+#include <mdn/converter.h>
+
+extern mdn_result_t
+mdn__mace_open(mdn_converter_t ctx, mdn_converter_dir_t dir,
+              void **privdata);
+
+extern mdn_result_t
+mdn__mace_close(mdn_converter_t ctx, void *privdata,
+               mdn_converter_dir_t dir);
+
+extern mdn_result_t
+mdn__mace_convert(mdn_converter_t ctx, void *privdata,
+                 mdn_converter_dir_t dir, const char *from, char *to,
+                 size_t tolen);
+
+#endif /* MDN_MACE_H */
index 16506b4d30130531afc892c8e1934859a7b6c0f7..6e9e08f31961297db0e876edcda596ce3d4a317b 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: mapper.h,v 1.1 2001/06/09 00:29:59 tale Exp $ */
+/* $Id: mapper.h,v 1.2 2002/02/08 05:39:19 marka Exp $ */
 /*
  * Copyright (c) 2001 Japan Network Information Center.  All rights reserved.
  *  
@@ -8,8 +8,8 @@
  * 
  * The following License Terms and Conditions apply, unless a different
  * license is obtained from Japan Network Information Center ("JPNIC"),
- * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku,
- * Tokyo, Japan.
+ * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda,
+ * Chiyoda-ku, Tokyo 101-0047, Japan.
  * 
  * 1. Use, Modification and Redistribution (including distribution of any
  *    modified or derived work) in source and/or binary forms is permitted
index fc3e032befd43731bd2155636481f3ec63a373d5..737015423002089417247cd1220605ae3c0a4215 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: mapselector.h,v 1.1 2001/06/09 00:29:59 tale Exp $ */
+/* $Id: mapselector.h,v 1.2 2002/02/08 05:39:21 marka Exp $ */
 /*
  * Copyright (c) 2001 Japan Network Information Center.  All rights reserved.
  *  
@@ -8,8 +8,8 @@
  * 
  * The following License Terms and Conditions apply, unless a different
  * license is obtained from Japan Network Information Center ("JPNIC"),
- * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku,
- * Tokyo, Japan.
+ * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda,
+ * Chiyoda-ku, Tokyo 101-0047, Japan.
  * 
  * 1. Use, Modification and Redistribution (including distribution of any
  *    modified or derived work) in source and/or binary forms is permitted
index 1135970026ba396bc5818e8b7fc95430c7815313..8b6c8cab1f363c0221e6164c4adeb9d806281905 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: msgheader.h,v 1.7 2000/08/02 02:06:40 ishisone Exp $ */
+/* $Id: msgheader.h,v 1.1 2002/01/02 02:46:33 marka Exp $ */
 /*
  * Copyright (c) 2000 Japan Network Information Center.  All rights reserved.
  *  
@@ -8,8 +8,8 @@
  * 
  * The following License Terms and Conditions apply, unless a different
  * license is obtained from Japan Network Information Center ("JPNIC"),
- * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku,
- * Tokyo, Japan.
+ * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda,
+ * Chiyoda-ku, Tokyo 101-0047, Japan.
  * 
  * 1. Use, Modification and Redistribution (including distribution of any
  *    modified or derived work) in source and/or binary forms is permitted
index 7f5167e7ee59e36cce72ed9e61ac7d313c4533b5..76370715824742f7e48f6f156ff38573dd67274a 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: msgtrans.h,v 1.12 2001/02/15 01:15:25 ishisone Exp $ */
+/* $Id: msgtrans.h,v 1.1 2002/01/02 02:46:33 marka Exp $ */
 /*
  * Copyright (c) 2000,2001 Japan Network Information Center.
  * All rights reserved.
@@ -9,8 +9,8 @@
  * 
  * The following License Terms and Conditions apply, unless a different
  * license is obtained from Japan Network Information Center ("JPNIC"),
- * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku,
- * Tokyo, Japan.
+ * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda,
+ * Chiyoda-ku, Tokyo 101-0047, Japan.
  * 
  * 1. Use, Modification and Redistribution (including distribution of any
  *    modified or derived work) in source and/or binary forms is permitted
index 53f3961f360f3812eb4e129ac94d082352986ab0..1929dc25a02042a19e338ec2188a9c076ed9eb0e 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: nameprep.h,v 1.1 2001/06/09 00:30:00 tale Exp $ */
+/* $Id: nameprep.h,v 1.2 2002/02/08 05:39:24 marka Exp $ */
 /*
  * Copyright (c) 2001 Japan Network Information Center.  All rights reserved.
  *  
@@ -8,8 +8,8 @@
  * 
  * The following License Terms and Conditions apply, unless a different
  * license is obtained from Japan Network Information Center ("JPNIC"),
- * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku,
- * Tokyo, Japan.
+ * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda,
+ * Chiyoda-ku, Tokyo 101-0047, Japan.
  * 
  * 1. Use, Modification and Redistribution (including distribution of any
  *    modified or derived work) in source and/or binary forms is permitted
index c1b7f80c487dbb2891a5a35535fe35e2ad7864f6..6ac8c36a43a1a97fc331f8cf1d4f165198ef2877 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: normalizer.h,v 1.13 2001/02/23 10:36:51 m-kasahr Exp $ */
+/* $Id: normalizer.h,v 1.1 2002/01/02 02:46:33 marka Exp $ */
 /*
  * Copyright (c) 2000 Japan Network Information Center.  All rights reserved.
  *  
@@ -8,8 +8,8 @@
  * 
  * The following License Terms and Conditions apply, unless a different
  * license is obtained from Japan Network Information Center ("JPNIC"),
- * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku,
- * Tokyo, Japan.
+ * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda,
+ * Chiyoda-ku, Tokyo 101-0047, Japan.
  * 
  * 1. Use, Modification and Redistribution (including distribution of any
  *    modified or derived work) in source and/or binary forms is permitted
index cb885ff69a8fc52882c9f622a7af6536b9319533..2fa679a7c4523d27e25a13d08127e3731c9992e8 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: race.h,v 1.9 2001/02/26 09:32:25 m-kasahr Exp $ */
+/* $Id: race.h,v 1.1 2002/01/02 02:46:33 marka Exp $ */
 /*
  * Copyright (c) 2000 Japan Network Information Center.  All rights reserved.
  *  
@@ -8,8 +8,8 @@
  * 
  * The following License Terms and Conditions apply, unless a different
  * license is obtained from Japan Network Information Center ("JPNIC"),
- * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku,
- * Tokyo, Japan.
+ * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda,
+ * Chiyoda-ku, Tokyo 101-0047, Japan.
  * 
  * 1. Use, Modification and Redistribution (including distribution of any
  *    modified or derived work) in source and/or binary forms is permitted
index 4d47505aca69b498682b66df2f497a8e2a6d618e..986def00eb8f002776f43f4cd25788fb92070ac4 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: res.h,v 1.7 2001/04/11 08:16:07 m-kasahr Exp $ */
+/* $Id: res.h,v 1.1 2002/01/02 02:46:34 marka Exp $ */
 /*
  * Copyright (c) 2000 Japan Network Information Center.  All rights reserved.
  *  
@@ -8,8 +8,8 @@
  * 
  * The following License Terms and Conditions apply, unless a different
  * license is obtained from Japan Network Information Center ("JPNIC"),
- * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku,
- * Tokyo, Japan.
+ * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda,
+ * Chiyoda-ku, Tokyo 101-0047, Japan.
  * 
  * 1. Use, Modification and Redistribution (including distribution of any
  *    modified or derived work) in source and/or binary forms is permitted
@@ -80,9 +80,9 @@
  * Convert and check the string.
  *
  * This function converts the string `from' to `to', checks `from' or
- * combination of them, using `actions'.
+ * combination of them, using `insn'.
  *
- * `actions' is a sequence of characters as follows:
+ * `insn' is a sequence of characters as follows:
  *
  *     l       convert the local codeset string to UTF-8.
  *     L       convert the UTF-8 string to the local codeset.
  *             codepoint.
  *     I       convert the UTF-8 string to ACE.
  *     i       convert the ACE string to UTF-8.
- *     a       convert the alternative encoded ACE sting to UTF-8.
- *     A       convert the UTF-8 string to alternative ACE encoding.
+ *     !m      inspect if nameprep mapping has been performed to the
+ *             string.  If hasn't, convert the string to ACE.
+ *     !n      inspect if nameprep normalizaion has been performed
+ *             to the string.  If hasn't, convert the string to ACE.
+ *     !p      search the string for nameprep prohibited character.
+ *             If found, convert the string to ACE.
+ *     !N      equivalent to "!m!n!p".
+ *     !u      search the string for nameprep unassigned codepoint.
+ *             If found, convert the string to ACE.
  *
  * Returns:
  *     mdn_success             -- ok.
  *     mdn_buffer_overflow     -- output buffer is too small.
  *     mdn_invalid_encoding    -- input string has invalid byte sequence.
  *     mdn_invalid_name        -- local encoding (codeset) name is invalid.
- *     mdn_invalid_action      -- `actions' contains invalid action.
+ *     mdn_invalid_action      -- `insn' contains invalid action.
  *     mdn_invalid_nomemory    -- out of memory.
  *     mdn_invalid_nomapping   -- no mapping to output codeset.
  *     mdn_prohibited          -- input string has a prohibited character.
- *     mdn_failuer             -- other failure.
+ *     mdn_failure             -- other failure.
  */
 extern mdn_result_t
-mdn_res_nameconv(mdn_resconf_t ctx, const char *actions, const char *from,
+mdn_res_nameconv(mdn_resconf_t ctx, const char *insn, const char *from,
                 char *to, size_t tolen);
 
 /*
  * Convert the local codeset string to UTF-8.
- * equivalent to:
- *     mdn_res_nameconv(ctx, "l", from, to, tolen);
  */
 extern mdn_result_t
 mdn_res_localtoucs(mdn_resconf_t ctx, const char *from, char *to,
@@ -129,8 +134,6 @@ mdn_res_localtoucs(mdn_resconf_t ctx, const char *from, char *to,
 
 /*
  * Convert the UTF-8 string to the local codeset.
- * equivalent to:
- *     mdn_res_nameconv(ctx, "L", from, to, tolen);
  */
 extern mdn_result_t
 mdn_res_ucstolocal(mdn_resconf_t ctx, const char *from, char *to,
@@ -141,8 +144,6 @@ mdn_res_ucstolocal(mdn_resconf_t ctx, const char *from, char *to,
 
 /*
  * Perform the nameprep mapping.
- * equivalent to:
- *     mdn_res_nameconv(ctx, "m", from, to, tolen);
  */
 extern mdn_result_t
 mdn_res_map(mdn_resconf_t ctx, const char *from, char *to, size_t tolen);
@@ -152,8 +153,6 @@ mdn_res_map(mdn_resconf_t ctx, const char *from, char *to, size_t tolen);
 
 /*
  * Perform nameprep normalization.
- * equivalent to:
- *     mdn_res_nameconv(ctx, "n", from, to, tolen);
  */
 extern mdn_result_t
 mdn_res_normalize(mdn_resconf_t ctx, const char *from, char *to, size_t tolen);
@@ -163,8 +162,6 @@ mdn_res_normalize(mdn_resconf_t ctx, const char *from, char *to, size_t tolen);
 
 /*
  * Check whether the string contains nameprep prohibited character.
- * equivalent to:
- *     mdn_res_nameconv(ctx, "p", from, to, tolen);
  */
 extern mdn_result_t
 mdn_res_prohibitcheck(mdn_resconf_t ctx, const char *from, char *to,
@@ -173,10 +170,28 @@ mdn_res_prohibitcheck(mdn_resconf_t ctx, const char *from, char *to,
 #define mdn_res_prohibitcheck(ctx, from, to, tolen) \
        mdn_res_nameconv(ctx, "p", from, to, tolen)
 
+/*
+ * NAMEPREP.
+ */
+extern mdn_result_t
+mdn_res_nameprep(mdn_resconf_t ctx, const char *from, char *to,
+                size_t tolen);
+
+#define mdn_res_nameprep(ctx, from, to, tolen) \
+       mdn_res_nameconv(ctx, "N", from, to, tolen)
+
+/*
+ * NAMEPREP check.
+ */
+extern mdn_result_t
+mdn_res_nameprepcheck(mdn_resconf_t ctx, const char *from, char *to,
+                     size_t tolen);
+
+#define mdn_res_nameprepcheck(ctx, from, to, tolen) \
+       mdn_res_nameconv(ctx, "!N", from, to, tolen)
+
 /*
  * Check whether the string contains nameprep unassigned character.
- * equivalent to:
- *     mdn_res_nameconv(ctx, "u", from, to, tolen);
  */
 extern mdn_result_t
 mdn_res_unassignedcheck(mdn_resconf_t ctx, const char *from, char *to,
@@ -187,8 +202,6 @@ mdn_res_unassignedcheck(mdn_resconf_t ctx, const char *from, char *to,
 
 /*
  * Perform local delimiter mapping.
- * equivalent to:
- *     mdn_res_nameconv(ctx, "d", from, to, tolen);
  */
 extern mdn_result_t
 mdn_res_delimitermap(mdn_resconf_t ctx, const char *from, char *to,
@@ -199,8 +212,6 @@ mdn_res_delimitermap(mdn_resconf_t ctx, const char *from, char *to,
 
 /*
  * Perfrom TLD based local mapping.
- * equivalent to:
- *     mdn_res_nameconv(ctx, "M", from, to, tolen);
  */
 extern mdn_result_t
 mdn_res_localmap(mdn_resconf_t ctx, const char *from, char *to, size_t tolen);
@@ -210,8 +221,6 @@ mdn_res_localmap(mdn_resconf_t ctx, const char *from, char *to, size_t tolen);
 
 /*
  * Convert the UTF-8 string to ACE.
- * equivalent to:
- *     mdn_res_nameconv(ctx, "I", from, to, tolen);
  */
 extern mdn_result_t
 mdn_res_ucstodns(mdn_resconf_t ctx, const char *from, char *to, size_t tolen);
@@ -221,8 +230,6 @@ mdn_res_ucstodns(mdn_resconf_t ctx, const char *from, char *to, size_t tolen);
 
 /*
  * Convert the ACE string to UTF-8.
- * equivalent to:
- *     mdn_res_nameconv(ctx, "i", from, to, tolen);
  */
 extern mdn_result_t
 mdn_res_dnstoucs(mdn_resconf_t ctx, const char *from, char *to, size_t tolen);
index c737c43523a213d7333dd998b0348334eb4ad5ca..9a2c2f3317cd5cf1c34ca6b6aceeb880f97b1fb1 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: resconf.h,v 1.12 2001/04/16 02:25:17 m-kasahr Exp $ */
+/* $Id: resconf.h,v 1.1 2002/01/02 02:46:34 marka Exp $ */
 /*
  * Copyright (c) 2000 Japan Network Information Center.  All rights reserved.
  *  
@@ -8,8 +8,8 @@
  * 
  * The following License Terms and Conditions apply, unless a different
  * license is obtained from Japan Network Information Center ("JPNIC"),
- * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku,
- * Tokyo, Japan.
+ * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda,
+ * Chiyoda-ku, Tokyo 101-0047, Japan.
  * 
  * 1. Use, Modification and Redistribution (including distribution of any
  *    modified or derived work) in source and/or binary forms is permitted
@@ -145,87 +145,56 @@ extern char *
 mdn_resconf_defaultfile(void);
 
 /*
- * Get/Set codeset converters.
- *
- *  + for local encoding,
- *  + for IDN encoding,
- *  + for alternate encoding (which is used when the string to be converterd
- *    to the local encoding has some characters having no mapping to the
- *    local encoding)
- * In case of error, NULL will be returned.
+ * Get an object of lower module that `ctx' holds.
  */
-
-extern mdn_converter_t
-mdn_resconf_getlocalconverter(mdn_resconf_t ctx);
+extern mdn_delimitermap_t
+mdn_resconf_getdelimitermap(mdn_resconf_t ctx);
 
 extern mdn_converter_t
 mdn_resconf_getidnconverter(mdn_resconf_t ctx);
 
 extern mdn_converter_t
-mdn_resconf_getalternateconverter(mdn_resconf_t ctx);
+mdn_resconf_getlocalconverter(mdn_resconf_t ctx);
 
-extern void
-mdn_resconf_setlocalconverter(mdn_resconf_t ctx,
-                             mdn_converter_t local_converter);
-extern void
-mdn_resconf_setidnconverter(mdn_resconf_t ctx,
-                            mdn_converter_t idn_coverter);
+extern mdn_mapselector_t
+mdn_resconf_getlocalmapselector(mdn_resconf_t ctx);
 
-extern void
-mdn_resconf_setalternateconverter(mdn_resconf_t ctx,
-                                  mdn_converter_t alternate_converter);
+extern mdn_mapper_t
+mdn_resconf_getmapper(mdn_resconf_t ctx);
 
-/*
- * Get/Set domain name normalizer.
- *
- * In case of error, NULL will be returned.
- */
 extern mdn_normalizer_t
 mdn_resconf_getnormalizer(mdn_resconf_t ctx);
 
-extern void
-mdn_resconf_setnormalizer(mdn_resconf_t ctx, mdn_normalizer_t normalizer);
+extern mdn_checker_t
+mdn_resconf_getprohibitchecker(mdn_resconf_t ctx);
+
+extern mdn_checker_t
+mdn_resconf_getunassignedchecker(mdn_resconf_t ctx);
 
 /*
- * Get/Set domain name mapper.
- *
- *  + for nameprep mapping.
- *  + for TLD based local mapping.
- *  + for local delimiter mapping.
- * In case of error, NULL will be returned.
+ * Set an object of lower module to `ctx'.
  */
-extern mdn_mapper_t
-mdn_resconf_getmapper(mdn_resconf_t ctx);
-
-extern mdn_delimitermap_t
-mdn_resconf_getdelimitermap(mdn_resconf_t ctx);
-
-extern mdn_mapselector_t
-mdn_resconf_getlocalmapselector(mdn_resconf_t ctx);
+extern void
+mdn_resconf_setdelimitermap(mdn_resconf_t ctx,
+                           mdn_delimitermap_t delimiter_mapper);
 
 extern void
-mdn_resconf_setmapper(mdn_resconf_t ctx, mdn_mapper_t mapper);
+mdn_resconf_setidnconverter(mdn_resconf_t ctx,
+                            mdn_converter_t idn_coverter);
 
 extern void
-mdn_resconf_setdelimitermap(mdn_resconf_t ctx,
-                           mdn_delimitermap_t delimiter_mapper);
+mdn_resconf_setlocalconverter(mdn_resconf_t ctx,
+                             mdn_converter_t local_converter);
 
 extern void
 mdn_resconf_setlocalmapselector(mdn_resconf_t ctx,
                                mdn_mapselector_t map_selector);
 
-/*
- * Get domain name checker.
- *
- *  + for prohibited character checking.
- *  + for unassigned character checking.
- * In case of error, NULL will be returned.
- */
-extern mdn_checker_t
-mdn_resconf_getprohibitchecker(mdn_resconf_t ctx);
+extern void
+mdn_resconf_setmapper(mdn_resconf_t ctx, mdn_mapper_t mapper);
 
-extern mdn_checker_t
-mdn_resconf_getunassignedchecker(mdn_resconf_t ctx);
+extern void
+mdn_resconf_setnormalizer(mdn_resconf_t ctx, mdn_normalizer_t normalizer);
 
 extern void
 mdn_resconf_setprohibitchecker(mdn_resconf_t ctx,
@@ -236,27 +205,18 @@ mdn_resconf_setunassignedchecker(mdn_resconf_t ctx,
                                 mdn_checker_t unassigned_checker);
 
 /*
- * Set mapper, normalizer, prohibit checker and unassigned checker in
- * the resconf context to the specified NAMEPREP version.
- */
-extern mdn_result_t
-mdn_resconf_setalternateconvertername(mdn_resconf_t ctx, const char *name,
-                                     int flags);
-
-/*
- * Set converter, delimitermap, mapper, mapselector, normalizer, checker
- * by name.
+ * Set name or add names to an object of lower module that `ctx' holds.
  */
 extern mdn_result_t
 mdn_resconf_setidnconvertername(mdn_resconf_t ctx, const char *name,
                                int flags);
 
 extern mdn_result_t
-mdn_resconf_setlocalconvertername(mdn_resconf_t ctx, const char *name,
-                                 int flags);
+mdn_resconf_addalldelimitermapucs(mdn_resconf_t ctx, unsigned long *v, int nv);
 
 extern mdn_result_t
-mdn_resconf_addalldelimitermapucs(mdn_resconf_t ctx, unsigned long *v, int nv);
+mdn_resconf_setlocalconvertername(mdn_resconf_t ctx, const char *name,
+                                 int flags);
 
 extern mdn_result_t
 mdn_resconf_addalllocalmapselectornames(mdn_resconf_t ctx, const char *tld,
@@ -281,6 +241,22 @@ mdn_resconf_addallunassignedcheckernames(mdn_resconf_t ctx, const char **names,
 extern mdn_result_t
 mdn_resconf_setnameprepversion(mdn_resconf_t ctx, const char *version);
 
+/*
+ * These macros are provided for backward compatibility to mDNkit 2.1
+ * and older.
+ */
+extern void
+mdn_resconf_setalternateconverter(mdn_resconf_t ctx,
+                                  mdn_converter_t alternate_converter);
+
+extern mdn_result_t
+mdn_resconf_setalternateconvertername(mdn_resconf_t ctx, const char *name,
+                                     int flags);
+
+extern mdn_converter_t
+mdn_resconf_getalternateconverter(mdn_resconf_t ctx);
+
+
 /*
  * These macros are provided for backward compatibility to mDNkit 1.x.
  */
index 9015199d2bb1b70042fdb726e2c84211c9da8101..036512f866558c1769686150170348bc1712c716 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: result.h,v 1.11 2001/02/05 09:10:56 ishisone Exp $ */
+/* $Id: result.h,v 1.1 2002/01/02 02:46:34 marka Exp $ */
 /*
  * Copyright (c) 2000 Japan Network Information Center.  All rights reserved.
  *  
@@ -8,8 +8,8 @@
  * 
  * The following License Terms and Conditions apply, unless a different
  * license is obtained from Japan Network Information Center ("JPNIC"),
- * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku,
- * Tokyo, Japan.
+ * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda,
+ * Chiyoda-ku, Tokyo 101-0047, Japan.
  * 
  * 1. Use, Modification and Redistribution (including distribution of any
  *    modified or derived work) in source and/or binary forms is permitted
index 47b4efd522145bc938419e907d3f95cb9383ea7c..784ebfa708d640de5ed23d594152ec307f8252e6 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: selectiveencode.h,v 1.8 2000/08/02 02:06:40 ishisone Exp $ */
+/* $Id: selectiveencode.h,v 1.1 2002/01/02 02:46:35 marka Exp $ */
 /*
  * Copyright (c) 2000 Japan Network Information Center.  All rights reserved.
  *  
@@ -8,8 +8,8 @@
  * 
  * The following License Terms and Conditions apply, unless a different
  * license is obtained from Japan Network Information Center ("JPNIC"),
- * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku,
- * Tokyo, Japan.
+ * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda,
+ * Chiyoda-ku, Tokyo 101-0047, Japan.
  * 
  * 1. Use, Modification and Redistribution (including distribution of any
  *    modified or derived work) in source and/or binary forms is permitted
index 3fd7ef8ede088635a944a9620c5c210702c9599d..2c7ad08a7522cd4931d830d951e92591fc71b732 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: strhash.h,v 1.9 2000/08/02 02:06:40 ishisone Exp $ */
+/* $Id: strhash.h,v 1.1 2002/01/02 02:46:35 marka Exp $ */
 /*
  * Copyright (c) 2000 Japan Network Information Center.  All rights reserved.
  *  
@@ -8,8 +8,8 @@
  * 
  * The following License Terms and Conditions apply, unless a different
  * license is obtained from Japan Network Information Center ("JPNIC"),
- * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku,
- * Tokyo, Japan.
+ * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda,
+ * Chiyoda-ku, Tokyo 101-0047, Japan.
  * 
  * 1. Use, Modification and Redistribution (including distribution of any
  *    modified or derived work) in source and/or binary forms is permitted
index 6927a8dd29be8bfea1dab0a76d225048b7fe81bd..4c2ca2cecce942c3476802de0fca2994279c1eee 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: ucsmap.h,v 1.1 2001/06/09 00:30:06 tale Exp $ */
+/* $Id: ucsmap.h,v 1.2 2002/02/08 05:39:36 marka Exp $ */
 /*
  * Copyright (c) 2001 Japan Network Information Center.  All rights reserved.
  *  
@@ -8,8 +8,8 @@
  * 
  * The following License Terms and Conditions apply, unless a different
  * license is obtained from Japan Network Information Center ("JPNIC"),
- * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku,
- * Tokyo, Japan.
+ * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda,
+ * Chiyoda-ku, Tokyo 101-0047, Japan.
  * 
  * 1. Use, Modification and Redistribution (including distribution of any
  *    modified or derived work) in source and/or binary forms is permitted
index 548b66c09bac0173f8834c9d2db5e47b5e63a821..f1642a11a438845971c2758ef27bc6812eb33210 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: ucsset.h,v 1.1 2001/06/09 00:30:06 tale Exp $ */
+/* $Id: ucsset.h,v 1.2 2002/02/08 05:39:37 marka Exp $ */
 /*
  * Copyright (c) 2001 Japan Network Information Center.  All rights reserved.
  *  
@@ -8,8 +8,8 @@
  * 
  * The following License Terms and Conditions apply, unless a different
  * license is obtained from Japan Network Information Center ("JPNIC"),
- * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku,
- * Tokyo, Japan.
+ * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda,
+ * Chiyoda-ku, Tokyo 101-0047, Japan.
  * 
  * 1. Use, Modification and Redistribution (including distribution of any
  *    modified or derived work) in source and/or binary forms is permitted
index 7d7cc88dae8b4ec4cbe1c5658f4dd740a67b2857..b3a2b04019901410b4394bc3c950056e8ac888a0 100644 (file)
@@ -1,6 +1,7 @@
-/* $Id: unicode.h,v 1.10 2001/02/13 08:26:22 ishisone Exp $ */
+/* $Id: unicode.h,v 1.1 2002/01/02 02:46:35 marka Exp $ */
 /*
- * Copyright (c) 2000 Japan Network Information Center.  All rights reserved.
+ * Copyright (c) 2000,2001 Japan Network Information Center.
+ * All rights reserved.
  *  
  * By using this file, you agree to the terms and conditions set forth bellow.
  * 
@@ -8,8 +9,8 @@
  * 
  * The following License Terms and Conditions apply, unless a different
  * license is obtained from Japan Network Information Center ("JPNIC"),
- * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku,
- * Tokyo, Japan.
+ * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda,
+ * Chiyoda-ku, Tokyo 101-0047, Japan.
  * 
  * 1. Use, Modification and Redistribution (including distribution of any
  *    modified or derived work) in source and/or binary forms is permitted
 
 #include <mdn/result.h>
 
+/*
+ * A Handle for Unicode versions.
+ */
+typedef struct mdn__unicode_ops *mdn__unicode_version_t;
+
 /*
  * Context information for case conversion.
  */
@@ -81,6 +87,26 @@ typedef enum {
        mdn__unicode_context_nonfinal
 } mdn__unicode_context_t;
 
+/*
+ * Create a handle for a specific Unicode version.
+ * The version number (such as "3.0.1") is specified by 'version' parameter.
+ * If it is NULL, the latest version is used.
+ * The handle is stored in '*versionp', which is used various functions
+ * in this and unormalize modules.
+ *
+ * Returns:
+ *     mdn_success             -- ok.
+ *     mdn_notfound            -- specified version not found.
+ */
+extern mdn_result_t
+mdn__unicode_create(const char *version, mdn__unicode_version_t *versionp);
+
+/*
+ * Close a handle which was created by 'mdn__unicode_create'.
+ */
+extern void
+mdn__unicode_destroy(mdn__unicode_version_t version);
+
 /*
  * Get canonical class.
  *
@@ -88,7 +114,7 @@ typedef enum {
  * be returned.
  */
 extern int
-mdn__unicode_canonicalclass(unsigned long c);
+mdn__unicode_canonicalclass(mdn__unicode_version_t version, unsigned long c);
 
 /*
  * Decompose a character.
@@ -109,7 +135,8 @@ mdn__unicode_canonicalclass(unsigned long c);
  *     mdn_buffer_overflow     -- 'vlen' is too small.
  */
 extern mdn_result_t
-mdn__unicode_decompose(int compat, unsigned long *v, size_t vlen,
+mdn__unicode_decompose(mdn__unicode_version_t version,
+                      int compat, unsigned long *v, size_t vlen,
                       unsigned long c, int *decomp_lenp);
 
 /*
@@ -126,7 +153,8 @@ mdn__unicode_decompose(int compat, unsigned long *v, size_t vlen,
  *     mdn_notfound            -- no composition possible.
  */
 extern mdn_result_t
-mdn__unicode_compose(unsigned long c1, unsigned long c2, unsigned long *compp);
+mdn__unicode_compose(mdn__unicode_version_t version,
+                    unsigned long c1, unsigned long c2, unsigned long *compp);
 
 /*
  * Returns if there may be a canonical composition sequence which starts
@@ -138,7 +166,8 @@ mdn__unicode_compose(unsigned long c1, unsigned long c2, unsigned long *compp);
  *     0                       -- no, there is definitely no such sequences.
  */
 extern int
-mdn__unicode_iscompositecandidate(unsigned long c);
+mdn__unicode_iscompositecandidate(mdn__unicode_version_t version,
+                                 unsigned long c);
 
 /*
  * Translate lowercase character to uppercase, and vice versa, according
@@ -166,10 +195,12 @@ mdn__unicode_iscompositecandidate(unsigned long c);
  *     mdn_buffer_overflow     -- 'vlen' is too small.
  */
 extern mdn_result_t
-mdn__unicode_toupper(unsigned long c, mdn__unicode_context_t ctx,
+mdn__unicode_toupper(mdn__unicode_version_t version,
+                    unsigned long c, mdn__unicode_context_t ctx,
                     unsigned long *v, size_t vlen, int *convlenp);
 extern mdn_result_t
-mdn__unicode_tolower(unsigned long c, mdn__unicode_context_t ctx,
+mdn__unicode_tolower(mdn__unicode_version_t version,
+                    unsigned long c, mdn__unicode_context_t ctx,
                     unsigned long *v, size_t vlen, int *convlenp);
 
 /*
@@ -188,7 +219,7 @@ mdn__unicode_tolower(unsigned long c, mdn__unicode_context_t ctx,
  *                                        try the next character.
  */
 extern mdn__unicode_context_t
-mdn__unicode_getcontext(unsigned long c);
+mdn__unicode_getcontext(mdn__unicode_version_t version, unsigned long c);
 
 /*
  * Perform case-folding for caseless matching, defined by Unicode
@@ -205,7 +236,8 @@ mdn__unicode_getcontext(unsigned long c);
  *     mdn_buffer_overflow     -- 'vlen' is too small.
  */
 extern mdn_result_t
-mdn__unicode_casefold(unsigned long c, unsigned long *v, size_t vlen,
+mdn__unicode_casefold(mdn__unicode_version_t version,
+                     unsigned long c, unsigned long *v, size_t vlen,
                      int *foldlenp);
 
 #endif /* MDN_UNICODE_H */
index c5d2f3937027dd605c33a9ff22ee0245c62c5ef7..c67c629f06231d6e6b577a4f1ca2f6cebff77de5 100644 (file)
@@ -1,6 +1,7 @@
-/* $Id: unormalize.h,v 1.9 2000/08/02 02:06:41 ishisone Exp $ */
+/* $Id: unormalize.h,v 1.1 2002/01/02 02:46:36 marka Exp $ */
 /*
- * Copyright (c) 2000 Japan Network Information Center.  All rights reserved.
+ * Copyright (c) 2000,2001 Japan Network Information Center.
+ * All rights reserved.
  *  
  * By using this file, you agree to the terms and conditions set forth bellow.
  * 
@@ -8,8 +9,8 @@
  * 
  * The following License Terms and Conditions apply, unless a different
  * license is obtained from Japan Network Information Center ("JPNIC"),
- * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku,
- * Tokyo, Japan.
+ * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda,
+ * Chiyoda-ku, Tokyo 101-0047, Japan.
  * 
  * 1. Use, Modification and Redistribution (including distribution of any
  *    modified or derived work) in source and/or binary forms is permitted
  */
 
 #include <mdn/result.h>
+#include <mdn/unicode.h>
 
 /*
  * Perform Unicode Normalication Form C, D, KC and KD.
  *
  * They take NUL-terminated UTF-8 encoded string 'from', perform
- * the normalization, put the result (also a NUL-terminated UTF-8
- * encoded string) to 'to', which must be able to hold at least
- * 'tolen' bytes.
+ * the normalization specified by 'version', put the result
+ * (also a NUL-terminated UTF-8 encoded string) to 'to', which must be
+ * able to hold at least 'tolen' bytes.
  *
  * Returns:
  *     mdn_success             -- ok.
  *     mdn_buffer_overflow     -- 'tolen' is too small.
  */
 extern mdn_result_t
-mdn__unormalize_formc(const char *from, char *to, size_t tolen);
+mdn__unormalize_formc(mdn__unicode_version_t version,
+                     const char *from, char *to, size_t tolen);
 
 extern mdn_result_t
-mdn__unormalize_formd(const char *from, char *to, size_t tolen);
+mdn__unormalize_formd(mdn__unicode_version_t version,
+                     const char *from, char *to, size_t tolen);
 
 extern mdn_result_t
-mdn__unormalize_formkc(const char *from, char *to, size_t tolen);
+mdn__unormalize_formkc(mdn__unicode_version_t version,
+                      const char *from, char *to, size_t tolen);
 
 extern mdn_result_t
-mdn__unormalize_formkd(const char *from, char *to, size_t tolen);
+mdn__unormalize_formkd(mdn__unicode_version_t version,
+                      const char *from, char *to, size_t tolen);
 
 #endif /* MDN_UNORMALIZE_H */
index 79974720c9670e89566b62a5e601daf36764d2d0..72b09961ea37c8fe2dc98405ba6b5e6bd48abeed 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: utf5.h,v 1.7 2000/07/04 03:52:33 ishisone Exp $ */
+/* $Id: utf5.h,v 1.1 2002/01/02 02:46:36 marka Exp $ */
 /*
  * Copyright (c) 2000 Japan Network Information Center.  All rights reserved.
  *  
@@ -8,8 +8,8 @@
  * 
  * The following License Terms and Conditions apply, unless a different
  * license is obtained from Japan Network Information Center ("JPNIC"),
- * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku,
- * Tokyo, Japan.
+ * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda,
+ * Chiyoda-ku, Tokyo 101-0047, Japan.
  * 
  * 1. Use, Modification and Redistribution (including distribution of any
  *    modified or derived work) in source and/or binary forms is permitted
index 5fe17ffbcc2fda530885050b19b73b6fc1fd732d..1f268b1d325a5dffa5618138c577e818a17c2bf4 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: utf6.h,v 1.1 2001/06/09 00:30:08 tale Exp $ */
+/* $Id: utf6.h,v 1.2 2002/02/08 05:39:42 marka Exp $ */
 /*
  * Copyright (c) 2000 Japan Network Information Center.  All rights reserved.
  *  
@@ -8,8 +8,8 @@
  * 
  * The following License Terms and Conditions apply, unless a different
  * license is obtained from Japan Network Information Center ("JPNIC"),
- * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku,
- * Tokyo, Japan.
+ * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda,
+ * Chiyoda-ku, Tokyo 101-0047, Japan.
  * 
  * 1. Use, Modification and Redistribution (including distribution of any
  *    modified or derived work) in source and/or binary forms is permitted
index 48c090fbbac55cb9e2d9550d512f645adb840a06..8d12b0705852c8827b7feb3ad714dbe0a007d898 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: utf8.h,v 1.8 2000/08/14 07:26:59 ishisone Exp $ */
+/* $Id: utf8.h,v 1.1 2002/01/02 02:46:36 marka Exp $ */
 /*
  * Copyright (c) 2000 Japan Network Information Center.  All rights reserved.
  *  
@@ -8,8 +8,8 @@
  * 
  * The following License Terms and Conditions apply, unless a different
  * license is obtained from Japan Network Information Center ("JPNIC"),
- * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku,
- * Tokyo, Japan.
+ * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda,
+ * Chiyoda-ku, Tokyo 101-0047, Japan.
  * 
  * 1. Use, Modification and Redistribution (including distribution of any
  *    modified or derived work) in source and/or binary forms is permitted
index b9a4f1b245bc9b16ab3e55431a500e4350c4e763..3fdb5933bfd36210de15f5c1a4f9b95b85ffc256 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: util.h,v 1.5 2001/04/20 00:45:06 ishisone Exp $ */
+/* $Id: util.h,v 1.1 2002/01/02 02:46:37 marka Exp $ */
 /*
  * Copyright (c) 2000 Japan Network Information Center.  All rights reserved.
  *  
@@ -8,8 +8,8 @@
  * 
  * The following License Terms and Conditions apply, unless a different
  * license is obtained from Japan Network Information Center ("JPNIC"),
- * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku,
- * Tokyo, Japan.
+ * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda,
+ * Chiyoda-ku, Tokyo 101-0047, Japan.
  * 
  * 1. Use, Modification and Redistribution (including distribution of any
  *    modified or derived work) in source and/or binary forms is permitted
index 1ae78451f553f1e9684834e8c898b4d2339d2b81..f5fc3628ecd0d464c11a00f3f18996e245b68a40 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: version.h,v 1.1 2001/06/09 00:30:09 tale Exp $ */
+/* $Id: version.h,v 1.2 2002/02/08 05:39:46 marka Exp $ */
 /*
  * Copyright (c) 2001 Japan Network Information Center.  All rights reserved.
  *  
@@ -8,8 +8,8 @@
  * 
  * The following License Terms and Conditions apply, unless a different
  * license is obtained from Japan Network Information Center ("JPNIC"),
- * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku,
- * Tokyo, Japan.
+ * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda,
+ * Chiyoda-ku, Tokyo 101-0047, Japan.
  * 
  * 1. Use, Modification and Redistribution (including distribution of any
  *    modified or derived work) in source and/or binary forms is permitted
@@ -63,9 +63,9 @@
 /*
  * Version number of this package.
  */
-#define MDNKIT_VERSION         "2.1"
+#define MDNKIT_VERSION         "2.2.3"
 #define MDNKIT_MAJOR_VERSION   2
-#define MDNKIT_MINOR_VERSION   1
+#define MDNKIT_MINOR_VERSION   2
 
 /*
  * Get the version of the library (libmdn).
index c23df94861adf5641f9e7a547bd6c30f94c194dc..c19a96c58c64305b89668e858c288249ed27976f 100644 (file)
@@ -1,4 +1,4 @@
-# $Id: Makefile.in,v 1.48 2001/05/22 03:00:23 m-kasahr Exp $
+# $Id: Makefile.in,v 1.1 2002/01/02 02:46:37 marka Exp $
 # Copyright (c) 2000 Japan Network Information Center.  All rights reserved.
 #  
 # By using this file, you agree to the terms and conditions set forth bellow.
@@ -7,8 +7,8 @@
 # 
 # The following License Terms and Conditions apply, unless a different
 # license is obtained from Japan Network Information Center ("JPNIC"),
-# a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku,
-# Tokyo, Japan.
+# a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda,
+# Chiyoda-ku, Tokyo 101-0047, Japan.
 # 
 # 1. Use, Modification and Redistribution (including distribution of any
 #    modified or derived work) in source and/or binary forms is permitted
@@ -56,7 +56,7 @@
 #    jurisdiction and venue of Tokyo District Court of Japan.
 
 LIB_CURRENT = 7
-LIB_REVISION = 0
+LIB_REVISION = 3
 LIB_AGE = 0
 
 .SUFFIXES: .lo
@@ -85,21 +85,25 @@ MKINSTALLDIRS = @top_srcdir@/mkinstalldirs
 SHELL = @SHELL@
 LIBTOOL = @LIBTOOL@
 
+ICONVINC = @ICONVINC@
+ICONVLIB = @ICONVLIB@
+
 OPTS =
-INCS = -I$(srcdir)/../include -I../include
+INCS = -I$(srcdir)/../include -I../include $(ICONVINC)
 DEFS = -DMDN_RESCONF_DIR="\"$(sysconfdir)\""
 
 CFLAGS = $(OPTS) $(INCS) $(DEFS) @CFLAGS@
 LDFLAGS = @LDFLAGS@
 
-ICONVLIB = @ICONVLIB@
-
 SRCS =  \
        ace.c \
        altdude.c \
        amcacem.c \
        amcaceo.c \
        amcacer.c \
+       amcacev.c \
+       amcacew.c \
+       amcacez.c \
        api.c \
        brace.c \
        checker.c \
@@ -113,6 +117,7 @@ SRCS =  \
        lace.c \
        localencoding.c \
        log.c \
+       mace.c \
        mapper.c \
        mapselector.c \
        msgheader.c \
@@ -130,7 +135,9 @@ SRCS =  \
        ucsmap.c \
        ucsset.c \
        unicode.c \
-       unicodedata.c \
+       unicode_template.c \
+       unicodedata_301.c \
+       unicodedata_310.c \
        unormalize.c \
        utf5.c \
        utf6.c \
@@ -144,6 +151,9 @@ OBJS =  \
        amcacem.lo \
        amcaceo.lo \
        amcacer.lo \
+       amcacev.lo \
+       amcacew.lo \
+       amcacez.lo \
        api.lo \
        brace.lo \
        checker.lo \
@@ -157,6 +167,7 @@ OBJS =  \
        lace.lo \
        localencoding.lo \
        log.lo \
+       mace.lo \
        mapper.lo \
        mapselector.lo \
        msgheader.lo \
index cc79390daa1c2a5a62876c16e8a7a81594b00d5b..1615e03203fc9c31cca7f1128d7907ca580f1a8c 100644 (file)
@@ -1,5 +1,5 @@
 #ifndef lint
-static char *rcsid = "$Id: ace.c,v 1.1 2001/06/09 00:30:12 tale Exp $";
+static char *rcsid = "$Id: ace.c,v 1.2 2002/02/08 05:39:49 marka Exp $";
 #endif
 
 /*
@@ -12,8 +12,8 @@ static char *rcsid = "$Id: ace.c,v 1.1 2001/06/09 00:30:12 tale Exp $";
  * 
  * The following License Terms and Conditions apply, unless a different
  * license is obtained from Japan Network Information Center ("JPNIC"),
- * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku,
- * Tokyo, Japan.
+ * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda,
+ * Chiyoda-ku, Tokyo 101-0047, Japan.
  * 
  * 1. Use, Modification and Redistribution (including distribution of any
  *    modified or derived work) in source and/or binary forms is permitted
index dabe0c1caf8d2ada08bbbc4c797103cf63286e62..5664d7388cf63be818a98cf33c17c9a35f8ed6b2 100644 (file)
@@ -1,5 +1,5 @@
 #ifndef lint
-static char *rcsid = "$Id: altdude.c,v 1.1 2001/06/09 00:30:12 tale Exp $";
+static char *rcsid = "$Id: altdude.c,v 1.2 2002/02/08 05:39:50 marka Exp $";
 #endif
 
 /*
@@ -12,8 +12,8 @@ static char *rcsid = "$Id: altdude.c,v 1.1 2001/06/09 00:30:12 tale Exp $";
  * 
  * The following License Terms and Conditions apply, unless a different
  * license is obtained from Japan Network Information Center ("JPNIC"),
- * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku,
- * Tokyo, Japan.
+ * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda,
+ * Chiyoda-ku, Tokyo 101-0047, Japan.
  * 
  * 1. Use, Modification and Redistribution (including distribution of any
  *    modified or derived work) in source and/or binary forms is permitted
index d0f1fc1090d603f1b00049f1aa581a2be95672d9..191c3e8a9d4b488cb5a98561cfbf3a5220b40f8c 100644 (file)
@@ -1,5 +1,5 @@
 #ifndef lint
-static char *rcsid = "$Id: amcacem.c,v 1.1 2001/06/09 00:30:12 tale Exp $";
+static char *rcsid = "$Id: amcacem.c,v 1.2 2002/02/08 05:39:51 marka Exp $";
 #endif
 
 /*
@@ -12,8 +12,8 @@ static char *rcsid = "$Id: amcacem.c,v 1.1 2001/06/09 00:30:12 tale Exp $";
  * 
  * The following License Terms and Conditions apply, unless a different
  * license is obtained from Japan Network Information Center ("JPNIC"),
- * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku,
- * Tokyo, Japan.
+ * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda,
+ * Chiyoda-ku, Tokyo 101-0047, Japan.
  * 
  * 1. Use, Modification and Redistribution (including distribution of any
  *    modified or derived work) in source and/or binary forms is permitted
index 1882c40ac396cf4c4c771570085c5b408ff299cd..1285b2c9b76e24918ee45b0b940fa73cb296b9b9 100644 (file)
@@ -1,5 +1,5 @@
 #ifndef lint
-static char *rcsid = "$Id: amcaceo.c,v 1.1 2001/06/09 00:30:12 tale Exp $";
+static char *rcsid = "$Id: amcaceo.c,v 1.2 2002/02/08 05:39:53 marka Exp $";
 #endif
 
 /*
@@ -12,8 +12,8 @@ static char *rcsid = "$Id: amcaceo.c,v 1.1 2001/06/09 00:30:12 tale Exp $";
  * 
  * The following License Terms and Conditions apply, unless a different
  * license is obtained from Japan Network Information Center ("JPNIC"),
- * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku,
- * Tokyo, Japan.
+ * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda,
+ * Chiyoda-ku, Tokyo 101-0047, Japan.
  * 
  * 1. Use, Modification and Redistribution (including distribution of any
  *    modified or derived work) in source and/or binary forms is permitted
index a8cd8ebb98c42a5313dea0805ddb19fe527e74b3..937e81b7a5e59a3681939dfc6b147369f03eeb1b 100644 (file)
@@ -1,5 +1,5 @@
 #ifndef lint
-static char *rcsid = "$Id: amcacer.c,v 1.1 2001/06/09 00:30:12 tale Exp $";
+static char *rcsid = "$Id: amcacer.c,v 1.2 2002/02/08 05:39:54 marka Exp $";
 #endif
 
 /*
@@ -12,8 +12,8 @@ static char *rcsid = "$Id: amcacer.c,v 1.1 2001/06/09 00:30:12 tale Exp $";
  * 
  * The following License Terms and Conditions apply, unless a different
  * license is obtained from Japan Network Information Center ("JPNIC"),
- * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku,
- * Tokyo, Japan.
+ * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda,
+ * Chiyoda-ku, Tokyo 101-0047, Japan.
  * 
  * 1. Use, Modification and Redistribution (including distribution of any
  *    modified or derived work) in source and/or binary forms is permitted
@@ -78,7 +78,7 @@ static char *rcsid = "$Id: amcacer.c,v 1.1 2001/06/09 00:30:12 tale Exp $";
 #include <mdn/util.h>
 
 /*
- * Although draft-ietf-idn-amc-ace-r-00.txt doesn't specify the ACE
+ * Although draft-ietf-idn-amc-ace-r-01.txt doesn't specify the ACE
  * signature, we have to choose one.  In order to prevent the converted
  * name from beginning with a hyphen, we should choose a prefix rather
  * than a suffix.
@@ -87,14 +87,16 @@ static char *rcsid = "$Id: amcacer.c,v 1.1 2001/06/09 00:30:12 tale Exp $";
 #define MDN_AMCACER_PREFIX     "amc3-"
 #endif
 
-#define UCSBUF_LOCAL_SIZE      40
+#define MAX_UCS                0x10FFFF
+#define AMCACER_BUFSIZE        64
 
-typedef struct ucsbuf {
-       unsigned long *ucs;
-       size_t size;
-       size_t len;
-       unsigned long local[UCSBUF_LOCAL_SIZE];
-} ucsbuf_t;
+typedef struct {
+       unsigned long *history;
+       unsigned long local_buf[AMCACER_BUFSIZE];
+       int history_len;
+       unsigned long refpoint[6];
+       int updated;
+} amcacer_encode_ctx;
 
 static const char *base32encode = "abcdefghijkmnpqrstuvwxyz23456789";
 static const int base32decode_ascii[26] = {
@@ -109,21 +111,14 @@ static mdn_result_t       amcacer_decode(const char *from, size_t fromlen,
                                    char *to, size_t tolen);
 static mdn_result_t    amcacer_encode(const char *from, size_t fromlen,
                                    char *to, size_t tolen);
-static void            amcacer_update_refpoints(unsigned long *refpoint,
-                                                unsigned long *history,
-                                                int n);
+static mdn_result_t    amcacer_init_ctx(amcacer_encode_ctx *ctx, size_t len);
+static void            amcacer_free_ctx(amcacer_encode_ctx *ctx);
+static void            amcacer_update_refpoints(amcacer_encode_ctx *ctx,
+                                                unsigned long c);
 static int             amcacer_getwc(const char *s, size_t len,
                                      unsigned long *vp);
 static int             amcacer_putwc(char *s, size_t len,
                                      unsigned long v, int w);
-
-static mdn_result_t    utf8_to_ucs4(const char *utf8, size_t fromlen,
-                                    ucsbuf_t *b);
-static mdn_result_t    ucs4_to_utf8(ucsbuf_t *b, char *utf8, size_t ulen);
-static void            ucsbuf_init(ucsbuf_t *b);
-static mdn_result_t    ucsbuf_grow(ucsbuf_t *b);
-static mdn_result_t    ucsbuf_append(ucsbuf_t *b, unsigned long v);
-static void            ucsbuf_free(ucsbuf_t *b);
 static int             is_ldh(unsigned long v);
 
 static mdn__ace_t amcacer_ctx = {
@@ -139,7 +134,7 @@ static mdn__ace_t amcacer_ctx = {
 };
 
 static const unsigned long amcacer_refpoint_initial[6] = {
-       0, 0x60, 0, 0, 0, 0x10000,
+       0, 0xe0, 0xa0, 0, 0, 0x10000,
 };
 
 
@@ -184,17 +179,18 @@ mdn__amcacer_convert(mdn_converter_t ctx, void *privdata,
 
 static mdn_result_t
 amcacer_decode(const char *from, size_t fromlen, char *to, size_t tolen) {
-       size_t len;
-       unsigned long refpoint[6], v;
-       ucsbuf_t ucsb;
        int literal_mode = 0;
+       amcacer_encode_ctx ctx;
        mdn_result_t r;
 
-       (void)memcpy(refpoint, amcacer_refpoint_initial, sizeof(refpoint));
-
-       ucsbuf_init(&ucsb);
+       /* Initialize context. */
+       if ((r = amcacer_init_ctx(&ctx, fromlen)) != mdn_success)
+               return (r);
 
        while (fromlen > 0) {
+               size_t len;
+               unsigned long v;
+
                if (from[0] == '-') {
                        if (fromlen > 1 && from[1] == '-') {
                                v = '-';
@@ -218,58 +214,66 @@ amcacer_decode(const char *from, size_t fromlen, char *to, size_t tolen) {
                        }
                        from += len;
                        fromlen -= len;
-                       v = refpoint[len] + v;
+                       v = ctx.refpoint[len] + v;
+                       amcacer_update_refpoints(&ctx, v);
                }
-               if ((r = ucsbuf_append(&ucsb, v)) != mdn_success)
-                       goto finish;
-               amcacer_update_refpoints(refpoint, ucsb.ucs, ucsb.len - 1);
+               len = mdn_utf8_putwc(to, tolen, v);
+               if (len == 0)
+                       goto overflow;
+               to += len;
+               tolen -= len;
        }
 
-       r = ucs4_to_utf8(&ucsb, to, tolen);
- finish:
-       ucsbuf_free(&ucsb);
+       /*
+        * Terminate with NUL.
+        */
+       if (tolen <= 0)
+               goto overflow;
+       *to = '\0';
 
+ finish:
+       amcacer_free_ctx(&ctx);
        return (r);
+
+ overflow:
+       r = mdn_buffer_overflow;
+       goto finish;
 }
 
 static mdn_result_t
 amcacer_encode(const char *from, size_t fromlen, char *to, size_t tolen) {
-       ucsbuf_t ucsb;
-       unsigned long *buf;
-       size_t len;
        int literal_mode = 0;
-       unsigned long refpoint[6];
+       amcacer_encode_ctx ctx;
        mdn_result_t r;
-       int i;
 
-       /* Initialize refpoints. */
-       (void)memcpy(refpoint, amcacer_refpoint_initial, sizeof(refpoint));
-
-       /*
-        * Convert input string to UCS-4.
-        */
-       ucsbuf_init(&ucsb);
-       if ((r = utf8_to_ucs4(from, fromlen, &ucsb)) != mdn_success)
+       /* Initialize context. */
+       if ((r = amcacer_init_ctx(&ctx, fromlen)) != mdn_success)
                return (r);
 
-       buf = ucsb.ucs;
-       len = ucsb.len;
+       while (fromlen > 0) {
+               unsigned long c;
+               size_t len;
 
-       /*
-        * Now 'buf' contains UCS-4 string consisting of 'len' characters.
-        */
+               len = mdn_utf8_getwc(from, fromlen, &c);
+               from += len;
+               fromlen -= len;
 
-       for (i = 0; i < len; i++) {
-               if (buf[i] == '-') {
+               if (len == 0 || c >= MAX_UCS) {
+                       /*
+                        * Invalid Unicode code point.
+                        */
+                       r = mdn_invalid_encoding;
+                       goto ret;
+               } else if (c == '-') {
                        /*
                         * Convert "-" to "--".
                         */
                        if (tolen < 2)
-                               return (mdn_buffer_overflow);
+                               goto overflow;
                        to[0] = to[1] = '-';
                        to += 2;
                        tolen -= 2;
-               } else if (is_ldh(buf[i])) {
+               } else if (is_ldh(c)) {
                        /*
                         * LDH characters.
                         */
@@ -285,12 +289,13 @@ amcacer_encode(const char *from, size_t fromlen, char *to, size_t tolen) {
                        }
                        if (tolen < 1)
                                goto overflow;
-                       *to++ = buf[i];
+                       *to++ = c;
                        tolen--;
                } else {
                        /*
                         * Non-LDH characters.
                         */
+                       unsigned long *refpoint = ctx.refpoint;
                        int k;
 
                        if (literal_mode != 0) {
@@ -304,17 +309,16 @@ amcacer_encode(const char *from, size_t fromlen, char *to, size_t tolen) {
                                literal_mode = 0;
                        }
                        for (k = 1; k < 6; k++) {
-                               if (buf[i] >= refpoint[k] &&
-                                   buf[i] - refpoint[k] < (1 << (4 * k)))
+                               if (c >= refpoint[k] &&
+                                   c - refpoint[k] < (1 << (4 * k)))
                                        break;
                        }
-                       k = amcacer_putwc(to, tolen, buf[i] - refpoint[k],
-                                           k);
+                       k = amcacer_putwc(to, tolen, c - refpoint[k], k);
                        if (k == 0)
                                goto overflow;
                        to += k;
                        tolen -= k;
-                       amcacer_update_refpoints(refpoint, buf, i);
+                       amcacer_update_refpoints(&ctx, c);
                }
        }
 
@@ -322,30 +326,56 @@ amcacer_encode(const char *from, size_t fromlen, char *to, size_t tolen) {
         * Terminate with NUL.
         */
        if (tolen <= 0)
-               return (mdn_buffer_overflow);
+               goto overflow;
 
        *to = '\0';
+       r = mdn_success;
+ ret:
+       amcacer_free_ctx(&ctx);
+       return (r);
+
+ overflow:
+       r = mdn_buffer_overflow;
+       goto ret;
+}
 
-       ucsbuf_free(&ucsb);
+static mdn_result_t
+amcacer_init_ctx(amcacer_encode_ctx *ctx, size_t len) {
+       if (len > AMCACER_BUFSIZE) {
+               ctx->history = malloc(sizeof(ctx->history[0]) * len);
+               if (ctx->history == NULL)
+                       return (mdn_nomemory);
+       } else {
+               ctx->history = ctx->local_buf;
+       }
+       ctx->history_len = 0;
+       (void)memcpy(ctx->refpoint, amcacer_refpoint_initial,
+                    sizeof(ctx->refpoint));
+       ctx->updated = 0;
        return (mdn_success);
+}
 
- overflow:
-       ucsbuf_free(&ucsb);
-       return (mdn_buffer_overflow);
+static void
+amcacer_free_ctx(amcacer_encode_ctx *ctx) {
+       if (ctx->history != ctx->local_buf)
+               free(ctx->history);
+       ctx->history = NULL;
 }
 
 static void
-amcacer_update_refpoints(unsigned long *refpoint,
-                        unsigned long *history, int n)
-{
+amcacer_update_refpoints(amcacer_encode_ctx *ctx, unsigned long c) {
+       unsigned long *refpoint = ctx->refpoint;
+       unsigned long *history = ctx->history;
        int k;
-       unsigned long lastchar = history[n];
+
+       history[ctx->history_len++] = c;
 
 #define MAX_K(k)       (1 << (4 * (k)))
 #define ROUND_K(v, k)  (((v) >> (4 * (k))) << (4 * (k)))
-       if (n == 0) {
+       if (!ctx->updated) {
                for (k = 1; k < 4; k++)
-                       refpoint[k] = ROUND_K(lastchar, k);
+                       refpoint[k] = ROUND_K(c, k);
+               ctx->updated = 1;
                return;
        }
 
@@ -353,13 +383,11 @@ amcacer_update_refpoints(unsigned long *refpoint,
                unsigned long max = MAX_K(k);
                int i;
 
-               for (i = n - 1; i >= 0; i--) {
-                       if (is_ldh(history[i]))
-                               continue;
+               for (i = ctx->history_len - 2; i >= 0; i--) {
                        if ((refpoint[k] ^ history[i]) < max)
                                break;
-                       if ((lastchar ^ history[i]) < max) {
-                               refpoint[k] = ROUND_K(lastchar, k);
+                       if ((c ^ history[i]) < max) {
+                               refpoint[k] = ROUND_K(c, k);
                                return;
                        }
                }
@@ -411,88 +439,6 @@ amcacer_putwc(char *s, size_t len, unsigned long v, int w) {
        return (w);
 }
 
-/*
- * Common Utility Functions.
- */
-
-static mdn_result_t
-utf8_to_ucs4(const char *utf8, size_t fromlen, ucsbuf_t *b) {
-       mdn_result_t r;
-
-       while (fromlen > 0) {
-               unsigned long c;
-               int w;
-
-               if ((w = mdn_utf8_getwc(utf8, fromlen, &c)) == 0)
-                       return (mdn_invalid_encoding);
-               utf8 += w;
-               fromlen -= w;
-
-               if ((r = ucsbuf_append(b, c)) != mdn_success)
-                       return (r);
-       }
-       return (mdn_success);
-}
-
-static mdn_result_t
-ucs4_to_utf8(ucsbuf_t *b, char *utf8, size_t ulen) {
-       unsigned long *s = b->ucs;
-       size_t len = b->len;
-       int i;
-
-       for (i = 0; i < len; i++) {
-               int w = mdn_utf8_putwc(utf8, ulen, s[i]);
-
-               if (w == 0)
-                       return (mdn_buffer_overflow);
-               utf8 += w;
-               ulen -= w;
-       }
-       if (ulen < 1)
-               return (mdn_buffer_overflow);
-       *utf8 = '\0';
-       return (mdn_success);
-}
-
-static void
-ucsbuf_init(ucsbuf_t *b) {
-       b->ucs = b->local;
-       b->size = UCSBUF_LOCAL_SIZE;
-       b->len = 0;
-}
-
-static mdn_result_t
-ucsbuf_grow(ucsbuf_t *b) {
-       if (b->ucs == b->local)
-               b->ucs = NULL;
-       b->size *= 2;
-       b->ucs = realloc(b->ucs, sizeof(unsigned long) * b->size);
-       if (b->ucs == NULL)
-               return (mdn_nomemory);
-       return (mdn_success);
-}
-
-static mdn_result_t
-ucsbuf_append(ucsbuf_t *b, unsigned long v) {
-       mdn_result_t r;
-
-       if (b->len + 1 > b->size) {
-               r = ucsbuf_grow(b);
-               if (r != mdn_success)
-                       return (r);
-       }
-       b->ucs[b->len++] = v;
-       return (mdn_success);
-}
-
-static void
-ucsbuf_free(ucsbuf_t *b) {
-       if (b->ucs != b->local) {
-               free(b->ucs);
-               b->ucs = b->local;
-       }
-}
-
 static int
 is_ldh(unsigned long v) {
        if (('a' <= v && v <= 'z') || ('A' <= v && v <= 'Z') ||
diff --git a/contrib/idn/mdnkit/lib/amcacev.c b/contrib/idn/mdnkit/lib/amcacev.c
new file mode 100644 (file)
index 0000000..4bd5003
--- /dev/null
@@ -0,0 +1,545 @@
+#ifndef lint
+static char *rcsid = "$Id: amcacev.c,v 1.1 2002/02/08 05:39:56 marka Exp $";
+#endif
+
+/*
+ * Copyright (c) 2001 Japan Network Information Center.
+ * All rights reserved.
+ *  
+ * By using this file, you agree to the terms and conditions set forth bellow.
+ * 
+ *                     LICENSE TERMS AND CONDITIONS 
+ * 
+ * The following License Terms and Conditions apply, unless a different
+ * license is obtained from Japan Network Information Center ("JPNIC"),
+ * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda,
+ * Chiyoda-ku, Tokyo 101-0047, Japan.
+ * 
+ * 1. Use, Modification and Redistribution (including distribution of any
+ *    modified or derived work) in source and/or binary forms is permitted
+ *    under this License Terms and Conditions.
+ * 
+ * 2. Redistribution of source code must retain the copyright notices as they
+ *    appear in each source code file, this License Terms and Conditions.
+ * 
+ * 3. Redistribution in binary form must reproduce the Copyright Notice,
+ *    this License Terms and Conditions, in the documentation and/or other
+ *    materials provided with the distribution.  For the purposes of binary
+ *    distribution the "Copyright Notice" refers to the following language:
+ *    "Copyright (c) Japan Network Information Center.  All rights reserved."
+ * 
+ * 4. Neither the name of JPNIC may be used to endorse or promote products
+ *    derived from this Software without specific prior written approval of
+ *    JPNIC.
+ * 
+ * 5. Disclaimer/Limitation of Liability: THIS SOFTWARE IS PROVIDED BY JPNIC
+ *    "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ *    LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+ *    PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL JPNIC BE LIABLE
+ *    FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ *    CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ *    SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+ *    BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ *    WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ *    OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ *    ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+ * 
+ * 6. Indemnification by Licensee
+ *    Any person or entities using and/or redistributing this Software under
+ *    this License Terms and Conditions shall defend indemnify and hold
+ *    harmless JPNIC from and against any and all judgements damages,
+ *    expenses, settlement liabilities, cost and other liabilities of any
+ *    kind as a result of use and redistribution of this Software or any
+ *    claim, suite, action, litigation or proceeding by any third party
+ *    arising out of or relates to this License Terms and Conditions.
+ * 
+ * 7. Governing Law, Jurisdiction and Venue
+ *    This License Terms and Conditions shall be governed by and and
+ *    construed in accordance with the law of Japan. Any person or entities
+ *    using and/or redistributing this Software under this License Terms and
+ *    Conditions hereby agrees and consent to the personal and exclusive
+ *    jurisdiction and venue of Tokyo District Court of Japan.
+ */
+
+#include <config.h>
+
+#include <stddef.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include <mdn/result.h>
+#include <mdn/assert.h>
+#include <mdn/logmacro.h>
+#include <mdn/converter.h>
+#include <mdn/utf8.h>
+#include <mdn/debug.h>
+#include <mdn/amcacev.h>
+#include <mdn/ace.h>
+#include <mdn/util.h>
+
+/*
+ * Although draft-ietf-idn-amc-ace-v-00.txt doesn't specify the ACE
+ * signature, we have to choose one.  In order to prevent the converted
+ * name from beginning with a hyphen, we should choose a prefix rather
+ * than a suffix.
+ */
+#if !defined(MDN_AMCACEV_PREFIX) && !defined(MDN_AMCACEV_SUFFIX)
+#define MDN_AMCACEV_PREFIX     "amc4-"
+#endif
+
+#define MAX_UCS                0x10FFFF
+#define AMCACEV_BUFSIZE        64
+
+typedef struct {
+       unsigned long *history;         /* history of non-LDH characters */
+       unsigned long local_buf[AMCACEV_BUFSIZE];
+       int cur;                        /* current index */
+       int style;                      /* 0 or 1 */
+       unsigned long refpoint[2][6];   /* refpoint[0] is not used. */
+} amcacev_ctx;
+
+#define IN_WINDOW(ctx, c, st, win) \
+       ((c) >= (ctx)->refpoint[st][win] && \
+        ((c) - (ctx)->refpoint[st][win]) <= amcacev_winsize[st][win])
+
+static const unsigned long amcacev_refpoint_initial[2][6] = {
+       { 0, 0xe0, 0xa0, 0, 0, 0x10000 },
+       { 0,    0,    0, 0, 0, 0x10000 },
+};
+static const unsigned long amcacev_winsize[2][6] = {
+       { 0, 0xf, 0xff,  0xfff, 0xffff, 0xfffff },
+       { 0,   0, 0xff, 0x4fff, 0xffff, 0xfffff },
+};
+
+static const char *base32encode = "abcdefghijkmnpqrstuvwxyz23456789";
+static const int base32decode_ascii[26] = {
+       0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, -1, 11, 12, -1, 13, 14, 15,
+       16, 17, 18, 19, 20, 21, 22, 23,
+};
+static const int base32decode_digit[10] = {
+       -1, -1, 24, 25, 26, 27, 28, 29, 30, 31,
+};
+
+static mdn_result_t    amcacev_decode(const char *from, size_t fromlen,
+                                      char *to, size_t tolen);
+static mdn_result_t    amcacev_encode(const char *from, size_t fromlen,
+                                      char *to, size_t tolen);
+static mdn_result_t    init_ctx(amcacev_ctx *ctx, size_t len);
+static void            release_ctx(amcacev_ctx *ctx);
+static void            update_ctx(amcacev_ctx *ctx, unsigned long v);
+static unsigned long   get_refpoint(unsigned long v, int st, int win);
+static int             eval_compression(amcacev_ctx *ctx);
+static unsigned long   encode_delta(unsigned long v,
+                                    amcacev_ctx *ctx, int *szp);
+static int             amcacev_getwc(const char *s, size_t len, int style,
+                                     unsigned long *vp);
+static int             amcacev_putwc(char *s, size_t len,
+                                     unsigned long delta, int w);
+static int             is_ldh(unsigned long v);
+
+static mdn__ace_t amcacev_profile = {
+#ifdef MDN_AMCACEV_PREFIX
+       mdn__ace_prefix,
+       MDN_AMCACEV_PREFIX,
+#else
+       mdn__ace_suffix,
+       MDN_AMCACEV_SUFFIX,
+#endif
+       amcacev_encode,
+       amcacev_decode,
+};
+
+
+
+/* ARGSUSED */
+mdn_result_t
+mdn__amcacev_open(mdn_converter_t ctx, mdn_converter_dir_t dir,
+                 void **privdata)
+{
+       return (mdn_success);
+}
+
+/* ARGSUSED */
+mdn_result_t
+mdn__amcacev_close(mdn_converter_t ctx, void *privdata,
+                  mdn_converter_dir_t dir)
+{
+       return (mdn_success);
+}
+
+mdn_result_t
+mdn__amcacev_convert(mdn_converter_t ctx, void *privdata,
+                    mdn_converter_dir_t dir,
+                    const char *from, char *to, size_t tolen)
+{
+       mdn_result_t r;
+
+       assert(ctx != NULL &&
+              (dir == mdn_converter_l2u || dir == mdn_converter_u2l));
+
+       TRACE(("mdn__amcacev_convert(dir=%s,from=\"%s\")\n",
+              dir == mdn_converter_l2u ? "l2u" : "u2l",
+              mdn_debug_xstring(from, 20)));
+
+       r = mdn__ace_convert(&amcacev_profile, dir, from, to, tolen);
+       if (r != mdn_success)
+               return (r);
+
+       DUMP(("mdn__amcacev_convert: \"%s\"\n", mdn_debug_xstring(to, 70)));
+
+       return (r);
+}
+
+static mdn_result_t
+amcacev_decode(const char *from, size_t fromlen, char *to, size_t tolen) {
+       int literal_mode = 0;
+       amcacev_ctx ctx;
+       mdn_result_t r;
+
+       /* Initialize context. */
+       if ((r = init_ctx(&ctx, fromlen)) != mdn_success)
+               return (r);
+
+       while (fromlen > 0) {
+               unsigned long v;
+               int len;
+
+               if (from[0] == '-') {
+                       if (fromlen > 1 && from[1] == '-') {
+                               v = '-';
+                               from += 2;
+                               fromlen -= 2;
+                       } else {
+                               literal_mode = !literal_mode;
+                               from++;
+                               fromlen--;
+                               continue;
+                       }
+               } else if (literal_mode) {
+                       v = from[0];
+                       from++;
+                       fromlen--;
+               } else {
+                       len = amcacev_getwc(from, fromlen, ctx.style, &v);
+                       if (len == 0)
+                               goto invalid_encoding;
+                       from += len;
+                       fromlen -= len;
+
+                       v += ctx.refpoint[ctx.style][len];
+
+                       /* Update refpoints. */
+                       update_ctx(&ctx, v);
+               }
+
+               len = mdn_utf8_putwc(to, tolen, v);
+               if (len == 0)
+                       goto overflow;
+               to += len;
+               tolen -= len;
+       }
+
+       /*
+        * Terminate with NUL.
+        */
+       if (tolen <= 0)
+               goto overflow;
+       *to = '\0';
+
+ ret:
+       release_ctx(&ctx);
+       return (r);
+
+ invalid_encoding:
+       r = mdn_invalid_encoding;
+       goto ret;
+ overflow:
+       r = mdn_buffer_overflow;
+       goto ret;
+}
+
+static mdn_result_t
+amcacev_encode(const char *from, size_t fromlen, char *to, size_t tolen) {
+       int literal_mode = 0;
+       amcacev_ctx ctx;
+       mdn_result_t r;
+
+       /* Initialize context. */
+       if ((r = init_ctx(&ctx, fromlen)) != mdn_success)
+               return (r);
+
+       while (fromlen > 0) {
+               unsigned long c;
+               size_t len;
+
+               len = mdn_utf8_getwc(from, fromlen, &c);
+               from += len;
+               fromlen -= len;
+               if (len == 0)
+                       goto invalid_encoding;
+
+               if (c >= MAX_UCS) {
+                       /*
+                        * Invalid Unicode code point.
+                        */
+                       goto invalid_encoding;
+               } else if (c == '-') {
+                       /*
+                        * Convert "-" to "--".
+                        */
+                       if (tolen < 2)
+                               goto overflow;
+                       to[0] = to[1] = '-';
+                       to += 2;
+                       tolen -= 2;
+               } else if (is_ldh(c)) {
+                       /*
+                        * LDH characters.
+                        */
+                       if (literal_mode == 0) {
+                               /*
+                                * Go into literal mode.
+                                */
+                               if (tolen < 1)
+                                       goto overflow;
+                               *to++ = '-';
+                               tolen--;
+                               literal_mode = 1;
+                       }
+                       if (tolen < 1)
+                               goto overflow;
+                       *to++ = c;
+                       tolen--;
+               } else {
+                       /*
+                        * Non-LDH characters.
+                        */
+                       int sz;
+                       unsigned long delta;
+
+                       if (literal_mode != 0) {
+                               /*
+                                * Get out of literal mode.
+                                */
+                               if (tolen < 1)
+                                       goto overflow;
+                               *to++ = '-';
+                               tolen--;
+                               literal_mode = 0;
+                       }
+                       delta = encode_delta(c, &ctx, &sz);
+                       sz = amcacev_putwc(to, tolen, delta, sz);
+                       if (sz == 0)
+                               goto overflow;
+                       to += sz;
+                       tolen -= sz;
+
+                       /* Add to the history, and update refpoints. */
+                       update_ctx(&ctx, c);
+               }
+       }
+
+       /*
+        * Terminate with NUL.
+        */
+       if (tolen <= 0)
+               goto overflow;
+
+       *to = '\0';
+
+ ret:
+       release_ctx(&ctx);
+       return (r);
+
+ invalid_encoding:
+       r = mdn_invalid_encoding;
+       goto ret;
+ overflow:
+       r = mdn_buffer_overflow;
+       goto ret;
+}
+
+static mdn_result_t
+init_ctx(amcacev_ctx *ctx, size_t len) {
+       if (len <= AMCACEV_BUFSIZE) {
+               ctx->history = ctx->local_buf;
+       } else {
+               ctx->history = malloc(sizeof(ctx->history[0]) * len);
+               if (ctx->history == NULL)
+                       return (mdn_nomemory);
+       }
+       ctx->cur = 0;
+       ctx->style = 0;
+       (void)memcpy(ctx->refpoint, amcacev_refpoint_initial,
+                    sizeof(ctx->refpoint));
+       return (mdn_success);
+}
+
+static void
+release_ctx(amcacev_ctx *ctx) {
+       if (ctx->history != ctx->local_buf)
+               free(ctx->history);
+       ctx->history = NULL;
+}
+
+static void
+update_ctx(amcacev_ctx *ctx, unsigned long v) {
+       int st, win;
+
+       /* Get style */
+       if (IN_WINDOW(ctx, v, 0, 1))
+               ctx->style = 0;
+       else if (!IN_WINDOW(ctx, v, 0, 1) &&
+                !IN_WINDOW(ctx, v, 0, 2) &&
+                !IN_WINDOW(ctx, v, 0, 3))
+               ctx->style = 1;
+
+       /* Add the character to the history. */
+       ctx->history[ctx->cur++] = v;
+
+       for (st = 0; st < 2; st++) {
+               for (win = (st == 0) ? 1 : 2; win < 4; win++) {
+                       unsigned long oldref = ctx->refpoint[st][win];
+                       unsigned long newref = get_refpoint(v, st, win);
+                       int enclen1, enclen2;
+
+                       if (newref == oldref)
+                               continue;
+
+                       enclen1 = eval_compression(ctx);
+                       ctx->refpoint[st][win] = newref;
+                       enclen2 = eval_compression(ctx);
+                       if (enclen2 > enclen1)
+                               ctx->refpoint[st][win] = oldref;
+               }
+       }
+}
+
+static unsigned long
+get_refpoint(unsigned long v, int st, int win) {
+#define ROUND_BITS(v, b)       (((v) >> (b)) << (b))
+       if (win == 1) {
+               return (ROUND_BITS(v, 3));
+       } else if (win == 2) {
+               if (0xa0 <= v && v <= 0x17f)
+                       return (0xa0);
+               else
+                       return (ROUND_BITS(v, 8));
+       } else if (win == 3) {
+               if (0x3000 <= v && v <= 0x9ffff)
+                       return (0x4e00);
+               else if (st == 1 && 0xa000 <= v && v <= 0xd7ff)
+                       return (0x8800);
+               else
+                       return (ROUND_BITS(v, (st == 0) ? 19 : 20));
+       } else {
+               FATAL(("get_refpoint: internal error\n"));
+               return (0);     /* for lint */
+       }
+#undef ROUND_BITS
+}
+
+static int
+eval_compression(amcacev_ctx *ctx) {
+       int i;
+       int len = 0;
+       int cur = ctx->cur;
+       unsigned long *p = ctx->history;
+
+       for (i = 0; i < cur; i++) {
+               if (!is_ldh(p[i])) {
+                       int sz;
+                       (void)encode_delta(p[i], ctx, &sz);
+                       len += sz;
+               }
+       }
+       return (len);
+}
+
+static unsigned long
+encode_delta(unsigned long v, amcacev_ctx *ctx, int *szp) {
+       int sz;
+       
+       for (sz = (ctx->style == 0) ? 1 : 2; sz < 6; sz++) {
+               if (IN_WINDOW(ctx, v, ctx->style, sz)) {
+                       *szp = sz;
+                       return (v - ctx->refpoint[ctx->style][sz]);
+               }
+       }
+       FATAL(("amcacev_encode_mode: internal error\n"));
+       return (0);     /* for lint */
+}
+
+static int
+amcacev_getwc(const char *s, size_t len, int style, unsigned long *vp) {
+       size_t orglen = len;
+       unsigned long v = 0;
+       int style1_special = 0;
+
+       while (len > 0) {
+               int c = *s++;
+
+               if ('a' <= c && c <= 'z')
+                       c = base32decode_ascii[c - 'a'];
+               else if ('A' <= c && c <= 'Z')
+                       c = base32decode_ascii[c - 'A'];
+               else if ('0' <= c && c <= '9')
+                       c = base32decode_digit[c - '0'];
+               else
+                       c = -1;
+
+               if (c < 0)
+                       return (0);     /* invalid character */
+
+               if (style == 1 && len == orglen && (c & 0x10) == 0)
+                       style1_special = 3;
+
+               len--;
+               if (style1_special != 0) {
+                       v = (v << 5) + (c & 0x1f);
+                       if (--style1_special == 0) {
+                               *vp = v + 0x1000;
+                               return (3);
+                       }
+               } else {
+                       v = (v << 4) + (c & 0xf);
+
+                       if ((c & 0x10) == 0) {
+                               *vp = v;
+                               return (orglen - len);
+                       }
+               }
+       }
+       return (0);     /* final character missing */
+}
+
+static int
+amcacev_putwc(char *s, size_t len, unsigned long delta, int w) {
+       if (len < w)
+               return (0);
+
+       if (w == 3 && delta >= 0x1000) {
+               delta -= 0x1000;
+               s[0] = base32encode[(delta >> 10) & 0x1f];
+               s[1] = base32encode[(delta >> 5) & 0x1f];
+               s[2] = base32encode[delta & 0x1f];
+       } else {
+               int i, shift;
+
+               for (shift = 0, i = w - 1; i >= 0; i--) {
+                       s[i] = base32encode[(delta & 0xf) + shift];
+                       delta >>= 4;
+                       shift = 16;
+               }
+       }
+       return (w);
+}
+
+static int
+is_ldh(unsigned long v) {
+       if (('a' <= v && v <= 'z') || ('A' <= v && v <= 'Z') ||
+           ('0' <= v && v <= '9') || v == '-')
+               return (1);
+       else
+               return (0);
+}
diff --git a/contrib/idn/mdnkit/lib/amcacew.c b/contrib/idn/mdnkit/lib/amcacew.c
new file mode 100644 (file)
index 0000000..561c449
--- /dev/null
@@ -0,0 +1,459 @@
+#ifndef lint
+static char *rcsid = "$Id: amcacew.c,v 1.1 2002/02/08 05:39:57 marka Exp $";
+#endif
+
+/*
+ * Copyright (c) 2001 Japan Network Information Center.
+ * All rights reserved.
+ *  
+ * By using this file, you agree to the terms and conditions set forth bellow.
+ * 
+ *                     LICENSE TERMS AND CONDITIONS 
+ * 
+ * The following License Terms and Conditions apply, unless a different
+ * license is obtained from Japan Network Information Center ("JPNIC"),
+ * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda,
+ * Chiyoda-ku, Tokyo 101-0047, Japan.
+ * 
+ * 1. Use, Modification and Redistribution (including distribution of any
+ *    modified or derived work) in source and/or binary forms is permitted
+ *    under this License Terms and Conditions.
+ * 
+ * 2. Redistribution of source code must retain the copyright notices as they
+ *    appear in each source code file, this License Terms and Conditions.
+ * 
+ * 3. Redistribution in binary form must reproduce the Copyright Notice,
+ *    this License Terms and Conditions, in the documentation and/or other
+ *    materials provided with the distribution.  For the purposes of binary
+ *    distribution the "Copyright Notice" refers to the following language:
+ *    "Copyright (c) Japan Network Information Center.  All rights reserved."
+ * 
+ * 4. Neither the name of JPNIC may be used to endorse or promote products
+ *    derived from this Software without specific prior written approval of
+ *    JPNIC.
+ * 
+ * 5. Disclaimer/Limitation of Liability: THIS SOFTWARE IS PROVIDED BY JPNIC
+ *    "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ *    LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+ *    PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL JPNIC BE LIABLE
+ *    FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ *    CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ *    SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+ *    BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ *    WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ *    OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ *    ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+ * 
+ * 6. Indemnification by Licensee
+ *    Any person or entities using and/or redistributing this Software under
+ *    this License Terms and Conditions shall defend indemnify and hold
+ *    harmless JPNIC from and against any and all judgements damages,
+ *    expenses, settlement liabilities, cost and other liabilities of any
+ *    kind as a result of use and redistribution of this Software or any
+ *    claim, suite, action, litigation or proceeding by any third party
+ *    arising out of or relates to this License Terms and Conditions.
+ * 
+ * 7. Governing Law, Jurisdiction and Venue
+ *    This License Terms and Conditions shall be governed by and and
+ *    construed in accordance with the law of Japan. Any person or entities
+ *    using and/or redistributing this Software under this License Terms and
+ *    Conditions hereby agrees and consent to the personal and exclusive
+ *    jurisdiction and venue of Tokyo District Court of Japan.
+ */
+
+#include <config.h>
+
+#include <stddef.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include <mdn/result.h>
+#include <mdn/assert.h>
+#include <mdn/logmacro.h>
+#include <mdn/converter.h>
+#include <mdn/utf8.h>
+#include <mdn/debug.h>
+#include <mdn/amcacew.h>
+#include <mdn/ace.h>
+#include <mdn/util.h>
+
+/*
+ * Although draft-ietf-idn-amc-ace-w-00.txt doesn't specify the ACE
+ * signature, we have to choose one.  In order to prevent the converted
+ * name from beginning with a hyphen, we should choose a prefix rather
+ * than a suffix.
+ */
+#if !defined(MDN_AMCACEW_PREFIX) && !defined(MDN_AMCACEW_SUFFIX)
+#define MDN_AMCACEW_PREFIX     "amc5-"
+#endif
+
+#define MAX_UCS                0x10FFFF
+
+typedef struct {
+       int style;                      /* 0 or 1 */
+       unsigned long refpoint[6];      /* refpoint[0] is not used. */
+} amcacew_ctx;
+
+static const unsigned long amcacew_refpoint_initial[6] = {
+       0, 0xe0, 0xa0, 0, 0, 0x10000,
+};
+
+static const char *base32encode = "abcdefghijkmnpqrstuvwxyz23456789";
+static const int base32decode_ascii[26] = {
+       0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, -1, 11, 12, -1, 13, 14, 15,
+       16, 17, 18, 19, 20, 21, 22, 23,
+};
+static const int base32decode_digit[10] = {
+       -1, -1, 24, 25, 26, 27, 28, 29, 30, 31,
+};
+
+static mdn_result_t    amcacew_decode(const char *from, size_t fromlen,
+                                      char *to, size_t tolen);
+static mdn_result_t    amcacew_encode(const char *from, size_t fromlen,
+                                      char *to, size_t tolen);
+static void            amcacew_init_ctx(amcacew_ctx *ctx);
+static void            amcacew_update_ctx(amcacew_ctx *ctx, unsigned long v,
+                                          int sz);
+static unsigned long   amcacew_encode_delta(unsigned long v,
+                                            amcacew_ctx *ctx, int *szp);
+static int             amcacew_getwc(const char *s, size_t len, int style,
+                                     unsigned long *vp);
+static int             amcacew_putwc(char *s, size_t len,
+                                     unsigned long delta, int w);
+static int             is_ldh(unsigned long v);
+
+static mdn__ace_t amcacew_profile = {
+#ifdef MDN_AMCACEW_PREFIX
+       mdn__ace_prefix,
+       MDN_AMCACEW_PREFIX,
+#else
+       mdn__ace_suffix,
+       MDN_AMCACEW_SUFFIX,
+#endif
+       amcacew_encode,
+       amcacew_decode,
+};
+
+
+
+/* ARGSUSED */
+mdn_result_t
+mdn__amcacew_open(mdn_converter_t ctx, mdn_converter_dir_t dir,
+                 void **privdata)
+{
+       return (mdn_success);
+}
+
+/* ARGSUSED */
+mdn_result_t
+mdn__amcacew_close(mdn_converter_t ctx, void *privdata,
+                  mdn_converter_dir_t dir)
+{
+       return (mdn_success);
+}
+
+mdn_result_t
+mdn__amcacew_convert(mdn_converter_t ctx, void *privdata,
+                    mdn_converter_dir_t dir,
+                    const char *from, char *to, size_t tolen)
+{
+       mdn_result_t r;
+
+       assert(ctx != NULL &&
+              (dir == mdn_converter_l2u || dir == mdn_converter_u2l));
+
+       TRACE(("mdn__amcacew_convert(dir=%s,from=\"%s\")\n",
+              dir == mdn_converter_l2u ? "l2u" : "u2l",
+              mdn_debug_xstring(from, 20)));
+
+       r = mdn__ace_convert(&amcacew_profile, dir, from, to, tolen);
+       if (r != mdn_success)
+               return (r);
+
+       DUMP(("mdn__amcacew_convert: \"%s\"\n", mdn_debug_xstring(to, 70)));
+
+       return (r);
+}
+
+static mdn_result_t
+amcacew_decode(const char *from, size_t fromlen, char *to, size_t tolen) {
+       int literal_mode = 0;
+       amcacew_ctx ctx;
+
+       /* Initialize refpoints. */
+       amcacew_init_ctx(&ctx);
+
+       while (fromlen > 0) {
+               unsigned long v;
+               int len;
+
+               if (from[0] == '-') {
+                       if (fromlen > 1 && from[1] == '-') {
+                               v = '-';
+                               from += 2;
+                               fromlen -= 2;
+                       } else {
+                               literal_mode = !literal_mode;
+                               from++;
+                               fromlen--;
+                               continue;
+                       }
+               } else if (literal_mode) {
+                       v = from[0];
+                       from++;
+                       fromlen--;
+               } else {
+                       len = amcacew_getwc(from, fromlen, ctx.style, &v);
+                       if (len == 0)
+                               return (mdn_invalid_encoding);
+                       from += len;
+                       fromlen -= len;
+
+                       v += ctx.refpoint[len];
+
+                       amcacew_update_ctx(&ctx, v, len);
+               }
+
+               len = mdn_utf8_putwc(to, tolen, v);
+               if (len == 0)
+                       return (mdn_buffer_overflow);
+               to += len;
+               tolen -= len;
+       }
+
+       /*
+        * Terminate with NUL.
+        */
+       if (tolen <= 0)
+               return (mdn_buffer_overflow);
+       *to = '\0';
+
+       return (mdn_success);
+}
+
+static mdn_result_t
+amcacew_encode(const char *from, size_t fromlen, char *to, size_t tolen) {
+       int literal_mode = 0;
+       amcacew_ctx ctx;
+
+       /* Initialize refpoints. */
+       amcacew_init_ctx(&ctx);
+
+       while (fromlen > 0) {
+               unsigned long c;
+               size_t len;
+
+               len = mdn_utf8_getwc(from, fromlen, &c);
+               from += len;
+               fromlen -= len;
+               if (len == 0)
+                       return (mdn_invalid_encoding);
+
+               if (c > MAX_UCS) {
+                       /*
+                        * Invalid Unicode code point.
+                        */
+                       return (mdn_invalid_encoding);
+               } else if (c == '-') {
+                       /*
+                        * Convert "-" to "--".
+                        */
+                       if (tolen < 2)
+                               return (mdn_buffer_overflow);
+                       to[0] = to[1] = '-';
+                       to += 2;
+                       tolen -= 2;
+               } else if (is_ldh(c)) {
+                       /*
+                        * LDH characters.
+                        */
+                       if (literal_mode == 0) {
+                               /*
+                                * Go into literal mode.
+                                */
+                               if (tolen < 1)
+                                       return (mdn_buffer_overflow);
+                               *to++ = '-';
+                               tolen--;
+                               literal_mode = 1;
+                       }
+                       if (tolen < 1)
+                               return (mdn_buffer_overflow);
+                       *to++ = c;
+                       tolen--;
+               } else {
+                       /*
+                        * Non-LDH characters.
+                        */
+                       int sz;
+                       unsigned long delta;
+
+                       if (literal_mode != 0) {
+                               /*
+                                * Get out of literal mode.
+                                */
+                               if (tolen < 1)
+                                       return (mdn_buffer_overflow);
+                               *to++ = '-';
+                               tolen--;
+                               literal_mode = 0;
+                       }
+                       delta = amcacew_encode_delta(c, &ctx, &sz);
+                       sz = amcacew_putwc(to, tolen, delta, sz);
+                       if (sz == 0)
+                               return (mdn_buffer_overflow);
+                       to += sz;
+                       tolen -= sz;
+                       amcacew_update_ctx(&ctx, c, sz);
+               }
+       }
+
+       /*
+        * Terminate with NUL.
+        */
+       if (tolen <= 0)
+               return (mdn_buffer_overflow);
+
+       *to = '\0';
+
+       return (mdn_success);
+}
+
+static void
+amcacew_init_ctx(amcacew_ctx *ctx) {
+       ctx->style = 0;
+       (void)memcpy(ctx->refpoint, amcacew_refpoint_initial,
+                    sizeof(ctx->refpoint));
+}
+
+static void
+amcacew_update_ctx(amcacew_ctx *ctx, unsigned long v, int sz) {
+       if (sz != 3)
+               ctx->style = (sz < 3) ? 0 : 1;
+
+#define ROUND_BITS(v, b)       (((v) >> (b)) << (b))
+       /* Update refpoint[1] */
+       ctx->refpoint[1] = ROUND_BITS(v, 4);
+
+       /* Update refpoint[2] */
+       if (sz > 2) {
+               if (0xa0 <= v && v <= 0x17f)
+                       ctx->refpoint[2] = 0xa0;
+               else
+                       ctx->refpoint[2] = ROUND_BITS(v, 8);
+       }
+
+       /* Update refpoint[3] */
+       if (sz > 3) {
+               if (0x3000 <= v && v <= 0x9fff)
+                       ctx->refpoint[3] = 0x4e00;
+               else if (0xa000 <= v && v <= 0xd7ff && ctx->style == 1)
+                       ctx->refpoint[3] = 0x8800;
+               else
+                       ctx->refpoint[3] = ROUND_BITS(v, 12);
+       }
+#undef ROUND_BITS
+}
+
+static unsigned long
+amcacew_encode_delta(unsigned long v, amcacew_ctx *ctx, int *szp) {
+       int sz, szinit;
+       unsigned long *maxdelta;
+       unsigned long *refpoint = ctx->refpoint;
+       static unsigned long maxdelta_style0[6] = {
+               0, 0xf, 0xff, 0xfff, 0xffff, 0xfffff,
+       };
+       static unsigned long maxdelta_style1[6] = {
+               0, 0, 0xff, 0x4fff, 0xffff, 0xfffff,
+       };
+       
+       if (ctx->style == 0) {
+               szinit = 1;
+               maxdelta = maxdelta_style0;
+       } else {
+               szinit = 2;
+               maxdelta = maxdelta_style1;
+       }
+       for (sz = szinit; sz < 6; sz++) {
+               if (v >= refpoint[sz] && v - refpoint[sz] <= maxdelta[sz]) {
+                       *szp = sz;
+                       return (v - refpoint[sz]);
+               }
+       }
+       FATAL(("amcacew_encode_mode: internal error\n"));
+       return (0);     /* for lint */
+}
+
+static int
+amcacew_getwc(const char *s, size_t len, int style, unsigned long *vp) {
+       size_t orglen = len;
+       unsigned long v = 0;
+       int style1_special = 0;
+
+       while (len > 0) {
+               int c = *s++;
+
+               if ('a' <= c && c <= 'z')
+                       c = base32decode_ascii[c - 'a'];
+               else if ('A' <= c && c <= 'Z')
+                       c = base32decode_ascii[c - 'A'];
+               else if ('0' <= c && c <= '9')
+                       c = base32decode_digit[c - '0'];
+               else
+                       c = -1;
+
+               if (c < 0)
+                       return (0);     /* invalid character */
+
+               if (style == 1 && len == orglen && (c & 0x10) == 0)
+                       style1_special = 3;
+
+               len--;
+               if (style1_special != 0) {
+                       v = (v << 5) + (c & 0x1f);
+                       if (--style1_special == 0) {
+                               *vp = v + 0x1000;
+                               return (3);
+                       }
+               } else {
+                       v = (v << 4) + (c & 0xf);
+
+                       if ((c & 0x10) == 0) {
+                               *vp = v;
+                               return (orglen - len);
+                       }
+               }
+       }
+       return (0);     /* final character missing */
+}
+
+static int
+amcacew_putwc(char *s, size_t len, unsigned long delta, int w) {
+       if (len < w)
+               return (0);
+
+       if (w == 3 && delta >= 0x1000) {
+               delta -= 0x1000;
+               s[0] = base32encode[(delta >> 10) & 0x1f];
+               s[1] = base32encode[(delta >> 5) & 0x1f];
+               s[2] = base32encode[delta & 0x1f];
+       } else {
+               int i, shift;
+
+               for (shift = 0, i = w - 1; i >= 0; i--) {
+                       s[i] = base32encode[(delta & 0xf) + shift];
+                       delta >>= 4;
+                       shift = 16;
+               }
+       }
+       return (w);
+}
+
+static int
+is_ldh(unsigned long v) {
+       if (('a' <= v && v <= 'z') || ('A' <= v && v <= 'Z') ||
+           ('0' <= v && v <= '9') || v == '-')
+               return (1);
+       else
+               return (0);
+}
diff --git a/contrib/idn/mdnkit/lib/amcacez.c b/contrib/idn/mdnkit/lib/amcacez.c
new file mode 100644 (file)
index 0000000..d1a4290
--- /dev/null
@@ -0,0 +1,484 @@
+#ifndef lint
+static char *rcsid = "$Id: amcacez.c,v 1.1 2002/02/08 05:39:57 marka Exp $";
+#endif
+
+/*
+ * Copyright (c) 2001 Japan Network Information Center.
+ * All rights reserved.
+ *  
+ * By using this file, you agree to the terms and conditions set forth bellow.
+ * 
+ *                     LICENSE TERMS AND CONDITIONS 
+ * 
+ * The following License Terms and Conditions apply, unless a different
+ * license is obtained from Japan Network Information Center ("JPNIC"),
+ * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda,
+ * Chiyoda-ku, Tokyo 101-0047, Japan.
+ * 
+ * 1. Use, Modification and Redistribution (including distribution of any
+ *    modified or derived work) in source and/or binary forms is permitted
+ *    under this License Terms and Conditions.
+ * 
+ * 2. Redistribution of source code must retain the copyright notices as they
+ *    appear in each source code file, this License Terms and Conditions.
+ * 
+ * 3. Redistribution in binary form must reproduce the Copyright Notice,
+ *    this License Terms and Conditions, in the documentation and/or other
+ *    materials provided with the distribution.  For the purposes of binary
+ *    distribution the "Copyright Notice" refers to the following language:
+ *    "Copyright (c) Japan Network Information Center.  All rights reserved."
+ * 
+ * 4. Neither the name of JPNIC may be used to endorse or promote products
+ *    derived from this Software without specific prior written approval of
+ *    JPNIC.
+ * 
+ * 5. Disclaimer/Limitation of Liability: THIS SOFTWARE IS PROVIDED BY JPNIC
+ *    "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ *    LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+ *    PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL JPNIC BE LIABLE
+ *    FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ *    CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ *    SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+ *    BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ *    WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ *    OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ *    ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+ * 
+ * 6. Indemnification by Licensee
+ *    Any person or entities using and/or redistributing this Software under
+ *    this License Terms and Conditions shall defend indemnify and hold
+ *    harmless JPNIC from and against any and all judgements damages,
+ *    expenses, settlement liabilities, cost and other liabilities of any
+ *    kind as a result of use and redistribution of this Software or any
+ *    claim, suite, action, litigation or proceeding by any third party
+ *    arising out of or relates to this License Terms and Conditions.
+ * 
+ * 7. Governing Law, Jurisdiction and Venue
+ *    This License Terms and Conditions shall be governed by and and
+ *    construed in accordance with the law of Japan. Any person or entities
+ *    using and/or redistributing this Software under this License Terms and
+ *    Conditions hereby agrees and consent to the personal and exclusive
+ *    jurisdiction and venue of Tokyo District Court of Japan.
+ */
+
+#include <config.h>
+
+#include <stddef.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include <mdn/result.h>
+#include <mdn/assert.h>
+#include <mdn/logmacro.h>
+#include <mdn/converter.h>
+#include <mdn/utf8.h>
+#include <mdn/debug.h>
+#include <mdn/amcacez.h>
+#include <mdn/ace.h>
+#include <mdn/util.h>
+
+/*
+ * Although draft-ietf-idn-amc-ace-z-01.txt doesn't specify the ACE
+ * signature, we have to choose one.  In order to prevent the converted
+ * name from beginning with a hyphen, we should choose a prefix rather
+ * than a suffix.
+ */
+#if !defined(MDN_AMCACEZ_PREFIX) && !defined(MDN_AMCACEZ_SUFFIX)
+#define MDN_AMCACEZ_PREFIX     "zq--"
+#endif
+
+#define INVALID_UCS    0x80000000
+#define MAX_UCS                0x10FFFF
+
+/*
+ * As the draft states, it is possible that `delta' may overflow during
+ * the encoding.  The upper bound of 'delta' is:
+ *   <# of chars. of input string> + <max. difference in code point> *
+ *   <# of chars. of input string + 1>
+ * For this value not to be greater than 0xffffffff (since the calculation
+ * is done using unsigned long, which is at least 32bit long), the maxmum
+ * input string size is about 3850 characters, which is long enough for
+ * a domain label...
+ */
+#define AMCACEZ_MAXINPUT       3800
+
+/*
+ * Parameters.
+ */
+#define AMCACEZ_BASE           36
+#define AMCACEZ_TMIN           1
+#define AMCACEZ_TMAX           26
+#define AMCACEZ_SKEW           38
+#define AMCACEZ_DAMP           700
+#define AMCACEZ_INITIAL_BIAS   72
+#define AMCACEZ_INITIAL_N      0x80
+
+static mdn_result_t    amcacez_decode(const char *from, size_t fromlen,
+                                      char *to, size_t tolen);
+static mdn_result_t    amcacez_encode(const char *from, size_t fromlen,
+                                      char *to, size_t tolen);
+static int             amcacez_getwc(const char *s, size_t len,
+                                     int bias, unsigned long *vp);
+static int             amcacez_putwc(char *s, size_t len,
+                                     unsigned long delta, int bias);
+static int             amcacez_update_bias(unsigned long delta,
+                                           size_t npoints, int first);
+
+static mdn__ace_t amcacez_profile = {
+#ifdef MDN_AMCACEZ_PREFIX
+       mdn__ace_prefix,
+       MDN_AMCACEZ_PREFIX,
+#else
+       mdn__ace_suffix,
+       MDN_AMCACEZ_SUFFIX,
+#endif
+       amcacez_encode,
+       amcacez_decode,
+};
+
+
+
+/* ARGSUSED */
+mdn_result_t
+mdn__amcacez_open(mdn_converter_t ctx, mdn_converter_dir_t dir,
+                 void **privdata)
+{
+       return (mdn_success);
+}
+
+/* ARGSUSED */
+mdn_result_t
+mdn__amcacez_close(mdn_converter_t ctx, void *privdata,
+                  mdn_converter_dir_t dir)
+{
+       return (mdn_success);
+}
+
+mdn_result_t
+mdn__amcacez_convert(mdn_converter_t ctx, void *privdata,
+                    mdn_converter_dir_t dir,
+                    const char *from, char *to, size_t tolen)
+{
+       mdn_result_t r;
+
+       assert(ctx != NULL &&
+              (dir == mdn_converter_l2u || dir == mdn_converter_u2l));
+
+       TRACE(("mdn__amcacez_convert(dir=%s,from=\"%s\")\n",
+              dir == mdn_converter_l2u ? "l2u" : "u2l",
+              mdn_debug_xstring(from, 20)));
+
+       r = mdn__ace_convert(&amcacez_profile, dir, from, to, tolen);
+       if (r != mdn_success)
+               return (r);
+
+       DUMP(("mdn__amcacez_convert: \"%s\"\n", mdn_debug_xstring(to, 70)));
+
+       return (r);
+}
+
+static mdn_result_t
+amcacez_decode(const char *from, size_t fromlen, char *to, size_t tolen) {
+       unsigned long *ucs, ucs_tmp[64], c, idx;
+       size_t uidx, fidx, ucslen;
+       int first, bias;
+       mdn_result_t r;
+
+       /*
+        * Allocate enough memory for UCS-4 code point array 'ucs'.
+        */
+       if (fromlen > 64) {
+               ucs = malloc(fromlen * sizeof(unsigned long));
+               if (ucs == NULL)
+                       return (mdn_nomemory);
+       } else {
+               ucs = ucs_tmp;
+       }
+       ucslen = 0;
+
+       /*
+        * Find the last delimiter, and copy the characters
+        * before it verbatim.
+        */
+       for (fidx = fromlen; fidx > 0; fidx--) {
+               if (from[fidx - 1] == '-') {
+                       for (uidx = 0; uidx < fidx - 1; uidx++) {
+                               ucs[uidx] = from[uidx];
+                       }
+                       ucslen = uidx;
+                       break;
+               }
+       }
+
+       first = 1;
+       bias = AMCACEZ_INITIAL_BIAS;
+       c = AMCACEZ_INITIAL_N;
+       idx = 0;
+       while (fidx < fromlen) {
+               int len;
+               unsigned long delta;
+               int i;
+
+               len = amcacez_getwc(from + fidx, fromlen - fidx, bias, &delta);
+               if (len == 0)
+                       return (mdn_invalid_encoding);
+               fidx += len;
+
+               bias = amcacez_update_bias(delta, ucslen + 1, first);
+               first = 0;
+               idx += delta;
+               c += idx / (ucslen + 1);
+               uidx = idx % (ucslen + 1);
+
+               /* Insert 'c' at uidx. */
+               for (i = ucslen; i > uidx; i--)
+                       ucs[i] = ucs[i - 1];
+               ucs[uidx] = c;
+
+               ucslen++;
+               idx = uidx + 1;
+       }
+
+       /*
+        * Convert from UCS-4 to UTF-8.
+        */
+       for (uidx = 0; uidx < ucslen; uidx++) {
+               int len = mdn_utf8_putwc(to, tolen, ucs[uidx]);
+               if (len == 0)
+                       goto overflow;
+               to += len;
+               tolen -= len;
+       }
+       /* Terminate with NUL. */
+       if (tolen <= 0)
+               goto overflow;
+       *to = '\0';
+
+       r = mdn_success;
+ ret:
+       if (ucs != ucs_tmp)
+               free(ucs);
+       return (r);
+       
+ overflow:
+       r = mdn_buffer_overflow;
+       goto ret;
+}
+
+static mdn_result_t
+amcacez_encode(const char *from, size_t fromlen, char *to, size_t tolen) {
+       unsigned long *ucs, ucs_tmp[64];
+       unsigned long cur_code, next_code, delta;
+       size_t ucslen, ucsdone;
+       size_t toidx;
+       int uidx, bias, first;
+       mdn_result_t r;
+
+       /*
+        * Convert UTF-8 string 'from' to UCS-4 code point array 'ucs'.
+        */
+       if (fromlen > 64) {
+               ucs = malloc(fromlen * sizeof(unsigned long));
+               if (ucs == NULL)
+                       return (mdn_nomemory);
+       } else {
+               ucs = ucs_tmp;
+       }
+       ucslen = 0;
+       while (fromlen > 0) {
+               unsigned long c;
+               int len;
+
+               len = mdn_utf8_getwc(from, fromlen, &c);
+               if (len == 0 || c > MAX_UCS)
+                       goto invalid;
+               ucs[ucslen++] = c;
+               from += len;
+               fromlen -= len;
+       }
+
+       /*
+        * If the input string is too long (actually too long to be sane),
+        * return failure in order to prevent possible overflow.
+        */
+       if (ucslen > AMCACEZ_MAXINPUT)
+               return (mdn_failure);
+
+       ucsdone = 0;    /* number of characters processed */
+       toidx = 0;
+
+       /*
+        * First, pick up basic code points and copy them to 'to'.
+        */
+       for (uidx = 0; uidx < ucslen; uidx++) {
+               if (ucs[uidx] < 0x80) {
+                       if (toidx >= tolen)
+                               goto overflow;
+                       to[toidx++] = ucs[uidx];
+                       ucsdone++;
+               }
+       }
+
+       /*
+        * If there are any basic code points, output a delimiter
+        * (hyphen-minus).
+        */
+       if (toidx > 0) {
+               if (toidx >= tolen)
+                       goto overflow;
+               to[toidx++] = '-';
+               to += toidx;
+               tolen -= toidx;
+       }
+
+       /*
+        * Then encode non-basic characters.
+        */
+       first = 1;
+       cur_code = AMCACEZ_INITIAL_N;
+       bias = AMCACEZ_INITIAL_BIAS;
+       delta = 0;
+       while (ucsdone < ucslen) {
+               int limit = -1, rest;
+
+               /*
+                * Find the smallest code point equal to or greater
+                * than 'cur_code'.  Also remember the index of the
+                * last occurence of the code point.
+                */
+               for (next_code = MAX_UCS, uidx = ucslen - 1;
+                    uidx >= 0; uidx--) {
+                       if (ucs[uidx] >= cur_code && ucs[uidx] < next_code) {
+                               next_code = ucs[uidx];
+                               limit = uidx;
+                       }
+               }
+               /* There must be such code point. */
+               assert(limit >= 0);
+
+               delta += (next_code - cur_code) * (ucsdone + 1);
+               cur_code = next_code;
+
+               /*
+                * Scan the input string again, and encode characters
+                * whose code point is 'cur_code'.  Use 'limit' to avoid
+                * unnecessary scan.
+                */
+               for (uidx = 0, rest = ucsdone; uidx <= limit; uidx++) {
+                       if (ucs[uidx] < cur_code) {
+                               delta++;
+                               rest--;
+                       } else if (ucs[uidx] == cur_code) {
+                               int sz = amcacez_putwc(to, tolen, delta, bias);
+                               if (sz == 0)
+                                       goto overflow;
+                               to += sz;
+                               tolen -= sz;
+                               ucsdone++;
+                               bias = amcacez_update_bias(delta, ucsdone,
+                                                          first);
+                               delta = 0;
+                               first = 0;
+                       }
+               }
+               delta += rest + 1;
+               cur_code++;
+       }
+
+       /*
+        * Terminate with NUL.
+        */
+       if (tolen <= 0)
+               goto overflow;
+       *to = '\0';
+
+       r = mdn_success;
+ ret:
+       if (ucs != ucs_tmp)
+               free(ucs);
+       return (r);
+
+ invalid:
+       r = mdn_invalid_encoding;
+       goto ret;
+ overflow:
+       r = mdn_buffer_overflow;
+       goto ret;
+}
+
+static int
+amcacez_getwc(const char *s, size_t len, int bias, unsigned long *vp) {
+       size_t orglen = len;
+       unsigned long v = 0, w = 1;
+       int k;
+
+       for (k = AMCACEZ_BASE - bias; len > 0; k += AMCACEZ_BASE) {
+               int c = *s++;
+               int t = (k < AMCACEZ_TMIN) ? AMCACEZ_TMIN :
+                       (k > AMCACEZ_TMAX) ? AMCACEZ_TMAX : k;
+
+               len--;
+               if ('a' <= c && c <= 'z')
+                       c = c - 'a';
+               else if ('A' <= c && c <= 'Z')
+                       c = c - 'A';
+               else if ('0' <= c && c <= '9')
+                       c = c - '0' + 26;
+               else
+                       c = -1;
+
+               if (c < 0)
+                       return (0);     /* invalid character */
+
+               v += c * w;
+
+               if (c < t) {
+                       *vp = v;
+                       return (orglen - len);
+               }
+
+               w *= (AMCACEZ_BASE - t);
+       }
+
+       return (0);     /* final character missing */
+}
+
+static int
+amcacez_putwc(char *s, size_t len, unsigned long delta, int bias) {
+       const char *amcacez_base36 = "abcdefghijklmnopqrstuvwxyz0123456789";
+       int k;
+       char *sorg = s;
+
+       for (k = AMCACEZ_BASE - bias; 1; k += AMCACEZ_BASE) {
+               int t = (k < AMCACEZ_TMIN) ? AMCACEZ_TMIN :
+                       (k > AMCACEZ_TMAX) ? AMCACEZ_TMAX : k;
+
+               if (delta < t)
+                       break;
+               if (len < 1)
+                       return (0);
+               *s++ = amcacez_base36[t + ((delta - t) % (AMCACEZ_BASE - t))];
+               len--;
+               delta = (delta - t) / (AMCACEZ_BASE - t);
+       }
+       if (len < 1)
+               return (0);
+       *s++ = amcacez_base36[delta];
+       return (s - sorg);
+}
+
+static int
+amcacez_update_bias(unsigned long delta, size_t npoints, int first) {
+       int k = 0;
+
+       delta /= first ? AMCACEZ_DAMP : 2;
+       delta += delta / npoints;
+
+       while (delta > ((AMCACEZ_BASE - AMCACEZ_TMIN) * AMCACEZ_TMAX) / 2) {
+               delta /= AMCACEZ_BASE - AMCACEZ_TMIN;
+               k++;
+       }
+       return (AMCACEZ_BASE * k +
+               (((AMCACEZ_BASE - AMCACEZ_TMIN + 1) * delta) /
+                (delta + AMCACEZ_SKEW)));
+}
index cd25322be722ac6116fe27fde86e522cafe55470..706076f98c447cc45ffe8182ab5cae778805a6f2 100644 (file)
@@ -1,5 +1,5 @@
 #ifndef lint
-static char *rcsid = "$Id: api.c,v 1.1 2001/06/09 00:30:12 tale Exp $";
+static char *rcsid = "$Id: api.c,v 1.2 2002/02/08 05:39:57 marka Exp $";
 #endif
 
 /*
@@ -11,8 +11,8 @@ static char *rcsid = "$Id: api.c,v 1.1 2001/06/09 00:30:12 tale Exp $";
  * 
  * The following License Terms and Conditions apply, unless a different
  * license is obtained from Japan Network Information Center ("JPNIC"),
- * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku,
- * Tokyo, Japan.
+ * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda,
+ * Chiyoda-ku, Tokyo 101-0047, Japan.
  * 
  * 1. Use, Modification and Redistribution (including distribution of any
  *    modified or derived work) in source and/or binary forms is permitted
@@ -89,7 +89,7 @@ static struct actiondesc {
 #define ENCODE_MASK \
        (MDN_LOCALCONV|MDN_IDNCONV|MDN_NAMEPREP|MDN_UNASCHECK|\
         MDN_DELIMMAP|MDN_LOCALMAP)
-#define DECODE_MASK (MDN_LOCALCONV|MDN_IDNCONV)
+#define DECODE_MASK (MDN_LOCALCONV|MDN_NAMEPREP|MDN_UNASCHECK|MDN_IDNCONV)
 
 static int initialized;
 static mdn_resconf_t default_conf;
@@ -128,7 +128,7 @@ mdn_encodename(int actions, const char *from, char *to, size_t tolen) {
 
        TRACE(("mdn_encodename(actions=%s, from=\"%s\")\n",
               actions_to_string(actions),
-              mdn_debug_xstring(from, 30)));
+              mdn_debug_xstring(from, 256)));
 
        if (actions & ~ENCODE_MASK) {
                WARNING(("mdn_encodename: invalid actions 0x%x\n", actions));
@@ -169,7 +169,7 @@ mdn_decodename(int actions, const char *from, char *to, size_t tolen) {
 
        TRACE(("mdn_decodename(actions=%s, from=\"%s\")\n",
               actions_to_string(actions),
-              mdn_debug_xstring(from, 30)));
+              mdn_debug_xstring(from, 256)));
 
        if (actions & ~DECODE_MASK) {
                WARNING(("mdn_decodename: invalid actions 0x%x\n", actions));
@@ -181,6 +181,14 @@ mdn_decodename(int actions, const char *from, char *to, size_t tolen) {
 
        if (actions & MDN_IDNCONV)
                *p++ = 'i';
+       if (actions & MDN_NAMEPREP) {
+               *p++ = '!';
+               *p++ = 'N';
+       }
+       if (actions & MDN_UNASCHECK) {
+               *p++ = '!';
+               *p++ = 'u';
+       }
        if (actions & MDN_LOCALCONV)
                *p++ = 'L';
        *p = '\0';
index d87533e472ea68a04811de2768b7a1fd29d4b212..e0601d42846949c64e33ba33df8b978a904fef72 100644 (file)
@@ -1,5 +1,5 @@
 #ifndef lint
-static char *rcsid = "$Id: brace.c,v 1.16 2001/03/07 00:58:51 ishisone Exp $";
+static char *rcsid = "$Id: brace.c,v 1.1 2002/01/02 02:46:40 marka Exp $";
 #endif
 
 /*
@@ -11,8 +11,8 @@ static char *rcsid = "$Id: brace.c,v 1.16 2001/03/07 00:58:51 ishisone Exp $";
  * 
  * The following License Terms and Conditions apply, unless a different
  * license is obtained from Japan Network Information Center ("JPNIC"),
- * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku,
- * Tokyo, Japan.
+ * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda,
+ * Chiyoda-ku, Tokyo 101-0047, Japan.
  * 
  * 1. Use, Modification and Redistribution (including distribution of any
  *    modified or derived work) in source and/or binary forms is permitted
index 93d91354695c41b63bb1f7361346cf0775752c9a..6c23430a40ca196e140b3a810b13eecc51b69326 100644 (file)
@@ -1,5 +1,5 @@
 #ifndef lint
-static char *rcsid = "$Id: checker.c,v 1.1 2001/06/09 00:30:14 tale Exp $";
+static char *rcsid = "$Id: checker.c,v 1.2 2002/02/08 05:40:00 marka Exp $";
 #endif
 
 /*
@@ -11,8 +11,8 @@ static char *rcsid = "$Id: checker.c,v 1.1 2001/06/09 00:30:14 tale Exp $";
  * 
  * The following License Terms and Conditions apply, unless a different
  * license is obtained from Japan Network Information Center ("JPNIC"),
- * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku,
- * Tokyo, Japan.
+ * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda,
+ * Chiyoda-ku, Tokyo 101-0047, Japan.
  * 
  * 1. Use, Modification and Redistribution (including distribution of any
  *    modified or derived work) in source and/or binary forms is permitted
@@ -88,36 +88,54 @@ typedef struct {
 /*
  * Standard checking schemes.
  */
-static const check_scheme_t nameprep_02_prohibit_scheme = {
-       "prohibit#nameprep-02",
-       "nameprep-02",
+static const check_scheme_t nameprep_03_prohibit_scheme = {
+       "prohibit#nameprep-03",
+       "nameprep-03",
        mdn__nameprep_createproc,
        mdn__nameprep_destroyproc,
        mdn__nameprep_prohibitproc,
        NULL,
 };
 
-static const check_scheme_t nameprep_02_unasigned_scheme = {
-       "unassigned#nameprep-02",
-       "nameprep-02",
+static const check_scheme_t nameprep_03_unasigned_scheme = {
+       "unassigned#nameprep-03",
+       "nameprep-03",
        mdn__nameprep_createproc,
        mdn__nameprep_destroyproc,
        mdn__nameprep_unassignedproc,
        NULL,
 };
 
-static const check_scheme_t nameprep_03_prohibit_scheme = {
-       "prohibit#nameprep-03",
-       "nameprep-03",
+static const check_scheme_t nameprep_05_prohibit_scheme = {
+       "prohibit#nameprep-05",
+       "nameprep-05",
        mdn__nameprep_createproc,
        mdn__nameprep_destroyproc,
        mdn__nameprep_prohibitproc,
        NULL,
 };
 
-static const check_scheme_t nameprep_03_unasigned_scheme = {
-       "unassigned#nameprep-03",
-       "nameprep-03",
+static const check_scheme_t nameprep_05_unasigned_scheme = {
+       "unassigned#nameprep-05",
+       "nameprep-05",
+       mdn__nameprep_createproc,
+       mdn__nameprep_destroyproc,
+       mdn__nameprep_unassignedproc,
+       NULL,
+};
+
+static const check_scheme_t nameprep_06_prohibit_scheme = {
+       "prohibit#nameprep-06",
+       "nameprep-06",
+       mdn__nameprep_createproc,
+       mdn__nameprep_destroyproc,
+       mdn__nameprep_prohibitproc,
+       NULL,
+};
+
+static const check_scheme_t nameprep_06_unasigned_scheme = {
+       "unassigned#nameprep-06",
+       "nameprep-06",
        mdn__nameprep_createproc,
        mdn__nameprep_destroyproc,
        mdn__nameprep_unassignedproc,
@@ -143,10 +161,12 @@ static const check_scheme_t filecheck_unassigned_scheme = {
 };
 
 static const check_scheme_t *standard_check_schemes[] = {
-       &nameprep_02_unasigned_scheme,
-       &nameprep_02_prohibit_scheme,
        &nameprep_03_unasigned_scheme,
        &nameprep_03_prohibit_scheme,
+       &nameprep_05_unasigned_scheme,
+       &nameprep_05_prohibit_scheme,
+       &nameprep_06_unasigned_scheme,
+       &nameprep_06_prohibit_scheme,
        &filecheck_prohibit_scheme,
        &filecheck_unassigned_scheme,
        NULL,
@@ -357,6 +377,9 @@ mdn_checker_add(mdn_checker_t ctx, const char *scheme_name) {
        ctx->schemes[ctx->nschemes].context = scheme_context;
        ctx->nschemes++;
 
+       if (buffer != static_buffer)
+               free(buffer);
+
        return (mdn_success);
 
 failure:
@@ -390,6 +413,7 @@ mdn_checker_addall(mdn_checker_t ctx, const char **scheme_names,
 mdn_result_t
 mdn_checker_lookup(mdn_checker_t ctx, const char *utf8, const char **found) {
        mdn_result_t r;
+       const char *p;
        int i;
 
        assert(scheme_hash != NULL);
@@ -402,15 +426,16 @@ mdn_checker_lookup(mdn_checker_t ctx, const char *utf8, const char **found) {
         * Lookup.
         */
        for (i = 0; i < ctx->nschemes; i++) {
-               r = (ctx->schemes[i].lookup)(ctx->schemes[i].context, utf8,
-                       found);
-               if (r != mdn_success)
-                       return (r);
-               else if (*found == NULL)
-                       return (mdn_success);
-               else if (**found != '.')
-                       return (mdn_prohibited);
-               utf8 = *found + 1;
+               for (p = utf8; *p != '\0'; p = *found + 1) {
+                       r = (ctx->schemes[i].lookup)(ctx->schemes[i].context,
+                                                    p, found);
+                       if (r != mdn_success)
+                               return (r);
+                       else if (*found == NULL)
+                               break;
+                       else if (**found != '.')
+                               return (mdn_success);
+               }
        }
 
        *found = NULL;
index 32a558a621f0a8ac7f7e77784edcf308a721eda7..3f9e70e222fdc9f3aadeded0697dd2c4ba179ce6 100644 (file)
@@ -1,5 +1,5 @@
 #ifndef lint
-static char *rcsid = "$Id: converter.c,v 1.35 2001/04/17 01:35:42 ishisone Exp $";
+static char *rcsid = "$Id: converter.c,v 1.1 2002/01/02 02:46:40 marka Exp $";
 #endif
 
 /*
@@ -11,8 +11,8 @@ static char *rcsid = "$Id: converter.c,v 1.35 2001/04/17 01:35:42 ishisone Exp $
  * 
  * The following License Terms and Conditions apply, unless a different
  * license is obtained from Japan Network Information Center ("JPNIC"),
- * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku,
- * Tokyo, Japan.
+ * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda,
+ * Chiyoda-ku, Tokyo 101-0047, Japan.
  * 
  * 1. Use, Modification and Redistribution (including distribution of any
  *    modified or derived work) in source and/or binary forms is permitted
@@ -75,18 +75,24 @@ static char *rcsid = "$Id: converter.c,v 1.35 2001/04/17 01:35:42 ishisone Exp $
 #include <mdn/logmacro.h>
 #include <mdn/converter.h>
 #include <mdn/strhash.h>
-#include <mdn/utf8.h>
-#include <mdn/utf6.h>
-#include <mdn/utf5.h>
 #include <mdn/debug.h>
+#include <mdn/utf8.h>
+#include <mdn/amcacez.h>
 #include <mdn/race.h>
+#include <mdn/dude.h>
+#ifdef MDN_EXTRA_ACE
+#include <mdn/utf5.h>
+#include <mdn/utf6.h>
 #include <mdn/brace.h>
 #include <mdn/lace.h>
-#include <mdn/dude.h>
 #include <mdn/altdude.h>
 #include <mdn/amcacem.h>
 #include <mdn/amcaceo.h>
 #include <mdn/amcacer.h>
+#include <mdn/amcacev.h>
+#include <mdn/amcacew.h>
+#include <mdn/mace.h>
+#endif /* MDN_EXTRA_ACE */
 
 #ifndef MDN_UTF8_ENCODING_NAME
 #define MDN_UTF8_ENCODING_NAME "UTF-8"         /* by IANA */
@@ -121,6 +127,18 @@ static char *rcsid = "$Id: converter.c,v 1.35 2001/04/17 01:35:42 ishisone Exp $
 #ifndef MDN_AMCACER_ENCODING_NAME
 #define MDN_AMCACER_ENCODING_NAME "AMC-ACE-R"
 #endif
+#ifndef MDN_AMCACEV_ENCODING_NAME
+#define MDN_AMCACEV_ENCODING_NAME "AMC-ACE-V"
+#endif
+#ifndef MDN_AMCACEW_ENCODING_NAME
+#define MDN_AMCACEW_ENCODING_NAME "AMC-ACE-W"
+#endif
+#ifndef MDN_AMCACEZ_ENCODING_NAME
+#define MDN_AMCACEZ_ENCODING_NAME "AMC-ACE-Z"
+#endif
+#ifndef MDN_MACE_ENCODING_NAME
+#define MDN_MACE_ENCODING_NAME "MACE"
+#endif
 
 #define MAX_RECURSE    20
 
@@ -128,7 +146,7 @@ typedef struct {
        mdn_converter_openproc_t open;
        mdn_converter_closeproc_t close;
        mdn_converter_convertproc_t convert;
-       int ascii_compatible;
+       int encoding_type;
 } converter_ops_t;
 
 struct mdn_converter {
@@ -176,6 +194,7 @@ static mdn_result_t converter_iconv_convert(mdn_converter_t ctx,
                                                mdn_converter_dir_t dir,
                                                const char *from,
                                                char *to, size_t tolen);
+#ifdef MDN_EXTRA_ACE
 static mdn_result_t    converter_utf5_open(mdn_converter_t ctx,
                                            mdn_converter_dir_t dir,
                                            void **privdata);
@@ -187,6 +206,8 @@ static mdn_result_t converter_utf5_convert(mdn_converter_t ctx,
                                               mdn_converter_dir_t dir,
                                               const char *from,
                                               char *to, size_t tolen);
+#endif
+
 #ifdef DEBUG
 static mdn_result_t    converter_uescape_open(mdn_converter_t ctx,
                                               mdn_converter_dir_t dir,
@@ -205,14 +226,14 @@ static converter_ops_t none_converter_ops = {
        converter_none_open,
        converter_none_close,
        converter_none_convert,
-       0,
+       MDN_NONACE,
 };
 
 static converter_ops_t iconv_converter_ops = {
        converter_iconv_open,
        converter_iconv_close,
        converter_iconv_convert,
-       0,
+       MDN_NONACE,
 };
 
 /*
@@ -371,11 +392,18 @@ mdn_converter_localencoding(mdn_converter_t ctx) {
        return (ctx->local_encoding_name);
 }
        
+int
+mdn_converter_encodingtype(mdn_converter_t ctx) {
+       assert(ctx != NULL);
+       TRACE(("mdn_converter_encodingtype()\n"));
+       return (ctx->ops->encoding_type);
+}
+
 int
 mdn_converter_isasciicompatible(mdn_converter_t ctx) {
        assert(ctx != NULL);
        TRACE(("mdn_converter_isasciicompatible()\n"));
-       return (ctx->ops->ascii_compatible);
+       return (ctx->ops->encoding_type != MDN_NONACE);
 }
 
 mdn_result_t
@@ -422,7 +450,7 @@ mdn_converter_register(const char *name,
                       mdn_converter_openproc_t open,
                       mdn_converter_closeproc_t close,
                       mdn_converter_convertproc_t convert,
-                      int ascii_compatible) {
+                      int encoding_type) {
        converter_ops_t *ops;
        mdn_result_t r;
 
@@ -438,7 +466,7 @@ mdn_converter_register(const char *name,
        ops->open = open;
        ops->close = close;
        ops->convert = convert;
-       ops->ascii_compatible = ascii_compatible;
+       ops->encoding_type = encoding_type;
 
        r = mdn_strhash_put(encoding_name_hash, name, ops);
        if (r != mdn_success)
@@ -451,11 +479,11 @@ static mdn_result_t
 register_standard_encoding(void) {
        mdn_result_t r;
 
-       r = mdn_converter_register(MDN_UTF5_ENCODING_NAME,
-                                  converter_utf5_open,
-                                  converter_utf5_close,
-                                  converter_utf5_convert,
-                                  1);
+       r = mdn_converter_register(MDN_AMCACEZ_ENCODING_NAME,
+                                  mdn__amcacez_open,
+                                  mdn__amcacez_close,
+                                  mdn__amcacez_convert,
+                                  MDN_ACE_STRICTCASE);
        if (r != mdn_success)
                return (r);
 
@@ -463,7 +491,24 @@ register_standard_encoding(void) {
                                   mdn__race_open,
                                   mdn__race_close,
                                   mdn__race_convert,
-                                  1);
+                                  MDN_ACE_LOOSECASE);
+       if (r != mdn_success)
+               return (r);
+
+       r = mdn_converter_register(MDN_DUDE_ENCODING_NAME,
+                                  mdn__dude_open,
+                                  mdn__dude_close,
+                                  mdn__dude_convert,
+                                  MDN_ACE_LOOSECASE);
+       if (r != mdn_success)
+               return (r);
+
+#ifdef MDN_EXTRA_ACE
+       r = mdn_converter_register(MDN_UTF5_ENCODING_NAME,
+                                  converter_utf5_open,
+                                  converter_utf5_close,
+                                  converter_utf5_convert,
+                                  MDN_ACE_LOOSECASE);
        if (r != mdn_success)
                return (r);
 
@@ -471,7 +516,7 @@ register_standard_encoding(void) {
                                   mdn__brace_open,
                                   mdn__brace_close,
                                   mdn__brace_convert,
-                                  1);
+                                  MDN_ACE_STRICTCASE);
        if (r != mdn_success)
                return (r);
 
@@ -479,15 +524,7 @@ register_standard_encoding(void) {
                                   mdn__lace_open,
                                   mdn__lace_close,
                                   mdn__lace_convert,
-                                  1);
-       if (r != mdn_success)
-               return (r);
-
-       r = mdn_converter_register(MDN_DUDE_ENCODING_NAME,
-                                  mdn__dude_open,
-                                  mdn__dude_close,
-                                  mdn__dude_convert,
-                                  1);
+                                  MDN_ACE_LOOSECASE);
        if (r != mdn_success)
                return (r);
 
@@ -495,7 +532,7 @@ register_standard_encoding(void) {
                                   mdn__utf6_open,
                                   mdn__utf6_close,
                                   mdn__utf6_convert,
-                                  1);
+                                  MDN_ACE_LOOSECASE);
        if (r != mdn_success)
                return (r);
 
@@ -503,7 +540,7 @@ register_standard_encoding(void) {
                                   mdn__altdude_open,
                                   mdn__altdude_close,
                                   mdn__altdude_convert,
-                                  1);
+                                  MDN_ACE_LOOSECASE);
        if (r != mdn_success)
                return (r);
 
@@ -511,7 +548,7 @@ register_standard_encoding(void) {
                                   mdn__amcacem_open,
                                   mdn__amcacem_close,
                                   mdn__amcacem_convert,
-                                  1);
+                                  MDN_ACE_STRICTCASE);
        if (r != mdn_success)
                return (r);
 
@@ -519,7 +556,7 @@ register_standard_encoding(void) {
                                   mdn__amcaceo_open,
                                   mdn__amcaceo_close,
                                   mdn__amcaceo_convert,
-                                  1);
+                                  MDN_ACE_STRICTCASE);
        if (r != mdn_success)
                return (r);
 
@@ -527,17 +564,42 @@ register_standard_encoding(void) {
                                   mdn__amcacer_open,
                                   mdn__amcacer_close,
                                   mdn__amcacer_convert,
-                                  1);
+                                  MDN_ACE_STRICTCASE);
        if (r != mdn_success)
                return (r);
 
+       r = mdn_converter_register(MDN_AMCACEV_ENCODING_NAME,
+                                  mdn__amcacev_open,
+                                  mdn__amcacev_close,
+                                  mdn__amcacev_convert,
+                                  MDN_ACE_STRICTCASE);
+       if (r != mdn_success)
+               return (r);
+
+       r = mdn_converter_register(MDN_AMCACEW_ENCODING_NAME,
+                                  mdn__amcacew_open,
+                                  mdn__amcacew_close,
+                                  mdn__amcacew_convert,
+                                  MDN_ACE_STRICTCASE);
+       if (r != mdn_success)
+               return (r);
+
+       r = mdn_converter_register(MDN_MACE_ENCODING_NAME,
+                                  mdn__mace_open,
+                                  mdn__mace_close,
+                                  mdn__mace_convert,
+                                  MDN_ACE_STRICTCASE);
+       if (r != mdn_success)
+               return (r);
+#endif /* MDN_EXTRA_ACE */
+
 #ifdef DEBUG
        /* This is convenient for debug.  Not useful for other purposes. */
        r = mdn_converter_register("U-escape",
                                   converter_uescape_open,
                                   converter_uescape_close,
                                   converter_uescape_convert,
-                                  0);
+                                  MDN_NONACE);
        if (r != mdn_success)
                return (r);
 #endif /* DEBUG */
@@ -561,8 +623,11 @@ mdn_converter_addalias(const char *alias_name, const char *real_name) {
        if (strcmp(alias_name, real_name) == 0)
                return (mdn_success);
 
-       if (encoding_alias_hash == NULL)
+       if (encoding_alias_hash == NULL) {
+               WARNING(("mdn_converter_addalias: the module is not \n"
+                        "initialized"));
                return (mdn_failure);
+       }
 
        if ((rn_copy = malloc(strlen(real_name) + 1)) == NULL) {
                WARNING(("mdn_converter_addalias: malloc failed\n"));
@@ -905,6 +970,7 @@ converter_iconv_convert(mdn_converter_t ctx, void *privdata,
                case E2BIG:
                        return (mdn_buffer_overflow);
                default:
+                       WARNING(("iconv failed with errno %d\n", errno));
                        return (mdn_failure);
                }
        }
@@ -935,6 +1001,8 @@ converter_iconv_convert(mdn_converter_t ctx, void *privdata,
                        case E2BIG:
                                return (mdn_buffer_overflow);
                        default:
+                               WARNING(("iconv failed with errno %d\n",
+                                        errno));
                                return (mdn_failure);
                        }
                }
@@ -948,6 +1016,8 @@ converter_iconv_convert(mdn_converter_t ctx, void *privdata,
  * Conversion to/from UTF-5.
  */
 
+#ifdef MDN_EXTRA_ACE
+
 /* ARGSUSED */
 static mdn_result_t
 converter_utf5_open(mdn_converter_t ctx, mdn_converter_dir_t dir,
@@ -1020,6 +1090,8 @@ overflow:
        return (mdn_buffer_overflow);
 }
 
+#endif
+
 #ifdef DEBUG
 /*
  * Conversion to/from unicode escape string.
index 967b718951223ca7e42501915a54e2f6bb47639d..b0928bb0df8724d5a825dc95de2da5b715e6a3d8 100644 (file)
@@ -1,5 +1,5 @@
 #ifndef lint
-static char *rcsid = "$Id: debug.c,v 1.6 2000/07/04 03:52:36 ishisone Exp $";
+static char *rcsid = "$Id: debug.c,v 1.1 2002/01/02 02:46:40 marka Exp $";
 #endif
 
 /*
@@ -11,8 +11,8 @@ static char *rcsid = "$Id: debug.c,v 1.6 2000/07/04 03:52:36 ishisone Exp $";
  * 
  * The following License Terms and Conditions apply, unless a different
  * license is obtained from Japan Network Information Center ("JPNIC"),
- * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku,
- * Tokyo, Japan.
+ * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda,
+ * Chiyoda-ku, Tokyo 101-0047, Japan.
  * 
  * 1. Use, Modification and Redistribution (including distribution of any
  *    modified or derived work) in source and/or binary forms is permitted
index 4f8fa78e32bb7973e8c6721aee12dbe9582db4d3..69a9433c942f133a660a972682a24d6e2f99b839 100644 (file)
@@ -1,5 +1,5 @@
 #ifndef lint
-static char *rcsid = "$Id: delimitermap.c,v 1.1 2001/06/09 00:30:15 tale Exp $";
+static char *rcsid = "$Id: delimitermap.c,v 1.2 2002/02/08 05:40:04 marka Exp $";
 #endif
 
 /*
@@ -11,8 +11,8 @@ static char *rcsid = "$Id: delimitermap.c,v 1.1 2001/06/09 00:30:15 tale Exp $";
  * 
  * The following License Terms and Conditions apply, unless a different
  * license is obtained from Japan Network Information Center ("JPNIC"),
- * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku,
- * Tokyo, Japan.
+ * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda,
+ * Chiyoda-ku, Tokyo 101-0047, Japan.
  * 
  * 1. Use, Modification and Redistribution (including distribution of any
  *    modified or derived work) in source and/or binary forms is permitted
index 2ef844254f22033e68fcc03c9e8d768c9a09e7c3..33b38444c490fd97a98c995cae12947726917c2b 100644 (file)
@@ -1,5 +1,5 @@
 #ifndef lint
-static char *rcsid = "$Id: dn.c,v 1.8 2000/09/20 02:47:31 ishisone Exp $";
+static char *rcsid = "$Id: dn.c,v 1.1 2002/01/02 02:46:41 marka Exp $";
 #endif
 
 /*
@@ -11,8 +11,8 @@ static char *rcsid = "$Id: dn.c,v 1.8 2000/09/20 02:47:31 ishisone Exp $";
  * 
  * The following License Terms and Conditions apply, unless a different
  * license is obtained from Japan Network Information Center ("JPNIC"),
- * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku,
- * Tokyo, Japan.
+ * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda,
+ * Chiyoda-ku, Tokyo 101-0047, Japan.
  * 
  * 1. Use, Modification and Redistribution (including distribution of any
  *    modified or derived work) in source and/or binary forms is permitted
index b6ed0a463e5b3e603f8ce408d18a13d868cced85..700780345cb484fac7e5ef4d06d200dbe5f98a9a 100644 (file)
@@ -1,5 +1,5 @@
 #ifndef lint
-static char *rcsid = "$Id: dude.c,v 1.1 2001/06/09 00:30:15 tale Exp $";
+static char *rcsid = "$Id: dude.c,v 1.2 2002/02/08 05:40:07 marka Exp $";
 #endif
 
 /*
@@ -12,8 +12,8 @@ static char *rcsid = "$Id: dude.c,v 1.1 2001/06/09 00:30:15 tale Exp $";
  * 
  * The following License Terms and Conditions apply, unless a different
  * license is obtained from Japan Network Information Center ("JPNIC"),
- * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku,
- * Tokyo, Japan.
+ * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda,
+ * Chiyoda-ku, Tokyo 101-0047, Japan.
  * 
  * 1. Use, Modification and Redistribution (including distribution of any
  *    modified or derived work) in source and/or binary forms is permitted
@@ -77,17 +77,20 @@ static char *rcsid = "$Id: dude.c,v 1.1 2001/06/09 00:30:15 tale Exp $";
 #include <mdn/ace.h>
 #include <mdn/util.h>
 
-#ifndef MDN_DUDE_PREFIX
+/*
+ * The following prefix is recommended by IETF IDN wg for test purposes.
+ */
+#if !defined(MDN_DUDE_PREFIX) && !defined(MDN_DUDE_SUFFIX)
 #define MDN_DUDE_PREFIX                "dq--"
 #endif
 
-static unsigned long nibble_mask[] = {
-       0,              /* dummy: this element is never referenced. */
-       0xf,
-       0xff,
-       0xfff,
-       0xffff,
-       0xfffff,
+static const char *base32encode = "abcdefghijkmnpqrstuvwxyz23456789";
+static const int base32decode_ascii[26] = {
+       0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, -1, 11, 12, -1, 13, 14, 15,
+       16, 17, 18, 19, 20, 21, 22, 23,
+};
+static const int base32decode_digit[10] = {
+       -1, -1, 24, 25, 26, 27, 28, 29, 30, 31,
 };
 
 static mdn_result_t    dude_decode(const char *from, size_t fromlen,
@@ -97,31 +100,40 @@ static mdn_result_t        dude_encode(const char *from, size_t fromlen,
 static int             get_nibblelength(unsigned long v);
 static int             dude_getwc(const char *s, size_t len,
                                   unsigned long *vp);
-static int             dude_putwc(char *s, size_t len, unsigned long v,
-                                  int w);
+static int             dude_putwc(char *s, size_t len, unsigned long v);
 
 static mdn__ace_t dude_ctx = {
+#ifdef MDN_DUDE_PREFIX
        mdn__ace_prefix,
        MDN_DUDE_PREFIX,
+#else
+       mdn__ace_suffix,
+       MDN_DUDE_SUFFIX,
+#endif
        dude_encode,
        dude_decode,
 };
 
 /* ARGSUSED */
 mdn_result_t
-mdn__dude_open(mdn_converter_t ctx, mdn_converter_dir_t dir, void **privdata) {
+mdn__dude_open(mdn_converter_t ctx, mdn_converter_dir_t dir,
+                 void **privdata)
+{
        return (mdn_success);
 }
 
 /* ARGSUSED */
 mdn_result_t
-mdn__dude_close(mdn_converter_t ctx, void *privdata, mdn_converter_dir_t dir) {
+mdn__dude_close(mdn_converter_t ctx, void *privdata,
+                  mdn_converter_dir_t dir)
+{
        return (mdn_success);
 }
 
 mdn_result_t
-mdn__dude_convert(mdn_converter_t ctx, void *privdata, mdn_converter_dir_t dir,
-                 const char *from, char *to, size_t tolen)
+mdn__dude_convert(mdn_converter_t ctx, void *privdata,
+                    mdn_converter_dir_t dir,
+                    const char *from, char *to, size_t tolen)
 {
        mdn_result_t r;
 
@@ -144,9 +156,9 @@ mdn__dude_convert(mdn_converter_t ctx, void *privdata, mdn_converter_dir_t dir,
 static mdn_result_t
 dude_decode(const char *from, size_t fromlen, char *to, size_t tolen) {
        size_t len;
-       unsigned long prev, v, mask;
+       unsigned long prev, v;
 
-       prev = 0;
+       prev = 96;
        while (fromlen > 0) {
                if (from[0] == '-') {
                        v = '-';
@@ -158,14 +170,16 @@ dude_decode(const char *from, size_t fromlen, char *to, size_t tolen) {
                                return (mdn_invalid_encoding);
                        from += len;
                        fromlen -= len;
-                       mask = nibble_mask[len];
-                       v = (prev & ~mask) | v;
+                       v = prev ^ v;
 
                        /*
-                        * Perform extra sanity checks.
+                        * Since round-trip check is performed later
+                        * by mdn__ace_convert(), we don't need the
+                        * following sanity checking.
+                        *
+                        * if (v == '-' || get_nibblelength(v) != len)
+                        *      return (mdn_invalid_encoding);
                         */
-                       if (v == '-' || get_nibblelength(prev ^ v) != len)
-                               return (mdn_invalid_encoding);
 
                        prev = v;
                }
@@ -189,14 +203,14 @@ dude_decode(const char *from, size_t fromlen, char *to, size_t tolen) {
 static mdn_result_t
 dude_encode(const char *from, size_t fromlen, char *to, size_t tolen) {
        size_t len;
-       unsigned long prev, c, v, mask;
+       unsigned long prev, c;
 
-       prev = 0;
+       prev = 96;
        while (fromlen > 0) {
                len = mdn_utf8_getwc(from, fromlen, &c);
                from += len;
                fromlen -= len;
-               if (len == 0 || c >= 0x100000)
+               if (len == 0)
                        return (mdn_invalid_encoding);
                if (c == '-') {
                        /*
@@ -207,13 +221,10 @@ dude_encode(const char *from, size_t fromlen, char *to, size_t tolen) {
                        *to++ = '-';
                        tolen--;
                } else {
-                       int nlen = get_nibblelength(prev ^ c);
-                       mask = nibble_mask[nlen];
-                       v = c & mask;
-                       prev = c;
-                       len = dude_putwc(to, tolen, v, nlen);
+                       len = dude_putwc(to, tolen, prev ^ c);
                        if (len == 0)
                                return (mdn_buffer_overflow);
+                       prev = c;
                        to += len;
                        tolen -= len;
                }
@@ -232,82 +243,63 @@ dude_encode(const char *from, size_t fromlen, char *to, size_t tolen) {
 
 static int
 get_nibblelength(unsigned long v) {
-       assert(v < 0x100000);
-
-       if (v <= 0xf)
-               return 1;
-       else if (v <= 0xff)
-               return 2;
-       else if (v <= 0xfff)
-               return 3;
-       else if (v <= 0xffff)
-               return 4;
-       else
-               return 5;
+       assert(v <= 0x7fffffff);
+
+       if (v < (1<<16)) {                      /* v <= 16bit */
+               if (v < (1<<8))                 /* v <= 8bit */
+                       return ((v < (1<<4)) ? 1 : 2);
+               else                            /* 8bit < v <= 16bit */
+                       return ((v < (1<<12)) ? 3 : 4);
+       } else {                                /* 16bit < c */
+               if (v < (1<<24))                /* 16bit < c <= 24bit */
+                       return ((v < (1<<20)) ? 5 : 6);
+               else                            /* 24bit < c <= 31bit */
+                       return ((v < (1<<28)) ? 7 : 8);
+       }
 }
 
 static int
 dude_getwc(const char *s, size_t len, unsigned long *vp) {
        size_t orglen = len;
        unsigned long v = 0;
-       int c;
 
-       if (len < 1)
-               return (0);
+       while (len > 0) {
+               int c = *s++;
+
+               if ('a' <= c && c <= 'z')
+                       c = base32decode_ascii[c - 'a'];
+               else if ('A' <= c && c <= 'Z')
+                       c = base32decode_ascii[c - 'A'];
+               else if ('0' <= c && c <= '9')
+                       c = base32decode_digit[c - '0'];
+               else
+                       c = -1;
 
-       c = *s++;
-       len--;
+               if (c < 0)
+                       return (0);     /* invalid character */
 
-       if ('G' <= c && c <= 'V')
-               v = c - 'G';
-       else if ('g' <= c && c <= 'v')
-               v = c - 'g';
-       else    /* invalid character */
-               return (0);
+               v = (v << 4) + (c & 0xf);
 
-       while (len > 0) {
-               c = *s++;
-               if ('0' <= c && c <= '9')
-                       c = c - '0';
-               else if ('A' <= c && c <= 'F')
-                       c = c - 'A' + 10;
-               else if ('a' <= c && c <= 'f')
-                       c = c - 'a' + 10;
-               else
-                       break;
-               v = (v << 4) + c;
                len--;
+               if ((c & 0x10) == 0) {
+                       *vp = v;
+                       return (orglen - len);
+               }
        }
-       len = orglen - len;
-
-       if (len > 5)
-               return (0);
-
-       *vp = v;
-       return (len);
+       return (0);     /* final character missing */
 }
 
 static int
-dude_putwc(char *s, size_t len, unsigned long v, int w) {
-       int i;
-
-       assert(v < 0x100000);
-       assert(w > 0 && w < 6 && v <= nibble_mask[w]);
+dude_putwc(char *s, size_t len, unsigned long v) {
+       int i, w, shift;
 
-       if (len < w)
+       if ((w = get_nibblelength(v)) > len)
                return (0);
 
-       for (i = w - 1; i >= 0; i--) {
-               int x = v & 0xf;
-
-               if (i == 0)
-                       s[i] = 'g' + x;
-               else if (x < 10)
-                       s[i] = '0' + x;
-               else
-                       s[i] = 'a' + x - 10;
+       for (shift = 0, i = w - 1; i >= 0; i--) {
+               s[i] = base32encode[(v & 0xf) + shift];
                v >>= 4;
+               shift = 16;
        }
-
        return (w);
 }
index e960c4ea806987c8a13c99ecaf0a106de1ad4a3b..59ff8bac66c86b6d3d6f5ce1b0e943818003bf50 100644 (file)
@@ -1,5 +1,5 @@
 #ifndef lint
-static char *rcsid = "$Id: filechecker.c,v 1.1 2001/06/09 00:30:15 tale Exp $";
+static char *rcsid = "$Id: filechecker.c,v 1.2 2002/02/08 05:40:08 marka Exp $";
 #endif
 
 /*
@@ -11,8 +11,8 @@ static char *rcsid = "$Id: filechecker.c,v 1.1 2001/06/09 00:30:15 tale Exp $";
  * 
  * The following License Terms and Conditions apply, unless a different
  * license is obtained from Japan Network Information Center ("JPNIC"),
- * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku,
- * Tokyo, Japan.
+ * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda,
+ * Chiyoda-ku, Tokyo 101-0047, Japan.
  * 
  * 1. Use, Modification and Redistribution (including distribution of any
  *    modified or derived work) in source and/or binary forms is permitted
index 5669e8b4ecb03af617a5f2f9f9b8b4b152750ce6..e4a6394897a6f8a593bdb1b32758f272191c5475 100644 (file)
@@ -1,5 +1,5 @@
 #ifndef lint
-static char *rcsid = "$Id: filemapper.c,v 1.1 2001/06/09 00:30:15 tale Exp $";
+static char *rcsid = "$Id: filemapper.c,v 1.2 2002/02/08 05:40:09 marka Exp $";
 #endif
 
 /*
@@ -11,8 +11,8 @@ static char *rcsid = "$Id: filemapper.c,v 1.1 2001/06/09 00:30:15 tale Exp $";
  * 
  * The following License Terms and Conditions apply, unless a different
  * license is obtained from Japan Network Information Center ("JPNIC"),
- * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku,
- * Tokyo, Japan.
+ * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda,
+ * Chiyoda-ku, Tokyo 101-0047, Japan.
  * 
  * 1. Use, Modification and Redistribution (including distribution of any
  *    modified or derived work) in source and/or binary forms is permitted
index 8562e87520f2eaa99bee0cf447f80f35db52d6ce..9539c4ce9ce074f86ddf36e30f27cfc08a6c5b22 100644 (file)
@@ -1,5 +1,5 @@
 #ifndef lint
-static char *rcsid = "$Id: lace.c,v 1.11 2001/03/28 06:37:24 m-kasahr Exp $";
+static char *rcsid = "$Id: lace.c,v 1.1 2002/01/02 02:46:42 marka Exp $";
 #endif
 
 /*
@@ -11,8 +11,8 @@ static char *rcsid = "$Id: lace.c,v 1.11 2001/03/28 06:37:24 m-kasahr Exp $";
  * 
  * The following License Terms and Conditions apply, unless a different
  * license is obtained from Japan Network Information Center ("JPNIC"),
- * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku,
- * Tokyo, Japan.
+ * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda,
+ * Chiyoda-ku, Tokyo 101-0047, Japan.
  * 
  * 1. Use, Modification and Redistribution (including distribution of any
  *    modified or derived work) in source and/or binary forms is permitted
index d61a898739e7534c6be3ca470398eec5eefc9713..cdfcbc892be710e6140fe373d0e5d5380e105972 100644 (file)
@@ -1,5 +1,5 @@
 #ifndef lint
-static char *rcsid = "$Id: localencoding.c,v 1.8 2000/09/20 02:47:31 ishisone Exp $";
+static char *rcsid = "$Id: localencoding.c,v 1.1 2002/01/02 02:46:42 marka Exp $";
 #endif
 
 /*
@@ -11,8 +11,8 @@ static char *rcsid = "$Id: localencoding.c,v 1.8 2000/09/20 02:47:31 ishisone Ex
  * 
  * The following License Terms and Conditions apply, unless a different
  * license is obtained from Japan Network Information Center ("JPNIC"),
- * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku,
- * Tokyo, Japan.
+ * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda,
+ * Chiyoda-ku, Tokyo 101-0047, Japan.
  * 
  * 1. Use, Modification and Redistribution (including distribution of any
  *    modified or derived work) in source and/or binary forms is permitted
index badea85d1ebc6c54bdf1c3514388c51cbe201e99..a94ab5f20de3b5e83b978686a234c0cd7f37c4d3 100644 (file)
@@ -1,5 +1,5 @@
 #ifndef lint
-static char *rcsid = "$Id: log.c,v 1.12 2000/10/16 05:00:18 ishisone Exp $";
+static char *rcsid = "$Id: log.c,v 1.1 2002/01/02 02:46:43 marka Exp $";
 #endif
 
 /*
@@ -11,8 +11,8 @@ static char *rcsid = "$Id: log.c,v 1.12 2000/10/16 05:00:18 ishisone Exp $";
  * 
  * The following License Terms and Conditions apply, unless a different
  * license is obtained from Japan Network Information Center ("JPNIC"),
- * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku,
- * Tokyo, Japan.
+ * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda,
+ * Chiyoda-ku, Tokyo 101-0047, Japan.
  * 
  * 1. Use, Modification and Redistribution (including distribution of any
  *    modified or derived work) in source and/or binary forms is permitted
@@ -149,7 +149,8 @@ mdn_log_setlevel(int level) {
 
 int
 mdn_log_getlevel(void) {
-       initialize();
+       if (log_level < 0)
+               initialize();
        return log_level;
 }
 
diff --git a/contrib/idn/mdnkit/lib/mace.c b/contrib/idn/mdnkit/lib/mace.c
new file mode 100644 (file)
index 0000000..3f3e3e6
--- /dev/null
@@ -0,0 +1,506 @@
+#ifndef lint
+static char *rcsid = "$Id: mace.c,v 1.1 2002/02/08 05:40:14 marka Exp $";
+#endif
+
+/*
+ * Copyright (c) 2001 Japan Network Information Center.  All rights reserved.
+ *  
+ * By using this file, you agree to the terms and conditions set forth bellow.
+ * 
+ *                     LICENSE TERMS AND CONDITIONS 
+ * 
+ * The following License Terms and Conditions apply, unless a different
+ * license is obtained from Japan Network Information Center ("JPNIC"),
+ * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda,
+ * Chiyoda-ku, Tokyo 101-0047, Japan.
+ * 
+ * 1. Use, Modification and Redistribution (including distribution of any
+ *    modified or derived work) in source and/or binary forms is permitted
+ *    under this License Terms and Conditions.
+ * 
+ * 2. Redistribution of source code must retain the copyright notices as they
+ *    appear in each source code file, this License Terms and Conditions.
+ * 
+ * 3. Redistribution in binary form must reproduce the Copyright Notice,
+ *    this License Terms and Conditions, in the documentation and/or other
+ *    materials provided with the distribution.  For the purposes of binary
+ *    distribution the "Copyright Notice" refers to the following language:
+ *    "Copyright (c) Japan Network Information Center.  All rights reserved."
+ * 
+ * 4. Neither the name of JPNIC may be used to endorse or promote products
+ *    derived from this Software without specific prior written approval of
+ *    JPNIC.
+ * 
+ * 5. Disclaimer/Limitation of Liability: THIS SOFTWARE IS PROVIDED BY JPNIC
+ *    "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ *    LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+ *    PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL JPNIC BE LIABLE
+ *    FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ *    CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ *    SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+ *    BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ *    WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ *    OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ *    ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+ * 
+ * 6. Indemnification by Licensee
+ *    Any person or entities using and/or redistributing this Software under
+ *    this License Terms and Conditions shall defend indemnify and hold
+ *    harmless JPNIC from and against any and all judgements damages,
+ *    expenses, settlement liabilities, cost and other liabilities of any
+ *    kind as a result of use and redistribution of this Software or any
+ *    claim, suite, action, litigation or proceeding by any third party
+ *    arising out of or relates to this License Terms and Conditions.
+ * 
+ * 7. Governing Law, Jurisdiction and Venue
+ *    This License Terms and Conditions shall be governed by and and
+ *    construed in accordance with the law of Japan. Any person or entities
+ *    using and/or redistributing this Software under this License Terms and
+ *    Conditions hereby agrees and consent to the personal and exclusive
+ *    jurisdiction and venue of Tokyo District Court of Japan.
+ */
+
+#include <config.h>
+
+#include <stddef.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include <mdn/result.h>
+#include <mdn/assert.h>
+#include <mdn/logmacro.h>
+#include <mdn/converter.h>
+#include <mdn/utf8.h>
+#include <mdn/debug.h>
+#include <mdn/mace.h>
+#include <mdn/ace.h>
+#include <mdn/util.h>
+
+/*
+ * MACE
+ */
+
+#ifndef MDN_MACE_PREFIX
+#define MDN_MACE_PREFIX                "mq--"
+#endif
+
+/* Mode switcher */
+#define MACE_MODE_SWITCH       '-'     /* Literal/Non-Literal switching */
+
+/* Submode introducer */
+#define MACE_SUBMODE_BMP_A     'w'     /* U+0000-U+1FFF, U+A000-U+FFFF */
+#define MACE_SUBMODE_BMP_B     'x'     /* U+2000-U+9FFF */
+#define MACE_SUBMODE_NONBMP    'y'     /* U+10000-U+10FFFF */
+#define MACE_SUBMODE_COMP      'z'     /* 4/9bit differential encoding */
+
+/* Initial state */
+#define MACE_SUBMODE_INIT      MACE_SUBMODE_BMP_A
+#define MACE_PREV_INIT         0
+
+#define MACE_COMP_BITS_1       4
+#define MACE_COMP_BITS_2       9
+#define MACE_COMP_MASK         ((1 << MACE_COMP_BITS_2) - 1)
+#define MACE_SAME_PREFIX(b, c1, c2) (((c1) ^ (c2)) < (1 << (b)))
+
+#define MACE_INVALID_CHAR      0x80000000
+
+static mdn_result_t    mace_decode(const char *from, size_t fromlen,
+                                    char *to, size_t tolen);
+static mdn_result_t    mace_encode(const char *from, size_t fromlen,
+                                    char *to, size_t tolen);
+static int             mace_get_submode(int submode, unsigned long c,
+                                         unsigned long prev,
+                                         const char *rest, size_t rlen);
+static int             mace_getbase32(const char *s, int w,
+                                       unsigned long *vp);
+static int             mace_encodelength(int submode);
+static int             mace_getwc(const char *s, size_t len, int mode,
+                                   unsigned long ref, unsigned long *vp);
+static int             mace_putwc(char *s, size_t len, int mode,
+                                   unsigned long ref, unsigned long v);
+static int             peek_next_nonldh(const char *rest, size_t rlen,
+                                        unsigned long *cp);
+static int             letter_or_digit(unsigned long v);
+
+static mdn__ace_t mace_ctx = {
+       mdn__ace_prefix,
+       MDN_MACE_PREFIX,
+       mace_encode,
+       mace_decode,
+};
+
+/* ARGSUSED */
+mdn_result_t
+mdn__mace_open(mdn_converter_t ctx, mdn_converter_dir_t dir,
+              void **privdata)
+{
+       return (mdn_success);
+}
+
+/* ARGSUSED */
+mdn_result_t
+mdn__mace_close(mdn_converter_t ctx, void *privdata,
+               mdn_converter_dir_t dir)
+{
+       return (mdn_success);
+}
+
+mdn_result_t
+mdn__mace_convert(mdn_converter_t ctx, void *privdata,
+                 mdn_converter_dir_t dir,
+                 const char *from, char *to, size_t tolen)
+{
+       mdn_result_t r;
+
+       assert(ctx != NULL &&
+              (dir == mdn_converter_l2u || dir == mdn_converter_u2l));
+
+       TRACE(("mdn__mace_convert(dir=%s,from=\"%s\")\n",
+              dir == mdn_converter_l2u ? "l2u" : "u2l",
+              mdn_debug_xstring(from, 20)));
+
+       r = mdn__ace_convert(&mace_ctx, dir, from, to, tolen);
+       if (r != mdn_success)
+               return (r);
+
+       DUMP(("mdn__mace_convert: \"%s\"\n", mdn_debug_xstring(to, 70)));
+
+       return (r);
+}
+
+static mdn_result_t
+mace_decode(const char *from, size_t fromlen, char *to, size_t tolen) {
+       int literal = 0;
+       int submode = MACE_SUBMODE_INIT;
+       unsigned long prev = MACE_PREV_INIT;
+
+       while (fromlen > 0) {
+               int consume = 1;        /* # of input octets consumed */
+               unsigned long c = MACE_INVALID_CHAR;
+
+               if (from[0] == MACE_MODE_SWITCH) {
+                       /*
+                        * LD/non-LD mode switcher or just a hyphen.
+                        */
+                       if (fromlen > 1 && from[1] == MACE_MODE_SWITCH) {
+                               c = MACE_MODE_SWITCH;
+                               consume = 2;
+                       } else {
+                               literal = !literal;
+                       }
+               } else if (literal) {
+                       /*
+                        * Now in LD mode.  Just output literally.
+                        */
+                       if (tolen < 1)
+                               return (mdn_buffer_overflow);
+                       c = from[0];
+               } else if (from[0] == 'w' || from[0] == 'W') {
+                       submode = MACE_SUBMODE_BMP_A;
+               } else if (from[0] == 'x' || from[0] == 'X') {
+                       submode = MACE_SUBMODE_BMP_B;
+               } else if (from[0] == 'y' || from[0] == 'Y') {
+                               submode = MACE_SUBMODE_NONBMP;
+               } else if (from[0] == 'z' || from[0] == 'Z') {
+                       submode = MACE_SUBMODE_COMP;
+               } else {
+                       /*
+                        * Must be base32-format string.
+                        */
+                       consume = mace_getwc(from, fromlen, submode,
+                                             prev, &c);
+                       if (consume == 0)
+                               return (mdn_invalid_encoding);
+                       prev = c;
+               }
+
+               /* Output decoded character. */
+               if (c != MACE_INVALID_CHAR) {
+                       size_t len = mdn_utf8_putwc(to, tolen, c);
+                       if (len == 0)
+                               return (mdn_buffer_overflow);
+                       to += len;
+                       tolen -= len;
+               }
+
+               from += consume;
+               fromlen -= consume;
+       }
+
+       /*
+        * Terminate with NUL.
+        */
+       if (tolen <= 0)
+               return (mdn_buffer_overflow);
+       *to = '\0';
+
+       return (mdn_success);
+}
+
+static mdn_result_t
+mace_encode(const char *from, size_t fromlen, char *to, size_t tolen) {
+       int literal = 0;
+       int submode = MACE_SUBMODE_INIT;
+       unsigned long prev = MACE_PREV_INIT;
+
+       while (fromlen > 0) {
+               unsigned long c;
+               size_t len;
+
+               /* Get next character. */
+               len = mdn_utf8_getwc(from, fromlen, &c);
+               if (len == 0 || c > 0x10ffff)
+                       return (mdn_invalid_encoding);
+               from += len;
+               fromlen -= len;
+
+               if (c == '-') {
+                       /*
+                        * Hyphen.  Always encode as `--'.
+                        */
+                       if (tolen < 2)
+                               return (mdn_buffer_overflow);
+                       to[0] = to[1] = '-';
+                       to += 2;
+                       tolen -= 2;
+               } else if (letter_or_digit(c)) {
+                       /*
+                        * Letter or digit.
+                        * Shift to Literal mode if necessary, then
+                        * encode it as it is.
+                        */
+                       if (!literal) {
+                               if (tolen < 1)
+                                       return (mdn_buffer_overflow);
+                               *to++ = MACE_MODE_SWITCH;
+                               tolen--;
+                               literal = 1;
+                       }
+                       if (tolen < 1)
+                               return (mdn_buffer_overflow);
+                       *to++ = c;
+                       tolen--;
+               } else {
+                       /*
+                        * Non-LDH character.
+                        */
+                       int new_submode;
+
+                       /* Move back from LD mode if necessary. */
+                       if (literal) {
+                               if (tolen < 1)
+                                       return (mdn_buffer_overflow);
+                               *to++ = MACE_MODE_SWITCH;
+                               tolen--;
+                               literal = 0;
+                       }
+
+                       /* Determine the new submode and shift to it. */
+                       new_submode = mace_get_submode(submode, c, prev,
+                                                      from, fromlen);
+                       if (new_submode != submode) {
+                               if (tolen < 1)
+                                       return (mdn_buffer_overflow);
+                               *to++ = new_submode;    /* introducer */
+                               tolen--;
+                               submode = new_submode;
+                       }
+
+                       /* Encode and output the character. */
+                       len = mace_putwc(to, tolen, submode, prev, c);
+                       if (len == 0)
+                               return (mdn_buffer_overflow);
+                       to += len;
+                       tolen -= len;
+
+                       prev = c;
+               }
+       }
+
+       /*
+        * Terminate with NUL.
+        */
+       if (tolen < 1)
+               return (mdn_buffer_overflow);
+
+       *to = '\0';
+       return (mdn_success);
+}
+
+static int
+mace_get_submode(int submode, unsigned long c, unsigned long prev,
+                 const char *rest, size_t rlen)
+{
+       /*
+        * Determine the submode.
+        */
+       unsigned long nxt;
+
+       /*
+        * First, check if we should use Compress submode.
+        */
+       if (MACE_SAME_PREFIX(MACE_COMP_BITS_2, prev, c) &&
+           (submode == MACE_SUBMODE_COMP ||
+            c > 0xffff ||
+            MACE_SAME_PREFIX(MACE_COMP_BITS_1, prev, c) ||
+            (peek_next_nonldh(rest, rlen, &nxt) &&
+             MACE_SAME_PREFIX(MACE_COMP_BITS_2, c, nxt))))
+               return (MACE_SUBMODE_COMP);
+
+       /*
+        * Then, determine the submode based on the code point.
+        */
+       if (c > 0xffff)
+               return (MACE_SUBMODE_NONBMP);
+       else if (0x2000 <= c && c <= 0x9fff)
+               return (MACE_SUBMODE_BMP_B);
+       else
+               return (MACE_SUBMODE_BMP_A);
+
+}
+
+static int
+mace_encodelength(int submode) {
+       switch (submode) {
+       case MACE_SUBMODE_BMP_A:
+       case MACE_SUBMODE_BMP_B:
+               return (3);
+       case MACE_SUBMODE_NONBMP:
+               return (4);
+       default: /* MACE_SUBMODE_COMP */
+               return (1);     /* actually 1 or 2. caller must decide. */
+       }
+}
+
+static int
+mace_getbase32(const char *s, int w, unsigned long *vp) {
+       unsigned long v = 0;
+
+       while (w-- > 0) {
+               int c = *s++;
+
+               if ('a' <= c && c <= 'v')
+                       c = c - 'a' + 10;
+               else if ('A' <= c && c <= 'V')
+                       c = c - 'A' + 10;
+               else if ('0' <= c && c <= '9')
+                       c = c - '0';
+               else
+                       return (0);     /* invalid character */
+               v = (v << 5) + (c & 0x1f);
+       }
+       *vp = v;
+       return (1);
+}
+
+static int
+mace_getwc(const char *s, size_t len, int submode,
+          unsigned long prev, unsigned long *vp)
+{
+       unsigned long v = 0;
+       int w = mace_encodelength(submode);
+
+       if (len < w || !mace_getbase32(s, w, &v))
+               return (0);
+
+       switch (submode) {
+       case MACE_SUBMODE_BMP_A:
+               if (v >= 0x2000)
+                       v += 0x8000;
+               break;
+       case MACE_SUBMODE_BMP_B:
+               v += 0x2000;
+               break;
+       case MACE_SUBMODE_NONBMP:
+               v += 0x10000;
+               break;
+       case MACE_SUBMODE_COMP:
+               if (v > 0xf) {
+                       w = 2;
+                       if (len < w || !mace_getbase32(s, w, &v))
+                               return (0);
+               }
+               v = prev ^ (v & MACE_COMP_MASK);
+               break;
+       default:
+               FATAL(("mace_getwc: internal error"));
+               break;
+       }
+       *vp = v;
+
+       return (w);
+}
+
+static int
+mace_putwc(char *s, size_t len, int submode,
+          unsigned long prev, unsigned long v)
+{
+       static const char *base32encode = "0123456789abcdefghijklmnopqrstuv";
+       int w = mace_encodelength(submode);
+       int i;
+
+       switch (submode) {
+       case MACE_SUBMODE_BMP_A:
+               if (v >= 0xa000)
+                       v -= 0x8000;
+               break;
+       case MACE_SUBMODE_BMP_B:
+               v -= 0x2000;
+               break;
+       case MACE_SUBMODE_NONBMP:
+               v -= 0x10000;
+               break;
+       case MACE_SUBMODE_COMP:
+               v = (prev ^ v) & MACE_COMP_MASK;
+               if (v > 0xf) {
+                       v |= 0x200;
+                       w++;
+               }
+               break;
+       default:
+               FATAL(("mace_putwc: internal error"));
+               break;
+       }
+
+       if (len < w)
+               return (0);
+
+       for (i = w - 1; i >= 0; i--) {
+               s[i] = base32encode[v & 0x1f];
+               v >>= 5;
+       }
+       return (w);
+}
+
+static int
+peek_next_nonldh(const char *rest, size_t rlen, unsigned long *cp) {
+       /*
+        * Get the next non-LDH character from 'rest', store its
+        * code point to '*cp' and return 1.  If there are no
+        * such character, return 0.
+        */
+       while (rlen > 0) {
+               unsigned long v;
+               size_t len;
+
+               if ((len = mdn_utf8_getwc(rest, rlen, &v)) == 0) {
+                       break;
+               } else if (v != '-' && !letter_or_digit(v)) {
+                       *cp = v;
+                       return (1);
+               }
+               rest += len;
+               rlen -= len;
+       }
+       return (0);
+}
+
+static int
+letter_or_digit(unsigned long v) {
+       if (('a' <= v && v <= 'z') ||
+           ('A' <= v && v <= 'Z') ||
+           ('0' <= v && v <= '9'))
+               return (1);
+       else
+               return (0);
+}
index 961316c0cab0a6b8b1a5c0624768fbc7d0f47ded..810df5cb161821f51af5a05246efc75870cb1b2e 100644 (file)
@@ -1,4 +1,4 @@
-# $Id: make.wnt,v 1.3 2001/06/09 00:30:16 tale Exp $
+# $Id: make.wnt,v 1.4 2002/02/08 05:40:14 marka Exp $
 # Makefile for MDN library, manually configured for WIN-NT (VC5.0)
 #
 # Copyright (c) 2000 Japan Network Information Center.  All rights reserved.
@@ -9,8 +9,8 @@
 # 
 # The following License Terms and Conditions apply, unless a different
 # license is obtained from Japan Network Information Center ("JPNIC"),
-# a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku,
-# Tokyo, Japan.
+# a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda,
+# Chiyoda-ku, Tokyo 101-0047, Japan.
 # 
 # 1. Use, Modification and Redistribution (including distribution of any
 #    modified or derived work) in source and/or binary forms is permitted
@@ -75,6 +75,9 @@ HDRS =  $(ICONVDIR)\iconv.h \
        $(INCDIR)\mdn\amcacem.h \
        $(INCDIR)\mdn\amcaceo.h \
        $(INCDIR)\mdn\amcacer.h \
+       $(INCDIR)\mdn\amcacev.h \
+       $(INCDIR)\mdn\amcacew.h \
+       $(INCDIR)\mdn\amcacez.h \
        $(INCDIR)\mdn\api.h \
        $(INCDIR)\mdn\assert.h \
        $(INCDIR)\mdn\brace.h \
@@ -90,6 +93,7 @@ HDRS =  $(ICONVDIR)\iconv.h \
        $(INCDIR)\mdn\localencoding.h \
        $(INCDIR)\mdn\log.h \
        $(INCDIR)\mdn\logmacro.h \
+       $(INCDIR)\mdn\mace.h \
        $(INCDIR)\mdn\mapper.h \
        $(INCDIR)\mdn\mapselector.h \
        $(INCDIR)\mdn\msgheader.h \
@@ -112,24 +116,27 @@ HDRS =  $(ICONVDIR)\iconv.h \
        $(INCDIR)\mdn\util.h \
        $(INCDIR)\mdn\version.h
 
-SRCS =  ace.c altdude.c amcacem.c amcaceo.c amcacer.c api.c \
+SRCS =  ace.c altdude.c amcacem.c amcaceo.c amcacer.c \
+       amcacev.c amcacew.c amcacez.c api.c \
        brace.c checker.c converter.c \
        debug.c delimitermap.c dn.c dude.c \
        filechecker.c filemapper.c \
        lace.c localencoding.c log.c \
-       mapper.c mapselector.c msgheader.c msgtrans.c \
-       nameprep.c normalizer.c \
+       mace.c mapper.c mapselector.c msgheader.c msgtrans.c \
+       nameprep.c nameprep_template.c nameprepdata.c normalizer.c \
        race.c res.c resconf.c result.c \
        selectiveencode.c strhash.c \
-       ucsmap.c ucsset.c unicode.c unormalize.c \
+       ucsmap.c ucsset.c unicode.c unicode_template.c \
+       unicodedata_301.c unicodedata_310.c unormalize.c \
        utf5.c utf6.c utf8.c util.c version.c
 
-OBJS =  ace.obj altdude.obj amcacem.obj amcaceo.obj amcacer.obj api.obj \
+OBJS =  ace.obj altdude.obj amcacem.obj amcaceo.obj amcacer.obj \
+       amcacev.obj amcacew.obj amcacez.obj api.obj \
        brace.obj checker.obj converter.obj \
        debug.obj delimitermap.obj dn.obj dude.obj \
        filechecker.obj filemapper.obj \
        lace.obj localencoding.obj log.obj \
-       mapper.obj mapselector.obj msgheader.obj msgtrans.obj \
+       mace.obj mapper.obj mapselector.obj msgheader.obj msgtrans.obj \
        nameprep.obj normalizer.obj \
        race.obj res.obj resconf.obj result.obj \
        selectiveencode.obj strhash.obj \
@@ -157,16 +164,25 @@ libmdn.lib: $(OBJS)
 ace.obj: ace.c $(HDRS)
        $(cc) $(cflags) $(cvarsdll) -I$(INCDIR) -I$(ICONVDIR) $(DBG) $*.c
 
-altdude.obj: ace.c $(HDRS)
+altdude.obj: altdude.c $(HDRS)
        $(cc) $(cflags) $(cvarsdll) -I$(INCDIR) -I$(ICONVDIR) $(DBG) $*.c
 
-amcacem.obj: ace.c $(HDRS)
+amcacem.obj: amcacem.c $(HDRS)
        $(cc) $(cflags) $(cvarsdll) -I$(INCDIR) -I$(ICONVDIR) $(DBG) $*.c
 
-amcaceo.obj: ace.c $(HDRS)
+amcaceo.obj: amcaceo.c $(HDRS)
        $(cc) $(cflags) $(cvarsdll) -I$(INCDIR) -I$(ICONVDIR) $(DBG) $*.c
 
-amcacer.obj: ace.c $(HDRS)
+amcacer.obj: amcacer.c $(HDRS)
+       $(cc) $(cflags) $(cvarsdll) -I$(INCDIR) -I$(ICONVDIR) $(DBG) $*.c
+
+amcacev.obj: amcacev.c $(HDRS)
+       $(cc) $(cflags) $(cvarsdll) -I$(INCDIR) -I$(ICONVDIR) $(DBG) $*.c
+
+amcacew.obj: amcacew.c $(HDRS)
+       $(cc) $(cflags) $(cvarsdll) -I$(INCDIR) -I$(ICONVDIR) $(DBG) $*.c
+
+amcacez.obj: amcacez.c $(HDRS)
        $(cc) $(cflags) $(cvarsdll) -I$(INCDIR) -I$(ICONVDIR) $(DBG) $*.c
 
 api.obj: api.c $(HDRS)
@@ -208,6 +224,9 @@ localencoding.obj: localencoding.c $(HDRS)
 log.obj: log.c $(HDRS)
        $(cc) $(cflags) $(cvarsdll) -I$(INCDIR) -I$(ICONVDIR) $(DBG) $*.c
 
+mace.obj: mace.c $(HDRS)
+       $(cc) $(cflags) $(cvarsdll) -I$(INCDIR) -I$(ICONVDIR) $(DBG) $*.c
+
 mapper.obj: mapper.c $(HDRS)
        $(cc) $(cflags) $(cvarsdll) -I$(INCDIR) -I$(ICONVDIR) $(DBG) $*.c
 
@@ -250,7 +269,7 @@ ucsmap.obj: ucsmap.c $(HDRS)
 ucsset.obj: ucsset.c $(HDRS)
        $(cc) $(cflags) $(cvarsdll) -I$(INCDIR) -I$(ICONVDIR) $(DBG) $*.c
 
-unicode.obj: unicode.c unicodedata.c $(HDRS)
+unicode.obj: unicode.c unicode_template.c unicodedata_301.c unicodedata_310.c $(HDRS)
        $(cc) $(cflags) $(cvarsdll) -I$(INCDIR) -I$(ICONVDIR) $(DBG) $*.c
 
 unormalize.obj: unormalize.c $(HDRS)
index 5e926d85bd34631ae175b5d13dd09f02e8243bde..4b58903c7833c7170488a85118dd434b3a60531e 100644 (file)
@@ -1,5 +1,5 @@
 #ifndef lint
-static char *rcsid = "$Id: mapper.c,v 1.1 2001/06/09 00:30:17 tale Exp $";
+static char *rcsid = "$Id: mapper.c,v 1.2 2002/02/08 05:40:16 marka Exp $";
 #endif
 
 /*
@@ -11,8 +11,8 @@ static char *rcsid = "$Id: mapper.c,v 1.1 2001/06/09 00:30:17 tale Exp $";
  * 
  * The following License Terms and Conditions apply, unless a different
  * license is obtained from Japan Network Information Center ("JPNIC"),
- * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku,
- * Tokyo, Japan.
+ * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda,
+ * Chiyoda-ku, Tokyo 101-0047, Japan.
  * 
  * 1. Use, Modification and Redistribution (including distribution of any
  *    modified or derived work) in source and/or binary forms is permitted
@@ -88,18 +88,27 @@ typedef struct {
 /*
  * Standard mapping schemes.
  */
-static const map_scheme_t nameprep_02_scheme = {
-       "nameprep-02",
-       "nameprep-02",
+static const map_scheme_t nameprep_03_scheme = {
+       "nameprep-03",
+       "nameprep-03",
        mdn__nameprep_createproc,
        mdn__nameprep_destroyproc,
        mdn__nameprep_mapproc,
        NULL,
 };
 
-static const map_scheme_t nameprep_03_scheme = {
-       "nameprep-03",
-       "nameprep-03",
+static const map_scheme_t nameprep_05_scheme = {
+       "nameprep-05",
+       "nameprep-05",
+       mdn__nameprep_createproc,
+       mdn__nameprep_destroyproc,
+       mdn__nameprep_mapproc,
+       NULL,
+};
+
+static const map_scheme_t nameprep_06_scheme = {
+       "nameprep-06",
+       "nameprep-06",
        mdn__nameprep_createproc,
        mdn__nameprep_destroyproc,
        mdn__nameprep_mapproc,
@@ -116,8 +125,9 @@ static const map_scheme_t filemap_scheme = {
 };
 
 static const map_scheme_t *standard_map_schemes[] = {
-       &nameprep_02_scheme,
        &nameprep_03_scheme,
+       &nameprep_05_scheme,
+       &nameprep_06_scheme,
        &filemap_scheme,
        NULL,
 };
@@ -327,6 +337,9 @@ mdn_mapper_add(mdn_mapper_t ctx, const char *scheme_name) {
        ctx->schemes[ctx->nschemes].context = scheme_context;
        ctx->nschemes++;
 
+       if (buffer != static_buffer)
+               free(buffer);
+
        return (mdn_success);
 
 failure:
@@ -465,6 +478,8 @@ mdn_mapper_map(mdn_mapper_t ctx, const char *from, char *to, size_t tolen) {
                i++;
        }
 
+       free(dynamic_buffers[0]);
+       free(dynamic_buffers[1]);
        return (mdn_success);
 
 failure:
index b2df0bc18eaf19ac1a027df706cda81e98bf03fd..9638cb651292da54f014409878135cca804b4086 100644 (file)
@@ -1,5 +1,5 @@
 #ifndef lint
-static char *rcsid = "$Id: mapselector.c,v 1.1 2001/06/09 00:30:17 tale Exp $";
+static char *rcsid = "$Id: mapselector.c,v 1.2 2002/02/08 05:40:17 marka Exp $";
 #endif
 
 /*
@@ -11,8 +11,8 @@ static char *rcsid = "$Id: mapselector.c,v 1.1 2001/06/09 00:30:17 tale Exp $";
  * 
  * The following License Terms and Conditions apply, unless a different
  * license is obtained from Japan Network Information Center ("JPNIC"),
- * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku,
- * Tokyo, Japan.
+ * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda,
+ * Chiyoda-ku, Tokyo 101-0047, Japan.
  * 
  * 1. Use, Modification and Redistribution (including distribution of any
  *    modified or derived work) in source and/or binary forms is permitted
index 04503d794e337119d78d72327346322fd6820fed..6165c3d2f48c6e7cb5f7dc3cd5462640946c1d83 100644 (file)
@@ -1,4 +1,4 @@
-# $Id: mdn.conf.sample.in,v 1.1 2001/06/09 00:30:17 tale Exp $
+# $Id: mdn.conf.sample.in,v 1.2 2002/02/08 05:40:19 marka Exp $
 #
 # Sample file for mDNkit version 2 resolver configuration file (mdn.conf).
 #
 # of multilingualized names by resolvers and DNS servers.  Currently, the
 # following encodings are available:
 #
-#      RACE
-#      BRACE
-#      LACE
+#      AMC-ACE-Z
 #      DUDE
-#      UTF-6
+#      RACE
 #      UTF-8
-#      AltDUDE
-#      AMC-ACE-M
-#      AMC-ACE-O
-#      AMC-ACE-R
 #      <codeset names your iconv_open() accepts>
 #
 # syntax)
@@ -33,8 +27,10 @@ idn-encoding RACE
 #
 #      nameprep-03             -- name preparation scheme described in the
 #                                 IETF draft `idn-nameprep-03'
-#      nameprep-02             -- name preparation scheme described in the
-#                                 IETF draft `idn-nameprep-02'
+#      nameprep-05             -- name preparation scheme described in the
+#                                 IETF draft `idn-nameprep-05'
+#      nameprep-06             -- name preparation scheme described in the
+#                                 IETF draft `idn-nameprep-06'
 #
 # syntax)
 #      nameprep <nameprep version>
@@ -49,7 +45,7 @@ idn-encoding RACE
 # If both `nameprep' and more-specific entries (i.e. `nameprep-*' entries)
 # are specified, more-specific ones take precedence.
 #
-nameprep nameprep-03
+nameprep nameprep-06
 
 #
 # `nameprep-map' entry specifies the mapping scheme of NAMEPREP process.
@@ -63,27 +59,26 @@ nameprep nameprep-03
 #
 # If multiple schemes are specified, they are applied in turn.
 #
-#nameprep-map nameprep-03
+#nameprep-map nameprep-06
 
 #
 # `nameprep-normalize' entry specifies the normalization scheme of NAMEPREP
 # process.  Avaialable normalization schemes are:
 #
 #      <nameprep version>      -- nameprep version
-#      ascii-lowercase         -- ASCII uppercase letters to lowercase
-#      ascii-uppercase         -- ASCII lowercase letters to uppercase
-#      unicode-lowercase       -- Unicode uppercase letters to lowercase
-#      unicode-uppercase       -- Unicode lowercase letters to uppercase
-#      unicode-foldcase        -- Unicode case-folding.
-#      unicode-form-c          -- Unicode normalization form C
 #      unicode-form-kc         -- Unicode normalization form KC
+#                                 defined by the latest standard.
+#      unicode-form-kc/3.0.1   -- Unicode normalization form KC
+#                                 defined by Unicode 3.0.1.
+#      unicode-form-kc/3.1.0   -- Unicode normalization form KC
+#                                 defined by Unicode 3.1.
 #
 # syntax)
 #      nameprep-normalize <scheme> ...
 #
 # If multiple schemes are specified, they are applied in turn.
 #
-#nameprep-normalize nameprep-03
+#nameprep-normalize nameprep-06
 
 #
 # `nameprep-prohibit' entry specifies the prohibited characters in the
@@ -97,7 +92,7 @@ nameprep nameprep-03
 #
 # If multiple sets are specified, they are applied in turn.
 #
-#nameprep-prohibit nameprep-03
+#nameprep-prohibit nameprep-06
 
 #
 # `nameprep-unassigned' entry specifies the unassigned characters in the
@@ -111,19 +106,7 @@ nameprep nameprep-03
 #
 # If multiple sets are specified, they are applied in turn.
 #
-#nameprep-unassigned nameprep-03
-
-#
-# `alternate-encoding' entry specifies the alternative encoding to use in
-# case of the conversion from IDN encoding to the application's local
-# encoding fails due to the lack of certain character in the character set
-# of the local encoding.  The alternative encoding must be ASCII compatible
-# encoding (ACE).
-#
-# syntax)
-#      alternate-encoding <encoding>
-#
-alternate-encoding RACE
+#nameprep-unassigned nameprep-06
 
 #
 # `encoding-alias-file' specifies the file which defines encoding name 
index 9eb7dcedf72d80a0442ec0da17ea7cd5e4867f27..37dab3a05b87e95b135737734408700139627f68 100644 (file)
@@ -1,5 +1,5 @@
 #ifndef lint
-static char *rcsid = "$Id: msgheader.c,v 1.7 2000/09/20 02:47:31 ishisone Exp $";
+static char *rcsid = "$Id: msgheader.c,v 1.1 2002/01/02 02:46:44 marka Exp $";
 #endif
 
 /*
@@ -11,8 +11,8 @@ static char *rcsid = "$Id: msgheader.c,v 1.7 2000/09/20 02:47:31 ishisone Exp $"
  * 
  * The following License Terms and Conditions apply, unless a different
  * license is obtained from Japan Network Information Center ("JPNIC"),
- * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku,
- * Tokyo, Japan.
+ * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda,
+ * Chiyoda-ku, Tokyo 101-0047, Japan.
  * 
  * 1. Use, Modification and Redistribution (including distribution of any
  *    modified or derived work) in source and/or binary forms is permitted
index e1294bdd0f537c3945d626a55f2386114119c5af..0b587c52d57209ffae9d8cf748b0480465810ee1 100644 (file)
@@ -1,5 +1,5 @@
 #ifndef lint
-static char *rcsid = "$Id: msgtrans.c,v 1.24 2001/02/21 05:54:17 m-kasahr Exp $";
+static char *rcsid = "$Id: msgtrans.c,v 1.1 2002/01/02 02:46:45 marka Exp $";
 #endif
 
 /*
@@ -12,8 +12,8 @@ static char *rcsid = "$Id: msgtrans.c,v 1.24 2001/02/21 05:54:17 m-kasahr Exp $"
  * 
  * The following License Terms and Conditions apply, unless a different
  * license is obtained from Japan Network Information Center ("JPNIC"),
- * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku,
- * Tokyo, Japan.
+ * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda,
+ * Chiyoda-ku, Tokyo 101-0047, Japan.
  * 
  * 1. Use, Modification and Redistribution (including distribution of any
  *    modified or derived work) in source and/or binary forms is permitted
@@ -92,29 +92,18 @@ static char *rcsid = "$Id: msgtrans.c,v 1.24 2001/02/21 05:54:17 m-kasahr Exp $"
 #include <mdn/dn.h>
 #include <mdn/debug.h>
 
-/*
- * Name translation instructions.
- *
- * For query, perform
- *   1. local encoding to UTF-8 conversion
- *   2. delimiter mapping
- *   3. local mapping
- *   4. nameprep
- *   5. UTF-8 to IDN encoding conversion
- *
- * For reply,
- *   1. IDN encoding to UTF-8 conversion
- *   2. UTF-8 to local encoding conversion
- *
- * See mdn/res.h for the mnemonic.
- */
-#define INSN_QUERY     "ldMNI"
-#define INSN_REPLY     "iL"
-
 #define DNS_HEADER_SIZE                12
 #define DNAME_SIZE             512
 #define RRFORMAT_HASH_SIZE     47
 
+/*
+ * Translation directions.
+ */
+enum {
+       transdir_query = 0,
+       transdir_reply = 1
+};
+
 /*
  * DNS opcodes.
  */
@@ -165,7 +154,7 @@ enum {
 };
 
 typedef struct msgtrans_ctx {
-       char *insn;             /* name translation instruction */
+       int transdir;           /* direction of translation */
        const char *in;         /* input message */
        size_t in_len;          /* length of it */
        const char *in_ptr;     /* current pointer */
@@ -209,6 +198,35 @@ static struct rrformat {
 };
 static struct rrformat *rrformathash[RRFORMAT_HASH_SIZE];
 
+/*
+ * Name translation instructions.
+ *
+ * For query, perform
+ *   1. local encoding to UTF-8 conversion
+ *   2. delimiter mapping
+ *   3. local mapping
+ *   4. nameprep
+ *   5. UTF-8 to IDN encoding conversion
+ *
+ * For reply,
+ *   1. IDN encoding to UTF-8 conversion
+ *   2. UTF-8 to local encoding conversion
+ *
+ * See mdn/res.h for the mnemonic.
+ */
+static const char *trans_insn[] = {
+       "ldMNI",        /* insn for QUERY (transdir_query) */
+       "i!NL",         /* insn for REPLY (transdir_reply) */
+};
+
+/*
+ * Labels of translation directions, used for log messages.
+ */
+static const char *trans_labels[] = {
+       "QUERY",        /* QUERY (transdir_query) */
+       "REPLY",        /* REPLY (transdir_reply) */
+};
+
 static mdn_result_t    copy_header(msgtrans_ctx_t *ctx);
 static mdn_result_t    translate_question(msgtrans_ctx_t *ctx);
 static mdn_result_t    translate_rr(msgtrans_ctx_t *ctx);
@@ -348,17 +366,33 @@ translate_question(msgtrans_ctx_t *ctx) {
        if ((r = get_domainname(ctx, qname, sizeof(qname))) != mdn_success)
                return (r);
 
+       INFO(("request of QNAME %s translation: name=\"%s\"\n",
+             trans_labels[ctx->transdir], mdn_debug_xstring(qname, 256)));
+
        /* Translate QNAME. */
-       r = mdn_res_nameconv(ctx->conf, ctx->insn, qname,
+       r = mdn_res_nameconv(ctx->conf, trans_insn[ctx->transdir], qname,
                             qname_translated, sizeof(qname_translated));
        if (r != mdn_success)
-               return (r);
-
-       if ((r = put_domainname(ctx, qname_translated)) != mdn_success)
-               return (r);
+               goto failure;
+       r = put_domainname(ctx, qname_translated);
+       if (r != mdn_success)
+               goto failure;
 
        /* Copy QTYPE and QCLASS */
-       return (copy_message(ctx, 4));
+       r = copy_message(ctx, 4);
+       if (r != mdn_success)
+               goto failure;
+
+       INFO(("result of QNAME %s translation: name=\"%s\"\n",
+             trans_labels[ctx->transdir],
+             mdn_debug_xstring(qname_translated, 256)));
+
+       return (mdn_success);
+
+failure:
+       INFO(("QNAME %s translation failed, %s\n",
+             trans_labels[ctx->transdir], mdn_result_tostring(r)));
+       return (r);
 }
 
 static mdn_result_t
@@ -373,18 +407,23 @@ translate_rr(msgtrans_ctx_t *ctx) {
        if ((r = get_domainname(ctx, dname, sizeof(dname))) != mdn_success)
                return (r);
 
+       INFO(("request of RR NAME %s translation: name=\"%s\"\n",
+             trans_labels[ctx->transdir], mdn_debug_xstring(dname, 256)));
+
        /* Translate NAME. */
-       r = mdn_res_nameconv(ctx->conf, ctx->insn, dname,
+       r = mdn_res_nameconv(ctx->conf, trans_insn[ctx->transdir], dname,
                             dname_translated, sizeof(dname_translated));
        if (r != mdn_success)
-               return (r);
-
-       if ((r = put_domainname(ctx, dname_translated)) != mdn_success)
-               return (r);
+               goto failure;
+       r = put_domainname(ctx, dname_translated);
+       if (r != mdn_success)
+               goto failure;
 
        /* Get TYPE and CLASS */
-       if (ctx->in_remain < 10)
-               return (mdn_invalid_message);
+       if (ctx->in_remain < 10) {
+               r = mdn_invalid_message;
+               goto failure;
+       }
        p = (unsigned char *)ctx->in_ptr;
 #define GET16(off)     ((p[off]<<8)+p[(off)+1])
        rr_type = GET16(0);
@@ -393,23 +432,33 @@ translate_rr(msgtrans_ctx_t *ctx) {
 #undef GET16
 
        /* Copy TYPE, CLASS, TTL and RDLENGTH. */
-       if ((r = copy_message(ctx, 10)) != mdn_success)
-               return (r);
+       r = copy_message(ctx, 10);
+       if (r != mdn_success)
+               goto failure;
 
        /* Remember the current output length. */
        length_before = output_length(ctx);
 
        /* Translate RDATA. */
        r = translate_rdata(ctx, rr_type, rr_class, rr_length);
+       if (r != mdn_success)
+               goto failure;
 
-       if (r == mdn_success) {
-               /* Reset RDLENGTH */
-               rr_length = output_length(ctx) - length_before;
-               ctx->out[length_before - 2] = (rr_length >> 8) & 0xff;
-               ctx->out[length_before - 1] = rr_length & 0xff;
-       }
+       /* Reset RDLENGTH */
+       rr_length = output_length(ctx) - length_before;
+       ctx->out[length_before - 2] = (rr_length >> 8) & 0xff;
+       ctx->out[length_before - 1] = rr_length & 0xff;
+
+       INFO(("result of RR NAME %s translation: name=\"%s\"\n",
+             trans_labels[ctx->transdir],
+             mdn_debug_xstring(dname_translated, 256)));
 
        return (r);
+
+failure:
+       INFO(("RR NAME %s translation failed, %s\n",
+             trans_labels[ctx->transdir], mdn_result_tostring(r)));
+       return (r);     
 }
 
 static mdn_result_t
@@ -510,16 +559,27 @@ translate_domain(msgtrans_ctx_t *ctx) {
        if ((r = get_domainname(ctx, dname, sizeof(dname))) != mdn_success)
                return (r);
 
+       INFO(("request of RDATA %s translation: name=\"%s\"\n",
+             trans_labels[ctx->transdir], mdn_debug_xstring(dname, 256)));
+
        /* Translate NAME. */
-       r = mdn_res_nameconv(ctx->conf, ctx->insn, dname,
+       r = mdn_res_nameconv(ctx->conf, trans_insn[ctx->transdir], dname,
                             dname_translated, sizeof(dname_translated));
        if (r != mdn_success)
-               return (r);
-
+               goto failure;
        if ((r = put_domainname(ctx, dname_translated)) != mdn_success)
-               return (r);
+               goto failure;
+
+       INFO(("result of RDATA %s translation: name=\"%s\"\n",
+             trans_labels[ctx->transdir],
+             mdn_debug_xstring(dname_translated, 256)));
 
        return (mdn_success);
+
+failure:
+       INFO(("RDATA %s translation failed, %s\n",
+             trans_labels[ctx->transdir], mdn_result_tostring(r)));
+       return (r);     
 }
 
 static mdn_result_t
@@ -554,7 +614,7 @@ static void
 ctx_init(msgtrans_ctx_t *ctx, mdn_resconf_t conf, mdn_msgheader_t *header,
         const char *msg, size_t msglen, char *outbuf, size_t outbufsize)
 {
-       ctx->insn = (header->qr == 0) ? INSN_QUERY : INSN_REPLY;
+       ctx->transdir = (header->qr == 0) ? transdir_query : transdir_reply;
        ctx->in = ctx->in_ptr = msg;
        ctx->in_len = ctx->in_remain = msglen;
        ctx->out = ctx->out_ptr = outbuf;
index 6ef51648afc1fa9e08d0ce7d49b30090d4f8684e..286cff4d05582fd434f757564d94d64bae0cd759 100644 (file)
@@ -1,5 +1,5 @@
 #ifndef lint
-static char *rcsid = "$Id: nameprep.c,v 1.1 2001/06/09 00:30:19 tale Exp $";
+static char *rcsid = "$Id: nameprep.c,v 1.2 2002/02/08 05:40:23 marka Exp $";
 #endif
 
 /*
@@ -11,8 +11,8 @@ static char *rcsid = "$Id: nameprep.c,v 1.1 2001/06/09 00:30:19 tale Exp $";
  * 
  * The following License Terms and Conditions apply, unless a different
  * license is obtained from Japan Network Information Center ("JPNIC"),
- * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku,
- * Tokyo, Japan.
+ * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda,
+ * Chiyoda-ku, Tokyo 101-0047, Japan.
  * 
  * 1. Use, Modification and Redistribution (including distribution of any
  *    modified or derived work) in source and/or binary forms is permitted
@@ -79,7 +79,7 @@ static char *rcsid = "$Id: nameprep.c,v 1.1 2001/06/09 00:30:19 tale Exp $";
 /*
  * The latest version.
  */
-#define NAMEPREP_CURRENT       "nameprep-03"
+#define NAMEPREP_CURRENT       "nameprep-05"
 
 /*
  * Load NAMEPREP compiled tables.
@@ -90,16 +90,20 @@ static char *rcsid = "$Id: nameprep.c,v 1.1 2001/06/09 00:30:19 tale Exp $";
  * Define mapping/checking functions for each version of the draft.
  */
 
-#define VERSION id02
+#define VERSION id03
 #include "nameprep_template.c"
 #undef VERSION
 
-#define VERSION id03
+#define VERSION id05
+#include "nameprep_template.c"
+#undef VERSION
+
+#define VERSION id06
 #include "nameprep_template.c"
 #undef VERSION
 
-typedef char   *(*nameprep_mapproc)(unsigned long v);
-typedef int    (*nameprep_checkproc)(unsigned long v);
+typedef const char     *(*nameprep_mapproc)(unsigned long v);
+typedef int            (*nameprep_checkproc)(unsigned long v);
 
 static struct mdn_nameprep {
        char *version;
@@ -112,8 +116,9 @@ static struct mdn_nameprep {
          compose_sym2(nameprep_map_, id), \
          compose_sym2(nameprep_prohibited_, id), \
          compose_sym2(nameprep_unassigned_, id) }
-       MAKE_NAMEPREP_HANDLE("nameprep-02", id02),
        MAKE_NAMEPREP_HANDLE("nameprep-03", id03),
+       MAKE_NAMEPREP_HANDLE("nameprep-05", id05),
+       MAKE_NAMEPREP_HANDLE("nameprep-06", id06),
        { NULL, NULL, NULL },
 };
 
@@ -170,7 +175,7 @@ mdn_nameprep_map(mdn_nameprep_t handle, const char *from,
        while (fromlen > 0) {
                unsigned long v;
                int w;
-               char *mapped;
+               const char *mapped;
 
                if ((w = mdn_utf8_getwc(from, fromlen, &v)) == 0)
                        return (mdn_invalid_encoding);
index 543fd78283796bd7615508b5dca29cf9edb4647e..4b327b3f7ec6c7c4956eca1ca405b1effb225bdb 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: nameprep_template.c,v 1.1 2001/06/09 00:30:19 tale Exp $ */
+/* $Id: nameprep_template.c,v 1.2 2002/02/08 05:40:24 marka Exp $ */
 
 /*
  * Copyright (c) 2001 Japan Network Information Center.  All rights reserved.
@@ -9,8 +9,8 @@
  * 
  * The following License Terms and Conditions apply, unless a different
  * license is obtained from Japan Network Information Center ("JPNIC"),
- * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku,
- * Tokyo, Japan.
+ * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda,
+ * Chiyoda-ku, Tokyo 101-0047, Japan.
  * 
  * 1. Use, Modification and Redistribution (including distribution of any
  *    modified or derived work) in source and/or binary forms is permitted
@@ -86,7 +86,7 @@
 
 #endif /* NAMEPREP_TEMPLATE_INIT */
 
-static char *
+static const char *
 compose_sym2(nameprep_map_, VERSION) (unsigned long v) {
        int idx0 = IDX0(MAP, v);
        int idx1 = IDX1(MAP, v);
@@ -99,7 +99,7 @@ compose_sym2(nameprep_map_, VERSION) (unsigned long v) {
        offset = TABLE[IMAP[IMAP[idx0] + idx1]].tbl[idx2];
        if (offset == 0)
                return (NULL);  /* no mapping */
-       return (char *)(DATA + offset);
+       return (const char *)(DATA + offset);
 #undef IMAP
 #undef TABLE
 #undef DATA
@@ -110,7 +110,7 @@ compose_sym2(nameprep_prohibited_, VERSION) (unsigned long v) {
        int idx0 = IDX0(PROH, v);
        int idx1 = IDX1(PROH, v);
        int idx2 = IDX2(PROH, v);
-       unsigned char *bm;
+       const unsigned char *bm;
 
 #define IMAP   compose_sym3(nameprep_, VERSION, _prohibited_imap)
 #define BITMAP compose_sym3(nameprep_, VERSION, _prohibited_bitmap)
@@ -125,7 +125,7 @@ compose_sym2(nameprep_unassigned_, VERSION) (unsigned long v) {
        int idx0 = IDX0(UNAS, v);
        int idx1 = IDX1(UNAS, v);
        int idx2 = IDX2(UNAS, v);
-       unsigned char *bm;
+       const unsigned char *bm;
 
 #define IMAP   compose_sym3(nameprep_, VERSION, _unassigned_imap)
 #define BITMAP compose_sym3(nameprep_, VERSION, _unassigned_bitmap)
index 67b164de26f5c2b1ee9b1e657714b36cccf70ebd..ee46228d5668e49baa0bb2968b177a7d781795e4 100644 (file)
@@ -1,5 +1,5 @@
-/* $Id: nameprepdata.c,v 1.1 2001/06/09 00:30:19 tale Exp $ */
-/* $-Id: generate_nameprep_data.pl,v 1.2 2001/03/05 09:04:36 ishisone Exp -$ */
+/* $Id: nameprepdata.c,v 1.2 2002/02/08 05:40:26 marka Exp $ */
+/* $-Id: generate_nameprep_data.pl,v 1.5 2001/10/31 08:51:30 m-kasahr Exp -$ */
 /*
  * Do not edit this file!
  * This file is generated from NAMEPREP specification.
@@ -17,7 +17,7 @@
 #define UNAS_BITS_1    7
 #define UNAS_BITS_2    7
 
-static unsigned short nameprep_id02_map_imap[] = {
+static const unsigned short nameprep_id03_map_imap[] = {
          272,   400,   528,   656,   784,   784,   784,   784, 
          784,   784,   784,   784,   784,   784,   784,   912, 
          784,   784,   784,   784,   784,   784,   784,   784, 
@@ -150,9 +150,9 @@ static unsigned short nameprep_id02_map_imap[] = {
            0,    60,     0,     0,     0,     0,     0,     0, 
 };
 
-static struct {
+static const struct {
        unsigned short tbl[32];
-} nameprep_id02_map_table[] = {
+} nameprep_id03_map_table[] = {
        {{
           0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
           0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
@@ -460,7 +460,7 @@ static struct {
        }},
 };
 
-static unsigned char nameprep_id02_map_data[] = {
+static const unsigned char nameprep_id03_map_data[] = {
          0,  97,   0,  98,   0,  99,   0, 100,   0, 101,   0, 102, 
          0, 103,   0, 104,   0, 105,   0, 106,   0, 107,   0, 108, 
          0, 109,   0, 110,   0, 111,   0, 112,   0, 113,   0, 114, 
@@ -697,7 +697,7 @@ static unsigned char nameprep_id02_map_data[] = {
          0, 
 };
 
-static unsigned short nameprep_id02_prohibited_imap[] = {
+static const unsigned short nameprep_id03_prohibited_imap[] = {
           68,   196,   196,   324,   196,   196,   196,   452, 
          196,   196,   196,   452,   196,   196,   196,   452, 
          196,   196,   196,   452,   196,   196,   196,   452, 
@@ -718,7 +718,7 @@ static unsigned short nameprep_id02_prohibited_imap[] = {
            2,     2,     2,     2,     2,     2,     2,     2, 
            2,     2,     2,     2,     2,     2,     2,     2, 
            2,     2,     2,     2,     2,     2,     2,     2, 
-           2,     2,     2,     5,     3,     2,     2,     2, 
+           2,     2,     2,     5,     6,     2,     2,     2, 
            2,     2,     2,     2,     2,     2,     2,     2, 
            2,     2,     2,     2,     2,     2,     2,     2, 
            2,     2,     2,     2,     2,     2,     2,     2, 
@@ -744,17 +744,17 @@ static unsigned short nameprep_id02_prohibited_imap[] = {
            2,     2,     2,     2,     2,     2,     2,     2, 
            2,     2,     2,     2,     2,     2,     2,     2, 
            2,     2,     2,     2,     2,     2,     2,     2, 
-           2,     2,     2,     2,     6,     6,     6,     6
-           6,     6,     6,     6,     6,     6,     6,     6
-           6,     6,     6,     6,     6,     6,     6,     6
-           6,     6,     6,     6,     6,     6,     6,     6
-           6,     6,     6,     6,     6,     6,     6,     6
-           6,     6,     6,     6,     6,     6,     6,     6
-           6,     6,     6,     6,     6,     6,     6,     6
-           6,     6,     6,     6,     6,     6,     6,     6
-           6,     6,     6,     6,     6,     6,     2,     2, 
+           2,     2,     2,     2,     7,     7,     7,     7
+           7,     7,     7,     7,     7,     7,     7,     7
+           7,     7,     7,     7,     7,     7,     7,     7
+           7,     7,     7,     7,     7,     7,     7,     7
+           7,     7,     7,     7,     7,     7,     7,     7
+           7,     7,     7,     7,     7,     7,     7,     7
+           7,     7,     7,     7,     7,     7,     7,     7
+           7,     7,     7,     7,     7,     7,     7,     7
+           7,     7,     7,     7,     7,     7,     2,     2, 
            2,     2,     2,     2,     2,     2,     2,     2, 
-           2,     2,     2,     7,     2,     2,     2,     2, 
+           2,     2,     2,     8,     2,     2,     2,     2, 
            2,     2,     2,     2,     2,     2,     2,     2, 
            2,     2,     2,     2,     2,     2,     2,     2, 
            2,     2,     2,     2,     2,     2,     2,     2, 
@@ -770,28 +770,28 @@ static unsigned short nameprep_id02_prohibited_imap[] = {
            2,     2,     2,     2,     2,     2,     2,     2, 
            2,     2,     2,     2,     2,     2,     2,     2, 
            2,     2,     2,     2,     2,     2,     2,     2, 
-           2,     2,     2,     8,     6,     6,     6,     6
-           6,     6,     6,     6,     6,     6,     6,     6
-           6,     6,     6,     6,     6,     6,     6,     6
-           6,     6,     6,     6,     6,     6,     6,     6
-           6,     6,     6,     6,     6,     6,     6,     6
-           6,     6,     6,     6,     6,     6,     6,     6
-           6,     6,     6,     6,     6,     6,     6,     6
-           6,     6,     6,     6,     6,     6,     6,     6
-           6,     6,     6,     6,     6,     6,     6,     6
-           6,     6,     6,     6,     6,     6,     6,     6
-           6,     6,     6,     6,     6,     6,     6,     6
-           6,     6,     6,     6,     6,     6,     6,     6
-           6,     6,     6,     6,     6,     6,     6,     6
-           6,     6,     6,     6,     6,     6,     6,     6
-           6,     6,     6,     6,     6,     6,     6,     6
-           6,     6,     6,     6,     6,     6,     6,     6
-           6,     6,     6,     6
+           2,     2,     2,     9,     7,     7,     7,     7
+           7,     7,     7,     7,     7,     7,     7,     7
+           7,     7,     7,     7,     7,     7,     7,     7
+           7,     7,     7,     7,     7,     7,     7,     7
+           7,     7,     7,     7,     7,     7,     7,     7
+           7,     7,     7,     7,     7,     7,     7,     7
+           7,     7,     7,     7,     7,     7,     7,     7
+           7,     7,     7,     7,     7,     7,     7,     7
+           7,     7,     7,     7,     7,     7,     7,     7
+           7,     7,     7,     7,     7,     7,     7,     7
+           7,     7,     7,     7,     7,     7,     7,     7
+           7,     7,     7,     7,     7,     7,     7,     7
+           7,     7,     7,     7,     7,     7,     7,     7
+           7,     7,     7,     7,     7,     7,     7,     7
+           7,     7,     7,     7,     7,     7,     7,     7
+           7,     7,     7,     7,     7,     7,     7,     7
+           7,     7,     7,     7
 };
 
-static struct {
+static const struct {
        unsigned char bm[16];
-} nameprep_id02_prohibited_bitmap[] = {
+} nameprep_id03_prohibited_bitmap[] = {
        {{
        255,255,255,255,255,223,  0,252,  1,  0,  0,248,  1,  0,  0,248,
        }},
@@ -810,6 +810,9 @@ static struct {
        {{
          0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,255,255,
        }},
+       {{
+         5,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+       }},
        {{
        255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
        }},
@@ -820,7 +823,7 @@ static struct {
          0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,192,
        }},
 };
-static unsigned short nameprep_id02_unassigned_imap[] = {
+static const unsigned short nameprep_id03_unassigned_imap[] = {
           68,   196,   324,   452,   580,   580,   580,   708, 
          580,   580,   580,   708,   580,   580,   580,   708, 
          580,   580,   580,   708,   580,   580,   580,   708, 
@@ -944,9 +947,9 @@ static unsigned short nameprep_id02_unassigned_imap[] = {
            0,     0,     0,     0, 
 };
 
-static struct {
+static const struct {
        unsigned char bm[16];
-} nameprep_id02_unassigned_bitmap[] = {
+} nameprep_id03_unassigned_bitmap[] = {
        {{
          0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
        }},
@@ -1173,7 +1176,7 @@ static struct {
          0,  0,  0,  0,  0,  0,  0,  0,255,255,  0,  0,  0,  0,  0,  0,
        }},
        {{
-         0,  0,  3,  0,  0,  0,  0,  0,  0,255,  0,  0,  0,  0,  0,240,
+         0,  0,  3,  0,  0,  0,  0,  0,  0,255,255,255,255,255,  0,240,
        }},
        {{
        255,255,255,255,240,255,  0,  0,224,  1,  8,  0,128,240, 40,  0,
@@ -1191,165 +1194,52 @@ static struct {
        255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 63,
        }},
 };
-#define nameprep_id03_map_imap nameprep_id02_map_imap
-#define nameprep_id03_map_table        nameprep_id02_map_table
-#define nameprep_id03_map_data nameprep_id02_map_data
-
-static unsigned short nameprep_id03_prohibited_imap[] = {
-          68,   196,   196,   324,   196,   196,   196,   452, 
-         196,   196,   196,   452,   196,   196,   196,   452, 
-         196,   196,   196,   452,   196,   196,   196,   452, 
-         196,   196,   196,   452,   196,   196,   196,   452, 
-         196,   196,   196,   452,   196,   196,   196,   452, 
-         196,   196,   196,   452,   196,   196,   196,   452, 
-         196,   196,   196,   452,   196,   196,   196,   452, 
-         196,   196,   196,   452,   580,   580,   580,   580, 
-         580,   580,   580,   580,     0,     1,     2,     2, 
-           2,     2,     2,     2,     2,     2,     2,     2, 
-           2,     2,     2,     2,     2,     2,     2,     2, 
-           2,     2,     2,     2,     2,     2,     2,     2, 
-           2,     2,     2,     2,     2,     2,     2,     2, 
-           2,     2,     2,     2,     2,     2,     2,     2, 
-           2,     3,     2,     2,     2,     2,     2,     2, 
-           2,     2,     2,     2,     2,     2,     2,     2, 
-           2,     2,     2,     2,     4,     2,     2,     2, 
-           2,     2,     2,     2,     2,     2,     2,     2, 
-           2,     2,     2,     2,     2,     2,     2,     2, 
-           2,     2,     2,     2,     2,     2,     2,     2, 
-           2,     2,     2,     5,     6,     2,     2,     2, 
-           2,     2,     2,     2,     2,     2,     2,     2, 
-           2,     2,     2,     2,     2,     2,     2,     2, 
-           2,     2,     2,     2,     2,     2,     2,     2, 
-           2,     2,     2,     2,     2,     2,     2,     2, 
-           2,     2,     2,     2,     2,     2,     2,     2, 
-           2,     2,     2,     2,     2,     2,     2,     2, 
-           2,     2,     2,     2,     2,     2,     2,     2, 
-           2,     2,     2,     2,     2,     2,     2,     2, 
-           2,     2,     2,     2,     2,     2,     2,     2, 
-           2,     2,     2,     2,     2,     2,     2,     2, 
-           2,     2,     2,     2,     2,     2,     2,     2, 
-           2,     2,     2,     2,     2,     2,     2,     2, 
-           2,     2,     2,     2,     2,     2,     2,     2, 
-           2,     2,     2,     2,     2,     2,     2,     2, 
-           2,     2,     2,     2,     2,     2,     2,     2, 
-           2,     2,     2,     2,     2,     2,     2,     2, 
-           2,     2,     2,     2,     2,     2,     2,     2, 
-           2,     2,     2,     2,     2,     2,     2,     2, 
-           2,     2,     2,     2,     2,     2,     2,     2, 
-           2,     2,     2,     2,     2,     2,     2,     2, 
-           2,     2,     2,     2,     2,     2,     2,     2, 
-           2,     2,     2,     2,     2,     2,     2,     2, 
-           2,     2,     2,     2,     2,     2,     2,     2, 
-           2,     2,     2,     2,     2,     2,     2,     2, 
-           2,     2,     2,     2,     2,     2,     2,     2, 
-           2,     2,     2,     2,     7,     7,     7,     7, 
-           7,     7,     7,     7,     7,     7,     7,     7, 
-           7,     7,     7,     7,     7,     7,     7,     7, 
-           7,     7,     7,     7,     7,     7,     7,     7, 
-           7,     7,     7,     7,     7,     7,     7,     7, 
-           7,     7,     7,     7,     7,     7,     7,     7, 
-           7,     7,     7,     7,     7,     7,     7,     7, 
-           7,     7,     7,     7,     7,     7,     7,     7, 
-           7,     7,     7,     7,     7,     7,     2,     2, 
-           2,     2,     2,     2,     2,     2,     2,     2, 
-           2,     2,     2,     8,     2,     2,     2,     2, 
-           2,     2,     2,     2,     2,     2,     2,     2, 
-           2,     2,     2,     2,     2,     2,     2,     2, 
-           2,     2,     2,     2,     2,     2,     2,     2, 
-           2,     2,     2,     2,     2,     2,     2,     2, 
-           2,     2,     2,     2,     2,     2,     2,     2, 
-           2,     2,     2,     2,     2,     2,     2,     2, 
-           2,     2,     2,     2,     2,     2,     2,     2, 
-           2,     2,     2,     2,     2,     2,     2,     2, 
-           2,     2,     2,     2,     2,     2,     2,     2, 
-           2,     2,     2,     2,     2,     2,     2,     2, 
-           2,     2,     2,     2,     2,     2,     2,     2, 
-           2,     2,     2,     2,     2,     2,     2,     2, 
-           2,     2,     2,     2,     2,     2,     2,     2, 
-           2,     2,     2,     2,     2,     2,     2,     2, 
-           2,     2,     2,     2,     2,     2,     2,     2, 
-           2,     2,     2,     9,     7,     7,     7,     7, 
-           7,     7,     7,     7,     7,     7,     7,     7, 
-           7,     7,     7,     7,     7,     7,     7,     7, 
-           7,     7,     7,     7,     7,     7,     7,     7, 
-           7,     7,     7,     7,     7,     7,     7,     7, 
-           7,     7,     7,     7,     7,     7,     7,     7, 
-           7,     7,     7,     7,     7,     7,     7,     7, 
-           7,     7,     7,     7,     7,     7,     7,     7, 
-           7,     7,     7,     7,     7,     7,     7,     7, 
-           7,     7,     7,     7,     7,     7,     7,     7, 
-           7,     7,     7,     7,     7,     7,     7,     7, 
-           7,     7,     7,     7,     7,     7,     7,     7, 
-           7,     7,     7,     7,     7,     7,     7,     7, 
-           7,     7,     7,     7,     7,     7,     7,     7, 
-           7,     7,     7,     7,     7,     7,     7,     7, 
-           7,     7,     7,     7,     7,     7,     7,     7, 
-           7,     7,     7,     7, 
-};
-
-static struct {
-       unsigned char bm[16];
-} nameprep_id03_prohibited_bitmap[] = {
-       {{
-       255,255,255,255,255,223,  0,252,  1,  0,  0,248,  1,  0,  0,248,
-       }},
-       {{
-       255,255,255,255,  1,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-       }},
-       {{
-         0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-       }},
-       {{
-         1,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-       }},
-       {{
-       255,207,  0,  0,  0,255,  0,  0,  0,  0,  0,  0,  0,252,  0,  0,
-       }},
-       {{
-         0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,255,255,
-       }},
-       {{
-         5,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-       }},
-       {{
-       255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-       }},
-       {{
-         0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,254,
-       }},
-       {{
-         0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,192,
-       }},
-};
-static unsigned short nameprep_id03_unassigned_imap[] = {
-          68,   196,   324,   452,   580,   580,   580,   708, 
-         580,   580,   580,   708,   580,   580,   580,   708, 
-         580,   580,   580,   708,   580,   580,   580,   708, 
-         580,   580,   580,   708,   580,   580,   580,   708, 
-         580,   580,   580,   708,   580,   580,   580,   708, 
-         580,   580,   580,   708,   580,   580,   580,   708, 
-         580,   580,   580,   708,   580,   580,   580,   708, 
-         580,   580,   580,   708,   836,   836,   836,   836, 
-         836,   836,   836,   836,     0,     0,     0,     0, 
-           1,     2,     3,     4,     0,     5,     6,     7, 
-           8,     9,    10,    11,    12,    12,    13,    14, 
-          15,    16,    17,    18,    19,    20,    21,    22, 
-          23,    24,    25,    26,    27,    28,    29,    30, 
-          31,    32,    33,    34,    35,     0,     0,     0, 
-          36,    37,    12,    38,    39,    40,    12,    12, 
-          12,    12,    12,    12,    12,    12,    12,    12, 
-           0,    41,    42,    43,    44,    45,    46,    47, 
-           0,    48,    49,    50,    51,    52,     0,    53, 
-          54,    12,    55,    56,     0,     0,    12,    12, 
-          12,    12,    12,    12,    12,    12,    12,    12, 
-          12,    57,     0,    58,    59,    60,    61,    62, 
-          63,    64,    65,    66,     0,     0,     0,     0, 
+static const unsigned short nameprep_id05_map_imap[] = {
+         272,   400,   528,   656,   784,   784,   784,   784, 
+         784,   784,   784,   784,   784,   784,   784,   912, 
+        1040,   784,   784,   784,   784,   784,   784,   784, 
+         784,   784,   784,   784,   784,  1168,   784,   784, 
+         784,   784,   784,   784,   784,   784,   784,   784, 
+         784,   784,   784,   784,   784,   784,   784,   784, 
+         784,   784,   784,   784,   784,   784,   784,   784, 
+         784,   784,   784,   784,   784,   784,   784,   784, 
+         784,   784,   784,   784,   784,   784,   784,   784, 
+         784,   784,   784,   784,   784,   784,   784,   784, 
+         784,   784,   784,   784,   784,   784,   784,   784, 
+         784,   784,   784,   784,   784,   784,   784,   784, 
+         784,   784,   784,   784,   784,   784,   784,   784, 
+         784,   784,   784,   784,   784,   784,   784,   784, 
+         784,   784,   784,   784,   784,   784,   784,   784, 
+         784,   784,   784,   784,   784,   784,   784,   784, 
+         784,   784,   784,   784,   784,   784,   784,   784, 
+         784,   784,   784,   784,   784,   784,   784,   784, 
+         784,   784,   784,   784,   784,   784,   784,   784, 
+         784,   784,   784,   784,   784,   784,   784,   784, 
+         784,   784,   784,   784,   784,   784,   784,   784, 
+         784,   784,   784,   784,   784,   784,   784,   784, 
+         784,   784,   784,   784,   784,   784,   784,   784, 
+         784,   784,   784,   784,   784,   784,   784,   784, 
+         784,   784,   784,   784,   784,   784,   784,   784, 
+         784,   784,   784,   784,   784,   784,   784,   784, 
+         784,   784,   784,   784,   784,   784,   784,   784, 
+         784,   784,   784,   784,   784,   784,   784,   784, 
+         784,   784,   784,   784,   784,   784,   784,   784, 
+         784,   784,   784,   784,   784,   784,   784,   784, 
+         784,   784,   784,   784,   784,   784,   784,   784, 
+         784,   784,   784,   784,   784,   784,   784,   784, 
+         784,   784,   784,   784,   784,   784,   784,   784, 
+         784,   784,   784,   784,   784,   784,   784,   784, 
+           0,     0,     1,     0,     0,     2,     3,     0, 
+           4,     5,     6,     7,     8,     9,    10,    11, 
+          12,    13,     0,     0,     0,     0,     0,     0, 
+           0,     0,    14,    15,    16,    17,    18,    19, 
+          20,    21,     0,    22,    23,    24,    25,    26, 
+           0,    27,    28,     0,    29,     0,     0,     0, 
            0,     0,     0,     0,     0,     0,     0,     0, 
            0,     0,     0,     0,     0,     0,     0,     0, 
            0,     0,     0,     0,     0,     0,     0,     0, 
            0,     0,     0,     0,     0,     0,     0,     0, 
            0,     0,     0,     0,     0,     0,     0,     0, 
-           0,     0,     0,     0,     0,     0,     0,    67, 
            0,     0,     0,     0,     0,     0,     0,     0, 
            0,     0,     0,     0,     0,     0,     0,     0, 
            0,     0,     0,     0,     0,     0,     0,     0, 
@@ -1363,17 +1253,19 @@ static unsigned short nameprep_id03_unassigned_imap[] = {
            0,     0,     0,     0,     0,     0,     0,     0, 
            0,     0,     0,     0,     0,     0,     0,     0, 
            0,     0,     0,     0,     0,     0,     0,     0, 
+          30,     0,     0,     0,     0,     0,     0,     0, 
            0,     0,     0,     0,     0,     0,     0,     0, 
            0,     0,     0,     0,     0,     0,     0,     0, 
            0,     0,     0,     0,     0,     0,     0,     0, 
            0,     0,     0,     0,     0,     0,     0,     0, 
            0,     0,     0,     0,     0,     0,     0,     0, 
+          31,    32,    33,    34,    35,    36,    37,    38, 
+          39,    40,    41,    42,    43,    44,    45,    46, 
+          47,     0,     0,     0,     0,    48,     0,     0, 
+          49,    50,     0,    51,     0,     0,     0,     0, 
            0,     0,     0,     0,     0,     0,     0,     0, 
            0,     0,     0,     0,     0,     0,     0,     0, 
-           0,     0,     0,    68,     0,     0,     0,     0, 
-           0,     0,     0,     0,     0,    69,    12,    12, 
-          12,    12,    12,    12,    12,    12,    12,    12, 
-          12,    12,    12,    12,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,    52,    53,     0, 
            0,     0,     0,     0,     0,     0,     0,     0, 
            0,     0,     0,     0,     0,     0,     0,     0, 
            0,     0,     0,     0,     0,     0,     0,     0, 
@@ -1384,39 +1276,1029 @@ static unsigned short nameprep_id03_unassigned_imap[] = {
            0,     0,     0,     0,     0,     0,     0,     0, 
            0,     0,     0,     0,     0,     0,     0,     0, 
            0,     0,     0,     0,     0,     0,     0,     0, 
-           0,     0,     0,    70,     0,     0,     0,     0, 
            0,     0,     0,     0,     0,     0,     0,     0, 
            0,     0,     0,     0,     0,     0,     0,     0, 
            0,     0,     0,     0,     0,     0,     0,     0, 
            0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,    54,    55,    56,    57,     0, 
            0,     0,     0,     0,     0,     0,     0,     0, 
            0,     0,     0,     0,     0,     0,     0,     0, 
            0,     0,     0,     0,     0,     0,     0,     0, 
            0,     0,     0,     0,     0,     0,     0,     0, 
-          71,    12,    72,    73,     0,     0,    74,    75, 
-          76,    77,    78,    79,    12,    12,    12,    12, 
-          12,    12,    12,    12,    12,    12,    12,    12, 
-          12,    12,    12,    12,    12,    12,    12,    12, 
-          12,    12,    12,    12,    12,    12,    12,    12, 
-          12,    12,    12,    12,    12,    12,    12,    12, 
-          12,    12,    12,    12,    12,    12,    12,    12, 
-          12,    12,    12,    12,    12,    12,    12,    12, 
-          12,    12,    12,    12,    12,    12,    12,    12, 
-          12,    12,    12,    12,    12,    12,    12,    12, 
-          12,    12,    12,    12,    12,    12,    12,    12, 
-          12,    12,    12,    12,    12,    12,    12,    12, 
-          12,    12,    12,    12,    12,    12,    12,    12, 
-          12,    12,    12,    12,    12,    12,    12,    12, 
-          12,    12,    12,    12,    12,    12,    12,    12, 
-          12,    12,    12,    12,    12,    12,    12,    12, 
-          12,    12,    12,    12,    12,    12,    12,    12, 
-          12,    12,    12,    12,    12,    12,    12,    12, 
-          12,    12,    12,    12,    12,    12,    12,    12, 
-          12,    12,    12,    12,    12,    12,    12,    12, 
-          12,    12,    12,    12,    12,    12,    12,    12, 
-          12,    12,    12,    12,    12,    12,    12,    12, 
-          12,    12,    12,    12,    12,    12,    12,    12, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+          58,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,    59, 
+           0,    60,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+          61,    62,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+          63,    64,    65,    66,    67,    68,    69,    70, 
+          71,    72,    73,    74,    75,    63,    64,    65, 
+          66,    76,    77,    69,    70,    78,    79,    80, 
+          81,    82,    83,    84,    85,    86,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+};
+
+static const struct {
+       unsigned short tbl[32];
+} nameprep_id05_map_table[] = {
+       {{
+          0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
+          0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
+          0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
+       }},
+       {{
+          0,    1,    3,    5,    7,    9,   11,   13,   15,   17,   19, 
+         21,   23,   25,   27,   29,   31,   33,   35,   37,   39,   41, 
+         43,   45,   47,   49,   51,    0,    0,    0,    0,    0, 
+       }},
+       {{
+          0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
+          0,    0,   53,    0,    0,    0,    0,    0,    0,    0,   54, 
+          0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
+       }},
+       {{
+         57,   60,   63,   66,   69,   72,   75,   78,   81,   84,   87, 
+         90,   93,   96,   99,  102,  105,  108,  111,  114,  117,  120, 
+        123,    0,  126,  129,  132,  135,  138,  141,  144,  147, 
+       }},
+       {{
+        150,    0,  153,    0,  156,    0,  159,    0,  162,    0,  165, 
+          0,  168,    0,  171,    0,  174,    0,  177,    0,  180,    0, 
+        183,    0,  186,    0,  189,    0,  192,    0,  195,    0, 
+       }},
+       {{
+        198,    0,  201,    0,  204,    0,  207,    0,  210,    0,  213, 
+          0,  216,    0,  219,    0,   17,   17,  222,    0,  225,    0, 
+        228,    0,    0,  231,    0,  234,    0,  237,    0,  240, 
+       }},
+       {{
+          0,  243,    0,  246,    0,  249,    0,  252,    0,  255,  259, 
+          0,  262,    0,  265,    0,  268,    0,  271,    0,  274,    0, 
+        277,    0,  280,    0,  283,    0,  286,    0,  289,    0, 
+       }},
+       {{
+        292,    0,  295,    0,  298,    0,  301,    0,  304,    0,  307, 
+          0,  310,    0,  313,    0,  316,    0,  319,    0,  322,    0, 
+        325,    0,  328,  331,    0,  334,    0,  337,    0,   37, 
+       }},
+       {{
+          0,  340,  343,    0,  346,    0,  349,  352,    0,  355,  358, 
+        361,    0,    0,  364,  367,  370,  373,    0,  376,  379,    0, 
+        382,  385,  388,    0,    0,    0,  391,  394,    0,  397, 
+       }},
+       {{
+        400,    0,  403,    0,  406,    0,  409,  412,    0,  415,    0, 
+          0,  418,    0,  421,  424,    0,  427,  430,  433,    0,  436, 
+          0,  439,  442,    0,    0,    0,  445,    0,    0,    0, 
+       }},
+       {{
+          0,    0,    0,    0,  448,  448,    0,  451,  451,    0,  454, 
+        454,    0,  457,    0,  460,    0,  463,    0,  466,    0,  469, 
+          0,  472,    0,  475,    0,  478,    0,    0,  481,    0, 
+       }},
+       {{
+        484,    0,  487,    0,  490,    0,  493,    0,  496,    0,  499, 
+          0,  502,    0,  505,    0,  508,  512,  512,    0,  515,    0, 
+        518,  521,  524,    0,  527,    0,  530,    0,  533,    0, 
+       }},
+       {{
+        536,    0,  539,    0,  542,    0,  545,    0,  548,    0,  551, 
+          0,  554,    0,  557,    0,  560,    0,  563,    0,  566,    0, 
+        569,    0,  572,    0,  575,    0,  578,    0,  581,    0, 
+       }},
+       {{
+          0,    0,  584,    0,  587,    0,  590,    0,  593,    0,  596, 
+          0,  599,    0,  602,    0,  605,    0,  608,    0,    0,    0, 
+          0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
+       }},
+       {{
+          0,    0,    0,    0,    0,  611,    0,    0,    0,    0,    0, 
+          0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
+          0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
+       }},
+       {{
+          0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
+          0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
+          0,    0,    0,    0,  614,    0,    0,    0,    0,    0, 
+       }},
+       {{
+          0,    0,    0,    0,    0,    0,  618,    0,  621,  624,  627, 
+          0,  630,    0,  633,  636,  639,  646,  649,  652,  655,  658, 
+        661,  664,  667,  611,  670,  673,   54,  676,  679,  682, 
+       }},
+       {{
+        685,  688,    0,  691,  694,  697,  700,  703,  706,  709,  712, 
+        715,    0,    0,    0,    0,  718,    0,    0,    0,    0,    0, 
+          0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
+       }},
+       {{
+          0,    0,  691,    0,    0,    0,    0,    0,    0,    0,    0, 
+          0,    0,    0,    0,    0,  649,  667,  697,  633,  715,  700, 
+        685,    0,    0,    0,  725,    0,  728,    0,  731,    0, 
+       }},
+       {{
+        734,    0,  737,    0,  740,    0,  743,    0,  746,    0,  749, 
+          0,  752,    0,  755,    0,  670,  688,  691,    0,  667,  658, 
+          0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
+       }},
+       {{
+        758,  761,  764,  767,  770,  773,  776,  779,  782,  785,  788, 
+        791,  794,  797,  800,  803,  806,  809,  812,  815,  818,  821, 
+        824,  827,  830,  833,  836,  839,  842,  845,  848,  851, 
+       }},
+       {{
+        854,  857,  860,  863,  866,  869,  872,  875,  878,  881,  884, 
+        887,  890,  893,  896,  899,    0,    0,    0,    0,    0,    0, 
+          0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
+       }},
+       {{
+        902,    0,  905,    0,  908,    0,  911,    0,  914,    0,  917, 
+          0,  920,    0,  923,    0,  926,    0,  929,    0,  932,    0, 
+        935,    0,  938,    0,  941,    0,  944,    0,  947,    0, 
+       }},
+       {{
+        950,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
+          0,  953,    0,  956,    0,  959,    0,  962,    0,  965,    0, 
+        968,    0,  971,    0,  974,    0,  977,    0,  980,    0, 
+       }},
+       {{
+        983,    0,  986,    0,  989,    0,  992,    0,  995,    0,  998, 
+          0, 1001,    0, 1004,    0, 1007,    0, 1010,    0, 1013,    0, 
+       1016,    0, 1019,    0, 1022,    0, 1025,    0, 1028,    0, 
+       }},
+       {{
+          0, 1031,    0, 1034,    0,    0,    0, 1037,    0,    0,    0, 
+       1040,    0,    0,    0,    0, 1043,    0, 1046,    0, 1049,    0, 
+       1052,    0, 1055,    0, 1058,    0, 1061,    0, 1064,    0, 
+       }},
+       {{
+       1067,    0, 1070,    0, 1073,    0, 1076,    0, 1079,    0, 1082, 
+          0, 1085,    0, 1088,    0, 1091,    0, 1094,    0, 1097,    0, 
+          0,    0, 1100,    0,    0,    0,    0,    0,    0,    0, 
+       }},
+       {{
+          0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
+          0,    0,    0,    0,    0,    0, 1103, 1106, 1109, 1112, 1115, 
+       1118, 1121, 1124, 1127, 1130, 1133, 1136, 1139, 1142, 1145, 
+       }},
+       {{
+       1148, 1151, 1154, 1157, 1160, 1163, 1166, 1169, 1172, 1175, 1178, 
+       1181, 1184, 1187, 1190, 1193, 1196, 1199, 1202, 1205, 1208, 1211, 
+       1214,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
+       }},
+       {{
+          0,    0,    0,    0,    0,    0,    0, 1217,    0,    0,    0, 
+          0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
+          0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
+       }},
+       {{
+          0,    0,    0,    0,    0,    0,   53,    0,    0,    0,    0, 
+         53,   53,   53,    0,    0,    0,    0,    0,    0,    0,    0, 
+          0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
+       }},
+       {{
+       1222,    0, 1226,    0, 1230,    0, 1234,    0, 1238,    0, 1242, 
+          0, 1246,    0, 1250,    0, 1254,    0, 1258,    0, 1262,    0, 
+       1266,    0, 1270,    0, 1274,    0, 1278,    0, 1282,    0, 
+       }},
+       {{
+       1286,    0, 1290,    0, 1294,    0, 1298,    0, 1302,    0, 1306, 
+          0, 1310,    0, 1314,    0, 1318,    0, 1322,    0, 1326,    0, 
+       1330,    0, 1334,    0, 1338,    0, 1342,    0, 1346,    0, 
+       }},
+       {{
+       1350,    0, 1354,    0, 1358,    0, 1362,    0, 1366,    0, 1370, 
+          0, 1374,    0, 1378,    0, 1382,    0, 1386,    0, 1390,    0, 
+       1394,    0, 1398,    0, 1402,    0, 1406,    0, 1410,    0, 
+       }},
+       {{
+       1414,    0, 1418,    0, 1422,    0, 1426,    0, 1430,    0, 1434, 
+          0, 1438,    0, 1442,    0, 1446,    0, 1450,    0, 1454,    0, 
+       1458,    0, 1462,    0, 1466,    0, 1470,    0, 1474,    0, 
+       }},
+       {{
+       1478,    0, 1482,    0, 1486,    0, 1490,    0, 1494,    0, 1498, 
+          0, 1502,    0, 1506,    0, 1510,    0, 1514,    0, 1518,    0, 
+       1522, 1526, 1530, 1534, 1538, 1414,    0,    0,    0,    0, 
+       }},
+       {{
+       1542,    0, 1546,    0, 1550,    0, 1554,    0, 1558,    0, 1562, 
+          0, 1566,    0, 1570,    0, 1574,    0, 1578,    0, 1582,    0, 
+       1586,    0, 1590,    0, 1594,    0, 1598,    0, 1602,    0, 
+       }},
+       {{
+       1606,    0, 1610,    0, 1614,    0, 1618,    0, 1622,    0, 1626, 
+          0, 1630,    0, 1634,    0, 1638,    0, 1642,    0, 1646,    0, 
+       1650,    0, 1654,    0, 1658,    0, 1662,    0, 1666,    0, 
+       }},
+       {{
+       1670,    0, 1674,    0, 1678,    0, 1682,    0, 1686,    0, 1690, 
+          0, 1694,    0, 1698,    0, 1702,    0, 1706,    0, 1710,    0, 
+       1714,    0, 1718,    0,    0,    0,    0,    0,    0,    0, 
+       }},
+       {{
+          0,    0,    0,    0,    0,    0,    0,    0, 1722, 1726, 1730, 
+       1734, 1738, 1742, 1746, 1750,    0,    0,    0,    0,    0,    0, 
+          0,    0, 1754, 1758, 1762, 1766, 1770, 1774,    0,    0, 
+       }},
+       {{
+          0,    0,    0,    0,    0,    0,    0,    0, 1778, 1782, 1786, 
+       1790, 1794, 1798, 1802, 1806,    0,    0,    0,    0,    0,    0, 
+          0,    0, 1810, 1814, 1818, 1822, 1826, 1830, 1834, 1838, 
+       }},
+       {{
+          0,    0,    0,    0,    0,    0,    0,    0, 1842, 1846, 1850, 
+       1854, 1858, 1862,    0,    0, 1866,    0, 1871,    0, 1878,    0, 
+       1885,    0,    0, 1892,    0, 1896,    0, 1900,    0, 1904, 
+       }},
+       {{
+          0,    0,    0,    0,    0,    0,    0,    0, 1908, 1912, 1916, 
+       1920, 1924, 1928, 1932, 1936,    0,    0,    0,    0,    0,    0, 
+          0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
+       }},
+       {{
+       1940, 1946, 1952, 1958, 1964, 1970, 1976, 1982, 1940, 1946, 1952, 
+       1958, 1964, 1970, 1976, 1982, 1988, 1994, 2000, 2006, 2012, 2018, 
+       2024, 2030, 1988, 1994, 2000, 2006, 2012, 2018, 2024, 2030, 
+       }},
+       {{
+       2036, 2042, 2048, 2054, 2060, 2066, 2072, 2078, 2036, 2042, 2048, 
+       2054, 2060, 2066, 2072, 2078,    0,    0, 2084, 2090, 2095,    0, 
+       2100, 2105, 2112, 2116, 2120, 2124, 2090,    0,  611,    0, 
+       }},
+       {{
+          0,    0, 2128, 2134, 2139,    0, 2144, 2149, 2156, 2160, 2164, 
+       2168, 2134,    0,    0,    0,    0,    0, 2172,  639,    0,    0, 
+       2179, 2184, 2191, 2195, 2199, 2203,    0,    0,    0,    0, 
+       }},
+       {{
+          0,    0, 2207,  718, 2214,    0, 2219, 2224, 2231, 2235, 2239, 
+       2243, 2247,    0,    0,    0,    0,    0, 2251, 2257, 2262,    0, 
+       2267, 2272, 2279, 2283, 2287, 2291, 2257,    0,    0,    0, 
+       }},
+       {{
+          0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
+         53,   53,   53,    0,    0,    0,    0,    0,    0,    0,    0, 
+          0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
+       }},
+       {{
+          0,    0,    0,    0,    0,    0,    0,    0, 2295,    0,    0, 
+          0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
+          0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
+       }},
+       {{
+          0,    0,    5, 2298,    0,    0,    0,  370,    0, 2302,    0, 
+         15,   15,   15,    0,    0,   17,   17,   23,    0,    0,   27, 
+       2306,    0,    0,   31,   33,   35,   35,   35,    0,    0, 
+       }},
+       {{
+       2309, 2312, 2316,    0,   51,    0,  709,    0,   51,    0,   21, 
+         72,    3,    5,    0,    0,    9,   11,    0,   25,    0,    0, 
+          0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
+       }},
+       {{
+       2319, 2323, 2327, 2331, 2335, 2339, 2343, 2347, 2351, 2355, 2359, 
+       2363, 2367, 2371, 2375, 2379,    0,    0,    0,    0,    0,    0, 
+          0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
+       }},
+       {{
+          0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
+          0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
+       2383, 2387, 2391, 2395, 2399, 2403, 2407, 2411, 2415, 2419, 
+       }},
+       {{
+       2423, 2427, 2431, 2435, 2439, 2443, 2447, 2451, 2455, 2459, 2463, 
+       2467, 2471, 2475, 2479, 2483,    0,    0,    0,    0,    0,    0, 
+          0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
+       }},
+       {{
+          0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
+          0,    0,    0,    0,    0,    0, 2487,    0, 2491,    0, 2494, 
+          0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
+       }},
+       {{
+       2497, 2500, 2503, 2507, 2510, 2513, 2516, 2519,    0,    0, 2522, 
+       2525, 2528,    0,    0,    0, 2532, 2535, 2539, 2543, 2547,    0, 
+          0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
+       }},
+       {{
+          0,    0,    0,    0,    0,    0,    0,    0,    0, 2497, 2551, 
+       2555, 2559,    0,    0,    0,    0,    0,    0,    0, 2563, 2566, 
+       2569, 2573, 2576, 2573, 2579, 2582, 2585, 2589, 2592, 2589, 
+       }},
+       {{
+       2595, 2599,    0, 2603,    0,    0, 2606, 2613, 2617, 2620,    0, 
+       2623,    0, 2626, 2629,    0,    0,    0,    0,    0,    0,    0, 
+          0, 2632,    0, 2635, 2639,    0, 2642, 2645,    0,    0, 
+       }},
+       {{
+       2648, 2651, 2654, 2657, 2661, 2665, 2665,    0,    0,    0,    0, 
+          0,    0,    0,    0,    0,    0,    0,    0, 2668, 2673, 2678, 
+       2683, 2688,    0,    0,    0,    0,    0,    0,    0,    0, 
+       }},
+       {{
+          0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
+          0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
+          0,    0,    0,    0,    0,    0,    0,    0,    0,   53, 
+       }},
+       {{
+          0, 2693, 2697, 2701, 2705, 2709, 2713, 2717, 2721, 2725, 2729, 
+       2733, 2737, 2741, 2745, 2749, 2753, 2757, 2761, 2765, 2769, 2773, 
+       2777, 2781, 2785, 2789, 2793,    0,    0,    0,    0,    0, 
+       }},
+       {{
+       2797, 2802, 2807, 2812, 2817, 2822, 2827, 2832, 2837, 2842, 2847, 
+       2852, 2857, 2862, 2867, 2872, 2877, 2882, 2887, 2892, 2897, 2902, 
+       2907, 2912, 2917, 2922, 2927, 2932, 2937, 2942, 2947, 2952, 
+       }},
+       {{
+       2957, 2962, 2967, 2972, 2977, 2982,    0,    0,    0,    0,    0, 
+          0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
+          0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
+       }},
+       {{
+          1,    3,    5,    7,    9,   11,   13,   15,   17,   19,   21, 
+         23,   25,   27,   29,   31,   33,   35,   37,   39,   41,   43, 
+         45,   47,   49,   51,    0,    0,    0,    0,    0,    0, 
+       }},
+       {{
+          0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
+          0,    0,    0,    0,    0,    0,    0,    0,    0,    1,    3, 
+          5,    7,    9,   11,   13,   15,   17,   19,   21,   23, 
+       }},
+       {{
+         25,   27,   29,   31,   33,   35,   37,   39,   41,   43,   45, 
+         47,   49,   51,    0,    0,    0,    0,    0,    0,    0,    0, 
+          0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
+       }},
+       {{
+          0,    0,    0,    0,    0,    0,    0,    0,    1,    3,    5, 
+          7,    9,   11,   13,   15,   17,   19,   21,   23,   25,   27, 
+         29,   31,   33,   35,   37,   39,   41,   43,   45,   47, 
+       }},
+       {{
+         49,   51,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
+          0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
+          0,    0,    0,    0,    0,    0,    1,    0,    5,    7, 
+       }},
+       {{
+          0,    0,   13,    0,    0,   19,   21,    0,    0,   27,   29, 
+         31,   33,    0,   37,   39,   41,   43,   45,   47,   49,   51, 
+          0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
+       }},
+       {{
+          0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
+          0,    0,    0,    0,    0,    1,    3,    5,    7,    9,   11, 
+         13,   15,   17,   19,   21,   23,   25,   27,   29,   31, 
+       }},
+       {{
+         33,   35,   37,   39,   41,   43,   45,   47,   49,   51,    0, 
+          0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
+          0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
+       }},
+       {{
+          0,    0,    0,    0,    1,    3,    0,    7,    9,   11,   13, 
+          0,    0,   19,   21,   23,   25,   27,   29,   31,   33,    0, 
+         37,   39,   41,   43,   45,   47,   49,    0,    0,    0, 
+       }},
+       {{
+          0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
+          0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
+          0,    0,    1,    3,    0,    7,    9,   11,   13,    0, 
+       }},
+       {{
+         17,   19,   21,   23,   25,    0,   29,    0,    0,    0,   37, 
+         39,   41,   43,   45,   47,   49,    0,    0,    0,    0,    0, 
+          0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
+       }},
+       {{
+          0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
+          0,    1,    3,    5,    7,    9,   11,   13,   15,   17,   19, 
+         21,   23,   25,   27,   29,   31,   33,   35,   37,   39, 
+       }},
+       {{
+         41,   43,   45,   47,   49,   51,    0,    0,    0,    0,    0, 
+          0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
+          0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
+       }},
+       {{
+         49,   51,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
+          0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
+          0,    0,    0,    0,    0,    0,    1,    3,    5,    7, 
+       }},
+       {{
+          9,   11,   13,   15,   17,   19,   21,   23,   25,   27,   29, 
+         31,   33,   35,   37,   39,   41,   43,   45,   47,   49,   51, 
+          0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
+       }},
+       {{
+          0,    0,    0,    0,    0,    0,    0,    0,  646,  649,  652, 
+        655,  658,  661,  664,  667,  611,  670,  673,   54,  676,  679, 
+        682,  685,  688,  667,  691,  694,  697,  700,  703,  706, 
+       }},
+       {{
+        709,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
+          0,    0,    0,    0,    0,    0,    0,    0,  691,    0,    0, 
+          0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
+       }},
+       {{
+          0,    0,  646,  649,  652,  655,  658,  661,  664,  667,  611, 
+        670,  673,   54,  676,  679,  682,  685,  688,  667,  691,  694, 
+        697,  700,  703,  706,  709,    0,    0,    0,    0,    0, 
+       }},
+       {{
+          0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
+          0,    0,  691,    0,    0,    0,    0,    0,    0,    0,    0, 
+          0,    0,    0,    0,    0,    0,  646,  649,  652,  655, 
+       }},
+       {{
+        658,  661,  664,  667,  611,  670,  673,   54,  676,  679,  682, 
+        685,  688,  667,  691,  694,  697,  700,  703,  706,  709,    0, 
+          0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
+       }},
+       {{
+          0,    0,    0,    0,    0,    0,    0,  691,    0,    0,    0, 
+          0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
+        646,  649,  652,  655,  658,  661,  664,  667,  611,  670, 
+       }},
+       {{
+        673,   54,  676,  679,  682,  685,  688,  667,  691,  694,  697, 
+        700,  703,  706,  709,    0,    0,    0,    0,    0,    0,    0, 
+          0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
+       }},
+       {{
+          0,  691,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
+          0,    0,    0,    0,    0,  646,  649,  652,  655,  658,  661, 
+        664,  667,  611,  670,  673,   54,  676,  679,  682,  685, 
+       }},
+       {{
+        688,  667,  691,  694,  697,  700,  703,  706,  709,    0,    0, 
+          0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
+          0,    0,    0,    0,    0,  691,    0,    0,    0,    0, 
+       }},
+};
+
+static const unsigned char nameprep_id05_map_data[] = {
+         0,  97,   0,  98,   0,  99,   0, 100,   0, 101,   0, 102, 
+         0, 103,   0, 104,   0, 105,   0, 106,   0, 107,   0, 108, 
+         0, 109,   0, 110,   0, 111,   0, 112,   0, 113,   0, 114, 
+         0, 115,   0, 116,   0, 117,   0, 118,   0, 119,   0, 120, 
+         0, 121,   0, 122,   0,   0, 206, 188,   0, 195, 160,   0, 
+       195, 161,   0, 195, 162,   0, 195, 163,   0, 195, 164,   0, 
+       195, 165,   0, 195, 166,   0, 195, 167,   0, 195, 168,   0, 
+       195, 169,   0, 195, 170,   0, 195, 171,   0, 195, 172,   0, 
+       195, 173,   0, 195, 174,   0, 195, 175,   0, 195, 176,   0, 
+       195, 177,   0, 195, 178,   0, 195, 179,   0, 195, 180,   0, 
+       195, 181,   0, 195, 182,   0, 195, 184,   0, 195, 185,   0, 
+       195, 186,   0, 195, 187,   0, 195, 188,   0, 195, 189,   0, 
+       195, 190,   0, 115, 115,   0, 196, 129,   0, 196, 131,   0, 
+       196, 133,   0, 196, 135,   0, 196, 137,   0, 196, 139,   0, 
+       196, 141,   0, 196, 143,   0, 196, 145,   0, 196, 147,   0, 
+       196, 149,   0, 196, 151,   0, 196, 153,   0, 196, 155,   0, 
+       196, 157,   0, 196, 159,   0, 196, 161,   0, 196, 163,   0, 
+       196, 165,   0, 196, 167,   0, 196, 169,   0, 196, 171,   0, 
+       196, 173,   0, 196, 175,   0, 196, 179,   0, 196, 181,   0, 
+       196, 183,   0, 196, 186,   0, 196, 188,   0, 196, 190,   0, 
+       197, 128,   0, 197, 130,   0, 197, 132,   0, 197, 134,   0, 
+       197, 136,   0, 202, 188, 110,   0, 197, 139,   0, 197, 141, 
+         0, 197, 143,   0, 197, 145,   0, 197, 147,   0, 197, 149, 
+         0, 197, 151,   0, 197, 153,   0, 197, 155,   0, 197, 157, 
+         0, 197, 159,   0, 197, 161,   0, 197, 163,   0, 197, 165, 
+         0, 197, 167,   0, 197, 169,   0, 197, 171,   0, 197, 173, 
+         0, 197, 175,   0, 197, 177,   0, 197, 179,   0, 197, 181, 
+         0, 197, 183,   0, 195, 191,   0, 197, 186,   0, 197, 188, 
+         0, 197, 190,   0, 201, 147,   0, 198, 131,   0, 198, 133, 
+         0, 201, 148,   0, 198, 136,   0, 201, 150,   0, 201, 151, 
+         0, 198, 140,   0, 199, 157,   0, 201, 153,   0, 201, 155, 
+         0, 198, 146,   0, 201, 160,   0, 201, 163,   0, 201, 169, 
+         0, 201, 168,   0, 198, 153,   0, 201, 175,   0, 201, 178, 
+         0, 201, 181,   0, 198, 161,   0, 198, 163,   0, 198, 165, 
+         0, 202, 128,   0, 198, 168,   0, 202, 131,   0, 198, 173, 
+         0, 202, 136,   0, 198, 176,   0, 202, 138,   0, 202, 139, 
+         0, 198, 180,   0, 198, 182,   0, 202, 146,   0, 198, 185, 
+         0, 198, 189,   0, 199, 134,   0, 199, 137,   0, 199, 140, 
+         0, 199, 142,   0, 199, 144,   0, 199, 146,   0, 199, 148, 
+         0, 199, 150,   0, 199, 152,   0, 199, 154,   0, 199, 156, 
+         0, 199, 159,   0, 199, 161,   0, 199, 163,   0, 199, 165, 
+         0, 199, 167,   0, 199, 169,   0, 199, 171,   0, 199, 173, 
+         0, 199, 175,   0, 106, 204, 140,   0, 199, 179,   0, 199, 
+       181,   0, 198, 149,   0, 198, 191,   0, 199, 185,   0, 199, 
+       187,   0, 199, 189,   0, 199, 191,   0, 200, 129,   0, 200, 
+       131,   0, 200, 133,   0, 200, 135,   0, 200, 137,   0, 200, 
+       139,   0, 200, 141,   0, 200, 143,   0, 200, 145,   0, 200, 
+       147,   0, 200, 149,   0, 200, 151,   0, 200, 153,   0, 200, 
+       155,   0, 200, 157,   0, 200, 159,   0, 200, 163,   0, 200, 
+       165,   0, 200, 167,   0, 200, 169,   0, 200, 171,   0, 200, 
+       173,   0, 200, 175,   0, 200, 177,   0, 200, 179,   0, 206, 
+       185,   0,  32, 206, 185,   0, 206, 172,   0, 206, 173,   0, 
+       206, 174,   0, 206, 175,   0, 207, 140,   0, 207, 141,   0, 
+       207, 142,   0, 206, 185, 204, 136, 204, 129,   0, 206, 177, 
+         0, 206, 178,   0, 206, 179,   0, 206, 180,   0, 206, 181, 
+         0, 206, 182,   0, 206, 183,   0, 206, 184,   0, 206, 186, 
+         0, 206, 187,   0, 206, 189,   0, 206, 190,   0, 206, 191, 
+         0, 207, 128,   0, 207, 129,   0, 207, 131,   0, 207, 132, 
+         0, 207, 133,   0, 207, 134,   0, 207, 135,   0, 207, 136, 
+         0, 207, 137,   0, 207, 138,   0, 207, 139,   0, 207, 133, 
+       204, 136, 204, 129,   0, 207, 155,   0, 207, 157,   0, 207, 
+       159,   0, 207, 161,   0, 207, 163,   0, 207, 165,   0, 207, 
+       167,   0, 207, 169,   0, 207, 171,   0, 207, 173,   0, 207, 
+       175,   0, 209, 144,   0, 209, 145,   0, 209, 146,   0, 209, 
+       147,   0, 209, 148,   0, 209, 149,   0, 209, 150,   0, 209, 
+       151,   0, 209, 152,   0, 209, 153,   0, 209, 154,   0, 209, 
+       155,   0, 209, 156,   0, 209, 157,   0, 209, 158,   0, 209, 
+       159,   0, 208, 176,   0, 208, 177,   0, 208, 178,   0, 208, 
+       179,   0, 208, 180,   0, 208, 181,   0, 208, 182,   0, 208, 
+       183,   0, 208, 184,   0, 208, 185,   0, 208, 186,   0, 208, 
+       187,   0, 208, 188,   0, 208, 189,   0, 208, 190,   0, 208, 
+       191,   0, 209, 128,   0, 209, 129,   0, 209, 130,   0, 209, 
+       131,   0, 209, 132,   0, 209, 133,   0, 209, 134,   0, 209, 
+       135,   0, 209, 136,   0, 209, 137,   0, 209, 138,   0, 209, 
+       139,   0, 209, 140,   0, 209, 141,   0, 209, 142,   0, 209, 
+       143,   0, 209, 161,   0, 209, 163,   0, 209, 165,   0, 209, 
+       167,   0, 209, 169,   0, 209, 171,   0, 209, 173,   0, 209, 
+       175,   0, 209, 177,   0, 209, 179,   0, 209, 181,   0, 209, 
+       183,   0, 209, 185,   0, 209, 187,   0, 209, 189,   0, 209, 
+       191,   0, 210, 129,   0, 210, 141,   0, 210, 143,   0, 210, 
+       145,   0, 210, 147,   0, 210, 149,   0, 210, 151,   0, 210, 
+       153,   0, 210, 155,   0, 210, 157,   0, 210, 159,   0, 210, 
+       161,   0, 210, 163,   0, 210, 165,   0, 210, 167,   0, 210, 
+       169,   0, 210, 171,   0, 210, 173,   0, 210, 175,   0, 210, 
+       177,   0, 210, 179,   0, 210, 181,   0, 210, 183,   0, 210, 
+       185,   0, 210, 187,   0, 210, 189,   0, 210, 191,   0, 211, 
+       130,   0, 211, 132,   0, 211, 136,   0, 211, 140,   0, 211, 
+       145,   0, 211, 147,   0, 211, 149,   0, 211, 151,   0, 211, 
+       153,   0, 211, 155,   0, 211, 157,   0, 211, 159,   0, 211, 
+       161,   0, 211, 163,   0, 211, 165,   0, 211, 167,   0, 211, 
+       169,   0, 211, 171,   0, 211, 173,   0, 211, 175,   0, 211, 
+       177,   0, 211, 179,   0, 211, 181,   0, 211, 185,   0, 213, 
+       161,   0, 213, 162,   0, 213, 163,   0, 213, 164,   0, 213, 
+       165,   0, 213, 166,   0, 213, 167,   0, 213, 168,   0, 213, 
+       169,   0, 213, 170,   0, 213, 171,   0, 213, 172,   0, 213, 
+       173,   0, 213, 174,   0, 213, 175,   0, 213, 176,   0, 213, 
+       177,   0, 213, 178,   0, 213, 179,   0, 213, 180,   0, 213, 
+       181,   0, 213, 182,   0, 213, 183,   0, 213, 184,   0, 213, 
+       185,   0, 213, 186,   0, 213, 187,   0, 213, 188,   0, 213, 
+       189,   0, 213, 190,   0, 213, 191,   0, 214, 128,   0, 214, 
+       129,   0, 214, 130,   0, 214, 131,   0, 214, 132,   0, 214, 
+       133,   0, 214, 134,   0, 213, 165, 214, 130,   0, 225, 184, 
+       129,   0, 225, 184, 131,   0, 225, 184, 133,   0, 225, 184, 
+       135,   0, 225, 184, 137,   0, 225, 184, 139,   0, 225, 184, 
+       141,   0, 225, 184, 143,   0, 225, 184, 145,   0, 225, 184, 
+       147,   0, 225, 184, 149,   0, 225, 184, 151,   0, 225, 184, 
+       153,   0, 225, 184, 155,   0, 225, 184, 157,   0, 225, 184, 
+       159,   0, 225, 184, 161,   0, 225, 184, 163,   0, 225, 184, 
+       165,   0, 225, 184, 167,   0, 225, 184, 169,   0, 225, 184, 
+       171,   0, 225, 184, 173,   0, 225, 184, 175,   0, 225, 184, 
+       177,   0, 225, 184, 179,   0, 225, 184, 181,   0, 225, 184, 
+       183,   0, 225, 184, 185,   0, 225, 184, 187,   0, 225, 184, 
+       189,   0, 225, 184, 191,   0, 225, 185, 129,   0, 225, 185, 
+       131,   0, 225, 185, 133,   0, 225, 185, 135,   0, 225, 185, 
+       137,   0, 225, 185, 139,   0, 225, 185, 141,   0, 225, 185, 
+       143,   0, 225, 185, 145,   0, 225, 185, 147,   0, 225, 185, 
+       149,   0, 225, 185, 151,   0, 225, 185, 153,   0, 225, 185, 
+       155,   0, 225, 185, 157,   0, 225, 185, 159,   0, 225, 185, 
+       161,   0, 225, 185, 163,   0, 225, 185, 165,   0, 225, 185, 
+       167,   0, 225, 185, 169,   0, 225, 185, 171,   0, 225, 185, 
+       173,   0, 225, 185, 175,   0, 225, 185, 177,   0, 225, 185, 
+       179,   0, 225, 185, 181,   0, 225, 185, 183,   0, 225, 185, 
+       185,   0, 225, 185, 187,   0, 225, 185, 189,   0, 225, 185, 
+       191,   0, 225, 186, 129,   0, 225, 186, 131,   0, 225, 186, 
+       133,   0, 225, 186, 135,   0, 225, 186, 137,   0, 225, 186, 
+       139,   0, 225, 186, 141,   0, 225, 186, 143,   0, 225, 186, 
+       145,   0, 225, 186, 147,   0, 225, 186, 149,   0, 104, 204, 
+       177,   0, 116, 204, 136,   0, 119, 204, 138,   0, 121, 204, 
+       138,   0,  97, 202, 190,   0, 225, 186, 161,   0, 225, 186, 
+       163,   0, 225, 186, 165,   0, 225, 186, 167,   0, 225, 186, 
+       169,   0, 225, 186, 171,   0, 225, 186, 173,   0, 225, 186, 
+       175,   0, 225, 186, 177,   0, 225, 186, 179,   0, 225, 186, 
+       181,   0, 225, 186, 183,   0, 225, 186, 185,   0, 225, 186, 
+       187,   0, 225, 186, 189,   0, 225, 186, 191,   0, 225, 187, 
+       129,   0, 225, 187, 131,   0, 225, 187, 133,   0, 225, 187, 
+       135,   0, 225, 187, 137,   0, 225, 187, 139,   0, 225, 187, 
+       141,   0, 225, 187, 143,   0, 225, 187, 145,   0, 225, 187, 
+       147,   0, 225, 187, 149,   0, 225, 187, 151,   0, 225, 187, 
+       153,   0, 225, 187, 155,   0, 225, 187, 157,   0, 225, 187, 
+       159,   0, 225, 187, 161,   0, 225, 187, 163,   0, 225, 187, 
+       165,   0, 225, 187, 167,   0, 225, 187, 169,   0, 225, 187, 
+       171,   0, 225, 187, 173,   0, 225, 187, 175,   0, 225, 187, 
+       177,   0, 225, 187, 179,   0, 225, 187, 181,   0, 225, 187, 
+       183,   0, 225, 187, 185,   0, 225, 188, 128,   0, 225, 188, 
+       129,   0, 225, 188, 130,   0, 225, 188, 131,   0, 225, 188, 
+       132,   0, 225, 188, 133,   0, 225, 188, 134,   0, 225, 188, 
+       135,   0, 225, 188, 144,   0, 225, 188, 145,   0, 225, 188, 
+       146,   0, 225, 188, 147,   0, 225, 188, 148,   0, 225, 188, 
+       149,   0, 225, 188, 160,   0, 225, 188, 161,   0, 225, 188, 
+       162,   0, 225, 188, 163,   0, 225, 188, 164,   0, 225, 188, 
+       165,   0, 225, 188, 166,   0, 225, 188, 167,   0, 225, 188, 
+       176,   0, 225, 188, 177,   0, 225, 188, 178,   0, 225, 188, 
+       179,   0, 225, 188, 180,   0, 225, 188, 181,   0, 225, 188, 
+       182,   0, 225, 188, 183,   0, 225, 189, 128,   0, 225, 189, 
+       129,   0, 225, 189, 130,   0, 225, 189, 131,   0, 225, 189, 
+       132,   0, 225, 189, 133,   0, 207, 133, 204, 147,   0, 207, 
+       133, 204, 147, 204, 128,   0, 207, 133, 204, 147, 204, 129, 
+         0, 207, 133, 204, 147, 205, 130,   0, 225, 189, 145,   0, 
+       225, 189, 147,   0, 225, 189, 149,   0, 225, 189, 151,   0, 
+       225, 189, 160,   0, 225, 189, 161,   0, 225, 189, 162,   0, 
+       225, 189, 163,   0, 225, 189, 164,   0, 225, 189, 165,   0, 
+       225, 189, 166,   0, 225, 189, 167,   0, 225, 188, 128, 206, 
+       185,   0, 225, 188, 129, 206, 185,   0, 225, 188, 130, 206, 
+       185,   0, 225, 188, 131, 206, 185,   0, 225, 188, 132, 206, 
+       185,   0, 225, 188, 133, 206, 185,   0, 225, 188, 134, 206, 
+       185,   0, 225, 188, 135, 206, 185,   0, 225, 188, 160, 206, 
+       185,   0, 225, 188, 161, 206, 185,   0, 225, 188, 162, 206, 
+       185,   0, 225, 188, 163, 206, 185,   0, 225, 188, 164, 206, 
+       185,   0, 225, 188, 165, 206, 185,   0, 225, 188, 166, 206, 
+       185,   0, 225, 188, 167, 206, 185,   0, 225, 189, 160, 206, 
+       185,   0, 225, 189, 161, 206, 185,   0, 225, 189, 162, 206, 
+       185,   0, 225, 189, 163, 206, 185,   0, 225, 189, 164, 206, 
+       185,   0, 225, 189, 165, 206, 185,   0, 225, 189, 166, 206, 
+       185,   0, 225, 189, 167, 206, 185,   0, 225, 189, 176, 206, 
+       185,   0, 206, 177, 206, 185,   0, 206, 172, 206, 185,   0, 
+       206, 177, 205, 130,   0, 206, 177, 205, 130, 206, 185,   0, 
+       225, 190, 176,   0, 225, 190, 177,   0, 225, 189, 176,   0, 
+       225, 189, 177,   0, 225, 189, 180, 206, 185,   0, 206, 183, 
+       206, 185,   0, 206, 174, 206, 185,   0, 206, 183, 205, 130, 
+         0, 206, 183, 205, 130, 206, 185,   0, 225, 189, 178,   0, 
+       225, 189, 179,   0, 225, 189, 180,   0, 225, 189, 181,   0, 
+       206, 185, 204, 136, 204, 128,   0, 206, 185, 205, 130,   0, 
+       206, 185, 204, 136, 205, 130,   0, 225, 191, 144,   0, 225, 
+       191, 145,   0, 225, 189, 182,   0, 225, 189, 183,   0, 207, 
+       133, 204, 136, 204, 128,   0, 207, 129, 204, 147,   0, 207, 
+       133, 205, 130,   0, 207, 133, 204, 136, 205, 130,   0, 225, 
+       191, 160,   0, 225, 191, 161,   0, 225, 189, 186,   0, 225, 
+       189, 187,   0, 225, 191, 165,   0, 225, 189, 188, 206, 185, 
+         0, 207, 137, 206, 185,   0, 207, 142, 206, 185,   0, 207, 
+       137, 205, 130,   0, 207, 137, 205, 130, 206, 185,   0, 225, 
+       189, 184,   0, 225, 189, 185,   0, 225, 189, 188,   0, 225, 
+       189, 189,   0, 114, 115,   0, 194, 176,  99,   0, 194, 176, 
+       102,   0, 110, 111,   0, 115, 109,   0, 116, 101, 108,   0, 
+       116, 109,   0, 226, 133, 176,   0, 226, 133, 177,   0, 226, 
+       133, 178,   0, 226, 133, 179,   0, 226, 133, 180,   0, 226, 
+       133, 181,   0, 226, 133, 182,   0, 226, 133, 183,   0, 226, 
+       133, 184,   0, 226, 133, 185,   0, 226, 133, 186,   0, 226, 
+       133, 187,   0, 226, 133, 188,   0, 226, 133, 189,   0, 226, 
+       133, 190,   0, 226, 133, 191,   0, 226, 147, 144,   0, 226, 
+       147, 145,   0, 226, 147, 146,   0, 226, 147, 147,   0, 226, 
+       147, 148,   0, 226, 147, 149,   0, 226, 147, 150,   0, 226, 
+       147, 151,   0, 226, 147, 152,   0, 226, 147, 153,   0, 226, 
+       147, 154,   0, 226, 147, 155,   0, 226, 147, 156,   0, 226, 
+       147, 157,   0, 226, 147, 158,   0, 226, 147, 159,   0, 226, 
+       147, 160,   0, 226, 147, 161,   0, 226, 147, 162,   0, 226, 
+       147, 163,   0, 226, 147, 164,   0, 226, 147, 165,   0, 226, 
+       147, 166,   0, 226, 147, 167,   0, 226, 147, 168,   0, 226, 
+       147, 169,   0, 104, 112,  97,   0,  97, 117,   0, 111, 118, 
+         0, 112,  97,   0, 110,  97,   0, 206, 188,  97,   0, 109, 
+        97,   0, 107,  97,   0, 107,  98,   0, 109,  98,   0, 103, 
+        98,   0, 112, 102,   0, 110, 102,   0, 206, 188, 102,   0, 
+       104, 122,   0, 107, 104, 122,   0, 109, 104, 122,   0, 103, 
+       104, 122,   0, 116, 104, 122,   0, 107, 112,  97,   0, 109, 
+       112,  97,   0, 103, 112,  97,   0, 112, 118,   0, 110, 118, 
+         0, 206, 188, 118,   0, 109, 118,   0, 107, 118,   0, 112, 
+       119,   0, 110, 119,   0, 206, 188, 119,   0, 109, 119,   0, 
+       107, 119,   0, 107, 207, 137,   0, 109, 207, 137,   0,  98, 
+       113,   0,  99, 226, 136, 149, 107, 103,   0,  99, 111,  46, 
+         0, 100,  98,   0, 103, 121,   0, 104, 112,   0, 107, 107, 
+         0, 107, 109,   0, 112, 104,   0, 112, 112, 109,   0, 112, 
+       114,   0, 115, 118,   0, 119,  98,   0, 102, 102,   0, 102, 
+       105,   0, 102, 108,   0, 102, 102, 105,   0, 102, 102, 108, 
+         0, 115, 116,   0, 213, 180, 213, 182,   0, 213, 180, 213, 
+       165,   0, 213, 180, 213, 171,   0, 213, 190, 213, 182,   0, 
+       213, 180, 213, 173,   0, 239, 189, 129,   0, 239, 189, 130, 
+         0, 239, 189, 131,   0, 239, 189, 132,   0, 239, 189, 133, 
+         0, 239, 189, 134,   0, 239, 189, 135,   0, 239, 189, 136, 
+         0, 239, 189, 137,   0, 239, 189, 138,   0, 239, 189, 139, 
+         0, 239, 189, 140,   0, 239, 189, 141,   0, 239, 189, 142, 
+         0, 239, 189, 143,   0, 239, 189, 144,   0, 239, 189, 145, 
+         0, 239, 189, 146,   0, 239, 189, 147,   0, 239, 189, 148, 
+         0, 239, 189, 149,   0, 239, 189, 150,   0, 239, 189, 151, 
+         0, 239, 189, 152,   0, 239, 189, 153,   0, 239, 189, 154, 
+         0, 240, 144, 144, 168,   0, 240, 144, 144, 169,   0, 240, 
+       144, 144, 170,   0, 240, 144, 144, 171,   0, 240, 144, 144, 
+       172,   0, 240, 144, 144, 173,   0, 240, 144, 144, 174,   0, 
+       240, 144, 144, 175,   0, 240, 144, 144, 176,   0, 240, 144, 
+       144, 177,   0, 240, 144, 144, 178,   0, 240, 144, 144, 179, 
+         0, 240, 144, 144, 180,   0, 240, 144, 144, 181,   0, 240, 
+       144, 144, 182,   0, 240, 144, 144, 183,   0, 240, 144, 144, 
+       184,   0, 240, 144, 144, 185,   0, 240, 144, 144, 186,   0, 
+       240, 144, 144, 187,   0, 240, 144, 144, 188,   0, 240, 144, 
+       144, 189,   0, 240, 144, 144, 190,   0, 240, 144, 144, 191, 
+         0, 240, 144, 145, 128,   0, 240, 144, 145, 129,   0, 240, 
+       144, 145, 130,   0, 240, 144, 145, 131,   0, 240, 144, 145, 
+       132,   0, 240, 144, 145, 133,   0, 240, 144, 145, 134,   0, 
+       240, 144, 145, 135,   0, 240, 144, 145, 136,   0, 240, 144, 
+       145, 137,   0, 240, 144, 145, 138,   0, 240, 144, 145, 139, 
+         0, 240, 144, 145, 140,   0, 240, 144, 145, 141,   0, 
+};
+
+static const unsigned short nameprep_id05_prohibited_imap[] = {
+          68,   196,   196,   324,   196,   196,   196,   452, 
+         196,   196,   196,   580,   196,   196,   196,   580, 
+         196,   196,   196,   580,   196,   196,   196,   580, 
+         196,   196,   196,   580,   196,   196,   196,   580, 
+         196,   196,   196,   580,   196,   196,   196,   580, 
+         196,   196,   196,   580,   196,   196,   196,   580, 
+         196,   196,   196,   580,   196,   196,   196,   580, 
+         708,   196,   196,   580,   836,   836,   836,   836, 
+         836,   836,   836,   836,     0,     1,     2,     2, 
+           2,     2,     2,     2,     2,     2,     2,     2, 
+           2,     2,     3,     2,     2,     2,     2,     2, 
+           2,     2,     2,     2,     2,     2,     2,     2, 
+           2,     2,     2,     2,     2,     2,     2,     2, 
+           2,     2,     2,     2,     2,     2,     2,     2, 
+           2,     4,     2,     2,     5,     2,     2,     2, 
+           2,     2,     2,     2,     2,     2,     2,     2, 
+           2,     2,     2,     2,     6,     2,     2,     2, 
+           2,     2,     2,     2,     2,     2,     2,     2, 
+           2,     2,     2,     2,     2,     2,     2,     2, 
+           2,     2,     2,     2,     2,     2,     2,     2, 
+           2,     2,     2,     7,     8,     2,     2,     2, 
+           2,     2,     2,     2,     2,     2,     2,     2, 
+           2,     2,     2,     2,     2,     2,     2,     2, 
+           2,     2,     2,     2,     2,     2,     2,     2, 
+           2,     2,     2,     2,     2,     2,     2,     2, 
+           2,     2,     2,     2,     2,     2,     2,     2, 
+           2,     2,     2,     2,     2,     2,     2,     2, 
+           2,     2,     2,     2,     2,     2,     2,     2, 
+           2,     2,     2,     2,     2,     2,     2,     2, 
+           2,     2,     2,     2,     2,     2,     2,     2, 
+           2,     2,     2,     2,     2,     2,     2,     2, 
+           2,     2,     2,     2,     2,     2,     2,     2, 
+           2,     2,     2,     2,     2,     2,     2,     2, 
+           2,     2,     2,     2,     2,     2,     2,     2, 
+           2,     2,     2,     2,     2,     2,     2,     2, 
+           2,     2,     2,     2,     2,     2,     2,     2, 
+           2,     2,     2,     2,     2,     2,     2,     2, 
+           2,     2,     2,     2,     2,     2,     2,     2, 
+           2,     2,     2,     2,     2,     2,     2,     2, 
+           2,     2,     2,     2,     2,     2,     2,     2, 
+           2,     2,     2,     2,     2,     2,     2,     2, 
+           2,     2,     2,     2,     2,     2,     2,     2, 
+           2,     2,     2,     2,     2,     2,     2,     2, 
+           2,     2,     2,     2,     2,     2,     2,     2, 
+           2,     2,     2,     2,     2,     2,     2,     2, 
+           2,     2,     2,     2,     2,     2,     2,     2, 
+           2,     2,     2,     2,     9,     9,     9,     9, 
+           9,     9,     9,     9,     9,     9,     9,     9, 
+           9,     9,     9,     9,     9,     9,     9,     9, 
+           9,     9,     9,     9,     9,     9,     9,     9, 
+           9,     9,     9,     9,     9,     9,     9,     9, 
+           9,     9,     9,     9,     9,     9,     9,     9, 
+           9,     9,     9,     9,     9,     9,     9,     9, 
+           9,     9,     9,     9,     9,     9,     9,     9, 
+           9,     9,     9,     9,     9,     9,     2,     2, 
+           2,     2,     2,     2,     2,     2,     2,    10, 
+           2,     2,     2,    11,     2,     2,     2,     2, 
+           2,     2,     2,     2,     2,     2,     2,     2, 
+           2,     2,     2,     2,     2,     2,     2,     2, 
+           2,     2,     2,     2,     2,     2,     2,     2, 
+           2,     2,     2,     2,     2,     2,    12,     2, 
+           2,     2,     2,     2,     2,     2,     2,     2, 
+           2,     2,     2,     2,     2,     2,     2,     2, 
+           2,     2,     2,     2,     2,     2,     2,     2, 
+           2,     2,     2,     2,     2,     2,     2,     2, 
+           2,     2,     2,     2,     2,     2,     2,     2, 
+           2,     2,     2,     2,     2,     2,     2,     2, 
+           2,     2,     2,     2,     2,     2,     2,     2, 
+           2,     2,     2,     2,     2,     2,     2,     2, 
+           2,     2,     2,     2,     2,     2,     2,     2, 
+           2,     2,     2,     2,     2,     2,     2,     2, 
+           2,     2,     2,     2,     2,     2,     2,     2, 
+           2,     2,     2,    13,     2,     2,     2,     2, 
+           2,     2,     2,     2,     2,     2,     2,     2, 
+           2,     2,     2,     2,     2,     2,     2,     2, 
+           2,     2,     2,     2,     2,     2,     2,     2, 
+           2,     2,     2,     2,     2,     2,     2,     2, 
+           2,     2,     2,     2,     2,     2,     2,     2, 
+           2,     2,     2,     2,     2,     2,     2,     2, 
+           2,     2,     2,     2,     2,     2,     2,     2, 
+           2,     2,     2,     2,     2,     2,     2,     2, 
+           2,     2,     2,     2,     2,     2,     2,     2, 
+           2,     2,     2,     2,     2,     2,     2,     2, 
+           2,     2,     2,     2,     2,     2,     2,     2, 
+           2,     2,     2,     2,     2,     2,     2,     2, 
+           2,     2,     2,     2,     2,     2,     2,     2, 
+           2,     2,     2,     2,     2,     2,     2,     2, 
+           2,     2,     2,     2,     2,     2,     2,     2, 
+           2,     2,     2,    13,    14,     2,     2,     2, 
+           2,     2,     2,     2,     2,     2,     2,     2, 
+           2,     2,     2,     2,     2,     2,     2,     2, 
+           2,     2,     2,     2,     2,     2,     2,     2, 
+           2,     2,     2,     2,     2,     2,     2,     2, 
+           2,     2,     2,     2,     2,     2,     2,     2, 
+           2,     2,     2,     2,     2,     2,     2,     2, 
+           2,     2,     2,     2,     2,     2,     2,     2, 
+           2,     2,     2,     2,     2,     2,     2,     2, 
+           2,     2,     2,     2,     2,     2,     2,     2, 
+           2,     2,     2,     2,     2,     2,     2,     2, 
+           2,     2,     2,     2,     2,     2,     2,     2, 
+           2,     2,     2,     2,     2,     2,     2,     2, 
+           2,     2,     2,     2,     2,     2,     2,     2, 
+           2,     2,     2,     2,     2,     2,     2,     2, 
+           2,     2,     2,     2,     2,     2,     2,     2, 
+           2,     2,     2,     2,     9,     9,     9,     9, 
+           9,     9,     9,     9,     9,     9,     9,     9, 
+           9,     9,     9,     9,     9,     9,     9,     9, 
+           9,     9,     9,     9,     9,     9,     9,     9, 
+           9,     9,     9,     9,     9,     9,     9,     9, 
+           9,     9,     9,     9,     9,     9,     9,     9, 
+           9,     9,     9,     9,     9,     9,     9,     9, 
+           9,     9,     9,     9,     9,     9,     9,     9, 
+           9,     9,     9,     9,     9,     9,     9,     9, 
+           9,     9,     9,     9,     9,     9,     9,     9, 
+           9,     9,     9,     9,     9,     9,     9,     9, 
+           9,     9,     9,     9,     9,     9,     9,     9, 
+           9,     9,     9,     9,     9,     9,     9,     9, 
+           9,     9,     9,     9,     9,     9,     9,     9, 
+           9,     9,     9,     9,     9,     9,     9,     9, 
+           9,     9,     9,     9,     9,     9,     9,     9, 
+           9,     9,     9,     9, 
+};
+
+static const struct {
+       unsigned char bm[16];
+} nameprep_id05_prohibited_bitmap[] = {
+       {{
+       255,255,255,255,255,223,  0,252,  1,  0,  0,248,  1,  0,  0,248,
+       }},
+       {{
+       255,255,255,255,  1,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+       }},
+       {{
+         0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+       }},
+       {{
+         0,128,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+       }},
+       {{
+         1,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+       }},
+       {{
+         0, 64,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+       }},
+       {{
+       255,199,  0,  0,  0,255,  0,  0,  0,  0,  0,  0,  0,252,  0,  0,
+       }},
+       {{
+         0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,255, 15,
+       }},
+       {{
+         5,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+       }},
+       {{
+       255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+       }},
+       {{
+         0,  0,  0,  0,  0,  0,  0,  0,  0,  0,255,255,255,255,  0,  0,
+       }},
+       {{
+         0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,254,
+       }},
+       {{
+         0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,248,  7,
+       }},
+       {{
+         0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,192,
+       }},
+       {{
+         2,  0,  0,  0,255,255,255,255,255,255,255,255,255,255,255,255,
+       }},
+};
+static const unsigned short nameprep_id05_unassigned_imap[] = {
+          68,   196,   324,   452,   580,   708,   708,   836, 
+         964,   964,  1092,  1220,   708,   708,   708,  1348, 
+         708,   708,   708,  1348,   708,   708,   708,  1348, 
+         708,   708,   708,  1348,   708,   708,   708,  1348, 
+         708,   708,   708,  1348,   708,   708,   708,  1348, 
+         708,   708,   708,  1348,   708,   708,   708,  1348, 
+         708,   708,   708,  1348,   708,   708,   708,  1348, 
+        1476,   708,   708,  1348,   964,   964,   964,   964, 
+         964,   964,   964,   964,     0,     0,     0,     0, 
+           1,     2,     3,     4,     0,     5,     6,     7, 
+           8,     9,    10,    11,    12,    12,    13,    14, 
+          15,    16,    17,    18,    19,    20,    21,    22, 
+          23,    24,    25,    26,    27,    28,    29,    30, 
+          31,    32,    33,    34,    35,     0,     0,     0, 
+          36,    37,    12,    38,    39,    40,    12,    12, 
+          12,    12,    12,    12,    12,    12,    12,    12, 
+           0,    41,    42,    43,    44,    45,    46,    47, 
+           0,    48,    49,    50,    51,    52,     0,    53, 
+          54,    12,    55,    56,     0,     0,    12,    12, 
+          12,    12,    12,    12,    12,    12,    12,    12, 
+          12,    57,     0,    58,    59,    60,    61,    62, 
+          63,    64,    65,    66,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,    67, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,    68,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,    69,    12,    12, 
           12,    12,    12,    12,    12,    12,    12,    12, 
+          12,    12,    12,    12,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,    70,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+          71,    12,    72,    73,     0,     0,    74,    75, 
+          76,    77,    78,    79,    12,    12,    12,    12, 
+          12,    12,    80,    12,    81,    12,    12,    12, 
           12,    12,    12,    12,    12,    12,    12,    12, 
           12,    12,    12,    12,    12,    12,    12,    12, 
           12,    12,    12,    12,    12,    12,    12,    12, 
@@ -1426,7 +2308,44 @@ static unsigned short nameprep_id03_unassigned_imap[] = {
           12,    12,    12,    12,    12,    12,    12,    12, 
           12,    12,    12,    12,    12,    12,    12,    12, 
           12,    12,    12,    12,    12,    12,    12,    12, 
-          12,    12,    12,    80,     0,     0,     0,     0, 
+          12,    12,    12,    12,    12,    12,    12,    12, 
+          12,    12,    12,    12,    12,    12,    12,    12, 
+          12,    12,    12,    12,    12,    12,    12,    12, 
+          12,    12,    12,    12,    12,    12,    12,    12, 
+          12,    12,    12,    12,    12,    12,    12,    12, 
+          12,    12,    12,    12,    12,    12,    12,    12, 
+          12,    12,    12,    12,    12,    12,    12,    12, 
+          12,    12,    12,    12,    12,    12,    12,    12, 
+          12,    12,    12,    12,    12,    12,    12,    12, 
+          12,    12,    12,    12,    12,    12,    12,    12, 
+          12,    12,    12,    12,    12,    12,    12,    12, 
+          12,    12,    12,    12,    12,    12,    12,    12, 
+          12,    12,    12,    12,    12,    12,    12,    12, 
+          12,    12,    12,    12,    12,    12,    12,    12, 
+          12,    12,    12,    12,    12,    12,    12,    12, 
+          12,    12,    12,    12,    12,    12,    12,    12, 
+          12,    12,    12,    12,    12,    12,    12,    12, 
+          12,    12,    12,    12,    12,    12,    12,    12, 
+          12,    12,    12,    12,    12,    12,    12,    12, 
+          12,    12,    12,    12,    12,    12,    12,    12, 
+          12,    12,    12,    12,    12,    12,    12,    12, 
+          12,    12,    12,    12,    12,    12,    12,    12, 
+          12,    12,    12,    12,    12,    12,    12,    12, 
+          12,    12,    12,    12,    12,    12,    12,    12, 
+          12,    12,    12,    12,    12,    12,    12,    12, 
+          12,    12,    12,    12,     0,    82,    83,    84, 
+          12,    12,    12,    12,    85,    86,    87,     0, 
+           0,    88,     0,    89,    12,    12,    12,    12, 
+          12,    12,    12,    12,    12,    12,    12,    12, 
+          12,    12,    12,    12,    12,    12,    12,    12, 
+          12,    12,    12,    12,    12,    12,    12,    12, 
+          12,    12,    12,    12,    12,    12,    12,    12, 
+          12,    12,    12,    12,    12,    12,    12,    12, 
+          12,    12,    12,    12,    12,    12,    12,    12, 
+          12,    12,    12,    12,    12,    12,    12,    12, 
+          12,    12,    12,    12,    12,    12,    12,    12, 
+          12,    12,    12,    12,    12,    12,    12,    12, 
+          12,    12,    12,    90,     0,     0,     0,     0, 
            0,     0,     0,     0,     0,     0,     0,     0, 
            0,     0,     0,     0,     0,     0,     0,     0, 
            0,     0,     0,     0,     0,     0,     0,     0, 
@@ -1442,12 +2361,76 @@ static unsigned short nameprep_id03_unassigned_imap[] = {
            0,     0,     0,     0,     0,     0,     0,     0, 
            0,     0,     0,     0,     0,     0,     0,     0, 
            0,     0,     0,     0,     0,     0,     0,     0, 
-           0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,    91,    12,    12,    12,    12,    12,    12, 
+          12,    12,    12,    12,    12,    12,    12,    12, 
+          12,    12,    12,    12,    12,    12,    12,    12, 
+          12,    12,    12,    12,    12,    12,    12,    12, 
+          12,    12,    12,    12,    12,    12,    12,    12, 
+          12,    12,    12,    12,    12,    12,    12,    12, 
+          12,    12,    12,    12,    12,    12,    12,    12, 
+          12,    12,    12,    12,    12,    12,    12,    12, 
+          12,    12,    12,    12,    12,    12,    12,    12, 
+          12,    12,    12,    12,    12,    12,    12,    12, 
+          12,    12,    12,    12,    12,    12,    12,    12, 
+          12,    12,    12,    12,    12,    12,    12,    12, 
+          12,    12,    12,    12,    12,    12,    12,    12, 
+          12,    12,    12,    12,    12,    12,    12,    12, 
+          12,    12,    12,    12,    12,    12,    12,    12, 
+          12,    12,    12,    12,    12,    12,    12,    12, 
+          12,    12,    12,    12,    12,    12,    12,    12, 
+          12,    12,    12,    12,    12,    12,    12,    12, 
+          12,    12,    12,    12,    12,    12,    12,    12, 
+          12,    12,    12,    12,    12,    12,    12,    12, 
+          12,    12,    12,    12,     0,     0,     0,     0, 
+          92,    12,    12,    12,    12,    12,    12,    12, 
+          12,    12,    12,    90,    12,    12,    12,    12, 
+          12,    12,    12,    12,    12,    12,    12,    12, 
+          12,    12,    12,    12,    12,    12,    12,    12, 
+          12,    12,    12,    12,    12,    12,    12,    12, 
+          12,    12,    12,    12,    12,    12,    12,    12, 
+          12,    12,    12,    12,    12,    12,    12,    12, 
+          12,    12,    12,    12,    12,    12,    12,    12, 
+          12,    12,    12,    12,    12,    12,    12,    12, 
+          12,    12,    12,    12,    12,    12,    12,    12, 
+          12,    12,    12,    12,    12,    12,    12,    12, 
+          12,    12,    12,    12,    12,    12,    12,    12, 
+          12,    12,    12,    12,    12,    12,    12,    12, 
+          12,    12,    12,    12,    12,    12,    12,    12, 
+          12,    12,    12,    12,    12,    12,    12,    12, 
+          12,    12,    12,    12,    12,    12,    12,    12, 
+          12,    12,    12,    12,    12,    12,    12,    12, 
+          12,    12,    12,    90,    93,    12,    12,    12, 
+          12,    12,    12,    12,    12,    12,    12,    12, 
+          12,    12,    12,    12,    12,    12,    12,    12, 
+          12,    12,    12,    12,    12,    12,    12,    12, 
+          12,    12,    12,    12,    12,    12,    12,    12, 
+          12,    12,    12,    12,    12,    12,    12,    12, 
+          12,    12,    12,    12,    12,    12,    12,    12, 
+          12,    12,    12,    12,    12,    12,    12,    12, 
+          12,    12,    12,    12,    12,    12,    12,    12, 
+          12,    12,    12,    12,    12,    12,    12,    12, 
+          12,    12,    12,    12,    12,    12,    12,    12, 
+          12,    12,    12,    12,    12,    12,    12,    12, 
+          12,    12,    12,    12,    12,    12,    12,    12, 
+          12,    12,    12,    12,    12,    12,    12,    12, 
+          12,    12,    12,    12,    12,    12,    12,    12, 
+          12,    12,    12,    12,    12,    12,    12,    12, 
+          12,    12,    12,    12, 
 };
 
-static struct {
+static const struct {
        unsigned char bm[16];
-} nameprep_id03_unassigned_bitmap[] = {
+} nameprep_id05_unassigned_bitmap[] = {
        {{
          0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
        }},
@@ -1461,7 +2444,7 @@ static struct {
          0,  0,  0,  0,  0,  0,  0,  0,  0,128,255,255,248,255,207,187,
        }},
        {{
-        15, 40,  0,  0,  4,  0,  0,  0,  0,128,  0,  3,  0,  0,240,255,
+        15, 40,  0,  0,  4,  0,  0,  0,  0,128,  0,  3,  0,  0,192,255,
        }},
        {{
        128, 12,  0,  0,  0,  0,  0,  0, 96,230,  0,  0,  0,  0,192,252,
@@ -1674,7 +2657,7 @@ static struct {
          0,  0,  0,  0,  0,  0,  0,  0,255,255,  0,  0,  0,  0,  0,  0,
        }},
        {{
-         0,  0,  3,  0,  0,  0,  0,  0,  0,255,255,255,255,255,  0,240,
+         0,  0,  3,  0,  0,  0,  0,  0,  0,255,  0,  0,  0,  0,  0,240,
        }},
        {{
        255,255,255,255,240,255,  0,  0,224,  1,  8,  0,128,240, 40,  0,
@@ -1688,7 +2671,56 @@ static struct {
        {{
          0,  0,  0,  0,  0,  0,  0,128,  3,  3,  3,227,128,128,255,  1,
        }},
+       {{
+         0,  0,  0,128,240,255,  0,  0,  0,248,255,255,255,255,255,255,
+       }},
+       {{
+         0,  0,  0,  0,192,  0,  0,  0,  0,192,255,255,255,255,255,255,
+       }},
+       {{
+         0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,192,255,
+       }},
+       {{
+         0,  0,  0,  0,128,  3,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+       }},
+       {{
+         0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,192,255,255,255,255,
+       }},
+       {{
+         0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 32,  0,  0,  0,  0,  0,
+       }},
+       {{
+         0,  0,  0, 32,155, 33,  0, 20, 18,  0,  0,  0,  0,  0,  0,  0,
+       }},
+       {{
+        64, 24, 32, 32,  0,  0,  0,132,160,  3,  2,  0,  0,  0,  0,  0,
+       }},
+       {{
+         0,  0,  0,  0,240,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+       }},
+       {{
+         0,  0,  0,  0,  0,  0,  0,  0,  0, 60,  0,  0,  0,  0,  0,  0,
+       }},
        {{
        255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 63,
        }},
+       {{
+         0,  0,  0,  0,  0,  0,  0,  0,  0,  0,128,255,255,255,255,255,
+       }},
+       {{
+         0,  0,  0,192,255,255,255,255,255,255,255,255,255,255,255,255,
+       }},
+       {{
+       253,255,255,255,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+       }},
 };
+#define nameprep_id06_map_imap nameprep_id05_map_imap
+#define nameprep_id06_map_table        nameprep_id05_map_table
+#define nameprep_id06_map_data nameprep_id05_map_data
+
+#define nameprep_id06_prohibited_imap  nameprep_id05_prohibited_imap
+#define nameprep_id06_prohibited_bitmap        nameprep_id05_prohibited_bitmap
+
+#define nameprep_id06_unassigned_imap  nameprep_id05_unassigned_imap
+#define nameprep_id06_unassigned_bitmap        nameprep_id05_unassigned_bitmap
+
index 7e83a584a16abfdd90bc61ab9cdf6190f585850a..b14b51095b6e77dda484500e00e1b72b6d8a711d 100644 (file)
@@ -1,5 +1,5 @@
 #ifndef lint
-static char *rcsid = "$Id: normalizer.c,v 1.25 2001/05/31 05:21:37 ishisone Exp $";
+static char *rcsid = "$Id: normalizer.c,v 1.1 2002/01/02 02:46:46 marka Exp $";
 #endif
 
 /*
@@ -11,8 +11,8 @@ static char *rcsid = "$Id: normalizer.c,v 1.25 2001/05/31 05:21:37 ishisone Exp
  * 
  * The following License Terms and Conditions apply, unless a different
  * license is obtained from Japan Network Information Center ("JPNIC"),
- * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku,
- * Tokyo, Japan.
+ * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda,
+ * Chiyoda-ku, Tokyo 101-0047, Japan.
  * 
  * 1. Use, Modification and Redistribution (including distribution of any
  *    modified or derived work) in source and/or binary forms is permitted
@@ -86,7 +86,8 @@ typedef struct {
        mdn_normalizer_proc_t proc;
 } normalize_scheme_t;
 
-typedef mdn_result_t (*caseconv_proc_t)(unsigned long, mdn__unicode_context_t,
+typedef mdn_result_t (*caseconv_proc_t)(mdn__unicode_version_t,
+                                       unsigned long, mdn__unicode_context_t,
                                        unsigned long *, size_t, int *);
 
 struct mdn_normalizer {
@@ -99,6 +100,16 @@ struct mdn_normalizer {
 
 static mdn_strhash_t scheme_hash;
 
+static mdn__unicode_version_t vcur = NULL;
+static mdn__unicode_version_t v301 = NULL;
+static mdn__unicode_version_t v310 = NULL;
+#define INIT_VERSION(version, var) \
+       if (var == NULL) { \
+               mdn_result_t r = mdn__unicode_create(version, &var); \
+               if (r != mdn_success) \
+                       return (r); \
+       }
+
 static mdn_result_t    expand_schemes(mdn_normalizer_t ctx);
 static mdn_result_t    register_standard_normalizers(void);
 static mdn_result_t    normalizer_ascii_lowercase(const char *from,
@@ -112,10 +123,35 @@ static mdn_result_t       normalizer_unicode_uppercase(const char *from,
 static mdn_result_t    normalizer_unicode_caseconv(caseconv_proc_t caseconv,
                                                    const char *from,
                                                    char *to, size_t tolen);
-static mdn__unicode_context_t  get_casemap_context(const char *from,
+static mdn__unicode_context_t  get_casemap_context(mdn__unicode_version_t ver,
+                                                   const char *from,
                                                    size_t fromlen);
 static mdn_result_t    normalizer_unicode_casefold(const char *from,
                                                    char *to, size_t tolen);
+static mdn_result_t    normalizer_formc(const char *from,
+                                        char *to, size_t tolen);
+static mdn_result_t    normalizer_formd(const char *from,
+                                        char *to, size_t tolen);
+static mdn_result_t    normalizer_formkc(const char *from,
+                                         char *to, size_t tolen);
+static mdn_result_t    normalizer_formkd(const char *from,
+                                         char *to, size_t tolen);
+static mdn_result_t    normalizer_formc_v301(const char *from,
+                                             char *to, size_t tolen);
+static mdn_result_t    normalizer_formd_v301(const char *from,
+                                             char *to, size_t tolen);
+static mdn_result_t    normalizer_formkc_v301(const char *from,
+                                              char *to, size_t tolen);
+static mdn_result_t    normalizer_formkd_v301(const char *from,
+                                              char *to, size_t tolen);
+static mdn_result_t    normalizer_formc_v310(const char *from,
+                                             char *to, size_t tolen);
+static mdn_result_t    normalizer_formd_v310(const char *from,
+                                             char *to, size_t tolen);
+static mdn_result_t    normalizer_formkc_v310(const char *from,
+                                              char *to, size_t tolen);
+static mdn_result_t    normalizer_formkd_v310(const char *from,
+                                              char *to, size_t tolen);
 
 static struct standard_normalizer {
        char *name;
@@ -126,12 +162,21 @@ static struct standard_normalizer {
        { "unicode-lowercase", normalizer_unicode_lowercase },
        { "unicode-uppercase", normalizer_unicode_uppercase },
        { "unicode-foldcase", normalizer_unicode_casefold },
-       { "unicode-form-c", mdn__unormalize_formc },
-       { "unicode-form-d", mdn__unormalize_formd },
-       { "unicode-form-kc", mdn__unormalize_formkc },
-       { "unicode-form-kd", mdn__unormalize_formkd },
-       { "nameprep-02", mdn__unormalize_formkc },
-       { "nameprep-03", mdn__unormalize_formkc },
+       { "unicode-form-c", normalizer_formc },
+       { "unicode-form-d", normalizer_formd },
+       { "unicode-form-kc", normalizer_formkc },
+       { "unicode-form-kd", normalizer_formkd },
+       { "unicode-form-c/3.0.1", normalizer_formc_v301 },
+       { "unicode-form-d/3.0.1", normalizer_formd_v301 },
+       { "unicode-form-kc/3.0.1", normalizer_formkc_v301 },
+       { "unicode-form-kd/3.0.1", normalizer_formkd_v301 },
+       { "unicode-form-c/3.1.0", normalizer_formc_v310 },
+       { "unicode-form-d/3.1.0", normalizer_formd_v310 },
+       { "unicode-form-kc/3.1.0", normalizer_formkc_v310 },
+       { "unicode-form-kd/3.1.0", normalizer_formkd_v310 },
+       { "nameprep-03", normalizer_formkc_v301 },
+       { "nameprep-05", normalizer_formkc_v310 },
+       { "nameprep-06", normalizer_formkc_v310 },
        { NULL, NULL },
 };
 
@@ -525,6 +570,8 @@ normalizer_unicode_caseconv(caseconv_proc_t caseconv,
 {
        size_t fromlen = strlen(from);
 
+       INIT_VERSION(NULL, vcur);
+
        while (fromlen > 0 && tolen > 0) {
 #define CASEMAPBUFSZ   4
                unsigned long c;
@@ -541,12 +588,12 @@ normalizer_unicode_caseconv(caseconv_proc_t caseconv,
                fromlen -= w;
 
        redo:
-               r = (*caseconv)(c, ctx, v, CASEMAPBUFSZ, &vlen);
+               r = (*caseconv)(vcur, c, ctx, v, CASEMAPBUFSZ, &vlen);
                switch (r) {
                case mdn_success:
                        break;
                case mdn_context_required:
-                       ctx = get_casemap_context(from, fromlen);
+                       ctx = get_casemap_context(vcur, from, fromlen);
                        goto redo;
                case mdn_buffer_overflow:
                        FATAL(("mdn_normalizer_normalize: "
@@ -571,7 +618,8 @@ normalizer_unicode_caseconv(caseconv_proc_t caseconv,
 }
 
 static mdn__unicode_context_t
-get_casemap_context(const char *from, size_t fromlen) {
+get_casemap_context(mdn__unicode_version_t ver,
+                   const char *from, size_t fromlen) {
        while (fromlen > 0) {
                unsigned long v;
                mdn__unicode_context_t ctx;
@@ -581,7 +629,7 @@ get_casemap_context(const char *from, size_t fromlen) {
                        return (mdn_invalid_encoding);
                from += w;
                fromlen -= w;
-               ctx = mdn__unicode_getcontext(v);
+               ctx = mdn__unicode_getcontext(ver, v);
                if (ctx == mdn__unicode_context_nonfinal ||
                    ctx == mdn__unicode_context_final)
                        return (ctx);
@@ -593,6 +641,8 @@ static mdn_result_t
 normalizer_unicode_casefold(const char *from, char *to, size_t tolen) {
        size_t fromlen = strlen(from);
 
+       INIT_VERSION(NULL, vcur);
+
        while (fromlen > 0 && tolen > 0) {
 #define CASEFOLDBUFSZ  4
                unsigned long c;
@@ -607,7 +657,7 @@ normalizer_unicode_casefold(const char *from, char *to, size_t tolen) {
                from += w;
                fromlen -= w;
 
-               r = mdn__unicode_casefold(c, v, CASEFOLDBUFSZ, &vlen);
+               r = mdn__unicode_casefold(vcur, c, v, CASEFOLDBUFSZ, &vlen);
                switch (r) {
                case mdn_success:
                        break;
@@ -633,3 +683,87 @@ normalizer_unicode_casefold(const char *from, char *to, size_t tolen) {
        return (mdn_success);
 }
 
+/*
+ * Unicode Normalization Forms -- latest version
+ */
+
+static mdn_result_t
+normalizer_formc(const char *from, char *to, size_t tolen) {
+       INIT_VERSION(NULL, vcur);
+       return (mdn__unormalize_formc(vcur, from, to, tolen));
+}
+
+static mdn_result_t
+normalizer_formd(const char *from, char *to, size_t tolen) {
+       INIT_VERSION(NULL, vcur);
+       return (mdn__unormalize_formd(vcur, from, to, tolen));
+}
+
+static mdn_result_t
+normalizer_formkc(const char *from, char *to, size_t tolen) {
+       INIT_VERSION(NULL, vcur);
+       return (mdn__unormalize_formkc(vcur, from, to, tolen));
+}
+
+static mdn_result_t
+normalizer_formkd(const char *from, char *to, size_t tolen) {
+       INIT_VERSION(NULL, vcur);
+       return (mdn__unormalize_formkd(vcur, from, to, tolen));
+}
+
+/*
+ * Unicode Normalization Forms -- version 3.0.1
+ */
+
+static mdn_result_t
+normalizer_formc_v301(const char *from, char *to, size_t tolen) {
+       INIT_VERSION("3.0.1", v301);
+       return (mdn__unormalize_formc(v301, from, to, tolen));
+}
+
+static mdn_result_t
+normalizer_formd_v301(const char *from, char *to, size_t tolen) {
+       INIT_VERSION("3.0.1", v301);
+       return (mdn__unormalize_formd(v301, from, to, tolen));
+}
+
+static mdn_result_t
+normalizer_formkc_v301(const char *from, char *to, size_t tolen) {
+       INIT_VERSION("3.0.1", v301);
+       return (mdn__unormalize_formkc(v301, from, to, tolen));
+}
+
+static mdn_result_t
+normalizer_formkd_v301(const char *from, char *to, size_t tolen) {
+       INIT_VERSION("3.0.1", v301);
+       return (mdn__unormalize_formkd(v301, from, to, tolen));
+}
+
+/*
+ * Unicode Normalization Forms -- version 3.1.0
+ */
+
+static mdn_result_t
+normalizer_formc_v310(const char *from, char *to, size_t tolen) {
+       INIT_VERSION("3.1.0", v310);
+       return (mdn__unormalize_formc(v310, from, to, tolen));
+}
+
+static mdn_result_t
+normalizer_formd_v310(const char *from, char *to, size_t tolen) {
+       INIT_VERSION("3.1.0", v310);
+       return (mdn__unormalize_formd(v310, from, to, tolen));
+}
+
+static mdn_result_t
+normalizer_formkc_v310(const char *from, char *to, size_t tolen) {
+       INIT_VERSION("3.1.0", v310);
+       return (mdn__unormalize_formkc(v310, from, to, tolen));
+}
+
+static mdn_result_t
+normalizer_formkd_v310(const char *from, char *to, size_t tolen) {
+       INIT_VERSION("3.1.0", v310);
+       return (mdn__unormalize_formkd(v310, from, to, tolen));
+}
+
index 293c1717509e01b9e288debfc1338dd6e33560bf..5a4216bb198b66ff365395b005d01af4fbe58edb 100644 (file)
@@ -1,5 +1,5 @@
 #ifndef lint
-static char *rcsid = "$Id: race.c,v 1.23 2001/03/07 00:58:52 ishisone Exp $";
+static char *rcsid = "$Id: race.c,v 1.1 2002/01/02 02:46:46 marka Exp $";
 #endif
 
 /*
@@ -11,8 +11,8 @@ static char *rcsid = "$Id: race.c,v 1.23 2001/03/07 00:58:52 ishisone Exp $";
  * 
  * The following License Terms and Conditions apply, unless a different
  * license is obtained from Japan Network Information Center ("JPNIC"),
- * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku,
- * Tokyo, Japan.
+ * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda,
+ * Chiyoda-ku, Tokyo 101-0047, Japan.
  * 
  * 1. Use, Modification and Redistribution (including distribution of any
  *    modified or derived work) in source and/or binary forms is permitted
index 25c97c2ea43f69c41c27a1de067f2f4a1e780208..c06dda5ab352aacbefbb9baff0ea5fed7f81cce0 100644 (file)
@@ -1,5 +1,5 @@
 #ifndef lint
-static char *rcsid = "$Id: res.c,v 1.17 2001/05/15 05:04:00 ishisone Exp $";
+static char *rcsid = "$Id: res.c,v 1.1 2002/01/02 02:46:46 marka Exp $";
 #endif
 
 /*
@@ -11,8 +11,8 @@ static char *rcsid = "$Id: res.c,v 1.17 2001/05/15 05:04:00 ishisone Exp $";
  * 
  * The following License Terms and Conditions apply, unless a different
  * license is obtained from Japan Network Information Center ("JPNIC"),
- * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku,
- * Tokyo, Japan.
+ * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda,
+ * Chiyoda-ku, Tokyo 101-0047, Japan.
  * 
  * 1. Use, Modification and Redistribution (including distribution of any
  *    modified or derived work) in source and/or binary forms is permitted
@@ -96,45 +96,42 @@ static mdn_result_t nameconv_p(mdn_resconf_t ctx, const char *from,
                                   char *to, size_t tolen);
 static mdn_result_t    nameconv_u(mdn_resconf_t ctx, const char *from,
                                   char *to, size_t tolen);
+static mdn_result_t    nameconv_N(mdn_resconf_t ctx, const char *from,
+                                  char *to, size_t tolen);
 static mdn_result_t    nameconv_I(mdn_resconf_t ctx, const char *from,
                                   char *to, size_t tolen);
 static mdn_result_t    nameconv_i(mdn_resconf_t ctx, const char *from,
                                   char *to, size_t tolen);
-static mdn_result_t    nameconv_a(mdn_resconf_t ctx, const char *from,
-                                  char *to, size_t tolen);
-static mdn_result_t    nameconv_A(mdn_resconf_t ctx, const char *from,
-                                  char *to, size_t tolen);
+static mdn_result_t    nameconv_xm(mdn_resconf_t ctx, const char *from,
+                                   char *to, size_t tolen);
+static mdn_result_t    nameconv_xn(mdn_resconf_t ctx, const char *from,
+                                   char *to, size_t tolen);
+static mdn_result_t    nameconv_xp(mdn_resconf_t ctx, const char *from,
+                                   char *to, size_t tolen);
+static mdn_result_t    nameconv_xu(mdn_resconf_t ctx, const char *from,
+                                   char *to, size_t tolen);
+static mdn_result_t    nameconv_xN(mdn_resconf_t ctx, const char *from,
+                                   char *to, size_t tolen);
 static mdn_result_t    copy_verbatim(const char *from, char *to,
                                      size_t tolen);
 
 mdn_result_t
-mdn_res_nameconv(mdn_resconf_t ctx, const char *actions, const char *from,
+mdn_res_nameconv(mdn_resconf_t ctx, const char *insn, const char *from,
                 char *to, size_t tolen)
 {
        mdn_result_t r;
-       size_t fromlen;
        char *src, *dst;
        char static_buffers[2][1024];   /* large enough */
        char *dynamic_buffers[2];
        size_t dynamic_buflen[2];
-       char actions_buffer[64];        /* large enough */
-       char *ap;
+       const char *ap;
        size_t dstlen;
-       int idx;
+       int dstidx;
 
        assert(ctx != NULL && from != NULL && to != NULL);
 
-       TRACE(("mdn_res_nameconv(from=\"%s\")\n",
-               mdn_debug_xstring(from, 20)));
-
-       /*
-        * Copy `actions' to `actions_buffer' + 2.
-        * We make two characters space to extend the action `N'.
-        */
-       if (strlen(actions) + 1 > sizeof(actions_buffer) - 2)
-               return (mdn_invalid_action);
-       strcpy(actions_buffer + 2, actions);
-       ap = actions_buffer + 2;
+       TRACE(("mdn_res_nameconv(insn=%s, from=\"%s\", tolen=%d)\n",
+               insn, mdn_debug_xstring(from, 256), tolen));
 
        /*
         * Initialize the buffers to use the local
@@ -145,13 +142,12 @@ mdn_res_nameconv(mdn_resconf_t ctx, const char *actions, const char *from,
        dynamic_buflen[0] = 0;
        dynamic_buflen[1] = 0;
 
-       fromlen = strlen(from);
-
        /*
         * Convert.
         */
        src = (void *)from;
-       dstlen = fromlen + 1;
+       dstlen = sizeof(static_buffers[0]) + 1;
+       ap = insn;
 
        while (*ap != '\0') {
                if (*ap == ' ' || *ap == '\t') {
@@ -162,56 +158,31 @@ mdn_res_nameconv(mdn_resconf_t ctx, const char *actions, const char *from,
                /*
                 * Choose destination area to restore the result of a mapping.
                 */
-               if (*ap == 'p' || *ap == 'u') {
-                       dst = src;
-               } else if (dstlen <= sizeof(static_buffers[0])) {
+               if (dstlen <= sizeof(static_buffers[0])) {
                        if (src == static_buffers[0])
-                               idx = 1;
+                               dstidx = 1;
                        else
-                               idx = 0;
-
-                       dst = static_buffers[idx];
-                       dstlen = sizeof(static_buffers[0]);
+                               dstidx = 0;
 
+                       dst = static_buffers[dstidx];
                } else {
+                       void *newbuf;
+
                        if (src == dynamic_buffers[0])
-                               idx = 1;
+                               dstidx = 1;
                        else
-                               idx = 0;
-
-                       if (dynamic_buflen[idx] == 0) {
-                               dynamic_buffers[idx] = (char *) malloc(dstlen);
-                               if (dynamic_buffers[idx] == NULL) {
-                                       r = mdn_nomemory;
-                                       goto failure;
-                               }
-                               dynamic_buflen[idx] = dstlen;
-
-                       } else if (dynamic_buflen[idx] < dstlen) {
-                               char *newbuf;
-
-                               newbuf = realloc(dynamic_buffers[idx], dstlen);
-                               if (newbuf == NULL) {
-                                       r = mdn_nomemory;
-                                       goto failure;
-                               }
-                               dynamic_buffers[idx] = newbuf;
-                               dynamic_buflen[idx] = dstlen;
+                               dstidx = 0;
+
+                       newbuf = (char *)realloc(dynamic_buffers[dstidx],
+                                                dstlen);
+                       if (newbuf == NULL) {
+                               r = mdn_nomemory;
+                               goto failure;
                        }
+                       dynamic_buffers[dstidx] = newbuf;
+                       dynamic_buflen[dstidx] = dstlen;
 
-                       dst = dynamic_buffers[idx];
-                       dstlen = dynamic_buflen[idx];
-               }
-
-               /*
-                * Determine an action character.
-                * If the current action is `N', we resolve it into "mnp".
-                */
-               if (*ap == 'N') {
-                       *(ap - 2) = 'm';
-                       *(ap - 1) = 'n';
-                       *ap = 'p';
-                       ap -= 2;
+                       dst = dynamic_buffers[dstidx];
                }
 
                /*
@@ -243,17 +214,37 @@ mdn_res_nameconv(mdn_resconf_t ctx, const char *actions, const char *from,
                case 'u':
                        r = nameconv_u(ctx, src, dst, dstlen);
                        break;
+               case 'N':
+                       r = nameconv_N(ctx, src, dst, dstlen);
+                       break;
                case 'I':
                        r = nameconv_I(ctx, src, dst, dstlen);
                        break;
                case 'i':
                        r = nameconv_i(ctx, src, dst, dstlen);
                        break;
-               case 'a':
-                       r = nameconv_a(ctx, src, dst, dstlen);
-                       break;
-               case 'A':
-                       r = nameconv_A(ctx, src, dst, dstlen);
+               case '!':
+                       ap++;
+                       switch (*ap) {
+                       case 'm':
+                               r = nameconv_xm(ctx, src, dst, dstlen);
+                               break;
+                       case 'n':
+                               r = nameconv_xn(ctx, src, dst, dstlen);
+                               break;
+                       case 'p':
+                               r = nameconv_xp(ctx, src, dst, dstlen);
+                               break;
+                       case 'u':
+                               r = nameconv_xu(ctx, src, dst, dstlen);
+                               break;
+                       case 'N':
+                               r = nameconv_xN(ctx, src, dst, dstlen);
+                               break;
+                       default:
+                               r = mdn_invalid_action;
+                               break;
+                       }
                        break;
                default:
                        r = mdn_invalid_action;
@@ -274,9 +265,15 @@ mdn_res_nameconv(mdn_resconf_t ctx, const char *actions, const char *from,
        if (r != mdn_success)
                goto failure;
 
+       TRACE(("mdn_res_nameconv: to=\"%s\"\n",
+               mdn_debug_xstring(to, 256)));
+
+       free(dynamic_buffers[0]);
+       free(dynamic_buffers[1]);
        return (mdn_success);
 
 failure:
+       TRACE(("mdn_res_nameconv() failed, %s\n", mdn_result_tostring(r)));
        free(dynamic_buffers[0]);
        free(dynamic_buffers[1]);
        return (r);
@@ -287,16 +284,7 @@ nameconv_l(mdn_resconf_t ctx, const char *from, char *to, size_t tolen)
 {
        mdn_result_t r;
        mdn_converter_t local_converter;
-       mdn_converter_t alternate_converter;
 
-       alternate_converter = mdn_resconf_getalternateconverter(ctx);
-       if (alternate_converter != NULL) {
-               r = mdn_converter_localtoutf8(alternate_converter, from, to,
-                                             tolen);
-               mdn_converter_destroy(alternate_converter);
-               if (r == mdn_success && strcmp(from, to) != 0)
-                       return (r);
-       }
        local_converter = mdn_resconf_getlocalconverter(ctx);
        if (local_converter != NULL) {
                r = mdn_converter_localtoutf8(local_converter, from, to,
@@ -314,7 +302,6 @@ nameconv_L(mdn_resconf_t ctx, const char *from, char *to, size_t tolen)
 {
        mdn_result_t r;
        mdn_converter_t local_converter;
-       mdn_converter_t alternate_converter;
 
        local_converter = mdn_resconf_getlocalconverter(ctx);
        if (local_converter != NULL) {
@@ -324,15 +311,8 @@ nameconv_L(mdn_resconf_t ctx, const char *from, char *to, size_t tolen)
        } else {
                r = copy_verbatim(from, to, tolen);
        }
-       if (r != mdn_nomapping)
-               return (r);
-
-       alternate_converter = mdn_resconf_getalternateconverter(ctx);
-       if (alternate_converter != NULL) {
-               r = mdn_converter_utf8tolocal(alternate_converter, from, to,
-                                             tolen);
-               mdn_converter_destroy(alternate_converter);
-       }
+       if (r == mdn_nomapping)
+               r = nameconv_I(ctx, from, to, tolen);
 
        return (r);
 }
@@ -371,46 +351,6 @@ nameconv_M(mdn_resconf_t ctx, const char *from, char *to, size_t tolen)
        return (r);
 }
 
-static mdn_result_t
-nameconv_p(mdn_resconf_t ctx, const char *from, char *to, size_t tolen)
-{
-       mdn_result_t r;
-       const char *found;
-       mdn_checker_t prohibit_checker;
-
-       prohibit_checker = mdn_resconf_getprohibitchecker(ctx);
-       if (prohibit_checker != NULL) {
-               r = mdn_checker_lookup(prohibit_checker, from, &found);
-               if (found != NULL)
-                       r = mdn_prohibited;
-               mdn_checker_destroy(prohibit_checker);
-       } else {
-               r = mdn_success;
-       }
-
-       return (r);
-}
-
-static mdn_result_t
-nameconv_u(mdn_resconf_t ctx, const char *from, char *to, size_t tolen)
-{
-       mdn_result_t r;
-       mdn_checker_t unassigned_checker;
-       const char *found;
-
-       unassigned_checker = mdn_resconf_getunassignedchecker(ctx);
-       if (unassigned_checker != NULL) {
-               r = mdn_checker_lookup(unassigned_checker, from, &found);
-               if (found != NULL)
-                       r = mdn_prohibited;
-               mdn_checker_destroy(unassigned_checker);
-       } else {
-               r = mdn_success;
-       }
-
-       return (r);
-}
-
 static mdn_result_t
 nameconv_m(mdn_resconf_t ctx, const char *from, char *to, size_t tolen)
 {
@@ -576,6 +516,96 @@ failure:
        return (r);
 }
 
+static mdn_result_t
+nameconv_p(mdn_resconf_t ctx, const char *from, char *to, size_t tolen)
+{
+       mdn_result_t r;
+       const char *found;
+       mdn_checker_t prohibit_checker;
+
+       prohibit_checker = mdn_resconf_getprohibitchecker(ctx);
+       if (prohibit_checker != NULL) {
+               r = mdn_checker_lookup(prohibit_checker, from, &found);
+               mdn_checker_destroy(prohibit_checker);
+               if (r == mdn_success && found != NULL)
+                       r = mdn_prohibited;
+               if (r != mdn_success)
+                       return (r);
+       }
+
+       r = copy_verbatim(from, to, tolen);
+
+       return (r);
+}
+
+static mdn_result_t
+nameconv_u(mdn_resconf_t ctx, const char *from, char *to, size_t tolen)
+{
+       mdn_result_t r;
+       mdn_checker_t unassigned_checker;
+       const char *found;
+
+       unassigned_checker = mdn_resconf_getunassignedchecker(ctx);
+       if (unassigned_checker != NULL) {
+               r = mdn_checker_lookup(unassigned_checker, from, &found);
+               mdn_checker_destroy(unassigned_checker);
+               if (r == mdn_success && found != NULL)
+                       r = mdn_prohibited;
+               if (r != mdn_success)
+                       return (r);
+       }
+
+       r = copy_verbatim(from, to, tolen);
+
+       return (r);
+}
+
+static mdn_result_t
+nameconv_N(mdn_resconf_t ctx, const char *from, char *to, size_t tolen)
+{
+       mdn_result_t r;
+       char static_buffer1[1024];      /* large enough */
+       char static_buffer2[1024];      /* large enough */
+       char *dynamic_buffer1 = NULL;
+       char *dynamic_buffer2 = NULL;
+       char *work1, *work2;
+
+       if (tolen <= sizeof(static_buffer1)) {
+               work1 = static_buffer1;
+               work2 = static_buffer2;
+       } else {
+               dynamic_buffer1 = (char *)malloc(tolen);
+               dynamic_buffer2 = (char *)malloc(tolen);
+               if (dynamic_buffer1 == NULL || dynamic_buffer2 == NULL) {
+                       r = mdn_nomemory;
+                       goto failure;
+               }
+               work1 = dynamic_buffer1;
+               work2 = dynamic_buffer2;
+       }
+
+       r = nameconv_m(ctx, from, work1, tolen);
+       if (r != mdn_success)
+               goto failure;
+
+       r = nameconv_n(ctx, work1, work2, tolen);
+       if (r != mdn_success)
+               goto failure;
+
+       r = nameconv_p(ctx, work2, to, tolen);
+       if (r != mdn_success)
+               goto failure;
+
+       free(dynamic_buffer1);
+       free(dynamic_buffer2);
+       return (r);
+
+failure:
+       free(dynamic_buffer1);
+       free(dynamic_buffer2);
+       return (r);
+}
+
 static mdn_result_t
 nameconv_I(mdn_resconf_t ctx, const char *from, char *to, size_t tolen)
 {
@@ -611,41 +641,159 @@ nameconv_i(mdn_resconf_t ctx, const char *from, char *to, size_t tolen)
 }
 
 static mdn_result_t
-nameconv_a(mdn_resconf_t ctx, const char *from, char *to, size_t tolen)
+nameconv_xm(mdn_resconf_t ctx, const char *from, char *to, size_t tolen)
 {
        mdn_result_t r;
-       mdn_converter_t alternate_converter;
+       mdn_converter_t idn_converter;
+       int encoding_type;
+       int isvalid;
 
-       alternate_converter = mdn_resconf_getalternateconverter(ctx);
-       if (alternate_converter != NULL) {
-               r = mdn_converter_localtoutf8(alternate_converter, from, to,
-                                             tolen);
-               mdn_converter_destroy(alternate_converter);
+       idn_converter = mdn_resconf_getidnconverter(ctx);
+       if (idn_converter != NULL) {
+               encoding_type = mdn_converter_encodingtype(idn_converter);
+               mdn_converter_destroy(idn_converter);
        } else {
-               r = copy_verbatim(from, to, tolen);
+               encoding_type = MDN_NONACE;
        }
 
+       r = nameconv_m(ctx, from, to, tolen);
+       if (r != mdn_success)
+               return (r);
+
+       if (encoding_type == MDN_ACE_STRICTCASE)
+               isvalid = mdn_util_casematch(from, to, tolen);
+       else
+               isvalid = (strcmp(from, to) == 0);
+
+       if (isvalid || encoding_type == MDN_NONACE)
+               r = copy_verbatim(from, to, tolen);
+       else
+               r = nameconv_I(ctx, from, to, tolen);
+
        return (r);
 }
 
 static mdn_result_t
-nameconv_A(mdn_resconf_t ctx, const char *from, char *to, size_t tolen)
+nameconv_xn(mdn_resconf_t ctx, const char *from, char *to, size_t tolen)
 {
        mdn_result_t r;
-       mdn_converter_t alternate_converter;
+       mdn_converter_t idn_converter;
+       int encoding_type;
+       int isvalid;
 
-       alternate_converter = mdn_resconf_getalternateconverter(ctx);
-       if (alternate_converter != NULL) {
-               r = mdn_converter_utf8tolocal(alternate_converter, from, to,
-                                             tolen);
-               mdn_converter_destroy(alternate_converter);
+       idn_converter = mdn_resconf_getidnconverter(ctx);
+       if (idn_converter != NULL) {
+               encoding_type = mdn_converter_encodingtype(idn_converter);
+               mdn_converter_destroy(idn_converter);
        } else {
+               encoding_type = MDN_NONACE;
+       }
+
+       r = nameconv_n(ctx, from, to, tolen);
+       if (r != mdn_success)
+               return (r);
+
+       if (encoding_type == MDN_ACE_STRICTCASE)
+               isvalid = mdn_util_casematch(from, to, tolen);
+       else
+               isvalid = (strcmp(from, to) == 0);
+
+       if (isvalid || encoding_type == MDN_NONACE)
                r = copy_verbatim(from, to, tolen);
+       else
+               r = nameconv_I(ctx, from, to, tolen);
+
+       return (r);
+}
+
+static mdn_result_t
+nameconv_xp(mdn_resconf_t ctx, const char *from, char *to, size_t tolen)
+{
+       mdn_result_t r;
+       mdn_converter_t idn_converter;
+       int encoding_type;
+
+       idn_converter = mdn_resconf_getidnconverter(ctx);
+       if (idn_converter != NULL) {
+               encoding_type = mdn_converter_encodingtype(idn_converter);
+               mdn_converter_destroy(idn_converter);
+       } else {
+               encoding_type = MDN_NONACE;
+       }
+
+       r = nameconv_p(ctx, from, to, tolen);
+       if (r == mdn_prohibited) {
+               if (encoding_type == MDN_NONACE)
+                       r = copy_verbatim(from, to, tolen);
+               else
+                       r = nameconv_I(ctx, from, to, tolen);
        }
 
        return (r);
 }
 
+static mdn_result_t
+nameconv_xu(mdn_resconf_t ctx, const char *from, char *to, size_t tolen)
+{
+       mdn_result_t r;
+       mdn_converter_t idn_converter;
+       int encoding_type;
+
+       idn_converter = mdn_resconf_getidnconverter(ctx);
+       if (idn_converter != NULL) {
+               encoding_type = mdn_converter_encodingtype(idn_converter);
+               mdn_converter_destroy(idn_converter);
+       } else {
+               encoding_type = MDN_NONACE;
+       }
+
+       r = nameconv_u(ctx, from, to, tolen);
+       if (r == mdn_prohibited) {
+               if (encoding_type == MDN_NONACE)
+                       r = copy_verbatim(from, to, tolen);
+               else
+                       r = nameconv_I(ctx, from, to, tolen);
+       }
+
+       return (mdn_success);
+}
+
+static mdn_result_t
+nameconv_xN(mdn_resconf_t ctx, const char *from, char *to, size_t tolen)
+{
+       mdn_result_t r;
+       mdn_converter_t idn_converter;
+       int encoding_type;
+       int isvalid;
+
+       idn_converter = mdn_resconf_getidnconverter(ctx);
+       if (idn_converter != NULL) {
+               encoding_type = mdn_converter_encodingtype(idn_converter);
+               mdn_converter_destroy(idn_converter);
+       } else {
+               encoding_type = MDN_NONACE;
+       }
+
+       r = nameconv_N(ctx, from, to, tolen);
+       if (r == mdn_success) {
+               if (encoding_type == MDN_ACE_STRICTCASE)
+                       isvalid = mdn_util_casematch(from, to, tolen);
+               else
+                       isvalid = (strcmp(from, to) == 0);
+       } else if (r == mdn_prohibited) {
+               isvalid = 0;
+       } else {
+               return (r);
+       }
+
+       if (isvalid || encoding_type == MDN_NONACE)
+               r = copy_verbatim(from, to, tolen);
+       else
+               r = nameconv_I(ctx, from, to, tolen);
+
+       return (r);
+}
+
 static mdn_result_t
 copy_verbatim(const char *from, char *to, size_t tolen) {
        size_t fromlen = strlen(from);
@@ -661,6 +809,8 @@ copy_verbatim(const char *from, char *to, size_t tolen) {
 #undef mdn_res_map
 #undef mdn_res_normalize
 #undef mdn_res_prohibitcheck
+#undef mdn_res_nameprep
+#undef mdn_res_nameprepcheck
 #undef mdn_res_unassignedcheck
 #undef mdn_res_delimitermap
 #undef mdn_res_localmap
@@ -697,6 +847,18 @@ mdn_res_prohibitcheck(mdn_resconf_t ctx, const char *from, char *to,
        return mdn_res_nameconv(ctx, "p", from, to, tolen);
 }
 
+mdn_result_t
+mdn_res_nameprep(mdn_resconf_t ctx, const char *from, char *to,
+                size_t tolen) {
+       return mdn_res_nameconv(ctx, "N", from, to, tolen);
+}
+
+mdn_result_t
+mdn_res_nameprepcheck(mdn_resconf_t ctx, const char *from, char *to,
+                     size_t tolen) {
+       return mdn_res_nameconv(ctx, "!N", from, to, tolen);
+}
+
 mdn_result_t
 mdn_res_unassignedcheck(mdn_resconf_t ctx, const char *from, char *to,
                        size_t tolen) {
index bf886f7ddd0fb13f42f39da7036c00f7da356d55..e4f27f7e4df1558dec494fffc9d91fe116078024 100644 (file)
@@ -1,5 +1,5 @@
 #ifndef lint
-static char *rcsid = "$Id: resconf.c,v 1.25 2001/04/16 02:25:17 m-kasahr Exp $";
+static char *rcsid = "$Id: resconf.c,v 1.1 2002/01/02 02:46:46 marka Exp $";
 #endif
 
 /*
@@ -11,8 +11,8 @@ static char *rcsid = "$Id: resconf.c,v 1.25 2001/04/16 02:25:17 m-kasahr Exp $";
  * 
  * The following License Terms and Conditions apply, unless a different
  * license is obtained from Japan Network Information Center ("JPNIC"),
- * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku,
- * Tokyo, Japan.
+ * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda,
+ * Chiyoda-ku, Tokyo 101-0047, Japan.
  * 
  * 1. Use, Modification and Redistribution (including distribution of any
  *    modified or derived work) in source and/or binary forms is permitted
@@ -95,7 +95,6 @@ struct mdn_resconf {
        char *local_encoding;
        mdn_converter_t local_converter;
        mdn_converter_t idn_converter;
-       mdn_converter_t alternate_converter;
        mdn_normalizer_t normalizer;
        mdn_checker_t prohibit_checker;
        mdn_checker_t unassigned_checker;
@@ -106,8 +105,6 @@ struct mdn_resconf {
 };
 
 static mdn_result_t    parse_conf(mdn_resconf_t ctx, FILE *fp);
-static mdn_result_t    parse_alternate_encoding(mdn_resconf_t ctx,
-                                                char *args, int lineno);
 static mdn_result_t    parse_delimiter_map(mdn_resconf_t ctx, char *args,
                                            int lineno);
 static mdn_result_t    parse_encoding_alias_file(mdn_resconf_t ctx,
@@ -168,7 +165,6 @@ mdn_resconf_create(mdn_resconf_t *ctxp) {
        ctx->local_encoding = NULL;
        ctx->local_converter = NULL;
        ctx->idn_converter = NULL;
-       ctx->alternate_converter = NULL;
        ctx->normalizer = NULL;
        ctx->prohibit_checker = NULL;
        ctx->unassigned_checker = NULL;
@@ -217,6 +213,8 @@ mdn_resconf_loadfile(mdn_resconf_t ctx, const char *file) {
 
 void
 mdn_resconf_destroy(mdn_resconf_t ctx) {
+       assert(ctx != NULL);
+
        TRACE(("mdn_resconf_destroy()\n"));
        TRACE(("mdn_resconf_destroy: update reference count (%d->%d)\n",
            ctx->reference_count, ctx->reference_count - 1));
@@ -242,15 +240,17 @@ mdn_resconf_incrref(mdn_resconf_t ctx) {
 
 mdn_converter_t
 mdn_resconf_getalternateconverter(mdn_resconf_t ctx) {
-       TRACE(("mdn_resconf_alternateconverter()\n"));
+       assert(ctx != NULL);
+
+       TRACE(("mdn_resconf_getalternateconverter()\n"));
 
-       if (ctx->alternate_converter != NULL)
-               mdn_converter_incrref(ctx->alternate_converter);
-       return (ctx->alternate_converter);
+       return (mdn_resconf_getidnconverter(ctx));
 }
 
 mdn_delimitermap_t
 mdn_resconf_getdelimitermap(mdn_resconf_t ctx) {
+       assert(ctx != NULL);
+
        TRACE(("mdn_resconf_getdelimitermap()\n"));
 
        if (ctx->delimiter_mapper != NULL)
@@ -260,6 +260,8 @@ mdn_resconf_getdelimitermap(mdn_resconf_t ctx) {
 
 mdn_converter_t
 mdn_resconf_getidnconverter(mdn_resconf_t ctx) {
+       assert(ctx != NULL);
+
        TRACE(("mdn_resconf_getidnconverter()\n"));
 
        if (ctx->idn_converter != NULL)
@@ -269,6 +271,8 @@ mdn_resconf_getidnconverter(mdn_resconf_t ctx) {
 
 mdn_converter_t
 mdn_resconf_getlocalconverter(mdn_resconf_t ctx) {
+       assert(ctx != NULL);
+
        TRACE(("mdn_resconf_getlocalconverter()\n"));
 
        if (update_local_converter(ctx) != mdn_success)
@@ -279,6 +283,8 @@ mdn_resconf_getlocalconverter(mdn_resconf_t ctx) {
 
 mdn_mapselector_t
 mdn_resconf_getlocalmapselector(mdn_resconf_t ctx) {
+       assert(ctx != NULL);
+
        TRACE(("mdn_resconf_getlocalmapselector()\n"));
 
        if (ctx->local_mapper != NULL)
@@ -288,6 +294,8 @@ mdn_resconf_getlocalmapselector(mdn_resconf_t ctx) {
 
 mdn_mapper_t
 mdn_resconf_getmapper(mdn_resconf_t ctx) {
+       assert(ctx != NULL);
+
        TRACE(("mdn_resconf_getmapper()\n"));
 
        if (ctx->mapper != NULL)
@@ -297,6 +305,8 @@ mdn_resconf_getmapper(mdn_resconf_t ctx) {
 
 mdn_normalizer_t
 mdn_resconf_getnormalizer(mdn_resconf_t ctx) {
+       assert(ctx != NULL);
+
        TRACE(("mdn_resconf_getnormalizer()\n"));
 
        if (ctx->normalizer != NULL)
@@ -306,6 +316,8 @@ mdn_resconf_getnormalizer(mdn_resconf_t ctx) {
 
 mdn_checker_t
 mdn_resconf_getprohibitchecker(mdn_resconf_t ctx) {
+       assert(ctx != NULL);
+
        TRACE(("mdn_resconf_getprohibitchecker()\n"));
 
        if (ctx->prohibit_checker != NULL)
@@ -315,6 +327,8 @@ mdn_resconf_getprohibitchecker(mdn_resconf_t ctx) {
 
 mdn_checker_t
 mdn_resconf_getunassignedchecker(mdn_resconf_t ctx) {
+       assert(ctx != NULL);
+
        TRACE(("mdn_resconf_getunassignedchecker()\n"));
 
        if (ctx->unassigned_checker != NULL)
@@ -325,38 +339,44 @@ mdn_resconf_getunassignedchecker(mdn_resconf_t ctx) {
 void
 mdn_resconf_setalternateconverter(mdn_resconf_t ctx,
                                  mdn_converter_t alternate_converter) {
-       TRACE(("mdn_resconf_setalternateconverter()\n"));
+       assert(ctx != NULL);
 
-       if (ctx->alternate_converter != NULL)
-               mdn_converter_destroy(ctx->alternate_converter);
-       ctx->alternate_converter = alternate_converter;
-       mdn_converter_incrref(ctx->alternate_converter);
+       TRACE(("mdn_resconf_setalternateconverter()\n"));
 }
 
 void
 mdn_resconf_setdelimitermap(mdn_resconf_t ctx,
                            mdn_delimitermap_t delimiter_mapper) {
+       assert(ctx != NULL);
+
        TRACE(("mdn_resconf_setdelimitermap()\n"));
+
        if (ctx->delimiter_mapper != NULL)
                mdn_delimitermap_destroy(ctx->delimiter_mapper);
        ctx->delimiter_mapper = delimiter_mapper;
-       mdn_delimitermap_incrref(ctx->delimiter_mapper);
+       if (delimiter_mapper != NULL)
+               mdn_delimitermap_incrref(ctx->delimiter_mapper);
 }
 
 void
 mdn_resconf_setidnconverter(mdn_resconf_t ctx, 
                            mdn_converter_t idn_converter) {
+       assert(ctx != NULL);
+
        TRACE(("mdn_resconf_setidnconverter()\n"));
 
        if (ctx->idn_converter != NULL)
                mdn_converter_destroy(ctx->idn_converter);
        ctx->idn_converter = idn_converter;
-       mdn_converter_incrref(ctx->idn_converter);
+       if (idn_converter != NULL)
+               mdn_converter_incrref(ctx->idn_converter);
 }
 
 void
 mdn_resconf_setlocalconverter(mdn_resconf_t ctx,
                                  mdn_converter_t local_converter) {
+       assert(ctx != NULL);
+
        TRACE(("mdn_resconf_setlocalconverter()\n"));
 
        if (ctx->local_converter != NULL)
@@ -371,53 +391,69 @@ mdn_resconf_setlocalconverter(mdn_resconf_t ctx,
 void
 mdn_resconf_setlocalmapselector(mdn_resconf_t ctx,
                                mdn_mapselector_t local_mapper) {
+       assert(ctx != NULL);
+
        TRACE(("mdn_resconf_setlocalmapselector()\n"));
 
        if (ctx->local_mapper != NULL)
                mdn_mapselector_destroy(ctx->local_mapper);
        ctx->local_mapper = local_mapper;
-       mdn_mapselector_incrref(ctx->local_mapper);
+       if (local_mapper != NULL)
+               mdn_mapselector_incrref(ctx->local_mapper);
 }
 
 void
 mdn_resconf_setmapper(mdn_resconf_t ctx, mdn_mapper_t mapper) {
+       assert(ctx != NULL);
+
        TRACE(("mdn_resconf_setmapper()\n"));
 
        if (ctx->mapper != NULL)
                mdn_mapper_destroy(ctx->mapper);
        ctx->mapper = mapper;
-       mdn_mapper_incrref(ctx->mapper);
+       if (mapper != NULL)
+               mdn_mapper_incrref(ctx->mapper);
 }
 
 void
 mdn_resconf_setnormalizer(mdn_resconf_t ctx, mdn_normalizer_t normalizer) {
+       assert(ctx != NULL);
+
        TRACE(("mdn_resconf_setnormalizer()\n"));
 
        if (ctx->normalizer != NULL)
                mdn_normalizer_destroy(ctx->normalizer);
        ctx->normalizer = normalizer;
-       mdn_normalizer_incrref(ctx->normalizer);
+       if (normalizer != NULL)
+               mdn_normalizer_incrref(ctx->normalizer);
 }
 
 void
 mdn_resconf_setprohibitchecker(mdn_resconf_t ctx,
                               mdn_checker_t prohibit_checker) {
+       assert(ctx != NULL);
+
        TRACE(("mdn_resconf_setprohibitchecker()\n"));
 
        if (ctx->prohibit_checker != NULL)
                mdn_checker_destroy(ctx->prohibit_checker);
        ctx->prohibit_checker = prohibit_checker;
-       mdn_checker_incrref(ctx->prohibit_checker);
+       if (prohibit_checker != NULL)
+               mdn_checker_incrref(ctx->prohibit_checker);
 }
 
 void
 mdn_resconf_setunassignedchecker(mdn_resconf_t ctx,
                                 mdn_checker_t unassigned_checker) {
+       assert(ctx != NULL);
+
        TRACE(("mdn_resconf_setunassignedchecker()\n"));
+
        if (ctx->unassigned_checker != NULL)
                mdn_checker_destroy(ctx->unassigned_checker);
        ctx->unassigned_checker = unassigned_checker;
-       mdn_checker_incrref(ctx->unassigned_checker);
+       if (unassigned_checker != NULL)
+               mdn_checker_incrref(ctx->unassigned_checker);
 }
 
 mdn_result_t
@@ -517,27 +553,11 @@ failure:
 mdn_result_t
 mdn_resconf_setalternateconvertername(mdn_resconf_t ctx, const char *name,
                                      int flags) {
-       mdn_converter_t alternate_converter;
-       mdn_result_t r;
-
        assert(ctx != NULL && name != NULL);
 
        TRACE(("mdn_resconf_setalternateconvertername(name=%s, flags=%d)\n",
              name, flags));
 
-       r = mdn_converter_create(name, &alternate_converter, flags);
-       if (r != mdn_success)
-               return (r);
-
-       if (!mdn_converter_isasciicompatible(alternate_converter)) {
-               mdn_converter_destroy(alternate_converter);
-               return (mdn_invalid_name);
-       }
-
-       if (ctx->alternate_converter != NULL)
-               mdn_converter_destroy(ctx->alternate_converter);
-       ctx->alternate_converter = alternate_converter;
-
        return (mdn_success);
 }
 
@@ -742,16 +762,14 @@ parse_conf(mdn_resconf_t ctx, FILE *fp) {
        char *argv[3];
        int argc;
        mdn_result_t r;
-       char *alternate_encoding_args = NULL;
-       int alternate_encoding_lineno = 0;
        char *idn_encoding_args = NULL;
        int idn_encoding_lineno = 0;
        char *nameprep = NULL;
 
        /*
-        * Parse config file.  parsing of 'alternate-encoding' and
-        * 'idn-encoding' lines are postponed because
-        * 'alias-file' line must be processed before them.
+        * Parse config file.  parsing of 'idn-encoding' line is
+        * postponed because 'alias-file' line must be processed
+        * before them.
         */
        while (fgets(line, sizeof(line), fp) != NULL) {
                char *newline;
@@ -776,13 +794,7 @@ parse_conf(mdn_resconf_t ctx, FILE *fp) {
                }
 
                if (strcmp(argv[0], "alternate-encoding") == 0) {
-                       r = mystrdup(argv[1], &alternate_encoding_args);
-                       if (r != mdn_success) {
-                               mdn_log_error("mdnres: %s, line %d\n",
-                                             mdn_result_tostring(r), lineno);
-                       }
-                       alternate_encoding_lineno = lineno;
-
+                       continue;
                } else if (strcmp(argv[0], "delimiter-map") == 0) {
                        r = parse_delimiter_map(ctx, argv[1], lineno);
 
@@ -858,12 +870,6 @@ parse_conf(mdn_resconf_t ctx, FILE *fp) {
                }
        }
 
-       if (alternate_encoding_args != NULL) {
-               r = parse_alternate_encoding(ctx, alternate_encoding_args,
-                                            alternate_encoding_lineno);
-               if (r != mdn_success)
-                       return (r);
-       }
        if (idn_encoding_args != NULL) {
                r = parse_idn_encoding(ctx, idn_encoding_args,
                                       idn_encoding_lineno);
@@ -874,40 +880,6 @@ parse_conf(mdn_resconf_t ctx, FILE *fp) {
        return (mdn_success);
 }
 
-static mdn_result_t
-parse_alternate_encoding(mdn_resconf_t ctx, char *args, int lineno) {
-       mdn_result_t r;
-       char *argv[MAX_CONF_LINE_ARGS + 1];
-       int argc;
-
-       argc = split_args(args, argv, MAX_CONF_LINE_ARGS + 1);
-
-       if (argc != 1) {
-               mdn_log_error("mdnres: wrong # of args for "
-                             "alternate-encoding, line %d\n", lineno);
-               return (mdn_invalid_syntax);
-       }
-
-       r = mdn_converter_create(argv[0], &ctx->alternate_converter,
-                                MDN_CONVERTER_DELAYEDOPEN);
-       if (r != mdn_success) {
-               mdn_log_error("mdnres: cannot create alternate-encodng "
-                             "converter, %s, line %d\n", 
-                             mdn_result_tostring(r), lineno);
-               return (mdn_invalid_syntax);
-       }
-
-       if (!mdn_converter_isasciicompatible(ctx->alternate_converter)) {
-               mdn_log_error("mdnres: alternate encoding must be "
-                             "ASCII-compatible, line %d\n", lineno);
-               mdn_converter_destroy(ctx->alternate_converter);
-               ctx->alternate_converter = NULL;
-               return (mdn_invalid_name);
-       }
-
-       return (r);
-}
-
 static mdn_result_t
 parse_delimiter_map(mdn_resconf_t ctx, char *args, int lineno) {
        mdn_result_t r;
@@ -1269,42 +1241,14 @@ resetconf(mdn_resconf_t ctx) {
        free(ctx->local_encoding);
        ctx->local_encoding = NULL;
 
-       if (ctx->local_converter != NULL) {
-               mdn_converter_destroy(ctx->local_converter);
-               ctx->local_converter = NULL;
-       }
-       if (ctx->idn_converter != NULL) {
-               mdn_converter_destroy(ctx->idn_converter);
-               ctx->idn_converter = NULL;
-       }
-       if (ctx->alternate_converter != NULL) {
-               mdn_converter_destroy(ctx->alternate_converter);
-               ctx->alternate_converter = NULL;
-       }
-       if (ctx->normalizer != NULL) {
-               mdn_normalizer_destroy(ctx->normalizer);
-               ctx->normalizer = NULL;
-       }
-       if (ctx->prohibit_checker != NULL) {
-               mdn_checker_destroy(ctx->prohibit_checker);
-               ctx->prohibit_checker = NULL;
-       }
-       if (ctx->unassigned_checker != NULL) {
-               mdn_checker_destroy(ctx->unassigned_checker);
-               ctx->unassigned_checker = NULL;
-       }
-       if (ctx->mapper != NULL) {
-               mdn_mapper_destroy(ctx->mapper);
-               ctx->mapper = NULL;
-       }
-       if (ctx->local_mapper != NULL) {
-               mdn_mapselector_destroy(ctx->local_mapper);
-               ctx->local_mapper = NULL;
-       }
-       if (ctx->delimiter_mapper != NULL) {
-               mdn_delimitermap_destroy(ctx->delimiter_mapper);
-               ctx->delimiter_mapper = NULL;
-       }
+       mdn_resconf_setlocalconverter(ctx, NULL);
+       mdn_resconf_setidnconverter(ctx, NULL);
+       mdn_resconf_setdelimitermap(ctx, NULL);
+       mdn_resconf_setlocalmapselector(ctx, NULL);
+       mdn_resconf_setmapper(ctx, NULL);
+       mdn_resconf_setnormalizer(ctx, NULL);
+       mdn_resconf_setprohibitchecker(ctx, NULL);
+       mdn_resconf_setunassignedchecker(ctx, NULL);
 }
 
 static mdn_result_t
index 4bbf4684d59e05c6260d3cb21108272560e0c747..d5947a4a60270638c09c989c52f3ef44aca75fb2 100644 (file)
@@ -1,5 +1,5 @@
 #ifndef lint
-static char *rcsid = "$Id: result.c,v 1.10 2001/02/05 09:10:58 ishisone Exp $";
+static char *rcsid = "$Id: result.c,v 1.1 2002/01/02 02:46:47 marka Exp $";
 #endif
 
 /*
@@ -11,8 +11,8 @@ static char *rcsid = "$Id: result.c,v 1.10 2001/02/05 09:10:58 ishisone Exp $";
  * 
  * The following License Terms and Conditions apply, unless a different
  * license is obtained from Japan Network Information Center ("JPNIC"),
- * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku,
- * Tokyo, Japan.
+ * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda,
+ * Chiyoda-ku, Tokyo 101-0047, Japan.
  * 
  * 1. Use, Modification and Redistribution (including distribution of any
  *    modified or derived work) in source and/or binary forms is permitted
index bb1a760e2b222eab2636ec886ca2150fdafed779..f450ef82f8329872f4a9e364277115c2fb6926c2 100644 (file)
@@ -1,5 +1,5 @@
 #ifndef lint
-static char *rcsid = "$Id: selectiveencode.c,v 1.8 2001/05/31 05:21:38 ishisone Exp $";
+static char *rcsid = "$Id: selectiveencode.c,v 1.1 2002/01/02 02:46:47 marka Exp $";
 #endif
 
 /*
@@ -11,8 +11,8 @@ static char *rcsid = "$Id: selectiveencode.c,v 1.8 2001/05/31 05:21:38 ishisone
  * 
  * The following License Terms and Conditions apply, unless a different
  * license is obtained from Japan Network Information Center ("JPNIC"),
- * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku,
- * Tokyo, Japan.
+ * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda,
+ * Chiyoda-ku, Tokyo 101-0047, Japan.
  * 
  * 1. Use, Modification and Redistribution (including distribution of any
  *    modified or derived work) in source and/or binary forms is permitted
index 9353db05e1ddf543ceef96911a40d0b40005be42..ac99b32856c841c9e2c9bf9b85a01b2c101eadcb 100644 (file)
@@ -1,5 +1,5 @@
 #ifndef lint
-static char *rcsid = "$Id: strhash.c,v 1.8 2000/09/20 02:47:32 ishisone Exp $";
+static char *rcsid = "$Id: strhash.c,v 1.1 2002/01/02 02:46:47 marka Exp $";
 #endif
 
 /*
@@ -11,8 +11,8 @@ static char *rcsid = "$Id: strhash.c,v 1.8 2000/09/20 02:47:32 ishisone Exp $";
  * 
  * The following License Terms and Conditions apply, unless a different
  * license is obtained from Japan Network Information Center ("JPNIC"),
- * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku,
- * Tokyo, Japan.
+ * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda,
+ * Chiyoda-ku, Tokyo 101-0047, Japan.
  * 
  * 1. Use, Modification and Redistribution (including distribution of any
  *    modified or derived work) in source and/or binary forms is permitted
index bd62e18a81b6a7714520c3786427daf7329a7795..0e99c938bdd4d5a39d87e237eb4744e427f6a213 100644 (file)
@@ -1,5 +1,5 @@
 #ifndef lint
-static char *rcsid = "$Id: ucsmap.c,v 1.1 2001/06/09 00:30:27 tale Exp $";
+static char *rcsid = "$Id: ucsmap.c,v 1.2 2002/02/08 05:40:37 marka Exp $";
 #endif
 
 /*
@@ -11,8 +11,8 @@ static char *rcsid = "$Id: ucsmap.c,v 1.1 2001/06/09 00:30:27 tale Exp $";
  * 
  * The following License Terms and Conditions apply, unless a different
  * license is obtained from Japan Network Information Center ("JPNIC"),
- * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku,
- * Tokyo, Japan.
+ * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda,
+ * Chiyoda-ku, Tokyo 101-0047, Japan.
  * 
  * 1. Use, Modification and Redistribution (including distribution of any
  *    modified or derived work) in source and/or binary forms is permitted
index a9a3545bd461291c2622d63b3b1eb983084b8033..bd1b1e7b5fcb05dafc2912a7c77a19e8a3b2343c 100644 (file)
@@ -1,5 +1,5 @@
 #ifndef lint
-static char *rcsid = "$Id: ucsset.c,v 1.1 2001/06/09 00:30:27 tale Exp $";
+static char *rcsid = "$Id: ucsset.c,v 1.2 2002/02/08 05:40:38 marka Exp $";
 #endif
 
 /*
@@ -11,8 +11,8 @@ static char *rcsid = "$Id: ucsset.c,v 1.1 2001/06/09 00:30:27 tale Exp $";
  * 
  * The following License Terms and Conditions apply, unless a different
  * license is obtained from Japan Network Information Center ("JPNIC"),
- * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku,
- * Tokyo, Japan.
+ * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda,
+ * Chiyoda-ku, Tokyo 101-0047, Japan.
  * 
  * 1. Use, Modification and Redistribution (including distribution of any
  *    modified or derived work) in source and/or binary forms is permitted
index 1a4e04410f9eed1e9877ad04bfd395c7f631e1d2..1853870087e4c0ee6e8423f9544b8b2e9414ab8b 100644 (file)
@@ -1,5 +1,5 @@
 #ifndef lint
-static char *rcsid = "$Id: unicode.c,v 1.13 2001/02/14 02:16:15 ishisone Exp $";
+static char *rcsid = "$Id: unicode.c,v 1.1 2002/01/02 02:46:48 marka Exp $";
 #endif
 
 /*
@@ -12,8 +12,8 @@ static char *rcsid = "$Id: unicode.c,v 1.13 2001/02/14 02:16:15 ishisone Exp $";
  * 
  * The following License Terms and Conditions apply, unless a different
  * license is obtained from Japan Network Information Center ("JPNIC"),
- * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku,
- * Tokyo, Japan.
+ * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda,
+ * Chiyoda-ku, Tokyo 101-0047, Japan.
  * 
  * 1. Use, Modification and Redistribution (including distribution of any
  *    modified or derived work) in source and/or binary forms is permitted
@@ -65,12 +65,15 @@ static char *rcsid = "$Id: unicode.c,v 1.13 2001/02/14 02:16:15 ishisone Exp $";
 
 #include <stddef.h>
 #include <stdlib.h>
+#include <string.h>
 
 #include <mdn/result.h>
 #include <mdn/logmacro.h>
 #include <mdn/assert.h>
 #include <mdn/unicode.h>
 
+#define UNICODE_CURRENT        "3.1.0"
+
 #define UCS_MAX                0x10ffff
 #define END_BIT                0x80000000
 
@@ -86,63 +89,118 @@ static char *rcsid = "$Id: unicode.c,v 1.13 2001/02/14 02:16:15 ishisone Exp $";
 #define TCount         28
 #define SLast          (SBase + LCount * VCount * TCount)
 
-#include "unicodedata.c"
-
 /*
- * Macro for multi-level index table.
+ * Symbol composition macro.
  */
-#define LOOKUPTBL(vprefix, mprefix, v) \
-       DMAP(vprefix)[\
-               IMAP(vprefix)[\
-                       IMAP(vprefix)[IDX0(mprefix, v)] + IDX1(mprefix, v)\
-               ]\
-       ].tbl[IDX2(mprefix, v)]
+#define compose_sym(a, b)              compose_symX(a, b)
+#define compose_symX(a, b)             a ## b
+
+struct composition {
+       unsigned long c2;       /* 2nd character */
+       unsigned long comp;     /* composed character */
+};
+
+#include "unicodedata_301.c"
+#define VERSION v301
+#include "unicode_template.c"
+#undef VERSION
+
+#include "unicodedata_310.c"
+#define VERSION v310
+#include "unicode_template.c"
+#undef VERSION
+
+typedef int    (*unicode_canonclassproc)(unsigned long v);
+typedef int    (*unicode_decomposeproc)(unsigned long c,
+                                        const unsigned long **seqp);
+typedef int    (*unicode_composeproc)(unsigned long c,
+                                      const struct composition **compp);
+typedef int    (*unicode_toupperproc)(unsigned long c,
+                                      const unsigned long **seqp);
+typedef int    (*unicode_tolowerproc)(unsigned long c,
+                                      const unsigned long **seqp);
+typedef int    (*unicode_casectxproc)(unsigned long c);
+typedef int    (*unicode_casefoldingproc)(unsigned long c,
+                                          const unsigned long **seqp);
+
+static struct mdn__unicode_ops {
+       char *version;
+       unicode_canonclassproc canonclass_proc;
+       unicode_decomposeproc decompose_proc;
+       unicode_composeproc compose_proc;
+       unicode_toupperproc toupper_proc;
+       unicode_tolowerproc tolower_proc;
+       unicode_casectxproc casectx_proc;
+       unicode_casefoldingproc casefolding_proc;
+} unicode_versions[] = {
+#define MAKE_UNICODE_HANDLE(version, suffix) \
+       { version, \
+         compose_sym(canonclass_, suffix), \
+         compose_sym(decompose_, suffix), \
+         compose_sym(compose_, suffix), \
+         compose_sym(toupper_, suffix), \
+         compose_sym(tolower_, suffix), \
+         compose_sym(casemapctx_, suffix), \
+         compose_sym(casefolding_, suffix) }
+       MAKE_UNICODE_HANDLE("3.0.1", v301),
+       MAKE_UNICODE_HANDLE("3.1.0", v310),
+       { NULL },
+#undef MAKE_UNICODE_HANDLE
+};
+       
+static mdn_result_t    casemap(mdn__unicode_version_t version,
+                               unsigned long c, mdn__unicode_context_t ctx,
+                               unsigned long *v, size_t vlen, int *convlenp,
+                               int do_uppercase);
 
-#define IDX0(mprefix, v) IDX_0(v, BITS1(mprefix), BITS2(mprefix))
-#define IDX1(mprefix, v) IDX_1(v, BITS1(mprefix), BITS2(mprefix))
-#define IDX2(mprefix, v) IDX_2(v, BITS1(mprefix), BITS2(mprefix))
+mdn_result_t
+mdn__unicode_create(const char *version,
+                   mdn__unicode_version_t *versionp)
+{
+       mdn__unicode_version_t v;
 
-#define IDX_0(v, bits1, bits2) ((v) >> ((bits1) + (bits2)))
-#define IDX_1(v, bits1, bits2) (((v) >> (bits2)) & ((1 << (bits1)) - 1))
-#define IDX_2(v, bits1, bits2) ((v) & ((1 << (bits2)) - 1))
+       assert(versionp != NULL);
+       TRACE(("mdn__unicode_create(version=%-.50s)\n",
+              version == NULL ? "<NULL>" : version));
 
-#define BITS1(mprefix) mprefix ## _BITS_1
-#define BITS2(mprefix) mprefix ## _BITS_2
+       if (version == NULL)
+               version = UNICODE_CURRENT;
 
-#define IMAP(vprefix)  vprefix ## _imap
-#define DMAP(vprefix)  vprefix ## _table
+       for (v = unicode_versions; v->version != NULL; v++) {
+               if (strcmp(v->version, version) == 0) {
+                       *versionp = v;
+                       return (mdn_success);
+               }
+       }
+       return (mdn_notfound);
+}
 
-static mdn_result_t    casemap(unsigned long c, mdn__unicode_context_t ctx,
-                               unsigned long *v, size_t vlen, int *convlenp,
-                               int do_uppercase);
+void
+mdn__unicode_destroy(mdn__unicode_version_t version) {
+       assert(version != NULL);
+       TRACE(("mdn__unicode_destroy()\n"));
+       /* Nothing to do */
+}
 
 int
-mdn__unicode_canonicalclass(unsigned long c) {
-#if 0
-       TRACE(("mdn__unicode_canonicalclass(c=%lx)\n", c));
-#endif
-
+mdn__unicode_canonicalclass(mdn__unicode_version_t version, unsigned long c) {
        if (c > UCS_MAX)
                return (0);
 
-       return (LOOKUPTBL(canon_class, CANON_CLASS, c));
+       return (*version->canonclass_proc)(c);
 }
 
 mdn_result_t
-mdn__unicode_decompose(int compat, unsigned long *v, size_t vlen,
+mdn__unicode_decompose(mdn__unicode_version_t version,
+                      int compat, unsigned long *v, size_t vlen,
                       unsigned long c, int *decomp_lenp)
 {
        unsigned long *vorg = v;
        int seqidx;
-       unsigned long *seq;
+       const unsigned long *seq;
 
        assert(v != NULL && vlen >= 0 && decomp_lenp != NULL);
 
-#if 0
-       TRACE(("mdn__unicode_decompose(compat=%d,vlen=%d,c=%lx)\n",
-             compat, vlen, c));
-#endif
-
        if (c > UCS_MAX)
                return (mdn_notfound);
 
@@ -172,7 +230,7 @@ mdn__unicode_decompose(int compat, unsigned long *v, size_t vlen,
         * or if it is a compatibility decomosition when canonical
         * decomposition requested, return 'mdn_notfound'.
         */
-       seqidx = LOOKUPTBL(decompose, DECOMP, c);
+       seqidx = (*version->decompose_proc)(c, &seq);
        if (seqidx == 0 || (compat == 0 && (seqidx & DECOMP_COMPAT) != 0))
                return (mdn_notfound);
        
@@ -180,16 +238,15 @@ mdn__unicode_decompose(int compat, unsigned long *v, size_t vlen,
         * Copy the decomposed sequence.  The end of the sequence are
         * marked with END_BIT.
         */
-       seq = &decompose_seq[seqidx & ~DECOMP_COMPAT];
        do {
                unsigned long c;
-               size_t dlen;
+               int dlen;
                mdn_result_t r;
 
                c = *seq & ~END_BIT;
 
                /* Decompose recursively. */
-               r = mdn__unicode_decompose(compat, v, vlen, c, &dlen);
+               r = mdn__unicode_decompose(version, compat, v, vlen, c, &dlen);
                if (r == mdn_success) {
                        v += dlen;
                        vlen -= dlen;
@@ -210,10 +267,10 @@ mdn__unicode_decompose(int compat, unsigned long *v, size_t vlen,
 }
 
 int
-mdn__unicode_iscompositecandidate(unsigned long c) {
-#if 0
-       TRACE(("mdn__unicode_iscompositecandidate(c=%lx)\n", c));
-#endif
+mdn__unicode_iscompositecandidate(mdn__unicode_version_t version,
+                                 unsigned long c)
+{
+       const struct composition *dummy;
 
        if (c > UCS_MAX)
                return (0);
@@ -227,25 +284,22 @@ mdn__unicode_iscompositecandidate(unsigned long c) {
         * that begins with the given character, it is not a
         * composition candidate.
         */
-       if (LOOKUPTBL(compose, CANON_COMPOSE, c) == 0)
+       if ((*version->compose_proc)(c, &dummy) == 0)
                return (0);
        else
                return (1);
 }
 
 mdn_result_t
-mdn__unicode_compose(unsigned long c1, unsigned long c2, unsigned long *compp)
+mdn__unicode_compose(mdn__unicode_version_t version,
+                    unsigned long c1, unsigned long c2, unsigned long *compp)
 {
-       unsigned long x;
        int n;
-       int seqidx, lo, hi;
+       int lo, hi;
+       const struct composition *cseq;
 
        assert(compp != NULL);
 
-#if 0
-       TRACE(("mdn__unicode_compose(c1=%lx,c2=%lx)\n", c1, c2));
-#endif
-
        if (c1 > UCS_MAX || c2 > UCS_MAX)
                return (mdn_notfound);
 
@@ -276,26 +330,24 @@ mdn__unicode_compose(unsigned long c1, unsigned long c2, unsigned long *compp)
         * the number of composition that begins with 'c1', and the lower
         * 16bits is the offset in 'compose_seq'.
         */
-       if ((x = LOOKUPTBL(compose, CANON_COMPOSE, c1)) == 0)
+       if ((n = (*version->compose_proc)(c1, &cseq)) == 0)
                return (mdn_notfound);
-       n = x >> 16;
-       seqidx = x & 0xffff;
 
        /*
         * The composite sequences are sorted by the 2nd character 'c2'.
         * So we can use binary search.
         */
-       lo = seqidx;
-       hi = seqidx + n - 1;
+       lo = 0;
+       hi = n - 1;
        while (lo <= hi) {
                int mid = (lo + hi) / 2;
 
-               if (compose_seq[mid].c2 < c2) {
+               if (cseq[mid].c2 < c2) {
                        lo = mid + 1;
-               } else if (compose_seq[mid].c2 > c2) {
+               } else if (cseq[mid].c2 > c2) {
                        hi = mid - 1;
                } else {
-                       *compp = compose_seq[mid].comp;
+                       *compp = cseq[mid].comp;
                        return (mdn_success);
                }
        }
@@ -303,30 +355,27 @@ mdn__unicode_compose(unsigned long c1, unsigned long c2, unsigned long *compp)
 }
 
 mdn_result_t
-mdn__unicode_toupper(unsigned long c, mdn__unicode_context_t ctx,
+mdn__unicode_toupper(mdn__unicode_version_t version,
+                    unsigned long c, mdn__unicode_context_t ctx,
                     unsigned long *v, size_t vlen, int *convlenp)
 {
-#if 0
-       TRACE(("mdn__unicode_toupper(c=%lx)\n", c));
-#endif
-       return (casemap(c, ctx, v, vlen, convlenp, 1));
+       return (casemap(version, c, ctx, v, vlen, convlenp, 1));
 }
 
 mdn_result_t
-mdn__unicode_tolower(unsigned long c, mdn__unicode_context_t ctx,
+mdn__unicode_tolower(mdn__unicode_version_t version,
+                    unsigned long c, mdn__unicode_context_t ctx,
                     unsigned long *v, size_t vlen, int *convlenp)
 {
-#if 0
-       TRACE(("mdn__unicode_tolower(c=%lx)\n", c));
-#endif
-       return (casemap(c, ctx, v, vlen, convlenp, 0));
+       return (casemap(version, c, ctx, v, vlen, convlenp, 0));
 }
 
 static mdn_result_t
-casemap(unsigned long c, mdn__unicode_context_t ctx,
+casemap(mdn__unicode_version_t version,
+       unsigned long c, mdn__unicode_context_t ctx,
        unsigned long *v, size_t vlen, int *convlenp, int do_uppercase)
 {
-       unsigned long *seq;
+       const unsigned long *seq;
        int seqidx;
 
        if (vlen < 1)
@@ -338,13 +387,10 @@ casemap(unsigned long c, mdn__unicode_context_t ctx,
        /*
         * Look up toupper/tolower mapping table.
         */
-       if (do_uppercase) {
-               seq = toupper_seq;
-               seqidx = LOOKUPTBL(toupper, CASEMAP, c);
-       } else {
-               seq = tolower_seq;
-               seqidx = LOOKUPTBL(tolower, CASEMAP, c);
-       }
+       if (do_uppercase)
+               seqidx = (*version->toupper_proc)(c, &seq);
+       else
+               seqidx = (*version->tolower_proc)(c, &seq);
 
        /* Zero means there are no mapping. */
        if (seqidx == 0)
@@ -356,7 +402,6 @@ casemap(unsigned long c, mdn__unicode_context_t ctx,
         * are defined for a single character, so we have to loop
         * through all the mappings.
         */
-       seq += seqidx;
        for (;;) {
                int found = 0;
                unsigned long flags = *seq++;
@@ -425,7 +470,9 @@ casemap(unsigned long c, mdn__unicode_context_t ctx,
 }
 
 mdn__unicode_context_t
-mdn__unicode_getcontext(unsigned long c) {
+mdn__unicode_getcontext(mdn__unicode_version_t version,
+                       unsigned long c)
+{
 #if 0
        TRACE(("mdn__unicode_getcontext(c=%lx)\n", c));
 #endif
@@ -433,7 +480,7 @@ mdn__unicode_getcontext(unsigned long c) {
        if (c > UCS_MAX)
                return (mdn__unicode_context_final);
 
-       switch (LOOKUPTBL(casemap_ctx, CASEMAP_CTX, c)) {
+       switch ((*version->casectx_proc)(c)) {
        case CTX_CASED:
                return (mdn__unicode_context_nonfinal);
        case CTX_NSM:
@@ -444,12 +491,13 @@ mdn__unicode_getcontext(unsigned long c) {
 }
 
 mdn_result_t
-mdn__unicode_casefold(unsigned long c, unsigned long *v, size_t vlen,
+mdn__unicode_casefold(mdn__unicode_version_t version,
+                     unsigned long c, unsigned long *v, size_t vlen,
                      int *foldlenp)
 {
        unsigned long *vorg = v;
        int seqidx;
-       unsigned long *seq;
+       const unsigned long *seq;
 
        assert(v != NULL && vlen >= 0 && foldlenp != NULL);
 
@@ -462,10 +510,9 @@ mdn__unicode_casefold(unsigned long c, unsigned long *v, size_t vlen,
                goto nomap;
 
        /* Look up case folding table. */
-       if ((seqidx = LOOKUPTBL(case_folding, CASE_FOLDING, c)) == 0)
+       if ((seqidx = (*version->casefolding_proc)(c, &seq)) == 0)
                goto nomap;
        
-       seq = &case_folding_seq[seqidx];
        do {
                if (vlen-- < 1)
                        return (mdn_buffer_overflow);
diff --git a/contrib/idn/mdnkit/lib/unicode_template.c b/contrib/idn/mdnkit/lib/unicode_template.c
new file mode 100644 (file)
index 0000000..42c4dc6
--- /dev/null
@@ -0,0 +1,145 @@
+/* $Id: unicode_template.c,v 1.1 2002/02/08 05:40:41 marka Exp $ */
+
+/*
+ * Copyright (c) 2000,2001 Japan Network Information Center.
+ * All rights reserved.
+ *  
+ * By using this file, you agree to the terms and conditions set forth bellow.
+ * 
+ *                     LICENSE TERMS AND CONDITIONS 
+ * 
+ * The following License Terms and Conditions apply, unless a different
+ * license is obtained from Japan Network Information Center ("JPNIC"),
+ * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda,
+ * Chiyoda-ku, Tokyo 101-0047, Japan.
+ * 
+ * 1. Use, Modification and Redistribution (including distribution of any
+ *    modified or derived work) in source and/or binary forms is permitted
+ *    under this License Terms and Conditions.
+ * 
+ * 2. Redistribution of source code must retain the copyright notices as they
+ *    appear in each source code file, this License Terms and Conditions.
+ * 
+ * 3. Redistribution in binary form must reproduce the Copyright Notice,
+ *    this License Terms and Conditions, in the documentation and/or other
+ *    materials provided with the distribution.  For the purposes of binary
+ *    distribution the "Copyright Notice" refers to the following language:
+ *    "Copyright (c) Japan Network Information Center.  All rights reserved."
+ * 
+ * 4. Neither the name of JPNIC may be used to endorse or promote products
+ *    derived from this Software without specific prior written approval of
+ *    JPNIC.
+ * 
+ * 5. Disclaimer/Limitation of Liability: THIS SOFTWARE IS PROVIDED BY JPNIC
+ *    "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ *    LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+ *    PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL JPNIC BE LIABLE
+ *    FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ *    CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ *    SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+ *    BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ *    WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ *    OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ *    ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+ * 
+ * 6. Indemnification by Licensee
+ *    Any person or entities using and/or redistributing this Software under
+ *    this License Terms and Conditions shall defend indemnify and hold
+ *    harmless JPNIC from and against any and all judgements damages,
+ *    expenses, settlement liabilities, cost and other liabilities of any
+ *    kind as a result of use and redistribution of this Software or any
+ *    claim, suite, action, litigation or proceeding by any third party
+ *    arising out of or relates to this License Terms and Conditions.
+ * 
+ * 7. Governing Law, Jurisdiction and Venue
+ *    This License Terms and Conditions shall be governed by and and
+ *    construed in accordance with the law of Japan. Any person or entities
+ *    using and/or redistributing this Software under this License Terms and
+ *    Conditions hereby agrees and consent to the personal and exclusive
+ *    jurisdiction and venue of Tokyo District Court of Japan.
+ */
+
+#ifndef UNICODE_TEMPLATE_INIT
+#define UNICODE_TEMPLATE_INIT
+
+/*
+ * Macro for multi-level index table.
+ */
+#define LOOKUPTBL(vprefix, mprefix, v) \
+       DMAP(vprefix)[\
+               IMAP(vprefix)[\
+                       IMAP(vprefix)[IDX0(mprefix, v)] + IDX1(mprefix, v)\
+               ]\
+       ].tbl[IDX2(mprefix, v)]
+
+#define IDX0(mprefix, v) IDX_0(v, BITS1(mprefix), BITS2(mprefix))
+#define IDX1(mprefix, v) IDX_1(v, BITS1(mprefix), BITS2(mprefix))
+#define IDX2(mprefix, v) IDX_2(v, BITS1(mprefix), BITS2(mprefix))
+
+#define IDX_0(v, bits1, bits2) ((v) >> ((bits1) + (bits2)))
+#define IDX_1(v, bits1, bits2) (((v) >> (bits2)) & ((1 << (bits1)) - 1))
+#define IDX_2(v, bits1, bits2) ((v) & ((1 << (bits2)) - 1))
+
+#define BITS1(mprefix) mprefix ## _BITS_1
+#define BITS2(mprefix) mprefix ## _BITS_2
+
+#define IMAP(vprefix)  concat4(VERSION, _, vprefix, _imap)
+#define DMAP(vprefix)  concat4(VERSION, _, vprefix, _table)
+#define SEQ(vprefix)   concat4(VERSION, _, vprefix, _seq)
+#define concat4(a,b,c,d)       concat4X(a, b, c, d)
+#define concat4X(a,b,c,d)      a ## b ## c ## d
+
+#endif /* UNICODE_TEMPLATE_INIT */
+
+static int
+compose_sym(canonclass_, VERSION) (unsigned long c) {
+       /* Look up canonicalclass table. */
+       return (LOOKUPTBL(canon_class, CANON_CLASS, c));
+}
+
+static int
+compose_sym(decompose_, VERSION) (unsigned long c, const unsigned long **seqp)
+{
+       /* Look up decomposition table. */
+       int seqidx = LOOKUPTBL(decompose, DECOMP, c);
+       *seqp = SEQ(decompose) + (seqidx & ~DECOMP_COMPAT);
+       return (seqidx);
+}
+
+static int
+compose_sym(compose_, VERSION) (unsigned long c,
+                               const struct composition **compp)
+{
+       /* Look up composition table. */
+       int seqidx = LOOKUPTBL(compose, CANON_COMPOSE, c);
+       *compp = SEQ(compose) + (seqidx & 0xffff);
+       return (seqidx >> 16);
+}
+
+static int
+compose_sym(toupper_, VERSION) (unsigned long c, const unsigned long **seqp) {
+       int seqidx = LOOKUPTBL(toupper, CASEMAP, c);
+       *seqp = SEQ(toupper) + seqidx;
+       return (seqidx);
+}
+
+static int
+compose_sym(tolower_, VERSION) (unsigned long c, const unsigned long **seqp) {
+       int seqidx = LOOKUPTBL(tolower, CASEMAP, c);
+       *seqp = SEQ(tolower) + seqidx;
+       return (seqidx);
+}
+
+static int
+compose_sym(casemapctx_, VERSION) (unsigned long c) {
+       return (LOOKUPTBL(casemap_ctx, CASEMAP_CTX, c));
+}
+
+static int
+compose_sym(casefolding_, VERSION) (unsigned long c,
+                                   const unsigned long **seqp)
+{
+       int seqidx = LOOKUPTBL(case_folding, CASE_FOLDING, c);
+       *seqp = SEQ(case_folding) + seqidx;
+       return (seqidx);
+}
similarity index 99%
rename from contrib/idn/mdnkit/lib/unicodedata.c
rename to contrib/idn/mdnkit/lib/unicodedata_301.c
index 54b3389123121d9da88d22fbd1aded271f6c20bb..56894fd7e4c0184d75e4728a275d9343319b601e 100644 (file)
@@ -1,5 +1,5 @@
-/* $Id: unicodedata.c,v 1.8 2001/02/13 08:25:53 ishisone Exp $ */
-/* $-Id: generate_normalize_data.pl,v 1.5 2001/02/13 07:34:02 ishisone Exp -$ */
+/* $Id: unicodedata_301.c,v 1.1 2002/02/08 05:40:44 marka Exp $ */
+/* $-Id: generate_normalize_data.pl,v 1.7 2001/09/10 08:16:20 ishisone Exp -$ */
 /*
  * Do not edit this file!
  * This file is generated from UnicodeData.txt, CompositionExclusions-1.txt,
@@ -15,7 +15,7 @@
 #define CANON_CLASS_BITS_1     7
 #define CANON_CLASS_BITS_2     5
 
-static unsigned short canon_class_imap[] = {
+static const unsigned short v301_canon_class_imap[] = {
          272,   400,   528,   656,   784,   784,   784,   784, 
          784,   784,   784,   784,   784,   784,   784,   912, 
          784,   784,   784,   784,   784,   784,   784,   784, 
@@ -148,9 +148,9 @@ static unsigned short canon_class_imap[] = {
            0,     0,     0,     0,     0,     0,     0,     0, 
 };
 
-static struct {
+static const struct {
        unsigned char tbl[32];
-} canon_class_table[] = {
+} v301_canon_class_table[] = {
        {{
           0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
           0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
@@ -356,7 +356,7 @@ static struct {
 #define CANON_COMPOSE_BITS_1   7
 #define CANON_COMPOSE_BITS_2   5
 
-static unsigned short compose_imap[] = {
+static const unsigned short v301_compose_imap[] = {
          272,   400,   528,   656,   784,   784,   784,   784, 
          784,   784,   784,   784,   784,   784,   784,   784, 
          784,   784,   784,   784,   784,   784,   784,   784, 
@@ -473,9 +473,9 @@ static unsigned short compose_imap[] = {
            0,     0,     0,     0,     0,     0,     0,     0, 
 };
 
-static struct {
+static const struct {
        unsigned long tbl[32];
-} compose_table[] = {
+} v301_compose_table[] = {
        {{
               0,        0,        0,        0,        0,        0,        0, 
               0,        0,        0,        0,        0,        0,        0, 
@@ -926,10 +926,7 @@ static struct {
        }},
 };
 
-static struct composition {
-       unsigned long c2;       /* 2nd character */
-       unsigned long comp;     /* composed character */
-} compose_seq[] = {
+static const struct composition v301_compose_seq[] = {
        { 0x00000000, 0x00000000 }, { 0x00000338, 0x0000226e }, 
        { 0x00000338, 0x00002260 }, { 0x00000338, 0x0000226f }, 
        { 0x00000300, 0x000000c0 }, { 0x00000301, 0x000000c1 }, 
@@ -1402,7 +1399,7 @@ static struct composition {
 #define DECOMP_BITS_2  5
 #define DECOMP_COMPAT  32768
 
-static unsigned short decompose_imap[] = {
+static const unsigned short v301_decompose_imap[] = {
          272,   400,   528,   656,   784,   784,   784,   784, 
          784,   784,   784,   784,   784,   784,   784,   912, 
          784,   784,   784,   784,   784,   784,   784,   784, 
@@ -1535,9 +1532,9 @@ static unsigned short decompose_imap[] = {
          173,   174,   175,   176,   177,   178,   179,   180, 
 };
 
-static struct {
+static const struct {
        unsigned short tbl[32];
-} decompose_table[] = {
+} v301_decompose_table[] = {
        {{
             0,      0,      0,      0,      0,      0,      0,      0, 
             0,      0,      0,      0,      0,      0,      0,      0, 
@@ -2625,7 +2622,7 @@ static struct {
             0,      0,      0,      0,      0,      0,      0,      0, 
        }},
 };
-static unsigned long decompose_seq[] = {
+static const unsigned long v301_decompose_seq[] = {
        0x00000000, 0x80000020, 0x00000020, 0x80000308, 
        0x80000061, 0x00000020, 0x80000304, 0x80000032, 
        0x80000033, 0x00000020, 0x80000301, 0x800003bc, 
@@ -4159,7 +4156,7 @@ static unsigned long decompose_seq[] = {
 #define CASEMAP_BITS_1 7
 #define CASEMAP_BITS_2 5
 
-static unsigned short toupper_imap[] = {
+static const unsigned short v301_toupper_imap[] = {
          272,   400,   528,   656,   656,   656,   656,   656, 
          656,   656,   656,   656,   656,   656,   656,   784, 
          656,   656,   656,   656,   656,   656,   656,   656, 
@@ -4276,9 +4273,9 @@ static unsigned short toupper_imap[] = {
            0,     0,    52,     0,     0,     0,     0,     0, 
 };
 
-static struct {
+static const struct {
        unsigned short tbl[32];
-} toupper_table[] = {
+} v301_toupper_table[] = {
        {{
           0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
           0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
@@ -4545,7 +4542,7 @@ static struct {
        1725, 1727, 1729, 1731, 1733,    0,    0,    0,    0,    0, 
        }},
 };
-static unsigned short tolower_imap[] = {
+static const unsigned short v301_tolower_imap[] = {
          272,   400,   528,   656,   656,   656,   656,   656, 
          656,   656,   656,   656,   656,   656,   656,   784, 
          656,   656,   656,   656,   656,   656,   656,   656, 
@@ -4662,9 +4659,9 @@ static unsigned short tolower_imap[] = {
            0,    46,     0,     0,     0,     0,     0,     0, 
 };
 
-static struct {
+static const struct {
        unsigned short tbl[32];
-} tolower_table[] = {
+} v301_tolower_table[] = {
        {{
           0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
           0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
@@ -4901,7 +4898,7 @@ static struct {
        1439, 1441, 1443, 1445, 1447,    0,    0,    0,    0,    0, 
        }},
 };
-static unsigned long toupper_seq[] = {
+static const unsigned long v301_toupper_seq[] = {
        0x00000000, 0x00000010, 0x80000041, 0x00000010, 
        0x80000042, 0x00000010, 0x80000043, 0x00000010, 
        0x80000044, 0x00000010, 0x80000045, 0x00000010, 
@@ -5338,7 +5335,7 @@ static unsigned long toupper_seq[] = {
        0x8000ff39, 0x00000010, 0x8000ff3a, 
 };
 
-static unsigned long tolower_seq[] = {
+static const unsigned long v301_tolower_seq[] = {
        0x00000000, 0x00000010, 0x80000061, 0x00000010, 
        0x80000062, 0x00000010, 0x80000063, 0x00000010, 
        0x80000064, 0x00000010, 0x80000065, 0x00000010, 
@@ -5716,7 +5713,7 @@ static unsigned long tolower_seq[] = {
 #define CTX_CASED      1
 #define CTX_NSM                2
 
-static unsigned short casemap_ctx_imap[] = {
+static const unsigned short v301_casemap_ctx_imap[] = {
          272,   400,   528,   656,   784,   784,   784,   784, 
          784,   784,   784,   784,   784,   784,   784,   912, 
          784,   784,   784,   784,   784,   784,   784,   784, 
@@ -5849,9 +5846,9 @@ static unsigned short casemap_ctx_imap[] = {
            0,     1,     1,     0,     0,     0,     0,     0, 
 };
 
-static struct {
+static const struct {
        unsigned char tbl[32];
-} casemap_ctx_table[] = {
+} v301_casemap_ctx_table[] = {
        {{
         0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
         0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
@@ -6198,7 +6195,7 @@ static struct {
 #define CASE_FOLDING_BITS_1    7
 #define CASE_FOLDING_BITS_2    5
 
-static unsigned short case_folding_imap[] = {
+static const unsigned short v301_case_folding_imap[] = {
          272,   400,   528,   656,   656,   656,   656,   656, 
          656,   656,   656,   656,   656,   656,   656,   784, 
          656,   656,   656,   656,   656,   656,   656,   656, 
@@ -6315,9 +6312,9 @@ static unsigned short case_folding_imap[] = {
            0,    50,     0,     0,     0,     0,     0,     0, 
 };
 
-static struct {
+static const struct {
        unsigned short tbl[32];
-} case_folding_table[] = {
+} v301_case_folding_table[] = {
        {{
           0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
           0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
@@ -6574,7 +6571,7 @@ static struct {
         900,  901,  902,  903,  904,    0,    0,    0,    0,    0, 
        }},
 };
-static unsigned long case_folding_seq[] = {
+static const unsigned long v301_case_folding_seq[] = {
        0x00000000, 0x80000061, 0x80000062, 0x80000063, 
        0x80000064, 0x80000065, 0x80000066, 0x80000067, 
        0x80000068, 0x80000069, 0x8000006a, 0x8000006b, 
diff --git a/contrib/idn/mdnkit/lib/unicodedata_310.c b/contrib/idn/mdnkit/lib/unicodedata_310.c
new file mode 100644 (file)
index 0000000..a86e795
--- /dev/null
@@ -0,0 +1,7796 @@
+/* $Id: unicodedata_310.c,v 1.1 2002/02/08 05:40:44 marka Exp $ */
+/* $-Id: generate_normalize_data.pl,v 1.7 2001/09/10 08:16:20 ishisone Exp -$ */
+/*
+ * Do not edit this file!
+ * This file is generated from UnicodeData.txt, CompositionExclusions-1.txt,
+ * SpecialCasing.txt and CaseFolding.txt.
+ */
+
+
+/*
+ * Canonical Class
+ */
+
+#define CANON_CLASS_BITS_0     9
+#define CANON_CLASS_BITS_1     7
+#define CANON_CLASS_BITS_2     5
+
+static const unsigned short v310_canon_class_imap[] = {
+         272,   400,   528,   656,   784,   784,   784,   784, 
+         784,   784,   784,   784,   784,   784,   784,   912, 
+         784,   784,   784,   784,   784,   784,   784,   784, 
+         784,   784,   784,   784,   784,  1040,   784,   784, 
+         784,   784,   784,   784,   784,   784,   784,   784, 
+         784,   784,   784,   784,   784,   784,   784,   784, 
+         784,   784,   784,   784,   784,   784,   784,   784, 
+         784,   784,   784,   784,   784,   784,   784,   784, 
+         784,   784,   784,   784,   784,   784,   784,   784, 
+         784,   784,   784,   784,   784,   784,   784,   784, 
+         784,   784,   784,   784,   784,   784,   784,   784, 
+         784,   784,   784,   784,   784,   784,   784,   784, 
+         784,   784,   784,   784,   784,   784,   784,   784, 
+         784,   784,   784,   784,   784,   784,   784,   784, 
+         784,   784,   784,   784,   784,   784,   784,   784, 
+         784,   784,   784,   784,   784,   784,   784,   784, 
+         784,   784,   784,   784,   784,   784,   784,   784, 
+         784,   784,   784,   784,   784,   784,   784,   784, 
+         784,   784,   784,   784,   784,   784,   784,   784, 
+         784,   784,   784,   784,   784,   784,   784,   784, 
+         784,   784,   784,   784,   784,   784,   784,   784, 
+         784,   784,   784,   784,   784,   784,   784,   784, 
+         784,   784,   784,   784,   784,   784,   784,   784, 
+         784,   784,   784,   784,   784,   784,   784,   784, 
+         784,   784,   784,   784,   784,   784,   784,   784, 
+         784,   784,   784,   784,   784,   784,   784,   784, 
+         784,   784,   784,   784,   784,   784,   784,   784, 
+         784,   784,   784,   784,   784,   784,   784,   784, 
+         784,   784,   784,   784,   784,   784,   784,   784, 
+         784,   784,   784,   784,   784,   784,   784,   784, 
+         784,   784,   784,   784,   784,   784,   784,   784, 
+         784,   784,   784,   784,   784,   784,   784,   784, 
+         784,   784,   784,   784,   784,   784,   784,   784, 
+         784,   784,   784,   784,   784,   784,   784,   784, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           1,     2,     3,     4,     0,     0,     0,     0, 
+           0,     0,     0,     0,     5,     0,     0,     0, 
+           0,     0,     0,     0,     6,     7,     8,     0, 
+           0,     0,     9,    10,     0,     0,    11,    12, 
+          13,    14,    15,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,    16,    17,     0,     0,    16,    18,     0, 
+           0,    16,    18,     0,     0,    16,    18,     0, 
+           0,    16,    18,     0,     0,     0,    18,     0, 
+           0,     0,    19,     0,     0,     0,    18,     0, 
+           0,     0,    18,     0,     0,     0,    20,     0, 
+           0,    21,    22,     0,     0,    23,    24,     0, 
+          25,    26,     0,    27,    28,     0,    29,     0, 
+           0,    30,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,    31,     0, 
+           0,     0,     0,     0,     0,    32,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,    33,    34, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,    35,     0,     0,    36,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+          37,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,    38,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,    39,    40,    41,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+};
+
+static const struct {
+       unsigned char tbl[32];
+} v310_canon_class_table[] = {
+       {{
+          0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
+          0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
+          0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
+       }},
+       {{
+        230,  230,  230,  230,  230,  230,  230,  230,  230,  230,  230, 
+        230,  230,  230,  230,  230,  230,  230,  230,  230,  230,  232, 
+        220,  220,  220,  220,  232,  216,  220,  220,  220,  220, 
+       }},
+       {{
+        220,  202,  202,  220,  220,  220,  220,  202,  202,  220,  220, 
+        220,  220,  220,  220,  220,  220,  220,  220,  220,    1,    1, 
+          1,    1,    1,  220,  220,  220,  220,  230,  230,  230, 
+       }},
+       {{
+        230,  230,  230,  230,  230,  240,  230,  220,  220,  220,  230, 
+        230,  230,  220,  220,    0,    0,    0,    0,    0,    0,    0, 
+          0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
+       }},
+       {{
+        234,  234,  233,    0,    0,    0,    0,    0,    0,    0,    0, 
+          0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
+          0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
+       }},
+       {{
+          0,    0,    0,  230,  230,  230,  230,    0,    0,    0,    0, 
+          0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
+          0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
+       }},
+       {{
+          0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
+          0,    0,    0,    0,    0,    0,  220,  230,  230,  230,  230, 
+        220,  230,  230,  230,  222,  220,  230,  230,  230,  230, 
+       }},
+       {{
+        230,  230,    0,  220,  220,  220,  220,  220,  230,  230,  220, 
+        230,  230,  222,  228,  230,   10,   11,   12,   13,   14,   15, 
+         16,   17,   18,   19,    0,   20,   21,   22,    0,   23, 
+       }},
+       {{
+          0,   24,   25,    0,  230,    0,    0,    0,    0,    0,    0, 
+          0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
+          0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
+       }},
+       {{
+          0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
+         27,   28,   29,   30,   31,   32,   33,   34,  230,  230,  220, 
+          0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
+       }},
+       {{
+          0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
+          0,    0,    0,    0,    0,   35,    0,    0,    0,    0,    0, 
+          0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
+       }},
+       {{
+          0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
+          0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
+        230,  230,  230,  230,  230,  230,  230,    0,    0,  230, 
+       }},
+       {{
+        230,  230,  230,  220,  230,    0,    0,  230,  230,    0,  220, 
+        230,  230,  220,    0,    0,    0,    0,    0,    0,    0,    0, 
+          0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
+       }},
+       {{
+          0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
+          0,    0,    0,    0,    0,    0,   36,    0,    0,    0,    0, 
+          0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
+       }},
+       {{
+          0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
+          0,    0,    0,    0,    0,  230,  220,  230,  230,  220,  230, 
+        230,  220,  220,  220,  230,  220,  220,  230,  220,  230, 
+       }},
+       {{
+        230,  230,  220,  230,  220,  230,  220,  230,  220,  230,  230, 
+          0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
+          0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
+       }},
+       {{
+          0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
+          0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
+          0,    0,    0,    0,    0,    0,    7,    0,    0,    0, 
+       }},
+       {{
+          0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
+          0,    0,    9,    0,    0,    0,  230,  220,  230,  230,    0, 
+          0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
+       }},
+       {{
+          0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
+          0,    0,    9,    0,    0,    0,    0,    0,    0,    0,    0, 
+          0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
+       }},
+       {{
+          0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
+          0,    0,    9,    0,    0,    0,    0,    0,    0,    0,   84, 
+         91,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
+       }},
+       {{
+          0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    9, 
+          0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
+          0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
+       }},
+       {{
+          0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
+          0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
+          0,    0,  103,  103,    9,    0,    0,    0,    0,    0, 
+       }},
+       {{
+          0,    0,    0,    0,    0,    0,    0,    0,  107,  107,  107, 
+        107,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
+          0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
+       }},
+       {{
+          0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
+          0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
+          0,    0,  118,  118,    0,    0,    0,    0,    0,    0, 
+       }},
+       {{
+          0,    0,    0,    0,    0,    0,    0,    0,  122,  122,  122, 
+        122,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
+          0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
+       }},
+       {{
+          0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
+          0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
+          0,    0,  220,  220,    0,    0,    0,    0,    0,    0, 
+       }},
+       {{
+          0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
+          0,    0,    0,    0,    0,    0,    0,    0,    0,    0,  220, 
+          0,  220,    0,  216,    0,    0,    0,    0,    0,    0, 
+       }},
+       {{
+          0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
+          0,    0,    0,    0,    0,    0,  129,  130,    0,  132,    0, 
+          0,    0,    0,    0,  130,  130,  130,  130,    0,    0, 
+       }},
+       {{
+        130,    0,  230,  230,    9,    0,  230,  230,    0,    0,    0, 
+          0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
+          0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
+       }},
+       {{
+          0,    0,    0,    0,    0,    0,  220,    0,    0,    0,    0, 
+          0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
+          0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
+       }},
+       {{
+          0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
+          0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
+          0,    7,    0,    9,    0,    0,    0,    0,    0,    0, 
+       }},
+       {{
+          0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
+          0,    0,    0,    0,    0,    0,    0,    9,    0,    0,    0, 
+          0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
+       }},
+       {{
+          0,    0,    0,    0,    0,    0,    0,    0,    0,  228,    0, 
+          0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
+          0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
+       }},
+       {{
+          0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
+          0,    0,    0,    0,    0,  230,  230,    1,    1,  230,  230, 
+        230,  230,    1,    1,    1,  230,  230,    0,    0,    0, 
+       }},
+       {{
+          0,  230,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
+          0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
+          0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
+       }},
+       {{
+          0,    0,    0,    0,    0,    0,    0,    0,    0,    0,  218, 
+        228,  232,  222,  224,  224,    0,    0,    0,    0,    0,    0, 
+          0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
+       }},
+       {{
+          0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
+          0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
+          0,    0,    0,    8,    8,    0,    0,    0,    0,    0, 
+       }},
+       {{
+          0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
+          0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
+          0,    0,    0,    0,    0,    0,    0,    0,   26,    0, 
+       }},
+       {{
+        230,  230,  230,  230,    0,    0,    0,    0,    0,    0,    0, 
+          0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
+          0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
+       }},
+       {{
+          0,    0,    0,    0,    0,  216,  216,    1,    1,    1,    0, 
+          0,    0,  226,  216,  216,  216,  216,  216,    0,    0,    0, 
+          0,    0,    0,    0,    0,  220,  220,  220,  220,  220, 
+       }},
+       {{
+        220,  220,  220,    0,    0,  230,  230,  230,  230,  230,  220, 
+        220,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
+          0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
+       }},
+       {{
+          0,    0,    0,    0,    0,    0,    0,    0,    0,    0,  230, 
+        230,  230,  230,    0,    0,    0,    0,    0,    0,    0,    0, 
+          0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
+       }},
+};
+
+/*
+ * Canonical Composition
+ */
+
+#define CANON_COMPOSE_BITS_0   9
+#define CANON_COMPOSE_BITS_1   7
+#define CANON_COMPOSE_BITS_2   5
+
+static const unsigned short v310_compose_imap[] = {
+         272,   400,   528,   656,   784,   784,   784,   784, 
+         784,   784,   784,   784,   784,   784,   784,   784, 
+         784,   784,   784,   784,   784,   784,   784,   784, 
+         784,   784,   784,   784,   784,   784,   784,   784, 
+         784,   784,   784,   784,   784,   784,   784,   784, 
+         784,   784,   784,   784,   784,   784,   784,   784, 
+         784,   784,   784,   784,   784,   784,   784,   784, 
+         784,   784,   784,   784,   784,   784,   784,   784, 
+         784,   784,   784,   784,   784,   784,   784,   784, 
+         784,   784,   784,   784,   784,   784,   784,   784, 
+         784,   784,   784,   784,   784,   784,   784,   784, 
+         784,   784,   784,   784,   784,   784,   784,   784, 
+         784,   784,   784,   784,   784,   784,   784,   784, 
+         784,   784,   784,   784,   784,   784,   784,   784, 
+         784,   784,   784,   784,   784,   784,   784,   784, 
+         784,   784,   784,   784,   784,   784,   784,   784, 
+         784,   784,   784,   784,   784,   784,   784,   784, 
+         784,   784,   784,   784,   784,   784,   784,   784, 
+         784,   784,   784,   784,   784,   784,   784,   784, 
+         784,   784,   784,   784,   784,   784,   784,   784, 
+         784,   784,   784,   784,   784,   784,   784,   784, 
+         784,   784,   784,   784,   784,   784,   784,   784, 
+         784,   784,   784,   784,   784,   784,   784,   784, 
+         784,   784,   784,   784,   784,   784,   784,   784, 
+         784,   784,   784,   784,   784,   784,   784,   784, 
+         784,   784,   784,   784,   784,   784,   784,   784, 
+         784,   784,   784,   784,   784,   784,   784,   784, 
+         784,   784,   784,   784,   784,   784,   784,   784, 
+         784,   784,   784,   784,   784,   784,   784,   784, 
+         784,   784,   784,   784,   784,   784,   784,   784, 
+         784,   784,   784,   784,   784,   784,   784,   784, 
+         784,   784,   784,   784,   784,   784,   784,   784, 
+         784,   784,   784,   784,   784,   784,   784,   784, 
+         784,   784,   784,   784,   784,   784,   784,   784, 
+           0,     1,     2,     3,     0,     4,     5,     6, 
+           7,     0,     8,     9,     0,    10,     0,    11, 
+           0,    12,     0,     0,    13,     0,     0,     0, 
+           0,     0,     0,     0,    14,    15,    16,     0, 
+          17,    18,    19,    20,     0,     0,    21,    22, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,    23,    24,     0,     0,     0,    25,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,    26,     0,     0,     0,     0,    27,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,    28,     0,    29,     0,    30,     0, 
+           0,     0,    31,     0,     0,    32,    33,     0, 
+           0,     0,    34,     0,     0,     0,    35,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,    36,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,    37,    38,    39,     0,    40,    41,     0, 
+          42,    43,    44,    45,     0,    46,    47,    48, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,    49,     0,    50,     0, 
+          51,    52,    53,    54,    55,    56,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,    57,    58,    59,    60,    61,    62, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+};
+
+static const struct {
+       unsigned long tbl[32];
+} v310_compose_table[] = {
+       {{
+              0,        0,        0,        0,        0,        0,        0, 
+              0,        0,        0,        0,        0,        0,        0, 
+              0,        0,        0,        0,        0,        0,        0, 
+              0,        0,        0,        0,        0,        0,        0, 
+              0,        0,        0,        0, 
+       }},
+       {{
+              0,        0,        0,        0,        0,        0,        0, 
+              0,        0,        0,        0,        0,        0,        0, 
+              0,        0,        0,        0,        0,        0,        0, 
+              0,        0,        0,        0,        0,        0,        0, 
+          65537,    65538,    65539,        0, 
+       }},
+       {{
+              0,  1048580,   196628,   327703,   393244,  1114146,    65587, 
+         458804,   458811,   983106,    65617,   327762,   393303,   196701, 
+         589920,  1048681,   131193,        0,   524411,   458883,   458890, 
+        1245329,   131236,   393382,   131244,   589998,   393399,        0, 
+              0,        0,        0,        0, 
+       }},
+       {{
+              0,  1048765,   196813,   327888,   393429,  1114331,    65772, 
+         458989,   524532,   917756,   131338,   327948,   393489,   196887, 
+         590106,  1048867,   131379,        0,   524597,   459069,   524612, 
+        1245516,   131423,   459105,   131432,   655722,   393588,        0, 
+              0,        0,        0,        0, 
+       }},
+       {{
+              0,        0,        0,        0,        0,        0,        0, 
+              0,   196986,        0,        0,        0,        0,        0, 
+              0,        0,        0,        0,        0,        0,        0, 
+              0,        0,        0,        0,        0,        0,        0, 
+              0,        0,        0,        0, 
+       }},
+       {{
+              0,        0,   262525,        0,    65921,    65922,   131459, 
+          65925,        0,        0,   262534,        0,        0,        0, 
+              0,    65930,        0,        0,        0,        0,   262539, 
+         197007,    65938,        0,    65939,        0,        0,        0, 
+         262548,        0,        0,        0, 
+       }},
+       {{
+              0,        0,   262552,        0,    65948,    65949,   131486, 
+          65952,        0,        0,   262561,        0,        0,        0, 
+              0,    65957,        0,        0,        0,        0,   262566, 
+         197034,    65965,        0,    65966,        0,        0,        0, 
+         262575,        0,        0,        0, 
+       }},
+       {{
+              0,        0,   262579,   262583,        0,        0,        0, 
+              0,        0,        0,        0,        0,        0,        0, 
+              0,        0,        0,        0,   131515,   131517,        0, 
+              0,        0,        0,        0,        0,        0,        0, 
+              0,        0,        0,        0, 
+       }},
+       {{
+              0,        0,        0,        0,        0,        0,        0, 
+              0,        0,        0,        0,        0,   131519,   131521, 
+              0,        0,        0,        0,        0,        0,        0, 
+              0,        0,        0,        0,        0,    65987,    65988, 
+              0,        0,        0,        0, 
+       }},
+       {{
+          65989,    65990,        0,        0,        0,        0,        0, 
+              0,    65991,    65992,    65993,    65994,        0,        0, 
+              0,        0,        0,        0,        0,        0,        0, 
+              0,        0,        0,        0,        0,        0,        0, 
+              0,        0,        0,    65995, 
+       }},
+       {{
+         328140,   328145,        0,        0,        0,        0,        0, 
+              0,        0,        0,        0,        0,        0,        0, 
+              0,   328150,   328155,        0,        0,        0,        0, 
+              0,        0,    66016,        0,        0,        0,        0, 
+              0,        0,        0,        0, 
+       }},
+       {{
+              0,        0,        0,        0,        0,        0,        0, 
+              0,        0,        0,    66017,    66018,        0,        0, 
+              0,        0,        0,        0,        0,        0,        0, 
+              0,        0,        0,        0,        0,        0,        0, 
+              0,        0,        0,        0, 
+       }},
+       {{
+              0,        0,        0,        0,        0,        0,    66019, 
+          66020,    66021,    66022,        0,        0,        0,        0, 
+          66023,    66024,        0,        0,        0,        0,        0, 
+              0,        0,        0,        0,        0,        0,        0, 
+              0,        0,        0,        0, 
+       }},
+       {{
+              0,        0,        0,        0,        0,        0,        0, 
+              0,        0,        0,        0,        0,        0,        0, 
+              0,        0,        0,        0,    66025,        0,        0, 
+              0,        0,        0,        0,        0,        0,        0, 
+              0,        0,        0,        0, 
+       }},
+       {{
+              0,        0,        0,        0,        0,        0,        0, 
+              0,        0,        0,        0,        0,        0,        0, 
+              0,        0,        0,   459242,        0,        0,        0, 
+         262641,        0,   328181,        0,   459258,        0,        0, 
+              0,        0,        0,   262657, 
+       }},
+       {{
+              0,    66053,        0,        0,        0,   393734,        0, 
+              0,        0,   328204,        0,        0,    66065,        0, 
+          66066,        0,        0,   524819,        0,        0,        0, 
+         262683,        0,   393759,        0,   524837,        0,        0, 
+              0,        0,        0,   262701, 
+       }},
+       {{
+              0,   131633,        0,        0,        0,   524851,        0, 
+              0,        0,   393787,   197185,   197188,        0,        0, 
+          66119,        0,        0,        0,   131656,        0,        0, 
+              0,        0,        0,        0,        0,        0,        0, 
+              0,        0,        0,        0, 
+       }},
+       {{
+              0,        0,        0,        0,        0,        0,    66122, 
+              0,        0,        0,        0,        0,        0,        0, 
+              0,        0,   131659,        0,        0,    66125,        0, 
+         197198,   131665,    66131,   262740,        0,    66136,        0, 
+              0,        0,    66137,        0, 
+       }},
+       {{
+              0,        0,        0,   262746,        0,        0,        0, 
+          66142,        0,        0,        0,    66143,        0,    66144, 
+              0,        0,   131681,        0,        0,    66147,        0, 
+         197220,   131687,    66153,   262762,        0,    66158,        0, 
+              0,        0,    66159,        0, 
+       }},
+       {{
+              0,        0,        0,   262768,        0,        0,        0, 
+          66164,        0,        0,        0,    66165,        0,    66166, 
+              0,        0,        0,        0,        0,        0,        0, 
+              0,    66167,        0,        0,        0,        0,        0, 
+              0,        0,        0,        0, 
+       }},
+       {{
+              0,        0,        0,        0,        0,        0,        0, 
+              0,        0,        0,        0,        0,        0,        0, 
+              0,        0,        0,        0,        0,        0,    66168, 
+          66169,        0,        0,        0,        0,        0,        0, 
+              0,        0,        0,        0, 
+       }},
+       {{
+              0,        0,        0,        0,        0,        0,        0, 
+              0,        0,        0,        0,        0,        0,        0, 
+              0,        0,        0,        0,        0,        0,        0, 
+              0,        0,        0,    66170,    66171,        0,        0, 
+              0,        0,        0,        0, 
+       }},
+       {{
+              0,        0,        0,        0,        0,        0,        0, 
+              0,    66172,    66173,        0,        0,        0,        0, 
+              0,        0,        0,        0,        0,        0,        0, 
+              0,        0,        0,        0,        0,        0,        0, 
+              0,        0,        0,        0, 
+       }},
+       {{
+              0,        0,        0,        0,        0,        0,        0, 
+         197246,        0,        0,        0,        0,        0,        0, 
+              0,        0,        0,        0,        0,        0,        0, 
+              0,        0,        0,        0,        0,        0,        0, 
+              0,        0,        0,        0, 
+       }},
+       {{
+              0,        0,        0,        0,        0,        0,        0, 
+              0,    66177,        0,    66178,        0,        0,        0, 
+              0,        0,        0,        0,        0,        0,        0, 
+              0,        0,        0,        0,        0,        0,        0, 
+              0,        0,        0,        0, 
+       }},
+       {{
+              0,    66179,        0,        0,        0,        0,        0, 
+              0,        0,        0,        0,        0,        0,        0, 
+              0,        0,        0,        0,    66180,        0,        0, 
+          66181,        0,        0,        0,        0,        0,        0, 
+              0,        0,        0,        0, 
+       }},
+       {{
+              0,        0,        0,        0,        0,        0,        0, 
+              0,    66182,        0,        0,        0,        0,        0, 
+              0,        0,    66183,        0,        0,    66184,        0, 
+              0,        0,        0,        0,        0,        0,        0, 
+              0,        0,        0,        0, 
+       }},
+       {{
+              0,        0,        0,        0,        0,        0,        0, 
+         131721,        0,        0,        0,        0,        0,        0, 
+              0,        0,        0,        0,        0,        0,        0, 
+              0,        0,        0,        0,        0,        0,        0, 
+              0,        0,        0,        0, 
+       }},
+       {{
+              0,        0,        0,        0,        0,        0,        0, 
+         197259,        0,        0,        0,        0,        0,        0, 
+              0,        0,        0,        0,        0,        0,        0, 
+              0,        0,        0,        0,        0,        0,        0, 
+              0,        0,        0,        0, 
+       }},
+       {{
+              0,        0,        0,        0,        0,        0,        0, 
+              0,        0,        0,        0,        0,        0,        0, 
+              0,        0,        0,        0,    66190,        0,        0, 
+              0,        0,        0,        0,        0,        0,        0, 
+              0,        0,        0,        0, 
+       }},
+       {{
+              0,        0,        0,        0,        0,        0,   131727, 
+          66193,        0,        0,        0,        0,        0,        0, 
+              0,        0,        0,        0,        0,        0,        0, 
+              0,        0,        0,        0,        0,        0,        0, 
+              0,        0,        0,        0, 
+       }},
+       {{
+              0,        0,        0,        0,        0,        0,    66194, 
+              0,        0,        0,        0,        0,        0,        0, 
+              0,        0,        0,        0,        0,        0,        0, 
+              0,        0,        0,        0,        0,        0,        0, 
+              0,        0,        0,        0, 
+       }},
+       {{
+              0,        0,        0,        0,        0,        0,        0, 
+              0,        0,        0,        0,        0,        0,        0, 
+              0,        0,        0,        0,        0,        0,        0, 
+              0,        0,        0,        0,        0,        0,        0, 
+              0,        0,        0,    66195, 
+       }},
+       {{
+              0,        0,        0,        0,        0,        0,   197268, 
+              0,        0,        0,    66199,        0,        0,        0, 
+              0,        0,        0,        0,        0,        0,        0, 
+              0,        0,        0,        0,        0,        0,        0, 
+              0,        0,        0,        0, 
+       }},
+       {{
+              0,        0,        0,        0,        0,        0,   131736, 
+          66202,        0,        0,        0,        0,        0,        0, 
+              0,        0,        0,        0,        0,        0,        0, 
+              0,        0,        0,        0,        0,        0,        0, 
+              0,        0,        0,        0, 
+       }},
+       {{
+              0,        0,        0,        0,        0,        0,        0, 
+              0,        0,        0,        0,        0,        0,        0, 
+              0,        0,        0,        0,        0,        0,        0, 
+              0,        0,        0,        0,   197275,        0,        0, 
+          66206,        0,        0,        0, 
+       }},
+       {{
+              0,        0,        0,        0,        0,    66207,        0, 
+              0,        0,        0,        0,        0,        0,        0, 
+              0,        0,        0,        0,        0,        0,        0, 
+              0,        0,        0,        0,        0,        0,        0, 
+              0,        0,        0,        0, 
+       }},
+       {{
+              0,        0,        0,        0,        0,        0,        0, 
+              0,        0,        0,        0,        0,        0,        0, 
+              0,        0,        0,        0,        0,        0,        0, 
+              0,    66208,    66209,        0,        0,        0,        0, 
+              0,        0,        0,        0, 
+       }},
+       {{
+              0,        0,        0,        0,        0,        0,        0, 
+              0,        0,        0,        0,        0,        0,        0, 
+              0,        0,        0,        0,        0,        0,        0, 
+              0,        0,        0,        0,        0,    66210,    66211, 
+              0,        0,        0,        0, 
+       }},
+       {{
+              0,        0,    66212,    66213,        0,        0,        0, 
+              0,        0,        0,        0,        0,        0,        0, 
+              0,        0,        0,        0,        0,        0,        0, 
+              0,        0,        0,        0,        0,        0,        0, 
+              0,        0,        0,        0, 
+       }},
+       {{
+         131750,   131752,        0,        0,        0,        0,        0, 
+              0,        0,        0,        0,        0,        0,        0, 
+              0,        0,        0,        0,        0,        0,        0, 
+              0,        0,        0,    66218,    66219,        0,        0, 
+              0,        0,        0,        0, 
+       }},
+       {{
+              0,        0,        0,        0,        0,        0,        0, 
+              0,        0,        0,        0,        0,    66220,    66221, 
+              0,        0,        0,        0,        0,        0,        0, 
+              0,        0,        0,        0,        0,        0,        0, 
+              0,        0,        0,        0, 
+       }},
+       {{
+         262830,   262834,    66230,    66231,    66232,    66233,    66234, 
+          66235,   262844,   262848,    66244,    66245,    66246,    66247, 
+          66248,    66249,   131786,   131788,        0,        0,        0, 
+              0,        0,        0,   131790,   131792,        0,        0, 
+              0,        0,        0,        0, 
+       }},
+       {{
+         262866,   262870,    66266,    66267,    66268,    66269,    66270, 
+          66271,   262880,   262884,    66280,    66281,    66282,    66283, 
+          66284,    66285,   197358,   197361,        0,        0,        0, 
+              0,        0,        0,   197364,   197367,        0,        0, 
+              0,        0,        0,        0, 
+       }},
+       {{
+         131834,   131836,        0,        0,        0,        0,        0, 
+              0,   131838,   131840,        0,        0,        0,        0, 
+              0,        0,   197378,   197381,        0,        0,        0, 
+              0,        0,        0,        0,   197384,        0,        0, 
+              0,        0,        0,        0, 
+       }},
+       {{
+         262923,   262927,    66323,    66324,    66325,    66326,    66327, 
+          66328,   262937,   262941,    66337,    66338,    66339,    66340, 
+          66341,    66342,    66343,        0,        0,        0,    66344, 
+              0,        0,        0,        0,        0,        0,        0, 
+          66345,        0,        0,        0, 
+       }},
+       {{
+              0,        0,        0,        0,        0,        0,        0, 
+              0,        0,        0,        0,        0,        0,        0, 
+              0,        0,        0,        0,        0,        0,        0, 
+              0,    66346,        0,        0,        0,        0,        0, 
+              0,        0,        0,   197419, 
+       }},
+       {{
+              0,        0,        0,        0,        0,        0,    66350, 
+              0,        0,        0,        0,        0,        0,        0, 
+              0,        0,        0,        0,        0,        0,        0, 
+              0,        0,        0,        0,        0,        0,        0, 
+              0,        0,        0,        0, 
+       }},
+       {{
+              0,        0,        0,        0,        0,        0,        0, 
+              0,        0,        0,        0,        0,        0,        0, 
+              0,        0,        0,        0,        0,        0,        0, 
+              0,    66351,        0,        0,        0,        0,        0, 
+              0,        0,   197424,        0, 
+       }},
+       {{
+              0,        0,        0,        0,        0,        0,        0, 
+              0,        0,        0,        0,        0,        0,        0, 
+              0,        0,    66355,        0,    66356,        0,    66357, 
+              0,        0,        0,        0,        0,        0,        0, 
+              0,        0,        0,        0, 
+       }},
+       {{
+              0,        0,        0,        0,        0,        0,        0, 
+              0,        0,        0,        0,        0,        0,        0, 
+              0,        0,    66358,        0,    66359,        0,    66360, 
+              0,        0,        0,        0,        0,        0,        0, 
+              0,        0,        0,        0, 
+       }},
+       {{
+              0,        0,        0,    66361,        0,        0,        0, 
+              0,    66362,        0,        0,    66363,        0,        0, 
+              0,        0,        0,        0,        0,        0,        0, 
+              0,        0,        0,        0,        0,        0,        0, 
+              0,        0,        0,        0, 
+       }},
+       {{
+              0,        0,        0,    66364,        0,    66365,        0, 
+              0,        0,        0,        0,        0,        0,        0, 
+              0,        0,        0,        0,        0,        0,        0, 
+              0,        0,        0,        0,        0,        0,        0, 
+          66366,        0,        0,        0, 
+       }},
+       {{
+              0,        0,        0,    66367,        0,    66368,        0, 
+              0,    66369,        0,        0,        0,        0,    66370, 
+              0,        0,        0,        0,        0,        0,        0, 
+              0,        0,        0,        0,        0,        0,        0, 
+              0,        0,        0,        0, 
+       }},
+       {{
+              0,    66371,        0,        0,    66372,    66373,        0, 
+              0,        0,        0,        0,        0,        0,        0, 
+              0,        0,        0,        0,    66374,    66375,        0, 
+              0,    66376,    66377,        0,        0,    66378,    66379, 
+          66380,    66381,        0,        0, 
+       }},
+       {{
+              0,        0,    66382,    66383,        0,        0,    66384, 
+          66385,        0,        0,        0,        0,        0,        0, 
+              0,        0,        0,    66386,    66387,        0,        0, 
+              0,        0,        0,        0,        0,        0,        0, 
+              0,        0,        0,        0, 
+       }},
+       {{
+              0,        0,    66388,        0,        0,        0,        0, 
+              0,    66389,    66390,        0,    66391,        0,        0, 
+              0,        0,        0,        0,    66392,    66393,    66394, 
+          66395,        0,        0,        0,        0,        0,        0, 
+              0,        0,        0,        0, 
+       }},
+       {{
+              0,        0,        0,        0,        0,        0,    66396, 
+              0,        0,        0,        0,    66397,        0,    66398, 
+              0,    66399,        0,    66400,        0,    66401,        0, 
+          66402,        0,    66403,        0,    66404,        0,    66405, 
+              0,    66406,        0,    66407, 
+       }},
+       {{
+              0,    66408,        0,        0,    66409,        0,    66410, 
+              0,    66411,        0,        0,        0,        0,        0, 
+              0,   131948,        0,        0,   131950,        0,        0, 
+         131952,        0,        0,   131954,        0,        0,   131956, 
+              0,        0,        0,        0, 
+       }},
+       {{
+              0,        0,        0,        0,        0,        0,        0, 
+              0,        0,        0,        0,        0,        0,        0, 
+              0,        0,        0,        0,        0,        0,        0, 
+              0,        0,        0,        0,        0,        0,        0, 
+              0,    66422,        0,        0, 
+       }},
+       {{
+              0,        0,        0,        0,        0,        0,    66423, 
+              0,        0,        0,        0,    66424,        0,    66425, 
+              0,    66426,        0,    66427,        0,    66428,        0, 
+          66429,        0,    66430,        0,    66431,        0,    66432, 
+              0,    66433,        0,    66434, 
+       }},
+       {{
+              0,    66435,        0,        0,    66436,        0,    66437, 
+              0,    66438,        0,        0,        0,        0,        0, 
+              0,   131975,        0,        0,   131977,        0,        0, 
+         131979,        0,        0,   131981,        0,        0,   131983, 
+              0,        0,        0,        0, 
+       }},
+       {{
+              0,        0,        0,        0,        0,        0,        0, 
+              0,        0,        0,        0,        0,        0,        0, 
+              0,    66449,    66450,    66451,    66452,        0,        0, 
+              0,        0,        0,        0,        0,        0,        0, 
+              0,    66453,        0,        0, 
+       }},
+};
+
+static const struct composition v310_compose_seq[] = {
+       { 0x00000000, 0x00000000 }, { 0x00000338, 0x0000226e }, 
+       { 0x00000338, 0x00002260 }, { 0x00000338, 0x0000226f }, 
+       { 0x00000300, 0x000000c0 }, { 0x00000301, 0x000000c1 }, 
+       { 0x00000302, 0x000000c2 }, { 0x00000303, 0x000000c3 }, 
+       { 0x00000304, 0x00000100 }, { 0x00000306, 0x00000102 }, 
+       { 0x00000307, 0x00000226 }, { 0x00000308, 0x000000c4 }, 
+       { 0x00000309, 0x00001ea2 }, { 0x0000030a, 0x000000c5 }, 
+       { 0x0000030c, 0x000001cd }, { 0x0000030f, 0x00000200 }, 
+       { 0x00000311, 0x00000202 }, { 0x00000323, 0x00001ea0 }, 
+       { 0x00000325, 0x00001e00 }, { 0x00000328, 0x00000104 }, 
+       { 0x00000307, 0x00001e02 }, { 0x00000323, 0x00001e04 }, 
+       { 0x00000331, 0x00001e06 }, { 0x00000301, 0x00000106 }, 
+       { 0x00000302, 0x00000108 }, { 0x00000307, 0x0000010a }, 
+       { 0x0000030c, 0x0000010c }, { 0x00000327, 0x000000c7 }, 
+       { 0x00000307, 0x00001e0a }, { 0x0000030c, 0x0000010e }, 
+       { 0x00000323, 0x00001e0c }, { 0x00000327, 0x00001e10 }, 
+       { 0x0000032d, 0x00001e12 }, { 0x00000331, 0x00001e0e }, 
+       { 0x00000300, 0x000000c8 }, { 0x00000301, 0x000000c9 }, 
+       { 0x00000302, 0x000000ca }, { 0x00000303, 0x00001ebc }, 
+       { 0x00000304, 0x00000112 }, { 0x00000306, 0x00000114 }, 
+       { 0x00000307, 0x00000116 }, { 0x00000308, 0x000000cb }, 
+       { 0x00000309, 0x00001eba }, { 0x0000030c, 0x0000011a }, 
+       { 0x0000030f, 0x00000204 }, { 0x00000311, 0x00000206 }, 
+       { 0x00000323, 0x00001eb8 }, { 0x00000327, 0x00000228 }, 
+       { 0x00000328, 0x00000118 }, { 0x0000032d, 0x00001e18 }, 
+       { 0x00000330, 0x00001e1a }, { 0x00000307, 0x00001e1e }, 
+       { 0x00000301, 0x000001f4 }, { 0x00000302, 0x0000011c }, 
+       { 0x00000304, 0x00001e20 }, { 0x00000306, 0x0000011e }, 
+       { 0x00000307, 0x00000120 }, { 0x0000030c, 0x000001e6 }, 
+       { 0x00000327, 0x00000122 }, { 0x00000302, 0x00000124 }, 
+       { 0x00000307, 0x00001e22 }, { 0x00000308, 0x00001e26 }, 
+       { 0x0000030c, 0x0000021e }, { 0x00000323, 0x00001e24 }, 
+       { 0x00000327, 0x00001e28 }, { 0x0000032e, 0x00001e2a }, 
+       { 0x00000300, 0x000000cc }, { 0x00000301, 0x000000cd }, 
+       { 0x00000302, 0x000000ce }, { 0x00000303, 0x00000128 }, 
+       { 0x00000304, 0x0000012a }, { 0x00000306, 0x0000012c }, 
+       { 0x00000307, 0x00000130 }, { 0x00000308, 0x000000cf }, 
+       { 0x00000309, 0x00001ec8 }, { 0x0000030c, 0x000001cf }, 
+       { 0x0000030f, 0x00000208 }, { 0x00000311, 0x0000020a }, 
+       { 0x00000323, 0x00001eca }, { 0x00000328, 0x0000012e }, 
+       { 0x00000330, 0x00001e2c }, { 0x00000302, 0x00000134 }, 
+       { 0x00000301, 0x00001e30 }, { 0x0000030c, 0x000001e8 }, 
+       { 0x00000323, 0x00001e32 }, { 0x00000327, 0x00000136 }, 
+       { 0x00000331, 0x00001e34 }, { 0x00000301, 0x00000139 }, 
+       { 0x0000030c, 0x0000013d }, { 0x00000323, 0x00001e36 }, 
+       { 0x00000327, 0x0000013b }, { 0x0000032d, 0x00001e3c }, 
+       { 0x00000331, 0x00001e3a }, { 0x00000301, 0x00001e3e }, 
+       { 0x00000307, 0x00001e40 }, { 0x00000323, 0x00001e42 }, 
+       { 0x00000300, 0x000001f8 }, { 0x00000301, 0x00000143 }, 
+       { 0x00000303, 0x000000d1 }, { 0x00000307, 0x00001e44 }, 
+       { 0x0000030c, 0x00000147 }, { 0x00000323, 0x00001e46 }, 
+       { 0x00000327, 0x00000145 }, { 0x0000032d, 0x00001e4a }, 
+       { 0x00000331, 0x00001e48 }, { 0x00000300, 0x000000d2 }, 
+       { 0x00000301, 0x000000d3 }, { 0x00000302, 0x000000d4 }, 
+       { 0x00000303, 0x000000d5 }, { 0x00000304, 0x0000014c }, 
+       { 0x00000306, 0x0000014e }, { 0x00000307, 0x0000022e }, 
+       { 0x00000308, 0x000000d6 }, { 0x00000309, 0x00001ece }, 
+       { 0x0000030b, 0x00000150 }, { 0x0000030c, 0x000001d1 }, 
+       { 0x0000030f, 0x0000020c }, { 0x00000311, 0x0000020e }, 
+       { 0x0000031b, 0x000001a0 }, { 0x00000323, 0x00001ecc }, 
+       { 0x00000328, 0x000001ea }, { 0x00000301, 0x00001e54 }, 
+       { 0x00000307, 0x00001e56 }, { 0x00000301, 0x00000154 }, 
+       { 0x00000307, 0x00001e58 }, { 0x0000030c, 0x00000158 }, 
+       { 0x0000030f, 0x00000210 }, { 0x00000311, 0x00000212 }, 
+       { 0x00000323, 0x00001e5a }, { 0x00000327, 0x00000156 }, 
+       { 0x00000331, 0x00001e5e }, { 0x00000301, 0x0000015a }, 
+       { 0x00000302, 0x0000015c }, { 0x00000307, 0x00001e60 }, 
+       { 0x0000030c, 0x00000160 }, { 0x00000323, 0x00001e62 }, 
+       { 0x00000326, 0x00000218 }, { 0x00000327, 0x0000015e }, 
+       { 0x00000307, 0x00001e6a }, { 0x0000030c, 0x00000164 }, 
+       { 0x00000323, 0x00001e6c }, { 0x00000326, 0x0000021a }, 
+       { 0x00000327, 0x00000162 }, { 0x0000032d, 0x00001e70 }, 
+       { 0x00000331, 0x00001e6e }, { 0x00000300, 0x000000d9 }, 
+       { 0x00000301, 0x000000da }, { 0x00000302, 0x000000db }, 
+       { 0x00000303, 0x00000168 }, { 0x00000304, 0x0000016a }, 
+       { 0x00000306, 0x0000016c }, { 0x00000308, 0x000000dc }, 
+       { 0x00000309, 0x00001ee6 }, { 0x0000030a, 0x0000016e }, 
+       { 0x0000030b, 0x00000170 }, { 0x0000030c, 0x000001d3 }, 
+       { 0x0000030f, 0x00000214 }, { 0x00000311, 0x00000216 }, 
+       { 0x0000031b, 0x000001af }, { 0x00000323, 0x00001ee4 }, 
+       { 0x00000324, 0x00001e72 }, { 0x00000328, 0x00000172 }, 
+       { 0x0000032d, 0x00001e76 }, { 0x00000330, 0x00001e74 }, 
+       { 0x00000303, 0x00001e7c }, { 0x00000323, 0x00001e7e }, 
+       { 0x00000300, 0x00001e80 }, { 0x00000301, 0x00001e82 }, 
+       { 0x00000302, 0x00000174 }, { 0x00000307, 0x00001e86 }, 
+       { 0x00000308, 0x00001e84 }, { 0x00000323, 0x00001e88 }, 
+       { 0x00000307, 0x00001e8a }, { 0x00000308, 0x00001e8c }, 
+       { 0x00000300, 0x00001ef2 }, { 0x00000301, 0x000000dd }, 
+       { 0x00000302, 0x00000176 }, { 0x00000303, 0x00001ef8 }, 
+       { 0x00000304, 0x00000232 }, { 0x00000307, 0x00001e8e }, 
+       { 0x00000308, 0x00000178 }, { 0x00000309, 0x00001ef6 }, 
+       { 0x00000323, 0x00001ef4 }, { 0x00000301, 0x00000179 }, 
+       { 0x00000302, 0x00001e90 }, { 0x00000307, 0x0000017b }, 
+       { 0x0000030c, 0x0000017d }, { 0x00000323, 0x00001e92 }, 
+       { 0x00000331, 0x00001e94 }, { 0x00000300, 0x000000e0 }, 
+       { 0x00000301, 0x000000e1 }, { 0x00000302, 0x000000e2 }, 
+       { 0x00000303, 0x000000e3 }, { 0x00000304, 0x00000101 }, 
+       { 0x00000306, 0x00000103 }, { 0x00000307, 0x00000227 }, 
+       { 0x00000308, 0x000000e4 }, { 0x00000309, 0x00001ea3 }, 
+       { 0x0000030a, 0x000000e5 }, { 0x0000030c, 0x000001ce }, 
+       { 0x0000030f, 0x00000201 }, { 0x00000311, 0x00000203 }, 
+       { 0x00000323, 0x00001ea1 }, { 0x00000325, 0x00001e01 }, 
+       { 0x00000328, 0x00000105 }, { 0x00000307, 0x00001e03 }, 
+       { 0x00000323, 0x00001e05 }, { 0x00000331, 0x00001e07 }, 
+       { 0x00000301, 0x00000107 }, { 0x00000302, 0x00000109 }, 
+       { 0x00000307, 0x0000010b }, { 0x0000030c, 0x0000010d }, 
+       { 0x00000327, 0x000000e7 }, { 0x00000307, 0x00001e0b }, 
+       { 0x0000030c, 0x0000010f }, { 0x00000323, 0x00001e0d }, 
+       { 0x00000327, 0x00001e11 }, { 0x0000032d, 0x00001e13 }, 
+       { 0x00000331, 0x00001e0f }, { 0x00000300, 0x000000e8 }, 
+       { 0x00000301, 0x000000e9 }, { 0x00000302, 0x000000ea }, 
+       { 0x00000303, 0x00001ebd }, { 0x00000304, 0x00000113 }, 
+       { 0x00000306, 0x00000115 }, { 0x00000307, 0x00000117 }, 
+       { 0x00000308, 0x000000eb }, { 0x00000309, 0x00001ebb }, 
+       { 0x0000030c, 0x0000011b }, { 0x0000030f, 0x00000205 }, 
+       { 0x00000311, 0x00000207 }, { 0x00000323, 0x00001eb9 }, 
+       { 0x00000327, 0x00000229 }, { 0x00000328, 0x00000119 }, 
+       { 0x0000032d, 0x00001e19 }, { 0x00000330, 0x00001e1b }, 
+       { 0x00000307, 0x00001e1f }, { 0x00000301, 0x000001f5 }, 
+       { 0x00000302, 0x0000011d }, { 0x00000304, 0x00001e21 }, 
+       { 0x00000306, 0x0000011f }, { 0x00000307, 0x00000121 }, 
+       { 0x0000030c, 0x000001e7 }, { 0x00000327, 0x00000123 }, 
+       { 0x00000302, 0x00000125 }, { 0x00000307, 0x00001e23 }, 
+       { 0x00000308, 0x00001e27 }, { 0x0000030c, 0x0000021f }, 
+       { 0x00000323, 0x00001e25 }, { 0x00000327, 0x00001e29 }, 
+       { 0x0000032e, 0x00001e2b }, { 0x00000331, 0x00001e96 }, 
+       { 0x00000300, 0x000000ec }, { 0x00000301, 0x000000ed }, 
+       { 0x00000302, 0x000000ee }, { 0x00000303, 0x00000129 }, 
+       { 0x00000304, 0x0000012b }, { 0x00000306, 0x0000012d }, 
+       { 0x00000308, 0x000000ef }, { 0x00000309, 0x00001ec9 }, 
+       { 0x0000030c, 0x000001d0 }, { 0x0000030f, 0x00000209 }, 
+       { 0x00000311, 0x0000020b }, { 0x00000323, 0x00001ecb }, 
+       { 0x00000328, 0x0000012f }, { 0x00000330, 0x00001e2d }, 
+       { 0x00000302, 0x00000135 }, { 0x0000030c, 0x000001f0 }, 
+       { 0x00000301, 0x00001e31 }, { 0x0000030c, 0x000001e9 }, 
+       { 0x00000323, 0x00001e33 }, { 0x00000327, 0x00000137 }, 
+       { 0x00000331, 0x00001e35 }, { 0x00000301, 0x0000013a }, 
+       { 0x0000030c, 0x0000013e }, { 0x00000323, 0x00001e37 }, 
+       { 0x00000327, 0x0000013c }, { 0x0000032d, 0x00001e3d }, 
+       { 0x00000331, 0x00001e3b }, { 0x00000301, 0x00001e3f }, 
+       { 0x00000307, 0x00001e41 }, { 0x00000323, 0x00001e43 }, 
+       { 0x00000300, 0x000001f9 }, { 0x00000301, 0x00000144 }, 
+       { 0x00000303, 0x000000f1 }, { 0x00000307, 0x00001e45 }, 
+       { 0x0000030c, 0x00000148 }, { 0x00000323, 0x00001e47 }, 
+       { 0x00000327, 0x00000146 }, { 0x0000032d, 0x00001e4b }, 
+       { 0x00000331, 0x00001e49 }, { 0x00000300, 0x000000f2 }, 
+       { 0x00000301, 0x000000f3 }, { 0x00000302, 0x000000f4 }, 
+       { 0x00000303, 0x000000f5 }, { 0x00000304, 0x0000014d }, 
+       { 0x00000306, 0x0000014f }, { 0x00000307, 0x0000022f }, 
+       { 0x00000308, 0x000000f6 }, { 0x00000309, 0x00001ecf }, 
+       { 0x0000030b, 0x00000151 }, { 0x0000030c, 0x000001d2 }, 
+       { 0x0000030f, 0x0000020d }, { 0x00000311, 0x0000020f }, 
+       { 0x0000031b, 0x000001a1 }, { 0x00000323, 0x00001ecd }, 
+       { 0x00000328, 0x000001eb }, { 0x00000301, 0x00001e55 }, 
+       { 0x00000307, 0x00001e57 }, { 0x00000301, 0x00000155 }, 
+       { 0x00000307, 0x00001e59 }, { 0x0000030c, 0x00000159 }, 
+       { 0x0000030f, 0x00000211 }, { 0x00000311, 0x00000213 }, 
+       { 0x00000323, 0x00001e5b }, { 0x00000327, 0x00000157 }, 
+       { 0x00000331, 0x00001e5f }, { 0x00000301, 0x0000015b }, 
+       { 0x00000302, 0x0000015d }, { 0x00000307, 0x00001e61 }, 
+       { 0x0000030c, 0x00000161 }, { 0x00000323, 0x00001e63 }, 
+       { 0x00000326, 0x00000219 }, { 0x00000327, 0x0000015f }, 
+       { 0x00000307, 0x00001e6b }, { 0x00000308, 0x00001e97 }, 
+       { 0x0000030c, 0x00000165 }, { 0x00000323, 0x00001e6d }, 
+       { 0x00000326, 0x0000021b }, { 0x00000327, 0x00000163 }, 
+       { 0x0000032d, 0x00001e71 }, { 0x00000331, 0x00001e6f }, 
+       { 0x00000300, 0x000000f9 }, { 0x00000301, 0x000000fa }, 
+       { 0x00000302, 0x000000fb }, { 0x00000303, 0x00000169 }, 
+       { 0x00000304, 0x0000016b }, { 0x00000306, 0x0000016d }, 
+       { 0x00000308, 0x000000fc }, { 0x00000309, 0x00001ee7 }, 
+       { 0x0000030a, 0x0000016f }, { 0x0000030b, 0x00000171 }, 
+       { 0x0000030c, 0x000001d4 }, { 0x0000030f, 0x00000215 }, 
+       { 0x00000311, 0x00000217 }, { 0x0000031b, 0x000001b0 }, 
+       { 0x00000323, 0x00001ee5 }, { 0x00000324, 0x00001e73 }, 
+       { 0x00000328, 0x00000173 }, { 0x0000032d, 0x00001e77 }, 
+       { 0x00000330, 0x00001e75 }, { 0x00000303, 0x00001e7d }, 
+       { 0x00000323, 0x00001e7f }, { 0x00000300, 0x00001e81 }, 
+       { 0x00000301, 0x00001e83 }, { 0x00000302, 0x00000175 }, 
+       { 0x00000307, 0x00001e87 }, { 0x00000308, 0x00001e85 }, 
+       { 0x0000030a, 0x00001e98 }, { 0x00000323, 0x00001e89 }, 
+       { 0x00000307, 0x00001e8b }, { 0x00000308, 0x00001e8d }, 
+       { 0x00000300, 0x00001ef3 }, { 0x00000301, 0x000000fd }, 
+       { 0x00000302, 0x00000177 }, { 0x00000303, 0x00001ef9 }, 
+       { 0x00000304, 0x00000233 }, { 0x00000307, 0x00001e8f }, 
+       { 0x00000308, 0x000000ff }, { 0x00000309, 0x00001ef7 }, 
+       { 0x0000030a, 0x00001e99 }, { 0x00000323, 0x00001ef5 }, 
+       { 0x00000301, 0x0000017a }, { 0x00000302, 0x00001e91 }, 
+       { 0x00000307, 0x0000017c }, { 0x0000030c, 0x0000017e }, 
+       { 0x00000323, 0x00001e93 }, { 0x00000331, 0x00001e95 }, 
+       { 0x00000300, 0x00001fed }, { 0x00000301, 0x00000385 }, 
+       { 0x00000342, 0x00001fc1 }, { 0x00000300, 0x00001ea6 }, 
+       { 0x00000301, 0x00001ea4 }, { 0x00000303, 0x00001eaa }, 
+       { 0x00000309, 0x00001ea8 }, { 0x00000304, 0x000001de }, 
+       { 0x00000301, 0x000001fa }, { 0x00000301, 0x000001fc }, 
+       { 0x00000304, 0x000001e2 }, { 0x00000301, 0x00001e08 }, 
+       { 0x00000300, 0x00001ec0 }, { 0x00000301, 0x00001ebe }, 
+       { 0x00000303, 0x00001ec4 }, { 0x00000309, 0x00001ec2 }, 
+       { 0x00000301, 0x00001e2e }, { 0x00000300, 0x00001ed2 }, 
+       { 0x00000301, 0x00001ed0 }, { 0x00000303, 0x00001ed6 }, 
+       { 0x00000309, 0x00001ed4 }, { 0x00000301, 0x00001e4c }, 
+       { 0x00000304, 0x0000022c }, { 0x00000308, 0x00001e4e }, 
+       { 0x00000304, 0x0000022a }, { 0x00000301, 0x000001fe }, 
+       { 0x00000300, 0x000001db }, { 0x00000301, 0x000001d7 }, 
+       { 0x00000304, 0x000001d5 }, { 0x0000030c, 0x000001d9 }, 
+       { 0x00000300, 0x00001ea7 }, { 0x00000301, 0x00001ea5 }, 
+       { 0x00000303, 0x00001eab }, { 0x00000309, 0x00001ea9 }, 
+       { 0x00000304, 0x000001df }, { 0x00000301, 0x000001fb }, 
+       { 0x00000301, 0x000001fd }, { 0x00000304, 0x000001e3 }, 
+       { 0x00000301, 0x00001e09 }, { 0x00000300, 0x00001ec1 }, 
+       { 0x00000301, 0x00001ebf }, { 0x00000303, 0x00001ec5 }, 
+       { 0x00000309, 0x00001ec3 }, { 0x00000301, 0x00001e2f }, 
+       { 0x00000300, 0x00001ed3 }, { 0x00000301, 0x00001ed1 }, 
+       { 0x00000303, 0x00001ed7 }, { 0x00000309, 0x00001ed5 }, 
+       { 0x00000301, 0x00001e4d }, { 0x00000304, 0x0000022d }, 
+       { 0x00000308, 0x00001e4f }, { 0x00000304, 0x0000022b }, 
+       { 0x00000301, 0x000001ff }, { 0x00000300, 0x000001dc }, 
+       { 0x00000301, 0x000001d8 }, { 0x00000304, 0x000001d6 }, 
+       { 0x0000030c, 0x000001da }, { 0x00000300, 0x00001eb0 }, 
+       { 0x00000301, 0x00001eae }, { 0x00000303, 0x00001eb4 }, 
+       { 0x00000309, 0x00001eb2 }, { 0x00000300, 0x00001eb1 }, 
+       { 0x00000301, 0x00001eaf }, { 0x00000303, 0x00001eb5 }, 
+       { 0x00000309, 0x00001eb3 }, { 0x00000300, 0x00001e14 }, 
+       { 0x00000301, 0x00001e16 }, { 0x00000300, 0x00001e15 }, 
+       { 0x00000301, 0x00001e17 }, { 0x00000300, 0x00001e50 }, 
+       { 0x00000301, 0x00001e52 }, { 0x00000300, 0x00001e51 }, 
+       { 0x00000301, 0x00001e53 }, { 0x00000307, 0x00001e64 }, 
+       { 0x00000307, 0x00001e65 }, { 0x00000307, 0x00001e66 }, 
+       { 0x00000307, 0x00001e67 }, { 0x00000301, 0x00001e78 }, 
+       { 0x00000301, 0x00001e79 }, { 0x00000308, 0x00001e7a }, 
+       { 0x00000308, 0x00001e7b }, { 0x00000307, 0x00001e9b }, 
+       { 0x00000300, 0x00001edc }, { 0x00000301, 0x00001eda }, 
+       { 0x00000303, 0x00001ee0 }, { 0x00000309, 0x00001ede }, 
+       { 0x00000323, 0x00001ee2 }, { 0x00000300, 0x00001edd }, 
+       { 0x00000301, 0x00001edb }, { 0x00000303, 0x00001ee1 }, 
+       { 0x00000309, 0x00001edf }, { 0x00000323, 0x00001ee3 }, 
+       { 0x00000300, 0x00001eea }, { 0x00000301, 0x00001ee8 }, 
+       { 0x00000303, 0x00001eee }, { 0x00000309, 0x00001eec }, 
+       { 0x00000323, 0x00001ef0 }, { 0x00000300, 0x00001eeb }, 
+       { 0x00000301, 0x00001ee9 }, { 0x00000303, 0x00001eef }, 
+       { 0x00000309, 0x00001eed }, { 0x00000323, 0x00001ef1 }, 
+       { 0x0000030c, 0x000001ee }, { 0x00000304, 0x000001ec }, 
+       { 0x00000304, 0x000001ed }, { 0x00000304, 0x000001e0 }, 
+       { 0x00000304, 0x000001e1 }, { 0x00000306, 0x00001e1c }, 
+       { 0x00000306, 0x00001e1d }, { 0x00000304, 0x00000230 }, 
+       { 0x00000304, 0x00000231 }, { 0x0000030c, 0x000001ef }, 
+       { 0x00000300, 0x00001fba }, { 0x00000301, 0x00000386 }, 
+       { 0x00000304, 0x00001fb9 }, { 0x00000306, 0x00001fb8 }, 
+       { 0x00000313, 0x00001f08 }, { 0x00000314, 0x00001f09 }, 
+       { 0x00000345, 0x00001fbc }, { 0x00000300, 0x00001fc8 }, 
+       { 0x00000301, 0x00000388 }, { 0x00000313, 0x00001f18 }, 
+       { 0x00000314, 0x00001f19 }, { 0x00000300, 0x00001fca }, 
+       { 0x00000301, 0x00000389 }, { 0x00000313, 0x00001f28 }, 
+       { 0x00000314, 0x00001f29 }, { 0x00000345, 0x00001fcc }, 
+       { 0x00000300, 0x00001fda }, { 0x00000301, 0x0000038a }, 
+       { 0x00000304, 0x00001fd9 }, { 0x00000306, 0x00001fd8 }, 
+       { 0x00000308, 0x000003aa }, { 0x00000313, 0x00001f38 }, 
+       { 0x00000314, 0x00001f39 }, { 0x00000300, 0x00001ff8 }, 
+       { 0x00000301, 0x0000038c }, { 0x00000313, 0x00001f48 }, 
+       { 0x00000314, 0x00001f49 }, { 0x00000314, 0x00001fec }, 
+       { 0x00000300, 0x00001fea }, { 0x00000301, 0x0000038e }, 
+       { 0x00000304, 0x00001fe9 }, { 0x00000306, 0x00001fe8 }, 
+       { 0x00000308, 0x000003ab }, { 0x00000314, 0x00001f59 }, 
+       { 0x00000300, 0x00001ffa }, { 0x00000301, 0x0000038f }, 
+       { 0x00000313, 0x00001f68 }, { 0x00000314, 0x00001f69 }, 
+       { 0x00000345, 0x00001ffc }, { 0x00000345, 0x00001fb4 }, 
+       { 0x00000345, 0x00001fc4 }, { 0x00000300, 0x00001f70 }, 
+       { 0x00000301, 0x000003ac }, { 0x00000304, 0x00001fb1 }, 
+       { 0x00000306, 0x00001fb0 }, { 0x00000313, 0x00001f00 }, 
+       { 0x00000314, 0x00001f01 }, { 0x00000342, 0x00001fb6 }, 
+       { 0x00000345, 0x00001fb3 }, { 0x00000300, 0x00001f72 }, 
+       { 0x00000301, 0x000003ad }, { 0x00000313, 0x00001f10 }, 
+       { 0x00000314, 0x00001f11 }, { 0x00000300, 0x00001f74 }, 
+       { 0x00000301, 0x000003ae }, { 0x00000313, 0x00001f20 }, 
+       { 0x00000314, 0x00001f21 }, { 0x00000342, 0x00001fc6 }, 
+       { 0x00000345, 0x00001fc3 }, { 0x00000300, 0x00001f76 }, 
+       { 0x00000301, 0x000003af }, { 0x00000304, 0x00001fd1 }, 
+       { 0x00000306, 0x00001fd0 }, { 0x00000308, 0x000003ca }, 
+       { 0x00000313, 0x00001f30 }, { 0x00000314, 0x00001f31 }, 
+       { 0x00000342, 0x00001fd6 }, { 0x00000300, 0x00001f78 }, 
+       { 0x00000301, 0x000003cc }, { 0x00000313, 0x00001f40 }, 
+       { 0x00000314, 0x00001f41 }, { 0x00000313, 0x00001fe4 }, 
+       { 0x00000314, 0x00001fe5 }, { 0x00000300, 0x00001f7a }, 
+       { 0x00000301, 0x000003cd }, { 0x00000304, 0x00001fe1 }, 
+       { 0x00000306, 0x00001fe0 }, { 0x00000308, 0x000003cb }, 
+       { 0x00000313, 0x00001f50 }, { 0x00000314, 0x00001f51 }, 
+       { 0x00000342, 0x00001fe6 }, { 0x00000300, 0x00001f7c }, 
+       { 0x00000301, 0x000003ce }, { 0x00000313, 0x00001f60 }, 
+       { 0x00000314, 0x00001f61 }, { 0x00000342, 0x00001ff6 }, 
+       { 0x00000345, 0x00001ff3 }, { 0x00000300, 0x00001fd2 }, 
+       { 0x00000301, 0x00000390 }, { 0x00000342, 0x00001fd7 }, 
+       { 0x00000300, 0x00001fe2 }, { 0x00000301, 0x000003b0 }, 
+       { 0x00000342, 0x00001fe7 }, { 0x00000345, 0x00001ff4 }, 
+       { 0x00000301, 0x000003d3 }, { 0x00000308, 0x000003d4 }, 
+       { 0x00000308, 0x00000407 }, { 0x00000306, 0x000004d0 }, 
+       { 0x00000308, 0x000004d2 }, { 0x00000301, 0x00000403 }, 
+       { 0x00000300, 0x00000400 }, { 0x00000306, 0x000004d6 }, 
+       { 0x00000308, 0x00000401 }, { 0x00000306, 0x000004c1 }, 
+       { 0x00000308, 0x000004dc }, { 0x00000308, 0x000004de }, 
+       { 0x00000300, 0x0000040d }, { 0x00000304, 0x000004e2 }, 
+       { 0x00000306, 0x00000419 }, { 0x00000308, 0x000004e4 }, 
+       { 0x00000301, 0x0000040c }, { 0x00000308, 0x000004e6 }, 
+       { 0x00000304, 0x000004ee }, { 0x00000306, 0x0000040e }, 
+       { 0x00000308, 0x000004f0 }, { 0x0000030b, 0x000004f2 }, 
+       { 0x00000308, 0x000004f4 }, { 0x00000308, 0x000004f8 }, 
+       { 0x00000308, 0x000004ec }, { 0x00000306, 0x000004d1 }, 
+       { 0x00000308, 0x000004d3 }, { 0x00000301, 0x00000453 }, 
+       { 0x00000300, 0x00000450 }, { 0x00000306, 0x000004d7 }, 
+       { 0x00000308, 0x00000451 }, { 0x00000306, 0x000004c2 }, 
+       { 0x00000308, 0x000004dd }, { 0x00000308, 0x000004df }, 
+       { 0x00000300, 0x0000045d }, { 0x00000304, 0x000004e3 }, 
+       { 0x00000306, 0x00000439 }, { 0x00000308, 0x000004e5 }, 
+       { 0x00000301, 0x0000045c }, { 0x00000308, 0x000004e7 }, 
+       { 0x00000304, 0x000004ef }, { 0x00000306, 0x0000045e }, 
+       { 0x00000308, 0x000004f1 }, { 0x0000030b, 0x000004f3 }, 
+       { 0x00000308, 0x000004f5 }, { 0x00000308, 0x000004f9 }, 
+       { 0x00000308, 0x000004ed }, { 0x00000308, 0x00000457 }, 
+       { 0x0000030f, 0x00000476 }, { 0x0000030f, 0x00000477 }, 
+       { 0x00000308, 0x000004da }, { 0x00000308, 0x000004db }, 
+       { 0x00000308, 0x000004ea }, { 0x00000308, 0x000004eb }, 
+       { 0x00000653, 0x00000622 }, { 0x00000654, 0x00000623 }, 
+       { 0x00000655, 0x00000625 }, { 0x00000654, 0x00000624 }, 
+       { 0x00000654, 0x00000626 }, { 0x00000654, 0x000006c2 }, 
+       { 0x00000654, 0x000006d3 }, { 0x00000654, 0x000006c0 }, 
+       { 0x0000093c, 0x00000929 }, { 0x0000093c, 0x00000931 }, 
+       { 0x0000093c, 0x00000934 }, { 0x000009be, 0x000009cb }, 
+       { 0x000009d7, 0x000009cc }, { 0x00000b3e, 0x00000b4b }, 
+       { 0x00000b56, 0x00000b48 }, { 0x00000b57, 0x00000b4c }, 
+       { 0x00000bd7, 0x00000b94 }, { 0x00000bbe, 0x00000bca }, 
+       { 0x00000bd7, 0x00000bcc }, { 0x00000bbe, 0x00000bcb }, 
+       { 0x00000c56, 0x00000c48 }, { 0x00000cd5, 0x00000cc0 }, 
+       { 0x00000cc2, 0x00000cca }, { 0x00000cd5, 0x00000cc7 }, 
+       { 0x00000cd6, 0x00000cc8 }, { 0x00000cd5, 0x00000ccb }, 
+       { 0x00000d3e, 0x00000d4a }, { 0x00000d57, 0x00000d4c }, 
+       { 0x00000d3e, 0x00000d4b }, { 0x00000dca, 0x00000dda }, 
+       { 0x00000dcf, 0x00000ddc }, { 0x00000ddf, 0x00000dde }, 
+       { 0x00000dca, 0x00000ddd }, { 0x0000102e, 0x00001026 }, 
+       { 0x00000304, 0x00001e38 }, { 0x00000304, 0x00001e39 }, 
+       { 0x00000304, 0x00001e5c }, { 0x00000304, 0x00001e5d }, 
+       { 0x00000307, 0x00001e68 }, { 0x00000307, 0x00001e69 }, 
+       { 0x00000302, 0x00001eac }, { 0x00000306, 0x00001eb6 }, 
+       { 0x00000302, 0x00001ead }, { 0x00000306, 0x00001eb7 }, 
+       { 0x00000302, 0x00001ec6 }, { 0x00000302, 0x00001ec7 }, 
+       { 0x00000302, 0x00001ed8 }, { 0x00000302, 0x00001ed9 }, 
+       { 0x00000300, 0x00001f02 }, { 0x00000301, 0x00001f04 }, 
+       { 0x00000342, 0x00001f06 }, { 0x00000345, 0x00001f80 }, 
+       { 0x00000300, 0x00001f03 }, { 0x00000301, 0x00001f05 }, 
+       { 0x00000342, 0x00001f07 }, { 0x00000345, 0x00001f81 }, 
+       { 0x00000345, 0x00001f82 }, { 0x00000345, 0x00001f83 }, 
+       { 0x00000345, 0x00001f84 }, { 0x00000345, 0x00001f85 }, 
+       { 0x00000345, 0x00001f86 }, { 0x00000345, 0x00001f87 }, 
+       { 0x00000300, 0x00001f0a }, { 0x00000301, 0x00001f0c }, 
+       { 0x00000342, 0x00001f0e }, { 0x00000345, 0x00001f88 }, 
+       { 0x00000300, 0x00001f0b }, { 0x00000301, 0x00001f0d }, 
+       { 0x00000342, 0x00001f0f }, { 0x00000345, 0x00001f89 }, 
+       { 0x00000345, 0x00001f8a }, { 0x00000345, 0x00001f8b }, 
+       { 0x00000345, 0x00001f8c }, { 0x00000345, 0x00001f8d }, 
+       { 0x00000345, 0x00001f8e }, { 0x00000345, 0x00001f8f }, 
+       { 0x00000300, 0x00001f12 }, { 0x00000301, 0x00001f14 }, 
+       { 0x00000300, 0x00001f13 }, { 0x00000301, 0x00001f15 }, 
+       { 0x00000300, 0x00001f1a }, { 0x00000301, 0x00001f1c }, 
+       { 0x00000300, 0x00001f1b }, { 0x00000301, 0x00001f1d }, 
+       { 0x00000300, 0x00001f22 }, { 0x00000301, 0x00001f24 }, 
+       { 0x00000342, 0x00001f26 }, { 0x00000345, 0x00001f90 }, 
+       { 0x00000300, 0x00001f23 }, { 0x00000301, 0x00001f25 }, 
+       { 0x00000342, 0x00001f27 }, { 0x00000345, 0x00001f91 }, 
+       { 0x00000345, 0x00001f92 }, { 0x00000345, 0x00001f93 }, 
+       { 0x00000345, 0x00001f94 }, { 0x00000345, 0x00001f95 }, 
+       { 0x00000345, 0x00001f96 }, { 0x00000345, 0x00001f97 }, 
+       { 0x00000300, 0x00001f2a }, { 0x00000301, 0x00001f2c }, 
+       { 0x00000342, 0x00001f2e }, { 0x00000345, 0x00001f98 }, 
+       { 0x00000300, 0x00001f2b }, { 0x00000301, 0x00001f2d }, 
+       { 0x00000342, 0x00001f2f }, { 0x00000345, 0x00001f99 }, 
+       { 0x00000345, 0x00001f9a }, { 0x00000345, 0x00001f9b }, 
+       { 0x00000345, 0x00001f9c }, { 0x00000345, 0x00001f9d }, 
+       { 0x00000345, 0x00001f9e }, { 0x00000345, 0x00001f9f }, 
+       { 0x00000300, 0x00001f32 }, { 0x00000301, 0x00001f34 }, 
+       { 0x00000342, 0x00001f36 }, { 0x00000300, 0x00001f33 }, 
+       { 0x00000301, 0x00001f35 }, { 0x00000342, 0x00001f37 }, 
+       { 0x00000300, 0x00001f3a }, { 0x00000301, 0x00001f3c }, 
+       { 0x00000342, 0x00001f3e }, { 0x00000300, 0x00001f3b }, 
+       { 0x00000301, 0x00001f3d }, { 0x00000342, 0x00001f3f }, 
+       { 0x00000300, 0x00001f42 }, { 0x00000301, 0x00001f44 }, 
+       { 0x00000300, 0x00001f43 }, { 0x00000301, 0x00001f45 }, 
+       { 0x00000300, 0x00001f4a }, { 0x00000301, 0x00001f4c }, 
+       { 0x00000300, 0x00001f4b }, { 0x00000301, 0x00001f4d }, 
+       { 0x00000300, 0x00001f52 }, { 0x00000301, 0x00001f54 }, 
+       { 0x00000342, 0x00001f56 }, { 0x00000300, 0x00001f53 }, 
+       { 0x00000301, 0x00001f55 }, { 0x00000342, 0x00001f57 }, 
+       { 0x00000300, 0x00001f5b }, { 0x00000301, 0x00001f5d }, 
+       { 0x00000342, 0x00001f5f }, { 0x00000300, 0x00001f62 }, 
+       { 0x00000301, 0x00001f64 }, { 0x00000342, 0x00001f66 }, 
+       { 0x00000345, 0x00001fa0 }, { 0x00000300, 0x00001f63 }, 
+       { 0x00000301, 0x00001f65 }, { 0x00000342, 0x00001f67 }, 
+       { 0x00000345, 0x00001fa1 }, { 0x00000345, 0x00001fa2 }, 
+       { 0x00000345, 0x00001fa3 }, { 0x00000345, 0x00001fa4 }, 
+       { 0x00000345, 0x00001fa5 }, { 0x00000345, 0x00001fa6 }, 
+       { 0x00000345, 0x00001fa7 }, { 0x00000300, 0x00001f6a }, 
+       { 0x00000301, 0x00001f6c }, { 0x00000342, 0x00001f6e }, 
+       { 0x00000345, 0x00001fa8 }, { 0x00000300, 0x00001f6b }, 
+       { 0x00000301, 0x00001f6d }, { 0x00000342, 0x00001f6f }, 
+       { 0x00000345, 0x00001fa9 }, { 0x00000345, 0x00001faa }, 
+       { 0x00000345, 0x00001fab }, { 0x00000345, 0x00001fac }, 
+       { 0x00000345, 0x00001fad }, { 0x00000345, 0x00001fae }, 
+       { 0x00000345, 0x00001faf }, { 0x00000345, 0x00001fb2 }, 
+       { 0x00000345, 0x00001fc2 }, { 0x00000345, 0x00001ff2 }, 
+       { 0x00000345, 0x00001fb7 }, { 0x00000300, 0x00001fcd }, 
+       { 0x00000301, 0x00001fce }, { 0x00000342, 0x00001fcf }, 
+       { 0x00000345, 0x00001fc7 }, { 0x00000345, 0x00001ff7 }, 
+       { 0x00000300, 0x00001fdd }, { 0x00000301, 0x00001fde }, 
+       { 0x00000342, 0x00001fdf }, { 0x00000338, 0x0000219a }, 
+       { 0x00000338, 0x0000219b }, { 0x00000338, 0x000021ae }, 
+       { 0x00000338, 0x000021cd }, { 0x00000338, 0x000021cf }, 
+       { 0x00000338, 0x000021ce }, { 0x00000338, 0x00002204 }, 
+       { 0x00000338, 0x00002209 }, { 0x00000338, 0x0000220c }, 
+       { 0x00000338, 0x00002224 }, { 0x00000338, 0x00002226 }, 
+       { 0x00000338, 0x00002241 }, { 0x00000338, 0x00002244 }, 
+       { 0x00000338, 0x00002247 }, { 0x00000338, 0x00002249 }, 
+       { 0x00000338, 0x0000226d }, { 0x00000338, 0x00002262 }, 
+       { 0x00000338, 0x00002270 }, { 0x00000338, 0x00002271 }, 
+       { 0x00000338, 0x00002274 }, { 0x00000338, 0x00002275 }, 
+       { 0x00000338, 0x00002278 }, { 0x00000338, 0x00002279 }, 
+       { 0x00000338, 0x00002280 }, { 0x00000338, 0x00002281 }, 
+       { 0x00000338, 0x000022e0 }, { 0x00000338, 0x000022e1 }, 
+       { 0x00000338, 0x00002284 }, { 0x00000338, 0x00002285 }, 
+       { 0x00000338, 0x00002288 }, { 0x00000338, 0x00002289 }, 
+       { 0x00000338, 0x000022e2 }, { 0x00000338, 0x000022e3 }, 
+       { 0x00000338, 0x000022ac }, { 0x00000338, 0x000022ad }, 
+       { 0x00000338, 0x000022ae }, { 0x00000338, 0x000022af }, 
+       { 0x00000338, 0x000022ea }, { 0x00000338, 0x000022eb }, 
+       { 0x00000338, 0x000022ec }, { 0x00000338, 0x000022ed }, 
+       { 0x00003099, 0x00003094 }, { 0x00003099, 0x0000304c }, 
+       { 0x00003099, 0x0000304e }, { 0x00003099, 0x00003050 }, 
+       { 0x00003099, 0x00003052 }, { 0x00003099, 0x00003054 }, 
+       { 0x00003099, 0x00003056 }, { 0x00003099, 0x00003058 }, 
+       { 0x00003099, 0x0000305a }, { 0x00003099, 0x0000305c }, 
+       { 0x00003099, 0x0000305e }, { 0x00003099, 0x00003060 }, 
+       { 0x00003099, 0x00003062 }, { 0x00003099, 0x00003065 }, 
+       { 0x00003099, 0x00003067 }, { 0x00003099, 0x00003069 }, 
+       { 0x00003099, 0x00003070 }, { 0x0000309a, 0x00003071 }, 
+       { 0x00003099, 0x00003073 }, { 0x0000309a, 0x00003074 }, 
+       { 0x00003099, 0x00003076 }, { 0x0000309a, 0x00003077 }, 
+       { 0x00003099, 0x00003079 }, { 0x0000309a, 0x0000307a }, 
+       { 0x00003099, 0x0000307c }, { 0x0000309a, 0x0000307d }, 
+       { 0x00003099, 0x0000309e }, { 0x00003099, 0x000030f4 }, 
+       { 0x00003099, 0x000030ac }, { 0x00003099, 0x000030ae }, 
+       { 0x00003099, 0x000030b0 }, { 0x00003099, 0x000030b2 }, 
+       { 0x00003099, 0x000030b4 }, { 0x00003099, 0x000030b6 }, 
+       { 0x00003099, 0x000030b8 }, { 0x00003099, 0x000030ba }, 
+       { 0x00003099, 0x000030bc }, { 0x00003099, 0x000030be }, 
+       { 0x00003099, 0x000030c0 }, { 0x00003099, 0x000030c2 }, 
+       { 0x00003099, 0x000030c5 }, { 0x00003099, 0x000030c7 }, 
+       { 0x00003099, 0x000030c9 }, { 0x00003099, 0x000030d0 }, 
+       { 0x0000309a, 0x000030d1 }, { 0x00003099, 0x000030d3 }, 
+       { 0x0000309a, 0x000030d4 }, { 0x00003099, 0x000030d6 }, 
+       { 0x0000309a, 0x000030d7 }, { 0x00003099, 0x000030d9 }, 
+       { 0x0000309a, 0x000030da }, { 0x00003099, 0x000030dc }, 
+       { 0x0000309a, 0x000030dd }, { 0x00003099, 0x000030f7 }, 
+       { 0x00003099, 0x000030f8 }, { 0x00003099, 0x000030f9 }, 
+       { 0x00003099, 0x000030fa }, { 0x00003099, 0x000030fe }, 
+};
+
+
+/*
+ * Canonical/Compatibility Decomposition
+ */
+
+#define DECOMP_BITS_0  9
+#define DECOMP_BITS_1  7
+#define DECOMP_BITS_2  5
+#define DECOMP_COMPAT  32768
+
+static const unsigned short v310_decompose_imap[] = {
+         272,   400,   528,   656,   784,   784,   784,   784, 
+         784,   784,   784,   784,   784,   784,   784,   912, 
+         784,   784,   784,   784,   784,   784,   784,   784, 
+         784,   784,   784,   784,   784,  1040,   784,   784, 
+         784,   784,   784,   784,   784,   784,   784,   784, 
+         784,   784,   784,   784,   784,   784,   784,  1168, 
+         784,   784,   784,   784,   784,   784,   784,   784, 
+         784,   784,   784,   784,   784,   784,   784,   784, 
+         784,   784,   784,   784,   784,   784,   784,   784, 
+         784,   784,   784,   784,   784,   784,   784,   784, 
+         784,   784,   784,   784,   784,   784,   784,   784, 
+         784,   784,   784,   784,   784,   784,   784,   784, 
+         784,   784,   784,   784,   784,   784,   784,   784, 
+         784,   784,   784,   784,   784,   784,   784,   784, 
+         784,   784,   784,   784,   784,   784,   784,   784, 
+         784,   784,   784,   784,   784,   784,   784,   784, 
+         784,   784,   784,   784,   784,   784,   784,   784, 
+         784,   784,   784,   784,   784,   784,   784,   784, 
+         784,   784,   784,   784,   784,   784,   784,   784, 
+         784,   784,   784,   784,   784,   784,   784,   784, 
+         784,   784,   784,   784,   784,   784,   784,   784, 
+         784,   784,   784,   784,   784,   784,   784,   784, 
+         784,   784,   784,   784,   784,   784,   784,   784, 
+         784,   784,   784,   784,   784,   784,   784,   784, 
+         784,   784,   784,   784,   784,   784,   784,   784, 
+         784,   784,   784,   784,   784,   784,   784,   784, 
+         784,   784,   784,   784,   784,   784,   784,   784, 
+         784,   784,   784,   784,   784,   784,   784,   784, 
+         784,   784,   784,   784,   784,   784,   784,   784, 
+         784,   784,   784,   784,   784,   784,   784,   784, 
+         784,   784,   784,   784,   784,   784,   784,   784, 
+         784,   784,   784,   784,   784,   784,   784,   784, 
+         784,   784,   784,   784,   784,   784,   784,   784, 
+         784,   784,   784,   784,   784,   784,   784,   784, 
+           0,     0,     0,     0,     0,     1,     2,     3, 
+           4,     5,     6,     7,     0,     8,     9,    10, 
+          11,    12,     0,     0,     0,    13,    14,    15, 
+           0,     0,    16,    17,    18,    19,    20,    21, 
+          22,    23,    24,    25,     0,     0,    26,    27, 
+           0,     0,     0,     0,    28,     0,     0,     0, 
+           0,    29,     0,    30,     0,     0,    31,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,    32,    33,     0,     0,     0,    34,     0, 
+           0,    35,    36,     0,     0,     0,     0,     0, 
+           0,     0,    37,     0,    38,     0,    39,     0, 
+           0,     0,    40,     0,     0,     0,    41,     0, 
+           0,     0,    42,     0,     0,     0,    43,     0, 
+           0,    44,     0,     0,     0,    45,    46,     0, 
+          47,     0,    48,    49,    50,    51,     0,     0, 
+           0,    52,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+          53,    54,    55,    56,    57,    58,    59,    60, 
+          61,    62,    63,    64,    65,    66,    67,    68, 
+          69,    70,    71,    72,    73,    74,     0,     0, 
+          75,    76,    77,    78,    79,    80,    81,     0, 
+          82,    83,    84,    85,    86,    87,     0,    88, 
+           0,    89,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,    90,    91,    92,    93,    94, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,    95,     0,     0,    96, 
+          97,    98,    99,   100,   101,   102,   103,     0, 
+         104,   105,   106,   107,   108,   109,   110,   111, 
+           0,   112,   113,   114,   115,     0,     0,     0, 
+         116,   117,   118,   119,   120,   121,   122,   123, 
+         124,   125,   126,   127,   128,   129,   130,   131, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+         132,   133,   134,   135,   136,   137,   138,   139, 
+         140,   141,     0,     0,     0,     0,     0,     0, 
+         142,   143,   144,   145,   146,   147,   148,   149, 
+         150,   151,   152,   153,   154,   155,   156,   157, 
+         158,   159,   160,   161,   162,   163,   164,   165, 
+           0,   166,   167,   168,   169,   170,   171,   172, 
+         173,   174,   175,   176,   177,   178,   179,   180, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,   181,   182,     0,   183,   184,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+         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, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+         217,   218,   219,   220,   221,   222,   223,   224, 
+         225,   226,   227,   228,   229,   230,   231,   232, 
+         233,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+};
+
+static const struct {
+       unsigned short tbl[32];
+} v310_decompose_table[] = {
+       {{
+            0,      0,      0,      0,      0,      0,      0,      0, 
+            0,      0,      0,      0,      0,      0,      0,      0, 
+            0,      0,      0,      0,      0,      0,      0,      0, 
+            0,      0,      0,      0,      0,      0,      0,      0, 
+       }},
+       {{
+        32769,      0,      0,      0,      0,      0,      0,      0, 
+        32770,      0,  32772,      0,      0,      0,      0,  32773, 
+            0,      0,  32775,  32776,  32777,  32779,      0,      0, 
+        32780,  32782,  32783,      0,  32784,  32787,  32790,      0, 
+       }},
+       {{
+           25,     27,     29,     31,     33,     35,      0,     37, 
+           39,     41,     43,     45,     47,     49,     51,     53, 
+            0,     55,     57,     59,     61,     63,     65,      0, 
+            0,     67,     69,     71,     73,     75,      0,      0, 
+       }},
+       {{
+           77,     79,     81,     83,     85,     87,      0,     89, 
+           91,     93,     95,     97,     99,    101,    103,    105, 
+            0,    107,    109,    111,    113,    115,    117,      0, 
+            0,    119,    121,    123,    125,    127,      0,    129, 
+       }},
+       {{
+          131,    133,    135,    137,    139,    141,    143,    145, 
+          147,    149,    151,    153,    155,    157,    159,    161, 
+            0,      0,    163,    165,    167,    169,    171,    173, 
+          175,    177,    179,    181,    183,    185,    187,    189, 
+       }},
+       {{
+          191,    193,    195,    197,    199,    201,      0,      0, 
+          203,    205,    207,    209,    211,    213,    215,    217, 
+          219,      0,  32989,  32991,    225,    227,    229,    231, 
+            0,    233,    235,    237,    239,    241,    243,  33013, 
+       }},
+       {{
+        33015,      0,      0,    249,    251,    253,    255,    257, 
+          259,  33029,      0,      0,    263,    265,    267,    269, 
+          271,    273,      0,      0,    275,    277,    279,    281, 
+          283,    285,    287,    289,    291,    293,    295,    297, 
+       }},
+       {{
+          299,    301,    303,    305,    307,    309,      0,      0, 
+          311,    313,    315,    317,    319,    321,    323,    325, 
+          327,    329,    331,    333,    335,    337,    339,    341, 
+          343,    345,    347,    349,    351,    353,    355,  33125, 
+       }},
+       {{
+          358,    360,      0,      0,      0,      0,      0,      0, 
+            0,      0,      0,      0,      0,      0,      0,    362, 
+          364,      0,      0,      0,      0,      0,      0,      0, 
+            0,      0,      0,      0,      0,      0,      0,      0, 
+       }},
+       {{
+            0,      0,      0,      0,  33134,  33136,  33138,  33140, 
+        33142,  33144,  33146,  33148,  33150,    384,    386,    388, 
+          390,    392,    394,    396,    398,    400,    402,    404, 
+          406,    408,    410,    412,    414,      0,    416,    418, 
+       }},
+       {{
+          420,    422,    424,    426,      0,      0,    428,    430, 
+          432,    434,    436,    438,    440,    442,    444,    446, 
+          448,  33218,  33220,  33222,    456,    458,      0,      0, 
+          460,    462,    464,    466,    468,    470,    472,    474, 
+       }},
+       {{
+          476,    478,    480,    482,    484,    486,    488,    490, 
+          492,    494,    496,    498,    500,    502,    504,    506, 
+          508,    510,    512,    514,    516,    518,    520,    522, 
+          524,    526,    528,    530,      0,      0,    532,    534, 
+       }},
+       {{
+            0,      0,      0,      0,      0,      0,    536,    538, 
+          540,    542,    544,    546,    548,    550,    552,    554, 
+          556,    558,    560,    562,      0,      0,      0,      0, 
+            0,      0,      0,      0,      0,      0,      0,      0, 
+       }},
+       {{
+            0,      0,      0,      0,      0,      0,      0,      0, 
+            0,      0,      0,      0,      0,      0,      0,      0, 
+        33332,  33333,  33334,  33335,  33336,  33337,  33338,  33339, 
+        33340,      0,      0,      0,      0,      0,      0,      0, 
+       }},
+       {{
+            0,      0,      0,      0,      0,      0,      0,      0, 
+            0,      0,      0,      0,      0,      0,      0,      0, 
+            0,      0,      0,      0,      0,      0,      0,      0, 
+        33341,  33343,  33345,  33347,  33349,  33351,      0,      0, 
+       }},
+       {{
+        33353,  33354,  33355,  33356,  33357,      0,      0,      0, 
+            0,      0,      0,      0,      0,      0,      0,      0, 
+            0,      0,      0,      0,      0,      0,      0,      0, 
+            0,      0,      0,      0,      0,      0,      0,      0, 
+       }},
+       {{
+          590,    591,      0,    592,    593,      0,      0,      0, 
+            0,      0,      0,      0,      0,      0,      0,      0, 
+            0,      0,      0,      0,      0,      0,      0,      0, 
+            0,      0,      0,      0,      0,      0,      0,      0, 
+       }},
+       {{
+            0,      0,      0,      0,      0,      0,      0,      0, 
+            0,      0,      0,      0,      0,      0,      0,      0, 
+            0,      0,      0,      0,    595,      0,      0,      0, 
+            0,      0,  33364,      0,      0,      0,    598,      0, 
+       }},
+       {{
+            0,      0,      0,      0,  33367,    601,    603,    605, 
+          606,    608,    610,      0,    612,      0,    614,    616, 
+          618,      0,      0,      0,      0,      0,      0,      0, 
+            0,      0,      0,      0,      0,      0,      0,      0, 
+       }},
+       {{
+            0,      0,      0,      0,      0,      0,      0,      0, 
+            0,      0,    620,    622,    624,    626,    628,    630, 
+          632,      0,      0,      0,      0,      0,      0,      0, 
+            0,      0,      0,      0,      0,      0,      0,      0, 
+       }},
+       {{
+            0,      0,      0,      0,      0,      0,      0,      0, 
+            0,      0,    634,    636,    638,    640,    642,      0, 
+        33412,  33413,  33414,    647,    649,  33419,  33420,      0, 
+            0,      0,      0,      0,      0,      0,      0,      0, 
+       }},
+       {{
+            0,      0,      0,      0,      0,      0,      0,      0, 
+            0,      0,      0,      0,      0,      0,      0,      0, 
+        33421,  33422,  33423,      0,  33424,  33425,      0,      0, 
+            0,      0,      0,      0,      0,      0,      0,      0, 
+       }},
+       {{
+          658,    660,      0,    662,      0,      0,      0,    664, 
+            0,      0,      0,      0,    666,    668,    670,      0, 
+            0,      0,      0,      0,      0,      0,      0,      0, 
+            0,    672,      0,      0,      0,      0,      0,      0, 
+       }},
+       {{
+            0,      0,      0,      0,      0,      0,      0,      0, 
+            0,      0,      0,      0,      0,      0,      0,      0, 
+            0,      0,      0,      0,      0,      0,      0,      0, 
+            0,    674,      0,      0,      0,      0,      0,      0, 
+       }},
+       {{
+            0,      0,      0,      0,      0,      0,      0,      0, 
+            0,      0,      0,      0,      0,      0,      0,      0, 
+          676,    678,      0,    680,      0,      0,      0,    682, 
+            0,      0,      0,      0,    684,    686,    688,      0, 
+       }},
+       {{
+            0,      0,      0,      0,      0,      0,      0,      0, 
+            0,      0,      0,      0,      0,      0,      0,      0, 
+            0,      0,      0,      0,      0,      0,    690,    692, 
+            0,      0,      0,      0,      0,      0,      0,      0, 
+       }},
+       {{
+            0,    694,    696,      0,      0,      0,      0,      0, 
+            0,      0,      0,      0,      0,      0,      0,      0, 
+          698,    700,    702,    704,      0,      0,    706,    708, 
+            0,      0,    710,    712,    714,    716,    718,    720, 
+       }},
+       {{
+            0,      0,    722,    724,    726,    728,    730,    732, 
+            0,      0,    734,    736,    738,    740,    742,    744, 
+          746,    748,    750,    752,    754,    756,      0,      0, 
+          758,    760,      0,      0,      0,      0,      0,      0, 
+       }},
+       {{
+            0,      0,      0,      0,      0,      0,      0,  33530, 
+            0,      0,      0,      0,      0,      0,      0,      0, 
+            0,      0,      0,      0,      0,      0,      0,      0, 
+            0,      0,      0,      0,      0,      0,      0,      0, 
+       }},
+       {{
+            0,      0,    764,    766,    768,    770,    772,      0, 
+            0,      0,      0,      0,      0,      0,      0,      0, 
+            0,      0,      0,      0,      0,      0,      0,      0, 
+            0,      0,      0,      0,      0,      0,      0,      0, 
+       }},
+       {{
+            0,      0,      0,      0,      0,      0,      0,      0, 
+            0,      0,      0,      0,      0,      0,      0,      0, 
+            0,      0,      0,      0,      0,  33542,  33544,  33546, 
+        33548,      0,      0,      0,      0,      0,      0,      0, 
+       }},
+       {{
+          782,      0,    784,      0,      0,      0,      0,      0, 
+            0,      0,      0,      0,      0,      0,      0,      0, 
+            0,      0,      0,    786,      0,      0,      0,      0, 
+            0,      0,      0,      0,      0,      0,      0,      0, 
+       }},
+       {{
+            0,      0,      0,      0,      0,      0,      0,      0, 
+            0,    788,      0,      0,      0,      0,      0,      0, 
+            0,    790,      0,      0,    792,      0,      0,      0, 
+            0,      0,      0,      0,      0,      0,      0,      0, 
+       }},
+       {{
+            0,      0,      0,      0,      0,      0,      0,      0, 
+            0,      0,      0,      0,      0,      0,      0,      0, 
+            0,      0,      0,      0,      0,      0,      0,      0, 
+          794,    796,    798,    800,    802,    804,    806,    808, 
+       }},
+       {{
+            0,      0,      0,      0,      0,      0,      0,      0, 
+            0,      0,      0,    810,    812,      0,      0,      0, 
+            0,      0,      0,      0,      0,      0,      0,      0, 
+            0,      0,      0,      0,    814,    816,      0,    818, 
+       }},
+       {{
+            0,      0,      0,      0,      0,      0,      0,      0, 
+            0,      0,      0,      0,      0,      0,      0,      0, 
+            0,      0,      0,    820,      0,      0,    822,      0, 
+            0,      0,      0,      0,      0,      0,      0,      0, 
+       }},
+       {{
+            0,      0,      0,      0,      0,      0,      0,      0, 
+            0,      0,      0,      0,      0,      0,      0,      0, 
+            0,      0,      0,      0,      0,      0,      0,      0, 
+            0,    824,    826,    828,      0,      0,    830,      0, 
+       }},
+       {{
+            0,      0,      0,      0,      0,      0,      0,      0, 
+          832,      0,      0,    834,    836,      0,      0,      0, 
+            0,      0,      0,      0,      0,      0,      0,      0, 
+            0,      0,      0,      0,    838,    840,      0,      0, 
+       }},
+       {{
+            0,      0,      0,      0,      0,      0,      0,      0, 
+            0,      0,      0,      0,      0,      0,      0,      0, 
+            0,      0,      0,      0,    842,      0,      0,      0, 
+            0,      0,      0,      0,      0,      0,      0,      0, 
+       }},
+       {{
+            0,      0,      0,      0,      0,      0,      0,      0, 
+            0,      0,    844,    846,    848,      0,      0,      0, 
+            0,      0,      0,      0,      0,      0,      0,      0, 
+            0,      0,      0,      0,      0,      0,      0,      0, 
+       }},
+       {{
+            0,      0,      0,      0,      0,      0,      0,      0, 
+          850,      0,      0,      0,      0,      0,      0,      0, 
+            0,      0,      0,      0,      0,      0,      0,      0, 
+            0,      0,      0,      0,      0,      0,      0,      0, 
+       }},
+       {{
+          852,      0,      0,      0,      0,      0,      0,    854, 
+          856,      0,    858,    860,      0,      0,      0,      0, 
+            0,      0,      0,      0,      0,      0,      0,      0, 
+            0,      0,      0,      0,      0,      0,      0,      0, 
+       }},
+       {{
+            0,      0,      0,      0,      0,      0,      0,      0, 
+            0,      0,    862,    864,    866,      0,      0,      0, 
+            0,      0,      0,      0,      0,      0,      0,      0, 
+            0,      0,      0,      0,      0,      0,      0,      0, 
+       }},
+       {{
+            0,      0,      0,      0,      0,      0,      0,      0, 
+            0,      0,      0,      0,      0,      0,      0,      0, 
+            0,      0,      0,      0,      0,      0,      0,      0, 
+            0,      0,    868,      0,    870,    872,    874,      0, 
+       }},
+       {{
+            0,      0,      0,      0,      0,      0,      0,      0, 
+            0,      0,      0,      0,      0,      0,      0,      0, 
+            0,      0,      0,  33644,      0,      0,      0,      0, 
+            0,      0,      0,      0,      0,      0,      0,      0, 
+       }},
+       {{
+            0,      0,      0,      0,      0,      0,      0,      0, 
+            0,      0,      0,      0,      0,      0,      0,      0, 
+            0,      0,      0,  33646,      0,      0,      0,      0, 
+            0,      0,      0,      0,      0,      0,      0,      0, 
+       }},
+       {{
+            0,      0,      0,      0,      0,      0,      0,      0, 
+            0,      0,      0,      0,      0,      0,      0,      0, 
+            0,      0,      0,      0,      0,      0,      0,      0, 
+            0,      0,      0,      0,  33648,  33650,      0,      0, 
+       }},
+       {{
+            0,      0,      0,      0,      0,      0,      0,      0, 
+            0,      0,      0,      0,  33652,      0,      0,      0, 
+            0,      0,      0,      0,      0,      0,      0,      0, 
+            0,      0,      0,      0,      0,      0,      0,      0, 
+       }},
+       {{
+            0,      0,      0,    885,      0,      0,      0,      0, 
+            0,      0,      0,      0,      0,    887,      0,      0, 
+            0,      0,    889,      0,      0,      0,      0,    891, 
+            0,      0,      0,      0,    893,      0,      0,      0, 
+       }},
+       {{
+            0,      0,      0,      0,      0,      0,      0,      0, 
+            0,    895,      0,      0,      0,      0,      0,      0, 
+            0,      0,      0,    897,      0,    899,    901,  33671, 
+          905,  33675,      0,      0,      0,      0,      0,      0, 
+       }},
+       {{
+            0,    909,      0,      0,      0,      0,      0,      0, 
+            0,      0,      0,      0,      0,      0,      0,      0, 
+            0,      0,      0,    911,      0,      0,      0,      0, 
+            0,      0,      0,      0,      0,    913,      0,      0, 
+       }},
+       {{
+            0,      0,    915,      0,      0,      0,      0,    917, 
+            0,      0,      0,      0,    919,      0,      0,      0, 
+            0,      0,      0,      0,      0,      0,      0,      0, 
+            0,    921,      0,      0,      0,      0,      0,      0, 
+       }},
+       {{
+            0,      0,      0,      0,      0,      0,    923,      0, 
+            0,      0,      0,      0,      0,      0,      0,      0, 
+            0,      0,      0,      0,      0,      0,      0,      0, 
+            0,      0,      0,      0,      0,      0,      0,      0, 
+       }},
+       {{
+          925,    927,    929,    931,    933,    935,    937,    939, 
+          941,    943,    945,    947,    949,    951,    953,    955, 
+          957,    959,    961,    963,    965,    967,    969,    971, 
+          973,    975,    977,    979,    981,    983,    985,    987, 
+       }},
+       {{
+          989,    991,    993,    995,    997,    999,   1001,   1003, 
+         1005,   1007,   1009,   1011,   1013,   1015,   1017,   1019, 
+         1021,   1023,   1025,   1027,   1029,   1031,   1033,   1035, 
+         1037,   1039,   1041,   1043,   1045,   1047,   1049,   1051, 
+       }},
+       {{
+         1053,   1055,   1057,   1059,   1061,   1063,   1065,   1067, 
+         1069,   1071,   1073,   1075,   1077,   1079,   1081,   1083, 
+         1085,   1087,   1089,   1091,   1093,   1095,   1097,   1099, 
+         1101,   1103,   1105,   1107,   1109,   1111,   1113,   1115, 
+       }},
+       {{
+         1117,   1119,   1121,   1123,   1125,   1127,   1129,   1131, 
+         1133,   1135,   1137,   1139,   1141,   1143,   1145,   1147, 
+         1149,   1151,   1153,   1155,   1157,   1159,   1161,   1163, 
+         1165,   1167,   1169,   1171,   1173,   1175,   1177,   1179, 
+       }},
+       {{
+         1181,   1183,   1185,   1187,   1189,   1191,   1193,   1195, 
+         1197,   1199,   1201,   1203,   1205,   1207,   1209,   1211, 
+         1213,   1215,   1217,   1219,   1221,   1223,   1225,   1227, 
+         1229,   1231,  34001,   1235,      0,      0,      0,      0, 
+       }},
+       {{
+         1237,   1239,   1241,   1243,   1245,   1247,   1249,   1251, 
+         1253,   1255,   1257,   1259,   1261,   1263,   1265,   1267, 
+         1269,   1271,   1273,   1275,   1277,   1279,   1281,   1283, 
+         1285,   1287,   1289,   1291,   1293,   1295,   1297,   1299, 
+       }},
+       {{
+         1301,   1303,   1305,   1307,   1309,   1311,   1313,   1315, 
+         1317,   1319,   1321,   1323,   1325,   1327,   1329,   1331, 
+         1333,   1335,   1337,   1339,   1341,   1343,   1345,   1347, 
+         1349,   1351,   1353,   1355,   1357,   1359,   1361,   1363, 
+       }},
+       {{
+         1365,   1367,   1369,   1371,   1373,   1375,   1377,   1379, 
+         1381,   1383,   1385,   1387,   1389,   1391,   1393,   1395, 
+         1397,   1399,   1401,   1403,   1405,   1407,   1409,   1411, 
+         1413,   1415,      0,      0,      0,      0,      0,      0, 
+       }},
+       {{
+         1417,   1419,   1421,   1423,   1425,   1427,   1429,   1431, 
+         1433,   1435,   1437,   1439,   1441,   1443,   1445,   1447, 
+         1449,   1451,   1453,   1455,   1457,   1459,      0,      0, 
+         1461,   1463,   1465,   1467,   1469,   1471,      0,      0, 
+       }},
+       {{
+         1473,   1475,   1477,   1479,   1481,   1483,   1485,   1487, 
+         1489,   1491,   1493,   1495,   1497,   1499,   1501,   1503, 
+         1505,   1507,   1509,   1511,   1513,   1515,   1517,   1519, 
+         1521,   1523,   1525,   1527,   1529,   1531,   1533,   1535, 
+       }},
+       {{
+         1537,   1539,   1541,   1543,   1545,   1547,      0,      0, 
+         1549,   1551,   1553,   1555,   1557,   1559,      0,      0, 
+         1561,   1563,   1565,   1567,   1569,   1571,   1573,   1575, 
+            0,   1577,      0,   1579,      0,   1581,      0,   1583, 
+       }},
+       {{
+         1585,   1587,   1589,   1591,   1593,   1595,   1597,   1599, 
+         1601,   1603,   1605,   1607,   1609,   1611,   1613,   1615, 
+         1617,   1619,   1620,   1622,   1623,   1625,   1626,   1628, 
+         1629,   1631,   1632,   1634,   1635,   1637,      0,      0, 
+       }},
+       {{
+         1638,   1640,   1642,   1644,   1646,   1648,   1650,   1652, 
+         1654,   1656,   1658,   1660,   1662,   1664,   1666,   1668, 
+         1670,   1672,   1674,   1676,   1678,   1680,   1682,   1684, 
+         1686,   1688,   1690,   1692,   1694,   1696,   1698,   1700, 
+       }},
+       {{
+         1702,   1704,   1706,   1708,   1710,   1712,   1714,   1716, 
+         1718,   1720,   1722,   1724,   1726,   1728,   1730,   1732, 
+         1734,   1736,   1738,   1740,   1742,      0,   1744,   1746, 
+         1748,   1750,   1752,   1754,   1755,  34525,   1759,  34528, 
+       }},
+       {{
+        34530,   1764,   1766,   1768,   1770,      0,   1772,   1774, 
+         1776,   1778,   1779,   1781,   1782,   1784,   1786,   1788, 
+         1790,   1792,   1794,   1796,      0,      0,   1797,   1799, 
+         1801,   1803,   1805,   1807,      0,   1808,   1810,   1812, 
+       }},
+       {{
+         1814,   1816,   1818,   1820,   1821,   1823,   1825,   1827, 
+         1829,   1831,   1833,   1835,   1836,   1838,   1840,   1841, 
+            0,      0,   1842,   1844,   1846,      0,   1848,   1850, 
+         1852,   1854,   1855,   1857,   1858,   1860,  34629,      0, 
+       }},
+       {{
+         1863,   1864,  34633,  34634,  34635,  34636,  34637,  34638, 
+        34639,  34640,  34641,      0,      0,      0,      0,      0, 
+            0,  34642,      0,      0,      0,      0,      0,  34643, 
+            0,      0,      0,      0,      0,      0,      0,      0, 
+       }},
+       {{
+            0,      0,      0,      0,  34645,  34646,  34648,      0, 
+            0,      0,      0,      0,      0,      0,      0,  34651, 
+            0,      0,      0,  34652,  34654,      0,  34657,  34659, 
+            0,      0,      0,      0,  34662,      0,  34664,      0, 
+       }},
+       {{
+            0,      0,      0,      0,      0,      0,      0,      0, 
+        34666,  34668,      0,      0,      0,      0,      0,      0, 
+            0,      0,      0,      0,      0,      0,      0,      0, 
+            0,      0,      0,      0,      0,      0,      0,      0, 
+       }},
+       {{
+            0,      0,      0,      0,      0,      0,      0,      0, 
+            0,      0,      0,      0,      0,      0,      0,      0, 
+        34670,      0,      0,      0,  34671,  34672,  34673,  34674, 
+        34675,  34676,  34677,  34678,  34679,  34680,  34681,  34682, 
+       }},
+       {{
+        34683,  34684,  34685,  34686,  34687,  34688,  34689,  34690, 
+        34691,  34692,  34693,  34694,  34695,  34696,  34697,      0, 
+            0,      0,      0,      0,      0,      0,      0,      0, 
+            0,      0,      0,      0,      0,      0,      0,      0, 
+       }},
+       {{
+            0,      0,      0,      0,      0,      0,      0,      0, 
+        34698,      0,      0,      0,      0,      0,      0,      0, 
+            0,      0,      0,      0,      0,      0,      0,      0, 
+            0,      0,      0,      0,      0,      0,      0,      0, 
+       }},
+       {{
+        34700,  34703,  34706,  34707,      0,  34709,  34712,  34715, 
+            0,  34716,  34718,  34719,  34720,  34721,  34722,  34723, 
+        34724,  34725,  34726,  34727,      0,  34728,  34729,      0, 
+            0,  34731,  34732,  34733,  34734,  34735,      0,      0, 
+       }},
+       {{
+        34736,  34738,  34741,      0,  34743,      0,   1976,      0, 
+        34745,      0,   1978,   1979,  34748,  34749,      0,  34750, 
+        34751,  34752,      0,  34753,  34754,  34755,  34756,  34757, 
+        34758,  34759,      0,      0,      0,      0,      0,      0, 
+       }},
+       {{
+            0,      0,      0,      0,      0,      0,      0,      0, 
+            0,      0,      0,      0,      0,      0,      0,      0, 
+            0,      0,      0,  34760,  34763,  34766,  34769,  34772, 
+        34775,  34778,  34781,  34784,  34787,  34790,  34793,  34796, 
+       }},
+       {{
+        34798,  34799,  34801,  34804,  34806,  34807,  34809,  34812, 
+        34816,  34818,  34819,  34821,  34824,  34825,  34826,  34827, 
+        34828,  34829,  34831,  34834,  34836,  34837,  34839,  34842, 
+        34846,  34848,  34849,  34851,  34854,  34855,  34856,  34857, 
+       }},
+       {{
+            0,      0,      0,      0,      0,      0,      0,      0, 
+            0,      0,      0,      0,      0,      0,      0,      0, 
+            0,      0,      0,      0,      0,      0,      0,      0, 
+            0,      0,   2090,   2092,      0,      0,      0,      0, 
+       }},
+       {{
+            0,      0,      0,      0,      0,      0,      0,      0, 
+            0,      0,      0,      0,      0,      0,   2094,      0, 
+            0,      0,      0,      0,      0,      0,      0,      0, 
+            0,      0,      0,      0,      0,      0,      0,      0, 
+       }},
+       {{
+            0,      0,      0,      0,      0,      0,      0,      0, 
+            0,      0,      0,      0,      0,   2096,   2098,   2100, 
+            0,      0,      0,      0,      0,      0,      0,      0, 
+            0,      0,      0,      0,      0,      0,      0,      0, 
+       }},
+       {{
+            0,      0,      0,      0,   2102,      0,      0,      0, 
+            0,   2104,      0,      0,   2106,      0,      0,      0, 
+            0,      0,      0,      0,      0,      0,      0,      0, 
+            0,      0,      0,      0,      0,      0,      0,      0, 
+       }},
+       {{
+            0,      0,      0,      0,   2108,      0,   2110,      0, 
+            0,      0,      0,      0,  34880,  34882,      0,  34885, 
+        34887,      0,      0,      0,      0,      0,      0,      0, 
+            0,      0,      0,      0,      0,      0,      0,      0, 
+       }},
+       {{
+            0,   2122,      0,      0,   2124,      0,      0,   2126, 
+            0,   2128,      0,      0,      0,      0,      0,      0, 
+            0,      0,      0,      0,      0,      0,      0,      0, 
+            0,      0,      0,      0,      0,      0,      0,      0, 
+       }},
+       {{
+         2130,      0,   2132,      0,      0,      0,      0,      0, 
+            0,      0,      0,      0,      0,   2134,   2136,   2138, 
+         2140,   2142,      0,      0,   2144,   2146,      0,      0, 
+         2148,   2150,      0,      0,      0,      0,      0,      0, 
+       }},
+       {{
+         2152,   2154,      0,      0,   2156,   2158,      0,      0, 
+         2160,   2162,      0,      0,      0,      0,      0,      0, 
+            0,      0,      0,      0,      0,      0,      0,      0, 
+            0,      0,      0,      0,      0,      0,      0,      0, 
+       }},
+       {{
+            0,      0,      0,      0,      0,      0,      0,      0, 
+            0,      0,      0,      0,   2164,   2166,   2168,   2170, 
+            0,      0,      0,      0,      0,      0,      0,      0, 
+            0,      0,      0,      0,      0,      0,      0,      0, 
+       }},
+       {{
+         2172,   2174,   2176,   2178,      0,      0,      0,      0, 
+            0,      0,   2180,   2182,   2184,   2186,      0,      0, 
+            0,      0,      0,      0,      0,      0,      0,      0, 
+            0,      0,      0,      0,      0,      0,      0,      0, 
+       }},
+       {{
+            0,      0,      0,      0,      0,      0,      0,      0, 
+            0,   2188,   2189,      0,      0,      0,      0,      0, 
+            0,      0,      0,      0,      0,      0,      0,      0, 
+            0,      0,      0,      0,      0,      0,      0,      0, 
+       }},
+       {{
+        34958,  34959,  34960,  34961,  34962,  34963,  34964,  34965, 
+        34966,  34967,  34969,  34971,  34973,  34975,  34977,  34979, 
+        34981,  34983,  34985,  34987,  34989,  34992,  34995,  34998, 
+        35001,  35004,  35007,  35010,  35013,  35016,  35020,  35024, 
+       }},
+       {{
+        35028,  35032,  35036,  35040,  35044,  35048,  35052,  35056, 
+        35060,  35062,  35064,  35066,  35068,  35070,  35072,  35074, 
+        35076,  35078,  35081,  35084,  35087,  35090,  35093,  35096, 
+        35099,  35102,  35105,  35108,  35111,  35114,  35117,  35120, 
+       }},
+       {{
+        35123,  35126,  35129,  35132,  35135,  35138,  35141,  35144, 
+        35147,  35150,  35153,  35156,  35159,  35162,  35165,  35168, 
+        35171,  35174,  35177,  35180,  35183,  35186,  35189,  35190, 
+        35191,  35192,  35193,  35194,  35195,  35196,  35197,  35198, 
+       }},
+       {{
+        35199,  35200,  35201,  35202,  35203,  35204,  35205,  35206, 
+        35207,  35208,  35209,  35210,  35211,  35212,  35213,  35214, 
+        35215,  35216,  35217,  35218,  35219,  35220,  35221,  35222, 
+        35223,  35224,  35225,  35226,  35227,  35228,  35229,  35230, 
+       }},
+       {{
+        35231,  35232,  35233,  35234,  35235,  35236,  35237,  35238, 
+        35239,  35240,  35241,      0,      0,      0,      0,      0, 
+            0,      0,      0,      0,      0,      0,      0,      0, 
+            0,      0,      0,      0,      0,      0,      0,      0, 
+       }},
+       {{
+            0,      0,      0,      0,      0,      0,      0,      0, 
+            0,      0,      0,      0,      0,      0,      0,      0, 
+            0,      0,      0,      0,      0,      0,      0,      0, 
+            0,      0,      0,      0,      0,      0,      0,  35242, 
+       }},
+       {{
+            0,      0,      0,      0,      0,      0,      0,      0, 
+            0,      0,      0,      0,      0,      0,      0,      0, 
+            0,      0,      0,  35243,      0,      0,      0,      0, 
+            0,      0,      0,      0,      0,      0,      0,      0, 
+       }},
+       {{
+        35244,  35245,  35246,  35247,  35248,  35249,  35250,  35251, 
+        35252,  35253,  35254,  35255,  35256,  35257,  35258,  35259, 
+        35260,  35261,  35262,  35263,  35264,  35265,  35266,  35267, 
+        35268,  35269,  35270,  35271,  35272,  35273,  35274,  35275, 
+       }},
+       {{
+        35276,  35277,  35278,  35279,  35280,  35281,  35282,  35283, 
+        35284,  35285,  35286,  35287,  35288,  35289,  35290,  35291, 
+        35292,  35293,  35294,  35295,  35296,  35297,  35298,  35299, 
+        35300,  35301,  35302,  35303,  35304,  35305,  35306,  35307, 
+       }},
+       {{
+        35308,  35309,  35310,  35311,  35312,  35313,  35314,  35315, 
+        35316,  35317,  35318,  35319,  35320,  35321,  35322,  35323, 
+        35324,  35325,  35326,  35327,  35328,  35329,  35330,  35331, 
+        35332,  35333,  35334,  35335,  35336,  35337,  35338,  35339, 
+       }},
+       {{
+        35340,  35341,  35342,  35343,  35344,  35345,  35346,  35347, 
+        35348,  35349,  35350,  35351,  35352,  35353,  35354,  35355, 
+        35356,  35357,  35358,  35359,  35360,  35361,  35362,  35363, 
+        35364,  35365,  35366,  35367,  35368,  35369,  35370,  35371, 
+       }},
+       {{
+        35372,  35373,  35374,  35375,  35376,  35377,  35378,  35379, 
+        35380,  35381,  35382,  35383,  35384,  35385,  35386,  35387, 
+        35388,  35389,  35390,  35391,  35392,  35393,  35394,  35395, 
+        35396,  35397,  35398,  35399,  35400,  35401,  35402,  35403, 
+       }},
+       {{
+        35404,  35405,  35406,  35407,  35408,  35409,  35410,  35411, 
+        35412,  35413,  35414,  35415,  35416,  35417,  35418,  35419, 
+        35420,  35421,  35422,  35423,  35424,  35425,  35426,  35427, 
+        35428,  35429,  35430,  35431,  35432,  35433,  35434,  35435, 
+       }},
+       {{
+        35436,  35437,  35438,  35439,  35440,  35441,  35442,  35443, 
+        35444,  35445,  35446,  35447,  35448,  35449,  35450,  35451, 
+        35452,  35453,  35454,  35455,  35456,  35457,      0,      0, 
+            0,      0,      0,      0,      0,      0,      0,      0, 
+       }},
+       {{
+        35458,      0,      0,      0,      0,      0,      0,      0, 
+            0,      0,      0,      0,      0,      0,      0,      0, 
+            0,      0,      0,      0,      0,      0,      0,      0, 
+            0,      0,      0,      0,      0,      0,      0,      0, 
+       }},
+       {{
+            0,      0,      0,      0,      0,      0,      0,      0, 
+            0,      0,      0,      0,      0,      0,      0,      0, 
+            0,      0,      0,      0,      0,      0,  35459,      0, 
+        35460,  35461,  35462,      0,      0,      0,      0,      0, 
+       }},
+       {{
+            0,      0,      0,      0,      0,      0,      0,      0, 
+            0,      0,      0,      0,   2695,      0,   2697,      0, 
+         2699,      0,   2701,      0,   2703,      0,   2705,      0, 
+         2707,      0,   2709,      0,   2711,      0,   2713,      0, 
+       }},
+       {{
+         2715,      0,   2717,      0,      0,   2719,      0,   2721, 
+            0,   2723,      0,      0,      0,      0,      0,      0, 
+         2725,   2727,      0,   2729,   2731,      0,   2733,   2735, 
+            0,   2737,   2739,      0,   2741,   2743,      0,      0, 
+       }},
+       {{
+            0,      0,      0,      0,      0,      0,      0,      0, 
+            0,      0,      0,      0,      0,      0,      0,      0, 
+            0,      0,      0,      0,   2745,      0,      0,      0, 
+            0,      0,      0,  35515,  35517,      0,   2751,      0, 
+       }},
+       {{
+            0,      0,      0,      0,      0,      0,      0,      0, 
+            0,      0,      0,      0,   2753,      0,   2755,      0, 
+         2757,      0,   2759,      0,   2761,      0,   2763,      0, 
+         2765,      0,   2767,      0,   2769,      0,   2771,      0, 
+       }},
+       {{
+         2773,      0,   2775,      0,      0,   2777,      0,   2779, 
+            0,   2781,      0,      0,      0,      0,      0,      0, 
+         2783,   2785,      0,   2787,   2789,      0,   2791,   2793, 
+            0,   2795,   2797,      0,   2799,   2801,      0,      0, 
+       }},
+       {{
+            0,      0,      0,      0,      0,      0,      0,      0, 
+            0,      0,      0,      0,      0,      0,      0,      0, 
+            0,      0,      0,      0,   2803,      0,      0,   2805, 
+         2807,   2809,   2811,      0,      0,      0,   2813,      0, 
+       }},
+       {{
+            0,      0,      0,      0,      0,      0,      0,      0, 
+            0,      0,      0,      0,      0,      0,      0,      0, 
+            0,  35583,  35584,  35585,  35586,  35587,  35588,  35589, 
+        35590,  35591,  35592,  35593,  35594,  35595,  35596,  35597, 
+       }},
+       {{
+        35598,  35599,  35600,  35601,  35602,  35603,  35604,  35605, 
+        35606,  35607,  35608,  35609,  35610,  35611,  35612,  35613, 
+        35614,  35615,  35616,  35617,  35618,  35619,  35620,  35621, 
+        35622,  35623,  35624,  35625,  35626,  35627,  35628,  35629, 
+       }},
+       {{
+        35630,  35631,  35632,  35633,  35634,  35635,  35636,  35637, 
+        35638,  35639,  35640,  35641,  35642,  35643,  35644,  35645, 
+        35646,  35647,  35648,  35649,  35650,  35651,  35652,  35653, 
+        35654,  35655,  35656,  35657,  35658,  35659,  35660,  35661, 
+       }},
+       {{
+        35662,  35663,  35664,  35665,  35666,  35667,  35668,  35669, 
+        35670,  35671,  35672,  35673,  35674,  35675,  35676,      0, 
+            0,      0,  35677,  35678,  35679,  35680,  35681,  35682, 
+        35683,  35684,  35685,  35686,  35687,  35688,  35689,  35690, 
+       }},
+       {{
+        35691,  35694,  35697,  35700,  35703,  35706,  35709,  35712, 
+        35715,  35718,  35721,  35724,  35727,  35730,  35733,  35737, 
+        35741,  35745,  35749,  35753,  35757,  35761,  35765,  35769, 
+        35773,  35777,  35781,  35785,  35789,      0,      0,      0, 
+       }},
+       {{
+        35793,  35796,  35799,  35802,  35805,  35808,  35811,  35814, 
+        35817,  35820,  35823,  35826,  35829,  35832,  35835,  35838, 
+        35841,  35844,  35847,  35850,  35853,  35856,  35859,  35862, 
+        35865,  35868,  35871,  35874,  35877,  35880,  35883,  35886, 
+       }},
+       {{
+        35889,  35892,  35895,  35898,      0,      0,      0,      0, 
+            0,      0,      0,      0,      0,      0,      0,      0, 
+            0,      0,      0,      0,      0,      0,      0,      0, 
+            0,      0,      0,      0,      0,      0,      0,      0, 
+       }},
+       {{
+        35901,  35902,  35903,  35904,  35905,  35906,  35907,  35908, 
+        35909,  35910,  35911,  35912,  35913,  35914,  35915,  35917, 
+        35919,  35921,  35923,  35925,  35927,  35929,  35931,  35933, 
+        35935,  35937,  35939,  35941,      0,      0,      0,      0, 
+       }},
+       {{
+        35943,  35944,  35945,  35946,  35947,  35948,  35949,  35950, 
+        35951,  35952,  35953,  35954,  35955,  35956,  35957,  35958, 
+        35959,  35960,  35961,  35962,  35963,  35964,  35965,  35966, 
+        35967,  35968,  35969,  35970,  35971,  35972,  35973,  35974, 
+       }},
+       {{
+        35975,  35976,  35977,  35978,  35979,  35980,  35981,  35982, 
+        35983,  35984,  35985,  35986,  35987,  35988,  35989,  35990, 
+        35991,      0,      0,      0,      0,      0,      0,      0, 
+            0,      0,      0,      0,      0,      0,      0,      0, 
+       }},
+       {{
+        35992,  35994,  35996,  35998,  36000,  36002,  36004,  36006, 
+        36008,  36010,  36013,  36016,      0,      0,      0,      0, 
+        36019,  36020,  36021,  36022,  36023,  36024,  36025,  36026, 
+        36027,  36028,  36029,  36030,  36031,  36032,  36033,  36034, 
+       }},
+       {{
+        36035,  36036,  36037,  36038,  36039,  36040,  36041,  36042, 
+        36043,  36044,  36045,  36046,  36047,  36048,  36049,  36050, 
+        36051,  36052,  36053,  36054,  36055,  36056,  36057,  36058, 
+        36059,  36060,  36061,  36062,  36063,  36064,  36065,      0, 
+       }},
+       {{
+        36066,  36070,  36074,  36078,  36081,  36085,  36088,  36091, 
+        36096,  36100,  36103,  36106,  36109,  36113,  36117,  36120, 
+        36123,  36125,  36128,  36132,  36136,  36138,  36143,  36149, 
+        36154,  36157,  36162,  36167,  36171,  36174,  36177,  36180, 
+       }},
+       {{
+        36184,  36189,  36193,  36196,  36199,  36202,  36204,  36206, 
+        36208,  36210,  36213,  36216,  36221,  36224,  36228,  36233, 
+        36236,  36238,  36240,  36245,  36249,  36254,  36257,  36262, 
+        36264,  36267,  36270,  36273,  36276,  36279,  36283,  36286, 
+       }},
+       {{
+        36288,  36291,  36294,  36297,  36301,  36304,  36307,  36310, 
+        36315,  36319,  36321,  36326,  36328,  36332,  36336,  36339, 
+        36342,  36345,  36349,  36351,  36354,  36358,  36360,  36365, 
+        36368,  36370,  36372,  36374,  36376,  36378,  36380,  36382, 
+       }},
+       {{
+        36384,  36386,  36388,  36391,  36394,  36397,  36400,  36403, 
+        36406,  36409,  36412,  36415,  36418,  36421,  36424,  36427, 
+        36430,  36433,  36436,  36438,  36440,  36443,  36445,      0, 
+            0,      0,      0,  36447,  36449,  36451,  36453,  36455, 
+       }},
+       {{
+        36459,  36461,  36463,  36465,  36467,  36469,  36471,  36473, 
+        36475,  36478,  36482,  36484,  36486,  36488,  36490,  36492, 
+        36494,  36496,  36499,  36502,  36505,  36508,  36510,  36512, 
+        36514,  36516,  36518,  36520,  36522,  36524,  36526,  36528, 
+       }},
+       {{
+        36531,  36534,  36536,  36539,  36542,  36545,  36547,  36550, 
+        36553,  36557,  36559,  36562,  36565,  36568,  36571,  36576, 
+        36582,  36584,  36586,  36588,  36590,  36592,  36594,  36596, 
+        36598,  36600,  36602,  36604,  36606,  36608,  36610,  36612, 
+       }},
+       {{
+        36614,  36616,  36618,  36622,  36624,  36626,  36628,  36632, 
+        36635,  36637,  36639,  36641,  36643,  36645,  36647,  36649, 
+        36651,  36653,  36655,  36658,  36660,  36662,  36665,  36668, 
+        36670,  36674,  36677,  36679,  36681,  36683,      0,      0, 
+       }},
+       {{
+        36685,  36687,  36689,  36691,  36693,  36695,  36697,  36699, 
+        36701,  36703,  36706,  36709,  36712,  36715,  36718,  36721, 
+        36724,  36727,  36730,  36733,  36736,  36739,  36742,  36745, 
+        36748,  36751,  36754,  36757,  36760,  36763,  36766,      0, 
+       }},
+       {{
+         4001,   4002,   4003,   4004,   4005,   4006,   4007,   4008, 
+         4009,   4010,   4011,   4012,   4013,   4014,   4015,   4016, 
+         4017,   4018,   4019,   4020,   4021,   4022,   4023,   4024, 
+         4025,   4026,   4027,   4028,   4029,   4030,   4031,   4032, 
+       }},
+       {{
+         4033,   4034,   4035,   4036,   4037,   4038,   4039,   4040, 
+         4041,   4042,   4043,   4044,   4045,   4046,   4047,   4048, 
+         4049,   4050,   4051,   4052,   4053,   4054,   4055,   4056, 
+         4057,   4058,   4059,   4060,   4061,   4062,   4063,   4064, 
+       }},
+       {{
+         4065,   4066,   4067,   4068,   4069,   4070,   4071,   4072, 
+         4073,   4074,   4075,   4076,   4077,   4078,   4079,   4080, 
+         4081,   4082,   4083,   4084,   4085,   4086,   4087,   4088, 
+         4089,   4090,   4091,   4092,   4093,   4094,   4095,   4096, 
+       }},
+       {{
+         4097,   4098,   4099,   4100,   4101,   4102,   4103,   4104, 
+         4105,   4106,   4107,   4108,   4109,   4110,   4111,   4112, 
+         4113,   4114,   4115,   4116,   4117,   4118,   4119,   4120, 
+         4121,   4122,   4123,   4124,   4125,   4126,   4127,   4128, 
+       }},
+       {{
+         4129,   4130,   4131,   4132,   4133,   4134,   4135,   4136, 
+         4137,   4138,   4139,   4140,   4141,   4142,   4143,   4144, 
+         4145,   4146,   4147,   4148,   4149,   4150,   4151,   4152, 
+         4153,   4154,   4155,   4156,   4157,   4158,   4159,   4160, 
+       }},
+       {{
+         4161,   4162,   4163,   4164,   4165,   4166,   4167,   4168, 
+         4169,   4170,   4171,   4172,   4173,   4174,   4175,   4176, 
+         4177,   4178,   4179,   4180,   4181,   4182,   4183,   4184, 
+         4185,   4186,   4187,   4188,   4189,   4190,   4191,   4192, 
+       }},
+       {{
+         4193,   4194,   4195,   4196,   4197,   4198,   4199,   4200, 
+         4201,   4202,   4203,   4204,   4205,   4206,   4207,   4208, 
+         4209,   4210,   4211,   4212,   4213,   4214,   4215,   4216, 
+         4217,   4218,   4219,   4220,   4221,   4222,   4223,   4224, 
+       }},
+       {{
+         4225,   4226,   4227,   4228,   4229,   4230,   4231,   4232, 
+         4233,   4234,   4235,   4236,   4237,   4238,   4239,   4240, 
+         4241,   4242,   4243,   4244,   4245,   4246,   4247,   4248, 
+         4249,   4250,   4251,   4252,   4253,   4254,   4255,   4256, 
+       }},
+       {{
+         4257,   4258,   4259,   4260,   4261,   4262,   4263,   4264, 
+         4265,   4266,   4267,   4268,   4269,   4270,      0,      0, 
+         4271,      0,   4272,      0,      0,   4273,   4274,   4275, 
+         4276,   4277,   4278,   4279,   4280,   4281,   4282,      0, 
+       }},
+       {{
+         4283,      0,   4284,      0,      0,   4285,   4286,      0, 
+            0,      0,   4287,   4288,   4289,   4290,      0,      0, 
+            0,      0,      0,      0,      0,      0,      0,      0, 
+            0,      0,      0,      0,      0,      0,      0,      0, 
+       }},
+       {{
+        37059,  37061,  37063,  37065,  37068,  37071,  37073,      0, 
+            0,      0,      0,      0,      0,      0,      0,      0, 
+            0,      0,      0,  37075,  37077,  37079,  37081,  37083, 
+            0,      0,      0,      0,      0,   4317,      0,   4319, 
+       }},
+       {{
+        37089,  37090,  37091,  37092,  37093,  37094,  37095,  37096, 
+        37097,  37098,   4331,   4333,   4335,   4337,   4339,   4341, 
+         4343,   4345,   4347,   4349,   4351,   4353,   4355,      0, 
+         4357,   4359,   4361,   4363,   4365,      0,   4367,      0, 
+       }},
+       {{
+         4369,   4371,      0,   4373,   4375,      0,   4377,   4379, 
+         4381,   4383,   4385,   4387,   4389,   4391,   4393,  37163, 
+        37165,  37166,  37167,  37168,  37169,  37170,  37171,  37172, 
+        37173,  37174,  37175,  37176,  37177,  37178,  37179,  37180, 
+       }},
+       {{
+        37181,  37182,  37183,  37184,  37185,  37186,  37187,  37188, 
+        37189,  37190,  37191,  37192,  37193,  37194,  37195,  37196, 
+        37197,  37198,  37199,  37200,  37201,  37202,  37203,  37204, 
+        37205,  37206,  37207,  37208,  37209,  37210,  37211,  37212, 
+       }},
+       {{
+        37213,  37214,  37215,  37216,  37217,  37218,  37219,  37220, 
+        37221,  37222,  37223,  37224,  37225,  37226,  37227,  37228, 
+        37229,  37230,  37231,  37232,  37233,  37234,  37235,  37236, 
+        37237,  37238,  37239,  37240,  37241,  37242,  37243,  37244, 
+       }},
+       {{
+        37245,  37246,  37247,  37248,  37249,  37250,  37251,  37252, 
+        37253,  37254,  37255,  37256,  37257,  37258,  37259,  37260, 
+        37261,  37262,      0,      0,      0,      0,      0,      0, 
+            0,      0,      0,      0,      0,      0,      0,      0, 
+       }},
+       {{
+            0,      0,      0,      0,      0,      0,      0,      0, 
+            0,      0,      0,      0,      0,      0,      0,      0, 
+            0,      0,      0,  37263,  37264,  37265,  37266,  37267, 
+        37268,  37269,  37270,  37271,  37272,  37273,  37274,  37275, 
+       }},
+       {{
+        37276,  37277,  37278,  37279,  37280,  37281,  37282,  37283, 
+        37284,  37285,  37286,  37288,  37290,  37292,  37294,  37296, 
+        37298,  37300,  37302,  37304,  37306,  37308,  37310,  37312, 
+        37314,  37316,  37318,  37320,  37322,  37323,  37324,  37325, 
+       }},
+       {{
+        37326,  37328,  37330,  37332,  37334,  37336,  37338,  37340, 
+        37342,  37344,  37346,  37348,  37350,  37352,  37354,  37356, 
+        37358,  37360,  37362,  37364,  37366,  37368,  37370,  37372, 
+        37374,  37376,  37378,  37380,  37382,  37384,  37386,  37388, 
+       }},
+       {{
+        37390,  37392,  37394,  37396,  37398,  37400,  37402,  37404, 
+        37406,  37408,  37410,  37412,  37414,  37416,  37418,  37420, 
+        37422,  37424,  37426,  37428,  37430,  37432,  37434,  37436, 
+        37438,  37440,  37442,  37444,  37446,  37448,  37450,  37452, 
+       }},
+       {{
+        37454,  37456,  37458,  37460,  37462,  37464,  37466,  37468, 
+        37470,  37472,  37474,  37476,  37478,  37480,  37482,  37484, 
+        37486,  37488,  37490,  37492,  37494,  37496,  37498,  37500, 
+        37502,  37504,  37506,  37508,  37510,  37512,  37514,  37517, 
+       }},
+       {{
+        37520,  37523,  37526,  37529,  37532,  37534,  37536,  37538, 
+        37540,  37542,  37544,  37546,  37548,  37550,  37552,  37554, 
+        37556,  37558,  37560,  37562,  37564,  37566,  37568,  37570, 
+        37572,  37574,  37576,  37578,  37580,  37582,  37584,  37586, 
+       }},
+       {{
+        37588,  37590,  37592,  37594,  37596,  37598,  37600,  37602, 
+        37604,  37606,  37608,  37610,  37612,  37614,  37616,  37618, 
+        37620,  37622,  37624,  37626,  37628,  37630,  37632,  37634, 
+        37636,  37638,  37640,  37642,  37644,  37646,  37648,  37650, 
+       }},
+       {{
+        37652,  37654,  37656,  37658,  37660,  37662,  37664,  37666, 
+        37668,  37670,  37672,  37674,  37676,  37678,  37680,  37682, 
+        37684,  37686,  37688,  37690,  37692,  37694,  37696,  37698, 
+        37700,  37702,  37704,  37706,  37708,  37710,  37712,  37714, 
+       }},
+       {{
+        37716,  37718,  37720,  37722,  37724,  37726,  37728,  37730, 
+        37732,  37734,  37736,  37738,  37740,  37742,  37744,  37746, 
+        37748,  37750,  37752,  37754,  37756,  37758,  37760,  37762, 
+        37764,  37766,  37768,  37770,  37772,  37774,  37776,  37778, 
+       }},
+       {{
+        37780,  37782,  37784,  37786,  37788,  37790,  37792,  37794, 
+        37796,  37798,  37800,  37802,  37804,  37806,  37808,  37810, 
+        37812,  37814,  37816,  37819,  37822,  37825,  37827,  37829, 
+        37831,  37833,  37835,  37837,  37839,  37841,  37843,  37845, 
+       }},
+       {{
+        37847,  37849,  37851,  37853,  37855,  37857,  37859,  37861, 
+        37863,  37865,  37867,  37869,  37871,  37873,  37875,  37877, 
+        37879,  37881,  37883,  37885,  37887,  37889,  37891,  37893, 
+        37895,  37897,  37899,  37901,  37903,  37905,  37907,  37909, 
+       }},
+       {{
+        37911,  37913,  37915,  37917,  37919,  37921,  37923,  37925, 
+        37927,  37929,  37931,  37933,  37935,  37937,  37939,  37941, 
+        37943,  37945,  37947,  37949,  37951,  37953,  37955,  37957, 
+        37959,  37961,  37963,  37965,  37967,  37969,      0,      0, 
+       }},
+       {{
+            0,      0,      0,      0,      0,      0,      0,      0, 
+            0,      0,      0,      0,      0,      0,      0,      0, 
+        37971,  37974,  37977,  37980,  37983,  37986,  37989,  37992, 
+        37995,  37998,  38001,  38004,  38007,  38010,  38013,  38016, 
+       }},
+       {{
+        38019,  38022,  38025,  38028,  38031,  38034,  38037,  38040, 
+        38043,  38046,  38049,  38052,  38055,  38058,  38061,  38064, 
+        38067,  38070,  38073,  38076,  38079,  38082,  38085,  38088, 
+        38091,  38094,  38097,  38100,  38103,  38106,  38109,  38112, 
+       }},
+       {{
+        38115,  38118,  38121,  38124,  38127,  38130,  38133,  38136, 
+        38139,  38142,  38145,  38148,  38151,  38154,  38157,  38160, 
+            0,      0,  38163,  38166,  38169,  38172,  38175,  38178, 
+        38181,  38184,  38187,  38190,  38193,  38196,  38199,  38202, 
+       }},
+       {{
+        38205,  38208,  38211,  38214,  38217,  38220,  38223,  38226, 
+        38229,  38232,  38235,  38238,  38241,  38244,  38247,  38250, 
+        38253,  38256,  38259,  38262,  38265,  38268,  38271,  38274, 
+        38277,  38280,  38283,  38286,  38289,  38292,  38295,  38298, 
+       }},
+       {{
+        38301,  38304,  38307,  38310,  38313,  38316,  38319,  38322, 
+            0,      0,      0,      0,      0,      0,      0,      0, 
+            0,      0,      0,      0,      0,      0,      0,      0, 
+            0,      0,      0,      0,      0,      0,      0,      0, 
+       }},
+       {{
+            0,      0,      0,      0,      0,      0,      0,      0, 
+            0,      0,      0,      0,      0,      0,      0,      0, 
+        38325,  38328,  38331,  38335,  38339,  38343,  38347,  38351, 
+        38355,  38359,  38362,  38380,      0,      0,      0,      0, 
+       }},
+       {{
+            0,      0,      0,      0,      0,      0,      0,      0, 
+            0,      0,      0,      0,      0,      0,      0,      0, 
+        38388,  38389,  38390,  38391,  38392,  38393,  38394,  38395, 
+        38396,  38397,  38398,  38399,  38400,  38401,  38402,  38403, 
+       }},
+       {{
+        38404,  38405,  38406,  38407,  38408,      0,      0,      0, 
+            0,  38409,  38410,  38411,  38412,  38413,  38414,  38415, 
+        38416,  38417,  38418,      0,  38419,  38420,  38421,  38422, 
+        38423,  38424,  38425,  38426,  38427,  38428,  38429,  38430, 
+       }},
+       {{
+        38431,  38432,  38433,  38434,  38435,  38436,  38437,      0, 
+        38438,  38439,  38440,  38441,      0,      0,      0,      0, 
+        38442,  38444,  38446,      0,  38448,      0,  38450,  38452, 
+        38454,  38456,  38458,  38460,  38462,  38464,  38466,  38468, 
+       }},
+       {{
+        38470,  38471,  38472,  38473,  38474,  38475,  38476,  38477, 
+        38478,  38479,  38480,  38481,  38482,  38483,  38484,  38485, 
+        38486,  38487,  38488,  38489,  38490,  38491,  38492,  38493, 
+        38494,  38495,  38496,  38497,  38498,  38499,  38500,  38501, 
+       }},
+       {{
+        38502,  38503,  38504,  38505,  38506,  38507,  38508,  38509, 
+        38510,  38511,  38512,  38513,  38514,  38515,  38516,  38517, 
+        38518,  38519,  38520,  38521,  38522,  38523,  38524,  38525, 
+        38526,  38527,  38528,  38529,  38530,  38531,  38532,  38533, 
+       }},
+       {{
+        38534,  38535,  38536,  38537,  38538,  38539,  38540,  38541, 
+        38542,  38543,  38544,  38545,  38546,  38547,  38548,  38549, 
+        38550,  38551,  38552,  38553,  38554,  38555,  38556,  38557, 
+        38558,  38559,  38560,  38561,  38562,  38563,  38564,  38565, 
+       }},
+       {{
+        38566,  38567,  38568,  38569,  38570,  38571,  38572,  38573, 
+        38574,  38575,  38576,  38577,  38578,  38579,  38580,  38581, 
+        38582,  38583,  38584,  38585,  38586,  38587,  38589,  38591, 
+        38593,  38595,  38597,  38599,  38601,      0,      0,      0, 
+       }},
+       {{
+            0,  38603,  38604,  38605,  38606,  38607,  38608,  38609, 
+        38610,  38611,  38612,  38613,  38614,  38615,  38616,  38617, 
+        38618,  38619,  38620,  38621,  38622,  38623,  38624,  38625, 
+        38626,  38627,  38628,  38629,  38630,  38631,  38632,  38633, 
+       }},
+       {{
+        38634,  38635,  38636,  38637,  38638,  38639,  38640,  38641, 
+        38642,  38643,  38644,  38645,  38646,  38647,  38648,  38649, 
+        38650,  38651,  38652,  38653,  38654,  38655,  38656,  38657, 
+        38658,  38659,  38660,  38661,  38662,  38663,  38664,  38665, 
+       }},
+       {{
+        38666,  38667,  38668,  38669,  38670,  38671,  38672,  38673, 
+        38674,  38675,  38676,  38677,  38678,  38679,  38680,  38681, 
+        38682,  38683,  38684,  38685,  38686,  38687,  38688,  38689, 
+        38690,  38691,  38692,  38693,  38694,  38695,  38696,      0, 
+       }},
+       {{
+            0,  38697,  38698,  38699,  38700,  38701,  38702,  38703, 
+        38704,  38705,  38706,  38707,  38708,  38709,  38710,  38711, 
+        38712,  38713,  38714,  38715,  38716,  38717,  38718,  38719, 
+        38720,  38721,  38722,  38723,  38724,  38725,  38726,  38727, 
+       }},
+       {{
+        38728,  38729,  38730,  38731,  38732,  38733,  38734,  38735, 
+        38736,  38737,  38738,  38739,  38740,  38741,  38742,  38743, 
+        38744,  38745,  38746,  38747,  38748,  38749,  38750,  38751, 
+        38752,  38753,  38754,  38755,  38756,  38757,  38758,  38759, 
+       }},
+       {{
+        38760,  38761,  38762,  38763,  38764,  38765,  38766,  38767, 
+        38768,  38769,  38770,  38771,  38772,  38773,  38774,  38775, 
+        38776,  38777,  38778,  38779,  38780,  38781,  38782,  38783, 
+        38784,  38785,  38786,  38787,  38788,  38789,  38790,      0, 
+       }},
+       {{
+            0,      0,  38791,  38792,  38793,  38794,  38795,  38796, 
+            0,      0,  38797,  38798,  38799,  38800,  38801,  38802, 
+            0,      0,  38803,  38804,  38805,  38806,  38807,  38808, 
+            0,      0,  38809,  38810,  38811,      0,      0,      0, 
+       }},
+       {{
+        38812,  38813,  38814,  38815,  38816,  38817,  38818,      0, 
+        38819,  38820,  38821,  38822,  38823,  38824,  38825,      0, 
+            0,      0,      0,      0,      0,      0,      0,      0, 
+            0,      0,      0,      0,      0,      0,      0,      0, 
+       }},
+       {{
+            0,      0,      0,      0,      0,      0,      0,      0, 
+            0,      0,      0,      0,      0,      0,      0,      0, 
+            0,      0,      0,      0,      0,      0,      0,      0, 
+            0,      0,      0,      0,      0,      0,   6058,   6060, 
+       }},
+       {{
+         6062,   6064,   6066,   6068,   6070,      0,      0,      0, 
+            0,      0,      0,      0,      0,      0,      0,      0, 
+            0,      0,      0,      0,      0,      0,      0,      0, 
+            0,      0,      0,      0,      0,      0,      0,      0, 
+       }},
+       {{
+            0,      0,      0,      0,      0,      0,      0,      0, 
+            0,      0,      0,      0,      0,      0,      0,      0, 
+            0,      0,      0,      0,      0,      0,      0,      0, 
+            0,      0,      0,   6072,   6074,   6076,   6078,   6080, 
+       }},
+       {{
+         6082,      0,      0,      0,      0,      0,      0,      0, 
+            0,      0,      0,      0,      0,      0,      0,      0, 
+            0,      0,      0,      0,      0,      0,      0,      0, 
+            0,      0,      0,      0,      0,      0,      0,      0, 
+       }},
+       {{
+        38852,  38853,  38854,  38855,  38856,  38857,  38858,  38859, 
+        38860,  38861,  38862,  38863,  38864,  38865,  38866,  38867, 
+        38868,  38869,  38870,  38871,  38872,  38873,  38874,  38875, 
+        38876,  38877,  38878,  38879,  38880,  38881,  38882,  38883, 
+       }},
+       {{
+        38884,  38885,  38886,  38887,  38888,  38889,  38890,  38891, 
+        38892,  38893,  38894,  38895,  38896,  38897,  38898,  38899, 
+        38900,  38901,  38902,  38903,  38904,  38905,  38906,  38907, 
+        38908,  38909,  38910,  38911,  38912,  38913,  38914,  38915, 
+       }},
+       {{
+        38916,  38917,  38918,  38919,  38920,  38921,  38922,  38923, 
+        38924,  38925,  38926,  38927,  38928,  38929,  38930,  38931, 
+        38932,  38933,  38934,  38935,  38936,      0,  38937,  38938, 
+        38939,  38940,  38941,  38942,  38943,  38944,  38945,  38946, 
+       }},
+       {{
+        38947,  38948,  38949,  38950,  38951,  38952,  38953,  38954, 
+        38955,  38956,  38957,  38958,  38959,  38960,  38961,  38962, 
+        38963,  38964,  38965,  38966,  38967,  38968,  38969,  38970, 
+        38971,  38972,  38973,  38974,  38975,  38976,  38977,  38978, 
+       }},
+       {{
+        38979,  38980,  38981,  38982,  38983,  38984,  38985,  38986, 
+        38987,  38988,  38989,  38990,  38991,  38992,  38993,  38994, 
+        38995,  38996,  38997,  38998,  38999,  39000,  39001,  39002, 
+        39003,  39004,  39005,  39006,  39007,      0,  39008,  39009, 
+       }},
+       {{
+            0,      0,  39010,      0,      0,  39011,  39012,      0, 
+            0,  39013,  39014,  39015,  39016,      0,  39017,  39018, 
+        39019,  39020,  39021,  39022,  39023,  39024,  39025,  39026, 
+        39027,  39028,      0,  39029,      0,  39030,  39031,  39032, 
+       }},
+       {{
+        39033,      0,  39034,  39035,      0,  39036,  39037,  39038, 
+        39039,  39040,  39041,  39042,  39043,  39044,  39045,  39046, 
+        39047,  39048,  39049,  39050,  39051,  39052,  39053,  39054, 
+        39055,  39056,  39057,  39058,  39059,  39060,  39061,  39062, 
+       }},
+       {{
+        39063,  39064,  39065,  39066,  39067,  39068,  39069,  39070, 
+        39071,  39072,  39073,  39074,  39075,  39076,  39077,  39078, 
+        39079,  39080,  39081,  39082,  39083,  39084,  39085,  39086, 
+        39087,  39088,  39089,  39090,  39091,  39092,  39093,  39094, 
+       }},
+       {{
+        39095,  39096,  39097,  39098,  39099,  39100,      0,  39101, 
+        39102,  39103,  39104,      0,      0,  39105,  39106,  39107, 
+        39108,  39109,  39110,  39111,  39112,      0,  39113,  39114, 
+        39115,  39116,  39117,  39118,  39119,      0,  39120,  39121, 
+       }},
+       {{
+        39122,  39123,  39124,  39125,  39126,  39127,  39128,  39129, 
+        39130,  39131,  39132,  39133,  39134,  39135,  39136,  39137, 
+        39138,  39139,  39140,  39141,  39142,  39143,  39144,  39145, 
+        39146,  39147,      0,  39148,  39149,  39150,  39151,      0, 
+       }},
+       {{
+        39152,  39153,  39154,  39155,  39156,      0,  39157,      0, 
+            0,      0,  39158,  39159,  39160,  39161,  39162,  39163, 
+        39164,      0,  39165,  39166,  39167,  39168,  39169,  39170, 
+        39171,  39172,  39173,  39174,  39175,  39176,  39177,  39178, 
+       }},
+       {{
+        39179,  39180,  39181,  39182,  39183,  39184,  39185,  39186, 
+        39187,  39188,  39189,  39190,  39191,  39192,  39193,  39194, 
+        39195,  39196,  39197,  39198,  39199,  39200,  39201,  39202, 
+        39203,  39204,  39205,  39206,  39207,  39208,  39209,  39210, 
+       }},
+       {{
+        39211,  39212,  39213,  39214,  39215,  39216,  39217,  39218, 
+        39219,  39220,  39221,  39222,  39223,  39224,  39225,  39226, 
+        39227,  39228,  39229,  39230,  39231,  39232,  39233,  39234, 
+        39235,  39236,  39237,  39238,  39239,  39240,  39241,  39242, 
+       }},
+       {{
+        39243,  39244,  39245,  39246,  39247,  39248,  39249,  39250, 
+        39251,  39252,  39253,  39254,  39255,  39256,  39257,  39258, 
+        39259,  39260,  39261,  39262,  39263,  39264,  39265,  39266, 
+        39267,  39268,  39269,  39270,  39271,  39272,  39273,  39274, 
+       }},
+       {{
+        39275,  39276,  39277,  39278,  39279,  39280,  39281,  39282, 
+        39283,  39284,  39285,  39286,  39287,  39288,  39289,  39290, 
+        39291,  39292,  39293,  39294,  39295,  39296,  39297,  39298, 
+        39299,  39300,  39301,  39302,  39303,  39304,  39305,  39306, 
+       }},
+       {{
+        39307,  39308,  39309,  39310,  39311,  39312,  39313,  39314, 
+        39315,  39316,  39317,  39318,  39319,  39320,  39321,  39322, 
+        39323,  39324,  39325,  39326,  39327,  39328,  39329,  39330, 
+        39331,  39332,  39333,  39334,  39335,  39336,  39337,  39338, 
+       }},
+       {{
+        39339,  39340,  39341,  39342,  39343,  39344,  39345,  39346, 
+        39347,  39348,  39349,  39350,  39351,  39352,  39353,  39354, 
+        39355,  39356,  39357,  39358,  39359,  39360,  39361,  39362, 
+        39363,  39364,  39365,  39366,  39367,  39368,  39369,  39370, 
+       }},
+       {{
+        39371,  39372,  39373,  39374,  39375,  39376,  39377,  39378, 
+        39379,  39380,  39381,  39382,  39383,  39384,  39385,  39386, 
+        39387,  39388,  39389,  39390,  39391,  39392,  39393,  39394, 
+        39395,  39396,  39397,  39398,  39399,  39400,  39401,  39402, 
+       }},
+       {{
+        39403,  39404,  39405,  39406,  39407,  39408,  39409,  39410, 
+        39411,  39412,  39413,  39414,  39415,  39416,  39417,  39418, 
+        39419,  39420,  39421,  39422,  39423,  39424,  39425,  39426, 
+        39427,  39428,  39429,  39430,  39431,  39432,  39433,  39434, 
+       }},
+       {{
+        39435,  39436,  39437,  39438,  39439,  39440,  39441,  39442, 
+        39443,  39444,  39445,  39446,  39447,  39448,  39449,  39450, 
+        39451,  39452,  39453,  39454,  39455,  39456,  39457,  39458, 
+        39459,  39460,  39461,  39462,  39463,  39464,  39465,  39466, 
+       }},
+       {{
+        39467,  39468,  39469,  39470,  39471,  39472,  39473,  39474, 
+        39475,  39476,  39477,  39478,  39479,  39480,  39481,  39482, 
+        39483,  39484,  39485,  39486,  39487,  39488,  39489,  39490, 
+        39491,  39492,  39493,  39494,  39495,  39496,  39497,  39498, 
+       }},
+       {{
+        39499,  39500,  39501,  39502,      0,      0,      0,      0, 
+        39503,  39504,  39505,  39506,  39507,  39508,  39509,  39510, 
+        39511,  39512,  39513,  39514,  39515,  39516,  39517,  39518, 
+        39519,  39520,  39521,  39522,  39523,  39524,  39525,  39526, 
+       }},
+       {{
+        39527,  39528,  39529,  39530,  39531,  39532,  39533,  39534, 
+        39535,  39536,  39537,  39538,  39539,  39540,  39541,  39542, 
+        39543,  39544,  39545,  39546,  39547,  39548,  39549,  39550, 
+        39551,  39552,  39553,  39554,  39555,  39556,  39557,  39558, 
+       }},
+       {{
+        39559,  39560,  39561,  39562,  39563,  39564,  39565,  39566, 
+        39567,  39568,  39569,  39570,  39571,  39572,  39573,  39574, 
+        39575,  39576,  39577,  39578,  39579,  39580,  39581,  39582, 
+        39583,  39584,  39585,  39586,  39587,  39588,  39589,  39590, 
+       }},
+       {{
+        39591,  39592,  39593,  39594,  39595,  39596,  39597,  39598, 
+        39599,  39600,  39601,  39602,  39603,  39604,  39605,  39606, 
+        39607,  39608,  39609,  39610,  39611,  39612,  39613,  39614, 
+        39615,  39616,  39617,  39618,  39619,  39620,  39621,  39622, 
+       }},
+       {{
+        39623,  39624,  39625,  39626,  39627,  39628,  39629,  39630, 
+        39631,  39632,  39633,  39634,  39635,  39636,  39637,  39638, 
+        39639,  39640,  39641,  39642,  39643,  39644,  39645,  39646, 
+        39647,  39648,  39649,  39650,  39651,  39652,  39653,  39654, 
+       }},
+       {{
+        39655,  39656,  39657,  39658,  39659,  39660,  39661,  39662, 
+        39663,  39664,  39665,  39666,  39667,  39668,  39669,  39670, 
+        39671,  39672,  39673,  39674,  39675,  39676,  39677,  39678, 
+        39679,  39680,  39681,  39682,  39683,  39684,  39685,  39686, 
+       }},
+       {{
+        39687,  39688,  39689,  39690,  39691,  39692,  39693,  39694, 
+        39695,  39696,  39697,  39698,  39699,  39700,  39701,  39702, 
+        39703,  39704,  39705,  39706,  39707,  39708,  39709,  39710, 
+        39711,  39712,  39713,  39714,  39715,  39716,  39717,  39718, 
+       }},
+       {{
+        39719,  39720,  39721,  39722,  39723,  39724,  39725,  39726, 
+        39727,  39728,  39729,  39730,  39731,  39732,  39733,  39734, 
+        39735,  39736,  39737,  39738,  39739,  39740,  39741,  39742, 
+        39743,  39744,  39745,  39746,  39747,  39748,  39749,  39750, 
+       }},
+       {{
+        39751,  39752,  39753,  39754,  39755,  39756,  39757,  39758, 
+        39759,  39760,  39761,  39762,  39763,  39764,  39765,  39766, 
+        39767,  39768,  39769,  39770,  39771,  39772,  39773,  39774, 
+        39775,  39776,  39777,  39778,  39779,  39780,  39781,  39782, 
+       }},
+       {{
+        39783,  39784,  39785,  39786,  39787,  39788,  39789,  39790, 
+        39791,  39792,      0,      0,      0,      0,  39793,  39794, 
+        39795,  39796,  39797,  39798,  39799,  39800,  39801,  39802, 
+        39803,  39804,  39805,  39806,  39807,  39808,  39809,  39810, 
+       }},
+       {{
+        39811,  39812,  39813,  39814,  39815,  39816,  39817,  39818, 
+        39819,  39820,  39821,  39822,  39823,  39824,  39825,  39826, 
+        39827,  39828,  39829,  39830,  39831,  39832,  39833,  39834, 
+        39835,  39836,  39837,  39838,  39839,  39840,  39841,  39842, 
+       }},
+       {{
+         7075,   7076,   7077,   7078,   7079,   7080,   7081,   7082, 
+         7083,   7084,   7085,   7086,   7087,   7088,   7089,   7090, 
+         7091,   7092,   7093,   7094,   7095,   7096,   7097,   7098, 
+         7099,   7100,   7101,   7102,   7103,   7104,   7105,   7106, 
+       }},
+       {{
+         7107,   7108,   7109,   7110,   7111,   7112,   7113,   7114, 
+         7115,   7116,   7117,   7118,   7119,   7120,   7121,   7122, 
+         7123,   7124,   7125,   7126,   7127,   7128,   7129,   7130, 
+         7131,   7132,   7133,   7134,   7135,   7136,   7137,   7138, 
+       }},
+       {{
+         7139,   7140,   7141,   7142,   7143,   7144,   7145,   7146, 
+         7147,   7148,   7149,   7150,   7151,   7152,   7153,   7154, 
+         7155,   7156,   7157,   7158,   7159,   7160,   7161,   7162, 
+         7163,   7164,   7165,   7166,   7167,   7168,   7169,   7170, 
+       }},
+       {{
+         7171,   7172,   7173,   7174,   7175,   7176,   7177,   7178, 
+         7179,   7180,   7181,   7182,   7183,   7184,   7185,   7186, 
+         7187,   7188,   7189,   7190,   7191,   7192,   7193,   7194, 
+         7195,   7196,   7197,   7198,   7199,   7200,   7201,   7202, 
+       }},
+       {{
+         7203,   7204,   7205,   7206,   7207,   7208,   7209,   7210, 
+         7211,   7212,   7213,   7214,   7215,   7216,   7217,   7218, 
+         7219,   7220,   7221,   7222,   7223,   7224,   7225,   7226, 
+         7227,   7228,   7229,   7230,   7231,   7232,   7233,   7234, 
+       }},
+       {{
+         7235,   7236,   7237,   7238,   7239,   7240,   7241,   7242, 
+         7243,   7244,   7245,   7246,   7247,   7248,   7249,   7250, 
+         7251,   7252,   7253,   7254,   7255,   7256,   7257,   7258, 
+         7259,   7260,   7261,   7262,   7263,   7264,   7265,   7266, 
+       }},
+       {{
+         7267,   7268,   7269,   7270,   7271,   7272,   7273,   7274, 
+         7275,   7276,   7277,   7278,   7279,   7280,   7281,   7282, 
+         7283,   7284,   7285,   7286,   7287,   7288,   7289,   7290, 
+         7291,   7292,   7293,   7294,   7295,   7296,   7297,   7298, 
+       }},
+       {{
+         7299,   7300,   7301,   7302,   7303,   7304,   7305,   7306, 
+         7307,   7308,   7309,   7310,   7311,   7312,   7313,   7314, 
+         7315,   7316,   7317,   7318,   7319,   7320,   7321,   7322, 
+         7323,   7324,   7325,   7326,   7327,   7328,   7329,   7330, 
+       }},
+       {{
+         7331,   7332,   7333,   7334,   7335,   7336,   7337,   7338, 
+         7339,   7340,   7341,   7342,   7343,   7344,   7345,   7346, 
+         7347,   7348,   7349,   7350,   7351,   7352,   7353,   7354, 
+         7355,   7356,   7357,   7358,   7359,   7360,   7361,   7362, 
+       }},
+       {{
+         7363,   7364,   7365,   7366,   7367,   7368,   7369,   7370, 
+         7371,   7372,   7373,   7374,   7375,   7376,   7377,   7378, 
+         7379,   7380,   7381,   7382,   7383,   7384,   7385,   7386, 
+         7387,   7388,   7389,   7390,   7391,   7392,   7393,   7394, 
+       }},
+       {{
+         7395,   7396,   7397,   7398,   7399,   7400,   7401,   7402, 
+         7403,   7404,   7405,   7406,   7407,   7408,   7409,   7410, 
+         7411,   7412,   7413,   7414,   7415,   7416,   7417,   7418, 
+         7419,   7420,   7421,   7422,   7423,   7424,   7425,   7426, 
+       }},
+       {{
+         7427,   7428,   7429,   7430,   7431,   7432,   7433,   7434, 
+         7435,   7436,   7437,   7438,   7439,   7440,   7441,   7442, 
+         7443,   7444,   7445,   7446,   7447,   7448,   7449,   7450, 
+         7451,   7452,   7453,   7454,   7455,   7456,   7457,   7458, 
+       }},
+       {{
+         7459,   7460,   7461,   7462,   7463,   7464,   7465,   7466, 
+         7467,   7468,   7469,   7470,   7471,   7472,   7473,   7474, 
+         7475,   7476,   7477,   7478,   7479,   7480,   7481,   7482, 
+         7483,   7484,   7485,   7486,   7487,   7488,   7489,   7490, 
+       }},
+       {{
+         7491,   7492,   7493,   7494,   7495,   7496,   7497,   7498, 
+         7499,   7500,   7501,   7502,   7503,   7504,   7505,   7506, 
+         7507,   7508,   7509,   7510,   7511,   7512,   7513,   7514, 
+         7515,   7516,   7517,   7518,   7519,   7520,   7521,   7522, 
+       }},
+       {{
+         7523,   7524,   7525,   7526,   7527,   7528,   7529,   7530, 
+         7531,   7532,   7533,   7534,   7535,   7536,   7537,   7538, 
+         7539,   7540,   7541,   7542,   7543,   7544,   7545,   7546, 
+         7547,   7548,   7549,   7550,   7551,   7552,   7553,   7554, 
+       }},
+       {{
+         7555,   7556,   7557,   7558,   7559,   7560,   7561,   7562, 
+         7563,   7564,   7565,   7566,   7567,   7568,   7569,   7570, 
+         7571,   7572,   7573,   7574,   7575,   7576,   7577,   7578, 
+         7579,   7580,   7581,   7582,   7583,   7584,   7585,   7586, 
+       }},
+       {{
+         7587,   7588,   7589,   7590,   7591,   7592,   7593,   7594, 
+         7595,   7596,   7597,   7598,   7599,   7600,   7601,   7602, 
+         7603,   7604,   7605,   7606,   7607,   7608,   7609,   7610, 
+         7611,   7612,   7613,   7614,   7615,   7616,      0,      0, 
+       }},
+};
+static const unsigned long v310_decompose_seq[] = {
+       0x00000000, 0x80000020, 0x00000020, 0x80000308, 
+       0x80000061, 0x00000020, 0x80000304, 0x80000032, 
+       0x80000033, 0x00000020, 0x80000301, 0x800003bc, 
+       0x00000020, 0x80000327, 0x80000031, 0x8000006f, 
+       0x00000031, 0x00002044, 0x80000034, 0x00000031, 
+       0x00002044, 0x80000032, 0x00000033, 0x00002044, 
+       0x80000034, 0x00000041, 0x80000300, 0x00000041, 
+       0x80000301, 0x00000041, 0x80000302, 0x00000041, 
+       0x80000303, 0x00000041, 0x80000308, 0x00000041, 
+       0x8000030a, 0x00000043, 0x80000327, 0x00000045, 
+       0x80000300, 0x00000045, 0x80000301, 0x00000045, 
+       0x80000302, 0x00000045, 0x80000308, 0x00000049, 
+       0x80000300, 0x00000049, 0x80000301, 0x00000049, 
+       0x80000302, 0x00000049, 0x80000308, 0x0000004e, 
+       0x80000303, 0x0000004f, 0x80000300, 0x0000004f, 
+       0x80000301, 0x0000004f, 0x80000302, 0x0000004f, 
+       0x80000303, 0x0000004f, 0x80000308, 0x00000055, 
+       0x80000300, 0x00000055, 0x80000301, 0x00000055, 
+       0x80000302, 0x00000055, 0x80000308, 0x00000059, 
+       0x80000301, 0x00000061, 0x80000300, 0x00000061, 
+       0x80000301, 0x00000061, 0x80000302, 0x00000061, 
+       0x80000303, 0x00000061, 0x80000308, 0x00000061, 
+       0x8000030a, 0x00000063, 0x80000327, 0x00000065, 
+       0x80000300, 0x00000065, 0x80000301, 0x00000065, 
+       0x80000302, 0x00000065, 0x80000308, 0x00000069, 
+       0x80000300, 0x00000069, 0x80000301, 0x00000069, 
+       0x80000302, 0x00000069, 0x80000308, 0x0000006e, 
+       0x80000303, 0x0000006f, 0x80000300, 0x0000006f, 
+       0x80000301, 0x0000006f, 0x80000302, 0x0000006f, 
+       0x80000303, 0x0000006f, 0x80000308, 0x00000075, 
+       0x80000300, 0x00000075, 0x80000301, 0x00000075, 
+       0x80000302, 0x00000075, 0x80000308, 0x00000079, 
+       0x80000301, 0x00000079, 0x80000308, 0x00000041, 
+       0x80000304, 0x00000061, 0x80000304, 0x00000041, 
+       0x80000306, 0x00000061, 0x80000306, 0x00000041, 
+       0x80000328, 0x00000061, 0x80000328, 0x00000043, 
+       0x80000301, 0x00000063, 0x80000301, 0x00000043, 
+       0x80000302, 0x00000063, 0x80000302, 0x00000043, 
+       0x80000307, 0x00000063, 0x80000307, 0x00000043, 
+       0x8000030c, 0x00000063, 0x8000030c, 0x00000044, 
+       0x8000030c, 0x00000064, 0x8000030c, 0x00000045, 
+       0x80000304, 0x00000065, 0x80000304, 0x00000045, 
+       0x80000306, 0x00000065, 0x80000306, 0x00000045, 
+       0x80000307, 0x00000065, 0x80000307, 0x00000045, 
+       0x80000328, 0x00000065, 0x80000328, 0x00000045, 
+       0x8000030c, 0x00000065, 0x8000030c, 0x00000047, 
+       0x80000302, 0x00000067, 0x80000302, 0x00000047, 
+       0x80000306, 0x00000067, 0x80000306, 0x00000047, 
+       0x80000307, 0x00000067, 0x80000307, 0x00000047, 
+       0x80000327, 0x00000067, 0x80000327, 0x00000048, 
+       0x80000302, 0x00000068, 0x80000302, 0x00000049, 
+       0x80000303, 0x00000069, 0x80000303, 0x00000049, 
+       0x80000304, 0x00000069, 0x80000304, 0x00000049, 
+       0x80000306, 0x00000069, 0x80000306, 0x00000049, 
+       0x80000328, 0x00000069, 0x80000328, 0x00000049, 
+       0x80000307, 0x00000049, 0x8000004a, 0x00000069, 
+       0x8000006a, 0x0000004a, 0x80000302, 0x0000006a, 
+       0x80000302, 0x0000004b, 0x80000327, 0x0000006b, 
+       0x80000327, 0x0000004c, 0x80000301, 0x0000006c, 
+       0x80000301, 0x0000004c, 0x80000327, 0x0000006c, 
+       0x80000327, 0x0000004c, 0x8000030c, 0x0000006c, 
+       0x8000030c, 0x0000004c, 0x800000b7, 0x0000006c, 
+       0x800000b7, 0x0000004e, 0x80000301, 0x0000006e, 
+       0x80000301, 0x0000004e, 0x80000327, 0x0000006e, 
+       0x80000327, 0x0000004e, 0x8000030c, 0x0000006e, 
+       0x8000030c, 0x000002bc, 0x8000006e, 0x0000004f, 
+       0x80000304, 0x0000006f, 0x80000304, 0x0000004f, 
+       0x80000306, 0x0000006f, 0x80000306, 0x0000004f, 
+       0x8000030b, 0x0000006f, 0x8000030b, 0x00000052, 
+       0x80000301, 0x00000072, 0x80000301, 0x00000052, 
+       0x80000327, 0x00000072, 0x80000327, 0x00000052, 
+       0x8000030c, 0x00000072, 0x8000030c, 0x00000053, 
+       0x80000301, 0x00000073, 0x80000301, 0x00000053, 
+       0x80000302, 0x00000073, 0x80000302, 0x00000053, 
+       0x80000327, 0x00000073, 0x80000327, 0x00000053, 
+       0x8000030c, 0x00000073, 0x8000030c, 0x00000054, 
+       0x80000327, 0x00000074, 0x80000327, 0x00000054, 
+       0x8000030c, 0x00000074, 0x8000030c, 0x00000055, 
+       0x80000303, 0x00000075, 0x80000303, 0x00000055, 
+       0x80000304, 0x00000075, 0x80000304, 0x00000055, 
+       0x80000306, 0x00000075, 0x80000306, 0x00000055, 
+       0x8000030a, 0x00000075, 0x8000030a, 0x00000055, 
+       0x8000030b, 0x00000075, 0x8000030b, 0x00000055, 
+       0x80000328, 0x00000075, 0x80000328, 0x00000057, 
+       0x80000302, 0x00000077, 0x80000302, 0x00000059, 
+       0x80000302, 0x00000079, 0x80000302, 0x00000059, 
+       0x80000308, 0x0000005a, 0x80000301, 0x0000007a, 
+       0x80000301, 0x0000005a, 0x80000307, 0x0000007a, 
+       0x80000307, 0x0000005a, 0x8000030c, 0x0000007a, 
+       0x8000030c, 0x80000073, 0x0000004f, 0x8000031b, 
+       0x0000006f, 0x8000031b, 0x00000055, 0x8000031b, 
+       0x00000075, 0x8000031b, 0x00000044, 0x8000017d, 
+       0x00000044, 0x8000017e, 0x00000064, 0x8000017e, 
+       0x0000004c, 0x8000004a, 0x0000004c, 0x8000006a, 
+       0x0000006c, 0x8000006a, 0x0000004e, 0x8000004a, 
+       0x0000004e, 0x8000006a, 0x0000006e, 0x8000006a, 
+       0x00000041, 0x8000030c, 0x00000061, 0x8000030c, 
+       0x00000049, 0x8000030c, 0x00000069, 0x8000030c, 
+       0x0000004f, 0x8000030c, 0x0000006f, 0x8000030c, 
+       0x00000055, 0x8000030c, 0x00000075, 0x8000030c, 
+       0x000000dc, 0x80000304, 0x000000fc, 0x80000304, 
+       0x000000dc, 0x80000301, 0x000000fc, 0x80000301, 
+       0x000000dc, 0x8000030c, 0x000000fc, 0x8000030c, 
+       0x000000dc, 0x80000300, 0x000000fc, 0x80000300, 
+       0x000000c4, 0x80000304, 0x000000e4, 0x80000304, 
+       0x00000226, 0x80000304, 0x00000227, 0x80000304, 
+       0x000000c6, 0x80000304, 0x000000e6, 0x80000304, 
+       0x00000047, 0x8000030c, 0x00000067, 0x8000030c, 
+       0x0000004b, 0x8000030c, 0x0000006b, 0x8000030c, 
+       0x0000004f, 0x80000328, 0x0000006f, 0x80000328, 
+       0x000001ea, 0x80000304, 0x000001eb, 0x80000304, 
+       0x000001b7, 0x8000030c, 0x00000292, 0x8000030c, 
+       0x0000006a, 0x8000030c, 0x00000044, 0x8000005a, 
+       0x00000044, 0x8000007a, 0x00000064, 0x8000007a, 
+       0x00000047, 0x80000301, 0x00000067, 0x80000301, 
+       0x0000004e, 0x80000300, 0x0000006e, 0x80000300, 
+       0x000000c5, 0x80000301, 0x000000e5, 0x80000301, 
+       0x000000c6, 0x80000301, 0x000000e6, 0x80000301, 
+       0x000000d8, 0x80000301, 0x000000f8, 0x80000301, 
+       0x00000041, 0x8000030f, 0x00000061, 0x8000030f, 
+       0x00000041, 0x80000311, 0x00000061, 0x80000311, 
+       0x00000045, 0x8000030f, 0x00000065, 0x8000030f, 
+       0x00000045, 0x80000311, 0x00000065, 0x80000311, 
+       0x00000049, 0x8000030f, 0x00000069, 0x8000030f, 
+       0x00000049, 0x80000311, 0x00000069, 0x80000311, 
+       0x0000004f, 0x8000030f, 0x0000006f, 0x8000030f, 
+       0x0000004f, 0x80000311, 0x0000006f, 0x80000311, 
+       0x00000052, 0x8000030f, 0x00000072, 0x8000030f, 
+       0x00000052, 0x80000311, 0x00000072, 0x80000311, 
+       0x00000055, 0x8000030f, 0x00000075, 0x8000030f, 
+       0x00000055, 0x80000311, 0x00000075, 0x80000311, 
+       0x00000053, 0x80000326, 0x00000073, 0x80000326, 
+       0x00000054, 0x80000326, 0x00000074, 0x80000326, 
+       0x00000048, 0x8000030c, 0x00000068, 0x8000030c, 
+       0x00000041, 0x80000307, 0x00000061, 0x80000307, 
+       0x00000045, 0x80000327, 0x00000065, 0x80000327, 
+       0x000000d6, 0x80000304, 0x000000f6, 0x80000304, 
+       0x000000d5, 0x80000304, 0x000000f5, 0x80000304, 
+       0x0000004f, 0x80000307, 0x0000006f, 0x80000307, 
+       0x0000022e, 0x80000304, 0x0000022f, 0x80000304, 
+       0x00000059, 0x80000304, 0x00000079, 0x80000304, 
+       0x80000068, 0x80000266, 0x8000006a, 0x80000072, 
+       0x80000279, 0x8000027b, 0x80000281, 0x80000077, 
+       0x80000079, 0x00000020, 0x80000306, 0x00000020, 
+       0x80000307, 0x00000020, 0x8000030a, 0x00000020, 
+       0x80000328, 0x00000020, 0x80000303, 0x00000020, 
+       0x8000030b, 0x80000263, 0x8000006c, 0x80000073, 
+       0x80000078, 0x80000295, 0x80000300, 0x80000301, 
+       0x80000313, 0x00000308, 0x80000301, 0x800002b9, 
+       0x00000020, 0x80000345, 0x8000003b, 0x00000020, 
+       0x80000301, 0x000000a8, 0x80000301, 0x00000391, 
+       0x80000301, 0x800000b7, 0x00000395, 0x80000301, 
+       0x00000397, 0x80000301, 0x00000399, 0x80000301, 
+       0x0000039f, 0x80000301, 0x000003a5, 0x80000301, 
+       0x000003a9, 0x80000301, 0x000003ca, 0x80000301, 
+       0x00000399, 0x80000308, 0x000003a5, 0x80000308, 
+       0x000003b1, 0x80000301, 0x000003b5, 0x80000301, 
+       0x000003b7, 0x80000301, 0x000003b9, 0x80000301, 
+       0x000003cb, 0x80000301, 0x000003b9, 0x80000308, 
+       0x000003c5, 0x80000308, 0x000003bf, 0x80000301, 
+       0x000003c5, 0x80000301, 0x000003c9, 0x80000301, 
+       0x800003b2, 0x800003b8, 0x800003a5, 0x000003d2, 
+       0x80000301, 0x000003d2, 0x80000308, 0x800003c6, 
+       0x800003c0, 0x800003ba, 0x800003c1, 0x800003c2, 
+       0x80000398, 0x800003b5, 0x00000415, 0x80000300, 
+       0x00000415, 0x80000308, 0x00000413, 0x80000301, 
+       0x00000406, 0x80000308, 0x0000041a, 0x80000301, 
+       0x00000418, 0x80000300, 0x00000423, 0x80000306, 
+       0x00000418, 0x80000306, 0x00000438, 0x80000306, 
+       0x00000435, 0x80000300, 0x00000435, 0x80000308, 
+       0x00000433, 0x80000301, 0x00000456, 0x80000308, 
+       0x0000043a, 0x80000301, 0x00000438, 0x80000300, 
+       0x00000443, 0x80000306, 0x00000474, 0x8000030f, 
+       0x00000475, 0x8000030f, 0x00000416, 0x80000306, 
+       0x00000436, 0x80000306, 0x00000410, 0x80000306, 
+       0x00000430, 0x80000306, 0x00000410, 0x80000308, 
+       0x00000430, 0x80000308, 0x00000415, 0x80000306, 
+       0x00000435, 0x80000306, 0x000004d8, 0x80000308, 
+       0x000004d9, 0x80000308, 0x00000416, 0x80000308, 
+       0x00000436, 0x80000308, 0x00000417, 0x80000308, 
+       0x00000437, 0x80000308, 0x00000418, 0x80000304, 
+       0x00000438, 0x80000304, 0x00000418, 0x80000308, 
+       0x00000438, 0x80000308, 0x0000041e, 0x80000308, 
+       0x0000043e, 0x80000308, 0x000004e8, 0x80000308, 
+       0x000004e9, 0x80000308, 0x0000042d, 0x80000308, 
+       0x0000044d, 0x80000308, 0x00000423, 0x80000304, 
+       0x00000443, 0x80000304, 0x00000423, 0x80000308, 
+       0x00000443, 0x80000308, 0x00000423, 0x8000030b, 
+       0x00000443, 0x8000030b, 0x00000427, 0x80000308, 
+       0x00000447, 0x80000308, 0x0000042b, 0x80000308, 
+       0x0000044b, 0x80000308, 0x00000565, 0x80000582, 
+       0x00000627, 0x80000653, 0x00000627, 0x80000654, 
+       0x00000648, 0x80000654, 0x00000627, 0x80000655, 
+       0x0000064a, 0x80000654, 0x00000627, 0x80000674, 
+       0x00000648, 0x80000674, 0x000006c7, 0x80000674, 
+       0x0000064a, 0x80000674, 0x000006d5, 0x80000654, 
+       0x000006c1, 0x80000654, 0x000006d2, 0x80000654, 
+       0x00000928, 0x8000093c, 0x00000930, 0x8000093c, 
+       0x00000933, 0x8000093c, 0x00000915, 0x8000093c, 
+       0x00000916, 0x8000093c, 0x00000917, 0x8000093c, 
+       0x0000091c, 0x8000093c, 0x00000921, 0x8000093c, 
+       0x00000922, 0x8000093c, 0x0000092b, 0x8000093c, 
+       0x0000092f, 0x8000093c, 0x000009c7, 0x800009be, 
+       0x000009c7, 0x800009d7, 0x000009a1, 0x800009bc, 
+       0x000009a2, 0x800009bc, 0x000009af, 0x800009bc, 
+       0x00000a32, 0x80000a3c, 0x00000a38, 0x80000a3c, 
+       0x00000a16, 0x80000a3c, 0x00000a17, 0x80000a3c, 
+       0x00000a1c, 0x80000a3c, 0x00000a2b, 0x80000a3c, 
+       0x00000b47, 0x80000b56, 0x00000b47, 0x80000b3e, 
+       0x00000b47, 0x80000b57, 0x00000b21, 0x80000b3c, 
+       0x00000b22, 0x80000b3c, 0x00000b92, 0x80000bd7, 
+       0x00000bc6, 0x80000bbe, 0x00000bc7, 0x80000bbe, 
+       0x00000bc6, 0x80000bd7, 0x00000c46, 0x80000c56, 
+       0x00000cbf, 0x80000cd5, 0x00000cc6, 0x80000cd5, 
+       0x00000cc6, 0x80000cd6, 0x00000cc6, 0x80000cc2, 
+       0x00000cca, 0x80000cd5, 0x00000d46, 0x80000d3e, 
+       0x00000d47, 0x80000d3e, 0x00000d46, 0x80000d57, 
+       0x00000dd9, 0x80000dca, 0x00000dd9, 0x80000dcf, 
+       0x00000ddc, 0x80000dca, 0x00000dd9, 0x80000ddf, 
+       0x00000e4d, 0x80000e32, 0x00000ecd, 0x80000eb2, 
+       0x00000eab, 0x80000e99, 0x00000eab, 0x80000ea1, 
+       0x80000f0b, 0x00000f42, 0x80000fb7, 0x00000f4c, 
+       0x80000fb7, 0x00000f51, 0x80000fb7, 0x00000f56, 
+       0x80000fb7, 0x00000f5b, 0x80000fb7, 0x00000f40, 
+       0x80000fb5, 0x00000f71, 0x80000f72, 0x00000f71, 
+       0x80000f74, 0x00000fb2, 0x80000f80, 0x00000fb2, 
+       0x80000f81, 0x00000fb3, 0x80000f80, 0x00000fb3, 
+       0x80000f81, 0x00000f71, 0x80000f80, 0x00000f92, 
+       0x80000fb7, 0x00000f9c, 0x80000fb7, 0x00000fa1, 
+       0x80000fb7, 0x00000fa6, 0x80000fb7, 0x00000fab, 
+       0x80000fb7, 0x00000f90, 0x80000fb5, 0x00001025, 
+       0x8000102e, 0x00000041, 0x80000325, 0x00000061, 
+       0x80000325, 0x00000042, 0x80000307, 0x00000062, 
+       0x80000307, 0x00000042, 0x80000323, 0x00000062, 
+       0x80000323, 0x00000042, 0x80000331, 0x00000062, 
+       0x80000331, 0x000000c7, 0x80000301, 0x000000e7, 
+       0x80000301, 0x00000044, 0x80000307, 0x00000064, 
+       0x80000307, 0x00000044, 0x80000323, 0x00000064, 
+       0x80000323, 0x00000044, 0x80000331, 0x00000064, 
+       0x80000331, 0x00000044, 0x80000327, 0x00000064, 
+       0x80000327, 0x00000044, 0x8000032d, 0x00000064, 
+       0x8000032d, 0x00000112, 0x80000300, 0x00000113, 
+       0x80000300, 0x00000112, 0x80000301, 0x00000113, 
+       0x80000301, 0x00000045, 0x8000032d, 0x00000065, 
+       0x8000032d, 0x00000045, 0x80000330, 0x00000065, 
+       0x80000330, 0x00000228, 0x80000306, 0x00000229, 
+       0x80000306, 0x00000046, 0x80000307, 0x00000066, 
+       0x80000307, 0x00000047, 0x80000304, 0x00000067, 
+       0x80000304, 0x00000048, 0x80000307, 0x00000068, 
+       0x80000307, 0x00000048, 0x80000323, 0x00000068, 
+       0x80000323, 0x00000048, 0x80000308, 0x00000068, 
+       0x80000308, 0x00000048, 0x80000327, 0x00000068, 
+       0x80000327, 0x00000048, 0x8000032e, 0x00000068, 
+       0x8000032e, 0x00000049, 0x80000330, 0x00000069, 
+       0x80000330, 0x000000cf, 0x80000301, 0x000000ef, 
+       0x80000301, 0x0000004b, 0x80000301, 0x0000006b, 
+       0x80000301, 0x0000004b, 0x80000323, 0x0000006b, 
+       0x80000323, 0x0000004b, 0x80000331, 0x0000006b, 
+       0x80000331, 0x0000004c, 0x80000323, 0x0000006c, 
+       0x80000323, 0x00001e36, 0x80000304, 0x00001e37, 
+       0x80000304, 0x0000004c, 0x80000331, 0x0000006c, 
+       0x80000331, 0x0000004c, 0x8000032d, 0x0000006c, 
+       0x8000032d, 0x0000004d, 0x80000301, 0x0000006d, 
+       0x80000301, 0x0000004d, 0x80000307, 0x0000006d, 
+       0x80000307, 0x0000004d, 0x80000323, 0x0000006d, 
+       0x80000323, 0x0000004e, 0x80000307, 0x0000006e, 
+       0x80000307, 0x0000004e, 0x80000323, 0x0000006e, 
+       0x80000323, 0x0000004e, 0x80000331, 0x0000006e, 
+       0x80000331, 0x0000004e, 0x8000032d, 0x0000006e, 
+       0x8000032d, 0x000000d5, 0x80000301, 0x000000f5, 
+       0x80000301, 0x000000d5, 0x80000308, 0x000000f5, 
+       0x80000308, 0x0000014c, 0x80000300, 0x0000014d, 
+       0x80000300, 0x0000014c, 0x80000301, 0x0000014d, 
+       0x80000301, 0x00000050, 0x80000301, 0x00000070, 
+       0x80000301, 0x00000050, 0x80000307, 0x00000070, 
+       0x80000307, 0x00000052, 0x80000307, 0x00000072, 
+       0x80000307, 0x00000052, 0x80000323, 0x00000072, 
+       0x80000323, 0x00001e5a, 0x80000304, 0x00001e5b, 
+       0x80000304, 0x00000052, 0x80000331, 0x00000072, 
+       0x80000331, 0x00000053, 0x80000307, 0x00000073, 
+       0x80000307, 0x00000053, 0x80000323, 0x00000073, 
+       0x80000323, 0x0000015a, 0x80000307, 0x0000015b, 
+       0x80000307, 0x00000160, 0x80000307, 0x00000161, 
+       0x80000307, 0x00001e62, 0x80000307, 0x00001e63, 
+       0x80000307, 0x00000054, 0x80000307, 0x00000074, 
+       0x80000307, 0x00000054, 0x80000323, 0x00000074, 
+       0x80000323, 0x00000054, 0x80000331, 0x00000074, 
+       0x80000331, 0x00000054, 0x8000032d, 0x00000074, 
+       0x8000032d, 0x00000055, 0x80000324, 0x00000075, 
+       0x80000324, 0x00000055, 0x80000330, 0x00000075, 
+       0x80000330, 0x00000055, 0x8000032d, 0x00000075, 
+       0x8000032d, 0x00000168, 0x80000301, 0x00000169, 
+       0x80000301, 0x0000016a, 0x80000308, 0x0000016b, 
+       0x80000308, 0x00000056, 0x80000303, 0x00000076, 
+       0x80000303, 0x00000056, 0x80000323, 0x00000076, 
+       0x80000323, 0x00000057, 0x80000300, 0x00000077, 
+       0x80000300, 0x00000057, 0x80000301, 0x00000077, 
+       0x80000301, 0x00000057, 0x80000308, 0x00000077, 
+       0x80000308, 0x00000057, 0x80000307, 0x00000077, 
+       0x80000307, 0x00000057, 0x80000323, 0x00000077, 
+       0x80000323, 0x00000058, 0x80000307, 0x00000078, 
+       0x80000307, 0x00000058, 0x80000308, 0x00000078, 
+       0x80000308, 0x00000059, 0x80000307, 0x00000079, 
+       0x80000307, 0x0000005a, 0x80000302, 0x0000007a, 
+       0x80000302, 0x0000005a, 0x80000323, 0x0000007a, 
+       0x80000323, 0x0000005a, 0x80000331, 0x0000007a, 
+       0x80000331, 0x00000068, 0x80000331, 0x00000074, 
+       0x80000308, 0x00000077, 0x8000030a, 0x00000079, 
+       0x8000030a, 0x00000061, 0x800002be, 0x0000017f, 
+       0x80000307, 0x00000041, 0x80000323, 0x00000061, 
+       0x80000323, 0x00000041, 0x80000309, 0x00000061, 
+       0x80000309, 0x000000c2, 0x80000301, 0x000000e2, 
+       0x80000301, 0x000000c2, 0x80000300, 0x000000e2, 
+       0x80000300, 0x000000c2, 0x80000309, 0x000000e2, 
+       0x80000309, 0x000000c2, 0x80000303, 0x000000e2, 
+       0x80000303, 0x00001ea0, 0x80000302, 0x00001ea1, 
+       0x80000302, 0x00000102, 0x80000301, 0x00000103, 
+       0x80000301, 0x00000102, 0x80000300, 0x00000103, 
+       0x80000300, 0x00000102, 0x80000309, 0x00000103, 
+       0x80000309, 0x00000102, 0x80000303, 0x00000103, 
+       0x80000303, 0x00001ea0, 0x80000306, 0x00001ea1, 
+       0x80000306, 0x00000045, 0x80000323, 0x00000065, 
+       0x80000323, 0x00000045, 0x80000309, 0x00000065, 
+       0x80000309, 0x00000045, 0x80000303, 0x00000065, 
+       0x80000303, 0x000000ca, 0x80000301, 0x000000ea, 
+       0x80000301, 0x000000ca, 0x80000300, 0x000000ea, 
+       0x80000300, 0x000000ca, 0x80000309, 0x000000ea, 
+       0x80000309, 0x000000ca, 0x80000303, 0x000000ea, 
+       0x80000303, 0x00001eb8, 0x80000302, 0x00001eb9, 
+       0x80000302, 0x00000049, 0x80000309, 0x00000069, 
+       0x80000309, 0x00000049, 0x80000323, 0x00000069, 
+       0x80000323, 0x0000004f, 0x80000323, 0x0000006f, 
+       0x80000323, 0x0000004f, 0x80000309, 0x0000006f, 
+       0x80000309, 0x000000d4, 0x80000301, 0x000000f4, 
+       0x80000301, 0x000000d4, 0x80000300, 0x000000f4, 
+       0x80000300, 0x000000d4, 0x80000309, 0x000000f4, 
+       0x80000309, 0x000000d4, 0x80000303, 0x000000f4, 
+       0x80000303, 0x00001ecc, 0x80000302, 0x00001ecd, 
+       0x80000302, 0x000001a0, 0x80000301, 0x000001a1, 
+       0x80000301, 0x000001a0, 0x80000300, 0x000001a1, 
+       0x80000300, 0x000001a0, 0x80000309, 0x000001a1, 
+       0x80000309, 0x000001a0, 0x80000303, 0x000001a1, 
+       0x80000303, 0x000001a0, 0x80000323, 0x000001a1, 
+       0x80000323, 0x00000055, 0x80000323, 0x00000075, 
+       0x80000323, 0x00000055, 0x80000309, 0x00000075, 
+       0x80000309, 0x000001af, 0x80000301, 0x000001b0, 
+       0x80000301, 0x000001af, 0x80000300, 0x000001b0, 
+       0x80000300, 0x000001af, 0x80000309, 0x000001b0, 
+       0x80000309, 0x000001af, 0x80000303, 0x000001b0, 
+       0x80000303, 0x000001af, 0x80000323, 0x000001b0, 
+       0x80000323, 0x00000059, 0x80000300, 0x00000079, 
+       0x80000300, 0x00000059, 0x80000323, 0x00000079, 
+       0x80000323, 0x00000059, 0x80000309, 0x00000079, 
+       0x80000309, 0x00000059, 0x80000303, 0x00000079, 
+       0x80000303, 0x000003b1, 0x80000313, 0x000003b1, 
+       0x80000314, 0x00001f00, 0x80000300, 0x00001f01, 
+       0x80000300, 0x00001f00, 0x80000301, 0x00001f01, 
+       0x80000301, 0x00001f00, 0x80000342, 0x00001f01, 
+       0x80000342, 0x00000391, 0x80000313, 0x00000391, 
+       0x80000314, 0x00001f08, 0x80000300, 0x00001f09, 
+       0x80000300, 0x00001f08, 0x80000301, 0x00001f09, 
+       0x80000301, 0x00001f08, 0x80000342, 0x00001f09, 
+       0x80000342, 0x000003b5, 0x80000313, 0x000003b5, 
+       0x80000314, 0x00001f10, 0x80000300, 0x00001f11, 
+       0x80000300, 0x00001f10, 0x80000301, 0x00001f11, 
+       0x80000301, 0x00000395, 0x80000313, 0x00000395, 
+       0x80000314, 0x00001f18, 0x80000300, 0x00001f19, 
+       0x80000300, 0x00001f18, 0x80000301, 0x00001f19, 
+       0x80000301, 0x000003b7, 0x80000313, 0x000003b7, 
+       0x80000314, 0x00001f20, 0x80000300, 0x00001f21, 
+       0x80000300, 0x00001f20, 0x80000301, 0x00001f21, 
+       0x80000301, 0x00001f20, 0x80000342, 0x00001f21, 
+       0x80000342, 0x00000397, 0x80000313, 0x00000397, 
+       0x80000314, 0x00001f28, 0x80000300, 0x00001f29, 
+       0x80000300, 0x00001f28, 0x80000301, 0x00001f29, 
+       0x80000301, 0x00001f28, 0x80000342, 0x00001f29, 
+       0x80000342, 0x000003b9, 0x80000313, 0x000003b9, 
+       0x80000314, 0x00001f30, 0x80000300, 0x00001f31, 
+       0x80000300, 0x00001f30, 0x80000301, 0x00001f31, 
+       0x80000301, 0x00001f30, 0x80000342, 0x00001f31, 
+       0x80000342, 0x00000399, 0x80000313, 0x00000399, 
+       0x80000314, 0x00001f38, 0x80000300, 0x00001f39, 
+       0x80000300, 0x00001f38, 0x80000301, 0x00001f39, 
+       0x80000301, 0x00001f38, 0x80000342, 0x00001f39, 
+       0x80000342, 0x000003bf, 0x80000313, 0x000003bf, 
+       0x80000314, 0x00001f40, 0x80000300, 0x00001f41, 
+       0x80000300, 0x00001f40, 0x80000301, 0x00001f41, 
+       0x80000301, 0x0000039f, 0x80000313, 0x0000039f, 
+       0x80000314, 0x00001f48, 0x80000300, 0x00001f49, 
+       0x80000300, 0x00001f48, 0x80000301, 0x00001f49, 
+       0x80000301, 0x000003c5, 0x80000313, 0x000003c5, 
+       0x80000314, 0x00001f50, 0x80000300, 0x00001f51, 
+       0x80000300, 0x00001f50, 0x80000301, 0x00001f51, 
+       0x80000301, 0x00001f50, 0x80000342, 0x00001f51, 
+       0x80000342, 0x000003a5, 0x80000314, 0x00001f59, 
+       0x80000300, 0x00001f59, 0x80000301, 0x00001f59, 
+       0x80000342, 0x000003c9, 0x80000313, 0x000003c9, 
+       0x80000314, 0x00001f60, 0x80000300, 0x00001f61, 
+       0x80000300, 0x00001f60, 0x80000301, 0x00001f61, 
+       0x80000301, 0x00001f60, 0x80000342, 0x00001f61, 
+       0x80000342, 0x000003a9, 0x80000313, 0x000003a9, 
+       0x80000314, 0x00001f68, 0x80000300, 0x00001f69, 
+       0x80000300, 0x00001f68, 0x80000301, 0x00001f69, 
+       0x80000301, 0x00001f68, 0x80000342, 0x00001f69, 
+       0x80000342, 0x000003b1, 0x80000300, 0x800003ac, 
+       0x000003b5, 0x80000300, 0x800003ad, 0x000003b7, 
+       0x80000300, 0x800003ae, 0x000003b9, 0x80000300, 
+       0x800003af, 0x000003bf, 0x80000300, 0x800003cc, 
+       0x000003c5, 0x80000300, 0x800003cd, 0x000003c9, 
+       0x80000300, 0x800003ce, 0x00001f00, 0x80000345, 
+       0x00001f01, 0x80000345, 0x00001f02, 0x80000345, 
+       0x00001f03, 0x80000345, 0x00001f04, 0x80000345, 
+       0x00001f05, 0x80000345, 0x00001f06, 0x80000345, 
+       0x00001f07, 0x80000345, 0x00001f08, 0x80000345, 
+       0x00001f09, 0x80000345, 0x00001f0a, 0x80000345, 
+       0x00001f0b, 0x80000345, 0x00001f0c, 0x80000345, 
+       0x00001f0d, 0x80000345, 0x00001f0e, 0x80000345, 
+       0x00001f0f, 0x80000345, 0x00001f20, 0x80000345, 
+       0x00001f21, 0x80000345, 0x00001f22, 0x80000345, 
+       0x00001f23, 0x80000345, 0x00001f24, 0x80000345, 
+       0x00001f25, 0x80000345, 0x00001f26, 0x80000345, 
+       0x00001f27, 0x80000345, 0x00001f28, 0x80000345, 
+       0x00001f29, 0x80000345, 0x00001f2a, 0x80000345, 
+       0x00001f2b, 0x80000345, 0x00001f2c, 0x80000345, 
+       0x00001f2d, 0x80000345, 0x00001f2e, 0x80000345, 
+       0x00001f2f, 0x80000345, 0x00001f60, 0x80000345, 
+       0x00001f61, 0x80000345, 0x00001f62, 0x80000345, 
+       0x00001f63, 0x80000345, 0x00001f64, 0x80000345, 
+       0x00001f65, 0x80000345, 0x00001f66, 0x80000345, 
+       0x00001f67, 0x80000345, 0x00001f68, 0x80000345, 
+       0x00001f69, 0x80000345, 0x00001f6a, 0x80000345, 
+       0x00001f6b, 0x80000345, 0x00001f6c, 0x80000345, 
+       0x00001f6d, 0x80000345, 0x00001f6e, 0x80000345, 
+       0x00001f6f, 0x80000345, 0x000003b1, 0x80000306, 
+       0x000003b1, 0x80000304, 0x00001f70, 0x80000345, 
+       0x000003b1, 0x80000345, 0x000003ac, 0x80000345, 
+       0x000003b1, 0x80000342, 0x00001fb6, 0x80000345, 
+       0x00000391, 0x80000306, 0x00000391, 0x80000304, 
+       0x00000391, 0x80000300, 0x80000386, 0x00000391, 
+       0x80000345, 0x00000020, 0x80000313, 0x800003b9, 
+       0x00000020, 0x80000313, 0x00000020, 0x80000342, 
+       0x000000a8, 0x80000342, 0x00001f74, 0x80000345, 
+       0x000003b7, 0x80000345, 0x000003ae, 0x80000345, 
+       0x000003b7, 0x80000342, 0x00001fc6, 0x80000345, 
+       0x00000395, 0x80000300, 0x80000388, 0x00000397, 
+       0x80000300, 0x80000389, 0x00000397, 0x80000345, 
+       0x00001fbf, 0x80000300, 0x00001fbf, 0x80000301, 
+       0x00001fbf, 0x80000342, 0x000003b9, 0x80000306, 
+       0x000003b9, 0x80000304, 0x000003ca, 0x80000300, 
+       0x80000390, 0x000003b9, 0x80000342, 0x000003ca, 
+       0x80000342, 0x00000399, 0x80000306, 0x00000399, 
+       0x80000304, 0x00000399, 0x80000300, 0x8000038a, 
+       0x00001ffe, 0x80000300, 0x00001ffe, 0x80000301, 
+       0x00001ffe, 0x80000342, 0x000003c5, 0x80000306, 
+       0x000003c5, 0x80000304, 0x000003cb, 0x80000300, 
+       0x800003b0, 0x000003c1, 0x80000313, 0x000003c1, 
+       0x80000314, 0x000003c5, 0x80000342, 0x000003cb, 
+       0x80000342, 0x000003a5, 0x80000306, 0x000003a5, 
+       0x80000304, 0x000003a5, 0x80000300, 0x8000038e, 
+       0x000003a1, 0x80000314, 0x000000a8, 0x80000300, 
+       0x80000385, 0x80000060, 0x00001f7c, 0x80000345, 
+       0x000003c9, 0x80000345, 0x000003ce, 0x80000345, 
+       0x000003c9, 0x80000342, 0x00001ff6, 0x80000345, 
+       0x0000039f, 0x80000300, 0x8000038c, 0x000003a9, 
+       0x80000300, 0x8000038f, 0x000003a9, 0x80000345, 
+       0x800000b4, 0x00000020, 0x80000314, 0x80002002, 
+       0x80002003, 0x80000020, 0x80000020, 0x80000020, 
+       0x80000020, 0x80000020, 0x80000020, 0x80000020, 
+       0x80000020, 0x80000020, 0x80002010, 0x00000020, 
+       0x80000333, 0x8000002e, 0x0000002e, 0x8000002e, 
+       0x0000002e, 0x0000002e, 0x8000002e, 0x80000020, 
+       0x00002032, 0x80002032, 0x00002032, 0x00002032, 
+       0x80002032, 0x00002035, 0x80002035, 0x00002035, 
+       0x00002035, 0x80002035, 0x00000021, 0x80000021, 
+       0x00000020, 0x80000305, 0x0000003f, 0x80000021, 
+       0x00000021, 0x8000003f, 0x80000030, 0x80000034, 
+       0x80000035, 0x80000036, 0x80000037, 0x80000038, 
+       0x80000039, 0x8000002b, 0x80002212, 0x8000003d, 
+       0x80000028, 0x80000029, 0x8000006e, 0x80000030, 
+       0x80000031, 0x80000032, 0x80000033, 0x80000034, 
+       0x80000035, 0x80000036, 0x80000037, 0x80000038, 
+       0x80000039, 0x8000002b, 0x80002212, 0x8000003d, 
+       0x80000028, 0x80000029, 0x00000052, 0x80000073, 
+       0x00000061, 0x0000002f, 0x80000063, 0x00000061, 
+       0x0000002f, 0x80000073, 0x80000043, 0x000000b0, 
+       0x80000043, 0x00000063, 0x0000002f, 0x8000006f, 
+       0x00000063, 0x0000002f, 0x80000075, 0x80000190, 
+       0x000000b0, 0x80000046, 0x80000067, 0x80000048, 
+       0x80000048, 0x80000048, 0x80000068, 0x80000127, 
+       0x80000049, 0x80000049, 0x8000004c, 0x8000006c, 
+       0x8000004e, 0x0000004e, 0x8000006f, 0x80000050, 
+       0x80000051, 0x80000052, 0x80000052, 0x80000052, 
+       0x00000053, 0x8000004d, 0x00000054, 0x00000045, 
+       0x8000004c, 0x00000054, 0x8000004d, 0x8000005a, 
+       0x800003a9, 0x8000005a, 0x8000004b, 0x800000c5, 
+       0x80000042, 0x80000043, 0x80000065, 0x80000045, 
+       0x80000046, 0x8000004d, 0x8000006f, 0x800005d0, 
+       0x800005d1, 0x800005d2, 0x800005d3, 0x80000069, 
+       0x00000031, 0x00002044, 0x80000033, 0x00000032, 
+       0x00002044, 0x80000033, 0x00000031, 0x00002044, 
+       0x80000035, 0x00000032, 0x00002044, 0x80000035, 
+       0x00000033, 0x00002044, 0x80000035, 0x00000034, 
+       0x00002044, 0x80000035, 0x00000031, 0x00002044, 
+       0x80000036, 0x00000035, 0x00002044, 0x80000036, 
+       0x00000031, 0x00002044, 0x80000038, 0x00000033, 
+       0x00002044, 0x80000038, 0x00000035, 0x00002044, 
+       0x80000038, 0x00000037, 0x00002044, 0x80000038, 
+       0x00000031, 0x80002044, 0x80000049, 0x00000049, 
+       0x80000049, 0x00000049, 0x00000049, 0x80000049, 
+       0x00000049, 0x80000056, 0x80000056, 0x00000056, 
+       0x80000049, 0x00000056, 0x00000049, 0x80000049, 
+       0x00000056, 0x00000049, 0x00000049, 0x80000049, 
+       0x00000049, 0x80000058, 0x80000058, 0x00000058, 
+       0x80000049, 0x00000058, 0x00000049, 0x80000049, 
+       0x8000004c, 0x80000043, 0x80000044, 0x8000004d, 
+       0x80000069, 0x00000069, 0x80000069, 0x00000069, 
+       0x00000069, 0x80000069, 0x00000069, 0x80000076, 
+       0x80000076, 0x00000076, 0x80000069, 0x00000076, 
+       0x00000069, 0x80000069, 0x00000076, 0x00000069, 
+       0x00000069, 0x80000069, 0x00000069, 0x80000078, 
+       0x80000078, 0x00000078, 0x80000069, 0x00000078, 
+       0x00000069, 0x80000069, 0x8000006c, 0x80000063, 
+       0x80000064, 0x8000006d, 0x00002190, 0x80000338, 
+       0x00002192, 0x80000338, 0x00002194, 0x80000338, 
+       0x000021d0, 0x80000338, 0x000021d4, 0x80000338, 
+       0x000021d2, 0x80000338, 0x00002203, 0x80000338, 
+       0x00002208, 0x80000338, 0x0000220b, 0x80000338, 
+       0x00002223, 0x80000338, 0x00002225, 0x80000338, 
+       0x0000222b, 0x8000222b, 0x0000222b, 0x0000222b, 
+       0x8000222b, 0x0000222e, 0x8000222e, 0x0000222e, 
+       0x0000222e, 0x8000222e, 0x0000223c, 0x80000338, 
+       0x00002243, 0x80000338, 0x00002245, 0x80000338, 
+       0x00002248, 0x80000338, 0x0000003d, 0x80000338, 
+       0x00002261, 0x80000338, 0x0000224d, 0x80000338, 
+       0x0000003c, 0x80000338, 0x0000003e, 0x80000338, 
+       0x00002264, 0x80000338, 0x00002265, 0x80000338, 
+       0x00002272, 0x80000338, 0x00002273, 0x80000338, 
+       0x00002276, 0x80000338, 0x00002277, 0x80000338, 
+       0x0000227a, 0x80000338, 0x0000227b, 0x80000338, 
+       0x00002282, 0x80000338, 0x00002283, 0x80000338, 
+       0x00002286, 0x80000338, 0x00002287, 0x80000338, 
+       0x000022a2, 0x80000338, 0x000022a8, 0x80000338, 
+       0x000022a9, 0x80000338, 0x000022ab, 0x80000338, 
+       0x0000227c, 0x80000338, 0x0000227d, 0x80000338, 
+       0x00002291, 0x80000338, 0x00002292, 0x80000338, 
+       0x000022b2, 0x80000338, 0x000022b3, 0x80000338, 
+       0x000022b4, 0x80000338, 0x000022b5, 0x80000338, 
+       0x80003008, 0x80003009, 0x80000031, 0x80000032, 
+       0x80000033, 0x80000034, 0x80000035, 0x80000036, 
+       0x80000037, 0x80000038, 0x80000039, 0x00000031, 
+       0x80000030, 0x00000031, 0x80000031, 0x00000031, 
+       0x80000032, 0x00000031, 0x80000033, 0x00000031, 
+       0x80000034, 0x00000031, 0x80000035, 0x00000031, 
+       0x80000036, 0x00000031, 0x80000037, 0x00000031, 
+       0x80000038, 0x00000031, 0x80000039, 0x00000032, 
+       0x80000030, 0x00000028, 0x00000031, 0x80000029, 
+       0x00000028, 0x00000032, 0x80000029, 0x00000028, 
+       0x00000033, 0x80000029, 0x00000028, 0x00000034, 
+       0x80000029, 0x00000028, 0x00000035, 0x80000029, 
+       0x00000028, 0x00000036, 0x80000029, 0x00000028, 
+       0x00000037, 0x80000029, 0x00000028, 0x00000038, 
+       0x80000029, 0x00000028, 0x00000039, 0x80000029, 
+       0x00000028, 0x00000031, 0x00000030, 0x80000029, 
+       0x00000028, 0x00000031, 0x00000031, 0x80000029, 
+       0x00000028, 0x00000031, 0x00000032, 0x80000029, 
+       0x00000028, 0x00000031, 0x00000033, 0x80000029, 
+       0x00000028, 0x00000031, 0x00000034, 0x80000029, 
+       0x00000028, 0x00000031, 0x00000035, 0x80000029, 
+       0x00000028, 0x00000031, 0x00000036, 0x80000029, 
+       0x00000028, 0x00000031, 0x00000037, 0x80000029, 
+       0x00000028, 0x00000031, 0x00000038, 0x80000029, 
+       0x00000028, 0x00000031, 0x00000039, 0x80000029, 
+       0x00000028, 0x00000032, 0x00000030, 0x80000029, 
+       0x00000031, 0x8000002e, 0x00000032, 0x8000002e, 
+       0x00000033, 0x8000002e, 0x00000034, 0x8000002e, 
+       0x00000035, 0x8000002e, 0x00000036, 0x8000002e, 
+       0x00000037, 0x8000002e, 0x00000038, 0x8000002e, 
+       0x00000039, 0x8000002e, 0x00000031, 0x00000030, 
+       0x8000002e, 0x00000031, 0x00000031, 0x8000002e, 
+       0x00000031, 0x00000032, 0x8000002e, 0x00000031, 
+       0x00000033, 0x8000002e, 0x00000031, 0x00000034, 
+       0x8000002e, 0x00000031, 0x00000035, 0x8000002e, 
+       0x00000031, 0x00000036, 0x8000002e, 0x00000031, 
+       0x00000037, 0x8000002e, 0x00000031, 0x00000038, 
+       0x8000002e, 0x00000031, 0x00000039, 0x8000002e, 
+       0x00000032, 0x00000030, 0x8000002e, 0x00000028, 
+       0x00000061, 0x80000029, 0x00000028, 0x00000062, 
+       0x80000029, 0x00000028, 0x00000063, 0x80000029, 
+       0x00000028, 0x00000064, 0x80000029, 0x00000028, 
+       0x00000065, 0x80000029, 0x00000028, 0x00000066, 
+       0x80000029, 0x00000028, 0x00000067, 0x80000029, 
+       0x00000028, 0x00000068, 0x80000029, 0x00000028, 
+       0x00000069, 0x80000029, 0x00000028, 0x0000006a, 
+       0x80000029, 0x00000028, 0x0000006b, 0x80000029, 
+       0x00000028, 0x0000006c, 0x80000029, 0x00000028, 
+       0x0000006d, 0x80000029, 0x00000028, 0x0000006e, 
+       0x80000029, 0x00000028, 0x0000006f, 0x80000029, 
+       0x00000028, 0x00000070, 0x80000029, 0x00000028, 
+       0x00000071, 0x80000029, 0x00000028, 0x00000072, 
+       0x80000029, 0x00000028, 0x00000073, 0x80000029, 
+       0x00000028, 0x00000074, 0x80000029, 0x00000028, 
+       0x00000075, 0x80000029, 0x00000028, 0x00000076, 
+       0x80000029, 0x00000028, 0x00000077, 0x80000029, 
+       0x00000028, 0x00000078, 0x80000029, 0x00000028, 
+       0x00000079, 0x80000029, 0x00000028, 0x0000007a, 
+       0x80000029, 0x80000041, 0x80000042, 0x80000043, 
+       0x80000044, 0x80000045, 0x80000046, 0x80000047, 
+       0x80000048, 0x80000049, 0x8000004a, 0x8000004b, 
+       0x8000004c, 0x8000004d, 0x8000004e, 0x8000004f, 
+       0x80000050, 0x80000051, 0x80000052, 0x80000053, 
+       0x80000054, 0x80000055, 0x80000056, 0x80000057, 
+       0x80000058, 0x80000059, 0x8000005a, 0x80000061, 
+       0x80000062, 0x80000063, 0x80000064, 0x80000065, 
+       0x80000066, 0x80000067, 0x80000068, 0x80000069, 
+       0x8000006a, 0x8000006b, 0x8000006c, 0x8000006d, 
+       0x8000006e, 0x8000006f, 0x80000070, 0x80000071, 
+       0x80000072, 0x80000073, 0x80000074, 0x80000075, 
+       0x80000076, 0x80000077, 0x80000078, 0x80000079, 
+       0x8000007a, 0x80000030, 0x80006bcd, 0x80009f9f, 
+       0x80004e00, 0x80004e28, 0x80004e36, 0x80004e3f, 
+       0x80004e59, 0x80004e85, 0x80004e8c, 0x80004ea0, 
+       0x80004eba, 0x8000513f, 0x80005165, 0x8000516b, 
+       0x80005182, 0x80005196, 0x800051ab, 0x800051e0, 
+       0x800051f5, 0x80005200, 0x8000529b, 0x800052f9, 
+       0x80005315, 0x8000531a, 0x80005338, 0x80005341, 
+       0x8000535c, 0x80005369, 0x80005382, 0x800053b6, 
+       0x800053c8, 0x800053e3, 0x800056d7, 0x8000571f, 
+       0x800058eb, 0x80005902, 0x8000590a, 0x80005915, 
+       0x80005927, 0x80005973, 0x80005b50, 0x80005b80, 
+       0x80005bf8, 0x80005c0f, 0x80005c22, 0x80005c38, 
+       0x80005c6e, 0x80005c71, 0x80005ddb, 0x80005de5, 
+       0x80005df1, 0x80005dfe, 0x80005e72, 0x80005e7a, 
+       0x80005e7f, 0x80005ef4, 0x80005efe, 0x80005f0b, 
+       0x80005f13, 0x80005f50, 0x80005f61, 0x80005f73, 
+       0x80005fc3, 0x80006208, 0x80006236, 0x8000624b, 
+       0x8000652f, 0x80006534, 0x80006587, 0x80006597, 
+       0x800065a4, 0x800065b9, 0x800065e0, 0x800065e5, 
+       0x800066f0, 0x80006708, 0x80006728, 0x80006b20, 
+       0x80006b62, 0x80006b79, 0x80006bb3, 0x80006bcb, 
+       0x80006bd4, 0x80006bdb, 0x80006c0f, 0x80006c14, 
+       0x80006c34, 0x8000706b, 0x8000722a, 0x80007236, 
+       0x8000723b, 0x8000723f, 0x80007247, 0x80007259, 
+       0x8000725b, 0x800072ac, 0x80007384, 0x80007389, 
+       0x800074dc, 0x800074e6, 0x80007518, 0x8000751f, 
+       0x80007528, 0x80007530, 0x8000758b, 0x80007592, 
+       0x80007676, 0x8000767d, 0x800076ae, 0x800076bf, 
+       0x800076ee, 0x800077db, 0x800077e2, 0x800077f3, 
+       0x8000793a, 0x800079b8, 0x800079be, 0x80007a74, 
+       0x80007acb, 0x80007af9, 0x80007c73, 0x80007cf8, 
+       0x80007f36, 0x80007f51, 0x80007f8a, 0x80007fbd, 
+       0x80008001, 0x8000800c, 0x80008012, 0x80008033, 
+       0x8000807f, 0x80008089, 0x800081e3, 0x800081ea, 
+       0x800081f3, 0x800081fc, 0x8000820c, 0x8000821b, 
+       0x8000821f, 0x8000826e, 0x80008272, 0x80008278, 
+       0x8000864d, 0x8000866b, 0x80008840, 0x8000884c, 
+       0x80008863, 0x8000897e, 0x8000898b, 0x800089d2, 
+       0x80008a00, 0x80008c37, 0x80008c46, 0x80008c55, 
+       0x80008c78, 0x80008c9d, 0x80008d64, 0x80008d70, 
+       0x80008db3, 0x80008eab, 0x80008eca, 0x80008f9b, 
+       0x80008fb0, 0x80008fb5, 0x80009091, 0x80009149, 
+       0x800091c6, 0x800091cc, 0x800091d1, 0x80009577, 
+       0x80009580, 0x8000961c, 0x800096b6, 0x800096b9, 
+       0x800096e8, 0x80009751, 0x8000975e, 0x80009762, 
+       0x80009769, 0x800097cb, 0x800097ed, 0x800097f3, 
+       0x80009801, 0x800098a8, 0x800098db, 0x800098df, 
+       0x80009996, 0x80009999, 0x800099ac, 0x80009aa8, 
+       0x80009ad8, 0x80009adf, 0x80009b25, 0x80009b2f, 
+       0x80009b32, 0x80009b3c, 0x80009b5a, 0x80009ce5, 
+       0x80009e75, 0x80009e7f, 0x80009ea5, 0x80009ebb, 
+       0x80009ec3, 0x80009ecd, 0x80009ed1, 0x80009ef9, 
+       0x80009efd, 0x80009f0e, 0x80009f13, 0x80009f20, 
+       0x80009f3b, 0x80009f4a, 0x80009f52, 0x80009f8d, 
+       0x80009f9c, 0x80009fa0, 0x80000020, 0x80003012, 
+       0x80005341, 0x80005344, 0x80005345, 0x0000304b, 
+       0x80003099, 0x0000304d, 0x80003099, 0x0000304f, 
+       0x80003099, 0x00003051, 0x80003099, 0x00003053, 
+       0x80003099, 0x00003055, 0x80003099, 0x00003057, 
+       0x80003099, 0x00003059, 0x80003099, 0x0000305b, 
+       0x80003099, 0x0000305d, 0x80003099, 0x0000305f, 
+       0x80003099, 0x00003061, 0x80003099, 0x00003064, 
+       0x80003099, 0x00003066, 0x80003099, 0x00003068, 
+       0x80003099, 0x0000306f, 0x80003099, 0x0000306f, 
+       0x8000309a, 0x00003072, 0x80003099, 0x00003072, 
+       0x8000309a, 0x00003075, 0x80003099, 0x00003075, 
+       0x8000309a, 0x00003078, 0x80003099, 0x00003078, 
+       0x8000309a, 0x0000307b, 0x80003099, 0x0000307b, 
+       0x8000309a, 0x00003046, 0x80003099, 0x00000020, 
+       0x80003099, 0x00000020, 0x8000309a, 0x0000309d, 
+       0x80003099, 0x000030ab, 0x80003099, 0x000030ad, 
+       0x80003099, 0x000030af, 0x80003099, 0x000030b1, 
+       0x80003099, 0x000030b3, 0x80003099, 0x000030b5, 
+       0x80003099, 0x000030b7, 0x80003099, 0x000030b9, 
+       0x80003099, 0x000030bb, 0x80003099, 0x000030bd, 
+       0x80003099, 0x000030bf, 0x80003099, 0x000030c1, 
+       0x80003099, 0x000030c4, 0x80003099, 0x000030c6, 
+       0x80003099, 0x000030c8, 0x80003099, 0x000030cf, 
+       0x80003099, 0x000030cf, 0x8000309a, 0x000030d2, 
+       0x80003099, 0x000030d2, 0x8000309a, 0x000030d5, 
+       0x80003099, 0x000030d5, 0x8000309a, 0x000030d8, 
+       0x80003099, 0x000030d8, 0x8000309a, 0x000030db, 
+       0x80003099, 0x000030db, 0x8000309a, 0x000030a6, 
+       0x80003099, 0x000030ef, 0x80003099, 0x000030f0, 
+       0x80003099, 0x000030f1, 0x80003099, 0x000030f2, 
+       0x80003099, 0x000030fd, 0x80003099, 0x80001100, 
+       0x80001101, 0x800011aa, 0x80001102, 0x800011ac, 
+       0x800011ad, 0x80001103, 0x80001104, 0x80001105, 
+       0x800011b0, 0x800011b1, 0x800011b2, 0x800011b3, 
+       0x800011b4, 0x800011b5, 0x8000111a, 0x80001106, 
+       0x80001107, 0x80001108, 0x80001121, 0x80001109, 
+       0x8000110a, 0x8000110b, 0x8000110c, 0x8000110d, 
+       0x8000110e, 0x8000110f, 0x80001110, 0x80001111, 
+       0x80001112, 0x80001161, 0x80001162, 0x80001163, 
+       0x80001164, 0x80001165, 0x80001166, 0x80001167, 
+       0x80001168, 0x80001169, 0x8000116a, 0x8000116b, 
+       0x8000116c, 0x8000116d, 0x8000116e, 0x8000116f, 
+       0x80001170, 0x80001171, 0x80001172, 0x80001173, 
+       0x80001174, 0x80001175, 0x80001160, 0x80001114, 
+       0x80001115, 0x800011c7, 0x800011c8, 0x800011cc, 
+       0x800011ce, 0x800011d3, 0x800011d7, 0x800011d9, 
+       0x8000111c, 0x800011dd, 0x800011df, 0x8000111d, 
+       0x8000111e, 0x80001120, 0x80001122, 0x80001123, 
+       0x80001127, 0x80001129, 0x8000112b, 0x8000112c, 
+       0x8000112d, 0x8000112e, 0x8000112f, 0x80001132, 
+       0x80001136, 0x80001140, 0x80001147, 0x8000114c, 
+       0x800011f1, 0x800011f2, 0x80001157, 0x80001158, 
+       0x80001159, 0x80001184, 0x80001185, 0x80001188, 
+       0x80001191, 0x80001192, 0x80001194, 0x8000119e, 
+       0x800011a1, 0x80004e00, 0x80004e8c, 0x80004e09, 
+       0x800056db, 0x80004e0a, 0x80004e2d, 0x80004e0b, 
+       0x80007532, 0x80004e59, 0x80004e19, 0x80004e01, 
+       0x80005929, 0x80005730, 0x80004eba, 0x00000028, 
+       0x00001100, 0x80000029, 0x00000028, 0x00001102, 
+       0x80000029, 0x00000028, 0x00001103, 0x80000029, 
+       0x00000028, 0x00001105, 0x80000029, 0x00000028, 
+       0x00001106, 0x80000029, 0x00000028, 0x00001107, 
+       0x80000029, 0x00000028, 0x00001109, 0x80000029, 
+       0x00000028, 0x0000110b, 0x80000029, 0x00000028, 
+       0x0000110c, 0x80000029, 0x00000028, 0x0000110e, 
+       0x80000029, 0x00000028, 0x0000110f, 0x80000029, 
+       0x00000028, 0x00001110, 0x80000029, 0x00000028, 
+       0x00001111, 0x80000029, 0x00000028, 0x00001112, 
+       0x80000029, 0x00000028, 0x00001100, 0x00001161, 
+       0x80000029, 0x00000028, 0x00001102, 0x00001161, 
+       0x80000029, 0x00000028, 0x00001103, 0x00001161, 
+       0x80000029, 0x00000028, 0x00001105, 0x00001161, 
+       0x80000029, 0x00000028, 0x00001106, 0x00001161, 
+       0x80000029, 0x00000028, 0x00001107, 0x00001161, 
+       0x80000029, 0x00000028, 0x00001109, 0x00001161, 
+       0x80000029, 0x00000028, 0x0000110b, 0x00001161, 
+       0x80000029, 0x00000028, 0x0000110c, 0x00001161, 
+       0x80000029, 0x00000028, 0x0000110e, 0x00001161, 
+       0x80000029, 0x00000028, 0x0000110f, 0x00001161, 
+       0x80000029, 0x00000028, 0x00001110, 0x00001161, 
+       0x80000029, 0x00000028, 0x00001111, 0x00001161, 
+       0x80000029, 0x00000028, 0x00001112, 0x00001161, 
+       0x80000029, 0x00000028, 0x0000110c, 0x0000116e, 
+       0x80000029, 0x00000028, 0x00004e00, 0x80000029, 
+       0x00000028, 0x00004e8c, 0x80000029, 0x00000028, 
+       0x00004e09, 0x80000029, 0x00000028, 0x000056db, 
+       0x80000029, 0x00000028, 0x00004e94, 0x80000029, 
+       0x00000028, 0x0000516d, 0x80000029, 0x00000028, 
+       0x00004e03, 0x80000029, 0x00000028, 0x0000516b, 
+       0x80000029, 0x00000028, 0x00004e5d, 0x80000029, 
+       0x00000028, 0x00005341, 0x80000029, 0x00000028, 
+       0x00006708, 0x80000029, 0x00000028, 0x0000706b, 
+       0x80000029, 0x00000028, 0x00006c34, 0x80000029, 
+       0x00000028, 0x00006728, 0x80000029, 0x00000028, 
+       0x000091d1, 0x80000029, 0x00000028, 0x0000571f, 
+       0x80000029, 0x00000028, 0x000065e5, 0x80000029, 
+       0x00000028, 0x0000682a, 0x80000029, 0x00000028, 
+       0x00006709, 0x80000029, 0x00000028, 0x0000793e, 
+       0x80000029, 0x00000028, 0x0000540d, 0x80000029, 
+       0x00000028, 0x00007279, 0x80000029, 0x00000028, 
+       0x00008ca1, 0x80000029, 0x00000028, 0x0000795d, 
+       0x80000029, 0x00000028, 0x000052b4, 0x80000029, 
+       0x00000028, 0x00004ee3, 0x80000029, 0x00000028, 
+       0x0000547c, 0x80000029, 0x00000028, 0x00005b66, 
+       0x80000029, 0x00000028, 0x000076e3, 0x80000029, 
+       0x00000028, 0x00004f01, 0x80000029, 0x00000028, 
+       0x00008cc7, 0x80000029, 0x00000028, 0x00005354, 
+       0x80000029, 0x00000028, 0x0000796d, 0x80000029, 
+       0x00000028, 0x00004f11, 0x80000029, 0x00000028, 
+       0x000081ea, 0x80000029, 0x00000028, 0x000081f3, 
+       0x80000029, 0x80001100, 0x80001102, 0x80001103, 
+       0x80001105, 0x80001106, 0x80001107, 0x80001109, 
+       0x8000110b, 0x8000110c, 0x8000110e, 0x8000110f, 
+       0x80001110, 0x80001111, 0x80001112, 0x00001100, 
+       0x80001161, 0x00001102, 0x80001161, 0x00001103, 
+       0x80001161, 0x00001105, 0x80001161, 0x00001106, 
+       0x80001161, 0x00001107, 0x80001161, 0x00001109, 
+       0x80001161, 0x0000110b, 0x80001161, 0x0000110c, 
+       0x80001161, 0x0000110e, 0x80001161, 0x0000110f, 
+       0x80001161, 0x00001110, 0x80001161, 0x00001111, 
+       0x80001161, 0x00001112, 0x80001161, 0x80004e00, 
+       0x80004e8c, 0x80004e09, 0x800056db, 0x80004e94, 
+       0x8000516d, 0x80004e03, 0x8000516b, 0x80004e5d, 
+       0x80005341, 0x80006708, 0x8000706b, 0x80006c34, 
+       0x80006728, 0x800091d1, 0x8000571f, 0x800065e5, 
+       0x8000682a, 0x80006709, 0x8000793e, 0x8000540d, 
+       0x80007279, 0x80008ca1, 0x8000795d, 0x800052b4, 
+       0x800079d8, 0x80007537, 0x80005973, 0x80009069, 
+       0x8000512a, 0x80005370, 0x80006ce8, 0x80009805, 
+       0x80004f11, 0x80005199, 0x80006b63, 0x80004e0a, 
+       0x80004e2d, 0x80004e0b, 0x80005de6, 0x800053f3, 
+       0x8000533b, 0x80005b97, 0x80005b66, 0x800076e3, 
+       0x80004f01, 0x80008cc7, 0x80005354, 0x8000591c, 
+       0x00000031, 0x80006708, 0x00000032, 0x80006708, 
+       0x00000033, 0x80006708, 0x00000034, 0x80006708, 
+       0x00000035, 0x80006708, 0x00000036, 0x80006708, 
+       0x00000037, 0x80006708, 0x00000038, 0x80006708, 
+       0x00000039, 0x80006708, 0x00000031, 0x00000030, 
+       0x80006708, 0x00000031, 0x00000031, 0x80006708, 
+       0x00000031, 0x00000032, 0x80006708, 0x800030a2, 
+       0x800030a4, 0x800030a6, 0x800030a8, 0x800030aa, 
+       0x800030ab, 0x800030ad, 0x800030af, 0x800030b1, 
+       0x800030b3, 0x800030b5, 0x800030b7, 0x800030b9, 
+       0x800030bb, 0x800030bd, 0x800030bf, 0x800030c1, 
+       0x800030c4, 0x800030c6, 0x800030c8, 0x800030ca, 
+       0x800030cb, 0x800030cc, 0x800030cd, 0x800030ce, 
+       0x800030cf, 0x800030d2, 0x800030d5, 0x800030d8, 
+       0x800030db, 0x800030de, 0x800030df, 0x800030e0, 
+       0x800030e1, 0x800030e2, 0x800030e4, 0x800030e6, 
+       0x800030e8, 0x800030e9, 0x800030ea, 0x800030eb, 
+       0x800030ec, 0x800030ed, 0x800030ef, 0x800030f0, 
+       0x800030f1, 0x800030f2, 0x000030a2, 0x000030d1, 
+       0x000030fc, 0x800030c8, 0x000030a2, 0x000030eb, 
+       0x000030d5, 0x800030a1, 0x000030a2, 0x000030f3, 
+       0x000030da, 0x800030a2, 0x000030a2, 0x000030fc, 
+       0x800030eb, 0x000030a4, 0x000030cb, 0x000030f3, 
+       0x800030b0, 0x000030a4, 0x000030f3, 0x800030c1, 
+       0x000030a6, 0x000030a9, 0x800030f3, 0x000030a8, 
+       0x000030b9, 0x000030af, 0x000030fc, 0x800030c9, 
+       0x000030a8, 0x000030fc, 0x000030ab, 0x800030fc, 
+       0x000030aa, 0x000030f3, 0x800030b9, 0x000030aa, 
+       0x000030fc, 0x800030e0, 0x000030ab, 0x000030a4, 
+       0x800030ea, 0x000030ab, 0x000030e9, 0x000030c3, 
+       0x800030c8, 0x000030ab, 0x000030ed, 0x000030ea, 
+       0x800030fc, 0x000030ac, 0x000030ed, 0x800030f3, 
+       0x000030ac, 0x000030f3, 0x800030de, 0x000030ae, 
+       0x800030ac, 0x000030ae, 0x000030cb, 0x800030fc, 
+       0x000030ad, 0x000030e5, 0x000030ea, 0x800030fc, 
+       0x000030ae, 0x000030eb, 0x000030c0, 0x800030fc, 
+       0x000030ad, 0x800030ed, 0x000030ad, 0x000030ed, 
+       0x000030b0, 0x000030e9, 0x800030e0, 0x000030ad, 
+       0x000030ed, 0x000030e1, 0x000030fc, 0x000030c8, 
+       0x800030eb, 0x000030ad, 0x000030ed, 0x000030ef, 
+       0x000030c3, 0x800030c8, 0x000030b0, 0x000030e9, 
+       0x800030e0, 0x000030b0, 0x000030e9, 0x000030e0, 
+       0x000030c8, 0x800030f3, 0x000030af, 0x000030eb, 
+       0x000030bc, 0x000030a4, 0x800030ed, 0x000030af, 
+       0x000030ed, 0x000030fc, 0x800030cd, 0x000030b1, 
+       0x000030fc, 0x800030b9, 0x000030b3, 0x000030eb, 
+       0x800030ca, 0x000030b3, 0x000030fc, 0x800030dd, 
+       0x000030b5, 0x000030a4, 0x000030af, 0x800030eb, 
+       0x000030b5, 0x000030f3, 0x000030c1, 0x000030fc, 
+       0x800030e0, 0x000030b7, 0x000030ea, 0x000030f3, 
+       0x800030b0, 0x000030bb, 0x000030f3, 0x800030c1, 
+       0x000030bb, 0x000030f3, 0x800030c8, 0x000030c0, 
+       0x000030fc, 0x800030b9, 0x000030c7, 0x800030b7, 
+       0x000030c9, 0x800030eb, 0x000030c8, 0x800030f3, 
+       0x000030ca, 0x800030ce, 0x000030ce, 0x000030c3, 
+       0x800030c8, 0x000030cf, 0x000030a4, 0x800030c4, 
+       0x000030d1, 0x000030fc, 0x000030bb, 0x000030f3, 
+       0x800030c8, 0x000030d1, 0x000030fc, 0x800030c4, 
+       0x000030d0, 0x000030fc, 0x000030ec, 0x800030eb, 
+       0x000030d4, 0x000030a2, 0x000030b9, 0x000030c8, 
+       0x800030eb, 0x000030d4, 0x000030af, 0x800030eb, 
+       0x000030d4, 0x800030b3, 0x000030d3, 0x800030eb, 
+       0x000030d5, 0x000030a1, 0x000030e9, 0x000030c3, 
+       0x800030c9, 0x000030d5, 0x000030a3, 0x000030fc, 
+       0x800030c8, 0x000030d6, 0x000030c3, 0x000030b7, 
+       0x000030a7, 0x800030eb, 0x000030d5, 0x000030e9, 
+       0x800030f3, 0x000030d8, 0x000030af, 0x000030bf, 
+       0x000030fc, 0x800030eb, 0x000030da, 0x800030bd, 
+       0x000030da, 0x000030cb, 0x800030d2, 0x000030d8, 
+       0x000030eb, 0x800030c4, 0x000030da, 0x000030f3, 
+       0x800030b9, 0x000030da, 0x000030fc, 0x800030b8, 
+       0x000030d9, 0x000030fc, 0x800030bf, 0x000030dd, 
+       0x000030a4, 0x000030f3, 0x800030c8, 0x000030dc, 
+       0x000030eb, 0x800030c8, 0x000030db, 0x800030f3, 
+       0x000030dd, 0x000030f3, 0x800030c9, 0x000030db, 
+       0x000030fc, 0x800030eb, 0x000030db, 0x000030fc, 
+       0x800030f3, 0x000030de, 0x000030a4, 0x000030af, 
+       0x800030ed, 0x000030de, 0x000030a4, 0x800030eb, 
+       0x000030de, 0x000030c3, 0x800030cf, 0x000030de, 
+       0x000030eb, 0x800030af, 0x000030de, 0x000030f3, 
+       0x000030b7, 0x000030e7, 0x800030f3, 0x000030df, 
+       0x000030af, 0x000030ed, 0x800030f3, 0x000030df, 
+       0x800030ea, 0x000030df, 0x000030ea, 0x000030d0, 
+       0x000030fc, 0x800030eb, 0x000030e1, 0x800030ac, 
+       0x000030e1, 0x000030ac, 0x000030c8, 0x800030f3, 
+       0x000030e1, 0x000030fc, 0x000030c8, 0x800030eb, 
+       0x000030e4, 0x000030fc, 0x800030c9, 0x000030e4, 
+       0x000030fc, 0x800030eb, 0x000030e6, 0x000030a2, 
+       0x800030f3, 0x000030ea, 0x000030c3, 0x000030c8, 
+       0x800030eb, 0x000030ea, 0x800030e9, 0x000030eb, 
+       0x000030d4, 0x800030fc, 0x000030eb, 0x000030fc, 
+       0x000030d6, 0x800030eb, 0x000030ec, 0x800030e0, 
+       0x000030ec, 0x000030f3, 0x000030c8, 0x000030b2, 
+       0x800030f3, 0x000030ef, 0x000030c3, 0x800030c8, 
+       0x00000030, 0x800070b9, 0x00000031, 0x800070b9, 
+       0x00000032, 0x800070b9, 0x00000033, 0x800070b9, 
+       0x00000034, 0x800070b9, 0x00000035, 0x800070b9, 
+       0x00000036, 0x800070b9, 0x00000037, 0x800070b9, 
+       0x00000038, 0x800070b9, 0x00000039, 0x800070b9, 
+       0x00000031, 0x00000030, 0x800070b9, 0x00000031, 
+       0x00000031, 0x800070b9, 0x00000031, 0x00000032, 
+       0x800070b9, 0x00000031, 0x00000033, 0x800070b9, 
+       0x00000031, 0x00000034, 0x800070b9, 0x00000031, 
+       0x00000035, 0x800070b9, 0x00000031, 0x00000036, 
+       0x800070b9, 0x00000031, 0x00000037, 0x800070b9, 
+       0x00000031, 0x00000038, 0x800070b9, 0x00000031, 
+       0x00000039, 0x800070b9, 0x00000032, 0x00000030, 
+       0x800070b9, 0x00000032, 0x00000031, 0x800070b9, 
+       0x00000032, 0x00000032, 0x800070b9, 0x00000032, 
+       0x00000033, 0x800070b9, 0x00000032, 0x00000034, 
+       0x800070b9, 0x00000068, 0x00000050, 0x80000061, 
+       0x00000064, 0x80000061, 0x00000041, 0x80000055, 
+       0x00000062, 0x00000061, 0x80000072, 0x0000006f, 
+       0x80000056, 0x00000070, 0x80000063, 0x00005e73, 
+       0x80006210, 0x0000662d, 0x8000548c, 0x00005927, 
+       0x80006b63, 0x0000660e, 0x80006cbb, 0x0000682a, 
+       0x00005f0f, 0x00004f1a, 0x8000793e, 0x00000070, 
+       0x80000041, 0x0000006e, 0x80000041, 0x000003bc, 
+       0x80000041, 0x0000006d, 0x80000041, 0x0000006b, 
+       0x80000041, 0x0000004b, 0x80000042, 0x0000004d, 
+       0x80000042, 0x00000047, 0x80000042, 0x00000063, 
+       0x00000061, 0x8000006c, 0x0000006b, 0x00000063, 
+       0x00000061, 0x8000006c, 0x00000070, 0x80000046, 
+       0x0000006e, 0x80000046, 0x000003bc, 0x80000046, 
+       0x000003bc, 0x80000067, 0x0000006d, 0x80000067, 
+       0x0000006b, 0x80000067, 0x00000048, 0x8000007a, 
+       0x0000006b, 0x00000048, 0x8000007a, 0x0000004d, 
+       0x00000048, 0x8000007a, 0x00000047, 0x00000048, 
+       0x8000007a, 0x00000054, 0x00000048, 0x8000007a, 
+       0x000003bc, 0x80002113, 0x0000006d, 0x80002113, 
+       0x00000064, 0x80002113, 0x0000006b, 0x80002113, 
+       0x00000066, 0x8000006d, 0x0000006e, 0x8000006d, 
+       0x000003bc, 0x8000006d, 0x0000006d, 0x8000006d, 
+       0x00000063, 0x8000006d, 0x0000006b, 0x8000006d, 
+       0x0000006d, 0x0000006d, 0x800000b2, 0x00000063, 
+       0x0000006d, 0x800000b2, 0x0000006d, 0x800000b2, 
+       0x0000006b, 0x0000006d, 0x800000b2, 0x0000006d, 
+       0x0000006d, 0x800000b3, 0x00000063, 0x0000006d, 
+       0x800000b3, 0x0000006d, 0x800000b3, 0x0000006b, 
+       0x0000006d, 0x800000b3, 0x0000006d, 0x00002215, 
+       0x80000073, 0x0000006d, 0x00002215, 0x00000073, 
+       0x800000b2, 0x00000050, 0x80000061, 0x0000006b, 
+       0x00000050, 0x80000061, 0x0000004d, 0x00000050, 
+       0x80000061, 0x00000047, 0x00000050, 0x80000061, 
+       0x00000072, 0x00000061, 0x80000064, 0x00000072, 
+       0x00000061, 0x00000064, 0x00002215, 0x80000073, 
+       0x00000072, 0x00000061, 0x00000064, 0x00002215, 
+       0x00000073, 0x800000b2, 0x00000070, 0x80000073, 
+       0x0000006e, 0x80000073, 0x000003bc, 0x80000073, 
+       0x0000006d, 0x80000073, 0x00000070, 0x80000056, 
+       0x0000006e, 0x80000056, 0x000003bc, 0x80000056, 
+       0x0000006d, 0x80000056, 0x0000006b, 0x80000056, 
+       0x0000004d, 0x80000056, 0x00000070, 0x80000057, 
+       0x0000006e, 0x80000057, 0x000003bc, 0x80000057, 
+       0x0000006d, 0x80000057, 0x0000006b, 0x80000057, 
+       0x0000004d, 0x80000057, 0x0000006b, 0x800003a9, 
+       0x0000004d, 0x800003a9, 0x00000061, 0x0000002e, 
+       0x0000006d, 0x8000002e, 0x00000042, 0x80000071, 
+       0x00000063, 0x80000063, 0x00000063, 0x80000064, 
+       0x00000043, 0x00002215, 0x0000006b, 0x80000067, 
+       0x00000043, 0x0000006f, 0x8000002e, 0x00000064, 
+       0x80000042, 0x00000047, 0x80000079, 0x00000068, 
+       0x80000061, 0x00000048, 0x80000050, 0x00000069, 
+       0x8000006e, 0x0000004b, 0x8000004b, 0x0000004b, 
+       0x8000004d, 0x0000006b, 0x80000074, 0x0000006c, 
+       0x8000006d, 0x0000006c, 0x8000006e, 0x0000006c, 
+       0x0000006f, 0x80000067, 0x0000006c, 0x80000078, 
+       0x0000006d, 0x80000062, 0x0000006d, 0x00000069, 
+       0x8000006c, 0x0000006d, 0x0000006f, 0x8000006c, 
+       0x00000050, 0x80000048, 0x00000070, 0x0000002e, 
+       0x0000006d, 0x8000002e, 0x00000050, 0x00000050, 
+       0x8000004d, 0x00000050, 0x80000052, 0x00000073, 
+       0x80000072, 0x00000053, 0x80000076, 0x00000057, 
+       0x80000062, 0x00000031, 0x800065e5, 0x00000032, 
+       0x800065e5, 0x00000033, 0x800065e5, 0x00000034, 
+       0x800065e5, 0x00000035, 0x800065e5, 0x00000036, 
+       0x800065e5, 0x00000037, 0x800065e5, 0x00000038, 
+       0x800065e5, 0x00000039, 0x800065e5, 0x00000031, 
+       0x00000030, 0x800065e5, 0x00000031, 0x00000031, 
+       0x800065e5, 0x00000031, 0x00000032, 0x800065e5, 
+       0x00000031, 0x00000033, 0x800065e5, 0x00000031, 
+       0x00000034, 0x800065e5, 0x00000031, 0x00000035, 
+       0x800065e5, 0x00000031, 0x00000036, 0x800065e5, 
+       0x00000031, 0x00000037, 0x800065e5, 0x00000031, 
+       0x00000038, 0x800065e5, 0x00000031, 0x00000039, 
+       0x800065e5, 0x00000032, 0x00000030, 0x800065e5, 
+       0x00000032, 0x00000031, 0x800065e5, 0x00000032, 
+       0x00000032, 0x800065e5, 0x00000032, 0x00000033, 
+       0x800065e5, 0x00000032, 0x00000034, 0x800065e5, 
+       0x00000032, 0x00000035, 0x800065e5, 0x00000032, 
+       0x00000036, 0x800065e5, 0x00000032, 0x00000037, 
+       0x800065e5, 0x00000032, 0x00000038, 0x800065e5, 
+       0x00000032, 0x00000039, 0x800065e5, 0x00000033, 
+       0x00000030, 0x800065e5, 0x00000033, 0x00000031, 
+       0x800065e5, 0x80008c48, 0x800066f4, 0x80008eca, 
+       0x80008cc8, 0x80006ed1, 0x80004e32, 0x800053e5, 
+       0x80009f9c, 0x80009f9c, 0x80005951, 0x800091d1, 
+       0x80005587, 0x80005948, 0x800061f6, 0x80007669, 
+       0x80007f85, 0x8000863f, 0x800087ba, 0x800088f8, 
+       0x8000908f, 0x80006a02, 0x80006d1b, 0x800070d9, 
+       0x800073de, 0x8000843d, 0x8000916a, 0x800099f1, 
+       0x80004e82, 0x80005375, 0x80006b04, 0x8000721b, 
+       0x8000862d, 0x80009e1e, 0x80005d50, 0x80006feb, 
+       0x800085cd, 0x80008964, 0x800062c9, 0x800081d8, 
+       0x8000881f, 0x80005eca, 0x80006717, 0x80006d6a, 
+       0x800072fc, 0x800090ce, 0x80004f86, 0x800051b7, 
+       0x800052de, 0x800064c4, 0x80006ad3, 0x80007210, 
+       0x800076e7, 0x80008001, 0x80008606, 0x8000865c, 
+       0x80008def, 0x80009732, 0x80009b6f, 0x80009dfa, 
+       0x8000788c, 0x8000797f, 0x80007da0, 0x800083c9, 
+       0x80009304, 0x80009e7f, 0x80008ad6, 0x800058df, 
+       0x80005f04, 0x80007c60, 0x8000807e, 0x80007262, 
+       0x800078ca, 0x80008cc2, 0x800096f7, 0x800058d8, 
+       0x80005c62, 0x80006a13, 0x80006dda, 0x80006f0f, 
+       0x80007d2f, 0x80007e37, 0x800096fb, 0x800052d2, 
+       0x8000808b, 0x800051dc, 0x800051cc, 0x80007a1c, 
+       0x80007dbe, 0x800083f1, 0x80009675, 0x80008b80, 
+       0x800062cf, 0x80006a02, 0x80008afe, 0x80004e39, 
+       0x80005be7, 0x80006012, 0x80007387, 0x80007570, 
+       0x80005317, 0x800078fb, 0x80004fbf, 0x80005fa9, 
+       0x80004e0d, 0x80006ccc, 0x80006578, 0x80007d22, 
+       0x800053c3, 0x8000585e, 0x80007701, 0x80008449, 
+       0x80008aaa, 0x80006bba, 0x80008fb0, 0x80006c88, 
+       0x800062fe, 0x800082e5, 0x800063a0, 0x80007565, 
+       0x80004eae, 0x80005169, 0x800051c9, 0x80006881, 
+       0x80007ce7, 0x8000826f, 0x80008ad2, 0x800091cf, 
+       0x800052f5, 0x80005442, 0x80005973, 0x80005eec, 
+       0x800065c5, 0x80006ffe, 0x8000792a, 0x800095ad, 
+       0x80009a6a, 0x80009e97, 0x80009ece, 0x8000529b, 
+       0x800066c6, 0x80006b77, 0x80008f62, 0x80005e74, 
+       0x80006190, 0x80006200, 0x8000649a, 0x80006f23, 
+       0x80007149, 0x80007489, 0x800079ca, 0x80007df4, 
+       0x8000806f, 0x80008f26, 0x800084ee, 0x80009023, 
+       0x8000934a, 0x80005217, 0x800052a3, 0x800054bd, 
+       0x800070c8, 0x800088c2, 0x80008aaa, 0x80005ec9, 
+       0x80005ff5, 0x8000637b, 0x80006bae, 0x80007c3e, 
+       0x80007375, 0x80004ee4, 0x800056f9, 0x80005be7, 
+       0x80005dba, 0x8000601c, 0x800073b2, 0x80007469, 
+       0x80007f9a, 0x80008046, 0x80009234, 0x800096f6, 
+       0x80009748, 0x80009818, 0x80004f8b, 0x800079ae, 
+       0x800091b4, 0x800096b8, 0x800060e1, 0x80004e86, 
+       0x800050da, 0x80005bee, 0x80005c3f, 0x80006599, 
+       0x80006a02, 0x800071ce, 0x80007642, 0x800084fc, 
+       0x8000907c, 0x80009f8d, 0x80006688, 0x8000962e, 
+       0x80005289, 0x8000677b, 0x800067f3, 0x80006d41, 
+       0x80006e9c, 0x80007409, 0x80007559, 0x8000786b, 
+       0x80007d10, 0x8000985e, 0x8000516d, 0x8000622e, 
+       0x80009678, 0x8000502b, 0x80005d19, 0x80006dea, 
+       0x80008f2a, 0x80005f8b, 0x80006144, 0x80006817, 
+       0x80007387, 0x80009686, 0x80005229, 0x8000540f, 
+       0x80005c65, 0x80006613, 0x8000674e, 0x800068a8, 
+       0x80006ce5, 0x80007406, 0x800075e2, 0x80007f79, 
+       0x800088cf, 0x800088e1, 0x800091cc, 0x800096e2, 
+       0x8000533f, 0x80006eba, 0x8000541d, 0x800071d0, 
+       0x80007498, 0x800085fa, 0x800096a3, 0x80009c57, 
+       0x80009e9f, 0x80006797, 0x80006dcb, 0x800081e8, 
+       0x80007acb, 0x80007b20, 0x80007c92, 0x800072c0, 
+       0x80007099, 0x80008b58, 0x80004ec0, 0x80008336, 
+       0x8000523a, 0x80005207, 0x80005ea6, 0x800062d3, 
+       0x80007cd6, 0x80005b85, 0x80006d1e, 0x800066b4, 
+       0x80008f3b, 0x8000884c, 0x8000964d, 0x8000898b, 
+       0x80005ed3, 0x80005140, 0x800055c0, 0x8000585a, 
+       0x80006674, 0x800051de, 0x8000732a, 0x800076ca, 
+       0x8000793c, 0x8000795e, 0x80007965, 0x8000798f, 
+       0x80009756, 0x80007cbe, 0x80007fbd, 0x80008612, 
+       0x80008af8, 0x80009038, 0x800090fd, 0x800098ef, 
+       0x800098fc, 0x80009928, 0x80009db4, 0x00000066, 
+       0x80000066, 0x00000066, 0x80000069, 0x00000066, 
+       0x8000006c, 0x00000066, 0x00000066, 0x80000069, 
+       0x00000066, 0x00000066, 0x8000006c, 0x0000017f, 
+       0x80000074, 0x00000073, 0x80000074, 0x00000574, 
+       0x80000576, 0x00000574, 0x80000565, 0x00000574, 
+       0x8000056b, 0x0000057e, 0x80000576, 0x00000574, 
+       0x8000056d, 0x000005d9, 0x800005b4, 0x000005f2, 
+       0x800005b7, 0x800005e2, 0x800005d0, 0x800005d3, 
+       0x800005d4, 0x800005db, 0x800005dc, 0x800005dd, 
+       0x800005e8, 0x800005ea, 0x8000002b, 0x000005e9, 
+       0x800005c1, 0x000005e9, 0x800005c2, 0x0000fb49, 
+       0x800005c1, 0x0000fb49, 0x800005c2, 0x000005d0, 
+       0x800005b7, 0x000005d0, 0x800005b8, 0x000005d0, 
+       0x800005bc, 0x000005d1, 0x800005bc, 0x000005d2, 
+       0x800005bc, 0x000005d3, 0x800005bc, 0x000005d4, 
+       0x800005bc, 0x000005d5, 0x800005bc, 0x000005d6, 
+       0x800005bc, 0x000005d8, 0x800005bc, 0x000005d9, 
+       0x800005bc, 0x000005da, 0x800005bc, 0x000005db, 
+       0x800005bc, 0x000005dc, 0x800005bc, 0x000005de, 
+       0x800005bc, 0x000005e0, 0x800005bc, 0x000005e1, 
+       0x800005bc, 0x000005e3, 0x800005bc, 0x000005e4, 
+       0x800005bc, 0x000005e6, 0x800005bc, 0x000005e7, 
+       0x800005bc, 0x000005e8, 0x800005bc, 0x000005e9, 
+       0x800005bc, 0x000005ea, 0x800005bc, 0x000005d5, 
+       0x800005b9, 0x000005d1, 0x800005bf, 0x000005db, 
+       0x800005bf, 0x000005e4, 0x800005bf, 0x000005d0, 
+       0x800005dc, 0x80000671, 0x80000671, 0x8000067b, 
+       0x8000067b, 0x8000067b, 0x8000067b, 0x8000067e, 
+       0x8000067e, 0x8000067e, 0x8000067e, 0x80000680, 
+       0x80000680, 0x80000680, 0x80000680, 0x8000067a, 
+       0x8000067a, 0x8000067a, 0x8000067a, 0x8000067f, 
+       0x8000067f, 0x8000067f, 0x8000067f, 0x80000679, 
+       0x80000679, 0x80000679, 0x80000679, 0x800006a4, 
+       0x800006a4, 0x800006a4, 0x800006a4, 0x800006a6, 
+       0x800006a6, 0x800006a6, 0x800006a6, 0x80000684, 
+       0x80000684, 0x80000684, 0x80000684, 0x80000683, 
+       0x80000683, 0x80000683, 0x80000683, 0x80000686, 
+       0x80000686, 0x80000686, 0x80000686, 0x80000687, 
+       0x80000687, 0x80000687, 0x80000687, 0x8000068d, 
+       0x8000068d, 0x8000068c, 0x8000068c, 0x8000068e, 
+       0x8000068e, 0x80000688, 0x80000688, 0x80000698, 
+       0x80000698, 0x80000691, 0x80000691, 0x800006a9, 
+       0x800006a9, 0x800006a9, 0x800006a9, 0x800006af, 
+       0x800006af, 0x800006af, 0x800006af, 0x800006b3, 
+       0x800006b3, 0x800006b3, 0x800006b3, 0x800006b1, 
+       0x800006b1, 0x800006b1, 0x800006b1, 0x800006ba, 
+       0x800006ba, 0x800006bb, 0x800006bb, 0x800006bb, 
+       0x800006bb, 0x800006c0, 0x800006c0, 0x800006c1, 
+       0x800006c1, 0x800006c1, 0x800006c1, 0x800006be, 
+       0x800006be, 0x800006be, 0x800006be, 0x800006d2, 
+       0x800006d2, 0x800006d3, 0x800006d3, 0x800006ad, 
+       0x800006ad, 0x800006ad, 0x800006ad, 0x800006c7, 
+       0x800006c7, 0x800006c6, 0x800006c6, 0x800006c8, 
+       0x800006c8, 0x80000677, 0x800006cb, 0x800006cb, 
+       0x800006c5, 0x800006c5, 0x800006c9, 0x800006c9, 
+       0x800006d0, 0x800006d0, 0x800006d0, 0x800006d0, 
+       0x80000649, 0x80000649, 0x00000626, 0x80000627, 
+       0x00000626, 0x80000627, 0x00000626, 0x800006d5, 
+       0x00000626, 0x800006d5, 0x00000626, 0x80000648, 
+       0x00000626, 0x80000648, 0x00000626, 0x800006c7, 
+       0x00000626, 0x800006c7, 0x00000626, 0x800006c6, 
+       0x00000626, 0x800006c6, 0x00000626, 0x800006c8, 
+       0x00000626, 0x800006c8, 0x00000626, 0x800006d0, 
+       0x00000626, 0x800006d0, 0x00000626, 0x800006d0, 
+       0x00000626, 0x80000649, 0x00000626, 0x80000649, 
+       0x00000626, 0x80000649, 0x800006cc, 0x800006cc, 
+       0x800006cc, 0x800006cc, 0x00000626, 0x8000062c, 
+       0x00000626, 0x8000062d, 0x00000626, 0x80000645, 
+       0x00000626, 0x80000649, 0x00000626, 0x8000064a, 
+       0x00000628, 0x8000062c, 0x00000628, 0x8000062d, 
+       0x00000628, 0x8000062e, 0x00000628, 0x80000645, 
+       0x00000628, 0x80000649, 0x00000628, 0x8000064a, 
+       0x0000062a, 0x8000062c, 0x0000062a, 0x8000062d, 
+       0x0000062a, 0x8000062e, 0x0000062a, 0x80000645, 
+       0x0000062a, 0x80000649, 0x0000062a, 0x8000064a, 
+       0x0000062b, 0x8000062c, 0x0000062b, 0x80000645, 
+       0x0000062b, 0x80000649, 0x0000062b, 0x8000064a, 
+       0x0000062c, 0x8000062d, 0x0000062c, 0x80000645, 
+       0x0000062d, 0x8000062c, 0x0000062d, 0x80000645, 
+       0x0000062e, 0x8000062c, 0x0000062e, 0x8000062d, 
+       0x0000062e, 0x80000645, 0x00000633, 0x8000062c, 
+       0x00000633, 0x8000062d, 0x00000633, 0x8000062e, 
+       0x00000633, 0x80000645, 0x00000635, 0x8000062d, 
+       0x00000635, 0x80000645, 0x00000636, 0x8000062c, 
+       0x00000636, 0x8000062d, 0x00000636, 0x8000062e, 
+       0x00000636, 0x80000645, 0x00000637, 0x8000062d, 
+       0x00000637, 0x80000645, 0x00000638, 0x80000645, 
+       0x00000639, 0x8000062c, 0x00000639, 0x80000645, 
+       0x0000063a, 0x8000062c, 0x0000063a, 0x80000645, 
+       0x00000641, 0x8000062c, 0x00000641, 0x8000062d, 
+       0x00000641, 0x8000062e, 0x00000641, 0x80000645, 
+       0x00000641, 0x80000649, 0x00000641, 0x8000064a, 
+       0x00000642, 0x8000062d, 0x00000642, 0x80000645, 
+       0x00000642, 0x80000649, 0x00000642, 0x8000064a, 
+       0x00000643, 0x80000627, 0x00000643, 0x8000062c, 
+       0x00000643, 0x8000062d, 0x00000643, 0x8000062e, 
+       0x00000643, 0x80000644, 0x00000643, 0x80000645, 
+       0x00000643, 0x80000649, 0x00000643, 0x8000064a, 
+       0x00000644, 0x8000062c, 0x00000644, 0x8000062d, 
+       0x00000644, 0x8000062e, 0x00000644, 0x80000645, 
+       0x00000644, 0x80000649, 0x00000644, 0x8000064a, 
+       0x00000645, 0x8000062c, 0x00000645, 0x8000062d, 
+       0x00000645, 0x8000062e, 0x00000645, 0x80000645, 
+       0x00000645, 0x80000649, 0x00000645, 0x8000064a, 
+       0x00000646, 0x8000062c, 0x00000646, 0x8000062d, 
+       0x00000646, 0x8000062e, 0x00000646, 0x80000645, 
+       0x00000646, 0x80000649, 0x00000646, 0x8000064a, 
+       0x00000647, 0x8000062c, 0x00000647, 0x80000645, 
+       0x00000647, 0x80000649, 0x00000647, 0x8000064a, 
+       0x0000064a, 0x8000062c, 0x0000064a, 0x8000062d, 
+       0x0000064a, 0x8000062e, 0x0000064a, 0x80000645, 
+       0x0000064a, 0x80000649, 0x0000064a, 0x8000064a, 
+       0x00000630, 0x80000670, 0x00000631, 0x80000670, 
+       0x00000649, 0x80000670, 0x00000020, 0x0000064c, 
+       0x80000651, 0x00000020, 0x0000064d, 0x80000651, 
+       0x00000020, 0x0000064e, 0x80000651, 0x00000020, 
+       0x0000064f, 0x80000651, 0x00000020, 0x00000650, 
+       0x80000651, 0x00000020, 0x00000651, 0x80000670, 
+       0x00000626, 0x80000631, 0x00000626, 0x80000632, 
+       0x00000626, 0x80000645, 0x00000626, 0x80000646, 
+       0x00000626, 0x80000649, 0x00000626, 0x8000064a, 
+       0x00000628, 0x80000631, 0x00000628, 0x80000632, 
+       0x00000628, 0x80000645, 0x00000628, 0x80000646, 
+       0x00000628, 0x80000649, 0x00000628, 0x8000064a, 
+       0x0000062a, 0x80000631, 0x0000062a, 0x80000632, 
+       0x0000062a, 0x80000645, 0x0000062a, 0x80000646, 
+       0x0000062a, 0x80000649, 0x0000062a, 0x8000064a, 
+       0x0000062b, 0x80000631, 0x0000062b, 0x80000632, 
+       0x0000062b, 0x80000645, 0x0000062b, 0x80000646, 
+       0x0000062b, 0x80000649, 0x0000062b, 0x8000064a, 
+       0x00000641, 0x80000649, 0x00000641, 0x8000064a, 
+       0x00000642, 0x80000649, 0x00000642, 0x8000064a, 
+       0x00000643, 0x80000627, 0x00000643, 0x80000644, 
+       0x00000643, 0x80000645, 0x00000643, 0x80000649, 
+       0x00000643, 0x8000064a, 0x00000644, 0x80000645, 
+       0x00000644, 0x80000649, 0x00000644, 0x8000064a, 
+       0x00000645, 0x80000627, 0x00000645, 0x80000645, 
+       0x00000646, 0x80000631, 0x00000646, 0x80000632, 
+       0x00000646, 0x80000645, 0x00000646, 0x80000646, 
+       0x00000646, 0x80000649, 0x00000646, 0x8000064a, 
+       0x00000649, 0x80000670, 0x0000064a, 0x80000631, 
+       0x0000064a, 0x80000632, 0x0000064a, 0x80000645, 
+       0x0000064a, 0x80000646, 0x0000064a, 0x80000649, 
+       0x0000064a, 0x8000064a, 0x00000626, 0x8000062c, 
+       0x00000626, 0x8000062d, 0x00000626, 0x8000062e, 
+       0x00000626, 0x80000645, 0x00000626, 0x80000647, 
+       0x00000628, 0x8000062c, 0x00000628, 0x8000062d, 
+       0x00000628, 0x8000062e, 0x00000628, 0x80000645, 
+       0x00000628, 0x80000647, 0x0000062a, 0x8000062c, 
+       0x0000062a, 0x8000062d, 0x0000062a, 0x8000062e, 
+       0x0000062a, 0x80000645, 0x0000062a, 0x80000647, 
+       0x0000062b, 0x80000645, 0x0000062c, 0x8000062d, 
+       0x0000062c, 0x80000645, 0x0000062d, 0x8000062c, 
+       0x0000062d, 0x80000645, 0x0000062e, 0x8000062c, 
+       0x0000062e, 0x80000645, 0x00000633, 0x8000062c, 
+       0x00000633, 0x8000062d, 0x00000633, 0x8000062e, 
+       0x00000633, 0x80000645, 0x00000635, 0x8000062d, 
+       0x00000635, 0x8000062e, 0x00000635, 0x80000645, 
+       0x00000636, 0x8000062c, 0x00000636, 0x8000062d, 
+       0x00000636, 0x8000062e, 0x00000636, 0x80000645, 
+       0x00000637, 0x8000062d, 0x00000638, 0x80000645, 
+       0x00000639, 0x8000062c, 0x00000639, 0x80000645, 
+       0x0000063a, 0x8000062c, 0x0000063a, 0x80000645, 
+       0x00000641, 0x8000062c, 0x00000641, 0x8000062d, 
+       0x00000641, 0x8000062e, 0x00000641, 0x80000645, 
+       0x00000642, 0x8000062d, 0x00000642, 0x80000645, 
+       0x00000643, 0x8000062c, 0x00000643, 0x8000062d, 
+       0x00000643, 0x8000062e, 0x00000643, 0x80000644, 
+       0x00000643, 0x80000645, 0x00000644, 0x8000062c, 
+       0x00000644, 0x8000062d, 0x00000644, 0x8000062e, 
+       0x00000644, 0x80000645, 0x00000644, 0x80000647, 
+       0x00000645, 0x8000062c, 0x00000645, 0x8000062d, 
+       0x00000645, 0x8000062e, 0x00000645, 0x80000645, 
+       0x00000646, 0x8000062c, 0x00000646, 0x8000062d, 
+       0x00000646, 0x8000062e, 0x00000646, 0x80000645, 
+       0x00000646, 0x80000647, 0x00000647, 0x8000062c, 
+       0x00000647, 0x80000645, 0x00000647, 0x80000670, 
+       0x0000064a, 0x8000062c, 0x0000064a, 0x8000062d, 
+       0x0000064a, 0x8000062e, 0x0000064a, 0x80000645, 
+       0x0000064a, 0x80000647, 0x00000626, 0x80000645, 
+       0x00000626, 0x80000647, 0x00000628, 0x80000645, 
+       0x00000628, 0x80000647, 0x0000062a, 0x80000645, 
+       0x0000062a, 0x80000647, 0x0000062b, 0x80000645, 
+       0x0000062b, 0x80000647, 0x00000633, 0x80000645, 
+       0x00000633, 0x80000647, 0x00000634, 0x80000645, 
+       0x00000634, 0x80000647, 0x00000643, 0x80000644, 
+       0x00000643, 0x80000645, 0x00000644, 0x80000645, 
+       0x00000646, 0x80000645, 0x00000646, 0x80000647, 
+       0x0000064a, 0x80000645, 0x0000064a, 0x80000647, 
+       0x00000640, 0x0000064e, 0x80000651, 0x00000640, 
+       0x0000064f, 0x80000651, 0x00000640, 0x00000650, 
+       0x80000651, 0x00000637, 0x80000649, 0x00000637, 
+       0x8000064a, 0x00000639, 0x80000649, 0x00000639, 
+       0x8000064a, 0x0000063a, 0x80000649, 0x0000063a, 
+       0x8000064a, 0x00000633, 0x80000649, 0x00000633, 
+       0x8000064a, 0x00000634, 0x80000649, 0x00000634, 
+       0x8000064a, 0x0000062d, 0x80000649, 0x0000062d, 
+       0x8000064a, 0x0000062c, 0x80000649, 0x0000062c, 
+       0x8000064a, 0x0000062e, 0x80000649, 0x0000062e, 
+       0x8000064a, 0x00000635, 0x80000649, 0x00000635, 
+       0x8000064a, 0x00000636, 0x80000649, 0x00000636, 
+       0x8000064a, 0x00000634, 0x8000062c, 0x00000634, 
+       0x8000062d, 0x00000634, 0x8000062e, 0x00000634, 
+       0x80000645, 0x00000634, 0x80000631, 0x00000633, 
+       0x80000631, 0x00000635, 0x80000631, 0x00000636, 
+       0x80000631, 0x00000637, 0x80000649, 0x00000637, 
+       0x8000064a, 0x00000639, 0x80000649, 0x00000639, 
+       0x8000064a, 0x0000063a, 0x80000649, 0x0000063a, 
+       0x8000064a, 0x00000633, 0x80000649, 0x00000633, 
+       0x8000064a, 0x00000634, 0x80000649, 0x00000634, 
+       0x8000064a, 0x0000062d, 0x80000649, 0x0000062d, 
+       0x8000064a, 0x0000062c, 0x80000649, 0x0000062c, 
+       0x8000064a, 0x0000062e, 0x80000649, 0x0000062e, 
+       0x8000064a, 0x00000635, 0x80000649, 0x00000635, 
+       0x8000064a, 0x00000636, 0x80000649, 0x00000636, 
+       0x8000064a, 0x00000634, 0x8000062c, 0x00000634, 
+       0x8000062d, 0x00000634, 0x8000062e, 0x00000634, 
+       0x80000645, 0x00000634, 0x80000631, 0x00000633, 
+       0x80000631, 0x00000635, 0x80000631, 0x00000636, 
+       0x80000631, 0x00000634, 0x8000062c, 0x00000634, 
+       0x8000062d, 0x00000634, 0x8000062e, 0x00000634, 
+       0x80000645, 0x00000633, 0x80000647, 0x00000634, 
+       0x80000647, 0x00000637, 0x80000645, 0x00000633, 
+       0x8000062c, 0x00000633, 0x8000062d, 0x00000633, 
+       0x8000062e, 0x00000634, 0x8000062c, 0x00000634, 
+       0x8000062d, 0x00000634, 0x8000062e, 0x00000637, 
+       0x80000645, 0x00000638, 0x80000645, 0x00000627, 
+       0x8000064b, 0x00000627, 0x8000064b, 0x0000062a, 
+       0x0000062c, 0x80000645, 0x0000062a, 0x0000062d, 
+       0x8000062c, 0x0000062a, 0x0000062d, 0x8000062c, 
+       0x0000062a, 0x0000062d, 0x80000645, 0x0000062a, 
+       0x0000062e, 0x80000645, 0x0000062a, 0x00000645, 
+       0x8000062c, 0x0000062a, 0x00000645, 0x8000062d, 
+       0x0000062a, 0x00000645, 0x8000062e, 0x0000062c, 
+       0x00000645, 0x8000062d, 0x0000062c, 0x00000645, 
+       0x8000062d, 0x0000062d, 0x00000645, 0x8000064a, 
+       0x0000062d, 0x00000645, 0x80000649, 0x00000633, 
+       0x0000062d, 0x8000062c, 0x00000633, 0x0000062c, 
+       0x8000062d, 0x00000633, 0x0000062c, 0x80000649, 
+       0x00000633, 0x00000645, 0x8000062d, 0x00000633, 
+       0x00000645, 0x8000062d, 0x00000633, 0x00000645, 
+       0x8000062c, 0x00000633, 0x00000645, 0x80000645, 
+       0x00000633, 0x00000645, 0x80000645, 0x00000635, 
+       0x0000062d, 0x8000062d, 0x00000635, 0x0000062d, 
+       0x8000062d, 0x00000635, 0x00000645, 0x80000645, 
+       0x00000634, 0x0000062d, 0x80000645, 0x00000634, 
+       0x0000062d, 0x80000645, 0x00000634, 0x0000062c, 
+       0x8000064a, 0x00000634, 0x00000645, 0x8000062e, 
+       0x00000634, 0x00000645, 0x8000062e, 0x00000634, 
+       0x00000645, 0x80000645, 0x00000634, 0x00000645, 
+       0x80000645, 0x00000636, 0x0000062d, 0x80000649, 
+       0x00000636, 0x0000062e, 0x80000645, 0x00000636, 
+       0x0000062e, 0x80000645, 0x00000637, 0x00000645, 
+       0x8000062d, 0x00000637, 0x00000645, 0x8000062d, 
+       0x00000637, 0x00000645, 0x80000645, 0x00000637, 
+       0x00000645, 0x8000064a, 0x00000639, 0x0000062c, 
+       0x80000645, 0x00000639, 0x00000645, 0x80000645, 
+       0x00000639, 0x00000645, 0x80000645, 0x00000639, 
+       0x00000645, 0x80000649, 0x0000063a, 0x00000645, 
+       0x80000645, 0x0000063a, 0x00000645, 0x8000064a, 
+       0x0000063a, 0x00000645, 0x80000649, 0x00000641, 
+       0x0000062e, 0x80000645, 0x00000641, 0x0000062e, 
+       0x80000645, 0x00000642, 0x00000645, 0x8000062d, 
+       0x00000642, 0x00000645, 0x80000645, 0x00000644, 
+       0x0000062d, 0x80000645, 0x00000644, 0x0000062d, 
+       0x8000064a, 0x00000644, 0x0000062d, 0x80000649, 
+       0x00000644, 0x0000062c, 0x8000062c, 0x00000644, 
+       0x0000062c, 0x8000062c, 0x00000644, 0x0000062e, 
+       0x80000645, 0x00000644, 0x0000062e, 0x80000645, 
+       0x00000644, 0x00000645, 0x8000062d, 0x00000644, 
+       0x00000645, 0x8000062d, 0x00000645, 0x0000062d, 
+       0x8000062c, 0x00000645, 0x0000062d, 0x80000645, 
+       0x00000645, 0x0000062d, 0x8000064a, 0x00000645, 
+       0x0000062c, 0x8000062d, 0x00000645, 0x0000062c, 
+       0x80000645, 0x00000645, 0x0000062e, 0x8000062c, 
+       0x00000645, 0x0000062e, 0x80000645, 0x00000645, 
+       0x0000062c, 0x8000062e, 0x00000647, 0x00000645, 
+       0x8000062c, 0x00000647, 0x00000645, 0x80000645, 
+       0x00000646, 0x0000062d, 0x80000645, 0x00000646, 
+       0x0000062d, 0x80000649, 0x00000646, 0x0000062c, 
+       0x80000645, 0x00000646, 0x0000062c, 0x80000645, 
+       0x00000646, 0x0000062c, 0x80000649, 0x00000646, 
+       0x00000645, 0x8000064a, 0x00000646, 0x00000645, 
+       0x80000649, 0x0000064a, 0x00000645, 0x80000645, 
+       0x0000064a, 0x00000645, 0x80000645, 0x00000628, 
+       0x0000062e, 0x8000064a, 0x0000062a, 0x0000062c, 
+       0x8000064a, 0x0000062a, 0x0000062c, 0x80000649, 
+       0x0000062a, 0x0000062e, 0x8000064a, 0x0000062a, 
+       0x0000062e, 0x80000649, 0x0000062a, 0x00000645, 
+       0x8000064a, 0x0000062a, 0x00000645, 0x80000649, 
+       0x0000062c, 0x00000645, 0x8000064a, 0x0000062c, 
+       0x0000062d, 0x80000649, 0x0000062c, 0x00000645, 
+       0x80000649, 0x00000633, 0x0000062e, 0x80000649, 
+       0x00000635, 0x0000062d, 0x8000064a, 0x00000634, 
+       0x0000062d, 0x8000064a, 0x00000636, 0x0000062d, 
+       0x8000064a, 0x00000644, 0x0000062c, 0x8000064a, 
+       0x00000644, 0x00000645, 0x8000064a, 0x0000064a, 
+       0x0000062d, 0x8000064a, 0x0000064a, 0x0000062c, 
+       0x8000064a, 0x0000064a, 0x00000645, 0x8000064a, 
+       0x00000645, 0x00000645, 0x8000064a, 0x00000642, 
+       0x00000645, 0x8000064a, 0x00000646, 0x0000062d, 
+       0x8000064a, 0x00000642, 0x00000645, 0x8000062d, 
+       0x00000644, 0x0000062d, 0x80000645, 0x00000639, 
+       0x00000645, 0x8000064a, 0x00000643, 0x00000645, 
+       0x8000064a, 0x00000646, 0x0000062c, 0x8000062d, 
+       0x00000645, 0x0000062e, 0x8000064a, 0x00000644, 
+       0x0000062c, 0x80000645, 0x00000643, 0x00000645, 
+       0x80000645, 0x00000644, 0x0000062c, 0x80000645, 
+       0x00000646, 0x0000062c, 0x8000062d, 0x0000062c, 
+       0x0000062d, 0x8000064a, 0x0000062d, 0x0000062c, 
+       0x8000064a, 0x00000645, 0x0000062c, 0x8000064a, 
+       0x00000641, 0x00000645, 0x8000064a, 0x00000628, 
+       0x0000062d, 0x8000064a, 0x00000643, 0x00000645, 
+       0x80000645, 0x00000639, 0x0000062c, 0x80000645, 
+       0x00000635, 0x00000645, 0x80000645, 0x00000633, 
+       0x0000062e, 0x8000064a, 0x00000646, 0x0000062c, 
+       0x8000064a, 0x00000635, 0x00000644, 0x800006d2, 
+       0x00000642, 0x00000644, 0x800006d2, 0x00000627, 
+       0x00000644, 0x00000644, 0x80000647, 0x00000627, 
+       0x00000643, 0x00000628, 0x80000631, 0x00000645, 
+       0x0000062d, 0x00000645, 0x8000062f, 0x00000635, 
+       0x00000644, 0x00000639, 0x80000645, 0x00000631, 
+       0x00000633, 0x00000648, 0x80000644, 0x00000639, 
+       0x00000644, 0x0000064a, 0x80000647, 0x00000648, 
+       0x00000633, 0x00000644, 0x80000645, 0x00000635, 
+       0x00000644, 0x80000649, 0x00000635, 0x00000644, 
+       0x00000649, 0x00000020, 0x00000627, 0x00000644, 
+       0x00000644, 0x00000647, 0x00000020, 0x00000639, 
+       0x00000644, 0x0000064a, 0x00000647, 0x00000020, 
+       0x00000648, 0x00000633, 0x00000644, 0x80000645, 
+       0x0000062c, 0x00000644, 0x00000020, 0x0000062c, 
+       0x00000644, 0x00000627, 0x00000644, 0x80000647, 
+       0x80002025, 0x80002014, 0x80002013, 0x8000005f, 
+       0x8000005f, 0x80000028, 0x80000029, 0x8000007b, 
+       0x8000007d, 0x80003014, 0x80003015, 0x80003010, 
+       0x80003011, 0x8000300a, 0x8000300b, 0x80003008, 
+       0x80003009, 0x8000300c, 0x8000300d, 0x8000300e, 
+       0x8000300f, 0x8000203e, 0x8000203e, 0x8000203e, 
+       0x8000203e, 0x8000005f, 0x8000005f, 0x8000005f, 
+       0x8000002c, 0x80003001, 0x8000002e, 0x8000003b, 
+       0x8000003a, 0x8000003f, 0x80000021, 0x80002014, 
+       0x80000028, 0x80000029, 0x8000007b, 0x8000007d, 
+       0x80003014, 0x80003015, 0x80000023, 0x80000026, 
+       0x8000002a, 0x8000002b, 0x8000002d, 0x8000003c, 
+       0x8000003e, 0x8000003d, 0x8000005c, 0x80000024, 
+       0x80000025, 0x80000040, 0x00000020, 0x8000064b, 
+       0x00000640, 0x8000064b, 0x00000020, 0x8000064c, 
+       0x00000020, 0x8000064d, 0x00000020, 0x8000064e, 
+       0x00000640, 0x8000064e, 0x00000020, 0x8000064f, 
+       0x00000640, 0x8000064f, 0x00000020, 0x80000650, 
+       0x00000640, 0x80000650, 0x00000020, 0x80000651, 
+       0x00000640, 0x80000651, 0x00000020, 0x80000652, 
+       0x00000640, 0x80000652, 0x80000621, 0x80000622, 
+       0x80000622, 0x80000623, 0x80000623, 0x80000624, 
+       0x80000624, 0x80000625, 0x80000625, 0x80000626, 
+       0x80000626, 0x80000626, 0x80000626, 0x80000627, 
+       0x80000627, 0x80000628, 0x80000628, 0x80000628, 
+       0x80000628, 0x80000629, 0x80000629, 0x8000062a, 
+       0x8000062a, 0x8000062a, 0x8000062a, 0x8000062b, 
+       0x8000062b, 0x8000062b, 0x8000062b, 0x8000062c, 
+       0x8000062c, 0x8000062c, 0x8000062c, 0x8000062d, 
+       0x8000062d, 0x8000062d, 0x8000062d, 0x8000062e, 
+       0x8000062e, 0x8000062e, 0x8000062e, 0x8000062f, 
+       0x8000062f, 0x80000630, 0x80000630, 0x80000631, 
+       0x80000631, 0x80000632, 0x80000632, 0x80000633, 
+       0x80000633, 0x80000633, 0x80000633, 0x80000634, 
+       0x80000634, 0x80000634, 0x80000634, 0x80000635, 
+       0x80000635, 0x80000635, 0x80000635, 0x80000636, 
+       0x80000636, 0x80000636, 0x80000636, 0x80000637, 
+       0x80000637, 0x80000637, 0x80000637, 0x80000638, 
+       0x80000638, 0x80000638, 0x80000638, 0x80000639, 
+       0x80000639, 0x80000639, 0x80000639, 0x8000063a, 
+       0x8000063a, 0x8000063a, 0x8000063a, 0x80000641, 
+       0x80000641, 0x80000641, 0x80000641, 0x80000642, 
+       0x80000642, 0x80000642, 0x80000642, 0x80000643, 
+       0x80000643, 0x80000643, 0x80000643, 0x80000644, 
+       0x80000644, 0x80000644, 0x80000644, 0x80000645, 
+       0x80000645, 0x80000645, 0x80000645, 0x80000646, 
+       0x80000646, 0x80000646, 0x80000646, 0x80000647, 
+       0x80000647, 0x80000647, 0x80000647, 0x80000648, 
+       0x80000648, 0x80000649, 0x80000649, 0x8000064a, 
+       0x8000064a, 0x8000064a, 0x8000064a, 0x00000644, 
+       0x80000622, 0x00000644, 0x80000622, 0x00000644, 
+       0x80000623, 0x00000644, 0x80000623, 0x00000644, 
+       0x80000625, 0x00000644, 0x80000625, 0x00000644, 
+       0x80000627, 0x00000644, 0x80000627, 0x80000021, 
+       0x80000022, 0x80000023, 0x80000024, 0x80000025, 
+       0x80000026, 0x80000027, 0x80000028, 0x80000029, 
+       0x8000002a, 0x8000002b, 0x8000002c, 0x8000002d, 
+       0x8000002e, 0x8000002f, 0x80000030, 0x80000031, 
+       0x80000032, 0x80000033, 0x80000034, 0x80000035, 
+       0x80000036, 0x80000037, 0x80000038, 0x80000039, 
+       0x8000003a, 0x8000003b, 0x8000003c, 0x8000003d, 
+       0x8000003e, 0x8000003f, 0x80000040, 0x80000041, 
+       0x80000042, 0x80000043, 0x80000044, 0x80000045, 
+       0x80000046, 0x80000047, 0x80000048, 0x80000049, 
+       0x8000004a, 0x8000004b, 0x8000004c, 0x8000004d, 
+       0x8000004e, 0x8000004f, 0x80000050, 0x80000051, 
+       0x80000052, 0x80000053, 0x80000054, 0x80000055, 
+       0x80000056, 0x80000057, 0x80000058, 0x80000059, 
+       0x8000005a, 0x8000005b, 0x8000005c, 0x8000005d, 
+       0x8000005e, 0x8000005f, 0x80000060, 0x80000061, 
+       0x80000062, 0x80000063, 0x80000064, 0x80000065, 
+       0x80000066, 0x80000067, 0x80000068, 0x80000069, 
+       0x8000006a, 0x8000006b, 0x8000006c, 0x8000006d, 
+       0x8000006e, 0x8000006f, 0x80000070, 0x80000071, 
+       0x80000072, 0x80000073, 0x80000074, 0x80000075, 
+       0x80000076, 0x80000077, 0x80000078, 0x80000079, 
+       0x8000007a, 0x8000007b, 0x8000007c, 0x8000007d, 
+       0x8000007e, 0x80003002, 0x8000300c, 0x8000300d, 
+       0x80003001, 0x800030fb, 0x800030f2, 0x800030a1, 
+       0x800030a3, 0x800030a5, 0x800030a7, 0x800030a9, 
+       0x800030e3, 0x800030e5, 0x800030e7, 0x800030c3, 
+       0x800030fc, 0x800030a2, 0x800030a4, 0x800030a6, 
+       0x800030a8, 0x800030aa, 0x800030ab, 0x800030ad, 
+       0x800030af, 0x800030b1, 0x800030b3, 0x800030b5, 
+       0x800030b7, 0x800030b9, 0x800030bb, 0x800030bd, 
+       0x800030bf, 0x800030c1, 0x800030c4, 0x800030c6, 
+       0x800030c8, 0x800030ca, 0x800030cb, 0x800030cc, 
+       0x800030cd, 0x800030ce, 0x800030cf, 0x800030d2, 
+       0x800030d5, 0x800030d8, 0x800030db, 0x800030de, 
+       0x800030df, 0x800030e0, 0x800030e1, 0x800030e2, 
+       0x800030e4, 0x800030e6, 0x800030e8, 0x800030e9, 
+       0x800030ea, 0x800030eb, 0x800030ec, 0x800030ed, 
+       0x800030ef, 0x800030f3, 0x80003099, 0x8000309a, 
+       0x80003164, 0x80003131, 0x80003132, 0x80003133, 
+       0x80003134, 0x80003135, 0x80003136, 0x80003137, 
+       0x80003138, 0x80003139, 0x8000313a, 0x8000313b, 
+       0x8000313c, 0x8000313d, 0x8000313e, 0x8000313f, 
+       0x80003140, 0x80003141, 0x80003142, 0x80003143, 
+       0x80003144, 0x80003145, 0x80003146, 0x80003147, 
+       0x80003148, 0x80003149, 0x8000314a, 0x8000314b, 
+       0x8000314c, 0x8000314d, 0x8000314e, 0x8000314f, 
+       0x80003150, 0x80003151, 0x80003152, 0x80003153, 
+       0x80003154, 0x80003155, 0x80003156, 0x80003157, 
+       0x80003158, 0x80003159, 0x8000315a, 0x8000315b, 
+       0x8000315c, 0x8000315d, 0x8000315e, 0x8000315f, 
+       0x80003160, 0x80003161, 0x80003162, 0x80003163, 
+       0x800000a2, 0x800000a3, 0x800000ac, 0x800000af, 
+       0x800000a6, 0x800000a5, 0x800020a9, 0x80002502, 
+       0x80002190, 0x80002191, 0x80002192, 0x80002193, 
+       0x800025a0, 0x800025cb, 0x0001d157, 0x8001d165, 
+       0x0001d158, 0x8001d165, 0x0001d15f, 0x8001d16e, 
+       0x0001d15f, 0x8001d16f, 0x0001d15f, 0x8001d170, 
+       0x0001d15f, 0x8001d171, 0x0001d15f, 0x8001d172, 
+       0x0001d1b9, 0x8001d165, 0x0001d1ba, 0x8001d165, 
+       0x0001d1bb, 0x8001d16e, 0x0001d1bc, 0x8001d16e, 
+       0x0001d1bb, 0x8001d16f, 0x0001d1bc, 0x8001d16f, 
+       0x80000041, 0x80000042, 0x80000043, 0x80000044, 
+       0x80000045, 0x80000046, 0x80000047, 0x80000048, 
+       0x80000049, 0x8000004a, 0x8000004b, 0x8000004c, 
+       0x8000004d, 0x8000004e, 0x8000004f, 0x80000050, 
+       0x80000051, 0x80000052, 0x80000053, 0x80000054, 
+       0x80000055, 0x80000056, 0x80000057, 0x80000058, 
+       0x80000059, 0x8000005a, 0x80000061, 0x80000062, 
+       0x80000063, 0x80000064, 0x80000065, 0x80000066, 
+       0x80000067, 0x80000068, 0x80000069, 0x8000006a, 
+       0x8000006b, 0x8000006c, 0x8000006d, 0x8000006e, 
+       0x8000006f, 0x80000070, 0x80000071, 0x80000072, 
+       0x80000073, 0x80000074, 0x80000075, 0x80000076, 
+       0x80000077, 0x80000078, 0x80000079, 0x8000007a, 
+       0x80000041, 0x80000042, 0x80000043, 0x80000044, 
+       0x80000045, 0x80000046, 0x80000047, 0x80000048, 
+       0x80000049, 0x8000004a, 0x8000004b, 0x8000004c, 
+       0x8000004d, 0x8000004e, 0x8000004f, 0x80000050, 
+       0x80000051, 0x80000052, 0x80000053, 0x80000054, 
+       0x80000055, 0x80000056, 0x80000057, 0x80000058, 
+       0x80000059, 0x8000005a, 0x80000061, 0x80000062, 
+       0x80000063, 0x80000064, 0x80000065, 0x80000066, 
+       0x80000067, 0x80000069, 0x8000006a, 0x8000006b, 
+       0x8000006c, 0x8000006d, 0x8000006e, 0x8000006f, 
+       0x80000070, 0x80000071, 0x80000072, 0x80000073, 
+       0x80000074, 0x80000075, 0x80000076, 0x80000077, 
+       0x80000078, 0x80000079, 0x8000007a, 0x80000041, 
+       0x80000042, 0x80000043, 0x80000044, 0x80000045, 
+       0x80000046, 0x80000047, 0x80000048, 0x80000049, 
+       0x8000004a, 0x8000004b, 0x8000004c, 0x8000004d, 
+       0x8000004e, 0x8000004f, 0x80000050, 0x80000051, 
+       0x80000052, 0x80000053, 0x80000054, 0x80000055, 
+       0x80000056, 0x80000057, 0x80000058, 0x80000059, 
+       0x8000005a, 0x80000061, 0x80000062, 0x80000063, 
+       0x80000064, 0x80000065, 0x80000066, 0x80000067, 
+       0x80000068, 0x80000069, 0x8000006a, 0x8000006b, 
+       0x8000006c, 0x8000006d, 0x8000006e, 0x8000006f, 
+       0x80000070, 0x80000071, 0x80000072, 0x80000073, 
+       0x80000074, 0x80000075, 0x80000076, 0x80000077, 
+       0x80000078, 0x80000079, 0x8000007a, 0x80000041, 
+       0x80000043, 0x80000044, 0x80000047, 0x8000004a, 
+       0x8000004b, 0x8000004e, 0x8000004f, 0x80000050, 
+       0x80000051, 0x80000053, 0x80000054, 0x80000055, 
+       0x80000056, 0x80000057, 0x80000058, 0x80000059, 
+       0x8000005a, 0x80000061, 0x80000062, 0x80000063, 
+       0x80000064, 0x80000066, 0x80000068, 0x80000069, 
+       0x8000006a, 0x8000006b, 0x8000006d, 0x8000006e, 
+       0x80000070, 0x80000071, 0x80000072, 0x80000073, 
+       0x80000074, 0x80000075, 0x80000076, 0x80000077, 
+       0x80000078, 0x80000079, 0x8000007a, 0x80000041, 
+       0x80000042, 0x80000043, 0x80000044, 0x80000045, 
+       0x80000046, 0x80000047, 0x80000048, 0x80000049, 
+       0x8000004a, 0x8000004b, 0x8000004c, 0x8000004d, 
+       0x8000004e, 0x8000004f, 0x80000050, 0x80000051, 
+       0x80000052, 0x80000053, 0x80000054, 0x80000055, 
+       0x80000056, 0x80000057, 0x80000058, 0x80000059, 
+       0x8000005a, 0x80000061, 0x80000062, 0x80000063, 
+       0x80000064, 0x80000065, 0x80000066, 0x80000067, 
+       0x80000068, 0x80000069, 0x8000006a, 0x8000006b, 
+       0x8000006c, 0x8000006d, 0x8000006e, 0x8000006f, 
+       0x80000070, 0x80000071, 0x80000072, 0x80000073, 
+       0x80000074, 0x80000075, 0x80000076, 0x80000077, 
+       0x80000078, 0x80000079, 0x8000007a, 0x80000041, 
+       0x80000042, 0x80000044, 0x80000045, 0x80000046, 
+       0x80000047, 0x8000004a, 0x8000004b, 0x8000004c, 
+       0x8000004d, 0x8000004e, 0x8000004f, 0x80000050, 
+       0x80000051, 0x80000053, 0x80000054, 0x80000055, 
+       0x80000056, 0x80000057, 0x80000058, 0x80000059, 
+       0x80000061, 0x80000062, 0x80000063, 0x80000064, 
+       0x80000065, 0x80000066, 0x80000067, 0x80000068, 
+       0x80000069, 0x8000006a, 0x8000006b, 0x8000006c, 
+       0x8000006d, 0x8000006e, 0x8000006f, 0x80000070, 
+       0x80000071, 0x80000072, 0x80000073, 0x80000074, 
+       0x80000075, 0x80000076, 0x80000077, 0x80000078, 
+       0x80000079, 0x8000007a, 0x80000041, 0x80000042, 
+       0x80000044, 0x80000045, 0x80000046, 0x80000047, 
+       0x80000049, 0x8000004a, 0x8000004b, 0x8000004c, 
+       0x8000004d, 0x8000004f, 0x80000053, 0x80000054, 
+       0x80000055, 0x80000056, 0x80000057, 0x80000058, 
+       0x80000059, 0x80000061, 0x80000062, 0x80000063, 
+       0x80000064, 0x80000065, 0x80000066, 0x80000067, 
+       0x80000068, 0x80000069, 0x8000006a, 0x8000006b, 
+       0x8000006c, 0x8000006d, 0x8000006e, 0x8000006f, 
+       0x80000070, 0x80000071, 0x80000072, 0x80000073, 
+       0x80000074, 0x80000075, 0x80000076, 0x80000077, 
+       0x80000078, 0x80000079, 0x8000007a, 0x80000041, 
+       0x80000042, 0x80000043, 0x80000044, 0x80000045, 
+       0x80000046, 0x80000047, 0x80000048, 0x80000049, 
+       0x8000004a, 0x8000004b, 0x8000004c, 0x8000004d, 
+       0x8000004e, 0x8000004f, 0x80000050, 0x80000051, 
+       0x80000052, 0x80000053, 0x80000054, 0x80000055, 
+       0x80000056, 0x80000057, 0x80000058, 0x80000059, 
+       0x8000005a, 0x80000061, 0x80000062, 0x80000063, 
+       0x80000064, 0x80000065, 0x80000066, 0x80000067, 
+       0x80000068, 0x80000069, 0x8000006a, 0x8000006b, 
+       0x8000006c, 0x8000006d, 0x8000006e, 0x8000006f, 
+       0x80000070, 0x80000071, 0x80000072, 0x80000073, 
+       0x80000074, 0x80000075, 0x80000076, 0x80000077, 
+       0x80000078, 0x80000079, 0x8000007a, 0x80000041, 
+       0x80000042, 0x80000043, 0x80000044, 0x80000045, 
+       0x80000046, 0x80000047, 0x80000048, 0x80000049, 
+       0x8000004a, 0x8000004b, 0x8000004c, 0x8000004d, 
+       0x8000004e, 0x8000004f, 0x80000050, 0x80000051, 
+       0x80000052, 0x80000053, 0x80000054, 0x80000055, 
+       0x80000056, 0x80000057, 0x80000058, 0x80000059, 
+       0x8000005a, 0x80000061, 0x80000062, 0x80000063, 
+       0x80000064, 0x80000065, 0x80000066, 0x80000067, 
+       0x80000068, 0x80000069, 0x8000006a, 0x8000006b, 
+       0x8000006c, 0x8000006d, 0x8000006e, 0x8000006f, 
+       0x80000070, 0x80000071, 0x80000072, 0x80000073, 
+       0x80000074, 0x80000075, 0x80000076, 0x80000077, 
+       0x80000078, 0x80000079, 0x8000007a, 0x80000041, 
+       0x80000042, 0x80000043, 0x80000044, 0x80000045, 
+       0x80000046, 0x80000047, 0x80000048, 0x80000049, 
+       0x8000004a, 0x8000004b, 0x8000004c, 0x8000004d, 
+       0x8000004e, 0x8000004f, 0x80000050, 0x80000051, 
+       0x80000052, 0x80000053, 0x80000054, 0x80000055, 
+       0x80000056, 0x80000057, 0x80000058, 0x80000059, 
+       0x8000005a, 0x80000061, 0x80000062, 0x80000063, 
+       0x80000064, 0x80000065, 0x80000066, 0x80000067, 
+       0x80000068, 0x80000069, 0x8000006a, 0x8000006b, 
+       0x8000006c, 0x8000006d, 0x8000006e, 0x8000006f, 
+       0x80000070, 0x80000071, 0x80000072, 0x80000073, 
+       0x80000074, 0x80000075, 0x80000076, 0x80000077, 
+       0x80000078, 0x80000079, 0x8000007a, 0x80000041, 
+       0x80000042, 0x80000043, 0x80000044, 0x80000045, 
+       0x80000046, 0x80000047, 0x80000048, 0x80000049, 
+       0x8000004a, 0x8000004b, 0x8000004c, 0x8000004d, 
+       0x8000004e, 0x8000004f, 0x80000050, 0x80000051, 
+       0x80000052, 0x80000053, 0x80000054, 0x80000055, 
+       0x80000056, 0x80000057, 0x80000058, 0x80000059, 
+       0x8000005a, 0x80000061, 0x80000062, 0x80000063, 
+       0x80000064, 0x80000065, 0x80000066, 0x80000067, 
+       0x80000068, 0x80000069, 0x8000006a, 0x8000006b, 
+       0x8000006c, 0x8000006d, 0x8000006e, 0x8000006f, 
+       0x80000070, 0x80000071, 0x80000072, 0x80000073, 
+       0x80000074, 0x80000075, 0x80000076, 0x80000077, 
+       0x80000078, 0x80000079, 0x8000007a, 0x80000041, 
+       0x80000042, 0x80000043, 0x80000044, 0x80000045, 
+       0x80000046, 0x80000047, 0x80000048, 0x80000049, 
+       0x8000004a, 0x8000004b, 0x8000004c, 0x8000004d, 
+       0x8000004e, 0x8000004f, 0x80000050, 0x80000051, 
+       0x80000052, 0x80000053, 0x80000054, 0x80000055, 
+       0x80000056, 0x80000057, 0x80000058, 0x80000059, 
+       0x8000005a, 0x80000061, 0x80000062, 0x80000063, 
+       0x80000064, 0x80000065, 0x80000066, 0x80000067, 
+       0x80000068, 0x80000069, 0x8000006a, 0x8000006b, 
+       0x8000006c, 0x8000006d, 0x8000006e, 0x8000006f, 
+       0x80000070, 0x80000071, 0x80000072, 0x80000073, 
+       0x80000074, 0x80000075, 0x80000076, 0x80000077, 
+       0x80000078, 0x80000079, 0x8000007a, 0x80000041, 
+       0x80000042, 0x80000043, 0x80000044, 0x80000045, 
+       0x80000046, 0x80000047, 0x80000048, 0x80000049, 
+       0x8000004a, 0x8000004b, 0x8000004c, 0x8000004d, 
+       0x8000004e, 0x8000004f, 0x80000050, 0x80000051, 
+       0x80000052, 0x80000053, 0x80000054, 0x80000055, 
+       0x80000056, 0x80000057, 0x80000058, 0x80000059, 
+       0x8000005a, 0x80000061, 0x80000062, 0x80000063, 
+       0x80000064, 0x80000065, 0x80000066, 0x80000067, 
+       0x80000068, 0x80000069, 0x8000006a, 0x8000006b, 
+       0x8000006c, 0x8000006d, 0x8000006e, 0x8000006f, 
+       0x80000070, 0x80000071, 0x80000072, 0x80000073, 
+       0x80000074, 0x80000075, 0x80000076, 0x80000077, 
+       0x80000078, 0x80000079, 0x8000007a, 0x80000391, 
+       0x80000392, 0x80000393, 0x80000394, 0x80000395, 
+       0x80000396, 0x80000397, 0x80000398, 0x80000399, 
+       0x8000039a, 0x8000039b, 0x8000039c, 0x8000039d, 
+       0x8000039e, 0x8000039f, 0x800003a0, 0x800003a1, 
+       0x800003f4, 0x800003a3, 0x800003a4, 0x800003a5, 
+       0x800003a6, 0x800003a7, 0x800003a8, 0x800003a9, 
+       0x80002207, 0x800003b1, 0x800003b2, 0x800003b3, 
+       0x800003b4, 0x800003b5, 0x800003b6, 0x800003b7, 
+       0x800003b8, 0x800003b9, 0x800003ba, 0x800003bb, 
+       0x800003bc, 0x800003bd, 0x800003be, 0x800003bf, 
+       0x800003c0, 0x800003c1, 0x800003c2, 0x800003c3, 
+       0x800003c4, 0x800003c5, 0x800003c6, 0x800003c7, 
+       0x800003c8, 0x800003c9, 0x80002202, 0x800003f5, 
+       0x800003d1, 0x800003f0, 0x800003d5, 0x800003f1, 
+       0x800003d6, 0x80000391, 0x80000392, 0x80000393, 
+       0x80000394, 0x80000395, 0x80000396, 0x80000397, 
+       0x80000398, 0x80000399, 0x8000039a, 0x8000039b, 
+       0x8000039c, 0x8000039d, 0x8000039e, 0x8000039f, 
+       0x800003a0, 0x800003a1, 0x800003f4, 0x800003a3, 
+       0x800003a4, 0x800003a5, 0x800003a6, 0x800003a7, 
+       0x800003a8, 0x800003a9, 0x80002207, 0x800003b1, 
+       0x800003b2, 0x800003b3, 0x800003b4, 0x800003b5, 
+       0x800003b6, 0x800003b7, 0x800003b8, 0x800003b9, 
+       0x800003ba, 0x800003bb, 0x800003bc, 0x800003bd, 
+       0x800003be, 0x800003bf, 0x800003c0, 0x800003c1, 
+       0x800003c2, 0x800003c3, 0x800003c4, 0x800003c5, 
+       0x800003c6, 0x800003c7, 0x800003c8, 0x800003c9, 
+       0x80002202, 0x800003f5, 0x800003d1, 0x800003f0, 
+       0x800003d5, 0x800003f1, 0x800003d6, 0x80000391, 
+       0x80000392, 0x80000393, 0x80000394, 0x80000395, 
+       0x80000396, 0x80000397, 0x80000398, 0x80000399, 
+       0x8000039a, 0x8000039b, 0x8000039c, 0x8000039d, 
+       0x8000039e, 0x8000039f, 0x800003a0, 0x800003a1, 
+       0x800003f4, 0x800003a3, 0x800003a4, 0x800003a5, 
+       0x800003a6, 0x800003a7, 0x800003a8, 0x800003a9, 
+       0x80002207, 0x800003b1, 0x800003b2, 0x800003b3, 
+       0x800003b4, 0x800003b5, 0x800003b6, 0x800003b7, 
+       0x800003b8, 0x800003b9, 0x800003ba, 0x800003bb, 
+       0x800003bc, 0x800003bd, 0x800003be, 0x800003bf, 
+       0x800003c0, 0x800003c1, 0x800003c2, 0x800003c3, 
+       0x800003c4, 0x800003c5, 0x800003c6, 0x800003c7, 
+       0x800003c8, 0x800003c9, 0x80002202, 0x800003f5, 
+       0x800003d1, 0x800003f0, 0x800003d5, 0x800003f1, 
+       0x800003d6, 0x80000391, 0x80000392, 0x80000393, 
+       0x80000394, 0x80000395, 0x80000396, 0x80000397, 
+       0x80000398, 0x80000399, 0x8000039a, 0x8000039b, 
+       0x8000039c, 0x8000039d, 0x8000039e, 0x8000039f, 
+       0x800003a0, 0x800003a1, 0x800003f4, 0x800003a3, 
+       0x800003a4, 0x800003a5, 0x800003a6, 0x800003a7, 
+       0x800003a8, 0x800003a9, 0x80002207, 0x800003b1, 
+       0x800003b2, 0x800003b3, 0x800003b4, 0x800003b5, 
+       0x800003b6, 0x800003b7, 0x800003b8, 0x800003b9, 
+       0x800003ba, 0x800003bb, 0x800003bc, 0x800003bd, 
+       0x800003be, 0x800003bf, 0x800003c0, 0x800003c1, 
+       0x800003c2, 0x800003c3, 0x800003c4, 0x800003c5, 
+       0x800003c6, 0x800003c7, 0x800003c8, 0x800003c9, 
+       0x80002202, 0x800003f5, 0x800003d1, 0x800003f0, 
+       0x800003d5, 0x800003f1, 0x800003d6, 0x80000391, 
+       0x80000392, 0x80000393, 0x80000394, 0x80000395, 
+       0x80000396, 0x80000397, 0x80000398, 0x80000399, 
+       0x8000039a, 0x8000039b, 0x8000039c, 0x8000039d, 
+       0x8000039e, 0x8000039f, 0x800003a0, 0x800003a1, 
+       0x800003f4, 0x800003a3, 0x800003a4, 0x800003a5, 
+       0x800003a6, 0x800003a7, 0x800003a8, 0x800003a9, 
+       0x80002207, 0x800003b1, 0x800003b2, 0x800003b3, 
+       0x800003b4, 0x800003b5, 0x800003b6, 0x800003b7, 
+       0x800003b8, 0x800003b9, 0x800003ba, 0x800003bb, 
+       0x800003bc, 0x800003bd, 0x800003be, 0x800003bf, 
+       0x800003c0, 0x800003c1, 0x800003c2, 0x800003c3, 
+       0x800003c4, 0x800003c5, 0x800003c6, 0x800003c7, 
+       0x800003c8, 0x800003c9, 0x80002202, 0x800003f5, 
+       0x800003d1, 0x800003f0, 0x800003d5, 0x800003f1, 
+       0x800003d6, 0x80000030, 0x80000031, 0x80000032, 
+       0x80000033, 0x80000034, 0x80000035, 0x80000036, 
+       0x80000037, 0x80000038, 0x80000039, 0x80000030, 
+       0x80000031, 0x80000032, 0x80000033, 0x80000034, 
+       0x80000035, 0x80000036, 0x80000037, 0x80000038, 
+       0x80000039, 0x80000030, 0x80000031, 0x80000032, 
+       0x80000033, 0x80000034, 0x80000035, 0x80000036, 
+       0x80000037, 0x80000038, 0x80000039, 0x80000030, 
+       0x80000031, 0x80000032, 0x80000033, 0x80000034, 
+       0x80000035, 0x80000036, 0x80000037, 0x80000038, 
+       0x80000039, 0x80000030, 0x80000031, 0x80000032, 
+       0x80000033, 0x80000034, 0x80000035, 0x80000036, 
+       0x80000037, 0x80000038, 0x80000039, 0x80004e3d, 
+       0x80004e38, 0x80004e41, 0x80020122, 0x80004f60, 
+       0x80004fae, 0x80004fbb, 0x80005002, 0x8000507a, 
+       0x80005099, 0x800050e7, 0x800050cf, 0x8000349e, 
+       0x8002063a, 0x8000514d, 0x80005154, 0x80005164, 
+       0x80005177, 0x8002051c, 0x800034b9, 0x80005167, 
+       0x8000518d, 0x8002054b, 0x80005197, 0x800051a4, 
+       0x80004ecc, 0x800051ac, 0x800051b5, 0x800291df, 
+       0x800051f5, 0x80005203, 0x800034df, 0x8000523b, 
+       0x80005246, 0x80005272, 0x80005277, 0x80003515, 
+       0x800052c7, 0x800052c9, 0x800052e4, 0x800052fa, 
+       0x80005305, 0x80005306, 0x80005317, 0x80005349, 
+       0x80005351, 0x8000535a, 0x80005373, 0x8000537d, 
+       0x8000537f, 0x8000537f, 0x8000537f, 0x80020a2c, 
+       0x80007070, 0x800053ca, 0x800053df, 0x80020b63, 
+       0x800053eb, 0x800053f1, 0x80005406, 0x8000549e, 
+       0x80005438, 0x80005448, 0x80005468, 0x800054a2, 
+       0x800054f6, 0x80005510, 0x80005553, 0x80005563, 
+       0x80005584, 0x80005584, 0x80005599, 0x800055ab, 
+       0x800055b3, 0x800055c2, 0x80005716, 0x80005606, 
+       0x80005717, 0x80005651, 0x80005674, 0x80005207, 
+       0x800058ee, 0x800057ce, 0x800057f4, 0x8000580d, 
+       0x8000578b, 0x80005832, 0x80005831, 0x800058ac, 
+       0x800214e4, 0x800058f2, 0x800058f7, 0x80005906, 
+       0x8000591a, 0x80005922, 0x80005962, 0x800216a8, 
+       0x800216ea, 0x800059ec, 0x80005a1b, 0x80005a27, 
+       0x800059d8, 0x80005a66, 0x800036ee, 0x8002136a, 
+       0x80005b08, 0x80005b3e, 0x80005b3e, 0x800219c8, 
+       0x80005bc3, 0x80005bd8, 0x80005be7, 0x80005bf3, 
+       0x80021b18, 0x80005bff, 0x80005c06, 0x80005f33, 
+       0x80005c22, 0x80003781, 0x80005c60, 0x80005c6e, 
+       0x80005cc0, 0x80005c8d, 0x80021de4, 0x80005d43, 
+       0x80021de6, 0x80005d6e, 0x80005d6b, 0x80005d7c, 
+       0x80005de1, 0x80005de2, 0x8000382f, 0x80005dfd, 
+       0x80005e28, 0x80005e3d, 0x80005e69, 0x80003862, 
+       0x80022183, 0x8000387c, 0x80005eb0, 0x80005eb3, 
+       0x80005eb6, 0x80005eca, 0x8002a392, 0x80005efe, 
+       0x80022331, 0x80022331, 0x80008201, 0x80005f22, 
+       0x80005f22, 0x800038c7, 0x800232b8, 0x800261da, 
+       0x80005f62, 0x80005f6b, 0x800038e3, 0x80005f9a, 
+       0x80005fcd, 0x80005fd7, 0x80005ff9, 0x80006081, 
+       0x8000393a, 0x8000391c, 0x80006094, 0x800226d4, 
+       0x800060c7, 0x80006148, 0x8000614c, 0x8000614e, 
+       0x8000614c, 0x8000617a, 0x8000618e, 0x800061b2, 
+       0x800061a4, 0x800061af, 0x800061de, 0x800061f2, 
+       0x800061f6, 0x80006210, 0x8000621b, 0x8000625d, 
+       0x800062b1, 0x800062d4, 0x80006350, 0x80022b0c, 
+       0x8000633d, 0x800062fc, 0x80006368, 0x80006383, 
+       0x800063e4, 0x80022bf1, 0x80006422, 0x800063c5, 
+       0x800063a9, 0x80003a2e, 0x80006469, 0x8000647e, 
+       0x8000649d, 0x80006477, 0x80003a6c, 0x8000654f, 
+       0x8000656c, 0x8002300a, 0x800065e3, 0x800066f8, 
+       0x80006649, 0x80003b19, 0x80006691, 0x80003b08, 
+       0x80003ae4, 0x80005192, 0x80005195, 0x80006700, 
+       0x8000669c, 0x800080ad, 0x800043d9, 0x80006717, 
+       0x8000671b, 0x80006721, 0x8000675e, 0x80006753, 
+       0x800233c3, 0x80003b49, 0x800067fa, 0x80006785, 
+       0x80006852, 0x80006885, 0x8002346d, 0x8000688e, 
+       0x8000681f, 0x80006914, 0x80003b9d, 0x80006942, 
+       0x800069a3, 0x800069ea, 0x80006aa8, 0x800236a3, 
+       0x80006adb, 0x80003c18, 0x80006b21, 0x800238a7, 
+       0x80006b54, 0x80003c4e, 0x80006b72, 0x80006b9f, 
+       0x80006bba, 0x80006bbb, 0x80023a8d, 0x80021d0b, 
+       0x80023afa, 0x80006c4e, 0x80023cbc, 0x80006cbf, 
+       0x80006ccd, 0x80006c67, 0x80006d16, 0x80006d3e, 
+       0x80006d77, 0x80006d41, 0x80006d69, 0x80006d78, 
+       0x80006d85, 0x80023d1e, 0x80006d34, 0x80006e2f, 
+       0x80006e6e, 0x80003d33, 0x80006ecb, 0x80006ec7, 
+       0x80023ed1, 0x80006df9, 0x80006f6e, 0x80023f5e, 
+       0x80023f8e, 0x80006fc6, 0x80007039, 0x8000701e, 
+       0x8000701b, 0x80003d96, 0x8000704a, 0x8000707d, 
+       0x80007077, 0x800070ad, 0x80020525, 0x80007145, 
+       0x80024263, 0x8000719c, 0x800043ab, 0x80007228, 
+       0x80007235, 0x80007250, 0x80024608, 0x80007280, 
+       0x80007295, 0x80024735, 0x80024814, 0x8000737a, 
+       0x8000738b, 0x80003eac, 0x800073a5, 0x80003eb8, 
+       0x80003eb8, 0x80007447, 0x8000745c, 0x80007471, 
+       0x80007485, 0x800074ca, 0x80003f1b, 0x80007524, 
+       0x80024c36, 0x8000753e, 0x80024c92, 0x80007570, 
+       0x8002219f, 0x80007610, 0x80024fa1, 0x80024fb8, 
+       0x80025044, 0x80003ffc, 0x80004008, 0x800076f4, 
+       0x800250f3, 0x800250f2, 0x80025119, 0x80025133, 
+       0x8000771e, 0x8000771f, 0x8000771f, 0x8000774a, 
+       0x80004039, 0x8000778b, 0x80004046, 0x80004096, 
+       0x8002541d, 0x8000784e, 0x8000788c, 0x800078cc, 
+       0x800040e3, 0x80025626, 0x80007956, 0x8002569a, 
+       0x800256c5, 0x8000798f, 0x800079eb, 0x8000412f, 
+       0x80007a40, 0x80007a4a, 0x80007a4f, 0x8002597c, 
+       0x80025aa7, 0x80025aa7, 0x80007aae, 0x80004202, 
+       0x80025bab, 0x80007bc6, 0x80007bc9, 0x80004227, 
+       0x80025c80, 0x80007cd2, 0x800042a0, 0x80007ce8, 
+       0x80007ce3, 0x80007d00, 0x80025f86, 0x80007d63, 
+       0x80004301, 0x80007dc7, 0x80007e02, 0x80007e45, 
+       0x80004334, 0x80026228, 0x80026247, 0x80004359, 
+       0x800262d9, 0x80007f7a, 0x8002633e, 0x80007f95, 
+       0x80007ffa, 0x80008005, 0x800264da, 0x80026523, 
+       0x80008060, 0x800265a8, 0x80008070, 0x8002335f, 
+       0x800043d5, 0x800080b2, 0x80008103, 0x8000440b, 
+       0x8000813e, 0x80005ab5, 0x800267a7, 0x800267b5, 
+       0x80023393, 0x8002339c, 0x80008201, 0x80008204, 
+       0x80008f9e, 0x8000446b, 0x80008291, 0x8000828b, 
+       0x8000829d, 0x800052b3, 0x800082b1, 0x800082b3, 
+       0x800082bd, 0x800082e6, 0x80026b3c, 0x800082e5, 
+       0x8000831d, 0x80008363, 0x800083ad, 0x80008323, 
+       0x800083bd, 0x800083e7, 0x80008457, 0x80008353, 
+       0x800083ca, 0x800083cc, 0x800083dc, 0x80026c36, 
+       0x80026d6b, 0x80026cd5, 0x8000452b, 0x800084f1, 
+       0x800084f3, 0x80008516, 0x800273ca, 0x80008564, 
+       0x80026f2c, 0x8000455d, 0x80004561, 0x80026fb1, 
+       0x800270d2, 0x8000456b, 0x80008650, 0x8000865c, 
+       0x80008667, 0x80008669, 0x800086a9, 0x80008688, 
+       0x8000870e, 0x800086e2, 0x80008779, 0x80008728, 
+       0x8000876b, 0x80008786, 0x80004d57, 0x800087e1, 
+       0x80008801, 0x800045f9, 0x80008860, 0x80008863, 
+       0x80027667, 0x800088d7, 0x800088de, 0x80004635, 
+       0x800088fa, 0x800034bb, 0x800278ae, 0x80027966, 
+       0x800046be, 0x800046c7, 0x80008aa0, 0x80008aed, 
+       0x80008b8a, 0x80008c55, 0x80027ca8, 0x80008cab, 
+       0x80008cc1, 0x80008d1b, 0x80008d77, 0x80027f2f, 
+       0x80020804, 0x80008dcb, 0x80008dbc, 0x80008df0, 
+       0x800208de, 0x80008ed4, 0x80008f38, 0x800285d2, 
+       0x800285ed, 0x80009094, 0x800090f1, 0x80009111, 
+       0x8002872e, 0x8000911b, 0x80009238, 0x800092d7, 
+       0x800092d8, 0x8000927c, 0x800093f9, 0x80009415, 
+       0x80028bfa, 0x8000958b, 0x80004995, 0x800095b7, 
+       0x80028d77, 0x800049e6, 0x800096c3, 0x80005db2, 
+       0x80009723, 0x80029145, 0x8002921a, 0x80004a6e, 
+       0x80004a76, 0x800097e0, 0x8002940a, 0x80004ab2, 
+       0x80029496, 0x8000980b, 0x8000980b, 0x80009829, 
+       0x800295b6, 0x800098e2, 0x80004b33, 0x80009929, 
+       0x800099a7, 0x800099c2, 0x800099fe, 0x80004bce, 
+       0x80029b30, 0x80009b12, 0x80009c40, 0x80009cfd, 
+       0x80004cce, 0x80004ced, 0x80009d67, 0x8002a0ce, 
+       0x80004cf8, 0x8002a105, 0x8002a20e, 0x8002a291, 
+       0x80009ebb, 0x80004d56, 0x80009ef9, 0x80009efe, 
+       0x80009f05, 0x80009f0f, 0x80009f16, 0x80009f3b, 
+       0x8002a600, 
+};
+
+
+/*
+ * Lowercase <-> Uppercase mapping
+ */
+
+/*
+ * Flags for special case mapping.
+ */
+#define CMF_FINAL      1
+#define CMF_NONFINAL   2
+#define CMF_LAST       16
+#define CMF_CTXDEP     (CMF_FINAL|CMF_NONFINAL)
+
+#define CASEMAP_BITS_0 9
+#define CASEMAP_BITS_1 7
+#define CASEMAP_BITS_2 5
+
+static const unsigned short v310_toupper_imap[] = {
+         272,   400,   528,   656,   656,   656,   656,   656, 
+         656,   656,   656,   656,   656,   656,   656,   784, 
+         912,   656,   656,   656,   656,   656,   656,   656, 
+         656,   656,   656,   656,   656,   656,   656,   656, 
+         656,   656,   656,   656,   656,   656,   656,   656, 
+         656,   656,   656,   656,   656,   656,   656,   656, 
+         656,   656,   656,   656,   656,   656,   656,   656, 
+         656,   656,   656,   656,   656,   656,   656,   656, 
+         656,   656,   656,   656,   656,   656,   656,   656, 
+         656,   656,   656,   656,   656,   656,   656,   656, 
+         656,   656,   656,   656,   656,   656,   656,   656, 
+         656,   656,   656,   656,   656,   656,   656,   656, 
+         656,   656,   656,   656,   656,   656,   656,   656, 
+         656,   656,   656,   656,   656,   656,   656,   656, 
+         656,   656,   656,   656,   656,   656,   656,   656, 
+         656,   656,   656,   656,   656,   656,   656,   656, 
+         656,   656,   656,   656,   656,   656,   656,   656, 
+         656,   656,   656,   656,   656,   656,   656,   656, 
+         656,   656,   656,   656,   656,   656,   656,   656, 
+         656,   656,   656,   656,   656,   656,   656,   656, 
+         656,   656,   656,   656,   656,   656,   656,   656, 
+         656,   656,   656,   656,   656,   656,   656,   656, 
+         656,   656,   656,   656,   656,   656,   656,   656, 
+         656,   656,   656,   656,   656,   656,   656,   656, 
+         656,   656,   656,   656,   656,   656,   656,   656, 
+         656,   656,   656,   656,   656,   656,   656,   656, 
+         656,   656,   656,   656,   656,   656,   656,   656, 
+         656,   656,   656,   656,   656,   656,   656,   656, 
+         656,   656,   656,   656,   656,   656,   656,   656, 
+         656,   656,   656,   656,   656,   656,   656,   656, 
+         656,   656,   656,   656,   656,   656,   656,   656, 
+         656,   656,   656,   656,   656,   656,   656,   656, 
+         656,   656,   656,   656,   656,   656,   656,   656, 
+         656,   656,   656,   656,   656,   656,   656,   656, 
+           0,     0,     0,     1,     0,     2,     3,     4, 
+           5,     6,     7,     8,     9,    10,    11,    12, 
+          13,    14,    15,    16,    17,     0,     0,     0, 
+           0,     0,    18,     0,    19,    20,    21,    22, 
+           0,    23,    24,    25,    26,    27,    28,    29, 
+           0,     0,     0,    30,    31,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+          32,    33,    34,    35,    36,    37,    38,    39, 
+          40,    41,    42,    43,    44,    45,    46,    47, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,    48,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,    49,    50, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+          51,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,    52,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,    53,    54,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+};
+
+static const struct {
+       unsigned short tbl[32];
+} v310_toupper_table[] = {
+       {{
+          0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
+          0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
+          0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
+       }},
+       {{
+          0,    1,    3,    5,    7,    9,   11,   13,   15,   17,   19, 
+         21,   23,   25,   27,   29,   31,   33,   35,   37,   39,   41, 
+         43,   45,   47,   49,   51,    0,    0,    0,    0,    0, 
+       }},
+       {{
+          0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
+          0,    0,    0,    0,    0,    0,    0,    0,    0,    0,   53, 
+          0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
+       }},
+       {{
+          0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
+          0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
+          0,    0,    0,    0,    0,    0,    0,    0,    0,   55, 
+       }},
+       {{
+         58,   60,   62,   64,   66,   68,   70,   72,   74,   76,   78, 
+         80,   82,   84,   86,   88,   90,   92,   94,   96,   98,  100, 
+        102,    0,  104,  106,  108,  110,  112,  114,  116,  118, 
+       }},
+       {{
+          0,  120,    0,  122,    0,  124,    0,  126,    0,  128,    0, 
+        130,    0,  132,    0,  134,    0,  136,    0,  138,    0,  140, 
+          0,  142,    0,  144,    0,  146,    0,  148,    0,  150, 
+       }},
+       {{
+          0,  152,    0,  154,    0,  156,    0,  158,    0,  160,    0, 
+        162,    0,  164,    0,  166,    0,  168,    0,  170,    0,  172, 
+          0,  174,    0,    0,  176,    0,  178,    0,  180,    0, 
+       }},
+       {{
+        182,    0,  184,    0,  186,    0,  188,    0,  190,  192,    0, 
+        195,    0,  197,    0,  199,    0,  201,    0,  203,    0,  205, 
+          0,  207,    0,  209,    0,  211,    0,  213,    0,  215, 
+       }},
+       {{
+          0,  217,    0,  219,    0,  221,    0,  223,    0,  225,    0, 
+        227,    0,  229,    0,  231,    0,  233,    0,  235,    0,  237, 
+          0,  239,    0,    0,  241,    0,  243,    0,  245,  247, 
+       }},
+       {{
+          0,    0,    0,  249,    0,  251,    0,    0,  253,    0,    0, 
+          0,  255,    0,    0,    0,    0,    0,  257,    0,    0,  259, 
+          0,    0,    0,  261,    0,    0,    0,    0,    0,    0, 
+       }},
+       {{
+          0,  263,    0,  265,    0,  267,    0,    0,  269,    0,    0, 
+          0,    0,  271,    0,    0,  273,    0,    0,    0,  275,    0, 
+        277,    0,    0,  279,    0,    0,    0,  281,    0,  283, 
+       }},
+       {{
+          0,    0,    0,    0,    0,  285,  287,    0,  289,  291,    0, 
+        293,  295,    0,  297,    0,  299,    0,  301,    0,  303,    0, 
+        305,    0,  307,    0,  309,    0,  311,  313,    0,  315, 
+       }},
+       {{
+          0,  317,    0,  319,    0,  321,    0,  323,    0,  325,    0, 
+        327,    0,  329,    0,  331,  333,    0,  336,  338,    0,  340, 
+          0,    0,    0,  342,    0,  344,    0,  346,    0,  348, 
+       }},
+       {{
+          0,  350,    0,  352,    0,  354,    0,  356,    0,  358,    0, 
+        360,    0,  362,    0,  364,    0,  366,    0,  368,    0,  370, 
+          0,  372,    0,  374,    0,  376,    0,  378,    0,  380, 
+       }},
+       {{
+          0,    0,    0,  382,    0,  384,    0,  386,    0,  388,    0, 
+        390,    0,  392,    0,  394,    0,  396,    0,  398,    0,    0, 
+          0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
+       }},
+       {{
+          0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
+          0,    0,    0,    0,    0,    0,    0,    0,  400,  402,    0, 
+        404,  406,    0,  408,    0,  410,    0,    0,    0,    0, 
+       }},
+       {{
+        412,    0,    0,  414,    0,    0,    0,    0,  416,  418,    0, 
+          0,    0,    0,    0,  420,    0,    0,  422,    0,    0,  424, 
+          0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
+       }},
+       {{
+        426,    0,    0,  428,    0,    0,    0,    0,  430,    0,  432, 
+        434,    0,    0,    0,    0,    0,    0,  436,    0,    0,    0, 
+          0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
+       }},
+       {{
+          0,    0,    0,    0,    0,  438,    0,    0,    0,    0,    0, 
+          0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
+          0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
+       }},
+       {{
+          0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
+          0,    0,    0,    0,    0,  440,    0,    0,    0,    0,    0, 
+          0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
+       }},
+       {{
+          0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
+          0,  444,  446,  448,  450,  452,  456,  458,  460,  462,  464, 
+        466,  468,  470,  472,  474,  476,  478,  480,  482,  484, 
+       }},
+       {{
+        486,  488,  490,  492,  494,  496,  498,  500,  502,  504,  506, 
+        508,  510,  512,  514,    0,  516,  518,    0,    0,    0,  520, 
+        522,    0,    0,    0,    0,  524,    0,  526,    0,  528, 
+       }},
+       {{
+          0,  530,    0,  532,    0,  534,    0,  536,    0,  538,    0, 
+        540,    0,  542,    0,  544,  546,  548,  550,    0,    0,  552, 
+          0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
+       }},
+       {{
+          0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
+          0,    0,    0,    0,    0,  554,  556,  558,  560,  562,  564, 
+        566,  568,  570,  572,  574,  576,  578,  580,  582,  584, 
+       }},
+       {{
+        586,  588,  590,  592,  594,  596,  598,  600,  602,  604,  606, 
+        608,  610,  612,  614,  616,  618,  620,  622,  624,  626,  628, 
+        630,  632,  634,  636,  638,  640,  642,  644,  646,  648, 
+       }},
+       {{
+          0,  650,    0,  652,    0,  654,    0,  656,    0,  658,    0, 
+        660,    0,  662,    0,  664,    0,  666,    0,  668,    0,  670, 
+          0,  672,    0,  674,    0,  676,    0,  678,    0,  680, 
+       }},
+       {{
+          0,  682,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
+          0,    0,  684,    0,  686,    0,  688,    0,  690,    0,  692, 
+          0,  694,    0,  696,    0,  698,    0,  700,    0,  702, 
+       }},
+       {{
+          0,  704,    0,  706,    0,  708,    0,  710,    0,  712,    0, 
+        714,    0,  716,    0,  718,    0,  720,    0,  722,    0,  724, 
+          0,  726,    0,  728,    0,  730,    0,  732,    0,  734, 
+       }},
+       {{
+          0,    0,  736,    0,  738,    0,    0,    0,  740,    0,    0, 
+          0,  742,    0,    0,    0,    0,  744,    0,  746,    0,  748, 
+          0,  750,    0,  752,    0,  754,    0,  756,    0,  758, 
+       }},
+       {{
+          0,  760,    0,  762,    0,  764,    0,  766,    0,  768,    0, 
+        770,    0,  772,    0,  774,    0,  776,    0,  778,    0,  780, 
+          0,    0,    0,  782,    0,    0,    0,    0,    0,    0, 
+       }},
+       {{
+          0,  784,  786,  788,  790,  792,  794,  796,  798,  800,  802, 
+        804,  806,  808,  810,  812,  814,  816,  818,  820,  822,  824, 
+        826,  828,  830,  832,  834,  836,  838,  840,  842,  844, 
+       }},
+       {{
+        846,  848,  850,  852,  854,  856,  858,  860,    0,    0,    0, 
+          0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
+          0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
+       }},
+       {{
+          0,  863,    0,  865,    0,  867,    0,  869,    0,  871,    0, 
+        873,    0,  875,    0,  877,    0,  879,    0,  881,    0,  883, 
+          0,  885,    0,  887,    0,  889,    0,  891,    0,  893, 
+       }},
+       {{
+          0,  895,    0,  897,    0,  899,    0,  901,    0,  903,    0, 
+        905,    0,  907,    0,  909,    0,  911,    0,  913,    0,  915, 
+          0,  917,    0,  919,    0,  921,    0,  923,    0,  925, 
+       }},
+       {{
+          0,  927,    0,  929,    0,  931,    0,  933,    0,  935,    0, 
+        937,    0,  939,    0,  941,    0,  943,    0,  945,    0,  947, 
+          0,  949,    0,  951,    0,  953,    0,  955,    0,  957, 
+       }},
+       {{
+          0,  959,    0,  961,    0,  963,    0,  965,    0,  967,    0, 
+        969,    0,  971,    0,  973,    0,  975,    0,  977,    0,  979, 
+          0,  981,    0,  983,    0,  985,    0,  987,    0,  989, 
+       }},
+       {{
+          0,  991,    0,  993,    0,  995,    0,  997,    0,  999,    0, 
+       1001,    0, 1003,    0, 1005,    0, 1007,    0, 1009,    0, 1011, 
+       1013, 1016, 1019, 1022, 1025, 1028,    0,    0,    0,    0, 
+       }},
+       {{
+          0, 1030,    0, 1032,    0, 1034,    0, 1036,    0, 1038,    0, 
+       1040,    0, 1042,    0, 1044,    0, 1046,    0, 1048,    0, 1050, 
+          0, 1052,    0, 1054,    0, 1056,    0, 1058,    0, 1060, 
+       }},
+       {{
+          0, 1062,    0, 1064,    0, 1066,    0, 1068,    0, 1070,    0, 
+       1072,    0, 1074,    0, 1076,    0, 1078,    0, 1080,    0, 1082, 
+          0, 1084,    0, 1086,    0, 1088,    0, 1090,    0, 1092, 
+       }},
+       {{
+          0, 1094,    0, 1096,    0, 1098,    0, 1100,    0, 1102,    0, 
+       1104,    0, 1106,    0, 1108,    0, 1110,    0, 1112,    0, 1114, 
+          0, 1116,    0, 1118,    0,    0,    0,    0,    0,    0, 
+       }},
+       {{
+       1120, 1122, 1124, 1126, 1128, 1130, 1132, 1134,    0,    0,    0, 
+          0,    0,    0,    0,    0, 1136, 1138, 1140, 1142, 1144, 1146, 
+          0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
+       }},
+       {{
+       1148, 1150, 1152, 1154, 1156, 1158, 1160, 1162,    0,    0,    0, 
+          0,    0,    0,    0,    0, 1164, 1166, 1168, 1170, 1172, 1174, 
+       1176, 1178,    0,    0,    0,    0,    0,    0,    0,    0, 
+       }},
+       {{
+       1180, 1182, 1184, 1186, 1188, 1190,    0,    0,    0,    0,    0, 
+          0,    0,    0,    0,    0, 1192, 1195, 1197, 1201, 1203, 1207, 
+       1209, 1213,    0,    0,    0,    0,    0,    0,    0,    0, 
+       }},
+       {{
+       1215, 1217, 1219, 1221, 1223, 1225, 1227, 1229,    0,    0,    0, 
+          0,    0,    0,    0,    0, 1231, 1233, 1235, 1237, 1239, 1241, 
+       1243, 1245, 1247, 1249, 1251, 1253, 1255, 1257,    0,    0, 
+       }},
+       {{
+       1259, 1264, 1269, 1274, 1279, 1284, 1289, 1294, 1299, 1302, 1305, 
+       1308, 1311, 1314, 1317, 1320, 1323, 1328, 1333, 1338, 1343, 1348, 
+       1353, 1358, 1363, 1366, 1369, 1372, 1375, 1378, 1381, 1384, 
+       }},
+       {{
+       1387, 1392, 1397, 1402, 1407, 1412, 1417, 1422, 1427, 1430, 1433, 
+       1436, 1439, 1442, 1445, 1448, 1451, 1453, 1455, 1458, 1463,    0, 
+       1466, 1469,    0,    0,    0,    0, 1473,    0, 1476,    0, 
+       }},
+       {{
+          0,    0, 1478, 1481, 1486,    0, 1489, 1492,    0,    0,    0, 
+          0, 1496,    0,    0,    0, 1499, 1501, 1503, 1507,    0,    0, 
+       1511, 1514,    0,    0,    0,    0,    0,    0,    0,    0, 
+       }},
+       {{
+       1518, 1520, 1522, 1526, 1530, 1533, 1535, 1538,    0,    0,    0, 
+          0,    0,    0,    0,    0,    0,    0, 1542, 1545, 1550,    0, 
+       1553, 1556,    0,    0,    0,    0, 1560,    0,    0,    0, 
+       }},
+       {{
+          0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
+          0,    0,    0,    0,    0, 1563, 1565, 1567, 1569, 1571, 1573, 
+       1575, 1577, 1579, 1581, 1583, 1585, 1587, 1589, 1591, 1593, 
+       }},
+       {{
+          0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
+          0,    0,    0,    0,    0, 1595, 1597, 1599, 1601, 1603, 1605, 
+       1607, 1609, 1611, 1613, 1615, 1617, 1619, 1621, 1623, 1625, 
+       }},
+       {{
+       1627, 1629, 1631, 1633, 1635, 1637, 1639, 1641, 1643, 1645,    0, 
+          0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
+          0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
+       }},
+       {{
+       1647, 1650, 1653, 1656, 1660, 1664, 1667,    0,    0,    0,    0, 
+          0,    0,    0,    0,    0,    0,    0,    0, 1670, 1673, 1676, 
+       1679, 1682,    0,    0,    0,    0,    0,    0,    0,    0, 
+       }},
+       {{
+          0, 1685, 1687, 1689, 1691, 1693, 1695, 1697, 1699, 1701, 1703, 
+       1705, 1707, 1709, 1711, 1713, 1715, 1717, 1719, 1721, 1723, 1725, 
+       1727, 1729, 1731, 1733, 1735,    0,    0,    0,    0,    0, 
+       }},
+       {{
+          0,    0,    0,    0,    0,    0,    0,    0, 1737, 1739, 1741, 
+       1743, 1745, 1747, 1749, 1751, 1753, 1755, 1757, 1759, 1761, 1763, 
+       1765, 1767, 1769, 1771, 1773, 1775, 1777, 1779, 1781, 1783, 
+       }},
+       {{
+       1785, 1787, 1789, 1791, 1793, 1795, 1797, 1799, 1801, 1803, 1805, 
+       1807, 1809, 1811,    0,    0,    0,    0,    0,    0,    0,    0, 
+          0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
+       }},
+};
+static const unsigned short v310_tolower_imap[] = {
+         272,   400,   528,   656,   656,   656,   656,   656, 
+         656,   656,   656,   656,   656,   656,   656,   784, 
+         912,   656,   656,   656,   656,   656,   656,   656, 
+         656,   656,   656,   656,   656,   656,   656,   656, 
+         656,   656,   656,   656,   656,   656,   656,   656, 
+         656,   656,   656,   656,   656,   656,   656,   656, 
+         656,   656,   656,   656,   656,   656,   656,   656, 
+         656,   656,   656,   656,   656,   656,   656,   656, 
+         656,   656,   656,   656,   656,   656,   656,   656, 
+         656,   656,   656,   656,   656,   656,   656,   656, 
+         656,   656,   656,   656,   656,   656,   656,   656, 
+         656,   656,   656,   656,   656,   656,   656,   656, 
+         656,   656,   656,   656,   656,   656,   656,   656, 
+         656,   656,   656,   656,   656,   656,   656,   656, 
+         656,   656,   656,   656,   656,   656,   656,   656, 
+         656,   656,   656,   656,   656,   656,   656,   656, 
+         656,   656,   656,   656,   656,   656,   656,   656, 
+         656,   656,   656,   656,   656,   656,   656,   656, 
+         656,   656,   656,   656,   656,   656,   656,   656, 
+         656,   656,   656,   656,   656,   656,   656,   656, 
+         656,   656,   656,   656,   656,   656,   656,   656, 
+         656,   656,   656,   656,   656,   656,   656,   656, 
+         656,   656,   656,   656,   656,   656,   656,   656, 
+         656,   656,   656,   656,   656,   656,   656,   656, 
+         656,   656,   656,   656,   656,   656,   656,   656, 
+         656,   656,   656,   656,   656,   656,   656,   656, 
+         656,   656,   656,   656,   656,   656,   656,   656, 
+         656,   656,   656,   656,   656,   656,   656,   656, 
+         656,   656,   656,   656,   656,   656,   656,   656, 
+         656,   656,   656,   656,   656,   656,   656,   656, 
+         656,   656,   656,   656,   656,   656,   656,   656, 
+         656,   656,   656,   656,   656,   656,   656,   656, 
+         656,   656,   656,   656,   656,   656,   656,   656, 
+         656,   656,   656,   656,   656,   656,   656,   656, 
+           0,     0,     1,     0,     0,     0,     2,     0, 
+           3,     4,     5,     6,     7,     8,     9,    10, 
+          11,    12,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,    13,    14,    15,    16, 
+          17,    18,     0,    19,    20,    21,    22,    23, 
+           0,    24,    25,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+          26,    27,    28,    29,    30,    31,    32,    33, 
+          34,    35,    36,    37,    38,    39,    40,    41, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,    42,     0,    43,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,    44,    45,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,    46,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+          47,    48,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+};
+
+static const struct {
+       unsigned short tbl[32];
+} v310_tolower_table[] = {
+       {{
+          0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
+          0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
+          0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
+       }},
+       {{
+          0,    1,    3,    5,    7,    9,   11,   13,   15,   17,   19, 
+         21,   23,   25,   27,   29,   31,   33,   35,   37,   39,   41, 
+         43,   45,   47,   49,   51,    0,    0,    0,    0,    0, 
+       }},
+       {{
+         53,   55,   57,   59,   61,   63,   65,   67,   69,   71,   73, 
+         75,   77,   79,   81,   83,   85,   87,   89,   91,   93,   95, 
+         97,    0,   99,  101,  103,  105,  107,  109,  111,    0, 
+       }},
+       {{
+        113,    0,  115,    0,  117,    0,  119,    0,  121,    0,  123, 
+          0,  125,    0,  127,    0,  129,    0,  131,    0,  133,    0, 
+        135,    0,  137,    0,  139,    0,  141,    0,  143,    0, 
+       }},
+       {{
+        145,    0,  147,    0,  149,    0,  151,    0,  153,    0,  155, 
+          0,  157,    0,  159,    0,  161,    0,  163,    0,  165,    0, 
+        167,    0,    0,  169,    0,  171,    0,  173,    0,  175, 
+       }},
+       {{
+          0,  177,    0,  179,    0,  181,    0,  183,    0,    0,  185, 
+          0,  187,    0,  189,    0,  191,    0,  193,    0,  195,    0, 
+        197,    0,  199,    0,  201,    0,  203,    0,  205,    0, 
+       }},
+       {{
+        207,    0,  209,    0,  211,    0,  213,    0,  215,    0,  217, 
+          0,  219,    0,  221,    0,  223,    0,  225,    0,  227,    0, 
+        229,    0,  231,  233,    0,  235,    0,  237,    0,    0, 
+       }},
+       {{
+          0,  239,  241,    0,  243,    0,  245,  247,    0,  249,  251, 
+        253,    0,    0,  255,  257,  259,  261,    0,  263,  265,    0, 
+        267,  269,  271,    0,    0,    0,  273,  275,    0,  277, 
+       }},
+       {{
+        279,    0,  281,    0,  283,    0,  285,  287,    0,  289,    0, 
+          0,  291,    0,  293,  295,    0,  297,  299,  301,    0,  303, 
+          0,  305,  307,    0,    0,    0,  309,    0,    0,    0, 
+       }},
+       {{
+          0,    0,    0,    0,  311,  313,    0,  315,  317,    0,  319, 
+        321,    0,  323,    0,  325,    0,  327,    0,  329,    0,  331, 
+          0,  333,    0,  335,    0,  337,    0,    0,  339,    0, 
+       }},
+       {{
+        341,    0,  343,    0,  345,    0,  347,    0,  349,    0,  351, 
+          0,  353,    0,  355,    0,    0,  357,  359,    0,  361,    0, 
+        363,  365,  367,    0,  369,    0,  371,    0,  373,    0, 
+       }},
+       {{
+        375,    0,  377,    0,  379,    0,  381,    0,  383,    0,  385, 
+          0,  387,    0,  389,    0,  391,    0,  393,    0,  395,    0, 
+        397,    0,  399,    0,  401,    0,  403,    0,  405,    0, 
+       }},
+       {{
+          0,    0,  407,    0,  409,    0,  411,    0,  413,    0,  415, 
+          0,  417,    0,  419,    0,  421,    0,  423,    0,    0,    0, 
+          0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
+       }},
+       {{
+          0,    0,    0,    0,    0,    0,  425,    0,  427,  429,  431, 
+          0,  433,    0,  435,  437,    0,  439,  441,  443,  445,  447, 
+        449,  451,  453,  455,  457,  459,  461,  463,  465,  467, 
+       }},
+       {{
+        469,  471,    0,  473,  477,  479,  481,  483,  485,  487,  489, 
+        491,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
+          0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
+       }},
+       {{
+          0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
+          0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
+          0,    0,    0,    0,  493,    0,  495,    0,  497,    0, 
+       }},
+       {{
+        499,    0,  501,    0,  503,    0,  505,    0,  507,    0,  509, 
+          0,  511,    0,  513,    0,    0,    0,    0,    0,  515,    0, 
+          0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
+       }},
+       {{
+        517,  519,  521,  523,  525,  527,  529,  531,  533,  535,  537, 
+        539,  541,  543,  545,  547,  549,  551,  553,  555,  557,  559, 
+        561,  563,  565,  567,  569,  571,  573,  575,  577,  579, 
+       }},
+       {{
+        581,  583,  585,  587,  589,  591,  593,  595,  597,  599,  601, 
+        603,  605,  607,  609,  611,    0,    0,    0,    0,    0,    0, 
+          0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
+       }},
+       {{
+        613,    0,  615,    0,  617,    0,  619,    0,  621,    0,  623, 
+          0,  625,    0,  627,    0,  629,    0,  631,    0,  633,    0, 
+        635,    0,  637,    0,  639,    0,  641,    0,  643,    0, 
+       }},
+       {{
+        645,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
+          0,  647,    0,  649,    0,  651,    0,  653,    0,  655,    0, 
+        657,    0,  659,    0,  661,    0,  663,    0,  665,    0, 
+       }},
+       {{
+        667,    0,  669,    0,  671,    0,  673,    0,  675,    0,  677, 
+          0,  679,    0,  681,    0,  683,    0,  685,    0,  687,    0, 
+        689,    0,  691,    0,  693,    0,  695,    0,  697,    0, 
+       }},
+       {{
+          0,  699,    0,  701,    0,    0,    0,  703,    0,    0,    0, 
+        705,    0,    0,    0,    0,  707,    0,  709,    0,  711,    0, 
+        713,    0,  715,    0,  717,    0,  719,    0,  721,    0, 
+       }},
+       {{
+        723,    0,  725,    0,  727,    0,  729,    0,  731,    0,  733, 
+          0,  735,    0,  737,    0,  739,    0,  741,    0,  743,    0, 
+          0,    0,  745,    0,    0,    0,    0,    0,    0,    0, 
+       }},
+       {{
+          0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
+          0,    0,    0,    0,    0,    0,  747,  749,  751,  753,  755, 
+        757,  759,  761,  763,  765,  767,  769,  771,  773,  775, 
+       }},
+       {{
+        777,  779,  781,  783,  785,  787,  789,  791,  793,  795,  797, 
+        799,  801,  803,  805,  807,  809,  811,  813,  815,  817,  819, 
+        821,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
+       }},
+       {{
+        823,    0,  825,    0,  827,    0,  829,    0,  831,    0,  833, 
+          0,  835,    0,  837,    0,  839,    0,  841,    0,  843,    0, 
+        845,    0,  847,    0,  849,    0,  851,    0,  853,    0, 
+       }},
+       {{
+        855,    0,  857,    0,  859,    0,  861,    0,  863,    0,  865, 
+          0,  867,    0,  869,    0,  871,    0,  873,    0,  875,    0, 
+        877,    0,  879,    0,  881,    0,  883,    0,  885,    0, 
+       }},
+       {{
+        887,    0,  889,    0,  891,    0,  893,    0,  895,    0,  897, 
+          0,  899,    0,  901,    0,  903,    0,  905,    0,  907,    0, 
+        909,    0,  911,    0,  913,    0,  915,    0,  917,    0, 
+       }},
+       {{
+        919,    0,  921,    0,  923,    0,  925,    0,  927,    0,  929, 
+          0,  931,    0,  933,    0,  935,    0,  937,    0,  939,    0, 
+        941,    0,  943,    0,  945,    0,  947,    0,  949,    0, 
+       }},
+       {{
+        951,    0,  953,    0,  955,    0,  957,    0,  959,    0,  961, 
+          0,  963,    0,  965,    0,  967,    0,  969,    0,  971,    0, 
+          0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
+       }},
+       {{
+        973,    0,  975,    0,  977,    0,  979,    0,  981,    0,  983, 
+          0,  985,    0,  987,    0,  989,    0,  991,    0,  993,    0, 
+        995,    0,  997,    0,  999,    0, 1001,    0, 1003,    0, 
+       }},
+       {{
+       1005,    0, 1007,    0, 1009,    0, 1011,    0, 1013,    0, 1015, 
+          0, 1017,    0, 1019,    0, 1021,    0, 1023,    0, 1025,    0, 
+       1027,    0, 1029,    0, 1031,    0, 1033,    0, 1035,    0, 
+       }},
+       {{
+       1037,    0, 1039,    0, 1041,    0, 1043,    0, 1045,    0, 1047, 
+          0, 1049,    0, 1051,    0, 1053,    0, 1055,    0, 1057,    0, 
+       1059,    0, 1061,    0,    0,    0,    0,    0,    0,    0, 
+       }},
+       {{
+          0,    0,    0,    0,    0,    0,    0,    0, 1063, 1065, 1067, 
+       1069, 1071, 1073, 1075, 1077,    0,    0,    0,    0,    0,    0, 
+          0,    0, 1079, 1081, 1083, 1085, 1087, 1089,    0,    0, 
+       }},
+       {{
+          0,    0,    0,    0,    0,    0,    0,    0, 1091, 1093, 1095, 
+       1097, 1099, 1101, 1103, 1105,    0,    0,    0,    0,    0,    0, 
+          0,    0, 1107, 1109, 1111, 1113, 1115, 1117, 1119, 1121, 
+       }},
+       {{
+          0,    0,    0,    0,    0,    0,    0,    0, 1123, 1125, 1127, 
+       1129, 1131, 1133,    0,    0,    0,    0,    0,    0,    0,    0, 
+          0,    0,    0, 1135,    0, 1137,    0, 1139,    0, 1141, 
+       }},
+       {{
+          0,    0,    0,    0,    0,    0,    0,    0, 1143, 1145, 1147, 
+       1149, 1151, 1153, 1155, 1157,    0,    0,    0,    0,    0,    0, 
+          0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
+       }},
+       {{
+          0,    0,    0,    0,    0,    0,    0,    0, 1159, 1163, 1167, 
+       1171, 1175, 1179, 1183, 1187,    0,    0,    0,    0,    0,    0, 
+          0,    0, 1191, 1195, 1199, 1203, 1207, 1211, 1215, 1219, 
+       }},
+       {{
+          0,    0,    0,    0,    0,    0,    0,    0, 1223, 1227, 1231, 
+       1235, 1239, 1243, 1247, 1251,    0,    0,    0,    0,    0,    0, 
+          0,    0, 1255, 1257, 1259, 1261, 1263,    0,    0,    0, 
+       }},
+       {{
+          0,    0,    0,    0,    0,    0,    0,    0, 1267, 1269, 1271, 
+       1273, 1275,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
+          0,    0, 1279, 1281, 1283, 1285,    0,    0,    0,    0, 
+       }},
+       {{
+          0,    0,    0,    0,    0,    0,    0,    0, 1287, 1289, 1291, 
+       1293, 1295,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
+          0,    0, 1297, 1299, 1301, 1303, 1305,    0,    0,    0, 
+       }},
+       {{
+          0,    0,    0,    0,    0,    0, 1309,    0,    0,    0, 1311, 
+       1313,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
+          0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
+       }},
+       {{
+       1315, 1317, 1319, 1321, 1323, 1325, 1327, 1329, 1331, 1333, 1335, 
+       1337, 1339, 1341, 1343, 1345,    0,    0,    0,    0,    0,    0, 
+          0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
+       }},
+       {{
+          0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
+          0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
+       1347, 1349, 1351, 1353, 1355, 1357, 1359, 1361, 1363, 1365, 
+       }},
+       {{
+       1367, 1369, 1371, 1373, 1375, 1377, 1379, 1381, 1383, 1385, 1387, 
+       1389, 1391, 1393, 1395, 1397,    0,    0,    0,    0,    0,    0, 
+          0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
+       }},
+       {{
+          0, 1399, 1401, 1403, 1405, 1407, 1409, 1411, 1413, 1415, 1417, 
+       1419, 1421, 1423, 1425, 1427, 1429, 1431, 1433, 1435, 1437, 1439, 
+       1441, 1443, 1445, 1447, 1449,    0,    0,    0,    0,    0, 
+       }},
+       {{
+       1451, 1453, 1455, 1457, 1459, 1461, 1463, 1465, 1467, 1469, 1471, 
+       1473, 1475, 1477, 1479, 1481, 1483, 1485, 1487, 1489, 1491, 1493, 
+       1495, 1497, 1499, 1501, 1503, 1505, 1507, 1509, 1511, 1513, 
+       }},
+       {{
+       1515, 1517, 1519, 1521, 1523, 1525,    0,    0,    0,    0,    0, 
+          0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
+          0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
+       }},
+};
+static const unsigned long v310_toupper_seq[] = {
+       0x00000000, 0x00000010, 0x80000041, 0x00000010, 
+       0x80000042, 0x00000010, 0x80000043, 0x00000010, 
+       0x80000044, 0x00000010, 0x80000045, 0x00000010, 
+       0x80000046, 0x00000010, 0x80000047, 0x00000010, 
+       0x80000048, 0x00000010, 0x80000049, 0x00000010, 
+       0x8000004a, 0x00000010, 0x8000004b, 0x00000010, 
+       0x8000004c, 0x00000010, 0x8000004d, 0x00000010, 
+       0x8000004e, 0x00000010, 0x8000004f, 0x00000010, 
+       0x80000050, 0x00000010, 0x80000051, 0x00000010, 
+       0x80000052, 0x00000010, 0x80000053, 0x00000010, 
+       0x80000054, 0x00000010, 0x80000055, 0x00000010, 
+       0x80000056, 0x00000010, 0x80000057, 0x00000010, 
+       0x80000058, 0x00000010, 0x80000059, 0x00000010, 
+       0x8000005a, 0x00000010, 0x8000039c, 0x00000010, 
+       0x00000053, 0x80000053, 0x00000010, 0x800000c0, 
+       0x00000010, 0x800000c1, 0x00000010, 0x800000c2, 
+       0x00000010, 0x800000c3, 0x00000010, 0x800000c4, 
+       0x00000010, 0x800000c5, 0x00000010, 0x800000c6, 
+       0x00000010, 0x800000c7, 0x00000010, 0x800000c8, 
+       0x00000010, 0x800000c9, 0x00000010, 0x800000ca, 
+       0x00000010, 0x800000cb, 0x00000010, 0x800000cc, 
+       0x00000010, 0x800000cd, 0x00000010, 0x800000ce, 
+       0x00000010, 0x800000cf, 0x00000010, 0x800000d0, 
+       0x00000010, 0x800000d1, 0x00000010, 0x800000d2, 
+       0x00000010, 0x800000d3, 0x00000010, 0x800000d4, 
+       0x00000010, 0x800000d5, 0x00000010, 0x800000d6, 
+       0x00000010, 0x800000d8, 0x00000010, 0x800000d9, 
+       0x00000010, 0x800000da, 0x00000010, 0x800000db, 
+       0x00000010, 0x800000dc, 0x00000010, 0x800000dd, 
+       0x00000010, 0x800000de, 0x00000010, 0x80000178, 
+       0x00000010, 0x80000100, 0x00000010, 0x80000102, 
+       0x00000010, 0x80000104, 0x00000010, 0x80000106, 
+       0x00000010, 0x80000108, 0x00000010, 0x8000010a, 
+       0x00000010, 0x8000010c, 0x00000010, 0x8000010e, 
+       0x00000010, 0x80000110, 0x00000010, 0x80000112, 
+       0x00000010, 0x80000114, 0x00000010, 0x80000116, 
+       0x00000010, 0x80000118, 0x00000010, 0x8000011a, 
+       0x00000010, 0x8000011c, 0x00000010, 0x8000011e, 
+       0x00000010, 0x80000120, 0x00000010, 0x80000122, 
+       0x00000010, 0x80000124, 0x00000010, 0x80000126, 
+       0x00000010, 0x80000128, 0x00000010, 0x8000012a, 
+       0x00000010, 0x8000012c, 0x00000010, 0x8000012e, 
+       0x00000010, 0x80000049, 0x00000010, 0x80000132, 
+       0x00000010, 0x80000134, 0x00000010, 0x80000136, 
+       0x00000010, 0x80000139, 0x00000010, 0x8000013b, 
+       0x00000010, 0x8000013d, 0x00000010, 0x8000013f, 
+       0x00000010, 0x80000141, 0x00000010, 0x80000143, 
+       0x00000010, 0x80000145, 0x00000010, 0x80000147, 
+       0x00000010, 0x000002bc, 0x8000004e, 0x00000010, 
+       0x8000014a, 0x00000010, 0x8000014c, 0x00000010, 
+       0x8000014e, 0x00000010, 0x80000150, 0x00000010, 
+       0x80000152, 0x00000010, 0x80000154, 0x00000010, 
+       0x80000156, 0x00000010, 0x80000158, 0x00000010, 
+       0x8000015a, 0x00000010, 0x8000015c, 0x00000010, 
+       0x8000015e, 0x00000010, 0x80000160, 0x00000010, 
+       0x80000162, 0x00000010, 0x80000164, 0x00000010, 
+       0x80000166, 0x00000010, 0x80000168, 0x00000010, 
+       0x8000016a, 0x00000010, 0x8000016c, 0x00000010, 
+       0x8000016e, 0x00000010, 0x80000170, 0x00000010, 
+       0x80000172, 0x00000010, 0x80000174, 0x00000010, 
+       0x80000176, 0x00000010, 0x80000179, 0x00000010, 
+       0x8000017b, 0x00000010, 0x8000017d, 0x00000010, 
+       0x80000053, 0x00000010, 0x80000182, 0x00000010, 
+       0x80000184, 0x00000010, 0x80000187, 0x00000010, 
+       0x8000018b, 0x00000010, 0x80000191, 0x00000010, 
+       0x800001f6, 0x00000010, 0x80000198, 0x00000010, 
+       0x800001a0, 0x00000010, 0x800001a2, 0x00000010, 
+       0x800001a4, 0x00000010, 0x800001a7, 0x00000010, 
+       0x800001ac, 0x00000010, 0x800001af, 0x00000010, 
+       0x800001b3, 0x00000010, 0x800001b5, 0x00000010, 
+       0x800001b8, 0x00000010, 0x800001bc, 0x00000010, 
+       0x800001f7, 0x00000010, 0x800001c4, 0x00000010, 
+       0x800001c4, 0x00000010, 0x800001c7, 0x00000010, 
+       0x800001c7, 0x00000010, 0x800001ca, 0x00000010, 
+       0x800001ca, 0x00000010, 0x800001cd, 0x00000010, 
+       0x800001cf, 0x00000010, 0x800001d1, 0x00000010, 
+       0x800001d3, 0x00000010, 0x800001d5, 0x00000010, 
+       0x800001d7, 0x00000010, 0x800001d9, 0x00000010, 
+       0x800001db, 0x00000010, 0x8000018e, 0x00000010, 
+       0x800001de, 0x00000010, 0x800001e0, 0x00000010, 
+       0x800001e2, 0x00000010, 0x800001e4, 0x00000010, 
+       0x800001e6, 0x00000010, 0x800001e8, 0x00000010, 
+       0x800001ea, 0x00000010, 0x800001ec, 0x00000010, 
+       0x800001ee, 0x00000010, 0x0000004a, 0x8000030c, 
+       0x00000010, 0x800001f1, 0x00000010, 0x800001f1, 
+       0x00000010, 0x800001f4, 0x00000010, 0x800001f8, 
+       0x00000010, 0x800001fa, 0x00000010, 0x800001fc, 
+       0x00000010, 0x800001fe, 0x00000010, 0x80000200, 
+       0x00000010, 0x80000202, 0x00000010, 0x80000204, 
+       0x00000010, 0x80000206, 0x00000010, 0x80000208, 
+       0x00000010, 0x8000020a, 0x00000010, 0x8000020c, 
+       0x00000010, 0x8000020e, 0x00000010, 0x80000210, 
+       0x00000010, 0x80000212, 0x00000010, 0x80000214, 
+       0x00000010, 0x80000216, 0x00000010, 0x80000218, 
+       0x00000010, 0x8000021a, 0x00000010, 0x8000021c, 
+       0x00000010, 0x8000021e, 0x00000010, 0x80000222, 
+       0x00000010, 0x80000224, 0x00000010, 0x80000226, 
+       0x00000010, 0x80000228, 0x00000010, 0x8000022a, 
+       0x00000010, 0x8000022c, 0x00000010, 0x8000022e, 
+       0x00000010, 0x80000230, 0x00000010, 0x80000232, 
+       0x00000010, 0x80000181, 0x00000010, 0x80000186, 
+       0x00000010, 0x80000189, 0x00000010, 0x8000018a, 
+       0x00000010, 0x8000018f, 0x00000010, 0x80000190, 
+       0x00000010, 0x80000193, 0x00000010, 0x80000194, 
+       0x00000010, 0x80000197, 0x00000010, 0x80000196, 
+       0x00000010, 0x8000019c, 0x00000010, 0x8000019d, 
+       0x00000010, 0x8000019f, 0x00000010, 0x800001a6, 
+       0x00000010, 0x800001a9, 0x00000010, 0x800001ae, 
+       0x00000010, 0x800001b1, 0x00000010, 0x800001b2, 
+       0x00000010, 0x800001b7, 0x00000010, 0x80000399, 
+       0x00000010, 0x00000399, 0x00000308, 0x80000301, 
+       0x00000010, 0x80000386, 0x00000010, 0x80000388, 
+       0x00000010, 0x80000389, 0x00000010, 0x8000038a, 
+       0x00000010, 0x000003a5, 0x00000308, 0x80000301, 
+       0x00000010, 0x80000391, 0x00000010, 0x80000392, 
+       0x00000010, 0x80000393, 0x00000010, 0x80000394, 
+       0x00000010, 0x80000395, 0x00000010, 0x80000396, 
+       0x00000010, 0x80000397, 0x00000010, 0x80000398, 
+       0x00000010, 0x80000399, 0x00000010, 0x8000039a, 
+       0x00000010, 0x8000039b, 0x00000010, 0x8000039c, 
+       0x00000010, 0x8000039d, 0x00000010, 0x8000039e, 
+       0x00000010, 0x8000039f, 0x00000010, 0x800003a0, 
+       0x00000010, 0x800003a1, 0x00000010, 0x800003a3, 
+       0x00000010, 0x800003a3, 0x00000010, 0x800003a4, 
+       0x00000010, 0x800003a5, 0x00000010, 0x800003a6, 
+       0x00000010, 0x800003a7, 0x00000010, 0x800003a8, 
+       0x00000010, 0x800003a9, 0x00000010, 0x800003aa, 
+       0x00000010, 0x800003ab, 0x00000010, 0x8000038c, 
+       0x00000010, 0x8000038e, 0x00000010, 0x8000038f, 
+       0x00000010, 0x80000392, 0x00000010, 0x80000398, 
+       0x00000010, 0x800003a6, 0x00000010, 0x800003a0, 
+       0x00000010, 0x800003da, 0x00000010, 0x800003dc, 
+       0x00000010, 0x800003de, 0x00000010, 0x800003e0, 
+       0x00000010, 0x800003e2, 0x00000010, 0x800003e4, 
+       0x00000010, 0x800003e6, 0x00000010, 0x800003e8, 
+       0x00000010, 0x800003ea, 0x00000010, 0x800003ec, 
+       0x00000010, 0x800003ee, 0x00000010, 0x8000039a, 
+       0x00000010, 0x800003a1, 0x00000010, 0x800003a3, 
+       0x00000010, 0x80000395, 0x00000010, 0x80000410, 
+       0x00000010, 0x80000411, 0x00000010, 0x80000412, 
+       0x00000010, 0x80000413, 0x00000010, 0x80000414, 
+       0x00000010, 0x80000415, 0x00000010, 0x80000416, 
+       0x00000010, 0x80000417, 0x00000010, 0x80000418, 
+       0x00000010, 0x80000419, 0x00000010, 0x8000041a, 
+       0x00000010, 0x8000041b, 0x00000010, 0x8000041c, 
+       0x00000010, 0x8000041d, 0x00000010, 0x8000041e, 
+       0x00000010, 0x8000041f, 0x00000010, 0x80000420, 
+       0x00000010, 0x80000421, 0x00000010, 0x80000422, 
+       0x00000010, 0x80000423, 0x00000010, 0x80000424, 
+       0x00000010, 0x80000425, 0x00000010, 0x80000426, 
+       0x00000010, 0x80000427, 0x00000010, 0x80000428, 
+       0x00000010, 0x80000429, 0x00000010, 0x8000042a, 
+       0x00000010, 0x8000042b, 0x00000010, 0x8000042c, 
+       0x00000010, 0x8000042d, 0x00000010, 0x8000042e, 
+       0x00000010, 0x8000042f, 0x00000010, 0x80000400, 
+       0x00000010, 0x80000401, 0x00000010, 0x80000402, 
+       0x00000010, 0x80000403, 0x00000010, 0x80000404, 
+       0x00000010, 0x80000405, 0x00000010, 0x80000406, 
+       0x00000010, 0x80000407, 0x00000010, 0x80000408, 
+       0x00000010, 0x80000409, 0x00000010, 0x8000040a, 
+       0x00000010, 0x8000040b, 0x00000010, 0x8000040c, 
+       0x00000010, 0x8000040d, 0x00000010, 0x8000040e, 
+       0x00000010, 0x8000040f, 0x00000010, 0x80000460, 
+       0x00000010, 0x80000462, 0x00000010, 0x80000464, 
+       0x00000010, 0x80000466, 0x00000010, 0x80000468, 
+       0x00000010, 0x8000046a, 0x00000010, 0x8000046c, 
+       0x00000010, 0x8000046e, 0x00000010, 0x80000470, 
+       0x00000010, 0x80000472, 0x00000010, 0x80000474, 
+       0x00000010, 0x80000476, 0x00000010, 0x80000478, 
+       0x00000010, 0x8000047a, 0x00000010, 0x8000047c, 
+       0x00000010, 0x8000047e, 0x00000010, 0x80000480, 
+       0x00000010, 0x8000048c, 0x00000010, 0x8000048e, 
+       0x00000010, 0x80000490, 0x00000010, 0x80000492, 
+       0x00000010, 0x80000494, 0x00000010, 0x80000496, 
+       0x00000010, 0x80000498, 0x00000010, 0x8000049a, 
+       0x00000010, 0x8000049c, 0x00000010, 0x8000049e, 
+       0x00000010, 0x800004a0, 0x00000010, 0x800004a2, 
+       0x00000010, 0x800004a4, 0x00000010, 0x800004a6, 
+       0x00000010, 0x800004a8, 0x00000010, 0x800004aa, 
+       0x00000010, 0x800004ac, 0x00000010, 0x800004ae, 
+       0x00000010, 0x800004b0, 0x00000010, 0x800004b2, 
+       0x00000010, 0x800004b4, 0x00000010, 0x800004b6, 
+       0x00000010, 0x800004b8, 0x00000010, 0x800004ba, 
+       0x00000010, 0x800004bc, 0x00000010, 0x800004be, 
+       0x00000010, 0x800004c1, 0x00000010, 0x800004c3, 
+       0x00000010, 0x800004c7, 0x00000010, 0x800004cb, 
+       0x00000010, 0x800004d0, 0x00000010, 0x800004d2, 
+       0x00000010, 0x800004d4, 0x00000010, 0x800004d6, 
+       0x00000010, 0x800004d8, 0x00000010, 0x800004da, 
+       0x00000010, 0x800004dc, 0x00000010, 0x800004de, 
+       0x00000010, 0x800004e0, 0x00000010, 0x800004e2, 
+       0x00000010, 0x800004e4, 0x00000010, 0x800004e6, 
+       0x00000010, 0x800004e8, 0x00000010, 0x800004ea, 
+       0x00000010, 0x800004ec, 0x00000010, 0x800004ee, 
+       0x00000010, 0x800004f0, 0x00000010, 0x800004f2, 
+       0x00000010, 0x800004f4, 0x00000010, 0x800004f8, 
+       0x00000010, 0x80000531, 0x00000010, 0x80000532, 
+       0x00000010, 0x80000533, 0x00000010, 0x80000534, 
+       0x00000010, 0x80000535, 0x00000010, 0x80000536, 
+       0x00000010, 0x80000537, 0x00000010, 0x80000538, 
+       0x00000010, 0x80000539, 0x00000010, 0x8000053a, 
+       0x00000010, 0x8000053b, 0x00000010, 0x8000053c, 
+       0x00000010, 0x8000053d, 0x00000010, 0x8000053e, 
+       0x00000010, 0x8000053f, 0x00000010, 0x80000540, 
+       0x00000010, 0x80000541, 0x00000010, 0x80000542, 
+       0x00000010, 0x80000543, 0x00000010, 0x80000544, 
+       0x00000010, 0x80000545, 0x00000010, 0x80000546, 
+       0x00000010, 0x80000547, 0x00000010, 0x80000548, 
+       0x00000010, 0x80000549, 0x00000010, 0x8000054a, 
+       0x00000010, 0x8000054b, 0x00000010, 0x8000054c, 
+       0x00000010, 0x8000054d, 0x00000010, 0x8000054e, 
+       0x00000010, 0x8000054f, 0x00000010, 0x80000550, 
+       0x00000010, 0x80000551, 0x00000010, 0x80000552, 
+       0x00000010, 0x80000553, 0x00000010, 0x80000554, 
+       0x00000010, 0x80000555, 0x00000010, 0x80000556, 
+       0x00000010, 0x00000535, 0x80000552, 0x00000010, 
+       0x80001e00, 0x00000010, 0x80001e02, 0x00000010, 
+       0x80001e04, 0x00000010, 0x80001e06, 0x00000010, 
+       0x80001e08, 0x00000010, 0x80001e0a, 0x00000010, 
+       0x80001e0c, 0x00000010, 0x80001e0e, 0x00000010, 
+       0x80001e10, 0x00000010, 0x80001e12, 0x00000010, 
+       0x80001e14, 0x00000010, 0x80001e16, 0x00000010, 
+       0x80001e18, 0x00000010, 0x80001e1a, 0x00000010, 
+       0x80001e1c, 0x00000010, 0x80001e1e, 0x00000010, 
+       0x80001e20, 0x00000010, 0x80001e22, 0x00000010, 
+       0x80001e24, 0x00000010, 0x80001e26, 0x00000010, 
+       0x80001e28, 0x00000010, 0x80001e2a, 0x00000010, 
+       0x80001e2c, 0x00000010, 0x80001e2e, 0x00000010, 
+       0x80001e30, 0x00000010, 0x80001e32, 0x00000010, 
+       0x80001e34, 0x00000010, 0x80001e36, 0x00000010, 
+       0x80001e38, 0x00000010, 0x80001e3a, 0x00000010, 
+       0x80001e3c, 0x00000010, 0x80001e3e, 0x00000010, 
+       0x80001e40, 0x00000010, 0x80001e42, 0x00000010, 
+       0x80001e44, 0x00000010, 0x80001e46, 0x00000010, 
+       0x80001e48, 0x00000010, 0x80001e4a, 0x00000010, 
+       0x80001e4c, 0x00000010, 0x80001e4e, 0x00000010, 
+       0x80001e50, 0x00000010, 0x80001e52, 0x00000010, 
+       0x80001e54, 0x00000010, 0x80001e56, 0x00000010, 
+       0x80001e58, 0x00000010, 0x80001e5a, 0x00000010, 
+       0x80001e5c, 0x00000010, 0x80001e5e, 0x00000010, 
+       0x80001e60, 0x00000010, 0x80001e62, 0x00000010, 
+       0x80001e64, 0x00000010, 0x80001e66, 0x00000010, 
+       0x80001e68, 0x00000010, 0x80001e6a, 0x00000010, 
+       0x80001e6c, 0x00000010, 0x80001e6e, 0x00000010, 
+       0x80001e70, 0x00000010, 0x80001e72, 0x00000010, 
+       0x80001e74, 0x00000010, 0x80001e76, 0x00000010, 
+       0x80001e78, 0x00000010, 0x80001e7a, 0x00000010, 
+       0x80001e7c, 0x00000010, 0x80001e7e, 0x00000010, 
+       0x80001e80, 0x00000010, 0x80001e82, 0x00000010, 
+       0x80001e84, 0x00000010, 0x80001e86, 0x00000010, 
+       0x80001e88, 0x00000010, 0x80001e8a, 0x00000010, 
+       0x80001e8c, 0x00000010, 0x80001e8e, 0x00000010, 
+       0x80001e90, 0x00000010, 0x80001e92, 0x00000010, 
+       0x80001e94, 0x00000010, 0x00000048, 0x80000331, 
+       0x00000010, 0x00000054, 0x80000308, 0x00000010, 
+       0x00000057, 0x8000030a, 0x00000010, 0x00000059, 
+       0x8000030a, 0x00000010, 0x00000041, 0x800002be, 
+       0x00000010, 0x80001e60, 0x00000010, 0x80001ea0, 
+       0x00000010, 0x80001ea2, 0x00000010, 0x80001ea4, 
+       0x00000010, 0x80001ea6, 0x00000010, 0x80001ea8, 
+       0x00000010, 0x80001eaa, 0x00000010, 0x80001eac, 
+       0x00000010, 0x80001eae, 0x00000010, 0x80001eb0, 
+       0x00000010, 0x80001eb2, 0x00000010, 0x80001eb4, 
+       0x00000010, 0x80001eb6, 0x00000010, 0x80001eb8, 
+       0x00000010, 0x80001eba, 0x00000010, 0x80001ebc, 
+       0x00000010, 0x80001ebe, 0x00000010, 0x80001ec0, 
+       0x00000010, 0x80001ec2, 0x00000010, 0x80001ec4, 
+       0x00000010, 0x80001ec6, 0x00000010, 0x80001ec8, 
+       0x00000010, 0x80001eca, 0x00000010, 0x80001ecc, 
+       0x00000010, 0x80001ece, 0x00000010, 0x80001ed0, 
+       0x00000010, 0x80001ed2, 0x00000010, 0x80001ed4, 
+       0x00000010, 0x80001ed6, 0x00000010, 0x80001ed8, 
+       0x00000010, 0x80001eda, 0x00000010, 0x80001edc, 
+       0x00000010, 0x80001ede, 0x00000010, 0x80001ee0, 
+       0x00000010, 0x80001ee2, 0x00000010, 0x80001ee4, 
+       0x00000010, 0x80001ee6, 0x00000010, 0x80001ee8, 
+       0x00000010, 0x80001eea, 0x00000010, 0x80001eec, 
+       0x00000010, 0x80001eee, 0x00000010, 0x80001ef0, 
+       0x00000010, 0x80001ef2, 0x00000010, 0x80001ef4, 
+       0x00000010, 0x80001ef6, 0x00000010, 0x80001ef8, 
+       0x00000010, 0x80001f08, 0x00000010, 0x80001f09, 
+       0x00000010, 0x80001f0a, 0x00000010, 0x80001f0b, 
+       0x00000010, 0x80001f0c, 0x00000010, 0x80001f0d, 
+       0x00000010, 0x80001f0e, 0x00000010, 0x80001f0f, 
+       0x00000010, 0x80001f18, 0x00000010, 0x80001f19, 
+       0x00000010, 0x80001f1a, 0x00000010, 0x80001f1b, 
+       0x00000010, 0x80001f1c, 0x00000010, 0x80001f1d, 
+       0x00000010, 0x80001f28, 0x00000010, 0x80001f29, 
+       0x00000010, 0x80001f2a, 0x00000010, 0x80001f2b, 
+       0x00000010, 0x80001f2c, 0x00000010, 0x80001f2d, 
+       0x00000010, 0x80001f2e, 0x00000010, 0x80001f2f, 
+       0x00000010, 0x80001f38, 0x00000010, 0x80001f39, 
+       0x00000010, 0x80001f3a, 0x00000010, 0x80001f3b, 
+       0x00000010, 0x80001f3c, 0x00000010, 0x80001f3d, 
+       0x00000010, 0x80001f3e, 0x00000010, 0x80001f3f, 
+       0x00000010, 0x80001f48, 0x00000010, 0x80001f49, 
+       0x00000010, 0x80001f4a, 0x00000010, 0x80001f4b, 
+       0x00000010, 0x80001f4c, 0x00000010, 0x80001f4d, 
+       0x00000010, 0x000003a5, 0x80000313, 0x00000010, 
+       0x80001f59, 0x00000010, 0x000003a5, 0x00000313, 
+       0x80000300, 0x00000010, 0x80001f5b, 0x00000010, 
+       0x000003a5, 0x00000313, 0x80000301, 0x00000010, 
+       0x80001f5d, 0x00000010, 0x000003a5, 0x00000313, 
+       0x80000342, 0x00000010, 0x80001f5f, 0x00000010, 
+       0x80001f68, 0x00000010, 0x80001f69, 0x00000010, 
+       0x80001f6a, 0x00000010, 0x80001f6b, 0x00000010, 
+       0x80001f6c, 0x00000010, 0x80001f6d, 0x00000010, 
+       0x80001f6e, 0x00000010, 0x80001f6f, 0x00000010, 
+       0x80001fba, 0x00000010, 0x80001fbb, 0x00000010, 
+       0x80001fc8, 0x00000010, 0x80001fc9, 0x00000010, 
+       0x80001fca, 0x00000010, 0x80001fcb, 0x00000010, 
+       0x80001fda, 0x00000010, 0x80001fdb, 0x00000010, 
+       0x80001ff8, 0x00000010, 0x80001ff9, 0x00000010, 
+       0x80001fea, 0x00000010, 0x80001feb, 0x00000010, 
+       0x80001ffa, 0x00000010, 0x80001ffb, 0x00000000, 
+       0x00001f08, 0x80000399, 0x00000010, 0x80001f88, 
+       0x00000000, 0x00001f09, 0x80000399, 0x00000010, 
+       0x80001f89, 0x00000000, 0x00001f0a, 0x80000399, 
+       0x00000010, 0x80001f8a, 0x00000000, 0x00001f0b, 
+       0x80000399, 0x00000010, 0x80001f8b, 0x00000000, 
+       0x00001f0c, 0x80000399, 0x00000010, 0x80001f8c, 
+       0x00000000, 0x00001f0d, 0x80000399, 0x00000010, 
+       0x80001f8d, 0x00000000, 0x00001f0e, 0x80000399, 
+       0x00000010, 0x80001f8e, 0x00000000, 0x00001f0f, 
+       0x80000399, 0x00000010, 0x80001f8f, 0x00000010, 
+       0x00001f08, 0x80000399, 0x00000010, 0x00001f09, 
+       0x80000399, 0x00000010, 0x00001f0a, 0x80000399, 
+       0x00000010, 0x00001f0b, 0x80000399, 0x00000010, 
+       0x00001f0c, 0x80000399, 0x00000010, 0x00001f0d, 
+       0x80000399, 0x00000010, 0x00001f0e, 0x80000399, 
+       0x00000010, 0x00001f0f, 0x80000399, 0x00000000, 
+       0x00001f28, 0x80000399, 0x00000010, 0x80001f98, 
+       0x00000000, 0x00001f29, 0x80000399, 0x00000010, 
+       0x80001f99, 0x00000000, 0x00001f2a, 0x80000399, 
+       0x00000010, 0x80001f9a, 0x00000000, 0x00001f2b, 
+       0x80000399, 0x00000010, 0x80001f9b, 0x00000000, 
+       0x00001f2c, 0x80000399, 0x00000010, 0x80001f9c, 
+       0x00000000, 0x00001f2d, 0x80000399, 0x00000010, 
+       0x80001f9d, 0x00000000, 0x00001f2e, 0x80000399, 
+       0x00000010, 0x80001f9e, 0x00000000, 0x00001f2f, 
+       0x80000399, 0x00000010, 0x80001f9f, 0x00000010, 
+       0x00001f28, 0x80000399, 0x00000010, 0x00001f29, 
+       0x80000399, 0x00000010, 0x00001f2a, 0x80000399, 
+       0x00000010, 0x00001f2b, 0x80000399, 0x00000010, 
+       0x00001f2c, 0x80000399, 0x00000010, 0x00001f2d, 
+       0x80000399, 0x00000010, 0x00001f2e, 0x80000399, 
+       0x00000010, 0x00001f2f, 0x80000399, 0x00000000, 
+       0x00001f68, 0x80000399, 0x00000010, 0x80001fa8, 
+       0x00000000, 0x00001f69, 0x80000399, 0x00000010, 
+       0x80001fa9, 0x00000000, 0x00001f6a, 0x80000399, 
+       0x00000010, 0x80001faa, 0x00000000, 0x00001f6b, 
+       0x80000399, 0x00000010, 0x80001fab, 0x00000000, 
+       0x00001f6c, 0x80000399, 0x00000010, 0x80001fac, 
+       0x00000000, 0x00001f6d, 0x80000399, 0x00000010, 
+       0x80001fad, 0x00000000, 0x00001f6e, 0x80000399, 
+       0x00000010, 0x80001fae, 0x00000000, 0x00001f6f, 
+       0x80000399, 0x00000010, 0x80001faf, 0x00000010, 
+       0x00001f68, 0x80000399, 0x00000010, 0x00001f69, 
+       0x80000399, 0x00000010, 0x00001f6a, 0x80000399, 
+       0x00000010, 0x00001f6b, 0x80000399, 0x00000010, 
+       0x00001f6c, 0x80000399, 0x00000010, 0x00001f6d, 
+       0x80000399, 0x00000010, 0x00001f6e, 0x80000399, 
+       0x00000010, 0x00001f6f, 0x80000399, 0x00000010, 
+       0x80001fb8, 0x00000010, 0x80001fb9, 0x00000010, 
+       0x00001fba, 0x80000399, 0x00000000, 0x00000391, 
+       0x80000399, 0x00000010, 0x80001fbc, 0x00000010, 
+       0x00000386, 0x80000399, 0x00000010, 0x00000391, 
+       0x80000342, 0x00000010, 0x00000391, 0x00000342, 
+       0x80000399, 0x00000010, 0x00000391, 0x80000399, 
+       0x00000010, 0x80000399, 0x00000010, 0x00001fca, 
+       0x80000399, 0x00000000, 0x00000397, 0x80000399, 
+       0x00000010, 0x80001fcc, 0x00000010, 0x00000389, 
+       0x80000399, 0x00000010, 0x00000397, 0x80000342, 
+       0x00000010, 0x00000397, 0x00000342, 0x80000399, 
+       0x00000010, 0x00000397, 0x80000399, 0x00000010, 
+       0x80001fd8, 0x00000010, 0x80001fd9, 0x00000010, 
+       0x00000399, 0x00000308, 0x80000300, 0x00000010, 
+       0x00000399, 0x00000308, 0x80000301, 0x00000010, 
+       0x00000399, 0x80000342, 0x00000010, 0x00000399, 
+       0x00000308, 0x80000342, 0x00000010, 0x80001fe8, 
+       0x00000010, 0x80001fe9, 0x00000010, 0x000003a5, 
+       0x00000308, 0x80000300, 0x00000010, 0x000003a5, 
+       0x00000308, 0x80000301, 0x00000010, 0x000003a1, 
+       0x80000313, 0x00000010, 0x80001fec, 0x00000010, 
+       0x000003a5, 0x80000342, 0x00000010, 0x000003a5, 
+       0x00000308, 0x80000342, 0x00000010, 0x00001ffa, 
+       0x80000399, 0x00000000, 0x000003a9, 0x80000399, 
+       0x00000010, 0x80001ffc, 0x00000010, 0x0000038f, 
+       0x80000399, 0x00000010, 0x000003a9, 0x80000342, 
+       0x00000010, 0x000003a9, 0x00000342, 0x80000399, 
+       0x00000010, 0x000003a9, 0x80000399, 0x00000010, 
+       0x80002160, 0x00000010, 0x80002161, 0x00000010, 
+       0x80002162, 0x00000010, 0x80002163, 0x00000010, 
+       0x80002164, 0x00000010, 0x80002165, 0x00000010, 
+       0x80002166, 0x00000010, 0x80002167, 0x00000010, 
+       0x80002168, 0x00000010, 0x80002169, 0x00000010, 
+       0x8000216a, 0x00000010, 0x8000216b, 0x00000010, 
+       0x8000216c, 0x00000010, 0x8000216d, 0x00000010, 
+       0x8000216e, 0x00000010, 0x8000216f, 0x00000010, 
+       0x800024b6, 0x00000010, 0x800024b7, 0x00000010, 
+       0x800024b8, 0x00000010, 0x800024b9, 0x00000010, 
+       0x800024ba, 0x00000010, 0x800024bb, 0x00000010, 
+       0x800024bc, 0x00000010, 0x800024bd, 0x00000010, 
+       0x800024be, 0x00000010, 0x800024bf, 0x00000010, 
+       0x800024c0, 0x00000010, 0x800024c1, 0x00000010, 
+       0x800024c2, 0x00000010, 0x800024c3, 0x00000010, 
+       0x800024c4, 0x00000010, 0x800024c5, 0x00000010, 
+       0x800024c6, 0x00000010, 0x800024c7, 0x00000010, 
+       0x800024c8, 0x00000010, 0x800024c9, 0x00000010, 
+       0x800024ca, 0x00000010, 0x800024cb, 0x00000010, 
+       0x800024cc, 0x00000010, 0x800024cd, 0x00000010, 
+       0x800024ce, 0x00000010, 0x800024cf, 0x00000010, 
+       0x00000046, 0x80000046, 0x00000010, 0x00000046, 
+       0x80000049, 0x00000010, 0x00000046, 0x8000004c, 
+       0x00000010, 0x00000046, 0x00000046, 0x80000049, 
+       0x00000010, 0x00000046, 0x00000046, 0x8000004c, 
+       0x00000010, 0x00000053, 0x80000054, 0x00000010, 
+       0x00000053, 0x80000054, 0x00000010, 0x00000544, 
+       0x80000546, 0x00000010, 0x00000544, 0x80000535, 
+       0x00000010, 0x00000544, 0x8000053b, 0x00000010, 
+       0x0000054e, 0x80000546, 0x00000010, 0x00000544, 
+       0x8000053d, 0x00000010, 0x8000ff21, 0x00000010, 
+       0x8000ff22, 0x00000010, 0x8000ff23, 0x00000010, 
+       0x8000ff24, 0x00000010, 0x8000ff25, 0x00000010, 
+       0x8000ff26, 0x00000010, 0x8000ff27, 0x00000010, 
+       0x8000ff28, 0x00000010, 0x8000ff29, 0x00000010, 
+       0x8000ff2a, 0x00000010, 0x8000ff2b, 0x00000010, 
+       0x8000ff2c, 0x00000010, 0x8000ff2d, 0x00000010, 
+       0x8000ff2e, 0x00000010, 0x8000ff2f, 0x00000010, 
+       0x8000ff30, 0x00000010, 0x8000ff31, 0x00000010, 
+       0x8000ff32, 0x00000010, 0x8000ff33, 0x00000010, 
+       0x8000ff34, 0x00000010, 0x8000ff35, 0x00000010, 
+       0x8000ff36, 0x00000010, 0x8000ff37, 0x00000010, 
+       0x8000ff38, 0x00000010, 0x8000ff39, 0x00000010, 
+       0x8000ff3a, 0x00000010, 0x80010400, 0x00000010, 
+       0x80010401, 0x00000010, 0x80010402, 0x00000010, 
+       0x80010403, 0x00000010, 0x80010404, 0x00000010, 
+       0x80010405, 0x00000010, 0x80010406, 0x00000010, 
+       0x80010407, 0x00000010, 0x80010408, 0x00000010, 
+       0x80010409, 0x00000010, 0x8001040a, 0x00000010, 
+       0x8001040b, 0x00000010, 0x8001040c, 0x00000010, 
+       0x8001040d, 0x00000010, 0x8001040e, 0x00000010, 
+       0x8001040f, 0x00000010, 0x80010410, 0x00000010, 
+       0x80010411, 0x00000010, 0x80010412, 0x00000010, 
+       0x80010413, 0x00000010, 0x80010414, 0x00000010, 
+       0x80010415, 0x00000010, 0x80010416, 0x00000010, 
+       0x80010417, 0x00000010, 0x80010418, 0x00000010, 
+       0x80010419, 0x00000010, 0x8001041a, 0x00000010, 
+       0x8001041b, 0x00000010, 0x8001041c, 0x00000010, 
+       0x8001041d, 0x00000010, 0x8001041e, 0x00000010, 
+       0x8001041f, 0x00000010, 0x80010420, 0x00000010, 
+       0x80010421, 0x00000010, 0x80010422, 0x00000010, 
+       0x80010423, 0x00000010, 0x80010424, 0x00000010, 
+       0x80010425, 
+};
+
+static const unsigned long v310_tolower_seq[] = {
+       0x00000000, 0x00000010, 0x80000061, 0x00000010, 
+       0x80000062, 0x00000010, 0x80000063, 0x00000010, 
+       0x80000064, 0x00000010, 0x80000065, 0x00000010, 
+       0x80000066, 0x00000010, 0x80000067, 0x00000010, 
+       0x80000068, 0x00000010, 0x80000069, 0x00000010, 
+       0x8000006a, 0x00000010, 0x8000006b, 0x00000010, 
+       0x8000006c, 0x00000010, 0x8000006d, 0x00000010, 
+       0x8000006e, 0x00000010, 0x8000006f, 0x00000010, 
+       0x80000070, 0x00000010, 0x80000071, 0x00000010, 
+       0x80000072, 0x00000010, 0x80000073, 0x00000010, 
+       0x80000074, 0x00000010, 0x80000075, 0x00000010, 
+       0x80000076, 0x00000010, 0x80000077, 0x00000010, 
+       0x80000078, 0x00000010, 0x80000079, 0x00000010, 
+       0x8000007a, 0x00000010, 0x800000e0, 0x00000010, 
+       0x800000e1, 0x00000010, 0x800000e2, 0x00000010, 
+       0x800000e3, 0x00000010, 0x800000e4, 0x00000010, 
+       0x800000e5, 0x00000010, 0x800000e6, 0x00000010, 
+       0x800000e7, 0x00000010, 0x800000e8, 0x00000010, 
+       0x800000e9, 0x00000010, 0x800000ea, 0x00000010, 
+       0x800000eb, 0x00000010, 0x800000ec, 0x00000010, 
+       0x800000ed, 0x00000010, 0x800000ee, 0x00000010, 
+       0x800000ef, 0x00000010, 0x800000f0, 0x00000010, 
+       0x800000f1, 0x00000010, 0x800000f2, 0x00000010, 
+       0x800000f3, 0x00000010, 0x800000f4, 0x00000010, 
+       0x800000f5, 0x00000010, 0x800000f6, 0x00000010, 
+       0x800000f8, 0x00000010, 0x800000f9, 0x00000010, 
+       0x800000fa, 0x00000010, 0x800000fb, 0x00000010, 
+       0x800000fc, 0x00000010, 0x800000fd, 0x00000010, 
+       0x800000fe, 0x00000010, 0x80000101, 0x00000010, 
+       0x80000103, 0x00000010, 0x80000105, 0x00000010, 
+       0x80000107, 0x00000010, 0x80000109, 0x00000010, 
+       0x8000010b, 0x00000010, 0x8000010d, 0x00000010, 
+       0x8000010f, 0x00000010, 0x80000111, 0x00000010, 
+       0x80000113, 0x00000010, 0x80000115, 0x00000010, 
+       0x80000117, 0x00000010, 0x80000119, 0x00000010, 
+       0x8000011b, 0x00000010, 0x8000011d, 0x00000010, 
+       0x8000011f, 0x00000010, 0x80000121, 0x00000010, 
+       0x80000123, 0x00000010, 0x80000125, 0x00000010, 
+       0x80000127, 0x00000010, 0x80000129, 0x00000010, 
+       0x8000012b, 0x00000010, 0x8000012d, 0x00000010, 
+       0x8000012f, 0x00000010, 0x80000069, 0x00000010, 
+       0x80000133, 0x00000010, 0x80000135, 0x00000010, 
+       0x80000137, 0x00000010, 0x8000013a, 0x00000010, 
+       0x8000013c, 0x00000010, 0x8000013e, 0x00000010, 
+       0x80000140, 0x00000010, 0x80000142, 0x00000010, 
+       0x80000144, 0x00000010, 0x80000146, 0x00000010, 
+       0x80000148, 0x00000010, 0x8000014b, 0x00000010, 
+       0x8000014d, 0x00000010, 0x8000014f, 0x00000010, 
+       0x80000151, 0x00000010, 0x80000153, 0x00000010, 
+       0x80000155, 0x00000010, 0x80000157, 0x00000010, 
+       0x80000159, 0x00000010, 0x8000015b, 0x00000010, 
+       0x8000015d, 0x00000010, 0x8000015f, 0x00000010, 
+       0x80000161, 0x00000010, 0x80000163, 0x00000010, 
+       0x80000165, 0x00000010, 0x80000167, 0x00000010, 
+       0x80000169, 0x00000010, 0x8000016b, 0x00000010, 
+       0x8000016d, 0x00000010, 0x8000016f, 0x00000010, 
+       0x80000171, 0x00000010, 0x80000173, 0x00000010, 
+       0x80000175, 0x00000010, 0x80000177, 0x00000010, 
+       0x800000ff, 0x00000010, 0x8000017a, 0x00000010, 
+       0x8000017c, 0x00000010, 0x8000017e, 0x00000010, 
+       0x80000253, 0x00000010, 0x80000183, 0x00000010, 
+       0x80000185, 0x00000010, 0x80000254, 0x00000010, 
+       0x80000188, 0x00000010, 0x80000256, 0x00000010, 
+       0x80000257, 0x00000010, 0x8000018c, 0x00000010, 
+       0x800001dd, 0x00000010, 0x80000259, 0x00000010, 
+       0x8000025b, 0x00000010, 0x80000192, 0x00000010, 
+       0x80000260, 0x00000010, 0x80000263, 0x00000010, 
+       0x80000269, 0x00000010, 0x80000268, 0x00000010, 
+       0x80000199, 0x00000010, 0x8000026f, 0x00000010, 
+       0x80000272, 0x00000010, 0x80000275, 0x00000010, 
+       0x800001a1, 0x00000010, 0x800001a3, 0x00000010, 
+       0x800001a5, 0x00000010, 0x80000280, 0x00000010, 
+       0x800001a8, 0x00000010, 0x80000283, 0x00000010, 
+       0x800001ad, 0x00000010, 0x80000288, 0x00000010, 
+       0x800001b0, 0x00000010, 0x8000028a, 0x00000010, 
+       0x8000028b, 0x00000010, 0x800001b4, 0x00000010, 
+       0x800001b6, 0x00000010, 0x80000292, 0x00000010, 
+       0x800001b9, 0x00000010, 0x800001bd, 0x00000010, 
+       0x800001c6, 0x00000010, 0x800001c6, 0x00000010, 
+       0x800001c9, 0x00000010, 0x800001c9, 0x00000010, 
+       0x800001cc, 0x00000010, 0x800001cc, 0x00000010, 
+       0x800001ce, 0x00000010, 0x800001d0, 0x00000010, 
+       0x800001d2, 0x00000010, 0x800001d4, 0x00000010, 
+       0x800001d6, 0x00000010, 0x800001d8, 0x00000010, 
+       0x800001da, 0x00000010, 0x800001dc, 0x00000010, 
+       0x800001df, 0x00000010, 0x800001e1, 0x00000010, 
+       0x800001e3, 0x00000010, 0x800001e5, 0x00000010, 
+       0x800001e7, 0x00000010, 0x800001e9, 0x00000010, 
+       0x800001eb, 0x00000010, 0x800001ed, 0x00000010, 
+       0x800001ef, 0x00000010, 0x800001f3, 0x00000010, 
+       0x800001f3, 0x00000010, 0x800001f5, 0x00000010, 
+       0x80000195, 0x00000010, 0x800001bf, 0x00000010, 
+       0x800001f9, 0x00000010, 0x800001fb, 0x00000010, 
+       0x800001fd, 0x00000010, 0x800001ff, 0x00000010, 
+       0x80000201, 0x00000010, 0x80000203, 0x00000010, 
+       0x80000205, 0x00000010, 0x80000207, 0x00000010, 
+       0x80000209, 0x00000010, 0x8000020b, 0x00000010, 
+       0x8000020d, 0x00000010, 0x8000020f, 0x00000010, 
+       0x80000211, 0x00000010, 0x80000213, 0x00000010, 
+       0x80000215, 0x00000010, 0x80000217, 0x00000010, 
+       0x80000219, 0x00000010, 0x8000021b, 0x00000010, 
+       0x8000021d, 0x00000010, 0x8000021f, 0x00000010, 
+       0x80000223, 0x00000010, 0x80000225, 0x00000010, 
+       0x80000227, 0x00000010, 0x80000229, 0x00000010, 
+       0x8000022b, 0x00000010, 0x8000022d, 0x00000010, 
+       0x8000022f, 0x00000010, 0x80000231, 0x00000010, 
+       0x80000233, 0x00000010, 0x800003ac, 0x00000010, 
+       0x800003ad, 0x00000010, 0x800003ae, 0x00000010, 
+       0x800003af, 0x00000010, 0x800003cc, 0x00000010, 
+       0x800003cd, 0x00000010, 0x800003ce, 0x00000010, 
+       0x800003b1, 0x00000010, 0x800003b2, 0x00000010, 
+       0x800003b3, 0x00000010, 0x800003b4, 0x00000010, 
+       0x800003b5, 0x00000010, 0x800003b6, 0x00000010, 
+       0x800003b7, 0x00000010, 0x800003b8, 0x00000010, 
+       0x800003b9, 0x00000010, 0x800003ba, 0x00000010, 
+       0x800003bb, 0x00000010, 0x800003bc, 0x00000010, 
+       0x800003bd, 0x00000010, 0x800003be, 0x00000010, 
+       0x800003bf, 0x00000010, 0x800003c0, 0x00000010, 
+       0x800003c1, 0x00000001, 0x800003c2, 0x00000010, 
+       0x800003c3, 0x00000010, 0x800003c4, 0x00000010, 
+       0x800003c5, 0x00000010, 0x800003c6, 0x00000010, 
+       0x800003c7, 0x00000010, 0x800003c8, 0x00000010, 
+       0x800003c9, 0x00000010, 0x800003ca, 0x00000010, 
+       0x800003cb, 0x00000010, 0x800003db, 0x00000010, 
+       0x800003dd, 0x00000010, 0x800003df, 0x00000010, 
+       0x800003e1, 0x00000010, 0x800003e3, 0x00000010, 
+       0x800003e5, 0x00000010, 0x800003e7, 0x00000010, 
+       0x800003e9, 0x00000010, 0x800003eb, 0x00000010, 
+       0x800003ed, 0x00000010, 0x800003ef, 0x00000010, 
+       0x800003b8, 0x00000010, 0x80000450, 0x00000010, 
+       0x80000451, 0x00000010, 0x80000452, 0x00000010, 
+       0x80000453, 0x00000010, 0x80000454, 0x00000010, 
+       0x80000455, 0x00000010, 0x80000456, 0x00000010, 
+       0x80000457, 0x00000010, 0x80000458, 0x00000010, 
+       0x80000459, 0x00000010, 0x8000045a, 0x00000010, 
+       0x8000045b, 0x00000010, 0x8000045c, 0x00000010, 
+       0x8000045d, 0x00000010, 0x8000045e, 0x00000010, 
+       0x8000045f, 0x00000010, 0x80000430, 0x00000010, 
+       0x80000431, 0x00000010, 0x80000432, 0x00000010, 
+       0x80000433, 0x00000010, 0x80000434, 0x00000010, 
+       0x80000435, 0x00000010, 0x80000436, 0x00000010, 
+       0x80000437, 0x00000010, 0x80000438, 0x00000010, 
+       0x80000439, 0x00000010, 0x8000043a, 0x00000010, 
+       0x8000043b, 0x00000010, 0x8000043c, 0x00000010, 
+       0x8000043d, 0x00000010, 0x8000043e, 0x00000010, 
+       0x8000043f, 0x00000010, 0x80000440, 0x00000010, 
+       0x80000441, 0x00000010, 0x80000442, 0x00000010, 
+       0x80000443, 0x00000010, 0x80000444, 0x00000010, 
+       0x80000445, 0x00000010, 0x80000446, 0x00000010, 
+       0x80000447, 0x00000010, 0x80000448, 0x00000010, 
+       0x80000449, 0x00000010, 0x8000044a, 0x00000010, 
+       0x8000044b, 0x00000010, 0x8000044c, 0x00000010, 
+       0x8000044d, 0x00000010, 0x8000044e, 0x00000010, 
+       0x8000044f, 0x00000010, 0x80000461, 0x00000010, 
+       0x80000463, 0x00000010, 0x80000465, 0x00000010, 
+       0x80000467, 0x00000010, 0x80000469, 0x00000010, 
+       0x8000046b, 0x00000010, 0x8000046d, 0x00000010, 
+       0x8000046f, 0x00000010, 0x80000471, 0x00000010, 
+       0x80000473, 0x00000010, 0x80000475, 0x00000010, 
+       0x80000477, 0x00000010, 0x80000479, 0x00000010, 
+       0x8000047b, 0x00000010, 0x8000047d, 0x00000010, 
+       0x8000047f, 0x00000010, 0x80000481, 0x00000010, 
+       0x8000048d, 0x00000010, 0x8000048f, 0x00000010, 
+       0x80000491, 0x00000010, 0x80000493, 0x00000010, 
+       0x80000495, 0x00000010, 0x80000497, 0x00000010, 
+       0x80000499, 0x00000010, 0x8000049b, 0x00000010, 
+       0x8000049d, 0x00000010, 0x8000049f, 0x00000010, 
+       0x800004a1, 0x00000010, 0x800004a3, 0x00000010, 
+       0x800004a5, 0x00000010, 0x800004a7, 0x00000010, 
+       0x800004a9, 0x00000010, 0x800004ab, 0x00000010, 
+       0x800004ad, 0x00000010, 0x800004af, 0x00000010, 
+       0x800004b1, 0x00000010, 0x800004b3, 0x00000010, 
+       0x800004b5, 0x00000010, 0x800004b7, 0x00000010, 
+       0x800004b9, 0x00000010, 0x800004bb, 0x00000010, 
+       0x800004bd, 0x00000010, 0x800004bf, 0x00000010, 
+       0x800004c2, 0x00000010, 0x800004c4, 0x00000010, 
+       0x800004c8, 0x00000010, 0x800004cc, 0x00000010, 
+       0x800004d1, 0x00000010, 0x800004d3, 0x00000010, 
+       0x800004d5, 0x00000010, 0x800004d7, 0x00000010, 
+       0x800004d9, 0x00000010, 0x800004db, 0x00000010, 
+       0x800004dd, 0x00000010, 0x800004df, 0x00000010, 
+       0x800004e1, 0x00000010, 0x800004e3, 0x00000010, 
+       0x800004e5, 0x00000010, 0x800004e7, 0x00000010, 
+       0x800004e9, 0x00000010, 0x800004eb, 0x00000010, 
+       0x800004ed, 0x00000010, 0x800004ef, 0x00000010, 
+       0x800004f1, 0x00000010, 0x800004f3, 0x00000010, 
+       0x800004f5, 0x00000010, 0x800004f9, 0x00000010, 
+       0x80000561, 0x00000010, 0x80000562, 0x00000010, 
+       0x80000563, 0x00000010, 0x80000564, 0x00000010, 
+       0x80000565, 0x00000010, 0x80000566, 0x00000010, 
+       0x80000567, 0x00000010, 0x80000568, 0x00000010, 
+       0x80000569, 0x00000010, 0x8000056a, 0x00000010, 
+       0x8000056b, 0x00000010, 0x8000056c, 0x00000010, 
+       0x8000056d, 0x00000010, 0x8000056e, 0x00000010, 
+       0x8000056f, 0x00000010, 0x80000570, 0x00000010, 
+       0x80000571, 0x00000010, 0x80000572, 0x00000010, 
+       0x80000573, 0x00000010, 0x80000574, 0x00000010, 
+       0x80000575, 0x00000010, 0x80000576, 0x00000010, 
+       0x80000577, 0x00000010, 0x80000578, 0x00000010, 
+       0x80000579, 0x00000010, 0x8000057a, 0x00000010, 
+       0x8000057b, 0x00000010, 0x8000057c, 0x00000010, 
+       0x8000057d, 0x00000010, 0x8000057e, 0x00000010, 
+       0x8000057f, 0x00000010, 0x80000580, 0x00000010, 
+       0x80000581, 0x00000010, 0x80000582, 0x00000010, 
+       0x80000583, 0x00000010, 0x80000584, 0x00000010, 
+       0x80000585, 0x00000010, 0x80000586, 0x00000010, 
+       0x80001e01, 0x00000010, 0x80001e03, 0x00000010, 
+       0x80001e05, 0x00000010, 0x80001e07, 0x00000010, 
+       0x80001e09, 0x00000010, 0x80001e0b, 0x00000010, 
+       0x80001e0d, 0x00000010, 0x80001e0f, 0x00000010, 
+       0x80001e11, 0x00000010, 0x80001e13, 0x00000010, 
+       0x80001e15, 0x00000010, 0x80001e17, 0x00000010, 
+       0x80001e19, 0x00000010, 0x80001e1b, 0x00000010, 
+       0x80001e1d, 0x00000010, 0x80001e1f, 0x00000010, 
+       0x80001e21, 0x00000010, 0x80001e23, 0x00000010, 
+       0x80001e25, 0x00000010, 0x80001e27, 0x00000010, 
+       0x80001e29, 0x00000010, 0x80001e2b, 0x00000010, 
+       0x80001e2d, 0x00000010, 0x80001e2f, 0x00000010, 
+       0x80001e31, 0x00000010, 0x80001e33, 0x00000010, 
+       0x80001e35, 0x00000010, 0x80001e37, 0x00000010, 
+       0x80001e39, 0x00000010, 0x80001e3b, 0x00000010, 
+       0x80001e3d, 0x00000010, 0x80001e3f, 0x00000010, 
+       0x80001e41, 0x00000010, 0x80001e43, 0x00000010, 
+       0x80001e45, 0x00000010, 0x80001e47, 0x00000010, 
+       0x80001e49, 0x00000010, 0x80001e4b, 0x00000010, 
+       0x80001e4d, 0x00000010, 0x80001e4f, 0x00000010, 
+       0x80001e51, 0x00000010, 0x80001e53, 0x00000010, 
+       0x80001e55, 0x00000010, 0x80001e57, 0x00000010, 
+       0x80001e59, 0x00000010, 0x80001e5b, 0x00000010, 
+       0x80001e5d, 0x00000010, 0x80001e5f, 0x00000010, 
+       0x80001e61, 0x00000010, 0x80001e63, 0x00000010, 
+       0x80001e65, 0x00000010, 0x80001e67, 0x00000010, 
+       0x80001e69, 0x00000010, 0x80001e6b, 0x00000010, 
+       0x80001e6d, 0x00000010, 0x80001e6f, 0x00000010, 
+       0x80001e71, 0x00000010, 0x80001e73, 0x00000010, 
+       0x80001e75, 0x00000010, 0x80001e77, 0x00000010, 
+       0x80001e79, 0x00000010, 0x80001e7b, 0x00000010, 
+       0x80001e7d, 0x00000010, 0x80001e7f, 0x00000010, 
+       0x80001e81, 0x00000010, 0x80001e83, 0x00000010, 
+       0x80001e85, 0x00000010, 0x80001e87, 0x00000010, 
+       0x80001e89, 0x00000010, 0x80001e8b, 0x00000010, 
+       0x80001e8d, 0x00000010, 0x80001e8f, 0x00000010, 
+       0x80001e91, 0x00000010, 0x80001e93, 0x00000010, 
+       0x80001e95, 0x00000010, 0x80001ea1, 0x00000010, 
+       0x80001ea3, 0x00000010, 0x80001ea5, 0x00000010, 
+       0x80001ea7, 0x00000010, 0x80001ea9, 0x00000010, 
+       0x80001eab, 0x00000010, 0x80001ead, 0x00000010, 
+       0x80001eaf, 0x00000010, 0x80001eb1, 0x00000010, 
+       0x80001eb3, 0x00000010, 0x80001eb5, 0x00000010, 
+       0x80001eb7, 0x00000010, 0x80001eb9, 0x00000010, 
+       0x80001ebb, 0x00000010, 0x80001ebd, 0x00000010, 
+       0x80001ebf, 0x00000010, 0x80001ec1, 0x00000010, 
+       0x80001ec3, 0x00000010, 0x80001ec5, 0x00000010, 
+       0x80001ec7, 0x00000010, 0x80001ec9, 0x00000010, 
+       0x80001ecb, 0x00000010, 0x80001ecd, 0x00000010, 
+       0x80001ecf, 0x00000010, 0x80001ed1, 0x00000010, 
+       0x80001ed3, 0x00000010, 0x80001ed5, 0x00000010, 
+       0x80001ed7, 0x00000010, 0x80001ed9, 0x00000010, 
+       0x80001edb, 0x00000010, 0x80001edd, 0x00000010, 
+       0x80001edf, 0x00000010, 0x80001ee1, 0x00000010, 
+       0x80001ee3, 0x00000010, 0x80001ee5, 0x00000010, 
+       0x80001ee7, 0x00000010, 0x80001ee9, 0x00000010, 
+       0x80001eeb, 0x00000010, 0x80001eed, 0x00000010, 
+       0x80001eef, 0x00000010, 0x80001ef1, 0x00000010, 
+       0x80001ef3, 0x00000010, 0x80001ef5, 0x00000010, 
+       0x80001ef7, 0x00000010, 0x80001ef9, 0x00000010, 
+       0x80001f00, 0x00000010, 0x80001f01, 0x00000010, 
+       0x80001f02, 0x00000010, 0x80001f03, 0x00000010, 
+       0x80001f04, 0x00000010, 0x80001f05, 0x00000010, 
+       0x80001f06, 0x00000010, 0x80001f07, 0x00000010, 
+       0x80001f10, 0x00000010, 0x80001f11, 0x00000010, 
+       0x80001f12, 0x00000010, 0x80001f13, 0x00000010, 
+       0x80001f14, 0x00000010, 0x80001f15, 0x00000010, 
+       0x80001f20, 0x00000010, 0x80001f21, 0x00000010, 
+       0x80001f22, 0x00000010, 0x80001f23, 0x00000010, 
+       0x80001f24, 0x00000010, 0x80001f25, 0x00000010, 
+       0x80001f26, 0x00000010, 0x80001f27, 0x00000010, 
+       0x80001f30, 0x00000010, 0x80001f31, 0x00000010, 
+       0x80001f32, 0x00000010, 0x80001f33, 0x00000010, 
+       0x80001f34, 0x00000010, 0x80001f35, 0x00000010, 
+       0x80001f36, 0x00000010, 0x80001f37, 0x00000010, 
+       0x80001f40, 0x00000010, 0x80001f41, 0x00000010, 
+       0x80001f42, 0x00000010, 0x80001f43, 0x00000010, 
+       0x80001f44, 0x00000010, 0x80001f45, 0x00000010, 
+       0x80001f51, 0x00000010, 0x80001f53, 0x00000010, 
+       0x80001f55, 0x00000010, 0x80001f57, 0x00000010, 
+       0x80001f60, 0x00000010, 0x80001f61, 0x00000010, 
+       0x80001f62, 0x00000010, 0x80001f63, 0x00000010, 
+       0x80001f64, 0x00000010, 0x80001f65, 0x00000010, 
+       0x80001f66, 0x00000010, 0x80001f67, 0x00000000, 
+       0x80001f80, 0x00000010, 0x80001f80, 0x00000000, 
+       0x80001f81, 0x00000010, 0x80001f81, 0x00000000, 
+       0x80001f82, 0x00000010, 0x80001f82, 0x00000000, 
+       0x80001f83, 0x00000010, 0x80001f83, 0x00000000, 
+       0x80001f84, 0x00000010, 0x80001f84, 0x00000000, 
+       0x80001f85, 0x00000010, 0x80001f85, 0x00000000, 
+       0x80001f86, 0x00000010, 0x80001f86, 0x00000000, 
+       0x80001f87, 0x00000010, 0x80001f87, 0x00000000, 
+       0x80001f90, 0x00000010, 0x80001f90, 0x00000000, 
+       0x80001f91, 0x00000010, 0x80001f91, 0x00000000, 
+       0x80001f92, 0x00000010, 0x80001f92, 0x00000000, 
+       0x80001f93, 0x00000010, 0x80001f93, 0x00000000, 
+       0x80001f94, 0x00000010, 0x80001f94, 0x00000000, 
+       0x80001f95, 0x00000010, 0x80001f95, 0x00000000, 
+       0x80001f96, 0x00000010, 0x80001f96, 0x00000000, 
+       0x80001f97, 0x00000010, 0x80001f97, 0x00000000, 
+       0x80001fa0, 0x00000010, 0x80001fa0, 0x00000000, 
+       0x80001fa1, 0x00000010, 0x80001fa1, 0x00000000, 
+       0x80001fa2, 0x00000010, 0x80001fa2, 0x00000000, 
+       0x80001fa3, 0x00000010, 0x80001fa3, 0x00000000, 
+       0x80001fa4, 0x00000010, 0x80001fa4, 0x00000000, 
+       0x80001fa5, 0x00000010, 0x80001fa5, 0x00000000, 
+       0x80001fa6, 0x00000010, 0x80001fa6, 0x00000000, 
+       0x80001fa7, 0x00000010, 0x80001fa7, 0x00000010, 
+       0x80001fb0, 0x00000010, 0x80001fb1, 0x00000010, 
+       0x80001f70, 0x00000010, 0x80001f71, 0x00000000, 
+       0x80001fb3, 0x00000010, 0x80001fb3, 0x00000010, 
+       0x80001f72, 0x00000010, 0x80001f73, 0x00000010, 
+       0x80001f74, 0x00000010, 0x80001f75, 0x00000000, 
+       0x80001fc3, 0x00000010, 0x80001fc3, 0x00000010, 
+       0x80001fd0, 0x00000010, 0x80001fd1, 0x00000010, 
+       0x80001f76, 0x00000010, 0x80001f77, 0x00000010, 
+       0x80001fe0, 0x00000010, 0x80001fe1, 0x00000010, 
+       0x80001f7a, 0x00000010, 0x80001f7b, 0x00000010, 
+       0x80001fe5, 0x00000010, 0x80001f78, 0x00000010, 
+       0x80001f79, 0x00000010, 0x80001f7c, 0x00000010, 
+       0x80001f7d, 0x00000000, 0x80001ff3, 0x00000010, 
+       0x80001ff3, 0x00000010, 0x800003c9, 0x00000010, 
+       0x8000006b, 0x00000010, 0x800000e5, 0x00000010, 
+       0x80002170, 0x00000010, 0x80002171, 0x00000010, 
+       0x80002172, 0x00000010, 0x80002173, 0x00000010, 
+       0x80002174, 0x00000010, 0x80002175, 0x00000010, 
+       0x80002176, 0x00000010, 0x80002177, 0x00000010, 
+       0x80002178, 0x00000010, 0x80002179, 0x00000010, 
+       0x8000217a, 0x00000010, 0x8000217b, 0x00000010, 
+       0x8000217c, 0x00000010, 0x8000217d, 0x00000010, 
+       0x8000217e, 0x00000010, 0x8000217f, 0x00000010, 
+       0x800024d0, 0x00000010, 0x800024d1, 0x00000010, 
+       0x800024d2, 0x00000010, 0x800024d3, 0x00000010, 
+       0x800024d4, 0x00000010, 0x800024d5, 0x00000010, 
+       0x800024d6, 0x00000010, 0x800024d7, 0x00000010, 
+       0x800024d8, 0x00000010, 0x800024d9, 0x00000010, 
+       0x800024da, 0x00000010, 0x800024db, 0x00000010, 
+       0x800024dc, 0x00000010, 0x800024dd, 0x00000010, 
+       0x800024de, 0x00000010, 0x800024df, 0x00000010, 
+       0x800024e0, 0x00000010, 0x800024e1, 0x00000010, 
+       0x800024e2, 0x00000010, 0x800024e3, 0x00000010, 
+       0x800024e4, 0x00000010, 0x800024e5, 0x00000010, 
+       0x800024e6, 0x00000010, 0x800024e7, 0x00000010, 
+       0x800024e8, 0x00000010, 0x800024e9, 0x00000010, 
+       0x8000ff41, 0x00000010, 0x8000ff42, 0x00000010, 
+       0x8000ff43, 0x00000010, 0x8000ff44, 0x00000010, 
+       0x8000ff45, 0x00000010, 0x8000ff46, 0x00000010, 
+       0x8000ff47, 0x00000010, 0x8000ff48, 0x00000010, 
+       0x8000ff49, 0x00000010, 0x8000ff4a, 0x00000010, 
+       0x8000ff4b, 0x00000010, 0x8000ff4c, 0x00000010, 
+       0x8000ff4d, 0x00000010, 0x8000ff4e, 0x00000010, 
+       0x8000ff4f, 0x00000010, 0x8000ff50, 0x00000010, 
+       0x8000ff51, 0x00000010, 0x8000ff52, 0x00000010, 
+       0x8000ff53, 0x00000010, 0x8000ff54, 0x00000010, 
+       0x8000ff55, 0x00000010, 0x8000ff56, 0x00000010, 
+       0x8000ff57, 0x00000010, 0x8000ff58, 0x00000010, 
+       0x8000ff59, 0x00000010, 0x8000ff5a, 0x00000010, 
+       0x80010428, 0x00000010, 0x80010429, 0x00000010, 
+       0x8001042a, 0x00000010, 0x8001042b, 0x00000010, 
+       0x8001042c, 0x00000010, 0x8001042d, 0x00000010, 
+       0x8001042e, 0x00000010, 0x8001042f, 0x00000010, 
+       0x80010430, 0x00000010, 0x80010431, 0x00000010, 
+       0x80010432, 0x00000010, 0x80010433, 0x00000010, 
+       0x80010434, 0x00000010, 0x80010435, 0x00000010, 
+       0x80010436, 0x00000010, 0x80010437, 0x00000010, 
+       0x80010438, 0x00000010, 0x80010439, 0x00000010, 
+       0x8001043a, 0x00000010, 0x8001043b, 0x00000010, 
+       0x8001043c, 0x00000010, 0x8001043d, 0x00000010, 
+       0x8001043e, 0x00000010, 0x8001043f, 0x00000010, 
+       0x80010440, 0x00000010, 0x80010441, 0x00000010, 
+       0x80010442, 0x00000010, 0x80010443, 0x00000010, 
+       0x80010444, 0x00000010, 0x80010445, 0x00000010, 
+       0x80010446, 0x00000010, 0x80010447, 0x00000010, 
+       0x80010448, 0x00000010, 0x80010449, 0x00000010, 
+       0x8001044a, 0x00000010, 0x8001044b, 0x00000010, 
+       0x8001044c, 0x00000010, 0x8001044d, 
+};
+
+
+/*
+ * Cased characters and non-spacing marks (for casemap context)
+ */
+
+#define CASEMAP_CTX_BITS_0     9
+#define CASEMAP_CTX_BITS_1     7
+#define CASEMAP_CTX_BITS_2     5
+
+#define CTX_CASED      1
+#define CTX_NSM                2
+
+static const unsigned short v310_casemap_ctx_imap[] = {
+         272,   400,   528,   656,   784,   784,   784,   784, 
+         784,   784,   784,   784,   784,   784,   784,   912, 
+        1040,   784,   784,   784,   784,   784,   784,   784, 
+         784,   784,   784,   784,   784,  1168,   784,   784, 
+         784,   784,   784,   784,   784,   784,   784,   784, 
+         784,   784,   784,   784,   784,   784,   784,   784, 
+         784,   784,   784,   784,   784,   784,   784,   784, 
+         784,   784,   784,   784,   784,   784,   784,   784, 
+         784,   784,   784,   784,   784,   784,   784,   784, 
+         784,   784,   784,   784,   784,   784,   784,   784, 
+         784,   784,   784,   784,   784,   784,   784,   784, 
+         784,   784,   784,   784,   784,   784,   784,   784, 
+         784,   784,   784,   784,   784,   784,   784,   784, 
+         784,   784,   784,   784,   784,   784,   784,   784, 
+         784,   784,   784,   784,   784,   784,   784,   784, 
+         784,   784,   784,   784,   784,   784,   784,   784, 
+         784,   784,   784,   784,   784,   784,   784,   784, 
+         784,   784,   784,   784,   784,   784,   784,   784, 
+         784,   784,   784,   784,   784,   784,   784,   784, 
+         784,   784,   784,   784,   784,   784,   784,   784, 
+         784,   784,   784,   784,   784,   784,   784,   784, 
+         784,   784,   784,   784,   784,   784,   784,   784, 
+         784,   784,   784,   784,   784,   784,   784,   784, 
+         784,   784,   784,   784,   784,   784,   784,   784, 
+         784,   784,   784,   784,   784,   784,   784,   784, 
+         784,   784,   784,   784,   784,   784,   784,   784, 
+         784,   784,   784,   784,   784,   784,   784,   784, 
+         784,   784,   784,   784,   784,   784,   784,   784, 
+         784,   784,   784,   784,   784,   784,   784,   784, 
+         784,   784,   784,   784,   784,   784,   784,   784, 
+         784,   784,   784,   784,   784,   784,   784,   784, 
+         784,   784,   784,   784,   784,   784,   784,   784, 
+         784,   784,   784,   784,   784,   784,   784,   784, 
+         784,   784,   784,   784,   784,   784,   784,   784, 
+           0,     0,     1,     1,     0,     2,     3,     3, 
+           4,     4,     4,     4,     4,     5,     6,     4, 
+           4,     7,     8,     4,     4,     9,     0,     0, 
+          10,    10,    11,    12,    13,    14,    15,    16, 
+           4,     4,     4,     4,    17,     4,    18,    19, 
+           0,    20,    21,    22,    23,    24,    25,     0, 
+           0,     0,    26,    27,     0,     0,    28,    29, 
+          30,    31,    32,     0,     0,    33,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+          34,    35,    36,    37,    38,    35,    39,    37, 
+          40,    35,    41,    42,    34,    35,    43,     0, 
+          38,    44,    45,     0,    40,     0,    46,     0, 
+           0,    47,    48,     0,     0,    49,    50,     0, 
+           0,     0,    51,     0,     0,     0,    52,     0, 
+           0,    53,    54,     0,     0,    55,    56,     0, 
+          57,    58,     0,    59,    60,    61,    62,     0, 
+           0,    63,    57,     0,     0,     4,    64,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,    65,    66,     0, 
+           0,     0,     0,     0,     0,    67,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           4,     4,     4,     4,    68,     4,     4,    69, 
+          70,     4,    71,    72,     4,    73,    74,    75, 
+           0,     0,     0,    76,     0,     0,    77,    38, 
+          78,    79,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,    80,     0,     0,    81,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+          82,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,    83,     0,     0,     0,     0,     0,     0, 
+           0,     1,     1,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           4,    84,     9,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,    85,    86,    87,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           4,     4,    88,     4,    89,    90,    91,     4, 
+          92,    93,    94,     4,     4,     4,     4,     4, 
+           4,     4,     4,     4,     4,    95,    96,     5, 
+          88,    88,    97,    97,    98,    98,    99,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+};
+
+static const struct {
+       unsigned char tbl[32];
+} v310_casemap_ctx_table[] = {
+       {{
+        0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
+        0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
+       }},
+       {{
+        0,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1, 
+        1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  0,  0,  0,  0,  0, 
+       }},
+       {{
+        0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  1,  0,  0,  0,  0,  0,  0, 
+        0,  0,  0,  0,  1,  0,  0,  0,  0,  1,  0,  0,  0,  0,  0, 
+       }},
+       {{
+        1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1, 
+        1,  1,  1,  1,  1,  1,  0,  1,  1,  1,  1,  1,  1,  1,  1, 
+       }},
+       {{
+        1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1, 
+        1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1, 
+       }},
+       {{
+        1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1, 
+        1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  0,  1,  1,  1,  1, 
+       }},
+       {{
+        0,  0,  0,  0,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1, 
+        1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1, 
+       }},
+       {{
+        0,  0,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1, 
+        1,  1,  1,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
+       }},
+       {{
+        0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  1, 
+        1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1, 
+       }},
+       {{
+        1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  0,  0,  0, 
+        0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
+       }},
+       {{
+        2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2, 
+        2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2, 
+       }},
+       {{
+        2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  0,  0, 
+        0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
+       }},
+       {{
+        2,  2,  2,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
+        0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
+       }},
+       {{
+        0,  0,  0,  0,  0,  0,  1,  0,  1,  1,  1,  0,  1,  0,  1,  1,  1, 
+        1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1, 
+       }},
+       {{
+        1,  1,  0,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1, 
+        1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1, 
+       }},
+       {{
+        1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  0,  1, 
+        1,  1,  1,  1,  1,  1,  1,  0,  0,  1,  1,  1,  1,  1,  1, 
+       }},
+       {{
+        1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1, 
+        1,  1,  1,  1,  1,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
+       }},
+       {{
+        1,  1,  0,  2,  2,  2,  2,  0,  0,  0,  0,  0,  1,  1,  1,  1,  1, 
+        1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1, 
+       }},
+       {{
+        1,  1,  1,  1,  1,  0,  0,  1,  1,  0,  0,  1,  1,  0,  0,  0,  1, 
+        1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1, 
+       }},
+       {{
+        1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1, 
+        1,  1,  1,  1,  1,  0,  0,  1,  1,  0,  0,  0,  0,  0,  0, 
+       }},
+       {{
+        0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
+        1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1, 
+       }},
+       {{
+        1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1, 
+        1,  1,  1,  1,  1,  1,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
+       }},
+       {{
+        0,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1, 
+        1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1, 
+       }},
+       {{
+        1,  1,  1,  1,  1,  1,  1,  1,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
+        2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2, 
+       }},
+       {{
+        2,  2,  0,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2, 
+        2,  2,  2,  2,  2,  2,  2,  2,  2,  0,  2,  2,  2,  0,  2, 
+       }},
+       {{
+        0,  2,  2,  0,  2,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
+        0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
+       }},
+       {{
+        0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  2,  2,  2,  2,  2,  2, 
+        2,  2,  2,  2,  2,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
+       }},
+       {{
+        0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  2, 
+        0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
+       }},
+       {{
+        0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
+        0,  0,  0,  0,  0,  2,  2,  2,  2,  2,  2,  2,  0,  0,  2, 
+       }},
+       {{
+        2,  2,  2,  2,  2,  0,  0,  2,  2,  0,  2,  2,  2,  2,  0,  0,  0, 
+        0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
+       }},
+       {{
+        0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
+        2,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
+       }},
+       {{
+        0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  2, 
+        2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2, 
+       }},
+       {{
+        2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  0,  0,  0,  0,  0,  0, 
+        0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
+       }},
+       {{
+        0,  0,  0,  0,  0,  0,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2, 
+        0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
+       }},
+       {{
+        0,  2,  2,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
+        0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
+       }},
+       {{
+        0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
+        0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  2,  0,  0,  0, 
+       }},
+       {{
+        0,  2,  2,  2,  2,  2,  2,  2,  2,  0,  0,  0,  0,  2,  0,  0,  0, 
+        2,  2,  2,  2,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
+       }},
+       {{
+        0,  0,  2,  2,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
+        0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
+       }},
+       {{
+        0,  2,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
+        0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
+       }},
+       {{
+        0,  2,  2,  2,  2,  0,  0,  0,  0,  0,  0,  0,  0,  2,  0,  0,  0, 
+        0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
+       }},
+       {{
+        0,  0,  2,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
+        0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
+       }},
+       {{
+        0,  2,  2,  0,  0,  0,  0,  2,  2,  0,  0,  2,  2,  2,  0,  0,  0, 
+        0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
+       }},
+       {{
+        0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  2, 
+        2,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
+       }},
+       {{
+        0,  2,  2,  2,  2,  2,  0,  2,  2,  0,  0,  0,  0,  2,  0,  0,  0, 
+        0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
+       }},
+       {{
+        0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
+        0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  2,  0,  0,  2, 
+       }},
+       {{
+        0,  2,  2,  2,  0,  0,  0,  0,  0,  0,  0,  0,  0,  2,  0,  0,  0, 
+        0,  0,  0,  0,  0,  2,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
+       }},
+       {{
+        2,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  2,  0,  0,  0, 
+        0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
+       }},
+       {{
+        0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
+        0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  2,  2, 
+       }},
+       {{
+        2,  0,  0,  0,  0,  0,  2,  2,  2,  0,  2,  2,  2,  2,  0,  0,  0, 
+        0,  0,  0,  0,  2,  2,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
+       }},
+       {{
+        0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
+        0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  2, 
+       }},
+       {{
+        0,  0,  0,  0,  0,  0,  2,  0,  0,  0,  0,  0,  2,  2,  0,  0,  0, 
+        0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
+       }},
+       {{
+        0,  2,  2,  2,  0,  0,  0,  0,  0,  0,  0,  0,  0,  2,  0,  0,  0, 
+        0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
+       }},
+       {{
+        0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  2,  0,  0,  0,  0,  0,  0, 
+        0,  2,  2,  2,  0,  2,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
+       }},
+       {{
+        0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
+        2,  0,  0,  2,  2,  2,  2,  2,  2,  2,  0,  0,  0,  0,  0, 
+       }},
+       {{
+        0,  0,  0,  0,  0,  0,  0,  2,  2,  2,  2,  2,  2,  2,  2,  0,  0, 
+        0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
+       }},
+       {{
+        0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
+        2,  0,  0,  2,  2,  2,  2,  2,  2,  0,  2,  2,  0,  0,  0, 
+       }},
+       {{
+        0,  0,  0,  0,  0,  0,  0,  0,  2,  2,  2,  2,  2,  2,  0,  0,  0, 
+        0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
+       }},
+       {{
+        0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
+        0,  0,  0,  0,  0,  0,  0,  2,  2,  0,  0,  0,  0,  0,  0, 
+       }},
+       {{
+        0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
+        0,  0,  0,  0,  2,  0,  2,  0,  2,  0,  0,  0,  0,  0,  0, 
+       }},
+       {{
+        0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
+        2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  0, 
+       }},
+       {{
+        2,  2,  2,  2,  2,  0,  2,  2,  0,  0,  0,  0,  0,  0,  0,  0,  2, 
+        2,  2,  2,  2,  2,  2,  2,  0,  2,  2,  2,  2,  2,  2,  2, 
+       }},
+       {{
+        2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2, 
+        2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  0,  0,  0, 
+       }},
+       {{
+        0,  0,  0,  0,  0,  0,  2,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
+        0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
+       }},
+       {{
+        0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  2,  2,  2,  2, 
+        0,  2,  0,  0,  0,  2,  2,  0,  2,  0,  0,  0,  0,  0,  0, 
+       }},
+       {{
+        1,  1,  1,  1,  1,  1,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
+        0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
+       }},
+       {{
+        0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
+        0,  0,  0,  0,  0,  0,  2,  2,  2,  2,  2,  2,  2,  0,  0, 
+       }},
+       {{
+        0,  0,  0,  0,  0,  0,  2,  0,  0,  2,  2,  2,  2,  2,  2,  2,  2, 
+        2,  2,  2,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
+       }},
+       {{
+        0,  0,  0,  0,  0,  0,  0,  0,  0,  2,  0,  0,  0,  0,  0,  0,  0, 
+        0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
+       }},
+       {{
+        1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1, 
+        1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  0,  0,  0,  0, 
+       }},
+       {{
+        1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1, 
+        1,  1,  1,  1,  1,  1,  1,  1,  1,  0,  0,  0,  0,  0,  0, 
+       }},
+       {{
+        1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1, 
+        1,  1,  1,  1,  1,  0,  0,  1,  1,  1,  1,  1,  1,  0,  0, 
+       }},
+       {{
+        1,  1,  1,  1,  1,  1,  0,  0,  1,  1,  1,  1,  1,  1,  0,  0,  1, 
+        1,  1,  1,  1,  1,  1,  1,  0,  1,  0,  1,  0,  1,  0,  1, 
+       }},
+       {{
+        1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1, 
+        1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  0,  0, 
+       }},
+       {{
+        1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1, 
+        1,  1,  1,  1,  0,  1,  1,  1,  1,  1,  1,  1,  0,  1,  0, 
+       }},
+       {{
+        0,  0,  1,  1,  1,  0,  1,  1,  1,  1,  1,  1,  1,  0,  0,  0,  1, 
+        1,  1,  1,  0,  0,  1,  1,  1,  1,  1,  1,  0,  0,  0,  0, 
+       }},
+       {{
+        1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  0,  0,  0,  0, 
+        0,  1,  1,  1,  0,  1,  1,  1,  1,  1,  1,  1,  0,  0,  0, 
+       }},
+       {{
+        0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
+        0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  1, 
+       }},
+       {{
+        0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  2, 
+        2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  0,  0,  0, 
+       }},
+       {{
+        0,  0,  1,  0,  0,  0,  0,  1,  0,  0,  1,  1,  1,  1,  1,  1,  1, 
+        1,  1,  1,  0,  1,  0,  0,  0,  1,  1,  1,  1,  1,  0,  0, 
+       }},
+       {{
+        0,  0,  0,  0,  1,  0,  1,  0,  1,  0,  1,  1,  1,  1,  0,  1,  1, 
+        1,  0,  1,  1,  0,  0,  0,  0,  1,  0,  0,  0,  0,  0,  0, 
+       }},
+       {{
+        0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  2,  2,  2,  2,  2,  2,  0, 
+        0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
+       }},
+       {{
+        0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
+        0,  0,  0,  0,  0,  0,  0,  0,  2,  2,  0,  0,  0,  0,  0, 
+       }},
+       {{
+        1,  1,  1,  1,  1,  1,  1,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
+        0,  0,  1,  1,  1,  1,  1,  0,  0,  0,  0,  0,  0,  2,  0, 
+       }},
+       {{
+        2,  2,  2,  2,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
+        0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
+       }},
+       {{
+        1,  1,  1,  1,  1,  1,  0,  0,  1,  1,  1,  1,  1,  1,  1,  1,  1, 
+        1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1, 
+       }},
+       {{
+        0,  0,  0,  0,  0,  0,  0,  2,  2,  2,  0,  0,  0,  0,  0,  0,  0, 
+        0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  2,  2,  2,  2,  2, 
+       }},
+       {{
+        2,  2,  2,  0,  0,  2,  2,  2,  2,  2,  2,  2,  0,  0,  0,  0,  0, 
+        0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
+       }},
+       {{
+        0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  2,  2,  2,  2,  0,  0,  0, 
+        0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
+       }},
+       {{
+        1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1, 
+        1,  1,  1,  1,  0,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1, 
+       }},
+       {{
+        1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1, 
+        1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  0,  1,  1, 
+       }},
+       {{
+        0,  0,  1,  0,  0,  1,  1,  0,  0,  1,  1,  1,  1,  0,  1,  1,  1, 
+        1,  1,  1,  1,  1,  1,  1,  1,  1,  0,  1,  0,  1,  1,  1, 
+       }},
+       {{
+        1,  0,  1,  1,  0,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1, 
+        1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1, 
+       }},
+       {{
+        1,  1,  1,  1,  1,  1,  0,  1,  1,  1,  1,  0,  0,  1,  1,  1,  1, 
+        1,  1,  1,  1,  0,  1,  1,  1,  1,  1,  1,  1,  0,  1,  1, 
+       }},
+       {{
+        1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1, 
+        1,  1,  1,  1,  1,  1,  1,  1,  1,  0,  1,  1,  1,  1,  0, 
+       }},
+       {{
+        1,  1,  1,  1,  1,  0,  1,  0,  0,  0,  1,  1,  1,  1,  1,  1,  1, 
+        0,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1, 
+       }},
+       {{
+        1,  1,  1,  1,  0,  0,  0,  0,  1,  1,  1,  1,  1,  1,  1,  1,  1, 
+        1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1, 
+       }},
+       {{
+        1,  0,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1, 
+        1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  0,  1,  1,  1,  1, 
+       }},
+       {{
+        1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  0,  1, 
+        1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1, 
+       }},
+       {{
+        1,  1,  1,  1,  1,  1,  1,  1,  1,  0,  1,  1,  1,  1,  1,  1,  1, 
+        1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1, 
+       }},
+       {{
+        1,  1,  1,  0,  1,  1,  1,  1,  1,  1,  0,  0,  0,  0,  0,  0,  0, 
+        0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
+       }},
+};
+
+/*
+ * Case Folding
+ */
+
+#define CASE_FOLDING_BITS_0    9
+#define CASE_FOLDING_BITS_1    7
+#define CASE_FOLDING_BITS_2    5
+
+static const unsigned short v310_case_folding_imap[] = {
+         272,   400,   528,   656,   656,   656,   656,   656, 
+         656,   656,   656,   656,   656,   656,   656,   784, 
+         912,   656,   656,   656,   656,   656,   656,   656, 
+         656,   656,   656,   656,   656,   656,   656,   656, 
+         656,   656,   656,   656,   656,   656,   656,   656, 
+         656,   656,   656,   656,   656,   656,   656,   656, 
+         656,   656,   656,   656,   656,   656,   656,   656, 
+         656,   656,   656,   656,   656,   656,   656,   656, 
+         656,   656,   656,   656,   656,   656,   656,   656, 
+         656,   656,   656,   656,   656,   656,   656,   656, 
+         656,   656,   656,   656,   656,   656,   656,   656, 
+         656,   656,   656,   656,   656,   656,   656,   656, 
+         656,   656,   656,   656,   656,   656,   656,   656, 
+         656,   656,   656,   656,   656,   656,   656,   656, 
+         656,   656,   656,   656,   656,   656,   656,   656, 
+         656,   656,   656,   656,   656,   656,   656,   656, 
+         656,   656,   656,   656,   656,   656,   656,   656, 
+         656,   656,   656,   656,   656,   656,   656,   656, 
+         656,   656,   656,   656,   656,   656,   656,   656, 
+         656,   656,   656,   656,   656,   656,   656,   656, 
+         656,   656,   656,   656,   656,   656,   656,   656, 
+         656,   656,   656,   656,   656,   656,   656,   656, 
+         656,   656,   656,   656,   656,   656,   656,   656, 
+         656,   656,   656,   656,   656,   656,   656,   656, 
+         656,   656,   656,   656,   656,   656,   656,   656, 
+         656,   656,   656,   656,   656,   656,   656,   656, 
+         656,   656,   656,   656,   656,   656,   656,   656, 
+         656,   656,   656,   656,   656,   656,   656,   656, 
+         656,   656,   656,   656,   656,   656,   656,   656, 
+         656,   656,   656,   656,   656,   656,   656,   656, 
+         656,   656,   656,   656,   656,   656,   656,   656, 
+         656,   656,   656,   656,   656,   656,   656,   656, 
+         656,   656,   656,   656,   656,   656,   656,   656, 
+         656,   656,   656,   656,   656,   656,   656,   656, 
+           0,     0,     1,     0,     0,     2,     3,     0, 
+           4,     5,     6,     7,     8,     9,    10,    11, 
+          12,    13,     0,     0,     0,     0,     0,     0, 
+           0,     0,    14,     0,    15,    16,    17,    18, 
+          19,    20,     0,    21,    22,    23,    24,    25, 
+           0,    26,    27,     0,    28,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+          29,    30,    31,    32,    33,    34,    35,    36, 
+          37,    38,    39,    40,    41,    42,    43,    44, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,    45,     0,    46,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,    47,    48,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+          49,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,    50,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+          51,    52,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+           0,     0,     0,     0,     0,     0,     0,     0, 
+};
+
+static const struct {
+       unsigned short tbl[32];
+} v310_case_folding_table[] = {
+       {{
+          0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
+          0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
+          0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
+       }},
+       {{
+          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,    0,    0,    0,    0,    0, 
+       }},
+       {{
+          0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
+          0,    0,    0,    0,    0,    0,    0,    0,    0,    0,   27, 
+          0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
+       }},
+       {{
+         28,   29,   30,   31,   32,   33,   34,   35,   36,   37,   38, 
+         39,   40,   41,   42,   43,   44,   45,   46,   47,   48,   49, 
+         50,    0,   51,   52,   53,   54,   55,   56,   57,   58, 
+       }},
+       {{
+         60,    0,   61,    0,   62,    0,   63,    0,   64,    0,   65, 
+          0,   66,    0,   67,    0,   68,    0,   69,    0,   70,    0, 
+         71,    0,   72,    0,   73,    0,   74,    0,   75,    0, 
+       }},
+       {{
+         76,    0,   77,    0,   78,    0,   79,    0,   80,    0,   81, 
+          0,   82,    0,   83,    0,   84,   85,   86,    0,   87,    0, 
+         88,    0,    0,   89,    0,   90,    0,   91,    0,   92, 
+       }},
+       {{
+          0,   93,    0,   94,    0,   95,    0,   96,    0,   97,   99, 
+          0,  100,    0,  101,    0,  102,    0,  103,    0,  104,    0, 
+        105,    0,  106,    0,  107,    0,  108,    0,  109,    0, 
+       }},
+       {{
+        110,    0,  111,    0,  112,    0,  113,    0,  114,    0,  115, 
+          0,  116,    0,  117,    0,  118,    0,  119,    0,  120,    0, 
+        121,    0,  122,  123,    0,  124,    0,  125,    0,  126, 
+       }},
+       {{
+          0,  127,  128,    0,  129,    0,  130,  131,    0,  132,  133, 
+        134,    0,    0,  135,  136,  137,  138,    0,  139,  140,    0, 
+        141,  142,  143,    0,    0,    0,  144,  145,    0,  146, 
+       }},
+       {{
+        147,    0,  148,    0,  149,    0,  150,  151,    0,  152,    0, 
+          0,  153,    0,  154,  155,    0,  156,  157,  158,    0,  159, 
+          0,  160,  161,    0,    0,    0,  162,    0,    0,    0, 
+       }},
+       {{
+          0,    0,    0,    0,  163,  164,    0,  165,  166,    0,  167, 
+        168,    0,  169,    0,  170,    0,  171,    0,  172,    0,  173, 
+          0,  174,    0,  175,    0,  176,    0,    0,  177,    0, 
+       }},
+       {{
+        178,    0,  179,    0,  180,    0,  181,    0,  182,    0,  183, 
+          0,  184,    0,  185,    0,  186,  188,  189,    0,  190,    0, 
+        191,  192,  193,    0,  194,    0,  195,    0,  196,    0, 
+       }},
+       {{
+        197,    0,  198,    0,  199,    0,  200,    0,  201,    0,  202, 
+          0,  203,    0,  204,    0,  205,    0,  206,    0,  207,    0, 
+        208,    0,  209,    0,  210,    0,  211,    0,  212,    0, 
+       }},
+       {{
+          0,    0,  213,    0,  214,    0,  215,    0,  216,    0,  217, 
+          0,  218,    0,  219,    0,  220,    0,  221,    0,    0,    0, 
+          0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
+       }},
+       {{
+          0,    0,    0,    0,    0,  222,    0,    0,    0,    0,    0, 
+          0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
+          0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
+       }},
+       {{
+          0,    0,    0,    0,    0,    0,  223,    0,  224,  225,  226, 
+          0,  227,    0,  228,  229,  230,  233,  234,  235,  236,  237, 
+        238,  239,  240,  241,  242,  243,  244,  245,  246,  247, 
+       }},
+       {{
+        248,  249,    0,  250,  251,  252,  253,  254,  255,  256,  257, 
+        258,    0,    0,    0,    0,  259,    0,    0,    0,    0,    0, 
+          0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
+       }},
+       {{
+          0,    0,  262,    0,    0,    0,    0,    0,    0,    0,    0, 
+          0,    0,    0,    0,    0,  263,  264,    0,    0,    0,  265, 
+        266,    0,    0,    0,  267,    0,  268,    0,  269,    0, 
+       }},
+       {{
+        270,    0,  271,    0,  272,    0,  273,    0,  274,    0,  275, 
+          0,  276,    0,  277,    0,  278,  279,  280,    0,  281,  282, 
+          0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
+       }},
+       {{
+        283,  284,  285,  286,  287,  288,  289,  290,  291,  292,  293, 
+        294,  295,  296,  297,  298,  299,  300,  301,  302,  303,  304, 
+        305,  306,  307,  308,  309,  310,  311,  312,  313,  314, 
+       }},
+       {{
+        315,  316,  317,  318,  319,  320,  321,  322,  323,  324,  325, 
+        326,  327,  328,  329,  330,    0,    0,    0,    0,    0,    0, 
+          0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
+       }},
+       {{
+        331,    0,  332,    0,  333,    0,  334,    0,  335,    0,  336, 
+          0,  337,    0,  338,    0,  339,    0,  340,    0,  341,    0, 
+        342,    0,  343,    0,  344,    0,  345,    0,  346,    0, 
+       }},
+       {{
+        347,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
+          0,  348,    0,  349,    0,  350,    0,  351,    0,  352,    0, 
+        353,    0,  354,    0,  355,    0,  356,    0,  357,    0, 
+       }},
+       {{
+        358,    0,  359,    0,  360,    0,  361,    0,  362,    0,  363, 
+          0,  364,    0,  365,    0,  366,    0,  367,    0,  368,    0, 
+        369,    0,  370,    0,  371,    0,  372,    0,  373,    0, 
+       }},
+       {{
+          0,  374,    0,  375,    0,    0,    0,  376,    0,    0,    0, 
+        377,    0,    0,    0,    0,  378,    0,  379,    0,  380,    0, 
+        381,    0,  382,    0,  383,    0,  384,    0,  385,    0, 
+       }},
+       {{
+        386,    0,  387,    0,  388,    0,  389,    0,  390,    0,  391, 
+          0,  392,    0,  393,    0,  394,    0,  395,    0,  396,    0, 
+          0,    0,  397,    0,    0,    0,    0,    0,    0,    0, 
+       }},
+       {{
+          0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
+          0,    0,    0,    0,    0,    0,  398,  399,  400,  401,  402, 
+        403,  404,  405,  406,  407,  408,  409,  410,  411,  412, 
+       }},
+       {{
+        413,  414,  415,  416,  417,  418,  419,  420,  421,  422,  423, 
+        424,  425,  426,  427,  428,  429,  430,  431,  432,  433,  434, 
+        435,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
+       }},
+       {{
+          0,    0,    0,    0,    0,    0,    0,  436,    0,    0,    0, 
+          0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
+          0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
+       }},
+       {{
+        438,    0,  439,    0,  440,    0,  441,    0,  442,    0,  443, 
+          0,  444,    0,  445,    0,  446,    0,  447,    0,  448,    0, 
+        449,    0,  450,    0,  451,    0,  452,    0,  453,    0, 
+       }},
+       {{
+        454,    0,  455,    0,  456,    0,  457,    0,  458,    0,  459, 
+          0,  460,    0,  461,    0,  462,    0,  463,    0,  464,    0, 
+        465,    0,  466,    0,  467,    0,  468,    0,  469,    0, 
+       }},
+       {{
+        470,    0,  471,    0,  472,    0,  473,    0,  474,    0,  475, 
+          0,  476,    0,  477,    0,  478,    0,  479,    0,  480,    0, 
+        481,    0,  482,    0,  483,    0,  484,    0,  485,    0, 
+       }},
+       {{
+        486,    0,  487,    0,  488,    0,  489,    0,  490,    0,  491, 
+          0,  492,    0,  493,    0,  494,    0,  495,    0,  496,    0, 
+        497,    0,  498,    0,  499,    0,  500,    0,  501,    0, 
+       }},
+       {{
+        502,    0,  503,    0,  504,    0,  505,    0,  506,    0,  507, 
+          0,  508,    0,  509,    0,  510,    0,  511,    0,  512,    0, 
+        513,  515,  517,  519,  521,  523,    0,    0,    0,    0, 
+       }},
+       {{
+        524,    0,  525,    0,  526,    0,  527,    0,  528,    0,  529, 
+          0,  530,    0,  531,    0,  532,    0,  533,    0,  534,    0, 
+        535,    0,  536,    0,  537,    0,  538,    0,  539,    0, 
+       }},
+       {{
+        540,    0,  541,    0,  542,    0,  543,    0,  544,    0,  545, 
+          0,  546,    0,  547,    0,  548,    0,  549,    0,  550,    0, 
+        551,    0,  552,    0,  553,    0,  554,    0,  555,    0, 
+       }},
+       {{
+        556,    0,  557,    0,  558,    0,  559,    0,  560,    0,  561, 
+          0,  562,    0,  563,    0,  564,    0,  565,    0,  566,    0, 
+        567,    0,  568,    0,    0,    0,    0,    0,    0,    0, 
+       }},
+       {{
+          0,    0,    0,    0,    0,    0,    0,    0,  569,  570,  571, 
+        572,  573,  574,  575,  576,    0,    0,    0,    0,    0,    0, 
+          0,    0,  577,  578,  579,  580,  581,  582,    0,    0, 
+       }},
+       {{
+          0,    0,    0,    0,    0,    0,    0,    0,  583,  584,  585, 
+        586,  587,  588,  589,  590,    0,    0,    0,    0,    0,    0, 
+          0,    0,  591,  592,  593,  594,  595,  596,  597,  598, 
+       }},
+       {{
+          0,    0,    0,    0,    0,    0,    0,    0,  599,  600,  601, 
+        602,  603,  604,    0,    0,  605,    0,  607,    0,  610,    0, 
+        613,    0,    0,  616,    0,  617,    0,  618,    0,  619, 
+       }},
+       {{
+          0,    0,    0,    0,    0,    0,    0,    0,  620,  621,  622, 
+        623,  624,  625,  626,  627,    0,    0,    0,    0,    0,    0, 
+          0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
+       }},
+       {{
+        628,  630,  632,  634,  636,  638,  640,  642,  646,  649,  652, 
+        655,  658,  661,  664,  667,  668,  670,  672,  674,  676,  678, 
+        680,  682,  686,  689,  692,  695,  698,  701,  704,  707, 
+       }},
+       {{
+        708,  710,  712,  714,  716,  718,  720,  722,  726,  729,  732, 
+        735,  738,  741,  744,  747,    0,    0,  748,  750,  752,    0, 
+        754,  756,  759,  760,  761,  762,  765,    0,  766,    0, 
+       }},
+       {{
+          0,    0,  767,  769,  771,    0,  773,  775,  778,  779,  780, 
+        781,  784,    0,    0,    0,    0,    0,  785,  788,    0,    0, 
+        791,  793,  796,  797,  798,  799,    0,    0,    0,    0, 
+       }},
+       {{
+          0,    0,  800,  803,  806,    0,  808,  810,  813,  814,  815, 
+        816,  817,    0,    0,    0,    0,    0,  818,  820,  822,    0, 
+        824,  826,  829,  830,  831,  832,  835,    0,    0,    0, 
+       }},
+       {{
+          0,    0,    0,    0,    0,    0,  836,    0,    0,    0,  837, 
+        838,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
+          0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
+       }},
+       {{
+        839,  840,  841,  842,  843,  844,  845,  846,  847,  848,  849, 
+        850,  851,  852,  853,  854,    0,    0,    0,    0,    0,    0, 
+          0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
+       }},
+       {{
+          0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
+          0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
+        855,  856,  857,  858,  859,  860,  861,  862,  863,  864, 
+       }},
+       {{
+        865,  866,  867,  868,  869,  870,  871,  872,  873,  874,  875, 
+        876,  877,  878,  879,  880,    0,    0,    0,    0,    0,    0, 
+          0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
+       }},
+       {{
+        881,  883,  885,  887,  890,  893,  895,    0,    0,    0,    0, 
+          0,    0,    0,    0,    0,    0,    0,    0,  897,  899,  901, 
+        903,  905,    0,    0,    0,    0,    0,    0,    0,    0, 
+       }},
+       {{
+          0,  907,  908,  909,  910,  911,  912,  913,  914,  915,  916, 
+        917,  918,  919,  920,  921,  922,  923,  924,  925,  926,  927, 
+        928,  929,  930,  931,  932,    0,    0,    0,    0,    0, 
+       }},
+       {{
+        933,  934,  935,  936,  937,  938,  939,  940,  941,  942,  943, 
+        944,  945,  946,  947,  948,  949,  950,  951,  952,  953,  954, 
+        955,  956,  957,  958,  959,  960,  961,  962,  963,  964, 
+       }},
+       {{
+        965,  966,  967,  968,  969,  970,    0,    0,    0,    0,    0, 
+          0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
+          0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
+       }},
+};
+static const unsigned long v310_case_folding_seq[] = {
+       0x00000000, 0x80000061, 0x80000062, 0x80000063, 
+       0x80000064, 0x80000065, 0x80000066, 0x80000067, 
+       0x80000068, 0x80000069, 0x8000006a, 0x8000006b, 
+       0x8000006c, 0x8000006d, 0x8000006e, 0x8000006f, 
+       0x80000070, 0x80000071, 0x80000072, 0x80000073, 
+       0x80000074, 0x80000075, 0x80000076, 0x80000077, 
+       0x80000078, 0x80000079, 0x8000007a, 0x800003bc, 
+       0x800000e0, 0x800000e1, 0x800000e2, 0x800000e3, 
+       0x800000e4, 0x800000e5, 0x800000e6, 0x800000e7, 
+       0x800000e8, 0x800000e9, 0x800000ea, 0x800000eb, 
+       0x800000ec, 0x800000ed, 0x800000ee, 0x800000ef, 
+       0x800000f0, 0x800000f1, 0x800000f2, 0x800000f3, 
+       0x800000f4, 0x800000f5, 0x800000f6, 0x800000f8, 
+       0x800000f9, 0x800000fa, 0x800000fb, 0x800000fc, 
+       0x800000fd, 0x800000fe, 0x00000073, 0x80000073, 
+       0x80000101, 0x80000103, 0x80000105, 0x80000107, 
+       0x80000109, 0x8000010b, 0x8000010d, 0x8000010f, 
+       0x80000111, 0x80000113, 0x80000115, 0x80000117, 
+       0x80000119, 0x8000011b, 0x8000011d, 0x8000011f, 
+       0x80000121, 0x80000123, 0x80000125, 0x80000127, 
+       0x80000129, 0x8000012b, 0x8000012d, 0x8000012f, 
+       0x80000069, 0x80000069, 0x80000133, 0x80000135, 
+       0x80000137, 0x8000013a, 0x8000013c, 0x8000013e, 
+       0x80000140, 0x80000142, 0x80000144, 0x80000146, 
+       0x80000148, 0x000002bc, 0x8000006e, 0x8000014b, 
+       0x8000014d, 0x8000014f, 0x80000151, 0x80000153, 
+       0x80000155, 0x80000157, 0x80000159, 0x8000015b, 
+       0x8000015d, 0x8000015f, 0x80000161, 0x80000163, 
+       0x80000165, 0x80000167, 0x80000169, 0x8000016b, 
+       0x8000016d, 0x8000016f, 0x80000171, 0x80000173, 
+       0x80000175, 0x80000177, 0x800000ff, 0x8000017a, 
+       0x8000017c, 0x8000017e, 0x80000073, 0x80000253, 
+       0x80000183, 0x80000185, 0x80000254, 0x80000188, 
+       0x80000256, 0x80000257, 0x8000018c, 0x800001dd, 
+       0x80000259, 0x8000025b, 0x80000192, 0x80000260, 
+       0x80000263, 0x80000269, 0x80000268, 0x80000199, 
+       0x8000026f, 0x80000272, 0x80000275, 0x800001a1, 
+       0x800001a3, 0x800001a5, 0x80000280, 0x800001a8, 
+       0x80000283, 0x800001ad, 0x80000288, 0x800001b0, 
+       0x8000028a, 0x8000028b, 0x800001b4, 0x800001b6, 
+       0x80000292, 0x800001b9, 0x800001bd, 0x800001c6, 
+       0x800001c6, 0x800001c9, 0x800001c9, 0x800001cc, 
+       0x800001cc, 0x800001ce, 0x800001d0, 0x800001d2, 
+       0x800001d4, 0x800001d6, 0x800001d8, 0x800001da, 
+       0x800001dc, 0x800001df, 0x800001e1, 0x800001e3, 
+       0x800001e5, 0x800001e7, 0x800001e9, 0x800001eb, 
+       0x800001ed, 0x800001ef, 0x0000006a, 0x8000030c, 
+       0x800001f3, 0x800001f3, 0x800001f5, 0x80000195, 
+       0x800001bf, 0x800001f9, 0x800001fb, 0x800001fd, 
+       0x800001ff, 0x80000201, 0x80000203, 0x80000205, 
+       0x80000207, 0x80000209, 0x8000020b, 0x8000020d, 
+       0x8000020f, 0x80000211, 0x80000213, 0x80000215, 
+       0x80000217, 0x80000219, 0x8000021b, 0x8000021d, 
+       0x8000021f, 0x80000223, 0x80000225, 0x80000227, 
+       0x80000229, 0x8000022b, 0x8000022d, 0x8000022f, 
+       0x80000231, 0x80000233, 0x800003b9, 0x800003ac, 
+       0x800003ad, 0x800003ae, 0x800003af, 0x800003cc, 
+       0x800003cd, 0x800003ce, 0x000003b9, 0x00000308, 
+       0x80000301, 0x800003b1, 0x800003b2, 0x800003b3, 
+       0x800003b4, 0x800003b5, 0x800003b6, 0x800003b7, 
+       0x800003b8, 0x800003b9, 0x800003ba, 0x800003bb, 
+       0x800003bc, 0x800003bd, 0x800003be, 0x800003bf, 
+       0x800003c0, 0x800003c1, 0x800003c3, 0x800003c4, 
+       0x800003c5, 0x800003c6, 0x800003c7, 0x800003c8, 
+       0x800003c9, 0x800003ca, 0x800003cb, 0x000003c5, 
+       0x00000308, 0x80000301, 0x800003c3, 0x800003b2, 
+       0x800003b8, 0x800003c6, 0x800003c0, 0x800003db, 
+       0x800003dd, 0x800003df, 0x800003e1, 0x800003e3, 
+       0x800003e5, 0x800003e7, 0x800003e9, 0x800003eb, 
+       0x800003ed, 0x800003ef, 0x800003ba, 0x800003c1, 
+       0x800003c3, 0x800003b8, 0x800003b5, 0x80000450, 
+       0x80000451, 0x80000452, 0x80000453, 0x80000454, 
+       0x80000455, 0x80000456, 0x80000457, 0x80000458, 
+       0x80000459, 0x8000045a, 0x8000045b, 0x8000045c, 
+       0x8000045d, 0x8000045e, 0x8000045f, 0x80000430, 
+       0x80000431, 0x80000432, 0x80000433, 0x80000434, 
+       0x80000435, 0x80000436, 0x80000437, 0x80000438, 
+       0x80000439, 0x8000043a, 0x8000043b, 0x8000043c, 
+       0x8000043d, 0x8000043e, 0x8000043f, 0x80000440, 
+       0x80000441, 0x80000442, 0x80000443, 0x80000444, 
+       0x80000445, 0x80000446, 0x80000447, 0x80000448, 
+       0x80000449, 0x8000044a, 0x8000044b, 0x8000044c, 
+       0x8000044d, 0x8000044e, 0x8000044f, 0x80000461, 
+       0x80000463, 0x80000465, 0x80000467, 0x80000469, 
+       0x8000046b, 0x8000046d, 0x8000046f, 0x80000471, 
+       0x80000473, 0x80000475, 0x80000477, 0x80000479, 
+       0x8000047b, 0x8000047d, 0x8000047f, 0x80000481, 
+       0x8000048d, 0x8000048f, 0x80000491, 0x80000493, 
+       0x80000495, 0x80000497, 0x80000499, 0x8000049b, 
+       0x8000049d, 0x8000049f, 0x800004a1, 0x800004a3, 
+       0x800004a5, 0x800004a7, 0x800004a9, 0x800004ab, 
+       0x800004ad, 0x800004af, 0x800004b1, 0x800004b3, 
+       0x800004b5, 0x800004b7, 0x800004b9, 0x800004bb, 
+       0x800004bd, 0x800004bf, 0x800004c2, 0x800004c4, 
+       0x800004c8, 0x800004cc, 0x800004d1, 0x800004d3, 
+       0x800004d5, 0x800004d7, 0x800004d9, 0x800004db, 
+       0x800004dd, 0x800004df, 0x800004e1, 0x800004e3, 
+       0x800004e5, 0x800004e7, 0x800004e9, 0x800004eb, 
+       0x800004ed, 0x800004ef, 0x800004f1, 0x800004f3, 
+       0x800004f5, 0x800004f9, 0x80000561, 0x80000562, 
+       0x80000563, 0x80000564, 0x80000565, 0x80000566, 
+       0x80000567, 0x80000568, 0x80000569, 0x8000056a, 
+       0x8000056b, 0x8000056c, 0x8000056d, 0x8000056e, 
+       0x8000056f, 0x80000570, 0x80000571, 0x80000572, 
+       0x80000573, 0x80000574, 0x80000575, 0x80000576, 
+       0x80000577, 0x80000578, 0x80000579, 0x8000057a, 
+       0x8000057b, 0x8000057c, 0x8000057d, 0x8000057e, 
+       0x8000057f, 0x80000580, 0x80000581, 0x80000582, 
+       0x80000583, 0x80000584, 0x80000585, 0x80000586, 
+       0x00000565, 0x80000582, 0x80001e01, 0x80001e03, 
+       0x80001e05, 0x80001e07, 0x80001e09, 0x80001e0b, 
+       0x80001e0d, 0x80001e0f, 0x80001e11, 0x80001e13, 
+       0x80001e15, 0x80001e17, 0x80001e19, 0x80001e1b, 
+       0x80001e1d, 0x80001e1f, 0x80001e21, 0x80001e23, 
+       0x80001e25, 0x80001e27, 0x80001e29, 0x80001e2b, 
+       0x80001e2d, 0x80001e2f, 0x80001e31, 0x80001e33, 
+       0x80001e35, 0x80001e37, 0x80001e39, 0x80001e3b, 
+       0x80001e3d, 0x80001e3f, 0x80001e41, 0x80001e43, 
+       0x80001e45, 0x80001e47, 0x80001e49, 0x80001e4b, 
+       0x80001e4d, 0x80001e4f, 0x80001e51, 0x80001e53, 
+       0x80001e55, 0x80001e57, 0x80001e59, 0x80001e5b, 
+       0x80001e5d, 0x80001e5f, 0x80001e61, 0x80001e63, 
+       0x80001e65, 0x80001e67, 0x80001e69, 0x80001e6b, 
+       0x80001e6d, 0x80001e6f, 0x80001e71, 0x80001e73, 
+       0x80001e75, 0x80001e77, 0x80001e79, 0x80001e7b, 
+       0x80001e7d, 0x80001e7f, 0x80001e81, 0x80001e83, 
+       0x80001e85, 0x80001e87, 0x80001e89, 0x80001e8b, 
+       0x80001e8d, 0x80001e8f, 0x80001e91, 0x80001e93, 
+       0x80001e95, 0x00000068, 0x80000331, 0x00000074, 
+       0x80000308, 0x00000077, 0x8000030a, 0x00000079, 
+       0x8000030a, 0x00000061, 0x800002be, 0x80001e61, 
+       0x80001ea1, 0x80001ea3, 0x80001ea5, 0x80001ea7, 
+       0x80001ea9, 0x80001eab, 0x80001ead, 0x80001eaf, 
+       0x80001eb1, 0x80001eb3, 0x80001eb5, 0x80001eb7, 
+       0x80001eb9, 0x80001ebb, 0x80001ebd, 0x80001ebf, 
+       0x80001ec1, 0x80001ec3, 0x80001ec5, 0x80001ec7, 
+       0x80001ec9, 0x80001ecb, 0x80001ecd, 0x80001ecf, 
+       0x80001ed1, 0x80001ed3, 0x80001ed5, 0x80001ed7, 
+       0x80001ed9, 0x80001edb, 0x80001edd, 0x80001edf, 
+       0x80001ee1, 0x80001ee3, 0x80001ee5, 0x80001ee7, 
+       0x80001ee9, 0x80001eeb, 0x80001eed, 0x80001eef, 
+       0x80001ef1, 0x80001ef3, 0x80001ef5, 0x80001ef7, 
+       0x80001ef9, 0x80001f00, 0x80001f01, 0x80001f02, 
+       0x80001f03, 0x80001f04, 0x80001f05, 0x80001f06, 
+       0x80001f07, 0x80001f10, 0x80001f11, 0x80001f12, 
+       0x80001f13, 0x80001f14, 0x80001f15, 0x80001f20, 
+       0x80001f21, 0x80001f22, 0x80001f23, 0x80001f24, 
+       0x80001f25, 0x80001f26, 0x80001f27, 0x80001f30, 
+       0x80001f31, 0x80001f32, 0x80001f33, 0x80001f34, 
+       0x80001f35, 0x80001f36, 0x80001f37, 0x80001f40, 
+       0x80001f41, 0x80001f42, 0x80001f43, 0x80001f44, 
+       0x80001f45, 0x000003c5, 0x80000313, 0x000003c5, 
+       0x00000313, 0x80000300, 0x000003c5, 0x00000313, 
+       0x80000301, 0x000003c5, 0x00000313, 0x80000342, 
+       0x80001f51, 0x80001f53, 0x80001f55, 0x80001f57, 
+       0x80001f60, 0x80001f61, 0x80001f62, 0x80001f63, 
+       0x80001f64, 0x80001f65, 0x80001f66, 0x80001f67, 
+       0x00001f00, 0x800003b9, 0x00001f01, 0x800003b9, 
+       0x00001f02, 0x800003b9, 0x00001f03, 0x800003b9, 
+       0x00001f04, 0x800003b9, 0x00001f05, 0x800003b9, 
+       0x00001f06, 0x800003b9, 0x00001f07, 0x800003b9, 
+       0x00001f00, 0x800003b9, 0x80001f80, 0x00001f01, 
+       0x800003b9, 0x80001f81, 0x00001f02, 0x800003b9, 
+       0x80001f82, 0x00001f03, 0x800003b9, 0x80001f83, 
+       0x00001f04, 0x800003b9, 0x80001f84, 0x00001f05, 
+       0x800003b9, 0x80001f85, 0x00001f06, 0x800003b9, 
+       0x80001f86, 0x00001f07, 0x800003b9, 0x80001f87, 
+       0x00001f20, 0x800003b9, 0x00001f21, 0x800003b9, 
+       0x00001f22, 0x800003b9, 0x00001f23, 0x800003b9, 
+       0x00001f24, 0x800003b9, 0x00001f25, 0x800003b9, 
+       0x00001f26, 0x800003b9, 0x00001f27, 0x800003b9, 
+       0x00001f20, 0x800003b9, 0x80001f90, 0x00001f21, 
+       0x800003b9, 0x80001f91, 0x00001f22, 0x800003b9, 
+       0x80001f92, 0x00001f23, 0x800003b9, 0x80001f93, 
+       0x00001f24, 0x800003b9, 0x80001f94, 0x00001f25, 
+       0x800003b9, 0x80001f95, 0x00001f26, 0x800003b9, 
+       0x80001f96, 0x00001f27, 0x800003b9, 0x80001f97, 
+       0x00001f60, 0x800003b9, 0x00001f61, 0x800003b9, 
+       0x00001f62, 0x800003b9, 0x00001f63, 0x800003b9, 
+       0x00001f64, 0x800003b9, 0x00001f65, 0x800003b9, 
+       0x00001f66, 0x800003b9, 0x00001f67, 0x800003b9, 
+       0x00001f60, 0x800003b9, 0x80001fa0, 0x00001f61, 
+       0x800003b9, 0x80001fa1, 0x00001f62, 0x800003b9, 
+       0x80001fa2, 0x00001f63, 0x800003b9, 0x80001fa3, 
+       0x00001f64, 0x800003b9, 0x80001fa4, 0x00001f65, 
+       0x800003b9, 0x80001fa5, 0x00001f66, 0x800003b9, 
+       0x80001fa6, 0x00001f67, 0x800003b9, 0x80001fa7, 
+       0x00001f70, 0x800003b9, 0x000003b1, 0x800003b9, 
+       0x000003ac, 0x800003b9, 0x000003b1, 0x80000342, 
+       0x000003b1, 0x00000342, 0x800003b9, 0x80001fb0, 
+       0x80001fb1, 0x80001f70, 0x80001f71, 0x000003b1, 
+       0x800003b9, 0x80001fb3, 0x800003b9, 0x00001f74, 
+       0x800003b9, 0x000003b7, 0x800003b9, 0x000003ae, 
+       0x800003b9, 0x000003b7, 0x80000342, 0x000003b7, 
+       0x00000342, 0x800003b9, 0x80001f72, 0x80001f73, 
+       0x80001f74, 0x80001f75, 0x000003b7, 0x800003b9, 
+       0x80001fc3, 0x000003b9, 0x00000308, 0x80000300, 
+       0x000003b9, 0x00000308, 0x80000301, 0x000003b9, 
+       0x80000342, 0x000003b9, 0x00000308, 0x80000342, 
+       0x80001fd0, 0x80001fd1, 0x80001f76, 0x80001f77, 
+       0x000003c5, 0x00000308, 0x80000300, 0x000003c5, 
+       0x00000308, 0x80000301, 0x000003c1, 0x80000313, 
+       0x000003c5, 0x80000342, 0x000003c5, 0x00000308, 
+       0x80000342, 0x80001fe0, 0x80001fe1, 0x80001f7a, 
+       0x80001f7b, 0x80001fe5, 0x00001f7c, 0x800003b9, 
+       0x000003c9, 0x800003b9, 0x000003ce, 0x800003b9, 
+       0x000003c9, 0x80000342, 0x000003c9, 0x00000342, 
+       0x800003b9, 0x80001f78, 0x80001f79, 0x80001f7c, 
+       0x80001f7d, 0x000003c9, 0x800003b9, 0x80001ff3, 
+       0x800003c9, 0x8000006b, 0x800000e5, 0x80002170, 
+       0x80002171, 0x80002172, 0x80002173, 0x80002174, 
+       0x80002175, 0x80002176, 0x80002177, 0x80002178, 
+       0x80002179, 0x8000217a, 0x8000217b, 0x8000217c, 
+       0x8000217d, 0x8000217e, 0x8000217f, 0x800024d0, 
+       0x800024d1, 0x800024d2, 0x800024d3, 0x800024d4, 
+       0x800024d5, 0x800024d6, 0x800024d7, 0x800024d8, 
+       0x800024d9, 0x800024da, 0x800024db, 0x800024dc, 
+       0x800024dd, 0x800024de, 0x800024df, 0x800024e0, 
+       0x800024e1, 0x800024e2, 0x800024e3, 0x800024e4, 
+       0x800024e5, 0x800024e6, 0x800024e7, 0x800024e8, 
+       0x800024e9, 0x00000066, 0x80000066, 0x00000066, 
+       0x80000069, 0x00000066, 0x8000006c, 0x00000066, 
+       0x00000066, 0x80000069, 0x00000066, 0x00000066, 
+       0x8000006c, 0x00000073, 0x80000074, 0x00000073, 
+       0x80000074, 0x00000574, 0x80000576, 0x00000574, 
+       0x80000565, 0x00000574, 0x8000056b, 0x0000057e, 
+       0x80000576, 0x00000574, 0x8000056d, 0x8000ff41, 
+       0x8000ff42, 0x8000ff43, 0x8000ff44, 0x8000ff45, 
+       0x8000ff46, 0x8000ff47, 0x8000ff48, 0x8000ff49, 
+       0x8000ff4a, 0x8000ff4b, 0x8000ff4c, 0x8000ff4d, 
+       0x8000ff4e, 0x8000ff4f, 0x8000ff50, 0x8000ff51, 
+       0x8000ff52, 0x8000ff53, 0x8000ff54, 0x8000ff55, 
+       0x8000ff56, 0x8000ff57, 0x8000ff58, 0x8000ff59, 
+       0x8000ff5a, 0x80010428, 0x80010429, 0x8001042a, 
+       0x8001042b, 0x8001042c, 0x8001042d, 0x8001042e, 
+       0x8001042f, 0x80010430, 0x80010431, 0x80010432, 
+       0x80010433, 0x80010434, 0x80010435, 0x80010436, 
+       0x80010437, 0x80010438, 0x80010439, 0x8001043a, 
+       0x8001043b, 0x8001043c, 0x8001043d, 0x8001043e, 
+       0x8001043f, 0x80010440, 0x80010441, 0x80010442, 
+       0x80010443, 0x80010444, 0x80010445, 0x80010446, 
+       0x80010447, 0x80010448, 0x80010449, 0x8001044a, 
+       0x8001044b, 0x8001044c, 0x8001044d, 
+};
+
index 32f9f87f65db4fb62f30a37d83ee137fa357f665..f6973dd62b3228f7457feef66b97fc88897d33c3 100644 (file)
@@ -1,9 +1,10 @@
 #ifndef lint
-static char *rcsid = "$Id: unormalize.c,v 1.14 2000/10/13 05:34:48 ishisone Exp $";
+static char *rcsid = "$Id: unormalize.c,v 1.1 2002/01/02 02:46:50 marka Exp $";
 #endif
 
 /*
- * Copyright (c) 2000 Japan Network Information Center.  All rights reserved.
+ * Copyright (c) 2000,2001 Japan Network Information Center.
+ * All rights reserved.
  *  
  * By using this file, you agree to the terms and conditions set forth bellow.
  * 
@@ -11,8 +12,8 @@ static char *rcsid = "$Id: unormalize.c,v 1.14 2000/10/13 05:34:48 ishisone Exp
  * 
  * The following License Terms and Conditions apply, unless a different
  * license is obtained from Japan Network Information Center ("JPNIC"),
- * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku,
- * Tokyo, Japan.
+ * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda,
+ * Chiyoda-ku, Tokyo 101-0047, Japan.
  * 
  * 1. Use, Modification and Redistribution (including distribution of any
  *    modified or derived work) in source and/or binary forms is permitted
@@ -65,9 +66,6 @@ static char *rcsid = "$Id: unormalize.c,v 1.14 2000/10/13 05:34:48 ishisone Exp
 #include <stddef.h>
 #include <stdlib.h>
 #include <string.h>
-#ifdef DEBUG_HASHSTAT
-#include <stdio.h>
-#endif
 
 #include <mdn/result.h>
 #include <mdn/assert.h>
@@ -85,6 +83,7 @@ static char *rcsid = "$Id: unormalize.c,v 1.14 2000/10/13 05:34:48 ishisone Exp
 #define WORKBUF_SIZE_MAX       10000
 
 typedef struct {
+       mdn__unicode_version_t version; /* Unicode version */
        int cur;                /* pointing now processing character */
        int last;               /* pointing just after the last character */
        int size;               /* size of UCS and CLASS array */
@@ -94,7 +93,8 @@ typedef struct {
        int class_buf[WORKBUF_SIZE];            /* ditto */
 } workbuf_t;
 
-static mdn_result_t    normalize(int do_composition, int compat,
+static mdn_result_t    normalize(mdn__unicode_version_t version,
+                                 int do_composition, int compat,
                                  const char *from, char *to, size_t tolen);
 static mdn_result_t    decompose(workbuf_t *wb, unsigned long c, int compat);
 static void            get_class(workbuf_t *wb);
@@ -111,39 +111,47 @@ static void               workbuf_removevoid(workbuf_t *wb);
 
 
 mdn_result_t
-mdn__unormalize_formc(const char *from, char *to, size_t tolen) {
-       assert(from != NULL && to != NULL && tolen >= 0);
+mdn__unormalize_formc(mdn__unicode_version_t version,
+                     const char *from, char *to, size_t tolen)
+{
+       assert(version != NULL && from != NULL && to != NULL && tolen >= 0);
        TRACE(("mdn__unormalize_formc(from=\"%s\", tolen=%d)\n",
-             mdn_debug_xstring(from, 20), tolen));
-       return (normalize(1, 0, from, to, tolen));
+              mdn_debug_xstring(from, 20), tolen));
+       return (normalize(version, 1, 0, from, to, tolen));
 }
 
 mdn_result_t
-mdn__unormalize_formd(const char *from, char *to, size_t tolen) {
-       assert(from != NULL && to != NULL && tolen >= 0);
+mdn__unormalize_formd(mdn__unicode_version_t version,
+                     const char *from, char *to, size_t tolen)
+{
+       assert(version != NULL && from != NULL && to != NULL && tolen >= 0);
        TRACE(("mdn__unormalize_formd(from=\"%s\", tolen=%d)\n",
-             mdn_debug_xstring(from, 20), tolen));
-       return (normalize(0, 0, from, to, tolen));
+              mdn_debug_xstring(from, 20), tolen));
+       return (normalize(version, 0, 0, from, to, tolen));
 }
 
 mdn_result_t
-mdn__unormalize_formkc(const char *from, char *to, size_t tolen) {
-       assert(from != NULL && to != NULL && tolen >= 0);
+mdn__unormalize_formkc(mdn__unicode_version_t version,
+                      const char *from, char *to, size_t tolen)
+{
+       assert(version != NULL && from != NULL && to != NULL && tolen >= 0);
        TRACE(("mdn__unormalize_formkc(from=\"%s\", tolen=%d)\n",
-             mdn_debug_xstring(from, 20), tolen));
-       return (normalize(1, 1, from, to, tolen));
+              mdn_debug_xstring(from, 20), tolen));
+       return (normalize(version, 1, 1, from, to, tolen));
 }
 
 mdn_result_t
-mdn__unormalize_formkd(const char *from, char *to, size_t tolen) {
-       assert(from != NULL && to != NULL && tolen >= 0);
+mdn__unormalize_formkd(mdn__unicode_version_t version,
+                      const char *from, char *to, size_t tolen)
+{
+       assert(version != NULL && from != NULL && to != NULL && tolen >= 0);
        TRACE(("mdn__unormalize_formkd(from=\"%s\", tolen=%d)\n",
-             mdn_debug_xstring(from, 20), tolen));
-       return (normalize(0, 1, from, to, tolen));
+              mdn_debug_xstring(from, 20), tolen));
+       return (normalize(version, 0, 1, from, to, tolen));
 }
 
 static mdn_result_t
-normalize(int do_composition, int compat,
+normalize(mdn__unicode_version_t version, int do_composition, int compat,
          const char *from, char *to, size_t tolen)
 {
        workbuf_t wb;
@@ -154,6 +162,7 @@ normalize(int do_composition, int compat,
         * Initialize working buffer.
         */
        workbuf_init(&wb);
+       wb.version = version;
 
        while (fromlen > 0) {
                unsigned long c;
@@ -254,9 +263,8 @@ decompose(workbuf_t *wb, unsigned long c, int compat) {
        int dec_len;
 
 again:
-       r = mdn__unicode_decompose(compat, wb->ucs + wb->last,
-                                  wb->size - wb->last,
-                                  c, &dec_len);
+       r = mdn__unicode_decompose(wb->version, compat, wb->ucs + wb->last,
+                                  wb->size - wb->last, c, &dec_len);
        switch (r) {
        case mdn_success:
                wb->last += dec_len;
@@ -283,7 +291,8 @@ get_class(workbuf_t *wb) {
        int i;
 
        for (i = wb->cur; i < wb->last; i++)
-               wb->class[i] = mdn__unicode_canonicalclass(wb->ucs[i]);
+               wb->class[i] = mdn__unicode_canonicalclass(wb->version,
+                                                          wb->ucs[i]);
 }
 
 static void
@@ -315,18 +324,20 @@ compose(workbuf_t *wb) {
        int last_class;
        int nvoids;
        int i;
+       mdn__unicode_version_t ver;
 
        assert(wb != NULL && wb->class[0] == 0);
 
        cur = wb->cur;
        ucs = wb->ucs;
        class = wb->class;
+       ver = wb->version;
 
        /*
         * If there are no decomposition sequence that begins with
         * the top character, composition is impossible.
         */
-       if (!mdn__unicode_iscompositecandidate(ucs[0]))
+       if (!mdn__unicode_iscompositecandidate(ver, ucs[0]))
                return;
 
        last_class = 0;
@@ -336,12 +347,13 @@ compose(workbuf_t *wb) {
                int cl = class[i];
 
                if ((last_class < cl || cl == 0) &&
-                   mdn__unicode_compose(ucs[0], ucs[i], &c) == mdn_success) {
+                   mdn__unicode_compose(ver, ucs[0], ucs[i],
+                                        &c) == mdn_success) {
                        /*
                         * Replace the top character with the composed one.
                         */
                        ucs[0] = c;
-                       class[0] = mdn__unicode_canonicalclass(c);
+                       class[0] = mdn__unicode_canonicalclass(ver, c);
 
                        class[i] = -1;  /* void this character */
                        nvoids++;
index 76db9e7c73b5a8a0e0f271f618b3bfe416c36100..45a98a13fbedfecd9fa2d09311cdd660239ce90a 100644 (file)
@@ -1,5 +1,5 @@
 #ifndef lint
-static char *rcsid = "$Id: utf5.c,v 1.10 2000/09/20 02:47:33 ishisone Exp $";
+static char *rcsid = "$Id: utf5.c,v 1.1 2002/01/02 02:46:51 marka Exp $";
 #endif
 
 /*
@@ -11,8 +11,8 @@ static char *rcsid = "$Id: utf5.c,v 1.10 2000/09/20 02:47:33 ishisone Exp $";
  * 
  * The following License Terms and Conditions apply, unless a different
  * license is obtained from Japan Network Information Center ("JPNIC"),
- * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku,
- * Tokyo, Japan.
+ * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda,
+ * Chiyoda-ku, Tokyo 101-0047, Japan.
  * 
  * 1. Use, Modification and Redistribution (including distribution of any
  *    modified or derived work) in source and/or binary forms is permitted
index 6f0d942335919a8681800de0c7dd3bc3e4cfdbeb..7639cc652152013ae79ccd5034731b0c198ac3eb 100644 (file)
@@ -1,5 +1,5 @@
 #ifndef lint
-static char *rcsid = "$Id: utf6.c,v 1.1 2001/06/09 00:30:30 tale Exp $";
+static char *rcsid = "$Id: utf6.c,v 1.2 2002/02/08 05:40:48 marka Exp $";
 #endif
 
 /*
@@ -11,8 +11,8 @@ static char *rcsid = "$Id: utf6.c,v 1.1 2001/06/09 00:30:30 tale Exp $";
  * 
  * The following License Terms and Conditions apply, unless a different
  * license is obtained from Japan Network Information Center ("JPNIC"),
- * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku,
- * Tokyo, Japan.
+ * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda,
+ * Chiyoda-ku, Tokyo 101-0047, Japan.
  * 
  * 1. Use, Modification and Redistribution (including distribution of any
  *    modified or derived work) in source and/or binary forms is permitted
index 2f7c353b17119fc59c891f6d3fdb3bf23dacedc2..0b10b192a58efd30c9d16047a55af18543003c44 100644 (file)
@@ -1,5 +1,5 @@
 #ifndef lint
-static char *rcsid = "$Id: utf8.c,v 1.12 2000/10/25 06:43:00 ishisone Exp $";
+static char *rcsid = "$Id: utf8.c,v 1.1 2002/01/02 02:46:51 marka Exp $";
 #endif
 
 /*
@@ -11,8 +11,8 @@ static char *rcsid = "$Id: utf8.c,v 1.12 2000/10/25 06:43:00 ishisone Exp $";
  * 
  * The following License Terms and Conditions apply, unless a different
  * license is obtained from Japan Network Information Center ("JPNIC"),
- * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku,
- * Tokyo, Japan.
+ * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda,
+ * Chiyoda-ku, Tokyo 101-0047, Japan.
  * 
  * 1. Use, Modification and Redistribution (including distribution of any
  *    modified or derived work) in source and/or binary forms is permitted
index a3cad1a305122903806c31ccdf3d5a8778d40ce2..3579cfcfc03c937de3819b03e3bd94123c153e31 100644 (file)
@@ -1,5 +1,5 @@
 #ifndef lint
-static char *rcsid = "$Id: util.c,v 1.8 2001/05/31 05:21:38 ishisone Exp $";
+static char *rcsid = "$Id: util.c,v 1.1 2002/01/02 02:46:51 marka Exp $";
 #endif
 
 /*
@@ -11,8 +11,8 @@ static char *rcsid = "$Id: util.c,v 1.8 2001/05/31 05:21:38 ishisone Exp $";
  * 
  * The following License Terms and Conditions apply, unless a different
  * license is obtained from Japan Network Information Center ("JPNIC"),
- * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku,
- * Tokyo, Japan.
+ * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda,
+ * Chiyoda-ku, Tokyo 101-0047, Japan.
  * 
  * 1. Use, Modification and Redistribution (including distribution of any
  *    modified or derived work) in source and/or binary forms is permitted
index 9c7e4893e9d8572a8c6a4c462e230781f3499fe1..396b2b0c47b74985793d5a39a18ed4aa61843f4e 100644 (file)
@@ -1,5 +1,5 @@
 #ifndef lint
-static char *rcsid = "$Id: version.c,v 1.1 2001/06/09 00:30:31 tale Exp $";
+static char *rcsid = "$Id: version.c,v 1.2 2002/02/08 05:40:52 marka Exp $";
 #endif
 
 /*
@@ -11,8 +11,8 @@ static char *rcsid = "$Id: version.c,v 1.1 2001/06/09 00:30:31 tale Exp $";
  * 
  * The following License Terms and Conditions apply, unless a different
  * license is obtained from Japan Network Information Center ("JPNIC"),
- * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku,
- * Tokyo, Japan.
+ * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda,
+ * Chiyoda-ku, Tokyo 101-0047, Japan.
  * 
  * 1. Use, Modification and Redistribution (including distribution of any
  *    modified or derived work) in source and/or binary forms is permitted
index cac83587c4a5b7f7781dc6efc937428e4c01204b..02af0801600cef75c96286bbd964e8e70071903c 100644 (file)
@@ -1,4 +1,4 @@
-# $Id: make.wnt,v 1.1 2001/06/09 00:29:31 tale Exp $
+# $Id: make.wnt,v 1.2 2002/02/08 05:38:45 marka Exp $
 # Copyright (c) 2000 Japan Network Information Center.  All rights reserved.
 #  
 # By using this file, you agree to the terms and conditions set forth bellow.
@@ -7,8 +7,8 @@
 # 
 # The following License Terms and Conditions apply, unless a different
 # license is obtained from Japan Network Information Center ("JPNIC"),
-# a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku,
-# Tokyo, Japan.
+# a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda,
+# Chiyoda-ku, Tokyo 101-0047, Japan.
 # 
 # 1. Use, Modification and Redistribution (including distribution of any
 #    modified or derived work) in source and/or binary forms is permitted
index dd217127959b5fed86477009dab80a69d93df9b3..e62e2613d7e027060c8d70fc96f9292dca97b82d 100644 (file)
@@ -1,4 +1,4 @@
-# $Id: Makefile.in,v 1.5 2001/05/15 04:44:18 ishisone Exp $
+# $Id: Makefile.in,v 1.1 2002/01/02 02:46:52 marka Exp $
 #
 # Copyright (c) 2000 Japan Network Information Center.  All rights reserved.
 #  
@@ -8,8 +8,8 @@
 # 
 # The following License Terms and Conditions apply, unless a different
 # license is obtained from Japan Network Information Center ("JPNIC"),
-# a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku,
-# Tokyo, Japan.
+# a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda,
+# Chiyoda-ku, Tokyo 101-0047, Japan.
 # 
 # 1. Use, Modification and Redistribution (including distribution of any
 #    modified or derived work) in source and/or binary forms is permitted
index 9020478d00c52e67f8e20e24a98cebe2567de638..06efb0e3a1767efcddbda8a55c653811fcf62c7e 100644 (file)
@@ -1,4 +1,4 @@
-.\" $Id: libmdn.3.in,v 1.1 2001/06/09 00:30:33 tale Exp $
+.\" $Id: libmdn.3.in,v 1.2 2002/02/08 05:40:55 marka Exp $
 .\"
 .\" Copyright (c) 2001 Japan Network Information Center.  All rights reserved.
 .\"  
@@ -8,8 +8,8 @@
 .\" 
 .\" The following License Terms and Conditions apply, unless a different
 .\" license is obtained from Japan Network Information Center ("JPNIC"),
-.\" a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku,
-.\" Tokyo, Japan.
+.\" a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda,
+.\" Chiyoda-ku, Tokyo 101-0047, Japan.
 .\" 
 .\" 1. Use, Modification and Redistribution (including distribution of any
 .\"    modified or derived work) in source and/or binary forms is permitted
@@ -150,7 +150,7 @@ the encoding process are to be employed.
 .nf
 .ft CW
 #define MDN_LOCALCONV 0x0001 /* Local encoding <-> UTF-8 conversion */
-#define MDN_IDNCONV   0x0002 /* UTF-8 <-> IDN encoding conversion */
+#define MDN_IDNCONV   0x0002 /* UTF-8 <-> ACE conversion */
 #define MDN_NAMEPREP  0x0004 /* NAMEPREP */
 #define MDN_UNASCHECK 0x0008 /* Unassigned code point check */
 #define MDN_DELIMMAP  0x0100 /* Delimiter mapping */
@@ -184,14 +184,15 @@ whose length is specified by
 .I actions
 specifies which subprocesses in decoding process take place, as in
 .BR mdn_encodename ,
-except that only \f(CWMDN_IDNCONV\fP and \f(CWMDN_LOCALCONV\fP are allowed.
+except that only \f(CWMDN_IDNCONV\fP, \f(CWMDN_NAMEPREP\fP and
+\f(CWMDN_LOCALCONV\fP are allowed.
 Details of this decoding process can be found in the section ``NAME DECODING''.
 .PP
 For ordinary application, the following macro is provided for the convenience.
 .RS 2
 .nf
 .ft CW
-#define MDN_DECODE_APP    (MDN_IDNCONV|MDN_LOCALCONV)
+#define MDN_DECODE_APP    (MDN_IDNCONV|MDN_NAMEPREP|MDN_LOCALCONV)
 .ft R
 .fi
 .RE
@@ -220,11 +221,11 @@ The source encoding must be one of the two encodings below:
 .IP \- 2
 The application's local encoding (codeset).
 .IP \- 2
-The alternate encoding specified by the configuration file.
+ACE specified by the configuration file.
 .RE
 The latter is suppored because name decoding process may produce
-strings in the alternate encoding when its attempt to convert to the
-local encoding fails.  See the section ``NAME DECODING'' for details.
+ACE strings when its attempt to convert to the local encoding fails.
+See the section ``NAME DECODING'' for details.
 .IP "(2) Local mapping"
 Apply any locale/language-specific mapping.  This process is
 further divided into two subprocesses:
@@ -259,12 +260,12 @@ UTF-8 format.
 .SH "NAME DECODING"
 Name decoding is a reverse process of the name encoding.
 It transforms the specified
-multilingual domain name in a special encoding  suitable for name
+multilingual domain name in a special encoding suitable for name
 resolution to the normal name string in the application's current codeset.
 However, name encoding and name decoding are not symmetric.
-Name encoding involves NAMEPREP and local mapping in order for the names
-to be normalized, but name decoding presumes the name is already
-in normalized form, so these subprocesses are not in the decoding process.
+Name decoding doesn't perform local mapping.
+Both name encoding and decoding do NAMEPREP, but decoding does
+it to verfiy a name, while encoding does it to normalize a name.
 .PP
 .BR libmdn 's
 name decoding process consists of the following steps.
@@ -272,7 +273,14 @@ name decoding process consists of the following steps.
 Convert the encoding of the given domain name
 from a special one designed for representing
 multilingual domain names (ACE) to Unicode/ISO10646 UTF-8.
-.IP "(2) Encoding conversion (UCS to local codeset)"
+.IP "(2) NAMEPREP check"
+Perform name preparation (NAMEPREP) as also done in name encoding,
+and compare the result of NAMEPREP and the given UCS name.
+If the NAMEPREP is failed or the names are different, the given
+name is considered as invalid domain name.
+It contains a character which is never seen in a NAMEPREPed domain
+name.
+.IP "(3) Encoding conversion (UCS to local codeset)"
 Convert the encoding of the name from UTF-8 to
 the application's local codeset.
 The local codeset is determined by the application's locale.
@@ -280,9 +288,8 @@ The local codeset is determined by the application's locale.
 However, it is possible that the conversion to the application's
 local codeset fails because the name includes some characters
 which don't have mappings to the local codeset.
-In this case, libmdn tries instead to convert to an encoding
-called ``alternate encoding,'' which is specified by the
-configuration file.  
+In this case, libmdn tries instead to convert to ACE specified by
+the configuration file.  
 .PP
 The configuration parameters for this process,
 are also read from the configuration file
index bb0c9fd2443cc75210bd6e80037419fe3d992aff..c9c17220031046ed7c8cbbd72e245c77c56daec0 100644 (file)
@@ -1,4 +1,4 @@
-.\" $Id: mdn.conf.5.in,v 1.1 2001/06/09 00:30:33 tale Exp $"
+.\" $Id: mdn.conf.5.in,v 1.2 2002/02/08 05:40:57 marka Exp $"
 .\"
 .\" Copyright (c) 2000,2001 Japan Network Information Center.
 .\" All rights reserved.
@@ -9,8 +9,8 @@
 .\" 
 .\" The following License Terms and Conditions apply, unless a different
 .\" license is obtained from Japan Network Information Center ("JPNIC"),
-.\" a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku,
-.\" Tokyo, Japan.
+.\" a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda,
+.\" Chiyoda-ku, Tokyo 101-0047, Japan.
 .\" 
 .\" 1. Use, Modification and Redistribution (including distribution of any
 .\"    modified or derived work) in source and/or binary forms is permitted
@@ -101,9 +101,6 @@ specifies the parameters for these tasks, such as:
 the encoding of internationalized domain names (IDN encoding).
 .IP \- 2
 NAMEPREP schemes.
-.IP \- 2
-the alternative encoding which is used in case the domain name in
-the IDN encoding cannot be convertible to the local encoding.
 .RE
 .\"
 .SH SYNTAX
@@ -135,24 +132,12 @@ The syntax of this entry is:
 names can be specified.
 .RS 2
 .IP "\(bu" 2
-``RACE''
-.IP "\(bu" 2
-``BRACE''
+``AMC-ACE-Z''
 .IP "\(bu" 2
-``LACE''
+``RACE''
 .IP "\(bu" 2
 ``DUDE''
 .IP "\(bu" 2
-``UTF-6''
-.IP "\(bu" 2
-``AltDUDE''
-.IP "\(bu" 2
-``AMC-ACE-M''
-.IP "\(bu" 2
-``AMC-ACE-O''
-.IP "\(bu" 2
-``AMC-ACE-R''
-.IP "\(bu" 2
 ``UTF-8''
 .IP "\(bu" 2
 Codeset names which iconv_open() library function accepts.  Please
@@ -185,13 +170,17 @@ the following
 can be specified.
 .RS 2
 .IP "\(bu" 2
-``nameprep-02''
-.br
-This version refers to Internet Draft ``draft-ietf-idn-nameprep-02.txt''.
-.IP "\(bu" 2
 ``nameprep-03''
 .br
 This version refers to Internet Draft ``draft-ietf-idn-nameprep-03.txt''.
+.IP "\(bu" 2
+``nameprep-05''
+.br
+This version refers to Internet Draft ``draft-ietf-idn-nameprep-05.txt''.
+.IP "\(bu" 2
+``nameprep-06''
+.br
+This version refers to Internet Draft ``draft-ietf-idn-nameprep-06.txt''.
 .RE
 .PP
 The NAMEPREP process consists of the following 3 subprocesses.
@@ -240,12 +229,15 @@ The syntax of this entry is:
 specifies the mapping scheme, and currently available schemes are:
 .RS 2
 .TP 4
-\f(CWnameprep-02\fP
-Specify mapping defined by NAMEPREP-02 draft.
-.TP 4
 \f(CWnameprep-03\fP
 Specify mapping defined by NAMEPREP-03 draft.
 .TP 4
+\f(CWnameprep-05\fP
+Specify mapping defined by NAMEPREP-05 draft.
+.TP 4
+\f(CWnameprep-06\fP
+Specify mapping defined by NAMEPREP-06 draft.
+.TP 4
 \f(CWfilemap:\fP\fIpathname\fP
 Specify mapping defined by the file \fIpathname\fP.
 See ``MAPFILE FORMAT'' for the format of this file.
@@ -271,37 +263,24 @@ is the normalization scheme, and following shows the currently available
 schemes:
 .RS 2
 .TP 4
-\f(CWnameprep-02\fP
-Synonim for \f(CWunicode-form-kc\fR.
-.TP 4
 \f(CWnameprep-03\fP
-Synonim for \f(CWunicode-form-kc\fR.
-.TP 4
-\f(CWascii-lowercase\fP
-Convert ASCII uppercase letters to lowercase.
+Synonim for \f(CWunicode-form-kc/3.0.1\fR.
 .TP 4
-\f(CWascii-uppercase\fP
-Convert ASCII lowercase letters to uppercase.
+\f(CWnameprep-05\fP
+Synonim for \f(CWunicode-form-kc/3.1.0\fR.
 .TP 4
-\f(CWunicode-lowercase\fP
-Convert Unicode uppercase letters to lowercase, based on ``Unicode
-Technical Report #21: Case Mappings''.
-Note that only locale-independent conversion is supported.
+\f(CWnameprep-06\fP
+Synonim for \f(CWunicode-form-kc/3.1.0\fR.
 .TP 4
-\f(CWunicode-uppercase\fP
-Convert Unicode lowercase letters to uppercase, based on ``Unicode
-Technical Report #21: Case Mappings''.
-Note that only locale-independent conversion is supported.
-.TP 4
-\f(CWunicode-foldcase\fP
-Perform Unicode case-folding for case-less string matching,
-which is also defined by ``Unicode Technical Report #21: Case Mappings''.
+\f(CWunicode-form-kc\fP
+Perform Unicode normalization called ``Unicode Normalization Form KC'',
+defined by the latest standard.
 .TP 4
-\f(CWunicode-form-c\fP
-Perform Unicode normalization called ``Unicode Normalization Form C''.
+\f(CWunicode-form-kc/3.0.1\fP
+Perform Unicode Normalization Form KC defined by Unicode 3.0.1.
 .TP 4
-\f(CWunicode-form-kc\fP
-Perform Unicode normalization called ``Unicode Normalization Form KC''.
+\f(CWunicode-form-kc/3.1.0\fP
+Perform Unicode Normalization Form KC defined by Unicode 3.1.0.
 .RE
 .PP
 More than one
@@ -324,12 +303,15 @@ specifies the set of prohibited characters.  Currently following sets
 can be specified.
 .RS 2
 .TP 4
-\f(CWnameprep-02\fP
-Specify set of prohibited characters defined by NAMEPREP-02 draft.
-.TP 4
 \f(CWnameprep-03\fP
 Specify set of prohibited characters defined by NAMEPREP-03 draft.
 .TP 4
+\f(CWnameprep-05\fP
+Specify set of prohibited characters defined by NAMEPREP-05 draft.
+.TP 4
+\f(CWnameprep-06\fP
+Specify set of prohibited characters defined by NAMEPREP-06 draft.
+.TP 4
 \f(CWfileset:\fP\fIpathname\fP
 Specify set of prohibited characters defined by the file \fIpathname\fP.
 See ``SETFILE FORMAT '' for the format of this file.
@@ -355,12 +337,15 @@ specifies the set of unassigned characters.  Currently following sets
 can be specified.
 .RS 2
 .TP 4
-\f(CWnameprep-02\fP
-Specify set of unassigned characters defined by NAMEPREP-02 draft.
-.TP 4
 \f(CWnameprep-03\fP
 Specify set of unassigned characters defined by NAMEPREP-03 draft.
 .TP 4
+\f(CWnameprep-05\fP
+Specify set of unassigned characters defined by NAMEPREP-05 draft.
+.TP 4
+\f(CWnameprep-06\fP
+Specify set of unassigned characters defined by NAMEPREP-06 draft.
+.TP 4
 \f(CWfileset:\fP\fIpathname\fP
 Specify set of unassigned characters defined by the file \fIpathname\fP.
 See ``SETFILE FORMAT '' for the format of this file.
@@ -371,31 +356,6 @@ When more than one
 are specified, a character is considered unassigned if it belongs to
 any one of those sets.
 .\"
-.SH "ALTERNATE-ENCODING ENTRY"
-mDNkit provides local codeset coversion feature, and in domain name
-decoding process, multilingual domain names are converted to the
-local codeset the application is using.
-However, it is possible that the conversion fails because some
-characters in the domain names have no mapping to the local codeset.
-This occurs, for example, when a Japanese application using Japanese
-codeset receives a DNS reply containing Chinese characters which
-are not included in the Japanese character set.
-.PP
-Alternative encoding entry specifies the codeset name to be used
-instead of the local codeset in case the above problem happens.
-.PP
-The syntax of this entry is:
-.PP
-.RS 4
-.nf
-\f(CWalternate-encoding \fP\fIencoding\fP
-.fi
-.RE
-.PP
-.I encoding
-is the name of the codeset.  It must be an ASCII-compatible
-encoding (ACE) such as ``RACE''.
-.\"
 .SH "ENCODING-ALIAS-FILE ENTRY"
 Encoding alias entry specifies the file containing codeset name aliases.
 The aliases can be used just as the real names.
@@ -577,11 +537,8 @@ The following shows a sample configuration file.
 # Use RACE as the IDN encoding.
 idn-encoding RACE
 
-# Use draft-ietf-idn-nameprep-03.txt as NAMEPREP.
-nameprep nameprep-03
-
-# Use BRACE as the alternative encoding.
-alternate-encoding BRACE
+# Use draft-ietf-idn-nameprep-06.txt as NAMEPREP.
+nameprep nameprep-06
 
 # Regard U+3002 (IDEOGRAPHIC FULL STOP) and U+FF0E
 # (FULLWIDTH FULL STOP) as the domain component delimiter
index 1af5998262b851cc39893af53cb7ae52caddc8e8..d2d79452c725f9b9a8219c32097f639277d3e62b 100644 (file)
@@ -1,4 +1,4 @@
-# $Id: Makefile.in,v 1.1 2001/06/09 00:30:34 tale Exp $
+# $Id: Makefile.in,v 1.2 2002/02/08 05:40:59 marka Exp $
 #
 # Copyright (c) 2000 Japan Network Information Center.  All rights reserved.
 #  
@@ -8,8 +8,8 @@
 # 
 # The following License Terms and Conditions apply, unless a different
 # license is obtained from Japan Network Information Center ("JPNIC"),
-# a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku,
-# Tokyo, Japan.
+# a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda,
+# Chiyoda-ku, Tokyo 101-0047, Japan.
 # 
 # 1. Use, Modification and Redistribution (including distribution of any
 #    modified or derived work) in source and/or binary forms is permitted
index 972641ac629fc8db86923bb0663d9e832b5eefb2..bebe711bdeccf797fa75bdea97e6f1fab311e653 100644 (file)
@@ -1,4 +1,4 @@
-# $Id: jp.map,v 1.1 2001/06/09 00:30:34 tale Exp $
+# $Id: jp.map,v 1.2 2002/02/08 05:41:00 marka Exp $
 # Copyright (c) 2001 Japan Network Information Center.  All rights reserved.
 #  
 # By using this file, you agree to the terms and conditions set forth bellow.
@@ -7,8 +7,8 @@
 # 
 # The following License Terms and Conditions apply, unless a different
 # license is obtained from Japan Network Information Center ("JPNIC"),
-# a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku,
-# Tokyo, Japan.
+# a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda,
+# Chiyoda-ku, Tokyo 101-0047, Japan.
 # 
 # 1. Use, Modification and Redistribution (including distribution of any
 #    modified or derived work) in source and/or binary forms is permitted
index bfe2e9230c5a50ca772a37bf3ee6ae69ac05efdc..fdad8ada405cf09950de1d3df24debe11896aebf 100644 (file)
@@ -1,4 +1,4 @@
-# $Id: Makefile.in,v 1.1 2001/06/09 00:30:35 tale Exp $
+# $Id: Makefile.in,v 1.2 2002/02/08 05:41:01 marka Exp $
 # Makefile for mDNS Proxy Server
 #
 # Copyright (c) 2000 Japan Network Information Center.  All rights reserved.
@@ -9,8 +9,8 @@
 # 
 # The following License Terms and Conditions apply, unless a different
 # license is obtained from Japan Network Information Center ("JPNIC"),
-# a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku,
-# Tokyo, Japan.
+# a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda,
+# Chiyoda-ku, Tokyo 101-0047, Japan.
 # 
 # 1. Use, Modification and Redistribution (including distribution of any
 #    modified or derived work) in source and/or binary forms is permitted
@@ -80,14 +80,15 @@ MKINSTALLDIRS = @top_srcdir@/mkinstalldirs
 SHELL   = @SHELL@
 LIBTOOL = @LIBTOOL@
 
+ICONVINC = @ICONVINC@
+ICONVLIB = @ICONVLIB@
+MDNLIB  = ../lib/libmdn.la
+
 OPTS    =
-INCS    = -I$(srcdir)/../include -I../include
+INCS    = -I$(srcdir)/../include -I../include $(ICONVINC)
 DEFS    = -DUNIX -DCONFIG_PATH="\"$(sysconfdir)\"" -DLOGDIR="\"$(logdir)\""
 CFLAGS  = $(OPTS) $(INCS) $(DEFS) @CFLAGS@
 LDFLAGS = $(OPTS) @LDFLAGS@
-
-MDNLIB  = ../lib/libmdn.la
-ICONVLIB = @ICONVLIB@
 LIBS   = @LIBS@
 
 #
index 8614ad95e6f98d4d405d208562bef8b88ce6a835..2e139dd91375e0022c712c7d90ca043b89f22729 100644 (file)
@@ -11,8 +11,8 @@
  * 
  * The following License Terms and Conditions apply, unless a different
  * license is obtained from Japan Network Information Center ("JPNIC"),
- * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku,
- * Tokyo, Japan.
+ * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda,
+ * Chiyoda-ku, Tokyo 101-0047, Japan.
  * 
  * 1. Use, Modification and Redistribution (including distribution of any
  *    modified or derived work) in source and/or binary forms is permitted
@@ -61,7 +61,7 @@
  */
 
 #ifndef lint
-static char *rcsid = "$Id: acl.c,v 1.1 2001/06/09 00:30:35 tale Exp $";
+static char *rcsid = "$Id: acl.c,v 1.2 2002/02/08 05:41:03 marka Exp $";
 #endif
 
 #include <config.h>
index 93f528736b0e05b400c0e2e2ba130da586e4cb56..680ac5749d0eaa56017916e3debde11b6d61cee7 100644 (file)
@@ -11,8 +11,8 @@
  * 
  * The following License Terms and Conditions apply, unless a different
  * license is obtained from Japan Network Information Center ("JPNIC"),
- * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku,
- * Tokyo, Japan.
+ * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda,
+ * Chiyoda-ku, Tokyo 101-0047, Japan.
  * 
  * 1. Use, Modification and Redistribution (including distribution of any
  *    modified or derived work) in source and/or binary forms is permitted
@@ -61,7 +61,7 @@
  */
 
 #ifndef lint
-static char *rcsid = "$Id: logging.c,v 1.1 2001/06/09 00:30:35 tale Exp $";
+static char *rcsid = "$Id: logging.c,v 1.2 2002/02/08 05:41:04 marka Exp $";
 #endif
 
 #include <config.h>
@@ -72,6 +72,10 @@ static char *rcsid = "$Id: logging.c,v 1.1 2001/06/09 00:30:35 tale Exp $";
 #include <stdarg.h>
 #include <time.h>
 
+#ifdef HAVE_UNISTD_H
+#include <unistd.h>
+#endif
+
 #ifdef HAVE_SYSLOG
 #include <syslog.h>
 #endif
@@ -275,63 +279,64 @@ void      log_turnover(void)
        timeToTurnOver = 0;
        log_trace_printf("--- log file turned over\n");
        log_terminate() ;
+       logFptr = fopen(logFname, "a") ;
     }
 }
 
 /*
- * libmdn_logproc_file - log hander for libmdn
+ * libmdn_logproc - log hander for libmdn
  *     output message to a regular log file.
  */
 static void
-libmdn_logproc_file(int level, const char *buf)
+libmdn_logproc(int level, const char *message)
 {
-    switch (level) {
-    case mdn_log_level_fatal:
-        FATAL((char *)buf);
-        break;
-    case mdn_log_level_warning:
-    case mdn_log_level_info:
-        WARN((char *)buf);
-        break;
-    case mdn_log_level_trace:
-    case mdn_log_level_dump:
-        TRACE((char *)buf);
-        break;
-    }
-}
+    char    buff[512] ;
+    char    *newline;
+    time_t  t;
 
-/*
- * libmdn_logproc_syslog - log hander for libmdn.
- *     output message to syslog.
- */
-static void
-libmdn_logproc_syslog(int level, const char *buf)
-{
+    if (logMode == LOGMODE_SYSLOG) {
 #ifdef HAVE_SYSLOG
-    switch (level) {
-    case mdn_log_level_fatal:
-       syslog(LOG_ERR, "[FATAL] %s", buf);
-       break;
-    case mdn_log_level_error:
-       syslog(LOG_ERR, "[ERROR] %s", buf);
-       break;
-    case mdn_log_level_warning:
-       syslog(LOG_WARNING, "[WARNING] %s", buf);
-       break;
-    case mdn_log_level_info:
-       syslog(LOG_INFO, "[INFO] %s", buf);
-       break;
-    case mdn_log_level_trace:
-       syslog(LOG_DEBUG, "[TRACE] %s", buf);
-       break;
-    case mdn_log_level_dump:
-       syslog(LOG_DEBUG, "[DUMP] %s", buf);
-       break;
-    default:
-       syslog(LOG_NOTICE, "[LEVEL%d] %s", level, buf);
-       break;
-    }
+       switch (level) {
+       case mdn_log_level_fatal:
+           syslog(LOG_ERR, "[FATAL] %s", message);
+           break;
+       case mdn_log_level_error:
+           syslog(LOG_ERR, "[ERROR] %s", message);
+           break;
+       case mdn_log_level_warning:
+           syslog(LOG_WARNING, "[WARNING] %s", message);
+           break;
+       case mdn_log_level_info:
+           syslog(LOG_INFO, "[INFO] %s", message);
+           break;
+       case mdn_log_level_trace:
+           syslog(LOG_DEBUG, "[TRACE] %s", message);
+           break;
+       case mdn_log_level_dump:
+           syslog(LOG_DEBUG, "[DUMP] %s", message);
+           break;
+       default:
+           syslog(LOG_NOTICE, "[LEVEL%d] %s", level, message);
+           break;
+       }
 #endif /* HAVE_SYSLOG */
+
+    } else if (logMode == LOGMODE_STDERR) {
+       fputs(message, logFptr) ;
+       fflush(logFptr) ;
+
+    } else if (logFptr != NULL) {
+       t = time(NULL);
+       strcpy(buff, ctime(&t));
+       newline = strchr(buff, '\n');
+       if (newline != NULL)
+           *newline = '\0';
+
+       fputs(buff, logFptr);
+       fprintf(logFptr, " [%d]: ", (int)getpid());
+       fputs(message, logFptr) ;
+       fflush(logFptr) ;
+    }
 }
 
 /*
@@ -366,6 +371,8 @@ libmdn_string_to_loglevel(char *s)
 static void    log_vprintf(int level, char *fmt, va_list arg_ptr)
 {
     char    buff[512] ;
+    char    *newline;
+    time_t  t;
     
     if (logLevel < level) {
        return;
@@ -375,14 +382,9 @@ static void        log_vprintf(int level, char *fmt, va_list arg_ptr)
      * format message
      */
      
-    vsprintf(buff, fmt, arg_ptr) ;
-
-#ifdef  DEBUG
-    printf("%s", buff) ;
-    fflush(stdout)    ;
-#endif
-
     if (logMode == LOGMODE_SYSLOG) {
+       vsprintf(buff, fmt, arg_ptr) ;
+
 #ifdef HAVE_SYSLOG
        switch (level) {
        case LOGLEVEL_FATAL:
@@ -396,8 +398,21 @@ static void        log_vprintf(int level, char *fmt, va_list arg_ptr)
            break;
        }
 #endif /* HAVE_SYSLOG */
+
+    } else if (logMode == LOGMODE_STDERR) {
+       vfprintf(logFptr, fmt, arg_ptr) ;
+       fflush(logFptr) ;
+
     } else if (logFptr != NULL) {
-       fputs(buff, logFptr) ;
+       t = time(NULL);
+       strcpy(buff, ctime(&t));
+       newline = strchr(buff, '\n');
+       if (newline != NULL)
+           *newline = '\0';
+
+       fputs(buff, logFptr);
+       fprintf(logFptr, " [%d]: ", (int)getpid());
+       vfprintf(logFptr, fmt, arg_ptr);
        fflush(logFptr) ;
     }
 
@@ -462,8 +477,9 @@ BOOL    log_configure(int ac, char *av[])
        }
     }
     if (fn != NULL) {
-       if (strlen(fn) + 1 < sizeof(logFname)) {
-               WARN("log_configure - too long log file name \"%.100s...\"\n",
+       if (strlen(fn) + 1 > sizeof(logFname)) {
+               fprintf(stderr,
+                   "log_configure - too long log file name \"%.100s...\"\n",
                     fn);
            return FALSE;
        }
@@ -471,7 +487,8 @@ BOOL    log_configure(int ac, char *av[])
 
     } else if (config_query_value(KW_LOG_FILE, &nArgs, &aArgs, &lineNo)) {
        if (nArgs != 2) {
-           WARN("log_configure - wrong # of args for \"%s\", line %d\n", 
+           fprintf(stderr,
+               "log_configure - wrong # of args for \"%s\", line %d\n", 
                KW_LOG_FILE, lineNo);
            return FALSE;
        }
@@ -482,12 +499,14 @@ BOOL    log_configure(int ac, char *av[])
        int level ;
 
        if (nArgs != 2) {
-           WARN("log_configure - wrong # of args for \"%s\", line %d\n",
+           fprintf(stderr,
+               "log_configure - wrong # of args for \"%s\", line %d\n",
                KW_LOG_LEVEL, lineNo);
            return FALSE;
        }
        if ((level = log_strtolevel(aArgs[1])) < 0) {
-           WARN("log_configure - invalid log level \"%.100s\", line %d\n",
+           fprintf(stderr,
+               "log_configure - invalid log level \"%.100s\", line %d\n",
                aArgs[1], lineNo);
            return FALSE;
        }
@@ -498,12 +517,14 @@ BOOL    log_configure(int ac, char *av[])
        int level;
 
        if (nArgs != 2) {
-           WARN("wrong # of args for \"%s\", line %d\n", KW_MDN_LOG_LEVEL,
+           fprintf(stderr,
+               "wrong # of args for \"%s\", line %d\n", KW_MDN_LOG_LEVEL,
                lineNo);
            return FALSE;
        }
        if ((level = libmdn_string_to_loglevel(aArgs[1])) < 0) {
-           WARN("unknown mdn log level \"%.100s\", line %d\n", aArgs[1],
+           fprintf(stderr,
+               "unknown mdn log level \"%.100s\", line %d\n", aArgs[1],
                lineNo);
            return FALSE;
        }
@@ -514,11 +535,13 @@ BOOL    log_configure(int ac, char *av[])
     if (config_query_value(KW_SYSLOG_FACILITY, &nArgs, &aArgs, &lineNo)
        == TRUE) {
        if (nArgs != 2) {
-           WARN("log_configure - wrong # of args for \"%s\", line %d\n",
+           fprintf(stderr,
+               "log_configure - wrong # of args for \"%s\", line %d\n",
                KW_LOG_LEVEL, lineNo);
            return FALSE;
        } else if (!log_strtofacility(aArgs[1], &logFacility)) {
-           WARN("log_configure - unknown syslog facility \"%.100s\", "
+           fprintf(stderr,
+               "log_configure - unknown syslog facility \"%.100s\", "
                "line %d\n", aArgs[1], lineNo);
            return FALSE;
        }
@@ -526,7 +549,7 @@ BOOL    log_configure(int ac, char *av[])
 #endif /* HAVE_SYSLOG */
 
     if (*logFname == '\0') {
-       WARN("log_configure - no logging file specified\n");
+       fprintf(stderr, "log_configure - no logging file specified\n");
         return FALSE;
     }
 
@@ -535,23 +558,27 @@ BOOL    log_configure(int ac, char *av[])
        logMode = LOGMODE_SYSLOG;
        logFptr = NULL;
        openlog("mdnsproxy", LOG_NDELAY | LOG_PID, logFacility);
-       mdn_log_setproc(libmdn_logproc_syslog);
        syslog(LOG_NOTICE, "** mdnsproxy version %s", mdn_version_getstring());
 #else /* not HAVE_SYSLOG */
-       WARN("log_configure - syslog is unavailable\n");
+       fprintf(stderr, "log_configure - syslog is unavailable\n");
        return FALSE;
 #endif /* not HAVE_SYSLOG */
+    } else if (strcmp(logFname, "stderr") == 0) {
+       logMode = LOGMODE_STDERR;
+       logFptr = stderr;
     } else {
        logMode = LOGMODE_FILE;
        logFptr = fopen(logFname, "a") ;
-       mdn_log_setproc(libmdn_logproc_file);
        if (logFptr == NULL) {
-           WARN("log_configure - cannot open, the log file\"%.100s\"\n",
+           fprintf(stderr,
+               "log_configure - cannot open, the log file\"%.100s\"\n",
                logFname);
            return FALSE;
        }
-       WARN("** mdnsproxy version %s\n", mdn_version_getstring());
+       fprintf(stderr, "** mdnsproxy version %s\n", mdn_version_getstring());
     }
 
+    mdn_log_setproc(libmdn_logproc);
+
     return TRUE;
 }
index d744dd584a9d0ca0a229b109040d09ecc50246f7..63922e9d8cf1744974f10f4cd74f27f293061149 100644 (file)
@@ -1,7 +1,7 @@
 #
 # Makefile for mDNS Proxy Server, WINNT version
 #
-# $Id: make.wnt,v 1.1 2001/06/09 00:30:35 tale Exp $
+# $Id: make.wnt,v 1.2 2002/02/08 05:41:05 marka Exp $
 #
 # Copyright (c) 2000 Japan Network Information Center.  All rights reserved.
 #  
@@ -11,8 +11,8 @@
 # 
 # The following License Terms and Conditions apply, unless a different
 # license is obtained from Japan Network Information Center ("JPNIC"),
-# a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku,
-# Tokyo, Japan.
+# a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda,
+# Chiyoda-ku, Tokyo 101-0047, Japan.
 # 
 # 1. Use, Modification and Redistribution (including distribution of any
 #    modified or derived work) in source and/or binary forms is permitted
index fa094b407c61014f578fccdd23264f7828cac129..7e05ec07bdcd45a23df977129b164bd1db1a023e 100644 (file)
@@ -1,4 +1,4 @@
-.\" $Id: mdnsproxy.8.in,v 1.1 2001/06/09 00:30:35 tale Exp $
+.\" $Id: mdnsproxy.8.in,v 1.2 2002/02/08 05:41:07 marka Exp $
 .\"
 .\"  Copyright (c) 2000 Japan Network Information Center.  All rights reserved.
 .\"   
@@ -8,8 +8,8 @@
 .\"  
 .\"  The following License Terms and Conditions apply, unless a different
 .\"  license is obtained from Japan Network Information Center ("JPNIC"),
-.\"  a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku,
-.\"  Tokyo, Japan.
+.\"  a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda,
+.\"  Chiyoda-ku, Tokyo 101-0047, Japan.
 .\"  
 .\"  1. Use, Modification and Redistribution (including distribution of any
 .\"     modified or derived work) in source and/or binary forms is permitted
@@ -163,6 +163,8 @@ Sending SIGHUP causes mdnsproxy to close the log file and then reopen it.
 .PP
 If <path> is set to ``syslog'', mdnsproxy outputs log messages with
 syslog.
+If <path> is set to ``stderr'', mdnsproxy outputs messages to standard
+error.
 .RE
 .IP "log-level <Level>"
 .RS
index fe344599d7cfdefe852beb462ec5eaa02ed05202..7b5b0607b1b39e5434f52df7a96321dc29247ccd 100644 (file)
@@ -1,4 +1,4 @@
-# $Id: mdnsproxy.conf.sample,v 1.1 2001/06/09 00:30:35 tale Exp $
+# $Id: mdnsproxy.conf.sample,v 1.2 2002/02/08 05:41:08 marka Exp $
 #
 # Sample mdnsproxy configuration file 'mdnsproxy.conf'.
 #
@@ -56,11 +56,12 @@ client-encoding Shift_JIS
 
 #
 # 'log-file' entry specifies the pathname of the log file.  If the string
-# `syslog' is given, mdnsproxy will record its events with syslog.
+# `syslog' is given, mdnsproxy will record its events with syslog.  If
+# `stderr' is given, mdnsproxy will record events to standard error.
 #  If the entry is not specified, default log file will be used.
 #
 # syntax)
-#      log-file (<pathname> | syslog)
+#      log-file (<pathname> | syslog | stderr)
 #
 #log-file    /var/log/mdnsproxy.log
 
index c63a8cdea3a6671317cb280f299c5256ce8a5f4e..6231910f7d8f80be45b5ae8fbe0489b4ae0c006e 100644 (file)
@@ -11,8 +11,8 @@
  * 
  * The following License Terms and Conditions apply, unless a different
  * license is obtained from Japan Network Information Center ("JPNIC"),
- * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku,
- * Tokyo, Japan.
+ * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda,
+ * Chiyoda-ku, Tokyo 101-0047, Japan.
  * 
  * 1. Use, Modification and Redistribution (including distribution of any
  *    modified or derived work) in source and/or binary forms is permitted
@@ -60,7 +60,7 @@
  *    jurisdiction and venue of Tokyo District Court of Japan.
  */
 
-/* $Id: mdnsproxy.h,v 1.1 2001/06/09 00:30:35 tale Exp $ */
+/* $Id: mdnsproxy.h,v 1.2 2002/02/08 05:41:09 marka Exp $ */
 
 #ifndef DNSPROXY_H
 #define DNSPROXY_H 1
@@ -93,7 +93,8 @@
 
 enum {
     LOGMODE_FILE = 0,
-    LOGMODE_SYSLOG = 1
+    LOGMODE_SYSLOG = 1,
+    LOGMODE_STDERR = 2
 };
 
 enum {
index deba583c25302ed4b27ebea49b64ceffdfdaaa8f..27557b22d9ac2367fe5765060d47956aee247044 100644 (file)
@@ -15,8 +15,8 @@
  * 
  * The following License Terms and Conditions apply, unless a different
  * license is obtained from Japan Network Information Center ("JPNIC"),
- * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku,
- * Tokyo, Japan.
+ * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda,
+ * Chiyoda-ku, Tokyo 101-0047, Japan.
  * 
  * 1. Use, Modification and Redistribution (including distribution of any
  *    modified or derived work) in source and/or binary forms is permitted
@@ -65,7 +65,7 @@
  */
 
 #ifndef lint
-static char *rcsid = "$Id: message.c,v 1.1 2001/06/09 00:30:35 tale Exp $";
+static char *rcsid = "$Id: message.c,v 1.2 2002/02/08 05:41:11 marka Exp $";
 #endif
 
 #include <config.h>
index 30108b8da80745bb659408c29ab3ac39a97acec0..82d07fe534c4b5a6d332d7d6e2db8814402a17b4 100644 (file)
@@ -18,8 +18,8 @@
  * 
  * The following License Terms and Conditions apply, unless a different
  * license is obtained from Japan Network Information Center ("JPNIC"),
- * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku,
- * Tokyo, Japan.
+ * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda,
+ * Chiyoda-ku, Tokyo 101-0047, Japan.
  * 
  * 1. Use, Modification and Redistribution (including distribution of any
  *    modified or derived work) in source and/or binary forms is permitted
@@ -68,7 +68,7 @@
  */
 
 #ifndef lint
-static char *rcsid = "$Id: os2main.c,v 1.1 2001/06/09 00:30:35 tale Exp $";
+static char *rcsid = "$Id: os2main.c,v 1.2 2002/02/08 05:41:12 marka Exp $";
 #endif
 
 #ifdef  OS2
index b528d9fbe245afb214985c8602dfc6017c72442c..e4b53a3e178825967da916ee26ce8218d33f89a7 100644 (file)
@@ -11,8 +11,8 @@
  * 
  * The following License Terms and Conditions apply, unless a different
  * license is obtained from Japan Network Information Center ("JPNIC"),
- * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku,
- * Tokyo, Japan.
+ * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda,
+ * Chiyoda-ku, Tokyo 101-0047, Japan.
  * 
  * 1. Use, Modification and Redistribution (including distribution of any
  *    modified or derived work) in source and/or binary forms is permitted
@@ -61,7 +61,7 @@
  */
 
 #ifndef lint
-static char *rcsid = "$Id: proxycnf.c,v 1.1 2001/06/09 00:30:35 tale Exp $";
+static char *rcsid = "$Id: proxycnf.c,v 1.2 2002/02/08 05:41:14 marka Exp $";
 #endif
 
 #include <config.h>
index c6cc6345853cb815433c4870ced7c5b66a69c1fb..fbdea293cf223916d2374a7127955bf1196268cf 100644 (file)
@@ -11,8 +11,8 @@
  * 
  * The following License Terms and Conditions apply, unless a different
  * license is obtained from Japan Network Information Center ("JPNIC"),
- * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku,
- * Tokyo, Japan.
+ * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda,
+ * Chiyoda-ku, Tokyo 101-0047, Japan.
  * 
  * 1. Use, Modification and Redistribution (including distribution of any
  *    modified or derived work) in source and/or binary forms is permitted
@@ -60,7 +60,7 @@
  *    jurisdiction and venue of Tokyo District Court of Japan.
  */
 
-/* $Id: proxycnf.h,v 1.1 2001/06/09 00:30:35 tale Exp $ */
+/* $Id: proxycnf.h,v 1.2 2002/02/08 05:41:15 marka Exp $ */
 
 #ifndef PROXYCNF_H
 #define PROXYCNF_H 1
index 222b782f65def8fad8d65c97f49e43eb9365d266..36b8b6c70f78955373716eefb46b625d1e7cac53 100644 (file)
@@ -11,8 +11,8 @@
  * 
  * The following License Terms and Conditions apply, unless a different
  * license is obtained from Japan Network Information Center ("JPNIC"),
- * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku,
- * Tokyo, Japan.
+ * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda,
+ * Chiyoda-ku, Tokyo 101-0047, Japan.
  * 
  * 1. Use, Modification and Redistribution (including distribution of any
  *    modified or derived work) in source and/or binary forms is permitted
@@ -61,7 +61,7 @@
  */
 
 #ifndef lint
-static char *rcsid = "$Id: server.c,v 1.1 2001/06/09 00:30:35 tale Exp $";
+static char *rcsid = "$Id: server.c,v 1.2 2002/02/08 05:41:16 marka Exp $";
 #endif
 
 #include <config.h>
@@ -570,7 +570,7 @@ static  NETPTR  initUdp(void)
     setsockopt(sock, SOL_SOCKET, SO_REUSEADDR, &one, sizeof(one)) ;
 
     if (bind(sock, &addr, sizeof(addr)) < 0) {
-        WARN("initUdp- cannot bind UDP socket\n") ;
+        WARN("initUdp - cannot bind UDP socket\n") ;
        close(sock) ;
        return NULL ;
     }
index f3026dcda7112594440273b234cae99637fd2b02..b3e0291f0399ea364762baf0c4bdfcad3f249087 100644 (file)
@@ -7,8 +7,8 @@
  * 
  * The following License Terms and Conditions apply, unless a different
  * license is obtained from Japan Network Information Center ("JPNIC"),
- * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku,
- * Tokyo, Japan.
+ * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda,
+ * Chiyoda-ku, Tokyo 101-0047, Japan.
  * 
  * 1. Use, Modification and Redistribution (including distribution of any
  *    modified or derived work) in source and/or binary forms is permitted
@@ -57,7 +57,7 @@
  */
 
 #ifndef lint
-static char *rcsid = "$Id: translate.c,v 1.1 2001/06/09 00:30:35 tale Exp $";
+static char *rcsid = "$Id: translate.c,v 1.2 2002/02/08 05:41:18 marka Exp $";
 #endif
 
 #include <config.h>
@@ -149,7 +149,7 @@ translate_initialize(void)
      */
     if (!config_query_value(KW_CLIENT_ENCODING, &ac, &av, &lineNo)) {
        WARN("\"%s\" not found in the configuration file\n",
-           KW_ALTERNATE_ENCODING);
+           KW_CLIENT_ENCODING);
        return FALSE;
     }
     if (ac != 2) {
index be7237d9d7ff65af8296e690f4f40936e167bcbb..7431536d6245162c1e8ebe2ba1a1ac4017d6d919 100644 (file)
@@ -11,8 +11,8 @@
  * 
  * The following License Terms and Conditions apply, unless a different
  * license is obtained from Japan Network Information Center ("JPNIC"),
- * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku,
- * Tokyo, Japan.
+ * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda,
+ * Chiyoda-ku, Tokyo 101-0047, Japan.
  * 
  * 1. Use, Modification and Redistribution (including distribution of any
  *    modified or derived work) in source and/or binary forms is permitted
@@ -61,7 +61,7 @@
  */
 
 #ifndef lint
-static char *rcsid = "$Id: unxmain.c,v 1.1 2001/06/09 00:30:35 tale Exp $";
+static char *rcsid = "$Id: unxmain.c,v 1.2 2002/02/08 05:41:19 marka Exp $";
 #endif
 
 #ifdef UNIX
@@ -284,7 +284,6 @@ int     main(int ac, char *av[])
            setsid() ;
            close(0) ;
            close(1) ;
-           close(2) ;
            break ;
         default :
            fprintf(stderr, "start daemon PID %d\n", pid) ;
index a487945279dc9fc21f48baac33d7f53e58e6300c..303ee61e3b8ac80c1bb46effdb033c3685b35cf1 100644 (file)
@@ -28,8 +28,8 @@
  * 
  * The following License Terms and Conditions apply, unless a different
  * license is obtained from Japan Network Information Center ("JPNIC"),
- * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku,
- * Tokyo, Japan.
+ * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda,
+ * Chiyoda-ku, Tokyo 101-0047, Japan.
  * 
  * 1. Use, Modification and Redistribution (including distribution of any
  *    modified or derived work) in source and/or binary forms is permitted
@@ -78,7 +78,7 @@
  */
 
 #ifndef lint
-static char *rcsid = "$Id: winmain.c,v 1.1 2001/06/09 00:30:36 tale Exp $";
+static char *rcsid = "$Id: winmain.c,v 1.2 2002/02/08 05:41:20 marka Exp $";
 #endif
 
 #ifdef  WIN32
index 3e590a3824a5df42f5c5e3b94ef70738273ee0f0..65a5b355f69876822863a0c80965c30b57b504c3 100644 (file)
@@ -11,8 +11,8 @@
  * 
  * The following License Terms and Conditions apply, unless a different
  * license is obtained from Japan Network Information Center ("JPNIC"),
- * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku,
- * Tokyo, Japan.
+ * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda,
+ * Chiyoda-ku, Tokyo 101-0047, Japan.
  * 
  * 1. Use, Modification and Redistribution (including distribution of any
  *    modified or derived work) in source and/or binary forms is permitted
@@ -61,7 +61,7 @@
  */
 
 #ifndef lint
-static char *rcsid = "$Id: winserv.c,v 1.1 2001/06/09 00:30:36 tale Exp $";
+static char *rcsid = "$Id: winserv.c,v 1.2 2002/02/08 05:41:22 marka Exp $";
 #endif
 
 #ifdef  WIN32
index 61496dffa7551358ddf7b35eb41b5c2fcb7d1adf..021d5b2f89704d80c0a1fe7c25e2fbf0e3f88d66 100644 (file)
@@ -11,8 +11,8 @@
  * 
  * The following License Terms and Conditions apply, unless a different
  * license is obtained from Japan Network Information Center ("JPNIC"),
- * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku,
- * Tokyo, Japan.
+ * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda,
+ * Chiyoda-ku, Tokyo 101-0047, Japan.
  * 
  * 1. Use, Modification and Redistribution (including distribution of any
  *    modified or derived work) in source and/or binary forms is permitted
@@ -60,7 +60,7 @@
  *    jurisdiction and venue of Tokyo District Court of Japan.
  */
 
-/* $Id: winserv.h,v 1.1 2001/06/09 00:30:36 tale Exp $ */
+/* $Id: winserv.h,v 1.2 2002/02/08 05:41:23 marka Exp $ */
 
 #ifndef WINSERV_H
 #define WINSERV_H 1
index d8d17b4254bc4fb406412365d00efcb81b061fb2..004629612d6fd1c4c3f9130f25b16931df580344 100644 (file)
@@ -4,7 +4,7 @@
 # Created: 1993-05-16
 # Public domain
 
-# $Id: mkinstalldirs,v 1.1 2001/06/09 00:29:31 tale Exp $
+# $Id: mkinstalldirs,v 1.2 2002/02/08 05:38:46 marka Exp $
 
 errstatus=0
 
diff --git a/contrib/idn/mdnkit/patch/bind9/bind-9.1.3-patch b/contrib/idn/mdnkit/patch/bind9/bind-9.1.3-patch
new file mode 100644 (file)
index 0000000..e1e8a4c
--- /dev/null
@@ -0,0 +1,4442 @@
+MDN patch for bind-9.1.3
+========================
+
+This is a patch file for ISC BIND 9.1.3 to make it work with
+internationalized/multilingual domain names.  With this patch you'll
+get MDN-aware dig/host/nslookup.
+
+To apply this patch, you should go to the top directory of the BIND
+distribution (where you see `README' file), then invoke `patch'
+command like this:
+
+       % patch -p0 < this-file
+
+Then follow the instructions described in `README.mdnkit' to compile
+and install.
+
+
+Index: README.mdnkit
+diff -c /dev/null mdn/othersrc/bind9/README.mdnkit:1.9
+*** README.mdnkit      Mon Aug 27 19:18:29 2001
+--- README.mdnkit      Wed Aug 22 15:19:31 2001
+***************
+*** 0 ****
+--- 1,124 ----
++ 
++                      BIND-9 MDN patch
++ 
++             Japan Network Information Center (JPNIC)
++ 
++ 
++ * What is this patch for?
++ 
++ This patch adds multilingual domain name (MDN) support to BIND-9.
++ You'll get multilingualized version of dig/host/nslookup commands.
++ 
++     + mulltilingualized dig/host/nslookup
++      dig/host/nslookup accepts non-ASCII domain names in the local
++      codeset (such as Shift JIS, Big5 or ISO8859-1) determined by
++      the locale information.  The domain names are normalized and
++      converted to the encoding on the DNS protocol, and sent to DNS
++      servers.  The replies are converted back to the local codeset
++      and displayed.
++ 
++ 
++ * Compilation & installation
++ 
++ 0. Prerequisite
++ 
++ You have to build and install mDNkit before building this patched version
++ of bind-9.
++ 
++ 1. Running configure script
++ 
++ Run `configure' in the top directory.  See `README' for the
++ configuration options.
++ 
++ This patch adds the following 4 options to `configure'.  You should
++ at least specify `--with-mdn' option to enable MDN support.
++ 
++     --with-mdn[=MDN_PREFIX]
++      To enable MDN support, you have to specify `--with-mdn' option.
++      The argument MDN_PREFIX is the install prefix of mDNkit.  If
++      MDN_PREFIX is omitted, PREFIX (derived from `--prefix=PREFIX')
++      is assumed.
++ 
++     --with-libiconv[=LIBICONV_PREFIX]
++      Specify this option if mDNkit you have installed links GNU
++      libiconv.  The argument LIBICONV_PREFIX is install prefix of
++      GNU libiconv.  If the argument is omitted, PREFIX (derived
++      from `--prefix=PREFIX') is assumed.
++ 
++      `--with-libiconv' is shorthand option for GNU libiconv.
++ 
++          --with-libiconv=/usr/local
++ 
++      This is equivalent to:
++ 
++          --with-iconv='-L/usr/local/lib -R/usr/local/lib -liconv'
++ 
++      `--with-libiconv' assumes that your C compiler has `-R'
++      option, and that the option adds the specified run-time path
++      to an exacutable binary.  If `-R' option of your compiler has
++      different meaning, or your compiler lacks the option, you
++      should use `--with-iconv' option instead.  Binary command
++      without run-time path information might be unexecutable.
++      In that case, you would see an error message like:
++ 
++          error in loading shared libraries: libiconv.so.2: cannot
++          open shared object file
++ 
++      If both `--with-libiconv' and `--with-iconv' options are
++      specified, `--with-iconv' is prior to `--with-libiconv'.
++ 
++     --with-iconv=ICONV_LIBSPEC
++      If your libc doens't provide iconv(), you need to specify the
++      library containing iconv() with this option.  `ICONV_LIBSPEC'
++      is the argument(s) to `cc' or `ld' to link the library, for
++      example, `--with-iconv="-L/usr/local/lib -liconv"'.
++      You don't need to specify the header file directory for "iconv.h"
++      to the compiler, as it isn't included directly by bind-9 with
++      this patch.
++ 
++     --with-mdnlib=MDN_LIBSPEC
++      With this option, you can explicitly specify the argument(s)
++      to `cc' or `ld' to link the mDNkit's library, `libmdn'.  If
++      this option is not specified, `-L${PREFIX}/lib -lmdn' is
++      assumed, where ${PREFIX} is the installation prefix specified
++      with `--with-mdn' option above.  You may need to use this
++      option to specify extra argments, for example,
++      `--with-mdnlib="-L/usr/local/lib -R/usr/local/lib -lmdn"'.
++ 
++ Please consult `README' for other configuration options.
++ 
++ Note that if you want to specify some extra header file directories,
++ you should use the environment variable STD_CINCLUDES instead of
++ CFLAGS, as described in README.
++ 
++ 2. Compilation and installation
++ 
++ After running "configure", just do
++ 
++      make
++      make install
++ 
++ for compiling and installing.
++ 
++ 3. Resolver configuration
++ 
++ To handle multilingual domain names, you have to specify the
++ properties like:
++      + name encoding used in DNS protocol data
++      + normalization (NAMEPREP) schemes
++ These properties are specified by the mDNkit's configuration file,
++ "mdn.conf".  You have to create and set up the file properly.  The
++ pathname of the file and contents are described in the manual
++ "mdn.conf".
++ 
++ 
++ * Contact information
++ 
++ Please see http//www.nic.ad.jp/jp/research/idn/ for the latest news
++ about mDNkit and this patch.
++ 
++ Bug reports and comments on this kit should be sent to
++ mdnkit-bugs@nic.ad.jp and idn-cmt@nic.ad.jp, respectively.
++ 
++ 
++ ; $Id: bind-9.1.3-patch,v 1.1 2002/02/08 05:41:25 marka Exp $
+Index: config.h.in
+diff -c mdn/othersrc/bind9/config.h.in:1.1.1.5 mdn/othersrc/bind9/config.h.in:1.9
+*** config.h.in        Tue Apr 17 14:17:01 2001
+--- config.h.in        Thu Jul 26 16:44:20 2001
+***************
+*** 16,22 ****
+   * WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+   */
+  
+! /* $Id: bind-9.1.3-patch,v 1.1 2002/02/08 05:41:25 marka Exp $ */
+  
+  /***
+   *** This file is not to be included by any public header files, because
+--- 16,22 ----
+   * WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+   */
+  
+! /* $Id: bind-9.1.3-patch,v 1.1 2002/02/08 05:41:25 marka Exp $ */
+  
+  /***
+   *** This file is not to be included by any public header files, because
+***************
+*** 132,137 ****
+--- 132,140 ----
+  /* define if pthread_attr_getstacksize() is available */
+  #undef HAVE_PTHREAD_ATTR_GETSTACKSIZE
+  
++ /* Define if you have the setlocale function.  */
++ #undef HAVE_SETLOCALE
++ 
+  /* Define if you have the <fcntl.h> header file.  */
+  #undef HAVE_FCNTL_H
+  
+***************
+*** 141,146 ****
+--- 144,155 ----
+  /* Define if you have the <linux/prctl.h> header file.  */
+  #undef HAVE_LINUX_PRCTL_H
+  
++ /* Define if you have the <locale.h> header file.  */
++ #undef HAVE_LOCALE_H
++ 
++ /* Define if you have the <sys/select.h> header file.  */
++ #undef HAVE_SYS_SELECT_H
++ 
+  /* Define if you have the <sys/sockio.h> header file.  */
+  #undef HAVE_SYS_SOCKIO_H
+  
+***************
+*** 158,160 ****
+--- 167,173 ----
+  
+  /* Define if you have the socket library (-lsocket).  */
+  #undef HAVE_LIBSOCKET
++ 
++ /* define if mDNkit support is to be included. */
++ #undef WITH_MDN
++ 
+Index: configure
+diff -c mdn/othersrc/bind9/configure:1.1.1.7 mdn/othersrc/bind9/configure:1.10
+*** configure  Thu Jul 26 15:43:19 2001
+--- configure  Thu Jul 26 16:44:20 2001
+***************
+*** 15,21 ****
+  # NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
+  # WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+  
+! # From configure.in Revision: 1.205.2.8 
+  
+  ## libtool.m4 - Configure libtool for the target system. -*-Shell-script-*-
+  ## Copyright (C) 1996-1999, 2000 Free Software Foundation, Inc.
+--- 15,21 ----
+  # NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
+  # WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+  
+! # From configure.in Revision: 1.205.2.9 
+  
+  ## libtool.m4 - Configure libtool for the target system. -*-Shell-script-*-
+  ## Copyright (C) 1996-1999, 2000 Free Software Foundation, Inc.
+***************
+*** 153,158 ****
+--- 153,166 ----
+    --enable-ipv6              use IPv6 [default=autodetect]"
+  ac_help="$ac_help
+    --with-kame[=PATH] use Kame IPv6 [default path /usr/local/v6]"
++ ac_help="$ac_help
++   --with-mdn[=MPREFIX]   enable MDN support using mDNkit [default PREFIX]"
++ ac_help="$ac_help
++   --with-libiconv[=IPREFIX]   GNU libiconv are in IPREFIX [default PREFIX]"
++ ac_help="$ac_help
++   --with-iconv[=LIBSPEC]   specify iconv library [default -liconv]"
++ ac_help="$ac_help
++   --with-mdnlib=ARG    specify libmdn"
+  
+  # Initialize some variables set by options.
+  # The variables have the same names as the options, with
+***************
+*** 693,699 ****
+  fi
+  
+  echo $ac_n "checking host system type""... $ac_c" 1>&6
+! echo "configure:697: checking host system type" >&5
+  
+  host_alias=$host
+  case "$host_alias" in
+--- 701,707 ----
+  fi
+  
+  echo $ac_n "checking host system type""... $ac_c" 1>&6
+! echo "configure:705: checking host system type" >&5
+  
+  host_alias=$host
+  case "$host_alias" in
+***************
+*** 715,721 ****
+  
+  
+  echo $ac_n "checking whether ${MAKE-make} sets \${MAKE}""... $ac_c" 1>&6
+! echo "configure:719: checking whether ${MAKE-make} sets \${MAKE}" >&5
+  set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y%./+-%__p_%'`
+  if eval "test \"`echo '$''{'ac_cv_prog_make_${ac_make}_set'+set}'`\" = set"; then
+    echo $ac_n "(cached) $ac_c" 1>&6
+--- 723,729 ----
+  
+  
+  echo $ac_n "checking whether ${MAKE-make} sets \${MAKE}""... $ac_c" 1>&6
+! echo "configure:727: checking whether ${MAKE-make} sets \${MAKE}" >&5
+  set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y%./+-%__p_%'`
+  if eval "test \"`echo '$''{'ac_cv_prog_make_${ac_make}_set'+set}'`\" = set"; then
+    echo $ac_n "(cached) $ac_c" 1>&6
+***************
+*** 744,750 ****
+  # Extract the first word of "ranlib", so it can be a program name with args.
+  set dummy ranlib; ac_word=$2
+  echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+! echo "configure:748: checking for $ac_word" >&5
+  if eval "test \"`echo '$''{'ac_cv_prog_RANLIB'+set}'`\" = set"; then
+    echo $ac_n "(cached) $ac_c" 1>&6
+  else
+--- 752,758 ----
+  # Extract the first word of "ranlib", so it can be a program name with args.
+  set dummy ranlib; ac_word=$2
+  echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+! echo "configure:756: checking for $ac_word" >&5
+  if eval "test \"`echo '$''{'ac_cv_prog_RANLIB'+set}'`\" = set"; then
+    echo $ac_n "(cached) $ac_c" 1>&6
+  else
+***************
+*** 783,789 ****
+  # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
+  # ./install, which can be erroneously created by make from ./install.sh.
+  echo $ac_n "checking for a BSD compatible install""... $ac_c" 1>&6
+! echo "configure:787: checking for a BSD compatible install" >&5
+  if test -z "$INSTALL"; then
+  if eval "test \"`echo '$''{'ac_cv_path_install'+set}'`\" = set"; then
+    echo $ac_n "(cached) $ac_c" 1>&6
+--- 791,797 ----
+  # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
+  # ./install, which can be erroneously created by make from ./install.sh.
+  echo $ac_n "checking for a BSD compatible install""... $ac_c" 1>&6
+! echo "configure:795: checking for a BSD compatible install" >&5
+  if test -z "$INSTALL"; then
+  if eval "test \"`echo '$''{'ac_cv_path_install'+set}'`\" = set"; then
+    echo $ac_n "(cached) $ac_c" 1>&6
+***************
+*** 844,850 ****
+  # Extract the first word of "ar", so it can be a program name with args.
+  set dummy ar; ac_word=$2
+  echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+! echo "configure:848: checking for $ac_word" >&5
+  if eval "test \"`echo '$''{'ac_cv_path_AR'+set}'`\" = set"; then
+    echo $ac_n "(cached) $ac_c" 1>&6
+  else
+--- 852,858 ----
+  # Extract the first word of "ar", so it can be a program name with args.
+  set dummy ar; ac_word=$2
+  echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+! echo "configure:856: checking for $ac_word" >&5
+  if eval "test \"`echo '$''{'ac_cv_path_AR'+set}'`\" = set"; then
+    echo $ac_n "(cached) $ac_c" 1>&6
+  else
+***************
+*** 900,906 ****
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+  set dummy $ac_prog; ac_word=$2
+  echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+! echo "configure:904: checking for $ac_word" >&5
+  if eval "test \"`echo '$''{'ac_cv_path_ETAGS'+set}'`\" = set"; then
+    echo $ac_n "(cached) $ac_c" 1>&6
+  else
+--- 908,914 ----
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+  set dummy $ac_prog; ac_word=$2
+  echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+! echo "configure:912: checking for $ac_word" >&5
+  if eval "test \"`echo '$''{'ac_cv_path_ETAGS'+set}'`\" = set"; then
+    echo $ac_n "(cached) $ac_c" 1>&6
+  else
+***************
+*** 945,951 ****
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+  set dummy $ac_prog; ac_word=$2
+  echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+! echo "configure:949: checking for $ac_word" >&5
+  if eval "test \"`echo '$''{'ac_cv_path_PERL'+set}'`\" = set"; then
+    echo $ac_n "(cached) $ac_c" 1>&6
+  else
+--- 953,959 ----
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+  set dummy $ac_prog; ac_word=$2
+  echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+! echo "configure:957: checking for $ac_word" >&5
+  if eval "test \"`echo '$''{'ac_cv_path_PERL'+set}'`\" = set"; then
+    echo $ac_n "(cached) $ac_c" 1>&6
+  else
+***************
+*** 1093,1099 ****
+  # was --with-openssl specified?
+  #
+  echo $ac_n "checking for compatible OpenSSL library""... $ac_c" 1>&6
+! echo "configure:1097: checking for compatible OpenSSL library" >&5
+  # Check whether --with-openssl or --without-openssl was given.
+  if test "${with_openssl+set}" = set; then
+    withval="$with_openssl"
+--- 1101,1107 ----
+  # was --with-openssl specified?
+  #
+  echo $ac_n "checking for compatible OpenSSL library""... $ac_c" 1>&6
+! echo "configure:1105: checking for compatible OpenSSL library" >&5
+  # Check whether --with-openssl or --without-openssl was given.
+  if test "${with_openssl+set}" = set; then
+    withval="$with_openssl"
+***************
+*** 1184,1190 ****
+  # was --with-randomdev specified?
+  #
+  echo $ac_n "checking for random device""... $ac_c" 1>&6
+! echo "configure:1188: checking for random device" >&5
+  # Check whether --with-randomdev or --without-randomdev was given.
+  if test "${with_randomdev+set}" = set; then
+    withval="$with_randomdev"
+--- 1192,1198 ----
+  # was --with-randomdev specified?
+  #
+  echo $ac_n "checking for random device""... $ac_c" 1>&6
+! echo "configure:1196: checking for random device" >&5
+  # Check whether --with-randomdev or --without-randomdev was given.
+  if test "${with_randomdev+set}" = set; then
+    withval="$with_randomdev"
+***************
+*** 1231,1237 ****
+  # Extract the first word of "gcc", so it can be a program name with args.
+  set dummy gcc; ac_word=$2
+  echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+! echo "configure:1235: checking for $ac_word" >&5
+  if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
+    echo $ac_n "(cached) $ac_c" 1>&6
+  else
+--- 1239,1245 ----
+  # Extract the first word of "gcc", so it can be a program name with args.
+  set dummy gcc; ac_word=$2
+  echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+! echo "configure:1243: checking for $ac_word" >&5
+  if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
+    echo $ac_n "(cached) $ac_c" 1>&6
+  else
+***************
+*** 1261,1267 ****
+    # Extract the first word of "cc", so it can be a program name with args.
+  set dummy cc; ac_word=$2
+  echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+! echo "configure:1265: checking for $ac_word" >&5
+  if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
+    echo $ac_n "(cached) $ac_c" 1>&6
+  else
+--- 1269,1275 ----
+    # Extract the first word of "cc", so it can be a program name with args.
+  set dummy cc; ac_word=$2
+  echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+! echo "configure:1273: checking for $ac_word" >&5
+  if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
+    echo $ac_n "(cached) $ac_c" 1>&6
+  else
+***************
+*** 1312,1318 ****
+        # Extract the first word of "cl", so it can be a program name with args.
+  set dummy cl; ac_word=$2
+  echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+! echo "configure:1316: checking for $ac_word" >&5
+  if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
+    echo $ac_n "(cached) $ac_c" 1>&6
+  else
+--- 1320,1326 ----
+        # Extract the first word of "cl", so it can be a program name with args.
+  set dummy cl; ac_word=$2
+  echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+! echo "configure:1324: checking for $ac_word" >&5
+  if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
+    echo $ac_n "(cached) $ac_c" 1>&6
+  else
+***************
+*** 1344,1350 ****
+  fi
+  
+  echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6
+! echo "configure:1348: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5
+  
+  ac_ext=c
+  # CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
+--- 1352,1358 ----
+  fi
+  
+  echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6
+! echo "configure:1356: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5
+  
+  ac_ext=c
+  # CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
+***************
+*** 1355,1366 ****
+  
+  cat > conftest.$ac_ext << EOF
+  
+! #line 1359 "configure"
+  #include "confdefs.h"
+  
+  main(){return(0);}
+  EOF
+! if { (eval echo configure:1364: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+    ac_cv_prog_cc_works=yes
+    # If we can't run a trivial program, we are probably using a cross compiler.
+    if (./conftest; exit) 2>/dev/null; then
+--- 1363,1374 ----
+  
+  cat > conftest.$ac_ext << EOF
+  
+! #line 1367 "configure"
+  #include "confdefs.h"
+  
+  main(){return(0);}
+  EOF
+! if { (eval echo configure:1372: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+    ac_cv_prog_cc_works=yes
+    # If we can't run a trivial program, we are probably using a cross compiler.
+    if (./conftest; exit) 2>/dev/null; then
+***************
+*** 1386,1397 ****
+    { echo "configure: error: installation or configuration problem: C compiler cannot create executables." 1>&2; exit 1; }
+  fi
+  echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler""... $ac_c" 1>&6
+! echo "configure:1390: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5
+  echo "$ac_t""$ac_cv_prog_cc_cross" 1>&6
+  cross_compiling=$ac_cv_prog_cc_cross
+  
+  echo $ac_n "checking whether we are using GNU C""... $ac_c" 1>&6
+! echo "configure:1395: checking whether we are using GNU C" >&5
+  if eval "test \"`echo '$''{'ac_cv_prog_gcc'+set}'`\" = set"; then
+    echo $ac_n "(cached) $ac_c" 1>&6
+  else
+--- 1394,1405 ----
+    { echo "configure: error: installation or configuration problem: C compiler cannot create executables." 1>&2; exit 1; }
+  fi
+  echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler""... $ac_c" 1>&6
+! echo "configure:1398: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5
+  echo "$ac_t""$ac_cv_prog_cc_cross" 1>&6
+  cross_compiling=$ac_cv_prog_cc_cross
+  
+  echo $ac_n "checking whether we are using GNU C""... $ac_c" 1>&6
+! echo "configure:1403: checking whether we are using GNU C" >&5
+  if eval "test \"`echo '$''{'ac_cv_prog_gcc'+set}'`\" = set"; then
+    echo $ac_n "(cached) $ac_c" 1>&6
+  else
+***************
+*** 1400,1406 ****
+    yes;
+  #endif
+  EOF
+! if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:1404: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
+    ac_cv_prog_gcc=yes
+  else
+    ac_cv_prog_gcc=no
+--- 1408,1414 ----
+    yes;
+  #endif
+  EOF
+! if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:1412: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
+    ac_cv_prog_gcc=yes
+  else
+    ac_cv_prog_gcc=no
+***************
+*** 1419,1425 ****
+  ac_save_CFLAGS="$CFLAGS"
+  CFLAGS=
+  echo $ac_n "checking whether ${CC-cc} accepts -g""... $ac_c" 1>&6
+! echo "configure:1423: checking whether ${CC-cc} accepts -g" >&5
+  if eval "test \"`echo '$''{'ac_cv_prog_cc_g'+set}'`\" = set"; then
+    echo $ac_n "(cached) $ac_c" 1>&6
+  else
+--- 1427,1433 ----
+  ac_save_CFLAGS="$CFLAGS"
+  CFLAGS=
+  echo $ac_n "checking whether ${CC-cc} accepts -g""... $ac_c" 1>&6
+! echo "configure:1431: checking whether ${CC-cc} accepts -g" >&5
+  if eval "test \"`echo '$''{'ac_cv_prog_cc_g'+set}'`\" = set"; then
+    echo $ac_n "(cached) $ac_c" 1>&6
+  else
+***************
+*** 1455,1461 ****
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+  set dummy $ac_prog; ac_word=$2
+  echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+! echo "configure:1459: checking for $ac_word" >&5
+  if eval "test \"`echo '$''{'ac_cv_prog_YACC'+set}'`\" = set"; then
+    echo $ac_n "(cached) $ac_c" 1>&6
+  else
+--- 1463,1469 ----
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+  set dummy $ac_prog; ac_word=$2
+  echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+! echo "configure:1467: checking for $ac_word" >&5
+  if eval "test \"`echo '$''{'ac_cv_prog_YACC'+set}'`\" = set"; then
+    echo $ac_n "(cached) $ac_c" 1>&6
+  else
+***************
+*** 1490,1503 ****
+  # Find the machine's endian flavor.
+  #
+  echo $ac_n "checking whether byte ordering is bigendian""... $ac_c" 1>&6
+! echo "configure:1494: checking whether byte ordering is bigendian" >&5
+  if eval "test \"`echo '$''{'ac_cv_c_bigendian'+set}'`\" = set"; then
+    echo $ac_n "(cached) $ac_c" 1>&6
+  else
+    ac_cv_c_bigendian=unknown
+  # See if sys/param.h defines the BYTE_ORDER macro.
+  cat > conftest.$ac_ext <<EOF
+! #line 1501 "configure"
+  #include "confdefs.h"
+  #include <sys/types.h>
+  #include <sys/param.h>
+--- 1498,1511 ----
+  # Find the machine's endian flavor.
+  #
+  echo $ac_n "checking whether byte ordering is bigendian""... $ac_c" 1>&6
+! echo "configure:1502: checking whether byte ordering is bigendian" >&5
+  if eval "test \"`echo '$''{'ac_cv_c_bigendian'+set}'`\" = set"; then
+    echo $ac_n "(cached) $ac_c" 1>&6
+  else
+    ac_cv_c_bigendian=unknown
+  # See if sys/param.h defines the BYTE_ORDER macro.
+  cat > conftest.$ac_ext <<EOF
+! #line 1509 "configure"
+  #include "confdefs.h"
+  #include <sys/types.h>
+  #include <sys/param.h>
+***************
+*** 1508,1518 ****
+  #endif
+  ; return 0; }
+  EOF
+! if { (eval echo configure:1512: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+    rm -rf conftest*
+    # It does; now see whether it defined to BIG_ENDIAN or not.
+  cat > conftest.$ac_ext <<EOF
+! #line 1516 "configure"
+  #include "confdefs.h"
+  #include <sys/types.h>
+  #include <sys/param.h>
+--- 1516,1526 ----
+  #endif
+  ; return 0; }
+  EOF
+! if { (eval echo configure:1520: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+    rm -rf conftest*
+    # It does; now see whether it defined to BIG_ENDIAN or not.
+  cat > conftest.$ac_ext <<EOF
+! #line 1524 "configure"
+  #include "confdefs.h"
+  #include <sys/types.h>
+  #include <sys/param.h>
+***************
+*** 1523,1529 ****
+  #endif
+  ; return 0; }
+  EOF
+! if { (eval echo configure:1527: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+    rm -rf conftest*
+    ac_cv_c_bigendian=yes
+  else
+--- 1531,1537 ----
+  #endif
+  ; return 0; }
+  EOF
+! if { (eval echo configure:1535: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+    rm -rf conftest*
+    ac_cv_c_bigendian=yes
+  else
+***************
+*** 1543,1549 ****
+      { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; }
+  else
+    cat > conftest.$ac_ext <<EOF
+! #line 1547 "configure"
+  #include "confdefs.h"
+  main () {
+    /* Are we little or big endian?  From Harbison&Steele.  */
+--- 1551,1557 ----
+      { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; }
+  else
+    cat > conftest.$ac_ext <<EOF
+! #line 1555 "configure"
+  #include "confdefs.h"
+  main () {
+    /* Are we little or big endian?  From Harbison&Steele.  */
+***************
+*** 1556,1562 ****
+    exit (u.c[sizeof (long) - 1] == 1);
+  }
+  EOF
+! if { (eval echo configure:1560: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+  then
+    ac_cv_c_bigendian=no
+  else
+--- 1564,1570 ----
+    exit (u.c[sizeof (long) - 1] == 1);
+  }
+  EOF
+! if { (eval echo configure:1568: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+  then
+    ac_cv_c_bigendian=no
+  else
+***************
+*** 1581,1587 ****
+  
+  
+  echo $ac_n "checking how to run the C preprocessor""... $ac_c" 1>&6
+! echo "configure:1585: checking how to run the C preprocessor" >&5
+  # On Suns, sometimes $CPP names a directory.
+  if test -n "$CPP" && test -d "$CPP"; then
+    CPP=
+--- 1589,1595 ----
+  
+  
+  echo $ac_n "checking how to run the C preprocessor""... $ac_c" 1>&6
+! echo "configure:1593: checking how to run the C preprocessor" >&5
+  # On Suns, sometimes $CPP names a directory.
+  if test -n "$CPP" && test -d "$CPP"; then
+    CPP=
+***************
+*** 1596,1608 ****
+    # On the NeXT, cc -E runs the code through the compiler's parser,
+    # not just through cpp.
+    cat > conftest.$ac_ext <<EOF
+! #line 1600 "configure"
+  #include "confdefs.h"
+  #include <assert.h>
+  Syntax Error
+  EOF
+  ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
+! { (eval echo configure:1606: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+  ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
+  if test -z "$ac_err"; then
+    :
+--- 1604,1616 ----
+    # On the NeXT, cc -E runs the code through the compiler's parser,
+    # not just through cpp.
+    cat > conftest.$ac_ext <<EOF
+! #line 1608 "configure"
+  #include "confdefs.h"
+  #include <assert.h>
+  Syntax Error
+  EOF
+  ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
+! { (eval echo configure:1614: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+  ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
+  if test -z "$ac_err"; then
+    :
+***************
+*** 1613,1625 ****
+    rm -rf conftest*
+    CPP="${CC-cc} -E -traditional-cpp"
+    cat > conftest.$ac_ext <<EOF
+! #line 1617 "configure"
+  #include "confdefs.h"
+  #include <assert.h>
+  Syntax Error
+  EOF
+  ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
+! { (eval echo configure:1623: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+  ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
+  if test -z "$ac_err"; then
+    :
+--- 1621,1633 ----
+    rm -rf conftest*
+    CPP="${CC-cc} -E -traditional-cpp"
+    cat > conftest.$ac_ext <<EOF
+! #line 1625 "configure"
+  #include "confdefs.h"
+  #include <assert.h>
+  Syntax Error
+  EOF
+  ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
+! { (eval echo configure:1631: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+  ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
+  if test -z "$ac_err"; then
+    :
+***************
+*** 1630,1642 ****
+    rm -rf conftest*
+    CPP="${CC-cc} -nologo -E"
+    cat > conftest.$ac_ext <<EOF
+! #line 1634 "configure"
+  #include "confdefs.h"
+  #include <assert.h>
+  Syntax Error
+  EOF
+  ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
+! { (eval echo configure:1640: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+  ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
+  if test -z "$ac_err"; then
+    :
+--- 1638,1650 ----
+    rm -rf conftest*
+    CPP="${CC-cc} -nologo -E"
+    cat > conftest.$ac_ext <<EOF
+! #line 1642 "configure"
+  #include "confdefs.h"
+  #include <assert.h>
+  Syntax Error
+  EOF
+  ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
+! { (eval echo configure:1648: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+  ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
+  if test -z "$ac_err"; then
+    :
+***************
+*** 1661,1672 ****
+  echo "$ac_t""$CPP" 1>&6
+  
+  echo $ac_n "checking for ANSI C header files""... $ac_c" 1>&6
+! echo "configure:1665: checking for ANSI C header files" >&5
+  if eval "test \"`echo '$''{'ac_cv_header_stdc'+set}'`\" = set"; then
+    echo $ac_n "(cached) $ac_c" 1>&6
+  else
+    cat > conftest.$ac_ext <<EOF
+! #line 1670 "configure"
+  #include "confdefs.h"
+  #include <stdlib.h>
+  #include <stdarg.h>
+--- 1669,1680 ----
+  echo "$ac_t""$CPP" 1>&6
+  
+  echo $ac_n "checking for ANSI C header files""... $ac_c" 1>&6
+! echo "configure:1673: checking for ANSI C header files" >&5
+  if eval "test \"`echo '$''{'ac_cv_header_stdc'+set}'`\" = set"; then
+    echo $ac_n "(cached) $ac_c" 1>&6
+  else
+    cat > conftest.$ac_ext <<EOF
+! #line 1678 "configure"
+  #include "confdefs.h"
+  #include <stdlib.h>
+  #include <stdarg.h>
+***************
+*** 1674,1680 ****
+  #include <float.h>
+  EOF
+  ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
+! { (eval echo configure:1678: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+  ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
+  if test -z "$ac_err"; then
+    rm -rf conftest*
+--- 1682,1688 ----
+  #include <float.h>
+  EOF
+  ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
+! { (eval echo configure:1686: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+  ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
+  if test -z "$ac_err"; then
+    rm -rf conftest*
+***************
+*** 1691,1697 ****
+  if test $ac_cv_header_stdc = yes; then
+    # SunOS 4.x string.h does not declare mem*, contrary to ANSI.
+  cat > conftest.$ac_ext <<EOF
+! #line 1695 "configure"
+  #include "confdefs.h"
+  #include <string.h>
+  EOF
+--- 1699,1705 ----
+  if test $ac_cv_header_stdc = yes; then
+    # SunOS 4.x string.h does not declare mem*, contrary to ANSI.
+  cat > conftest.$ac_ext <<EOF
+! #line 1703 "configure"
+  #include "confdefs.h"
+  #include <string.h>
+  EOF
+***************
+*** 1709,1715 ****
+  if test $ac_cv_header_stdc = yes; then
+    # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
+  cat > conftest.$ac_ext <<EOF
+! #line 1713 "configure"
+  #include "confdefs.h"
+  #include <stdlib.h>
+  EOF
+--- 1717,1723 ----
+  if test $ac_cv_header_stdc = yes; then
+    # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
+  cat > conftest.$ac_ext <<EOF
+! #line 1721 "configure"
+  #include "confdefs.h"
+  #include <stdlib.h>
+  EOF
+***************
+*** 1730,1736 ****
+    :
+  else
+    cat > conftest.$ac_ext <<EOF
+! #line 1734 "configure"
+  #include "confdefs.h"
+  #include <ctype.h>
+  #define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
+--- 1738,1744 ----
+    :
+  else
+    cat > conftest.$ac_ext <<EOF
+! #line 1742 "configure"
+  #include "confdefs.h"
+  #include <ctype.h>
+  #define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
+***************
+*** 1741,1747 ****
+  exit (0); }
+  
+  EOF
+! if { (eval echo configure:1745: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+  then
+    :
+  else
+--- 1749,1755 ----
+  exit (0); }
+  
+  EOF
+! if { (eval echo configure:1753: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+  then
+    :
+  else
+***************
+*** 1769,1785 ****
+  do
+  ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
+  echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
+! echo "configure:1773: checking for $ac_hdr" >&5
+  if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
+    echo $ac_n "(cached) $ac_c" 1>&6
+  else
+    cat > conftest.$ac_ext <<EOF
+! #line 1778 "configure"
+  #include "confdefs.h"
+  #include <$ac_hdr>
+  EOF
+  ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
+! { (eval echo configure:1783: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+  ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
+  if test -z "$ac_err"; then
+    rm -rf conftest*
+--- 1777,1793 ----
+  do
+  ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
+  echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
+! echo "configure:1781: checking for $ac_hdr" >&5
+  if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
+    echo $ac_n "(cached) $ac_c" 1>&6
+  else
+    cat > conftest.$ac_ext <<EOF
+! #line 1786 "configure"
+  #include "confdefs.h"
+  #include <$ac_hdr>
+  EOF
+  ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
+! { (eval echo configure:1791: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+  ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
+  if test -z "$ac_err"; then
+    rm -rf conftest*
+***************
+*** 1807,1818 ****
+  
+  
+  echo $ac_n "checking for working const""... $ac_c" 1>&6
+! echo "configure:1811: checking for working const" >&5
+  if eval "test \"`echo '$''{'ac_cv_c_const'+set}'`\" = set"; then
+    echo $ac_n "(cached) $ac_c" 1>&6
+  else
+    cat > conftest.$ac_ext <<EOF
+! #line 1816 "configure"
+  #include "confdefs.h"
+  
+  int main() {
+--- 1815,1826 ----
+  
+  
+  echo $ac_n "checking for working const""... $ac_c" 1>&6
+! echo "configure:1819: checking for working const" >&5
+  if eval "test \"`echo '$''{'ac_cv_c_const'+set}'`\" = set"; then
+    echo $ac_n "(cached) $ac_c" 1>&6
+  else
+    cat > conftest.$ac_ext <<EOF
+! #line 1824 "configure"
+  #include "confdefs.h"
+  
+  int main() {
+***************
+*** 1861,1867 ****
+  
+  ; return 0; }
+  EOF
+! if { (eval echo configure:1865: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+    rm -rf conftest*
+    ac_cv_c_const=yes
+  else
+--- 1869,1875 ----
+  
+  ; return 0; }
+  EOF
+! if { (eval echo configure:1873: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+    rm -rf conftest*
+    ac_cv_c_const=yes
+  else
+***************
+*** 1882,1902 ****
+  fi
+  
+  echo $ac_n "checking for inline""... $ac_c" 1>&6
+! echo "configure:1886: checking for inline" >&5
+  if eval "test \"`echo '$''{'ac_cv_c_inline'+set}'`\" = set"; then
+    echo $ac_n "(cached) $ac_c" 1>&6
+  else
+    ac_cv_c_inline=no
+  for ac_kw in inline __inline__ __inline; do
+    cat > conftest.$ac_ext <<EOF
+! #line 1893 "configure"
+  #include "confdefs.h"
+  
+  int main() {
+  } $ac_kw foo() {
+  ; return 0; }
+  EOF
+! if { (eval echo configure:1900: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+    rm -rf conftest*
+    ac_cv_c_inline=$ac_kw; break
+  else
+--- 1890,1910 ----
+  fi
+  
+  echo $ac_n "checking for inline""... $ac_c" 1>&6
+! echo "configure:1894: checking for inline" >&5
+  if eval "test \"`echo '$''{'ac_cv_c_inline'+set}'`\" = set"; then
+    echo $ac_n "(cached) $ac_c" 1>&6
+  else
+    ac_cv_c_inline=no
+  for ac_kw in inline __inline__ __inline; do
+    cat > conftest.$ac_ext <<EOF
+! #line 1901 "configure"
+  #include "confdefs.h"
+  
+  int main() {
+  } $ac_kw foo() {
+  ; return 0; }
+  EOF
+! if { (eval echo configure:1908: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+    rm -rf conftest*
+    ac_cv_c_inline=$ac_kw; break
+  else
+***************
+*** 1922,1933 ****
+  esac
+  
+  echo $ac_n "checking for size_t""... $ac_c" 1>&6
+! echo "configure:1926: checking for size_t" >&5
+  if eval "test \"`echo '$''{'ac_cv_type_size_t'+set}'`\" = set"; then
+    echo $ac_n "(cached) $ac_c" 1>&6
+  else
+    cat > conftest.$ac_ext <<EOF
+! #line 1931 "configure"
+  #include "confdefs.h"
+  #include <sys/types.h>
+  #if STDC_HEADERS
+--- 1930,1941 ----
+  esac
+  
+  echo $ac_n "checking for size_t""... $ac_c" 1>&6
+! echo "configure:1934: checking for size_t" >&5
+  if eval "test \"`echo '$''{'ac_cv_type_size_t'+set}'`\" = set"; then
+    echo $ac_n "(cached) $ac_c" 1>&6
+  else
+    cat > conftest.$ac_ext <<EOF
+! #line 1939 "configure"
+  #include "confdefs.h"
+  #include <sys/types.h>
+  #if STDC_HEADERS
+***************
+*** 1955,1966 ****
+  fi
+  
+  echo $ac_n "checking whether time.h and sys/time.h may both be included""... $ac_c" 1>&6
+! echo "configure:1959: checking whether time.h and sys/time.h may both be included" >&5
+  if eval "test \"`echo '$''{'ac_cv_header_time'+set}'`\" = set"; then
+    echo $ac_n "(cached) $ac_c" 1>&6
+  else
+    cat > conftest.$ac_ext <<EOF
+! #line 1964 "configure"
+  #include "confdefs.h"
+  #include <sys/types.h>
+  #include <sys/time.h>
+--- 1963,1974 ----
+  fi
+  
+  echo $ac_n "checking whether time.h and sys/time.h may both be included""... $ac_c" 1>&6
+! echo "configure:1967: checking whether time.h and sys/time.h may both be included" >&5
+  if eval "test \"`echo '$''{'ac_cv_header_time'+set}'`\" = set"; then
+    echo $ac_n "(cached) $ac_c" 1>&6
+  else
+    cat > conftest.$ac_ext <<EOF
+! #line 1972 "configure"
+  #include "confdefs.h"
+  #include <sys/types.h>
+  #include <sys/time.h>
+***************
+*** 1969,1975 ****
+  struct tm *tp;
+  ; return 0; }
+  EOF
+! if { (eval echo configure:1973: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+    rm -rf conftest*
+    ac_cv_header_time=yes
+  else
+--- 1977,1983 ----
+  struct tm *tp;
+  ; return 0; }
+  EOF
+! if { (eval echo configure:1981: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+    rm -rf conftest*
+    ac_cv_header_time=yes
+  else
+***************
+*** 1996,2004 ****
+  case $ac_cv_header_unistd_h in
+  yes)
+  echo $ac_n "checking if unistd.h defines fd_set""... $ac_c" 1>&6
+! echo "configure:2000: checking if unistd.h defines fd_set" >&5
+  cat > conftest.$ac_ext <<EOF
+! #line 2002 "configure"
+  #include "confdefs.h"
+  
+  #include <unistd.h>
+--- 2004,2012 ----
+  case $ac_cv_header_unistd_h in
+  yes)
+  echo $ac_n "checking if unistd.h defines fd_set""... $ac_c" 1>&6
+! echo "configure:2008: checking if unistd.h defines fd_set" >&5
+  cat > conftest.$ac_ext <<EOF
+! #line 2010 "configure"
+  #include "confdefs.h"
+  
+  #include <unistd.h>
+***************
+*** 2006,2012 ****
+  fd_set read_set; return (0);
+  ; return 0; }
+  EOF
+! if { (eval echo configure:2010: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+    rm -rf conftest*
+    echo "$ac_t""yes" 1>&6
+        ISC_PLATFORM_NEEDSYSSELECTH="#undef ISC_PLATFORM_NEEDSYSSELECTH"
+--- 2014,2020 ----
+  fd_set read_set; return (0);
+  ; return 0; }
+  EOF
+! if { (eval echo configure:2018: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+    rm -rf conftest*
+    echo "$ac_t""yes" 1>&6
+        ISC_PLATFORM_NEEDSYSSELECTH="#undef ISC_PLATFORM_NEEDSYSSELECTH"
+***************
+*** 2049,2055 ****
+  # First, decide whether to use multithreading or not.
+  #
+  echo $ac_n "checking whether to look for thread support""... $ac_c" 1>&6
+! echo "configure:2053: checking whether to look for thread support" >&5
+  # Check whether --enable-threads or --disable-threads was given.
+  if test "${enable_threads+set}" = set; then
+    enableval="$enable_threads"
+--- 2057,2063 ----
+  # First, decide whether to use multithreading or not.
+  #
+  echo $ac_n "checking whether to look for thread support""... $ac_c" 1>&6
+! echo "configure:2061: checking whether to look for thread support" >&5
+  # Check whether --enable-threads or --disable-threads was given.
+  if test "${enable_threads+set}" = set; then
+    enableval="$enable_threads"
+***************
+*** 2086,2092 ****
+               # experiment with it.
+               CC="gcc"
+               echo $ac_n "checking which NetBSD thread library to use""... $ac_c" 1>&6
+! echo "configure:2090: checking which NetBSD thread library to use" >&5
+  
+               # Check whether --with-ptl2 or --without-ptl2 was given.
+  if test "${with_ptl2+set}" = set; then
+--- 2094,2100 ----
+               # experiment with it.
+               CC="gcc"
+               echo $ac_n "checking which NetBSD thread library to use""... $ac_c" 1>&6
+! echo "configure:2098: checking which NetBSD thread library to use" >&5
+  
+               # Check whether --with-ptl2 or --without-ptl2 was given.
+  if test "${with_ptl2+set}" = set; then
+***************
+*** 2125,2131 ****
+               ;;
+               *)
+                       echo $ac_n "checking for pthread_create in -lpthread""... $ac_c" 1>&6
+! echo "configure:2129: checking for pthread_create in -lpthread" >&5
+  ac_lib_var=`echo pthread'_'pthread_create | sed 'y%./+-%__p_%'`
+  if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
+    echo $ac_n "(cached) $ac_c" 1>&6
+--- 2133,2139 ----
+               ;;
+               *)
+                       echo $ac_n "checking for pthread_create in -lpthread""... $ac_c" 1>&6
+! echo "configure:2137: checking for pthread_create in -lpthread" >&5
+  ac_lib_var=`echo pthread'_'pthread_create | sed 'y%./+-%__p_%'`
+  if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
+    echo $ac_n "(cached) $ac_c" 1>&6
+***************
+*** 2133,2139 ****
+    ac_save_LIBS="$LIBS"
+  LIBS="-lpthread  $LIBS"
+  cat > conftest.$ac_ext <<EOF
+! #line 2137 "configure"
+  #include "confdefs.h"
+  /* Override any gcc2 internal prototype to avoid an error.  */
+  /* We use char because int might match the return type of a gcc2
+--- 2141,2147 ----
+    ac_save_LIBS="$LIBS"
+  LIBS="-lpthread  $LIBS"
+  cat > conftest.$ac_ext <<EOF
+! #line 2145 "configure"
+  #include "confdefs.h"
+  /* Override any gcc2 internal prototype to avoid an error.  */
+  /* We use char because int might match the return type of a gcc2
+***************
+*** 2144,2150 ****
+  pthread_create()
+  ; return 0; }
+  EOF
+! if { (eval echo configure:2148: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+    rm -rf conftest*
+    eval "ac_cv_lib_$ac_lib_var=yes"
+  else
+--- 2152,2158 ----
+  pthread_create()
+  ; return 0; }
+  EOF
+! if { (eval echo configure:2156: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+    rm -rf conftest*
+    eval "ac_cv_lib_$ac_lib_var=yes"
+  else
+***************
+*** 2170,2176 ****
+  else
+    echo "$ac_t""no" 1>&6
+  echo $ac_n "checking for __pthread_create in -lpthread""... $ac_c" 1>&6
+! echo "configure:2174: checking for __pthread_create in -lpthread" >&5
+  ac_lib_var=`echo pthread'_'__pthread_create | sed 'y%./+-%__p_%'`
+  if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
+    echo $ac_n "(cached) $ac_c" 1>&6
+--- 2178,2184 ----
+  else
+    echo "$ac_t""no" 1>&6
+  echo $ac_n "checking for __pthread_create in -lpthread""... $ac_c" 1>&6
+! echo "configure:2182: checking for __pthread_create in -lpthread" >&5
+  ac_lib_var=`echo pthread'_'__pthread_create | sed 'y%./+-%__p_%'`
+  if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
+    echo $ac_n "(cached) $ac_c" 1>&6
+***************
+*** 2178,2184 ****
+    ac_save_LIBS="$LIBS"
+  LIBS="-lpthread  $LIBS"
+  cat > conftest.$ac_ext <<EOF
+! #line 2182 "configure"
+  #include "confdefs.h"
+  /* Override any gcc2 internal prototype to avoid an error.  */
+  /* We use char because int might match the return type of a gcc2
+--- 2186,2192 ----
+    ac_save_LIBS="$LIBS"
+  LIBS="-lpthread  $LIBS"
+  cat > conftest.$ac_ext <<EOF
+! #line 2190 "configure"
+  #include "confdefs.h"
+  /* Override any gcc2 internal prototype to avoid an error.  */
+  /* We use char because int might match the return type of a gcc2
+***************
+*** 2189,2195 ****
+  __pthread_create()
+  ; return 0; }
+  EOF
+! if { (eval echo configure:2193: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+    rm -rf conftest*
+    eval "ac_cv_lib_$ac_lib_var=yes"
+  else
+--- 2197,2203 ----
+  __pthread_create()
+  ; return 0; }
+  EOF
+! if { (eval echo configure:2201: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+    rm -rf conftest*
+    eval "ac_cv_lib_$ac_lib_var=yes"
+  else
+***************
+*** 2215,2221 ****
+  else
+    echo "$ac_t""no" 1>&6
+  echo $ac_n "checking for __pthread_create_system in -lpthread""... $ac_c" 1>&6
+! echo "configure:2219: checking for __pthread_create_system in -lpthread" >&5
+  ac_lib_var=`echo pthread'_'__pthread_create_system | sed 'y%./+-%__p_%'`
+  if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
+    echo $ac_n "(cached) $ac_c" 1>&6
+--- 2223,2229 ----
+  else
+    echo "$ac_t""no" 1>&6
+  echo $ac_n "checking for __pthread_create_system in -lpthread""... $ac_c" 1>&6
+! echo "configure:2227: checking for __pthread_create_system in -lpthread" >&5
+  ac_lib_var=`echo pthread'_'__pthread_create_system | sed 'y%./+-%__p_%'`
+  if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
+    echo $ac_n "(cached) $ac_c" 1>&6
+***************
+*** 2223,2229 ****
+    ac_save_LIBS="$LIBS"
+  LIBS="-lpthread  $LIBS"
+  cat > conftest.$ac_ext <<EOF
+! #line 2227 "configure"
+  #include "confdefs.h"
+  /* Override any gcc2 internal prototype to avoid an error.  */
+  /* We use char because int might match the return type of a gcc2
+--- 2231,2237 ----
+    ac_save_LIBS="$LIBS"
+  LIBS="-lpthread  $LIBS"
+  cat > conftest.$ac_ext <<EOF
+! #line 2235 "configure"
+  #include "confdefs.h"
+  /* Override any gcc2 internal prototype to avoid an error.  */
+  /* We use char because int might match the return type of a gcc2
+***************
+*** 2234,2240 ****
+  __pthread_create_system()
+  ; return 0; }
+  EOF
+! if { (eval echo configure:2238: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+    rm -rf conftest*
+    eval "ac_cv_lib_$ac_lib_var=yes"
+  else
+--- 2242,2248 ----
+  __pthread_create_system()
+  ; return 0; }
+  EOF
+! if { (eval echo configure:2246: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+    rm -rf conftest*
+    eval "ac_cv_lib_$ac_lib_var=yes"
+  else
+***************
+*** 2260,2266 ****
+  else
+    echo "$ac_t""no" 1>&6
+  echo $ac_n "checking for pthread_create in -lc_r""... $ac_c" 1>&6
+! echo "configure:2264: checking for pthread_create in -lc_r" >&5
+  ac_lib_var=`echo c_r'_'pthread_create | sed 'y%./+-%__p_%'`
+  if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
+    echo $ac_n "(cached) $ac_c" 1>&6
+--- 2268,2274 ----
+  else
+    echo "$ac_t""no" 1>&6
+  echo $ac_n "checking for pthread_create in -lc_r""... $ac_c" 1>&6
+! echo "configure:2272: checking for pthread_create in -lc_r" >&5
+  ac_lib_var=`echo c_r'_'pthread_create | sed 'y%./+-%__p_%'`
+  if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
+    echo $ac_n "(cached) $ac_c" 1>&6
+***************
+*** 2268,2274 ****
+    ac_save_LIBS="$LIBS"
+  LIBS="-lc_r  $LIBS"
+  cat > conftest.$ac_ext <<EOF
+! #line 2272 "configure"
+  #include "confdefs.h"
+  /* Override any gcc2 internal prototype to avoid an error.  */
+  /* We use char because int might match the return type of a gcc2
+--- 2276,2282 ----
+    ac_save_LIBS="$LIBS"
+  LIBS="-lc_r  $LIBS"
+  cat > conftest.$ac_ext <<EOF
+! #line 2280 "configure"
+  #include "confdefs.h"
+  /* Override any gcc2 internal prototype to avoid an error.  */
+  /* We use char because int might match the return type of a gcc2
+***************
+*** 2279,2285 ****
+  pthread_create()
+  ; return 0; }
+  EOF
+! if { (eval echo configure:2283: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+    rm -rf conftest*
+    eval "ac_cv_lib_$ac_lib_var=yes"
+  else
+--- 2287,2293 ----
+  pthread_create()
+  ; return 0; }
+  EOF
+! if { (eval echo configure:2291: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+    rm -rf conftest*
+    eval "ac_cv_lib_$ac_lib_var=yes"
+  else
+***************
+*** 2305,2311 ****
+  else
+    echo "$ac_t""no" 1>&6
+  echo $ac_n "checking for pthread_create in -lc""... $ac_c" 1>&6
+! echo "configure:2309: checking for pthread_create in -lc" >&5
+  ac_lib_var=`echo c'_'pthread_create | sed 'y%./+-%__p_%'`
+  if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
+    echo $ac_n "(cached) $ac_c" 1>&6
+--- 2313,2319 ----
+  else
+    echo "$ac_t""no" 1>&6
+  echo $ac_n "checking for pthread_create in -lc""... $ac_c" 1>&6
+! echo "configure:2317: checking for pthread_create in -lc" >&5
+  ac_lib_var=`echo c'_'pthread_create | sed 'y%./+-%__p_%'`
+  if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
+    echo $ac_n "(cached) $ac_c" 1>&6
+***************
+*** 2313,2319 ****
+    ac_save_LIBS="$LIBS"
+  LIBS="-lc  $LIBS"
+  cat > conftest.$ac_ext <<EOF
+! #line 2317 "configure"
+  #include "confdefs.h"
+  /* Override any gcc2 internal prototype to avoid an error.  */
+  /* We use char because int might match the return type of a gcc2
+--- 2321,2327 ----
+    ac_save_LIBS="$LIBS"
+  LIBS="-lc  $LIBS"
+  cat > conftest.$ac_ext <<EOF
+! #line 2325 "configure"
+  #include "confdefs.h"
+  /* Override any gcc2 internal prototype to avoid an error.  */
+  /* We use char because int might match the return type of a gcc2
+***************
+*** 2324,2330 ****
+  pthread_create()
+  ; return 0; }
+  EOF
+! if { (eval echo configure:2328: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+    rm -rf conftest*
+    eval "ac_cv_lib_$ac_lib_var=yes"
+  else
+--- 2332,2338 ----
+  pthread_create()
+  ; return 0; }
+  EOF
+! if { (eval echo configure:2336: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+    rm -rf conftest*
+    eval "ac_cv_lib_$ac_lib_var=yes"
+  else
+***************
+*** 2370,2376 ****
+       # We'd like to use sigwait() too
+       #
+       echo $ac_n "checking for sigwait in -lc""... $ac_c" 1>&6
+! echo "configure:2374: checking for sigwait in -lc" >&5
+  ac_lib_var=`echo c'_'sigwait | sed 'y%./+-%__p_%'`
+  if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
+    echo $ac_n "(cached) $ac_c" 1>&6
+--- 2378,2384 ----
+       # We'd like to use sigwait() too
+       #
+       echo $ac_n "checking for sigwait in -lc""... $ac_c" 1>&6
+! echo "configure:2382: checking for sigwait in -lc" >&5
+  ac_lib_var=`echo c'_'sigwait | sed 'y%./+-%__p_%'`
+  if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
+    echo $ac_n "(cached) $ac_c" 1>&6
+***************
+*** 2378,2384 ****
+    ac_save_LIBS="$LIBS"
+  LIBS="-lc  $LIBS"
+  cat > conftest.$ac_ext <<EOF
+! #line 2382 "configure"
+  #include "confdefs.h"
+  /* Override any gcc2 internal prototype to avoid an error.  */
+  /* We use char because int might match the return type of a gcc2
+--- 2386,2392 ----
+    ac_save_LIBS="$LIBS"
+  LIBS="-lc  $LIBS"
+  cat > conftest.$ac_ext <<EOF
+! #line 2390 "configure"
+  #include "confdefs.h"
+  /* Override any gcc2 internal prototype to avoid an error.  */
+  /* We use char because int might match the return type of a gcc2
+***************
+*** 2389,2395 ****
+  sigwait()
+  ; return 0; }
+  EOF
+! if { (eval echo configure:2393: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+    rm -rf conftest*
+    eval "ac_cv_lib_$ac_lib_var=yes"
+  else
+--- 2397,2403 ----
+  sigwait()
+  ; return 0; }
+  EOF
+! if { (eval echo configure:2401: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+    rm -rf conftest*
+    eval "ac_cv_lib_$ac_lib_var=yes"
+  else
+***************
+*** 2411,2417 ****
+  else
+    echo "$ac_t""no" 1>&6
+  echo $ac_n "checking for sigwait in -lpthread""... $ac_c" 1>&6
+! echo "configure:2415: checking for sigwait in -lpthread" >&5
+  ac_lib_var=`echo pthread'_'sigwait | sed 'y%./+-%__p_%'`
+  if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
+    echo $ac_n "(cached) $ac_c" 1>&6
+--- 2419,2425 ----
+  else
+    echo "$ac_t""no" 1>&6
+  echo $ac_n "checking for sigwait in -lpthread""... $ac_c" 1>&6
+! echo "configure:2423: checking for sigwait in -lpthread" >&5
+  ac_lib_var=`echo pthread'_'sigwait | sed 'y%./+-%__p_%'`
+  if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
+    echo $ac_n "(cached) $ac_c" 1>&6
+***************
+*** 2419,2425 ****
+    ac_save_LIBS="$LIBS"
+  LIBS="-lpthread  $LIBS"
+  cat > conftest.$ac_ext <<EOF
+! #line 2423 "configure"
+  #include "confdefs.h"
+  /* Override any gcc2 internal prototype to avoid an error.  */
+  /* We use char because int might match the return type of a gcc2
+--- 2427,2433 ----
+    ac_save_LIBS="$LIBS"
+  LIBS="-lpthread  $LIBS"
+  cat > conftest.$ac_ext <<EOF
+! #line 2431 "configure"
+  #include "confdefs.h"
+  /* Override any gcc2 internal prototype to avoid an error.  */
+  /* We use char because int might match the return type of a gcc2
+***************
+*** 2430,2436 ****
+  sigwait()
+  ; return 0; }
+  EOF
+! if { (eval echo configure:2434: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+    rm -rf conftest*
+    eval "ac_cv_lib_$ac_lib_var=yes"
+  else
+--- 2438,2444 ----
+  sigwait()
+  ; return 0; }
+  EOF
+! if { (eval echo configure:2442: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+    rm -rf conftest*
+    eval "ac_cv_lib_$ac_lib_var=yes"
+  else
+***************
+*** 2452,2458 ****
+  else
+    echo "$ac_t""no" 1>&6
+  echo $ac_n "checking for _Psigwait in -lpthread""... $ac_c" 1>&6
+! echo "configure:2456: checking for _Psigwait in -lpthread" >&5
+  ac_lib_var=`echo pthread'_'_Psigwait | sed 'y%./+-%__p_%'`
+  if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
+    echo $ac_n "(cached) $ac_c" 1>&6
+--- 2460,2466 ----
+  else
+    echo "$ac_t""no" 1>&6
+  echo $ac_n "checking for _Psigwait in -lpthread""... $ac_c" 1>&6
+! echo "configure:2464: checking for _Psigwait in -lpthread" >&5
+  ac_lib_var=`echo pthread'_'_Psigwait | sed 'y%./+-%__p_%'`
+  if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
+    echo $ac_n "(cached) $ac_c" 1>&6
+***************
+*** 2460,2466 ****
+    ac_save_LIBS="$LIBS"
+  LIBS="-lpthread  $LIBS"
+  cat > conftest.$ac_ext <<EOF
+! #line 2464 "configure"
+  #include "confdefs.h"
+  /* Override any gcc2 internal prototype to avoid an error.  */
+  /* We use char because int might match the return type of a gcc2
+--- 2468,2474 ----
+    ac_save_LIBS="$LIBS"
+  LIBS="-lpthread  $LIBS"
+  cat > conftest.$ac_ext <<EOF
+! #line 2472 "configure"
+  #include "confdefs.h"
+  /* Override any gcc2 internal prototype to avoid an error.  */
+  /* We use char because int might match the return type of a gcc2
+***************
+*** 2471,2477 ****
+  _Psigwait()
+  ; return 0; }
+  EOF
+! if { (eval echo configure:2475: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+    rm -rf conftest*
+    eval "ac_cv_lib_$ac_lib_var=yes"
+  else
+--- 2479,2485 ----
+  _Psigwait()
+  ; return 0; }
+  EOF
+! if { (eval echo configure:2483: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+    rm -rf conftest*
+    eval "ac_cv_lib_$ac_lib_var=yes"
+  else
+***************
+*** 2501,2512 ****
+  
+  
+       echo $ac_n "checking for pthread_attr_getstacksize""... $ac_c" 1>&6
+! echo "configure:2505: checking for pthread_attr_getstacksize" >&5
+  if eval "test \"`echo '$''{'ac_cv_func_pthread_attr_getstacksize'+set}'`\" = set"; then
+    echo $ac_n "(cached) $ac_c" 1>&6
+  else
+    cat > conftest.$ac_ext <<EOF
+! #line 2510 "configure"
+  #include "confdefs.h"
+  /* System header to define __stub macros and hopefully few prototypes,
+      which can conflict with char pthread_attr_getstacksize(); below.  */
+--- 2509,2520 ----
+  
+  
+       echo $ac_n "checking for pthread_attr_getstacksize""... $ac_c" 1>&6
+! echo "configure:2513: checking for pthread_attr_getstacksize" >&5
+  if eval "test \"`echo '$''{'ac_cv_func_pthread_attr_getstacksize'+set}'`\" = set"; then
+    echo $ac_n "(cached) $ac_c" 1>&6
+  else
+    cat > conftest.$ac_ext <<EOF
+! #line 2518 "configure"
+  #include "confdefs.h"
+  /* System header to define __stub macros and hopefully few prototypes,
+      which can conflict with char pthread_attr_getstacksize(); below.  */
+***************
+*** 2529,2535 ****
+  
+  ; return 0; }
+  EOF
+! if { (eval echo configure:2533: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+    rm -rf conftest*
+    eval "ac_cv_func_pthread_attr_getstacksize=yes"
+  else
+--- 2537,2543 ----
+  
+  ; return 0; }
+  EOF
+! if { (eval echo configure:2541: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+    rm -rf conftest*
+    eval "ac_cv_func_pthread_attr_getstacksize=yes"
+  else
+***************
+*** 2561,2567 ****
+               #
+               *-freebsd*)
+                       echo $ac_n "checking for sigwait in -lc_r""... $ac_c" 1>&6
+! echo "configure:2565: checking for sigwait in -lc_r" >&5
+  ac_lib_var=`echo c_r'_'sigwait | sed 'y%./+-%__p_%'`
+  if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
+    echo $ac_n "(cached) $ac_c" 1>&6
+--- 2569,2575 ----
+               #
+               *-freebsd*)
+                       echo $ac_n "checking for sigwait in -lc_r""... $ac_c" 1>&6
+! echo "configure:2573: checking for sigwait in -lc_r" >&5
+  ac_lib_var=`echo c_r'_'sigwait | sed 'y%./+-%__p_%'`
+  if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
+    echo $ac_n "(cached) $ac_c" 1>&6
+***************
+*** 2569,2575 ****
+    ac_save_LIBS="$LIBS"
+  LIBS="-lc_r  $LIBS"
+  cat > conftest.$ac_ext <<EOF
+! #line 2573 "configure"
+  #include "confdefs.h"
+  /* Override any gcc2 internal prototype to avoid an error.  */
+  /* We use char because int might match the return type of a gcc2
+--- 2577,2583 ----
+    ac_save_LIBS="$LIBS"
+  LIBS="-lc_r  $LIBS"
+  cat > conftest.$ac_ext <<EOF
+! #line 2581 "configure"
+  #include "confdefs.h"
+  /* Override any gcc2 internal prototype to avoid an error.  */
+  /* We use char because int might match the return type of a gcc2
+***************
+*** 2580,2586 ****
+  sigwait()
+  ; return 0; }
+  EOF
+! if { (eval echo configure:2584: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+    rm -rf conftest*
+    eval "ac_cv_lib_$ac_lib_var=yes"
+  else
+--- 2588,2594 ----
+  sigwait()
+  ; return 0; }
+  EOF
+! if { (eval echo configure:2592: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+    rm -rf conftest*
+    eval "ac_cv_lib_$ac_lib_var=yes"
+  else
+***************
+*** 2635,2646 ****
+  EOF
+  
+                       echo $ac_n "checking for pthread_setconcurrency""... $ac_c" 1>&6
+! echo "configure:2639: checking for pthread_setconcurrency" >&5
+  if eval "test \"`echo '$''{'ac_cv_func_pthread_setconcurrency'+set}'`\" = set"; then
+    echo $ac_n "(cached) $ac_c" 1>&6
+  else
+    cat > conftest.$ac_ext <<EOF
+! #line 2644 "configure"
+  #include "confdefs.h"
+  /* System header to define __stub macros and hopefully few prototypes,
+      which can conflict with char pthread_setconcurrency(); below.  */
+--- 2643,2654 ----
+  EOF
+  
+                       echo $ac_n "checking for pthread_setconcurrency""... $ac_c" 1>&6
+! echo "configure:2647: checking for pthread_setconcurrency" >&5
+  if eval "test \"`echo '$''{'ac_cv_func_pthread_setconcurrency'+set}'`\" = set"; then
+    echo $ac_n "(cached) $ac_c" 1>&6
+  else
+    cat > conftest.$ac_ext <<EOF
+! #line 2652 "configure"
+  #include "confdefs.h"
+  /* System header to define __stub macros and hopefully few prototypes,
+      which can conflict with char pthread_setconcurrency(); below.  */
+***************
+*** 2663,2669 ****
+  
+  ; return 0; }
+  EOF
+! if { (eval echo configure:2667: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+    rm -rf conftest*
+    eval "ac_cv_func_pthread_setconcurrency=yes"
+  else
+--- 2671,2677 ----
+  
+  ; return 0; }
+  EOF
+! if { (eval echo configure:2675: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+    rm -rf conftest*
+    eval "ac_cv_func_pthread_setconcurrency=yes"
+  else
+***************
+*** 2701,2712 ****
+       # Look for sysconf to allow detection of the number of processors.
+       #
+       echo $ac_n "checking for sysconf""... $ac_c" 1>&6
+! echo "configure:2705: checking for sysconf" >&5
+  if eval "test \"`echo '$''{'ac_cv_func_sysconf'+set}'`\" = set"; then
+    echo $ac_n "(cached) $ac_c" 1>&6
+  else
+    cat > conftest.$ac_ext <<EOF
+! #line 2710 "configure"
+  #include "confdefs.h"
+  /* System header to define __stub macros and hopefully few prototypes,
+      which can conflict with char sysconf(); below.  */
+--- 2709,2720 ----
+       # Look for sysconf to allow detection of the number of processors.
+       #
+       echo $ac_n "checking for sysconf""... $ac_c" 1>&6
+! echo "configure:2713: checking for sysconf" >&5
+  if eval "test \"`echo '$''{'ac_cv_func_sysconf'+set}'`\" = set"; then
+    echo $ac_n "(cached) $ac_c" 1>&6
+  else
+    cat > conftest.$ac_ext <<EOF
+! #line 2718 "configure"
+  #include "confdefs.h"
+  /* System header to define __stub macros and hopefully few prototypes,
+      which can conflict with char sysconf(); below.  */
+***************
+*** 2729,2735 ****
+  
+  ; return 0; }
+  EOF
+! if { (eval echo configure:2733: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+    rm -rf conftest*
+    eval "ac_cv_func_sysconf=yes"
+  else
+--- 2737,2743 ----
+  
+  ; return 0; }
+  EOF
+! if { (eval echo configure:2741: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+    rm -rf conftest*
+    eval "ac_cv_func_sysconf=yes"
+  else
+***************
+*** 2806,2817 ****
+  # even if compiled with --disable-threads.
+  #
+  echo $ac_n "checking for flockfile""... $ac_c" 1>&6
+! echo "configure:2810: checking for flockfile" >&5
+  if eval "test \"`echo '$''{'ac_cv_func_flockfile'+set}'`\" = set"; then
+    echo $ac_n "(cached) $ac_c" 1>&6
+  else
+    cat > conftest.$ac_ext <<EOF
+! #line 2815 "configure"
+  #include "confdefs.h"
+  /* System header to define __stub macros and hopefully few prototypes,
+      which can conflict with char flockfile(); below.  */
+--- 2814,2825 ----
+  # even if compiled with --disable-threads.
+  #
+  echo $ac_n "checking for flockfile""... $ac_c" 1>&6
+! echo "configure:2818: checking for flockfile" >&5
+  if eval "test \"`echo '$''{'ac_cv_func_flockfile'+set}'`\" = set"; then
+    echo $ac_n "(cached) $ac_c" 1>&6
+  else
+    cat > conftest.$ac_ext <<EOF
+! #line 2823 "configure"
+  #include "confdefs.h"
+  /* System header to define __stub macros and hopefully few prototypes,
+      which can conflict with char flockfile(); below.  */
+***************
+*** 2834,2840 ****
+  
+  ; return 0; }
+  EOF
+! if { (eval echo configure:2838: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+    rm -rf conftest*
+    eval "ac_cv_func_flockfile=yes"
+  else
+--- 2842,2848 ----
+  
+  ; return 0; }
+  EOF
+! if { (eval echo configure:2846: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+    rm -rf conftest*
+    eval "ac_cv_func_flockfile=yes"
+  else
+***************
+*** 2861,2867 ****
+  # Indicate what the final decision was regarding threads.
+  #
+  echo $ac_n "checking whether to build with threads""... $ac_c" 1>&6
+! echo "configure:2865: checking whether to build with threads" >&5
+  if $use_threads; then
+       echo "$ac_t""yes" 1>&6
+  else
+--- 2869,2875 ----
+  # Indicate what the final decision was regarding threads.
+  #
+  echo $ac_n "checking whether to build with threads""... $ac_c" 1>&6
+! echo "configure:2873: checking whether to build with threads" >&5
+  if $use_threads; then
+       echo "$ac_t""yes" 1>&6
+  else
+***************
+*** 2937,2948 ****
+  # NLS
+  #
+  echo $ac_n "checking for catgets""... $ac_c" 1>&6
+! echo "configure:2941: checking for catgets" >&5
+  if eval "test \"`echo '$''{'ac_cv_func_catgets'+set}'`\" = set"; then
+    echo $ac_n "(cached) $ac_c" 1>&6
+  else
+    cat > conftest.$ac_ext <<EOF
+! #line 2946 "configure"
+  #include "confdefs.h"
+  /* System header to define __stub macros and hopefully few prototypes,
+      which can conflict with char catgets(); below.  */
+--- 2945,2956 ----
+  # NLS
+  #
+  echo $ac_n "checking for catgets""... $ac_c" 1>&6
+! echo "configure:2949: checking for catgets" >&5
+  if eval "test \"`echo '$''{'ac_cv_func_catgets'+set}'`\" = set"; then
+    echo $ac_n "(cached) $ac_c" 1>&6
+  else
+    cat > conftest.$ac_ext <<EOF
+! #line 2954 "configure"
+  #include "confdefs.h"
+  /* System header to define __stub macros and hopefully few prototypes,
+      which can conflict with char catgets(); below.  */
+***************
+*** 2965,2971 ****
+  
+  ; return 0; }
+  EOF
+! if { (eval echo configure:2969: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+    rm -rf conftest*
+    eval "ac_cv_func_catgets=yes"
+  else
+--- 2973,2979 ----
+  
+  ; return 0; }
+  EOF
+! if { (eval echo configure:2977: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+    rm -rf conftest*
+    eval "ac_cv_func_catgets=yes"
+  else
+***************
+*** 3003,3009 ****
+               ;;
+       *)
+               echo $ac_n "checking for socket in -lsocket""... $ac_c" 1>&6
+! echo "configure:3007: checking for socket in -lsocket" >&5
+  ac_lib_var=`echo socket'_'socket | sed 'y%./+-%__p_%'`
+  if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
+    echo $ac_n "(cached) $ac_c" 1>&6
+--- 3011,3017 ----
+               ;;
+       *)
+               echo $ac_n "checking for socket in -lsocket""... $ac_c" 1>&6
+! echo "configure:3015: checking for socket in -lsocket" >&5
+  ac_lib_var=`echo socket'_'socket | sed 'y%./+-%__p_%'`
+  if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
+    echo $ac_n "(cached) $ac_c" 1>&6
+***************
+*** 3011,3017 ****
+    ac_save_LIBS="$LIBS"
+  LIBS="-lsocket  $LIBS"
+  cat > conftest.$ac_ext <<EOF
+! #line 3015 "configure"
+  #include "confdefs.h"
+  /* Override any gcc2 internal prototype to avoid an error.  */
+  /* We use char because int might match the return type of a gcc2
+--- 3019,3025 ----
+    ac_save_LIBS="$LIBS"
+  LIBS="-lsocket  $LIBS"
+  cat > conftest.$ac_ext <<EOF
+! #line 3023 "configure"
+  #include "confdefs.h"
+  /* Override any gcc2 internal prototype to avoid an error.  */
+  /* We use char because int might match the return type of a gcc2
+***************
+*** 3022,3028 ****
+  socket()
+  ; return 0; }
+  EOF
+! if { (eval echo configure:3026: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+    rm -rf conftest*
+    eval "ac_cv_lib_$ac_lib_var=yes"
+  else
+--- 3030,3036 ----
+  socket()
+  ; return 0; }
+  EOF
+! if { (eval echo configure:3034: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+    rm -rf conftest*
+    eval "ac_cv_lib_$ac_lib_var=yes"
+  else
+***************
+*** 3050,3056 ****
+  fi
+  
+               echo $ac_n "checking for inet_ntoa in -lnsl""... $ac_c" 1>&6
+! echo "configure:3054: checking for inet_ntoa in -lnsl" >&5
+  ac_lib_var=`echo nsl'_'inet_ntoa | sed 'y%./+-%__p_%'`
+  if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
+    echo $ac_n "(cached) $ac_c" 1>&6
+--- 3058,3064 ----
+  fi
+  
+               echo $ac_n "checking for inet_ntoa in -lnsl""... $ac_c" 1>&6
+! echo "configure:3062: checking for inet_ntoa in -lnsl" >&5
+  ac_lib_var=`echo nsl'_'inet_ntoa | sed 'y%./+-%__p_%'`
+  if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
+    echo $ac_n "(cached) $ac_c" 1>&6
+***************
+*** 3058,3064 ****
+    ac_save_LIBS="$LIBS"
+  LIBS="-lnsl  $LIBS"
+  cat > conftest.$ac_ext <<EOF
+! #line 3062 "configure"
+  #include "confdefs.h"
+  /* Override any gcc2 internal prototype to avoid an error.  */
+  /* We use char because int might match the return type of a gcc2
+--- 3066,3072 ----
+    ac_save_LIBS="$LIBS"
+  LIBS="-lnsl  $LIBS"
+  cat > conftest.$ac_ext <<EOF
+! #line 3070 "configure"
+  #include "confdefs.h"
+  /* Override any gcc2 internal prototype to avoid an error.  */
+  /* We use char because int might match the return type of a gcc2
+***************
+*** 3069,3075 ****
+  inet_ntoa()
+  ; return 0; }
+  EOF
+! if { (eval echo configure:3073: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+    rm -rf conftest*
+    eval "ac_cv_lib_$ac_lib_var=yes"
+  else
+--- 3077,3083 ----
+  inet_ntoa()
+  ; return 0; }
+  EOF
+! if { (eval echo configure:3081: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+    rm -rf conftest*
+    eval "ac_cv_lib_$ac_lib_var=yes"
+  else
+***************
+*** 3184,3190 ****
+  fi
+  
+  echo $ac_n "checking build system type""... $ac_c" 1>&6
+! echo "configure:3188: checking build system type" >&5
+  
+  build_alias=$build
+  case "$build_alias" in
+--- 3192,3198 ----
+  fi
+  
+  echo $ac_n "checking build system type""... $ac_c" 1>&6
+! echo "configure:3196: checking build system type" >&5
+  
+  build_alias=$build
+  case "$build_alias" in
+***************
+*** 3213,3219 ****
+  if test "$ac_cv_prog_gcc" = yes; then
+    # Check if gcc -print-prog-name=ld gives a path.
+    echo $ac_n "checking for ld used by GCC""... $ac_c" 1>&6
+! echo "configure:3217: checking for ld used by GCC" >&5
+    ac_prog=`($CC -print-prog-name=ld) 2>&5`
+    case "$ac_prog" in
+      # Accept absolute paths.
+--- 3221,3227 ----
+  if test "$ac_cv_prog_gcc" = yes; then
+    # Check if gcc -print-prog-name=ld gives a path.
+    echo $ac_n "checking for ld used by GCC""... $ac_c" 1>&6
+! echo "configure:3225: checking for ld used by GCC" >&5
+    ac_prog=`($CC -print-prog-name=ld) 2>&5`
+    case "$ac_prog" in
+      # Accept absolute paths.
+***************
+*** 3237,3246 ****
+    esac
+  elif test "$with_gnu_ld" = yes; then
+    echo $ac_n "checking for GNU ld""... $ac_c" 1>&6
+! echo "configure:3241: checking for GNU ld" >&5
+  else
+    echo $ac_n "checking for non-GNU ld""... $ac_c" 1>&6
+! echo "configure:3244: checking for non-GNU ld" >&5
+  fi
+  if eval "test \"`echo '$''{'ac_cv_path_LD'+set}'`\" = set"; then
+    echo $ac_n "(cached) $ac_c" 1>&6
+--- 3245,3254 ----
+    esac
+  elif test "$with_gnu_ld" = yes; then
+    echo $ac_n "checking for GNU ld""... $ac_c" 1>&6
+! echo "configure:3249: checking for GNU ld" >&5
+  else
+    echo $ac_n "checking for non-GNU ld""... $ac_c" 1>&6
+! echo "configure:3252: checking for non-GNU ld" >&5
+  fi
+  if eval "test \"`echo '$''{'ac_cv_path_LD'+set}'`\" = set"; then
+    echo $ac_n "(cached) $ac_c" 1>&6
+***************
+*** 3275,3281 ****
+  fi
+  test -z "$LD" && { echo "configure: error: no acceptable ld found in \$PATH" 1>&2; exit 1; }
+  echo $ac_n "checking if the linker ($LD) is GNU ld""... $ac_c" 1>&6
+! echo "configure:3279: checking if the linker ($LD) is GNU ld" >&5
+  if eval "test \"`echo '$''{'ac_cv_prog_gnu_ld'+set}'`\" = set"; then
+    echo $ac_n "(cached) $ac_c" 1>&6
+  else
+--- 3283,3289 ----
+  fi
+  test -z "$LD" && { echo "configure: error: no acceptable ld found in \$PATH" 1>&2; exit 1; }
+  echo $ac_n "checking if the linker ($LD) is GNU ld""... $ac_c" 1>&6
+! echo "configure:3287: checking if the linker ($LD) is GNU ld" >&5
+  if eval "test \"`echo '$''{'ac_cv_prog_gnu_ld'+set}'`\" = set"; then
+    echo $ac_n "(cached) $ac_c" 1>&6
+  else
+***************
+*** 3291,3297 ****
+  
+  
+  echo $ac_n "checking for BSD-compatible nm""... $ac_c" 1>&6
+! echo "configure:3295: checking for BSD-compatible nm" >&5
+  if eval "test \"`echo '$''{'ac_cv_path_NM'+set}'`\" = set"; then
+    echo $ac_n "(cached) $ac_c" 1>&6
+  else
+--- 3299,3305 ----
+  
+  
+  echo $ac_n "checking for BSD-compatible nm""... $ac_c" 1>&6
+! echo "configure:3303: checking for BSD-compatible nm" >&5
+  if eval "test \"`echo '$''{'ac_cv_path_NM'+set}'`\" = set"; then
+    echo $ac_n "(cached) $ac_c" 1>&6
+  else
+***************
+*** 3327,3333 ****
+  echo "$ac_t""$NM" 1>&6
+  
+  echo $ac_n "checking whether ln -s works""... $ac_c" 1>&6
+! echo "configure:3331: checking whether ln -s works" >&5
+  if eval "test \"`echo '$''{'ac_cv_prog_LN_S'+set}'`\" = set"; then
+    echo $ac_n "(cached) $ac_c" 1>&6
+  else
+--- 3335,3341 ----
+  echo "$ac_t""$NM" 1>&6
+  
+  echo $ac_n "checking whether ln -s works""... $ac_c" 1>&6
+! echo "configure:3339: checking whether ln -s works" >&5
+  if eval "test \"`echo '$''{'ac_cv_prog_LN_S'+set}'`\" = set"; then
+    echo $ac_n "(cached) $ac_c" 1>&6
+  else
+***************
+*** 3376,3383 ****
+  case "$lt_target" in
+  *-*-irix6*)
+    # Find out which ABI we are using.
+!   echo '#line 3380 "configure"' > conftest.$ac_ext
+!   if { (eval echo configure:3381: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+      case "`/usr/bin/file conftest.o`" in
+      *32-bit*)
+        LD="${LD-ld} -32"
+--- 3384,3391 ----
+  case "$lt_target" in
+  *-*-irix6*)
+    # Find out which ABI we are using.
+!   echo '#line 3388 "configure"' > conftest.$ac_ext
+!   if { (eval echo configure:3389: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+      case "`/usr/bin/file conftest.o`" in
+      *32-bit*)
+        LD="${LD-ld} -32"
+***************
+*** 3398,3416 ****
+    SAVE_CFLAGS="$CFLAGS"
+    CFLAGS="$CFLAGS -belf"
+    echo $ac_n "checking whether the C compiler needs -belf""... $ac_c" 1>&6
+! echo "configure:3402: checking whether the C compiler needs -belf" >&5
+  if eval "test \"`echo '$''{'lt_cv_cc_needs_belf'+set}'`\" = set"; then
+    echo $ac_n "(cached) $ac_c" 1>&6
+  else
+    cat > conftest.$ac_ext <<EOF
+! #line 3407 "configure"
+  #include "confdefs.h"
+  
+  int main() {
+  
+  ; return 0; }
+  EOF
+! if { (eval echo configure:3414: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+    rm -rf conftest*
+    lt_cv_cc_needs_belf=yes
+  else
+--- 3406,3424 ----
+    SAVE_CFLAGS="$CFLAGS"
+    CFLAGS="$CFLAGS -belf"
+    echo $ac_n "checking whether the C compiler needs -belf""... $ac_c" 1>&6
+! echo "configure:3410: checking whether the C compiler needs -belf" >&5
+  if eval "test \"`echo '$''{'lt_cv_cc_needs_belf'+set}'`\" = set"; then
+    echo $ac_n "(cached) $ac_c" 1>&6
+  else
+    cat > conftest.$ac_ext <<EOF
+! #line 3415 "configure"
+  #include "confdefs.h"
+  
+  int main() {
+  
+  ; return 0; }
+  EOF
+! if { (eval echo configure:3422: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+    rm -rf conftest*
+    lt_cv_cc_needs_belf=yes
+  else
+***************
+*** 3561,3569 ****
+  # the right suffix on the files.
+  #
+  echo $ac_n "checking for IPv6 structures""... $ac_c" 1>&6
+! echo "configure:3565: checking for IPv6 structures" >&5
+  cat > conftest.$ac_ext <<EOF
+! #line 3567 "configure"
+  #include "confdefs.h"
+  
+  #include <sys/types.h>
+--- 3569,3577 ----
+  # the right suffix on the files.
+  #
+  echo $ac_n "checking for IPv6 structures""... $ac_c" 1>&6
+! echo "configure:3573: checking for IPv6 structures" >&5
+  cat > conftest.$ac_ext <<EOF
+! #line 3575 "configure"
+  #include "confdefs.h"
+  
+  #include <sys/types.h>
+***************
+*** 3573,3579 ****
+  struct sockaddr_in6 sin6; return (0);
+  ; return 0; }
+  EOF
+! if { (eval echo configure:3577: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+    rm -rf conftest*
+    echo "$ac_t""yes" 1>&6
+        found_ipv6=yes
+--- 3581,3587 ----
+  struct sockaddr_in6 sin6; return (0);
+  ; return 0; }
+  EOF
+! if { (eval echo configure:3585: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+    rm -rf conftest*
+    echo "$ac_t""yes" 1>&6
+        found_ipv6=yes
+***************
+*** 3591,3597 ****
+  # This is done before other IPv6 linking tests to LIBS is properly set.
+  #
+  echo $ac_n "checking for Kame IPv6 support""... $ac_c" 1>&6
+! echo "configure:3595: checking for Kame IPv6 support" >&5
+  # Check whether --with-kame or --without-kame was given.
+  if test "${with_kame+set}" = set; then
+    withval="$with_kame"
+--- 3599,3605 ----
+  # This is done before other IPv6 linking tests to LIBS is properly set.
+  #
+  echo $ac_n "checking for Kame IPv6 support""... $ac_c" 1>&6
+! echo "configure:3603: checking for Kame IPv6 support" >&5
+  # Check whether --with-kame or --without-kame was given.
+  if test "${with_kame+set}" = set; then
+    withval="$with_kame"
+***************
+*** 3681,3689 ****
+               LWRES_PLATFORM_HAVEIPV6="#define LWRES_PLATFORM_HAVEIPV6 1"
+  
+               echo $ac_n "checking for in6_addr""... $ac_c" 1>&6
+! echo "configure:3685: checking for in6_addr" >&5
+               cat > conftest.$ac_ext <<EOF
+! #line 3687 "configure"
+  #include "confdefs.h"
+  
+  #include <sys/types.h>
+--- 3689,3697 ----
+               LWRES_PLATFORM_HAVEIPV6="#define LWRES_PLATFORM_HAVEIPV6 1"
+  
+               echo $ac_n "checking for in6_addr""... $ac_c" 1>&6
+! echo "configure:3693: checking for in6_addr" >&5
+               cat > conftest.$ac_ext <<EOF
+! #line 3695 "configure"
+  #include "confdefs.h"
+  
+  #include <sys/types.h>
+***************
+*** 3696,3702 ****
+  struct in6_addr in6; return (0);
+  ; return 0; }
+  EOF
+! if { (eval echo configure:3700: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+    rm -rf conftest*
+    echo "$ac_t""yes" 1>&6
+                ISC_PLATFORM_HAVEINADDR6="#undef ISC_PLATFORM_HAVEINADDR6"
+--- 3704,3710 ----
+  struct in6_addr in6; return (0);
+  ; return 0; }
+  EOF
+! if { (eval echo configure:3708: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+    rm -rf conftest*
+    echo "$ac_t""yes" 1>&6
+                ISC_PLATFORM_HAVEINADDR6="#undef ISC_PLATFORM_HAVEINADDR6"
+***************
+*** 3714,3722 ****
+  rm -f conftest*
+  
+               echo $ac_n "checking for in6addr_any""... $ac_c" 1>&6
+! echo "configure:3718: checking for in6addr_any" >&5
+               cat > conftest.$ac_ext <<EOF
+! #line 3720 "configure"
+  #include "confdefs.h"
+  
+  #include <sys/types.h>
+--- 3722,3730 ----
+  rm -f conftest*
+  
+               echo $ac_n "checking for in6addr_any""... $ac_c" 1>&6
+! echo "configure:3726: checking for in6addr_any" >&5
+               cat > conftest.$ac_ext <<EOF
+! #line 3728 "configure"
+  #include "confdefs.h"
+  
+  #include <sys/types.h>
+***************
+*** 3730,3736 ****
+  struct in6_addr in6; in6 = in6addr_any; return (0);
+  ; return 0; }
+  EOF
+! if { (eval echo configure:3734: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+    rm -rf conftest*
+    echo "$ac_t""yes" 1>&6
+                        ISC_PLATFORM_NEEDIN6ADDRANY="#undef ISC_PLATFORM_NEEDIN6ADDRANY"
+--- 3738,3744 ----
+  struct in6_addr in6; in6 = in6addr_any; return (0);
+  ; return 0; }
+  EOF
+! if { (eval echo configure:3742: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+    rm -rf conftest*
+    echo "$ac_t""yes" 1>&6
+                        ISC_PLATFORM_NEEDIN6ADDRANY="#undef ISC_PLATFORM_NEEDIN6ADDRANY"
+***************
+*** 3746,3754 ****
+  rm -f conftest*
+  
+               echo $ac_n "checking for sin6_scope_id in struct sockaddr_in6""... $ac_c" 1>&6
+! echo "configure:3750: checking for sin6_scope_id in struct sockaddr_in6" >&5
+               cat > conftest.$ac_ext <<EOF
+! #line 3752 "configure"
+  #include "confdefs.h"
+  
+  #include <sys/types.h>
+--- 3754,3762 ----
+  rm -f conftest*
+  
+               echo $ac_n "checking for sin6_scope_id in struct sockaddr_in6""... $ac_c" 1>&6
+! echo "configure:3758: checking for sin6_scope_id in struct sockaddr_in6" >&5
+               cat > conftest.$ac_ext <<EOF
+! #line 3760 "configure"
+  #include "confdefs.h"
+  
+  #include <sys/types.h>
+***************
+*** 3761,3767 ****
+  struct sockaddr_in6 xyzzy; xyzzy.sin6_scope_id = 0; return (0);
+  ; return 0; }
+  EOF
+! if { (eval echo configure:3765: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+    rm -rf conftest*
+    echo "$ac_t""yes" 1>&6
+                        result="#define LWRES_HAVE_SIN6_SCOPE_ID 1"
+--- 3769,3775 ----
+  struct sockaddr_in6 xyzzy; xyzzy.sin6_scope_id = 0; return (0);
+  ; return 0; }
+  EOF
+! if { (eval echo configure:3773: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+    rm -rf conftest*
+    echo "$ac_t""yes" 1>&6
+                        result="#define LWRES_HAVE_SIN6_SCOPE_ID 1"
+***************
+*** 3776,3784 ****
+               LWRES_HAVE_SIN6_SCOPE_ID="$result"
+  
+               echo $ac_n "checking for in6_pktinfo""... $ac_c" 1>&6
+! echo "configure:3780: checking for in6_pktinfo" >&5
+               cat > conftest.$ac_ext <<EOF
+! #line 3782 "configure"
+  #include "confdefs.h"
+  
+  #include <sys/types.h>
+--- 3784,3792 ----
+               LWRES_HAVE_SIN6_SCOPE_ID="$result"
+  
+               echo $ac_n "checking for in6_pktinfo""... $ac_c" 1>&6
+! echo "configure:3788: checking for in6_pktinfo" >&5
+               cat > conftest.$ac_ext <<EOF
+! #line 3790 "configure"
+  #include "confdefs.h"
+  
+  #include <sys/types.h>
+***************
+*** 3791,3797 ****
+  struct in6_pktinfo xyzzy; return (0);
+  ; return 0; }
+  EOF
+! if { (eval echo configure:3795: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+    rm -rf conftest*
+    echo "$ac_t""yes" 1>&6
+                        ISC_PLATFORM_HAVEIN6PKTINFO="#define ISC_PLATFORM_HAVEIN6PKTINFO 1"
+--- 3799,3805 ----
+  struct in6_pktinfo xyzzy; return (0);
+  ; return 0; }
+  EOF
+! if { (eval echo configure:3803: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+    rm -rf conftest*
+    echo "$ac_t""yes" 1>&6
+                        ISC_PLATFORM_HAVEIN6PKTINFO="#define ISC_PLATFORM_HAVEIN6PKTINFO 1"
+***************
+*** 3843,3851 ****
+  # which provides some (all?) of the desired functions.
+  #
+  echo $ac_n "checking for inet_ntop""... $ac_c" 1>&6
+! echo "configure:3847: checking for inet_ntop" >&5
+  cat > conftest.$ac_ext <<EOF
+! #line 3849 "configure"
+  #include "confdefs.h"
+  
+  #include <sys/types.h>
+--- 3851,3859 ----
+  # which provides some (all?) of the desired functions.
+  #
+  echo $ac_n "checking for inet_ntop""... $ac_c" 1>&6
+! echo "configure:3855: checking for inet_ntop" >&5
+  cat > conftest.$ac_ext <<EOF
+! #line 3857 "configure"
+  #include "confdefs.h"
+  
+  #include <sys/types.h>
+***************
+*** 3855,3861 ****
+  inet_ntop(0, 0, 0, 0); return (0);
+  ; return 0; }
+  EOF
+! if { (eval echo configure:3859: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+    rm -rf conftest*
+    echo "$ac_t""yes" 1>&6
+          ISC_PLATFORM_NEEDNTOP="#undef ISC_PLATFORM_NEEDNTOP"
+--- 3863,3869 ----
+  inet_ntop(0, 0, 0, 0); return (0);
+  ; return 0; }
+  EOF
+! if { (eval echo configure:3867: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+    rm -rf conftest*
+    echo "$ac_t""yes" 1>&6
+          ISC_PLATFORM_NEEDNTOP="#undef ISC_PLATFORM_NEEDNTOP"
+***************
+*** 3870,3878 ****
+  fi
+  rm -f conftest*
+  echo $ac_n "checking for inet_pton""... $ac_c" 1>&6
+! echo "configure:3874: checking for inet_pton" >&5
+  cat > conftest.$ac_ext <<EOF
+! #line 3876 "configure"
+  #include "confdefs.h"
+  
+  #include <sys/types.h>
+--- 3878,3886 ----
+  fi
+  rm -f conftest*
+  echo $ac_n "checking for inet_pton""... $ac_c" 1>&6
+! echo "configure:3882: checking for inet_pton" >&5
+  cat > conftest.$ac_ext <<EOF
+! #line 3884 "configure"
+  #include "confdefs.h"
+  
+  #include <sys/types.h>
+***************
+*** 3882,3888 ****
+  inet_pton(0, 0, 0); return (0);
+  ; return 0; }
+  EOF
+! if { (eval echo configure:3886: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+    rm -rf conftest*
+    echo "$ac_t""yes" 1>&6
+          ISC_PLATFORM_NEEDPTON="#undef ISC_PLATFORM_NEEDPTON"
+--- 3890,3896 ----
+  inet_pton(0, 0, 0); return (0);
+  ; return 0; }
+  EOF
+! if { (eval echo configure:3894: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+    rm -rf conftest*
+    echo "$ac_t""yes" 1>&6
+          ISC_PLATFORM_NEEDPTON="#undef ISC_PLATFORM_NEEDPTON"
+***************
+*** 3897,3905 ****
+  fi
+  rm -f conftest*
+  echo $ac_n "checking for inet_aton""... $ac_c" 1>&6
+! echo "configure:3901: checking for inet_aton" >&5
+  cat > conftest.$ac_ext <<EOF
+! #line 3903 "configure"
+  #include "confdefs.h"
+  
+  #include <sys/types.h>
+--- 3905,3913 ----
+  fi
+  rm -f conftest*
+  echo $ac_n "checking for inet_aton""... $ac_c" 1>&6
+! echo "configure:3909: checking for inet_aton" >&5
+  cat > conftest.$ac_ext <<EOF
+! #line 3911 "configure"
+  #include "confdefs.h"
+  
+  #include <sys/types.h>
+***************
+*** 3909,3915 ****
+  struct in_addr in; inet_aton(0, &in); return (0);
+  ; return 0; }
+  EOF
+! if { (eval echo configure:3913: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+    rm -rf conftest*
+    echo "$ac_t""yes" 1>&6
+          ISC_PLATFORM_NEEDATON="#undef ISC_PLATFORM_NEEDATON"
+--- 3917,3923 ----
+  struct in_addr in; inet_aton(0, &in); return (0);
+  ; return 0; }
+  EOF
+! if { (eval echo configure:3921: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+    rm -rf conftest*
+    echo "$ac_t""yes" 1>&6
+          ISC_PLATFORM_NEEDATON="#undef ISC_PLATFORM_NEEDATON"
+***************
+*** 3942,3950 ****
+  esac
+  
+  echo $ac_n "checking for sa_len in struct sockaddr""... $ac_c" 1>&6
+! echo "configure:3946: checking for sa_len in struct sockaddr" >&5
+  cat > conftest.$ac_ext <<EOF
+! #line 3948 "configure"
+  #include "confdefs.h"
+  
+  #include <sys/types.h>
+--- 3950,3958 ----
+  esac
+  
+  echo $ac_n "checking for sa_len in struct sockaddr""... $ac_c" 1>&6
+! echo "configure:3954: checking for sa_len in struct sockaddr" >&5
+  cat > conftest.$ac_ext <<EOF
+! #line 3956 "configure"
+  #include "confdefs.h"
+  
+  #include <sys/types.h>
+***************
+*** 3953,3959 ****
+  struct sockaddr sa; sa.sa_len = 0; return (0);
+  ; return 0; }
+  EOF
+! if { (eval echo configure:3957: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+    rm -rf conftest*
+    echo "$ac_t""yes" 1>&6
+       ISC_PLATFORM_HAVESALEN="#define ISC_PLATFORM_HAVESALEN 1"
+--- 3961,3967 ----
+  struct sockaddr sa; sa.sa_len = 0; return (0);
+  ; return 0; }
+  EOF
+! if { (eval echo configure:3965: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+    rm -rf conftest*
+    echo "$ac_t""yes" 1>&6
+       ISC_PLATFORM_HAVESALEN="#define ISC_PLATFORM_HAVESALEN 1"
+***************
+*** 3974,3982 ****
+  # Look for a 4.4BSD or 4.3BSD struct msghdr
+  #
+  echo $ac_n "checking for struct msghdr flavor""... $ac_c" 1>&6
+! echo "configure:3978: checking for struct msghdr flavor" >&5
+  cat > conftest.$ac_ext <<EOF
+! #line 3980 "configure"
+  #include "confdefs.h"
+  
+  #include <sys/types.h>
+--- 3982,3990 ----
+  # Look for a 4.4BSD or 4.3BSD struct msghdr
+  #
+  echo $ac_n "checking for struct msghdr flavor""... $ac_c" 1>&6
+! echo "configure:3986: checking for struct msghdr flavor" >&5
+  cat > conftest.$ac_ext <<EOF
+! #line 3988 "configure"
+  #include "confdefs.h"
+  
+  #include <sys/types.h>
+***************
+*** 3985,3991 ****
+  struct msghdr msg; msg.msg_flags = 0; return (0);
+  ; return 0; }
+  EOF
+! if { (eval echo configure:3989: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+    rm -rf conftest*
+    echo "$ac_t""4.4BSD" 1>&6
+       ISC_PLATFORM_MSGHDRFLAVOR="#define ISC_NET_BSD44MSGHDR 1"
+--- 3993,3999 ----
+  struct msghdr msg; msg.msg_flags = 0; return (0);
+  ; return 0; }
+  EOF
+! if { (eval echo configure:3997: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+    rm -rf conftest*
+    echo "$ac_t""4.4BSD" 1>&6
+       ISC_PLATFORM_MSGHDRFLAVOR="#define ISC_NET_BSD44MSGHDR 1"
+***************
+*** 4003,4011 ****
+  # Look for in_port_t.
+  #
+  echo $ac_n "checking for type in_port_t""... $ac_c" 1>&6
+! echo "configure:4007: checking for type in_port_t" >&5
+  cat > conftest.$ac_ext <<EOF
+! #line 4009 "configure"
+  #include "confdefs.h"
+  
+  #include <sys/types.h>
+--- 4011,4019 ----
+  # Look for in_port_t.
+  #
+  echo $ac_n "checking for type in_port_t""... $ac_c" 1>&6
+! echo "configure:4015: checking for type in_port_t" >&5
+  cat > conftest.$ac_ext <<EOF
+! #line 4017 "configure"
+  #include "confdefs.h"
+  
+  #include <sys/types.h>
+***************
+*** 4014,4020 ****
+  in_port_t port = 25; return (0);
+  ; return 0; }
+  EOF
+! if { (eval echo configure:4018: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+    rm -rf conftest*
+    echo "$ac_t""yes" 1>&6
+       ISC_PLATFORM_NEEDPORTT="#undef ISC_PLATFORM_NEEDPORTT"
+--- 4022,4028 ----
+  in_port_t port = 25; return (0);
+  ; return 0; }
+  EOF
+! if { (eval echo configure:4026: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+    rm -rf conftest*
+    echo "$ac_t""yes" 1>&6
+       ISC_PLATFORM_NEEDPORTT="#undef ISC_PLATFORM_NEEDPORTT"
+***************
+*** 4032,4040 ****
+  # Check for addrinfo
+  #
+  echo $ac_n "checking for struct addrinfo""... $ac_c" 1>&6
+! echo "configure:4036: checking for struct addrinfo" >&5
+  cat > conftest.$ac_ext <<EOF
+! #line 4038 "configure"
+  #include "confdefs.h"
+  
+  #include <netdb.h>
+--- 4040,4048 ----
+  # Check for addrinfo
+  #
+  echo $ac_n "checking for struct addrinfo""... $ac_c" 1>&6
+! echo "configure:4044: checking for struct addrinfo" >&5
+  cat > conftest.$ac_ext <<EOF
+! #line 4046 "configure"
+  #include "confdefs.h"
+  
+  #include <netdb.h>
+***************
+*** 4042,4048 ****
+  struct addrinfo a; return (0);
+  ; return 0; }
+  EOF
+! if { (eval echo configure:4046: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+    rm -rf conftest*
+    echo "$ac_t""yes" 1>&6
+       ISC_LWRES_NEEDADDRINFO="#undef ISC_LWRES_NEEDADDRINFO"
+--- 4050,4056 ----
+  struct addrinfo a; return (0);
+  ; return 0; }
+  EOF
+! if { (eval echo configure:4054: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+    rm -rf conftest*
+    echo "$ac_t""yes" 1>&6
+       ISC_LWRES_NEEDADDRINFO="#undef ISC_LWRES_NEEDADDRINFO"
+***************
+*** 4061,4069 ****
+  
+  
+  echo $ac_n "checking for int sethostent""... $ac_c" 1>&6
+! echo "configure:4065: checking for int sethostent" >&5
+  cat > conftest.$ac_ext <<EOF
+! #line 4067 "configure"
+  #include "confdefs.h"
+  
+  #include <netdb.h>
+--- 4069,4077 ----
+  
+  
+  echo $ac_n "checking for int sethostent""... $ac_c" 1>&6
+! echo "configure:4073: checking for int sethostent" >&5
+  cat > conftest.$ac_ext <<EOF
+! #line 4075 "configure"
+  #include "confdefs.h"
+  
+  #include <netdb.h>
+***************
+*** 4071,4077 ****
+  int i = sethostent(0); return(0);
+  ; return 0; }
+  EOF
+! if { (eval echo configure:4075: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+    rm -rf conftest*
+    echo "$ac_t""yes" 1>&6
+       ISC_LWRES_SETHOSTENTINT="#define ISC_LWRES_SETHOSTENTINT 1"
+--- 4079,4085 ----
+  int i = sethostent(0); return(0);
+  ; return 0; }
+  EOF
+! if { (eval echo configure:4083: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+    rm -rf conftest*
+    echo "$ac_t""yes" 1>&6
+       ISC_LWRES_SETHOSTENTINT="#define ISC_LWRES_SETHOSTENTINT 1"
+***************
+*** 4086,4094 ****
+  
+  
+  echo $ac_n "checking for int endhostent""... $ac_c" 1>&6
+! echo "configure:4090: checking for int endhostent" >&5
+  cat > conftest.$ac_ext <<EOF
+! #line 4092 "configure"
+  #include "confdefs.h"
+  
+  #include <netdb.h>
+--- 4094,4102 ----
+  
+  
+  echo $ac_n "checking for int endhostent""... $ac_c" 1>&6
+! echo "configure:4098: checking for int endhostent" >&5
+  cat > conftest.$ac_ext <<EOF
+! #line 4100 "configure"
+  #include "confdefs.h"
+  
+  #include <netdb.h>
+***************
+*** 4096,4102 ****
+  int i = endhostent(); return(0);
+  ; return 0; }
+  EOF
+! if { (eval echo configure:4100: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+    rm -rf conftest*
+    echo "$ac_t""yes" 1>&6
+       ISC_LWRES_ENDHOSTENTINT="#define ISC_LWRES_ENDHOSTENTINT 1"
+--- 4104,4110 ----
+  int i = endhostent(); return(0);
+  ; return 0; }
+  EOF
+! if { (eval echo configure:4108: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+    rm -rf conftest*
+    echo "$ac_t""yes" 1>&6
+       ISC_LWRES_ENDHOSTENTINT="#define ISC_LWRES_ENDHOSTENTINT 1"
+***************
+*** 4111,4119 ****
+  
+  
+  echo $ac_n "checking for getnetbyaddr(in_addr_t, ...)""... $ac_c" 1>&6
+! echo "configure:4115: checking for getnetbyaddr(in_addr_t, ...)" >&5
+  cat > conftest.$ac_ext <<EOF
+! #line 4117 "configure"
+  #include "confdefs.h"
+  
+  #include <netdb.h>
+--- 4119,4127 ----
+  
+  
+  echo $ac_n "checking for getnetbyaddr(in_addr_t, ...)""... $ac_c" 1>&6
+! echo "configure:4123: checking for getnetbyaddr(in_addr_t, ...)" >&5
+  cat > conftest.$ac_ext <<EOF
+! #line 4125 "configure"
+  #include "confdefs.h"
+  
+  #include <netdb.h>
+***************
+*** 4122,4128 ****
+  
+  ; return 0; }
+  EOF
+! if { (eval echo configure:4126: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+    rm -rf conftest*
+    echo "$ac_t""yes" 1>&6
+       ISC_LWRES_GETNETBYADDRINADDR="#define ISC_LWRES_GETNETBYADDRINADDR 1"
+--- 4130,4136 ----
+  
+  ; return 0; }
+  EOF
+! if { (eval echo configure:4134: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+    rm -rf conftest*
+    echo "$ac_t""yes" 1>&6
+       ISC_LWRES_GETNETBYADDRINADDR="#define ISC_LWRES_GETNETBYADDRINADDR 1"
+***************
+*** 4137,4145 ****
+  
+  
+  echo $ac_n "checking for int setnetent""... $ac_c" 1>&6
+! echo "configure:4141: checking for int setnetent" >&5
+  cat > conftest.$ac_ext <<EOF
+! #line 4143 "configure"
+  #include "confdefs.h"
+  
+  #include <netdb.h>
+--- 4145,4153 ----
+  
+  
+  echo $ac_n "checking for int setnetent""... $ac_c" 1>&6
+! echo "configure:4149: checking for int setnetent" >&5
+  cat > conftest.$ac_ext <<EOF
+! #line 4151 "configure"
+  #include "confdefs.h"
+  
+  #include <netdb.h>
+***************
+*** 4147,4153 ****
+  int i = setnetent(0); return(0);
+  ; return 0; }
+  EOF
+! if { (eval echo configure:4151: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+    rm -rf conftest*
+    echo "$ac_t""yes" 1>&6
+       ISC_LWRES_SETNETENTINT="#define ISC_LWRES_SETNETENTINT 1"
+--- 4155,4161 ----
+  int i = setnetent(0); return(0);
+  ; return 0; }
+  EOF
+! if { (eval echo configure:4159: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+    rm -rf conftest*
+    echo "$ac_t""yes" 1>&6
+       ISC_LWRES_SETNETENTINT="#define ISC_LWRES_SETNETENTINT 1"
+***************
+*** 4162,4170 ****
+  
+  
+  echo $ac_n "checking for int endnetent""... $ac_c" 1>&6
+! echo "configure:4166: checking for int endnetent" >&5
+  cat > conftest.$ac_ext <<EOF
+! #line 4168 "configure"
+  #include "confdefs.h"
+  
+  #include <netdb.h>
+--- 4170,4178 ----
+  
+  
+  echo $ac_n "checking for int endnetent""... $ac_c" 1>&6
+! echo "configure:4174: checking for int endnetent" >&5
+  cat > conftest.$ac_ext <<EOF
+! #line 4176 "configure"
+  #include "confdefs.h"
+  
+  #include <netdb.h>
+***************
+*** 4172,4178 ****
+  int i = endnetent(); return(0);
+  ; return 0; }
+  EOF
+! if { (eval echo configure:4176: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+    rm -rf conftest*
+    echo "$ac_t""yes" 1>&6
+       ISC_LWRES_ENDNETENTINT="#define ISC_LWRES_ENDNETENTINT 1"
+--- 4180,4186 ----
+  int i = endnetent(); return(0);
+  ; return 0; }
+  EOF
+! if { (eval echo configure:4184: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+    rm -rf conftest*
+    echo "$ac_t""yes" 1>&6
+       ISC_LWRES_ENDNETENTINT="#define ISC_LWRES_ENDNETENTINT 1"
+***************
+*** 4187,4195 ****
+  
+  
+  echo $ac_n "checking for gethostbyaddr(const void *, size_t, ...)""... $ac_c" 1>&6
+! echo "configure:4191: checking for gethostbyaddr(const void *, size_t, ...)" >&5
+  cat > conftest.$ac_ext <<EOF
+! #line 4193 "configure"
+  #include "confdefs.h"
+  
+  #include <netdb.h>
+--- 4195,4203 ----
+  
+  
+  echo $ac_n "checking for gethostbyaddr(const void *, size_t, ...)""... $ac_c" 1>&6
+! echo "configure:4199: checking for gethostbyaddr(const void *, size_t, ...)" >&5
+  cat > conftest.$ac_ext <<EOF
+! #line 4201 "configure"
+  #include "confdefs.h"
+  
+  #include <netdb.h>
+***************
+*** 4198,4204 ****
+  return(0);
+  ; return 0; }
+  EOF
+! if { (eval echo configure:4202: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+    rm -rf conftest*
+    echo "$ac_t""yes" 1>&6
+       ISC_LWRES_GETHOSTBYADDRVOID="#define ISC_LWRES_GETHOSTBYADDRVOID 1"
+--- 4206,4212 ----
+  return(0);
+  ; return 0; }
+  EOF
+! if { (eval echo configure:4210: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+    rm -rf conftest*
+    echo "$ac_t""yes" 1>&6
+       ISC_LWRES_GETHOSTBYADDRVOID="#define ISC_LWRES_GETHOSTBYADDRVOID 1"
+***************
+*** 4213,4221 ****
+  
+  
+  echo $ac_n "checking for h_errno in netdb.h""... $ac_c" 1>&6
+! echo "configure:4217: checking for h_errno in netdb.h" >&5
+  cat > conftest.$ac_ext <<EOF
+! #line 4219 "configure"
+  #include "confdefs.h"
+  
+  #include <netdb.h>
+--- 4221,4229 ----
+  
+  
+  echo $ac_n "checking for h_errno in netdb.h""... $ac_c" 1>&6
+! echo "configure:4225: checking for h_errno in netdb.h" >&5
+  cat > conftest.$ac_ext <<EOF
+! #line 4227 "configure"
+  #include "confdefs.h"
+  
+  #include <netdb.h>
+***************
+*** 4223,4229 ****
+  h_errno = 1; return(0);
+  ; return 0; }
+  EOF
+! if { (eval echo configure:4227: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+    rm -rf conftest*
+    echo "$ac_t""yes" 1>&6
+       ISC_LWRES_NEEDHERRNO="#undef ISC_LWRES_NEEDHERRNO"
+--- 4231,4237 ----
+  h_errno = 1; return(0);
+  ; return 0; }
+  EOF
+! if { (eval echo configure:4235: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+    rm -rf conftest*
+    echo "$ac_t""yes" 1>&6
+       ISC_LWRES_NEEDHERRNO="#undef ISC_LWRES_NEEDHERRNO"
+***************
+*** 4238,4249 ****
+  
+  
+  echo $ac_n "checking for getipnodebyname""... $ac_c" 1>&6
+! echo "configure:4242: checking for getipnodebyname" >&5
+  if eval "test \"`echo '$''{'ac_cv_func_getipnodebyname'+set}'`\" = set"; then
+    echo $ac_n "(cached) $ac_c" 1>&6
+  else
+    cat > conftest.$ac_ext <<EOF
+! #line 4247 "configure"
+  #include "confdefs.h"
+  /* System header to define __stub macros and hopefully few prototypes,
+      which can conflict with char getipnodebyname(); below.  */
+--- 4246,4257 ----
+  
+  
+  echo $ac_n "checking for getipnodebyname""... $ac_c" 1>&6
+! echo "configure:4250: checking for getipnodebyname" >&5
+  if eval "test \"`echo '$''{'ac_cv_func_getipnodebyname'+set}'`\" = set"; then
+    echo $ac_n "(cached) $ac_c" 1>&6
+  else
+    cat > conftest.$ac_ext <<EOF
+! #line 4255 "configure"
+  #include "confdefs.h"
+  /* System header to define __stub macros and hopefully few prototypes,
+      which can conflict with char getipnodebyname(); below.  */
+***************
+*** 4266,4272 ****
+  
+  ; return 0; }
+  EOF
+! if { (eval echo configure:4270: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+    rm -rf conftest*
+    eval "ac_cv_func_getipnodebyname=yes"
+  else
+--- 4274,4280 ----
+  
+  ; return 0; }
+  EOF
+! if { (eval echo configure:4278: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+    rm -rf conftest*
+    eval "ac_cv_func_getipnodebyname=yes"
+  else
+***************
+*** 4287,4298 ****
+  fi
+  
+  echo $ac_n "checking for getnameinfo""... $ac_c" 1>&6
+! echo "configure:4291: checking for getnameinfo" >&5
+  if eval "test \"`echo '$''{'ac_cv_func_getnameinfo'+set}'`\" = set"; then
+    echo $ac_n "(cached) $ac_c" 1>&6
+  else
+    cat > conftest.$ac_ext <<EOF
+! #line 4296 "configure"
+  #include "confdefs.h"
+  /* System header to define __stub macros and hopefully few prototypes,
+      which can conflict with char getnameinfo(); below.  */
+--- 4295,4306 ----
+  fi
+  
+  echo $ac_n "checking for getnameinfo""... $ac_c" 1>&6
+! echo "configure:4299: checking for getnameinfo" >&5
+  if eval "test \"`echo '$''{'ac_cv_func_getnameinfo'+set}'`\" = set"; then
+    echo $ac_n "(cached) $ac_c" 1>&6
+  else
+    cat > conftest.$ac_ext <<EOF
+! #line 4304 "configure"
+  #include "confdefs.h"
+  /* System header to define __stub macros and hopefully few prototypes,
+      which can conflict with char getnameinfo(); below.  */
+***************
+*** 4315,4321 ****
+  
+  ; return 0; }
+  EOF
+! if { (eval echo configure:4319: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+    rm -rf conftest*
+    eval "ac_cv_func_getnameinfo=yes"
+  else
+--- 4323,4329 ----
+  
+  ; return 0; }
+  EOF
+! if { (eval echo configure:4327: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+    rm -rf conftest*
+    eval "ac_cv_func_getnameinfo=yes"
+  else
+***************
+*** 4336,4347 ****
+  fi
+  
+  echo $ac_n "checking for getaddrinfo""... $ac_c" 1>&6
+! echo "configure:4340: checking for getaddrinfo" >&5
+  if eval "test \"`echo '$''{'ac_cv_func_getaddrinfo'+set}'`\" = set"; then
+    echo $ac_n "(cached) $ac_c" 1>&6
+  else
+    cat > conftest.$ac_ext <<EOF
+! #line 4345 "configure"
+  #include "confdefs.h"
+  /* System header to define __stub macros and hopefully few prototypes,
+      which can conflict with char getaddrinfo(); below.  */
+--- 4344,4355 ----
+  fi
+  
+  echo $ac_n "checking for getaddrinfo""... $ac_c" 1>&6
+! echo "configure:4348: checking for getaddrinfo" >&5
+  if eval "test \"`echo '$''{'ac_cv_func_getaddrinfo'+set}'`\" = set"; then
+    echo $ac_n "(cached) $ac_c" 1>&6
+  else
+    cat > conftest.$ac_ext <<EOF
+! #line 4353 "configure"
+  #include "confdefs.h"
+  /* System header to define __stub macros and hopefully few prototypes,
+      which can conflict with char getaddrinfo(); below.  */
+***************
+*** 4364,4370 ****
+  
+  ; return 0; }
+  EOF
+! if { (eval echo configure:4368: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+    rm -rf conftest*
+    eval "ac_cv_func_getaddrinfo=yes"
+  else
+--- 4372,4378 ----
+  
+  ; return 0; }
+  EOF
+! if { (eval echo configure:4376: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+    rm -rf conftest*
+    eval "ac_cv_func_getaddrinfo=yes"
+  else
+***************
+*** 4389,4400 ****
+  fi
+  
+  echo $ac_n "checking for gai_strerror""... $ac_c" 1>&6
+! echo "configure:4393: checking for gai_strerror" >&5
+  if eval "test \"`echo '$''{'ac_cv_func_gai_strerror'+set}'`\" = set"; then
+    echo $ac_n "(cached) $ac_c" 1>&6
+  else
+    cat > conftest.$ac_ext <<EOF
+! #line 4398 "configure"
+  #include "confdefs.h"
+  /* System header to define __stub macros and hopefully few prototypes,
+      which can conflict with char gai_strerror(); below.  */
+--- 4397,4408 ----
+  fi
+  
+  echo $ac_n "checking for gai_strerror""... $ac_c" 1>&6
+! echo "configure:4401: checking for gai_strerror" >&5
+  if eval "test \"`echo '$''{'ac_cv_func_gai_strerror'+set}'`\" = set"; then
+    echo $ac_n "(cached) $ac_c" 1>&6
+  else
+    cat > conftest.$ac_ext <<EOF
+! #line 4406 "configure"
+  #include "confdefs.h"
+  /* System header to define __stub macros and hopefully few prototypes,
+      which can conflict with char gai_strerror(); below.  */
+***************
+*** 4417,4423 ****
+  
+  ; return 0; }
+  EOF
+! if { (eval echo configure:4421: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+    rm -rf conftest*
+    eval "ac_cv_func_gai_strerror=yes"
+  else
+--- 4425,4431 ----
+  
+  ; return 0; }
+  EOF
+! if { (eval echo configure:4429: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+    rm -rf conftest*
+    eval "ac_cv_func_gai_strerror=yes"
+  else
+***************
+*** 4447,4455 ****
+  # Look for a sysctl call to get the list of network interfaces.
+  #
+  echo $ac_n "checking for interface list sysctl""... $ac_c" 1>&6
+! echo "configure:4451: checking for interface list sysctl" >&5
+  cat > conftest.$ac_ext <<EOF
+! #line 4453 "configure"
+  #include "confdefs.h"
+  
+  #include <sys/param.h>
+--- 4455,4463 ----
+  # Look for a sysctl call to get the list of network interfaces.
+  #
+  echo $ac_n "checking for interface list sysctl""... $ac_c" 1>&6
+! echo "configure:4459: checking for interface list sysctl" >&5
+  cat > conftest.$ac_ext <<EOF
+! #line 4461 "configure"
+  #include "confdefs.h"
+  
+  #include <sys/param.h>
+***************
+*** 4479,4490 ****
+  # Check for some other useful functions that are not ever-present.
+  #
+  echo $ac_n "checking for strsep""... $ac_c" 1>&6
+! echo "configure:4483: checking for strsep" >&5
+  if eval "test \"`echo '$''{'ac_cv_func_strsep'+set}'`\" = set"; then
+    echo $ac_n "(cached) $ac_c" 1>&6
+  else
+    cat > conftest.$ac_ext <<EOF
+! #line 4488 "configure"
+  #include "confdefs.h"
+  /* System header to define __stub macros and hopefully few prototypes,
+      which can conflict with char strsep(); below.  */
+--- 4487,4498 ----
+  # Check for some other useful functions that are not ever-present.
+  #
+  echo $ac_n "checking for strsep""... $ac_c" 1>&6
+! echo "configure:4491: checking for strsep" >&5
+  if eval "test \"`echo '$''{'ac_cv_func_strsep'+set}'`\" = set"; then
+    echo $ac_n "(cached) $ac_c" 1>&6
+  else
+    cat > conftest.$ac_ext <<EOF
+! #line 4496 "configure"
+  #include "confdefs.h"
+  /* System header to define __stub macros and hopefully few prototypes,
+      which can conflict with char strsep(); below.  */
+***************
+*** 4507,4513 ****
+  
+  ; return 0; }
+  EOF
+! if { (eval echo configure:4511: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+    rm -rf conftest*
+    eval "ac_cv_func_strsep=yes"
+  else
+--- 4515,4521 ----
+  
+  ; return 0; }
+  EOF
+! if { (eval echo configure:4519: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+    rm -rf conftest*
+    eval "ac_cv_func_strsep=yes"
+  else
+***************
+*** 4528,4539 ****
+  fi
+  
+  echo $ac_n "checking for vsnprintf""... $ac_c" 1>&6
+! echo "configure:4532: checking for vsnprintf" >&5
+  if eval "test \"`echo '$''{'ac_cv_func_vsnprintf'+set}'`\" = set"; then
+    echo $ac_n "(cached) $ac_c" 1>&6
+  else
+    cat > conftest.$ac_ext <<EOF
+! #line 4537 "configure"
+  #include "confdefs.h"
+  /* System header to define __stub macros and hopefully few prototypes,
+      which can conflict with char vsnprintf(); below.  */
+--- 4536,4547 ----
+  fi
+  
+  echo $ac_n "checking for vsnprintf""... $ac_c" 1>&6
+! echo "configure:4540: checking for vsnprintf" >&5
+  if eval "test \"`echo '$''{'ac_cv_func_vsnprintf'+set}'`\" = set"; then
+    echo $ac_n "(cached) $ac_c" 1>&6
+  else
+    cat > conftest.$ac_ext <<EOF
+! #line 4545 "configure"
+  #include "confdefs.h"
+  /* System header to define __stub macros and hopefully few prototypes,
+      which can conflict with char vsnprintf(); below.  */
+***************
+*** 4556,4562 ****
+  
+  ; return 0; }
+  EOF
+! if { (eval echo configure:4560: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+    rm -rf conftest*
+    eval "ac_cv_func_vsnprintf=yes"
+  else
+--- 4564,4570 ----
+  
+  ; return 0; }
+  EOF
+! if { (eval echo configure:4568: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+    rm -rf conftest*
+    eval "ac_cv_func_vsnprintf=yes"
+  else
+***************
+*** 4585,4601 ****
+  
+  
+  echo $ac_n "checking for sizeof(long long int) == sizeof(long int)""... $ac_c" 1>&6
+! echo "configure:4589: checking for sizeof(long long int) == sizeof(long int)" >&5
+  if test "$cross_compiling" = yes; then
+    echo "$ac_t""default yes" 1>&6
+       ISC_PLATFORM_LONGLONGEQUALLONG="#define ISC_PLATFORM_LONGLONGEQUALLONG 1"
+  else
+    cat > conftest.$ac_ext <<EOF
+! #line 4595 "configure"
+  #include "confdefs.h"
+  main() { exit(!(sizeof(long long int) == sizeof(long int))); }
+  EOF
+! if { (eval echo configure:4599: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+  then
+    echo "$ac_t""yes" 1>&6
+       ISC_PLATFORM_LONGLONGEQUALLONG="#define ISC_PLATFORM_LONGLONGEQUALLONG 1"
+--- 4593,4609 ----
+  
+  
+  echo $ac_n "checking for sizeof(long long int) == sizeof(long int)""... $ac_c" 1>&6
+! echo "configure:4597: checking for sizeof(long long int) == sizeof(long int)" >&5
+  if test "$cross_compiling" = yes; then
+    echo "$ac_t""default yes" 1>&6
+       ISC_PLATFORM_LONGLONGEQUALLONG="#define ISC_PLATFORM_LONGLONGEQUALLONG 1"
+  else
+    cat > conftest.$ac_ext <<EOF
+! #line 4603 "configure"
+  #include "confdefs.h"
+  main() { exit(!(sizeof(long long int) == sizeof(long int))); }
+  EOF
+! if { (eval echo configure:4607: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+  then
+    echo "$ac_t""yes" 1>&6
+       ISC_PLATFORM_LONGLONGEQUALLONG="#define ISC_PLATFORM_LONGLONGEQUALLONG 1"
+***************
+*** 4615,4626 ****
+  # Security Stuff
+  #
+  echo $ac_n "checking for chroot""... $ac_c" 1>&6
+! echo "configure:4619: checking for chroot" >&5
+  if eval "test \"`echo '$''{'ac_cv_func_chroot'+set}'`\" = set"; then
+    echo $ac_n "(cached) $ac_c" 1>&6
+  else
+    cat > conftest.$ac_ext <<EOF
+! #line 4624 "configure"
+  #include "confdefs.h"
+  /* System header to define __stub macros and hopefully few prototypes,
+      which can conflict with char chroot(); below.  */
+--- 4623,4634 ----
+  # Security Stuff
+  #
+  echo $ac_n "checking for chroot""... $ac_c" 1>&6
+! echo "configure:4627: checking for chroot" >&5
+  if eval "test \"`echo '$''{'ac_cv_func_chroot'+set}'`\" = set"; then
+    echo $ac_n "(cached) $ac_c" 1>&6
+  else
+    cat > conftest.$ac_ext <<EOF
+! #line 4632 "configure"
+  #include "confdefs.h"
+  /* System header to define __stub macros and hopefully few prototypes,
+      which can conflict with char chroot(); below.  */
+***************
+*** 4643,4649 ****
+  
+  ; return 0; }
+  EOF
+! if { (eval echo configure:4647: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+    rm -rf conftest*
+    eval "ac_cv_func_chroot=yes"
+  else
+--- 4651,4657 ----
+  
+  ; return 0; }
+  EOF
+! if { (eval echo configure:4655: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+    rm -rf conftest*
+    eval "ac_cv_func_chroot=yes"
+  else
+***************
+*** 4669,4685 ****
+  do
+  ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
+  echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
+! echo "configure:4673: checking for $ac_hdr" >&5
+  if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
+    echo $ac_n "(cached) $ac_c" 1>&6
+  else
+    cat > conftest.$ac_ext <<EOF
+! #line 4678 "configure"
+  #include "confdefs.h"
+  #include <$ac_hdr>
+  EOF
+  ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
+! { (eval echo configure:4683: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+  ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
+  if test -z "$ac_err"; then
+    rm -rf conftest*
+--- 4677,4693 ----
+  do
+  ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
+  echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
+! echo "configure:4681: checking for $ac_hdr" >&5
+  if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
+    echo $ac_n "(cached) $ac_c" 1>&6
+  else
+    cat > conftest.$ac_ext <<EOF
+! #line 4686 "configure"
+  #include "confdefs.h"
+  #include <$ac_hdr>
+  EOF
+  ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
+! { (eval echo configure:4691: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+  ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
+  if test -z "$ac_err"; then
+    rm -rf conftest*
+***************
+*** 4709,4725 ****
+  do
+  ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
+  echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
+! echo "configure:4713: checking for $ac_hdr" >&5
+  if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
+    echo $ac_n "(cached) $ac_c" 1>&6
+  else
+    cat > conftest.$ac_ext <<EOF
+! #line 4718 "configure"
+  #include "confdefs.h"
+  #include <$ac_hdr>
+  EOF
+  ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
+! { (eval echo configure:4723: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+  ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
+  if test -z "$ac_err"; then
+    rm -rf conftest*
+--- 4717,4733 ----
+  do
+  ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
+  echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
+! echo "configure:4721: checking for $ac_hdr" >&5
+  if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
+    echo $ac_n "(cached) $ac_c" 1>&6
+  else
+    cat > conftest.$ac_ext <<EOF
+! #line 4726 "configure"
+  #include "confdefs.h"
+  #include <$ac_hdr>
+  EOF
+  ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
+! { (eval echo configure:4731: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+  ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
+  if test -z "$ac_err"; then
+    rm -rf conftest*
+***************
+*** 4750,4758 ****
+  # BSD/OS, and perhaps some others, don't define rlim_t.
+  #
+  echo $ac_n "checking for type rlim_t""... $ac_c" 1>&6
+! echo "configure:4754: checking for type rlim_t" >&5
+  cat > conftest.$ac_ext <<EOF
+! #line 4756 "configure"
+  #include "confdefs.h"
+  
+  #include <sys/types.h>
+--- 4758,4766 ----
+  # BSD/OS, and perhaps some others, don't define rlim_t.
+  #
+  echo $ac_n "checking for type rlim_t""... $ac_c" 1>&6
+! echo "configure:4762: checking for type rlim_t" >&5
+  cat > conftest.$ac_ext <<EOF
+! #line 4764 "configure"
+  #include "confdefs.h"
+  
+  #include <sys/types.h>
+***************
+*** 4762,4768 ****
+  rlim_t rl = 19671212; return (0);
+  ; return 0; }
+  EOF
+! if { (eval echo configure:4766: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+    rm -rf conftest*
+    echo "$ac_t""yes" 1>&6
+           cat >> confdefs.h <<\EOF
+--- 4770,4776 ----
+  rlim_t rl = 19671212; return (0);
+  ; return 0; }
+  EOF
+! if { (eval echo configure:4774: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+    rm -rf conftest*
+    echo "$ac_t""yes" 1>&6
+           cat >> confdefs.h <<\EOF
+***************
+*** 4777,4788 ****
+  fi
+  rm -f conftest*
+  echo $ac_n "checking sizeof rlim_cur""... $ac_c" 1>&6
+! echo "configure:4781: checking sizeof rlim_cur" >&5
+  if test "$cross_compiling" = yes; then
+      { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; }
+  else
+    cat > conftest.$ac_ext <<EOF
+! #line 4786 "configure"
+  #include "confdefs.h"
+  
+  #include <sys/types.h>
+--- 4785,4796 ----
+  fi
+  rm -f conftest*
+  echo $ac_n "checking sizeof rlim_cur""... $ac_c" 1>&6
+! echo "configure:4789: checking sizeof rlim_cur" >&5
+  if test "$cross_compiling" = yes; then
+      { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; }
+  else
+    cat > conftest.$ac_ext <<EOF
+! #line 4794 "configure"
+  #include "confdefs.h"
+  
+  #include <sys/types.h>
+***************
+*** 4790,4796 ****
+  #include <sys/resource.h>
+  main() { struct rlimit r; exit(!(sizeof(r.rlim_cur) == sizeof(int)));}
+  EOF
+! if { (eval echo configure:4794: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+  then
+    echo "$ac_t""int" 1>&6
+  ISC_PLATFORM_RLIMITTYPE="#define ISC_PLATFORM_RLIMITTYPE int"
+--- 4798,4804 ----
+  #include <sys/resource.h>
+  main() { struct rlimit r; exit(!(sizeof(r.rlim_cur) == sizeof(int)));}
+  EOF
+! if { (eval echo configure:4802: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+  then
+    echo "$ac_t""int" 1>&6
+  ISC_PLATFORM_RLIMITTYPE="#define ISC_PLATFORM_RLIMITTYPE int"
+***************
+*** 4803,4809 ****
+      { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; }
+  else
+    cat > conftest.$ac_ext <<EOF
+! #line 4807 "configure"
+  #include "confdefs.h"
+  
+  #include <sys/types.h>
+--- 4811,4817 ----
+      { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; }
+  else
+    cat > conftest.$ac_ext <<EOF
+! #line 4815 "configure"
+  #include "confdefs.h"
+  
+  #include <sys/types.h>
+***************
+*** 4811,4817 ****
+  #include <sys/resource.h>
+  main() { struct rlimit r; exit(!(sizeof(r.rlim_cur) == sizeof(long int)));}
+  EOF
+! if { (eval echo configure:4815: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+  then
+    echo "$ac_t""long int" 1>&6
+  ISC_PLATFORM_RLIMITTYPE="#define ISC_PLATFORM_RLIMITTYPE long int"
+--- 4819,4825 ----
+  #include <sys/resource.h>
+  main() { struct rlimit r; exit(!(sizeof(r.rlim_cur) == sizeof(long int)));}
+  EOF
+! if { (eval echo configure:4823: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+  then
+    echo "$ac_t""long int" 1>&6
+  ISC_PLATFORM_RLIMITTYPE="#define ISC_PLATFORM_RLIMITTYPE long int"
+***************
+*** 4824,4830 ****
+      { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; }
+  else
+    cat > conftest.$ac_ext <<EOF
+! #line 4828 "configure"
+  #include "confdefs.h"
+  
+  #include <sys/types.h>
+--- 4832,4838 ----
+      { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; }
+  else
+    cat > conftest.$ac_ext <<EOF
+! #line 4836 "configure"
+  #include "confdefs.h"
+  
+  #include <sys/types.h>
+***************
+*** 4832,4838 ****
+  #include <sys/resource.h>
+  main() { struct rlimit r; exit((!sizeof(r.rlim_cur) == sizeof(long long int)));}
+  EOF
+! if { (eval echo configure:4836: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+  then
+    echo "$ac_t""long long int" 1>&6
+  ISC_PLATFORM_RLIMITTYPE="#define ISC_PLATFORM_RLIMITTYPE long long int"
+--- 4840,4846 ----
+  #include <sys/resource.h>
+  main() { struct rlimit r; exit((!sizeof(r.rlim_cur) == sizeof(long long int)));}
+  EOF
+! if { (eval echo configure:4844: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+  then
+    echo "$ac_t""long long int" 1>&6
+  ISC_PLATFORM_RLIMITTYPE="#define ISC_PLATFORM_RLIMITTYPE long long int"
+***************
+*** 4935,4941 ****
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+  set dummy $ac_prog; ac_word=$2
+  echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+! echo "configure:4939: checking for $ac_word" >&5
+  if eval "test \"`echo '$''{'ac_cv_path_JADE'+set}'`\" = set"; then
+    echo $ac_n "(cached) $ac_c" 1>&6
+  else
+--- 4943,4949 ----
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+  set dummy $ac_prog; ac_word=$2
+  echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+! echo "configure:4947: checking for $ac_word" >&5
+  if eval "test \"`echo '$''{'ac_cv_path_JADE'+set}'`\" = set"; then
+    echo $ac_n "(cached) $ac_c" 1>&6
+  else
+***************
+*** 4981,4987 ****
+  SGMLDIR=""
+  
+  echo $ac_n "checking for SGML files""... $ac_c" 1>&6
+! echo "configure:4985: checking for SGML files" >&5
+  for d in /usr/pkg/share/sgml /usr/local/share/sgml 
+  do
+       if test -f $d/docbook/dsssl/modular/html/docbook.dsl
+--- 4989,4995 ----
+  SGMLDIR=""
+  
+  echo $ac_n "checking for SGML files""... $ac_c" 1>&6
+! echo "configure:4993: checking for SGML files" >&5
+  for d in /usr/pkg/share/sgml /usr/local/share/sgml 
+  do
+       if test -f $d/docbook/dsssl/modular/html/docbook.dsl
+***************
+*** 5007,5013 ****
+  XGMLDIR=""
+  
+  echo $ac_n "checking for XML files""... $ac_c" 1>&6
+! echo "configure:5011: checking for XML files" >&5
+  for d in /usr/pkg/share/xml /usr/local/share/xml
+  do
+       if test -f $d/dtd/docbook/docbookx.dtd
+--- 5015,5021 ----
+  XGMLDIR=""
+  
+  echo $ac_n "checking for XML files""... $ac_c" 1>&6
+! echo "configure:5019: checking for XML files" >&5
+  for d in /usr/pkg/share/xml /usr/local/share/xml
+  do
+       if test -f $d/dtd/docbook/docbookx.dtd
+***************
+*** 5024,5029 ****
+--- 5032,5224 ----
+       XMLDIR=/usr/local/share/xml
+  fi
+  
++ 
++ 
++ #
++ # MDN support
++ #
++ # Check whether --with-mdn or --without-mdn was given.
++ if test "${with_mdn+set}" = set; then
++   withval="$with_mdn"
++   use_mdn="$withval"
++ else
++   use_mdn="no"
++ fi
++ 
++ case "$use_mdn" in
++ yes)
++      if test X$prefix = XNONE ; then
++              mdn_path=/usr/local
++      else
++              mdn_path=$prefix
++      fi
++      ;;
++ no)
++      ;;
++ *)
++      mdn_path="$use_mdn"
++      ;;
++ esac
++ 
++ iconvinc=
++ iconvlib=
++ # Check whether --with-libiconv or --without-libiconv was given.
++ if test "${with_libiconv+set}" = set; then
++   withval="$with_libiconv"
++   use_libiconv="$withval"
++ else
++   use_libiconv="no"
++ fi
++ 
++ case "$use_libiconv" in
++ yes)
++      if test X$prefix = XNONE ; then
++              iconvlib="-L/usr/local/lib -R/usr/local/lib -liconv"
++      else
++              iconvlib="-L$prefix/lib -R$prefix/lib -liconv"
++      fi
++      ;;
++ no)
++      iconvlib=
++      ;;
++ *)
++      iconvlib="-L$use_libiconv/lib -R$use_libiconv/lib -liconv"
++      ;;
++ esac
++ 
++ # Check whether --with-iconv or --without-iconv was given.
++ if test "${with_iconv+set}" = set; then
++   withval="$with_iconv"
++   iconvlib="$withval"
++ fi
++ 
++ case "$iconvlib" in
++ no)
++      iconvlib=
++      ;;
++ yes)
++      iconvlib=-liconv
++      ;;
++ esac
++ 
++ # Check whether --with-mdnlib or --without-mdnlib was given.
++ if test "${with_mdnlib+set}" = set; then
++   withval="$with_mdnlib"
++   mdnlib="$withval"
++ else
++   mdnlib="no"
++ fi
++ 
++ if test "$mdnlib" = yes; then
++      { echo "configure: error: You must specify ARG for --with-mdnlib." 1>&2; exit 1; }
++ fi
++ 
++ if test "$use_mdn" != no; then
++      cat >> confdefs.h <<\EOF
++ #define WITH_MDN 1
++ EOF
++ 
++      STD_CINCLUDES="$STD_CINCLUDES -I$mdn_path/include"
++      if test "$mdnlib" != no; then
++              LIBS="$mdnlib $iconvlib $LIBS"
++      else
++              LIBS="-L$mdn_path/lib -lmdn $iconvlib $LIBS"
++      fi
++ fi
++ for ac_hdr in locale.h
++ do
++ ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
++ echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
++ echo "configure:5133: checking for $ac_hdr" >&5
++ if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
++   echo $ac_n "(cached) $ac_c" 1>&6
++ else
++   cat > conftest.$ac_ext <<EOF
++ #line 5138 "configure"
++ #include "confdefs.h"
++ #include <$ac_hdr>
++ EOF
++ ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
++ { (eval echo configure:5143: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
++ ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
++ if test -z "$ac_err"; then
++   rm -rf conftest*
++   eval "ac_cv_header_$ac_safe=yes"
++ else
++   echo "$ac_err" >&5
++   echo "configure: failed program was:" >&5
++   cat conftest.$ac_ext >&5
++   rm -rf conftest*
++   eval "ac_cv_header_$ac_safe=no"
++ fi
++ rm -f conftest*
++ fi
++ if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
++   echo "$ac_t""yes" 1>&6
++     ac_tr_hdr=HAVE_`echo $ac_hdr | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'`
++   cat >> confdefs.h <<EOF
++ #define $ac_tr_hdr 1
++ EOF
++  
++ else
++   echo "$ac_t""no" 1>&6
++ fi
++ done
++ 
++ for ac_func in setlocale
++ do
++ echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
++ echo "configure:5172: checking for $ac_func" >&5
++ if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
++   echo $ac_n "(cached) $ac_c" 1>&6
++ else
++   cat > conftest.$ac_ext <<EOF
++ #line 5177 "configure"
++ #include "confdefs.h"
++ /* System header to define __stub macros and hopefully few prototypes,
++     which can conflict with char $ac_func(); below.  */
++ #include <assert.h>
++ /* Override any gcc2 internal prototype to avoid an error.  */
++ /* We use char because int might match the return type of a gcc2
++     builtin and then its argument prototype would still apply.  */
++ char $ac_func();
++ 
++ int main() {
++ 
++ /* The GNU C library defines this for functions which it implements
++     to always fail with ENOSYS.  Some functions are actually named
++     something starting with __ and the normal name is an alias.  */
++ #if defined (__stub_$ac_func) || defined (__stub___$ac_func)
++ choke me
++ #else
++ $ac_func();
++ #endif
++ 
++ ; return 0; }
++ EOF
++ if { (eval echo configure:5200: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
++   rm -rf conftest*
++   eval "ac_cv_func_$ac_func=yes"
++ else
++   echo "configure: failed program was:" >&5
++   cat conftest.$ac_ext >&5
++   rm -rf conftest*
++   eval "ac_cv_func_$ac_func=no"
++ fi
++ rm -f conftest*
++ fi
++ 
++ if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then
++   echo "$ac_t""yes" 1>&6
++     ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
++   cat >> confdefs.h <<EOF
++ #define $ac_tr_func 1
++ EOF
++  
++ else
++   echo "$ac_t""no" 1>&6
++ fi
++ done
+  
+  
+  #
+Index: configure.in
+diff -c mdn/othersrc/bind9/configure.in:1.1.1.7 mdn/othersrc/bind9/configure.in:1.10
+*** configure.in       Thu Jul 26 15:43:20 2001
+--- configure.in       Thu Jul 26 16:44:20 2001
+***************
+*** 1305,1310 ****
+--- 1305,1383 ----
+  AC_SUBST(XMLDIR)
+  
+  #
++ # MDN support
++ #
++ AC_ARG_WITH(mdn,
++      [  --with-mdn[=MPREFIX]   enable MDN support using mDNkit [default PREFIX]],
++      use_mdn="$withval", use_mdn="no")
++ case "$use_mdn" in
++ yes)
++      if test X$prefix = XNONE ; then
++              mdn_path=/usr/local
++      else
++              mdn_path=$prefix
++      fi
++      ;;
++ no)
++      ;;
++ *)
++      mdn_path="$use_mdn"
++      ;;
++ esac
++ 
++ iconvinc=
++ iconvlib=
++ AC_ARG_WITH(libiconv,
++      [  --with-libiconv[=IPREFIX]   GNU libiconv are in IPREFIX [default PREFIX]],
++      use_libiconv="$withval", use_libiconv="no")
++ case "$use_libiconv" in
++ yes)
++      if test X$prefix = XNONE ; then
++              iconvlib="-L/usr/local/lib -R/usr/local/lib -liconv"
++      else
++              iconvlib="-L$prefix/lib -R$prefix/lib -liconv"
++      fi
++      ;;
++ no)
++      iconvlib=
++      ;;
++ *)
++      iconvlib="-L$use_libiconv/lib -R$use_libiconv/lib -liconv"
++      ;;
++ esac
++ 
++ AC_ARG_WITH(iconv,
++      [  --with-iconv[=LIBSPEC]   specify iconv library [default -liconv]],
++      iconvlib="$withval")
++ case "$iconvlib" in
++ no)
++      iconvlib=
++      ;;
++ yes)
++      iconvlib=-liconv
++      ;;
++ esac
++ 
++ AC_ARG_WITH(mdnlib,
++      [  --with-mdnlib=ARG    specify libmdn],
++      mdnlib="$withval", mdnlib="no")
++ if test "$mdnlib" = yes; then
++      AC_MSG_ERROR([You must specify ARG for --with-mdnlib.])
++ fi
++ 
++ if test "$use_mdn" != no; then
++      AC_DEFINE(WITH_MDN, 1, [define if mDNkit support is to be included.])
++      STD_CINCLUDES="$STD_CINCLUDES -I$mdn_path/include"
++      if test "$mdnlib" != no; then
++              LIBS="$mdnlib $iconvlib $LIBS"
++      else
++              LIBS="-L$mdn_path/lib -lmdn $iconvlib $LIBS"
++      fi
++ fi
++ AC_CHECK_HEADERS(locale.h)
++ AC_CHECK_FUNCS(setlocale)
++ 
++ #
+  # Substitutions
+  #
+  AC_SUBST(BIND9_TOP_BUILDDIR)
+Index: bin/dig/dig.c
+diff -c mdn/othersrc/bind9/bin/dig/dig.c:1.1.1.7 mdn/othersrc/bind9/bin/dig/dig.c:1.6
+*** bin/dig/dig.c      Tue Apr 17 14:17:04 2001
+--- bin/dig/dig.c      Wed Aug 15 11:26:01 2001
+***************
+*** 1284,1289 ****
+--- 1284,1294 ----
+               printgreeting(argc, argv, lookup);
+               ISC_LIST_APPEND(lookup_list, lookup, link);
+       }
++ 
++ #ifdef WITH_MDN
++              if (getenv(MDN_DISABLE_ENVVAR_NAME) != NULL)
++                      lookup->mdn = ISC_FALSE;
++ #endif
+  }
+  
+  /*
+Index: bin/dig/dighost.c
+diff -c mdn/othersrc/bind9/bin/dig/dighost.c:1.1.1.10 mdn/othersrc/bind9/bin/dig/dighost.c:1.23
+*** bin/dig/dighost.c  Thu Jul 26 15:43:22 2001
+--- bin/dig/dighost.c  Wed Aug 15 11:26:01 2001
+***************
+*** 33,38 ****
+--- 33,49 ----
+  #include <string.h>
+  #include <limits.h>
+  
++ #ifdef HAVE_LOCALE_H
++ #include <locale.h>
++ #endif
++ 
++ #ifdef WITH_MDN
++ #include <mdn/result.h>
++ #include <mdn/log.h>
++ #include <mdn/resconf.h>
++ #include <mdn/res.h>
++ #endif
++ 
+  #include <dns/byaddr.h>
+  #include <dns/fixedname.h>
+  #include <dns/message.h>
+***************
+*** 135,140 ****
+--- 146,165 ----
+  dig_lookup_t *current_lookup = NULL;
+  isc_uint32_t rr_limit = INT_MAX;
+  
++ #ifdef WITH_MDN
++ mdn_resconf_t mdnconf;
++ 
++ static void          initialize_mdn(void);
++ static isc_result_t  output_filter(isc_buffer_t *buffer,
++                                    unsigned int used_org,
++                                    isc_boolean_t absolute);
++ static mdn_result_t  append_textname(char *name, const char *origin,
++                                      size_t namesize);
++ static void          mdn_check_result(mdn_result_t r, const char *msg);
++ 
++ #define MAXDLEN              256
++ #endif
++ 
+  /*
+   * Apply and clear locks at the event level in global task.
+   * Can I get rid of these using shutdown events?  XXX
+***************
+*** 371,376 ****
+--- 396,404 ----
+       looknew->ignore = ISC_FALSE;
+       looknew->servfail_stops = ISC_FALSE;
+       looknew->besteffort = ISC_TRUE;
++ #ifdef WITH_MDN
++      looknew->mdn = ISC_TRUE;
++ #endif
+       looknew->dnssec = ISC_FALSE;
+       looknew->udpsize = 0;
+       looknew->recurse = ISC_TRUE;
+***************
+*** 429,434 ****
+--- 457,465 ----
+       looknew->ignore = lookold->ignore;
+       looknew->servfail_stops = lookold->servfail_stops;
+       looknew->besteffort = lookold->besteffort;
++ #ifdef WITH_MDN
++      looknew->mdn = lookold->mdn;
++ #endif
+       looknew->dnssec = lookold->dnssec;
+       looknew->udpsize = lookold->udpsize;
+       looknew->recurse = lookold->recurse;
+***************
+*** 697,702 ****
+--- 728,737 ----
+               ISC_LIST_APPEND(server_list, srv, link);
+       }
+  
++ #ifdef WITH_MDN
++      initialize_mdn();
++ #endif
++ 
+       if (keyfile[0] != 0)
+               setup_file_key();
+       else if (keysecret[0] != 0)
+***************
+*** 1232,1243 ****
+--- 1267,1289 ----
+       isc_region_t r;
+       isc_buffer_t b;
+       char store[MXNAME];
++ #ifdef WITH_MDN
++      mdn_result_t mr;
++      char idn_textname[MXNAME], idn_origin[MXNAME], idn_tmp[MXNAME];
++ #endif
+  
+       REQUIRE(lookup != NULL);
+       INSIST(!free_now);
+  
+       debug("setup_lookup(%p)", lookup);
+  
++ #ifdef WITH_MDN
++      if (lookup->mdn == ISC_TRUE)
++              dns_name_settotextfilter(output_filter);
++      else
++              dns_name_settotextfilter(NULL);
++ #endif
++ 
+       result = dns_message_create(mctx, DNS_MESSAGE_INTENTRENDER,
+                                   &lookup->sendmsg);
+       check_result(result, "dns_message_create");
+***************
+*** 1291,1344 ****
+       }
+       if (lookup->origin != NULL) {
+               debug("trying origin %s", lookup->origin->origin);
+!              result = dns_message_gettempname(lookup->sendmsg,
+!                                               &lookup->oname);
+!              check_result(result, "dns_message_gettempname");
+!              dns_name_init(lookup->oname, NULL);
+!              /* XXX Helper funct to conv char* to name? */
+!              len = strlen(lookup->origin->origin);
+!              isc_buffer_init(&b, lookup->origin->origin, len);
+!              isc_buffer_add(&b, len);
+!              result = dns_name_fromtext(lookup->oname, &b, dns_rootname,
+!                                         ISC_FALSE, &lookup->onamebuf);
+!              if (result != ISC_R_SUCCESS) {
+!                      dns_message_puttempname(lookup->sendmsg,
+!                                              &lookup->name);
+!                      dns_message_puttempname(lookup->sendmsg,
+!                                              &lookup->oname);
+!                      fatal("'%s' is not in legal name syntax (%s)",
+!                            lookup->origin->origin,
+!                            dns_result_totext(result));
+!              }
+!              if (lookup->trace_root) {
+!                      dns_name_clone(dns_rootname, lookup->name);
+               } else {
+!                      len = strlen(lookup->textname);
+!                      isc_buffer_init(&b, lookup->textname, len);
+                       isc_buffer_add(&b, len);
+!                      result = dns_name_fromtext(lookup->name, &b,
+!                                                 lookup->oname, ISC_FALSE,
+!                                                 &lookup->namebuf);
+!              }
+!              if (result != ISC_R_SUCCESS) {
+!                      dns_message_puttempname(lookup->sendmsg,
+!                                              &lookup->name);
+                       dns_message_puttempname(lookup->sendmsg,
+                                               &lookup->oname);
+-                      fatal("'%s' is not in legal name syntax (%s)",
+-                            lookup->textname, dns_result_totext(result));
+               }
+-              dns_message_puttempname(lookup->sendmsg, &lookup->oname);
+       } else {
+               debug("using root origin");
+               if (!lookup->trace_root) {
+!                      len = strlen(lookup->textname);
+!                      isc_buffer_init(&b, lookup->textname, len);
+!                      isc_buffer_add(&b, len);
+!                      result = dns_name_fromtext(lookup->name, &b,
+!                                                 dns_rootname,
+!                                                 ISC_FALSE,
+!                                                 &lookup->namebuf);
+               } else {
+                       dns_name_clone(dns_rootname, lookup->name);
+               }
+--- 1337,1464 ----
+       }
+       if (lookup->origin != NULL) {
+               debug("trying origin %s", lookup->origin->origin);
+! #ifdef WITH_MDN
+!              if (lookup->mdn) {
+!                      /*
+!                       * We cannot convert name and origin separately and
+!                       * combine them later, because some encoding scheme
+!                       * (such as UTF-5) can be applied only to an entire
+!                       * domain name, not a partial one.
+!                       */
+!                      mr = mdn_res_nameconv(mdnconf, "l", lookup->textname,
+!                                            idn_textname,
+!                                            sizeof(idn_textname));
+!                      mdn_check_result(mr, "convert textname to UCS");
+!                      mr = mdn_res_nameconv(mdnconf, "l",
+!                                            lookup->origin->origin,
+!                                            idn_origin, sizeof(idn_origin));
+!                      mdn_check_result(mr, "convert origin to UCS");
+!                      mr = append_textname(idn_textname, idn_origin,
+!                                           sizeof(idn_textname));
+!                      mdn_check_result(mr, "append UCS origin to UCS "
+!                                       "textname");
+!                      mr = mdn_res_nameconv(mdnconf, "dMNI", idn_textname,
+!                                            idn_tmp, sizeof(idn_tmp));
+!                      mdn_check_result(mr, "convert UCS textname to IDN "
+!                                       "encoding");
+!                      strcpy(idn_textname, idn_tmp);
+! 
+!                      if (!lookup->trace_root) {
+!                              len = strlen(idn_textname);
+!                              isc_buffer_init(&b, idn_textname, len);
+!                              isc_buffer_add(&b, len);
+!                              result = dns_name_fromtext(lookup->name, &b,
+!                                                         dns_rootname,
+!                                                         ISC_FALSE,
+!                                                         &lookup->namebuf);
+!                      } else {
+!                              dns_name_clone(dns_rootname, lookup->name);
+!                      }
+!                      if (result != ISC_R_SUCCESS) {
+!                              dns_message_puttempname(lookup->sendmsg,
+!                                                      &lookup->name);
+!                              isc_buffer_init(&b, store, MXNAME);
+!                              fatal("'%s' is not a legal name syntax "
+!                                    "(%s)", lookup->textname,
+!                                    dns_result_totext(result));
+!                      }
+! #else /* WITH_MDN */
+!              if (0) {
+! #endif /* WITH_MDN */
+               } else {
+!                      result = dns_message_gettempname(lookup->sendmsg,
+!                                                       &lookup->oname);
+!                      check_result(result, "dns_message_gettempname");
+!                      dns_name_init(lookup->oname, NULL);
+!                      /* XXX Helper funct to conv char* to name? */
+!                      len = strlen(lookup->origin->origin);
+!                      isc_buffer_init(&b, lookup->origin->origin, len);
+                       isc_buffer_add(&b, len);
+!                      result = dns_name_fromtext(lookup->oname, &b,
+!                                                 dns_rootname, ISC_FALSE,
+!                                                 &lookup->onamebuf);
+!                      if (result != ISC_R_SUCCESS) {
+!                              dns_message_puttempname(lookup->sendmsg,
+!                                                      &lookup->name);
+!                              dns_message_puttempname(lookup->sendmsg,
+!                                                      &lookup->oname);
+!                              fatal("'%s' is not in legal name syntax (%s)",
+!                                    lookup->origin->origin,
+!                                    dns_result_totext(result));
+!                      }
+!                      if (lookup->trace_root) {
+!                              dns_name_clone(dns_rootname, lookup->name);
+!                      } else {
+!                              len = strlen(lookup->textname);
+!                              isc_buffer_init(&b, lookup->textname, len);
+!                              isc_buffer_add(&b, len);
+!                              result = dns_name_fromtext(lookup->name, &b,
+!                                                         lookup->oname,
+!                                                         ISC_FALSE,
+!                                                         &lookup->namebuf);
+!                      }
+!                      if (result != ISC_R_SUCCESS) {
+!                              dns_message_puttempname(lookup->sendmsg,
+!                                                      &lookup->name);
+!                              dns_message_puttempname(lookup->sendmsg,
+!                                                      &lookup->oname);
+!                              fatal("'%s' is not in legal name syntax (%s)",
+!                                    lookup->textname,
+!                                    dns_result_totext(result));
+!                      }
+                       dns_message_puttempname(lookup->sendmsg,
+                                               &lookup->oname);
+               }
+       } else {
+               debug("using root origin");
+               if (!lookup->trace_root) {
+! #ifdef WITH_MDN
+!                      if (lookup->mdn) {
+!                              mr = mdn_res_nameconv(mdnconf, "ldMNI",
+!                                                    lookup->textname,
+!                                                    idn_textname,
+!                                                    sizeof(idn_textname));
+!                              mdn_check_result(mr, "convert textname to "
+!                                               "IDN encoding");
+!                              len = strlen(idn_textname);
+!                              isc_buffer_init(&b, idn_textname, len);
+!                              isc_buffer_add(&b, len);
+!                              result = dns_name_fromtext(lookup->name, &b,
+!                                                         dns_rootname,
+!                                                         ISC_FALSE,
+!                                                         &lookup->namebuf);
+! #else /* WITH_MDN */
+!                      if (0) {
+! #endif /* WITH_MDN */
+!                      } else {
+!                              len = strlen(lookup->textname);
+!                              isc_buffer_init(&b, lookup->textname, len);
+!                              isc_buffer_add(&b, len);
+!                              result = dns_name_fromtext(lookup->name, &b,
+!                                                         dns_rootname,
+!                                                         ISC_FALSE,
+!                                                         &lookup->namebuf);
+!                      }
+               } else {
+                       dns_name_clone(dns_rootname, lookup->name);
+               }
+***************
+*** 2763,2765 ****
+--- 2883,2998 ----
+       if (mctx != NULL)
+               isc_mem_destroy(&mctx);
+  }
++ 
++ #ifdef WITH_MDN
++ static void
++ initialize_mdn(void) {
++      mdn_result_t r;
++ 
++ #ifdef HAVE_SETLOCALE
++      /* Set locale */
++      (void)setlocale(LC_ALL, "");
++ #endif
++ 
++      /* General initialization. */
++      r = mdn_resconf_initialize();
++      if (r != mdn_success)
++              fatal("mdn initialization failed: %s",
++                    mdn_result_tostring(r));
++ 
++      /* Create configuration context. */
++      r = mdn_resconf_create(&mdnconf);
++      if (r != mdn_success)
++              fatal("mdn resconf initialization failed: %s",
++                    mdn_result_tostring(r));
++ 
++ 
++      /* Load mdn configuration file. */
++      r = mdn_resconf_loadfile(mdnconf, NULL);
++      if (r != mdn_success)
++              fatal("mdn configuration loading failed: %s",
++                    mdn_result_tostring(r));
++ 
++      /* Set domain name -> text post-conversion filter. */
++      dns_name_settotextfilter(output_filter);
++ }
++ 
++ static isc_result_t
++ output_filter(isc_buffer_t *buffer, unsigned int used_org,
++            isc_boolean_t absolute)
++ {
++      char tmp1[MAXDLEN], tmp2[MAXDLEN];
++      size_t fromlen, tolen;
++      isc_boolean_t end_with_dot;
++ 
++      /*
++       * Copy contents of 'buffer' to 'tmp1', supply trailing dot
++       * if 'absolute' is true, and terminate with NUL.
++       */
++      fromlen = isc_buffer_usedlength(buffer) - used_org;
++      if (fromlen >= MAXDLEN)
++              return (ISC_R_SUCCESS);
++      memcpy(tmp1, (char *)isc_buffer_base(buffer) + used_org, fromlen);
++      end_with_dot = (tmp1[fromlen - 1] == '.') ? ISC_TRUE : ISC_FALSE;
++      if (absolute && !end_with_dot) {
++              fromlen++;
++              if (fromlen >= MAXDLEN)
++                      return (ISC_R_SUCCESS);
++              tmp1[fromlen - 1] = '.';
++      }
++      tmp1[fromlen] = '\0';
++ 
++      /*
++       * Convert contents of 'tmp1' to local encoding.
++       */
++      if (mdn_res_nameconv(mdnconf, "i!NL", tmp1, tmp2, MAXDLEN)
++          != mdn_success)
++              return (ISC_R_SUCCESS);
++      strcpy(tmp1, tmp2);
++ 
++      /*
++       * Copy the converted contents in 'tmp1' back to 'buffer'.
++       * If we have appended trailing dot, remove it.
++       */
++      tolen = strlen(tmp1);
++      if (absolute && !end_with_dot && tmp1[tolen - 1] == '.')
++              tolen--;
++ 
++      if (isc_buffer_length(buffer) < used_org + tolen)
++              return (ISC_R_NOSPACE);
++ 
++      isc_buffer_subtract(buffer, isc_buffer_usedlength(buffer) - used_org);
++      memcpy(isc_buffer_used(buffer), tmp1, tolen);
++      isc_buffer_add(buffer, tolen);
++ 
++      return (ISC_R_SUCCESS);
++ }
++ 
++ static mdn_result_t
++ append_textname(char *name, const char *origin, size_t namesize) {
++      size_t namelen = strlen(name);
++      size_t originlen = strlen(origin);
++ 
++      /* Already absolute? */
++      if (namelen > 0 && name[namelen - 1] == '.')
++              return mdn_success;
++ 
++      /* Append dot and origin */
++ 
++      if (namelen + 1 + originlen >= namesize)
++              return mdn_buffer_overflow;
++ 
++      name[namelen++] = '.';
++      (void)strcpy(name + namelen, origin);
++      return mdn_success;
++ }
++ 
++ static void
++ mdn_check_result(mdn_result_t r, const char *msg) {
++      if (r != mdn_success) {
++              exitcode = 1;
++              fatal("%s: %s", msg, mdn_result_tostring(r));
++      }
++ }
++ 
++ #endif /* WITH_MDN */
+Index: bin/dig/host.c
+diff -c mdn/othersrc/bind9/bin/dig/host.c:1.1.1.7 mdn/othersrc/bind9/bin/dig/host.c:1.6
+*** bin/dig/host.c     Tue Apr 17 14:17:05 2001
+--- bin/dig/host.c     Wed Aug 15 11:26:01 2001
+***************
+*** 669,674 ****
+--- 669,679 ----
+       lookup->new_search = ISC_TRUE;
+       ISC_LIST_APPEND(lookup_list, lookup, link);
+  
++ #ifdef WITH_MDN
++      if (getenv(MDN_DISABLE_ENVVAR_NAME) != NULL)
++              lookup->mdn = ISC_FALSE;
++ #endif
++ 
+       usesearch = ISC_TRUE;
+  }
+  
+Index: bin/dig/nslookup.c
+diff -c mdn/othersrc/bind9/bin/dig/nslookup.c:1.1.1.7 mdn/othersrc/bind9/bin/dig/nslookup.c:1.6
+*** bin/dig/nslookup.c Tue Apr 17 14:17:05 2001
+--- bin/dig/nslookup.c Wed Aug 15 11:26:01 2001
+***************
+*** 766,771 ****
+--- 766,775 ----
+       ISC_LIST_APPEND(lookup_list, lookup, link);
+       lookup->origin = NULL;
+       ISC_LIST_INIT(lookup->my_server_list);
++ #ifdef WITH_MDN
++      if (getenv(MDN_DISABLE_ENVVAR_NAME) != NULL)
++              lookup->mdn = ISC_FALSE;
++ #endif
+       debug("looking up %s", lookup->textname);
+  }
+  
+Index: bin/dig/include/dig/dig.h
+diff -c mdn/othersrc/bind9/bin/dig/include/dig/dig.h:1.1.1.5 mdn/othersrc/bind9/bin/dig/include/dig/dig.h:1.6
+*** bin/dig/include/dig/dig.h  Fri Jan 19 11:58:37 2001
+--- bin/dig/include/dig/dig.h  Wed Aug 15 11:26:01 2001
+***************
+*** 69,74 ****
+--- 69,81 ----
+   * be 1.
+   */
+  
++ /*
++  * Name of environment variable which disables MDN support if defined.
++  */
++ #ifdef WITH_MDN
++ #define MDN_DISABLE_ENVVAR_NAME "MDN_DISABLE"
++ #endif
++ 
+  ISC_LANG_BEGINDECLS
+  
+  typedef struct dig_lookup dig_lookup_t;
+***************
+*** 103,108 ****
+--- 110,118 ----
+               servfail_stops,
+               new_search,
+               besteffort,
++ #ifdef WITH_MDN
++              mdn,
++ #endif
+               dnssec;
+       char textname[MXNAME]; /* Name we're going to be looking up */
+       char cmdline[MXNAME];
+Index: doc/man/bin/dig.1
+diff -c mdn/othersrc/bind9/doc/man/bin/dig.1:1.1.1.4 mdn/othersrc/bind9/doc/man/bin/dig.1:1.2
+*** doc/man/bin/dig.1  Thu Jul 26 15:44:12 2001
+--- doc/man/bin/dig.1  Wed Aug 22 13:20:44 2001
+***************
+*** 450,455 ****
+--- 450,469 ----
+  will not print the initial query when it looks up the
+  NS records for
+  .Dv isc.org .
++ .Sh MDN SUPPORT
++ If
++ .Nm dig
++ has been built with mdn support, it can accept and display non-ASCII
++ domain names.
++ .Nm dig
++ appropriately converts character encoding of domain name before sending
++ a request to DNS server or displaying a reply from the server.
++ If you'd like to turn off the MDN support for some reason, defines the
++ .Ar MDN_DISABLE
++ environment variable.
++ The MDN support is disabled if the the variable is set when 
++ .Nm dig
++ runs.
+  .Sh FILES
+  .Pa /etc/resolv.conf
+  .Sh SEE ALSO
+Index: doc/man/bin/host.1
+diff -c mdn/othersrc/bind9/doc/man/bin/host.1:1.1.1.4 mdn/othersrc/bind9/doc/man/bin/host.1:1.2
+*** doc/man/bin/host.1 Thu Jul 26 15:44:12 2001
+--- doc/man/bin/host.1 Wed Aug 22 13:20:44 2001
+***************
+*** 206,211 ****
+--- 206,225 ----
+  will effectively wait forever for a reply.
+  The time to wait for a response will be set to the number of seconds
+  given by the hardware's maximum value for an integer quantity.
++ .Sh MDN SUPPORT
++ If
++ .Nm host
++ has been built with mdn support, it can accept and display non-ASCII
++ domain names.
++ .Nm host
++ appropriately converts character encoding of domain name before sending
++ a request to DNS server or displaying a reply from the server.
++ If you'd like to turn off the MDN support for some reason, defines the
++ .Ar MDN_DISABLE
++ environment variable.
++ The MDN support is disabled if the the variable is set when 
++ .Nm host
++ runs.
+  .Sh FILES
+  .Pa /etc/resolv.conf
+  .Sh SEE ALSO
+Index: lib/dns/name.c
+diff -c mdn/othersrc/bind9/lib/dns/name.c:1.1.1.8 mdn/othersrc/bind9/lib/dns/name.c:1.11
+*** lib/dns/name.c     Thu Jul 26 15:44:38 2001
+--- lib/dns/name.c     Thu Jul 26 16:44:21 2001
+***************
+*** 205,210 ****
+--- 205,217 ----
+  /* XXXDCL make const? */
+  dns_name_t *dns_wildcardname = &wild.name;
+  
++ #ifdef WITH_MDN
++ /*
++  * dns_name_t to text post-conversion procedure.
++  */
++ static dns_name_totextfilter_t totext_filter_proc = NULL;
++ #endif
++ 
+  static void
+  set_offsets(const dns_name_t *name, unsigned char *offsets,
+           dns_name_t *set_name);
+***************
+*** 1705,1710 ****
+--- 1712,1720 ----
+       unsigned int labels;
+       isc_boolean_t saw_root = ISC_FALSE;
+       char num[4];
++ #ifdef WITH_MDN
++      unsigned int oused = target->used;
++ #endif
+  
+       /*
+        * This function assumes the name is in proper uncompressed
+***************
+*** 1882,1887 ****
+--- 1892,1901 ----
+  
+       isc_buffer_add(target, tlen - trem);
+  
++ #ifdef WITH_MDN
++      if (totext_filter_proc != NULL)
++              return ((*totext_filter_proc)(target, oused, saw_root));
++ #endif
+       return (ISC_R_SUCCESS);
+  }
+  
+***************
+*** 3153,3155 ****
+--- 3167,3176 ----
+       } else
+               snprintf(cp, size, "<unknown>");
+  }
++ 
++ #ifdef WITH_MDN
++ void
++ dns_name_settotextfilter(dns_name_totextfilter_t proc) {
++      totext_filter_proc = proc;
++ }
++ #endif
+Index: lib/dns/include/dns/name.h
+diff -c mdn/othersrc/bind9/lib/dns/include/dns/name.h:1.1.1.5 mdn/othersrc/bind9/lib/dns/include/dns/name.h:1.7
+*** lib/dns/include/dns/name.h Tue Apr 17 14:18:27 2001
+--- lib/dns/include/dns/name.h Thu Apr 26 13:54:43 2001
+***************
+*** 217,222 ****
+--- 217,233 ----
+   */
+  #define DNS_NAME_MAXWIRE 255
+  
++ #ifdef WITH_MDN
++ /*
++  * Text output filter procedure.
++  * 'target' is the buffer to be converted.  The region to be converted
++  * is from 'buffer'->base + 'used_org' to the end of the used region.
++  */
++ typedef isc_result_t (*dns_name_totextfilter_t)(isc_buffer_t *target,
++                                              unsigned int used_org,
++                                              isc_boolean_t absolute);
++ #endif
++ 
+  /***
+   *** Initialization
+   ***/
+***************
+*** 1215,1220 ****
+--- 1226,1239 ----
+   *   'size' > 0.
+   *
+   */
++ 
++ #ifdef WITH_MDN
++ void
++ dns_name_settotextfilter(dns_name_totextfilter_t proc);
++ /*
++  * Call 'proc' at the end of dns_name_totext.
++  */
++ #endif /* WITH_MDN */
+  
+  #define DNS_NAME_FORMATSIZE (DNS_NAME_MAXTEXT + 1)
+  /*
diff --git a/contrib/idn/mdnkit/patch/bind9/bind-9.2.0-patch b/contrib/idn/mdnkit/patch/bind9/bind-9.2.0-patch
new file mode 100644 (file)
index 0000000..509fc98
--- /dev/null
@@ -0,0 +1,6047 @@
+MDN patch for bind-9.2.0
+========================
+
+
+This is a patch file for ISC BIND 9.2.0 to make it work with
+internationalized/multilingual domain names.  With this patch you'll
+get MDN-aware dig/host/nslookup.
+
+To apply this patch, you should go to the top directory of the BIND
+distribution (where you see `README' file), then invoke `patch'
+command like this:
+
+       % patch -p0 < this-file
+
+Then follow the instructions described in `README.mdnkit' to compile
+and install.
+
+
+Index: README.mdnkit
+diff -c /dev/null mdn/othersrc/bind9/README.mdnkit:1.9
+*** README.mdnkit      Thu Dec  6 13:51:44 2001
+--- README.mdnkit      Wed Aug 22 15:19:31 2001
+***************
+*** 0 ****
+--- 1,124 ----
++ 
++                      BIND-9 MDN patch
++ 
++             Japan Network Information Center (JPNIC)
++ 
++ 
++ * What is this patch for?
++ 
++ This patch adds multilingual domain name (MDN) support to BIND-9.
++ You'll get multilingualized version of dig/host/nslookup commands.
++ 
++     + mulltilingualized dig/host/nslookup
++      dig/host/nslookup accepts non-ASCII domain names in the local
++      codeset (such as Shift JIS, Big5 or ISO8859-1) determined by
++      the locale information.  The domain names are normalized and
++      converted to the encoding on the DNS protocol, and sent to DNS
++      servers.  The replies are converted back to the local codeset
++      and displayed.
++ 
++ 
++ * Compilation & installation
++ 
++ 0. Prerequisite
++ 
++ You have to build and install mDNkit before building this patched version
++ of bind-9.
++ 
++ 1. Running configure script
++ 
++ Run `configure' in the top directory.  See `README' for the
++ configuration options.
++ 
++ This patch adds the following 4 options to `configure'.  You should
++ at least specify `--with-mdn' option to enable MDN support.
++ 
++     --with-mdn[=MDN_PREFIX]
++      To enable MDN support, you have to specify `--with-mdn' option.
++      The argument MDN_PREFIX is the install prefix of mDNkit.  If
++      MDN_PREFIX is omitted, PREFIX (derived from `--prefix=PREFIX')
++      is assumed.
++ 
++     --with-libiconv[=LIBICONV_PREFIX]
++      Specify this option if mDNkit you have installed links GNU
++      libiconv.  The argument LIBICONV_PREFIX is install prefix of
++      GNU libiconv.  If the argument is omitted, PREFIX (derived
++      from `--prefix=PREFIX') is assumed.
++ 
++      `--with-libiconv' is shorthand option for GNU libiconv.
++ 
++          --with-libiconv=/usr/local
++ 
++      This is equivalent to:
++ 
++          --with-iconv='-L/usr/local/lib -R/usr/local/lib -liconv'
++ 
++      `--with-libiconv' assumes that your C compiler has `-R'
++      option, and that the option adds the specified run-time path
++      to an exacutable binary.  If `-R' option of your compiler has
++      different meaning, or your compiler lacks the option, you
++      should use `--with-iconv' option instead.  Binary command
++      without run-time path information might be unexecutable.
++      In that case, you would see an error message like:
++ 
++          error in loading shared libraries: libiconv.so.2: cannot
++          open shared object file
++ 
++      If both `--with-libiconv' and `--with-iconv' options are
++      specified, `--with-iconv' is prior to `--with-libiconv'.
++ 
++     --with-iconv=ICONV_LIBSPEC
++      If your libc doens't provide iconv(), you need to specify the
++      library containing iconv() with this option.  `ICONV_LIBSPEC'
++      is the argument(s) to `cc' or `ld' to link the library, for
++      example, `--with-iconv="-L/usr/local/lib -liconv"'.
++      You don't need to specify the header file directory for "iconv.h"
++      to the compiler, as it isn't included directly by bind-9 with
++      this patch.
++ 
++     --with-mdnlib=MDN_LIBSPEC
++      With this option, you can explicitly specify the argument(s)
++      to `cc' or `ld' to link the mDNkit's library, `libmdn'.  If
++      this option is not specified, `-L${PREFIX}/lib -lmdn' is
++      assumed, where ${PREFIX} is the installation prefix specified
++      with `--with-mdn' option above.  You may need to use this
++      option to specify extra argments, for example,
++      `--with-mdnlib="-L/usr/local/lib -R/usr/local/lib -lmdn"'.
++ 
++ Please consult `README' for other configuration options.
++ 
++ Note that if you want to specify some extra header file directories,
++ you should use the environment variable STD_CINCLUDES instead of
++ CFLAGS, as described in README.
++ 
++ 2. Compilation and installation
++ 
++ After running "configure", just do
++ 
++      make
++      make install
++ 
++ for compiling and installing.
++ 
++ 3. Resolver configuration
++ 
++ To handle multilingual domain names, you have to specify the
++ properties like:
++      + name encoding used in DNS protocol data
++      + normalization (NAMEPREP) schemes
++ These properties are specified by the mDNkit's configuration file,
++ "mdn.conf".  You have to create and set up the file properly.  The
++ pathname of the file and contents are described in the manual
++ "mdn.conf".
++ 
++ 
++ * Contact information
++ 
++ Please see http//www.nic.ad.jp/jp/research/idn/ for the latest news
++ about mDNkit and this patch.
++ 
++ Bug reports and comments on this kit should be sent to
++ mdnkit-bugs@nic.ad.jp and idn-cmt@nic.ad.jp, respectively.
++ 
++ 
++ ; $Id: bind-9.2.0-patch,v 1.1 2002/02/08 05:41:25 marka Exp $
+Index: config.h.in
+diff -c mdn/othersrc/bind9/config.h.in:1.1.1.6 mdn/othersrc/bind9/config.h.in:1.10.2.1
+*** config.h.in        Tue Nov 27 16:55:45 2001
+--- config.h.in        Thu Dec  6 13:51:12 2001
+***************
+*** 141,146 ****
+--- 141,149 ----
+  /* define if you have strerror in the C library. */
+  #undef HAVE_STRERROR
+  
++ /* Define if you have the setlocale function.  */
++ #undef HAVE_SETLOCALE
++ 
+  /* Define if you have the <dlfcn.h> header file.  */
+  #undef HAVE_DLFCN_H
+  
+***************
+*** 150,155 ****
+--- 153,161 ----
+  /* Define if you have the <linux/capability.h> header file.  */
+  #undef HAVE_LINUX_CAPABILITY_H
+  
++ /* Define if you have the <locale.h> header file.  */
++ #undef HAVE_LOCALE_H
++ 
+  /* Define if you have the <sys/prctl.h> header file.  */
+  #undef HAVE_SYS_PRCTL_H
+  
+***************
+*** 176,178 ****
+--- 182,188 ----
+  
+  /* Define if you have the socket library (-lsocket).  */
+  #undef HAVE_LIBSOCKET
++ 
++ /* define if mDNkit support is to be included. */
++ #undef WITH_MDN
++ 
+Index: configure
+diff -c mdn/othersrc/bind9/configure:1.1.1.8 mdn/othersrc/bind9/configure:1.11
+*** configure  Tue Nov 27 16:55:47 2001
+--- configure  Thu Nov 29 18:45:13 2001
+***************
+*** 369,374 ****
+--- 369,382 ----
+    --with-kame[=PATH] use Kame IPv6 [default path /usr/local/v6]"
+  ac_help="$ac_help
+    --disable-linux-caps       disable linux capabilities"
++ ac_help="$ac_help
++   --with-mdn[=MPREFIX]   enable MDN support using mDNkit [default PREFIX]"
++ ac_help="$ac_help
++   --with-libiconv[=IPREFIX]   GNU libiconv are in IPREFIX [default PREFIX]"
++ ac_help="$ac_help
++   --with-iconv[=LIBSPEC]   specify iconv library [default -liconv]"
++ ac_help="$ac_help
++   --with-mdnlib=ARG    specify libmdn"
+  
+  # Initialize some variables set by options.
+  # The variables have the same names as the options, with
+***************
+*** 911,917 ****
+  fi
+  
+  echo $ac_n "checking host system type""... $ac_c" 1>&6
+! echo "configure:915: checking host system type" >&5
+  
+  host_alias=$host
+  case "$host_alias" in
+--- 919,925 ----
+  fi
+  
+  echo $ac_n "checking host system type""... $ac_c" 1>&6
+! echo "configure:923: checking host system type" >&5
+  
+  host_alias=$host
+  case "$host_alias" in
+***************
+*** 933,939 ****
+  
+  
+  echo $ac_n "checking whether ${MAKE-make} sets \${MAKE}""... $ac_c" 1>&6
+! echo "configure:937: checking whether ${MAKE-make} sets \${MAKE}" >&5
+  set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y%./+-%__p_%'`
+  if eval "test \"`echo '$''{'ac_cv_prog_make_${ac_make}_set'+set}'`\" = set"; then
+    echo $ac_n "(cached) $ac_c" 1>&6
+--- 941,947 ----
+  
+  
+  echo $ac_n "checking whether ${MAKE-make} sets \${MAKE}""... $ac_c" 1>&6
+! echo "configure:945: checking whether ${MAKE-make} sets \${MAKE}" >&5
+  set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y%./+-%__p_%'`
+  if eval "test \"`echo '$''{'ac_cv_prog_make_${ac_make}_set'+set}'`\" = set"; then
+    echo $ac_n "(cached) $ac_c" 1>&6
+***************
+*** 962,968 ****
+  # Extract the first word of "ranlib", so it can be a program name with args.
+  set dummy ranlib; ac_word=$2
+  echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+! echo "configure:966: checking for $ac_word" >&5
+  if eval "test \"`echo '$''{'ac_cv_prog_RANLIB'+set}'`\" = set"; then
+    echo $ac_n "(cached) $ac_c" 1>&6
+  else
+--- 970,976 ----
+  # Extract the first word of "ranlib", so it can be a program name with args.
+  set dummy ranlib; ac_word=$2
+  echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+! echo "configure:974: checking for $ac_word" >&5
+  if eval "test \"`echo '$''{'ac_cv_prog_RANLIB'+set}'`\" = set"; then
+    echo $ac_n "(cached) $ac_c" 1>&6
+  else
+***************
+*** 1001,1007 ****
+  # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
+  # ./install, which can be erroneously created by make from ./install.sh.
+  echo $ac_n "checking for a BSD compatible install""... $ac_c" 1>&6
+! echo "configure:1005: checking for a BSD compatible install" >&5
+  if test -z "$INSTALL"; then
+  if eval "test \"`echo '$''{'ac_cv_path_install'+set}'`\" = set"; then
+    echo $ac_n "(cached) $ac_c" 1>&6
+--- 1009,1015 ----
+  # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
+  # ./install, which can be erroneously created by make from ./install.sh.
+  echo $ac_n "checking for a BSD compatible install""... $ac_c" 1>&6
+! echo "configure:1013: checking for a BSD compatible install" >&5
+  if test -z "$INSTALL"; then
+  if eval "test \"`echo '$''{'ac_cv_path_install'+set}'`\" = set"; then
+    echo $ac_n "(cached) $ac_c" 1>&6
+***************
+*** 1062,1068 ****
+  # Extract the first word of "ar", so it can be a program name with args.
+  set dummy ar; ac_word=$2
+  echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+! echo "configure:1066: checking for $ac_word" >&5
+  if eval "test \"`echo '$''{'ac_cv_path_AR'+set}'`\" = set"; then
+    echo $ac_n "(cached) $ac_c" 1>&6
+  else
+--- 1070,1076 ----
+  # Extract the first word of "ar", so it can be a program name with args.
+  set dummy ar; ac_word=$2
+  echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+! echo "configure:1074: checking for $ac_word" >&5
+  if eval "test \"`echo '$''{'ac_cv_path_AR'+set}'`\" = set"; then
+    echo $ac_n "(cached) $ac_c" 1>&6
+  else
+***************
+*** 1121,1127 ****
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+  set dummy $ac_prog; ac_word=$2
+  echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+! echo "configure:1125: checking for $ac_word" >&5
+  if eval "test \"`echo '$''{'ac_cv_path_ETAGS'+set}'`\" = set"; then
+    echo $ac_n "(cached) $ac_c" 1>&6
+  else
+--- 1129,1135 ----
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+  set dummy $ac_prog; ac_word=$2
+  echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+! echo "configure:1133: checking for $ac_word" >&5
+  if eval "test \"`echo '$''{'ac_cv_path_ETAGS'+set}'`\" = set"; then
+    echo $ac_n "(cached) $ac_c" 1>&6
+  else
+***************
+*** 1163,1169 ****
+  #
+  if test "X$ETAGS" != "X"; then
+       echo $ac_n "checking for Exuberant Ctags etags""... $ac_c" 1>&6
+! echo "configure:1167: checking for Exuberant Ctags etags" >&5
+       if $ETAGS --version 2>&1 | grep 'Exuberant Ctags' >/dev/null 2>&1; then
+               echo "$ac_t""yes" 1>&6
+               ETAGS="$ETAGS -L"
+--- 1171,1177 ----
+  #
+  if test "X$ETAGS" != "X"; then
+       echo $ac_n "checking for Exuberant Ctags etags""... $ac_c" 1>&6
+! echo "configure:1175: checking for Exuberant Ctags etags" >&5
+       if $ETAGS --version 2>&1 | grep 'Exuberant Ctags' >/dev/null 2>&1; then
+               echo "$ac_t""yes" 1>&6
+               ETAGS="$ETAGS -L"
+***************
+*** 1181,1187 ****
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+  set dummy $ac_prog; ac_word=$2
+  echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+! echo "configure:1185: checking for $ac_word" >&5
+  if eval "test \"`echo '$''{'ac_cv_path_PERL'+set}'`\" = set"; then
+    echo $ac_n "(cached) $ac_c" 1>&6
+  else
+--- 1189,1195 ----
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+  set dummy $ac_prog; ac_word=$2
+  echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+! echo "configure:1193: checking for $ac_word" >&5
+  if eval "test \"`echo '$''{'ac_cv_path_PERL'+set}'`\" = set"; then
+    echo $ac_n "(cached) $ac_c" 1>&6
+  else
+***************
+*** 1328,1334 ****
+  # Extract the first word of "gcc", so it can be a program name with args.
+  set dummy gcc; ac_word=$2
+  echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+! echo "configure:1332: checking for $ac_word" >&5
+  if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
+    echo $ac_n "(cached) $ac_c" 1>&6
+  else
+--- 1336,1342 ----
+  # Extract the first word of "gcc", so it can be a program name with args.
+  set dummy gcc; ac_word=$2
+  echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+! echo "configure:1340: checking for $ac_word" >&5
+  if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
+    echo $ac_n "(cached) $ac_c" 1>&6
+  else
+***************
+*** 1358,1364 ****
+    # Extract the first word of "cc", so it can be a program name with args.
+  set dummy cc; ac_word=$2
+  echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+! echo "configure:1362: checking for $ac_word" >&5
+  if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
+    echo $ac_n "(cached) $ac_c" 1>&6
+  else
+--- 1366,1372 ----
+    # Extract the first word of "cc", so it can be a program name with args.
+  set dummy cc; ac_word=$2
+  echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+! echo "configure:1370: checking for $ac_word" >&5
+  if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
+    echo $ac_n "(cached) $ac_c" 1>&6
+  else
+***************
+*** 1409,1415 ****
+        # Extract the first word of "cl", so it can be a program name with args.
+  set dummy cl; ac_word=$2
+  echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+! echo "configure:1413: checking for $ac_word" >&5
+  if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
+    echo $ac_n "(cached) $ac_c" 1>&6
+  else
+--- 1417,1423 ----
+        # Extract the first word of "cl", so it can be a program name with args.
+  set dummy cl; ac_word=$2
+  echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+! echo "configure:1421: checking for $ac_word" >&5
+  if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
+    echo $ac_n "(cached) $ac_c" 1>&6
+  else
+***************
+*** 1441,1447 ****
+  fi
+  
+  echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6
+! echo "configure:1445: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5
+  
+  ac_ext=c
+  # CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
+--- 1449,1455 ----
+  fi
+  
+  echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6
+! echo "configure:1453: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5
+  
+  ac_ext=c
+  # CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
+***************
+*** 1452,1463 ****
+  
+  cat > conftest.$ac_ext << EOF
+  
+! #line 1456 "configure"
+  #include "confdefs.h"
+  
+  main(){return(0);}
+  EOF
+! if { (eval echo configure:1461: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+    ac_cv_prog_cc_works=yes
+    # If we can't run a trivial program, we are probably using a cross compiler.
+    if (./conftest; exit) 2>/dev/null; then
+--- 1460,1471 ----
+  
+  cat > conftest.$ac_ext << EOF
+  
+! #line 1464 "configure"
+  #include "confdefs.h"
+  
+  main(){return(0);}
+  EOF
+! if { (eval echo configure:1469: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+    ac_cv_prog_cc_works=yes
+    # If we can't run a trivial program, we are probably using a cross compiler.
+    if (./conftest; exit) 2>/dev/null; then
+***************
+*** 1483,1494 ****
+    { echo "configure: error: installation or configuration problem: C compiler cannot create executables." 1>&2; exit 1; }
+  fi
+  echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler""... $ac_c" 1>&6
+! echo "configure:1487: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5
+  echo "$ac_t""$ac_cv_prog_cc_cross" 1>&6
+  cross_compiling=$ac_cv_prog_cc_cross
+  
+  echo $ac_n "checking whether we are using GNU C""... $ac_c" 1>&6
+! echo "configure:1492: checking whether we are using GNU C" >&5
+  if eval "test \"`echo '$''{'ac_cv_prog_gcc'+set}'`\" = set"; then
+    echo $ac_n "(cached) $ac_c" 1>&6
+  else
+--- 1491,1502 ----
+    { echo "configure: error: installation or configuration problem: C compiler cannot create executables." 1>&2; exit 1; }
+  fi
+  echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler""... $ac_c" 1>&6
+! echo "configure:1495: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5
+  echo "$ac_t""$ac_cv_prog_cc_cross" 1>&6
+  cross_compiling=$ac_cv_prog_cc_cross
+  
+  echo $ac_n "checking whether we are using GNU C""... $ac_c" 1>&6
+! echo "configure:1500: checking whether we are using GNU C" >&5
+  if eval "test \"`echo '$''{'ac_cv_prog_gcc'+set}'`\" = set"; then
+    echo $ac_n "(cached) $ac_c" 1>&6
+  else
+***************
+*** 1497,1503 ****
+    yes;
+  #endif
+  EOF
+! if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:1501: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
+    ac_cv_prog_gcc=yes
+  else
+    ac_cv_prog_gcc=no
+--- 1505,1511 ----
+    yes;
+  #endif
+  EOF
+! if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:1509: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
+    ac_cv_prog_gcc=yes
+  else
+    ac_cv_prog_gcc=no
+***************
+*** 1516,1522 ****
+  ac_save_CFLAGS="$CFLAGS"
+  CFLAGS=
+  echo $ac_n "checking whether ${CC-cc} accepts -g""... $ac_c" 1>&6
+! echo "configure:1520: checking whether ${CC-cc} accepts -g" >&5
+  if eval "test \"`echo '$''{'ac_cv_prog_cc_g'+set}'`\" = set"; then
+    echo $ac_n "(cached) $ac_c" 1>&6
+  else
+--- 1524,1530 ----
+  ac_save_CFLAGS="$CFLAGS"
+  CFLAGS=
+  echo $ac_n "checking whether ${CC-cc} accepts -g""... $ac_c" 1>&6
+! echo "configure:1528: checking whether ${CC-cc} accepts -g" >&5
+  if eval "test \"`echo '$''{'ac_cv_prog_cc_g'+set}'`\" = set"; then
+    echo $ac_n "(cached) $ac_c" 1>&6
+  else
+***************
+*** 1549,1555 ****
+  
+  
+  echo $ac_n "checking how to run the C preprocessor""... $ac_c" 1>&6
+! echo "configure:1553: checking how to run the C preprocessor" >&5
+  # On Suns, sometimes $CPP names a directory.
+  if test -n "$CPP" && test -d "$CPP"; then
+    CPP=
+--- 1557,1563 ----
+  
+  
+  echo $ac_n "checking how to run the C preprocessor""... $ac_c" 1>&6
+! echo "configure:1561: checking how to run the C preprocessor" >&5
+  # On Suns, sometimes $CPP names a directory.
+  if test -n "$CPP" && test -d "$CPP"; then
+    CPP=
+***************
+*** 1564,1576 ****
+    # On the NeXT, cc -E runs the code through the compiler's parser,
+    # not just through cpp.
+    cat > conftest.$ac_ext <<EOF
+! #line 1568 "configure"
+  #include "confdefs.h"
+  #include <assert.h>
+  Syntax Error
+  EOF
+  ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
+! { (eval echo configure:1574: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+  ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
+  if test -z "$ac_err"; then
+    :
+--- 1572,1584 ----
+    # On the NeXT, cc -E runs the code through the compiler's parser,
+    # not just through cpp.
+    cat > conftest.$ac_ext <<EOF
+! #line 1576 "configure"
+  #include "confdefs.h"
+  #include <assert.h>
+  Syntax Error
+  EOF
+  ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
+! { (eval echo configure:1582: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+  ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
+  if test -z "$ac_err"; then
+    :
+***************
+*** 1581,1593 ****
+    rm -rf conftest*
+    CPP="${CC-cc} -E -traditional-cpp"
+    cat > conftest.$ac_ext <<EOF
+! #line 1585 "configure"
+  #include "confdefs.h"
+  #include <assert.h>
+  Syntax Error
+  EOF
+  ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
+! { (eval echo configure:1591: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+  ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
+  if test -z "$ac_err"; then
+    :
+--- 1589,1601 ----
+    rm -rf conftest*
+    CPP="${CC-cc} -E -traditional-cpp"
+    cat > conftest.$ac_ext <<EOF
+! #line 1593 "configure"
+  #include "confdefs.h"
+  #include <assert.h>
+  Syntax Error
+  EOF
+  ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
+! { (eval echo configure:1599: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+  ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
+  if test -z "$ac_err"; then
+    :
+***************
+*** 1598,1610 ****
+    rm -rf conftest*
+    CPP="${CC-cc} -nologo -E"
+    cat > conftest.$ac_ext <<EOF
+! #line 1602 "configure"
+  #include "confdefs.h"
+  #include <assert.h>
+  Syntax Error
+  EOF
+  ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
+! { (eval echo configure:1608: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+  ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
+  if test -z "$ac_err"; then
+    :
+--- 1606,1618 ----
+    rm -rf conftest*
+    CPP="${CC-cc} -nologo -E"
+    cat > conftest.$ac_ext <<EOF
+! #line 1610 "configure"
+  #include "confdefs.h"
+  #include <assert.h>
+  Syntax Error
+  EOF
+  ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
+! { (eval echo configure:1616: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+  ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
+  if test -z "$ac_err"; then
+    :
+***************
+*** 1629,1640 ****
+  echo "$ac_t""$CPP" 1>&6
+  
+  echo $ac_n "checking for ANSI C header files""... $ac_c" 1>&6
+! echo "configure:1633: checking for ANSI C header files" >&5
+  if eval "test \"`echo '$''{'ac_cv_header_stdc'+set}'`\" = set"; then
+    echo $ac_n "(cached) $ac_c" 1>&6
+  else
+    cat > conftest.$ac_ext <<EOF
+! #line 1638 "configure"
+  #include "confdefs.h"
+  #include <stdlib.h>
+  #include <stdarg.h>
+--- 1637,1648 ----
+  echo "$ac_t""$CPP" 1>&6
+  
+  echo $ac_n "checking for ANSI C header files""... $ac_c" 1>&6
+! echo "configure:1641: checking for ANSI C header files" >&5
+  if eval "test \"`echo '$''{'ac_cv_header_stdc'+set}'`\" = set"; then
+    echo $ac_n "(cached) $ac_c" 1>&6
+  else
+    cat > conftest.$ac_ext <<EOF
+! #line 1646 "configure"
+  #include "confdefs.h"
+  #include <stdlib.h>
+  #include <stdarg.h>
+***************
+*** 1642,1648 ****
+  #include <float.h>
+  EOF
+  ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
+! { (eval echo configure:1646: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+  ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
+  if test -z "$ac_err"; then
+    rm -rf conftest*
+--- 1650,1656 ----
+  #include <float.h>
+  EOF
+  ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
+! { (eval echo configure:1654: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+  ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
+  if test -z "$ac_err"; then
+    rm -rf conftest*
+***************
+*** 1659,1665 ****
+  if test $ac_cv_header_stdc = yes; then
+    # SunOS 4.x string.h does not declare mem*, contrary to ANSI.
+  cat > conftest.$ac_ext <<EOF
+! #line 1663 "configure"
+  #include "confdefs.h"
+  #include <string.h>
+  EOF
+--- 1667,1673 ----
+  if test $ac_cv_header_stdc = yes; then
+    # SunOS 4.x string.h does not declare mem*, contrary to ANSI.
+  cat > conftest.$ac_ext <<EOF
+! #line 1671 "configure"
+  #include "confdefs.h"
+  #include <string.h>
+  EOF
+***************
+*** 1677,1683 ****
+  if test $ac_cv_header_stdc = yes; then
+    # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
+  cat > conftest.$ac_ext <<EOF
+! #line 1681 "configure"
+  #include "confdefs.h"
+  #include <stdlib.h>
+  EOF
+--- 1685,1691 ----
+  if test $ac_cv_header_stdc = yes; then
+    # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
+  cat > conftest.$ac_ext <<EOF
+! #line 1689 "configure"
+  #include "confdefs.h"
+  #include <stdlib.h>
+  EOF
+***************
+*** 1698,1704 ****
+    :
+  else
+    cat > conftest.$ac_ext <<EOF
+! #line 1702 "configure"
+  #include "confdefs.h"
+  #include <ctype.h>
+  #define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
+--- 1706,1712 ----
+    :
+  else
+    cat > conftest.$ac_ext <<EOF
+! #line 1710 "configure"
+  #include "confdefs.h"
+  #include <ctype.h>
+  #define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
+***************
+*** 1709,1715 ****
+  exit (0); }
+  
+  EOF
+! if { (eval echo configure:1713: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+  then
+    :
+  else
+--- 1717,1723 ----
+  exit (0); }
+  
+  EOF
+! if { (eval echo configure:1721: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+  then
+    :
+  else
+***************
+*** 1737,1753 ****
+  do
+  ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
+  echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
+! echo "configure:1741: checking for $ac_hdr" >&5
+  if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
+    echo $ac_n "(cached) $ac_c" 1>&6
+  else
+    cat > conftest.$ac_ext <<EOF
+! #line 1746 "configure"
+  #include "confdefs.h"
+  #include <$ac_hdr>
+  EOF
+  ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
+! { (eval echo configure:1751: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+  ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
+  if test -z "$ac_err"; then
+    rm -rf conftest*
+--- 1745,1761 ----
+  do
+  ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
+  echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
+! echo "configure:1749: checking for $ac_hdr" >&5
+  if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
+    echo $ac_n "(cached) $ac_c" 1>&6
+  else
+    cat > conftest.$ac_ext <<EOF
+! #line 1754 "configure"
+  #include "confdefs.h"
+  #include <$ac_hdr>
+  EOF
+  ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
+! { (eval echo configure:1759: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+  ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
+  if test -z "$ac_err"; then
+    rm -rf conftest*
+***************
+*** 1775,1786 ****
+  
+  
+  echo $ac_n "checking for working const""... $ac_c" 1>&6
+! echo "configure:1779: checking for working const" >&5
+  if eval "test \"`echo '$''{'ac_cv_c_const'+set}'`\" = set"; then
+    echo $ac_n "(cached) $ac_c" 1>&6
+  else
+    cat > conftest.$ac_ext <<EOF
+! #line 1784 "configure"
+  #include "confdefs.h"
+  
+  int main() {
+--- 1783,1794 ----
+  
+  
+  echo $ac_n "checking for working const""... $ac_c" 1>&6
+! echo "configure:1787: checking for working const" >&5
+  if eval "test \"`echo '$''{'ac_cv_c_const'+set}'`\" = set"; then
+    echo $ac_n "(cached) $ac_c" 1>&6
+  else
+    cat > conftest.$ac_ext <<EOF
+! #line 1792 "configure"
+  #include "confdefs.h"
+  
+  int main() {
+***************
+*** 1829,1835 ****
+  
+  ; return 0; }
+  EOF
+! if { (eval echo configure:1833: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+    rm -rf conftest*
+    ac_cv_c_const=yes
+  else
+--- 1837,1843 ----
+  
+  ; return 0; }
+  EOF
+! if { (eval echo configure:1841: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+    rm -rf conftest*
+    ac_cv_c_const=yes
+  else
+***************
+*** 1850,1870 ****
+  fi
+  
+  echo $ac_n "checking for inline""... $ac_c" 1>&6
+! echo "configure:1854: checking for inline" >&5
+  if eval "test \"`echo '$''{'ac_cv_c_inline'+set}'`\" = set"; then
+    echo $ac_n "(cached) $ac_c" 1>&6
+  else
+    ac_cv_c_inline=no
+  for ac_kw in inline __inline__ __inline; do
+    cat > conftest.$ac_ext <<EOF
+! #line 1861 "configure"
+  #include "confdefs.h"
+  
+  int main() {
+  } $ac_kw foo() {
+  ; return 0; }
+  EOF
+! if { (eval echo configure:1868: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+    rm -rf conftest*
+    ac_cv_c_inline=$ac_kw; break
+  else
+--- 1858,1878 ----
+  fi
+  
+  echo $ac_n "checking for inline""... $ac_c" 1>&6
+! echo "configure:1862: checking for inline" >&5
+  if eval "test \"`echo '$''{'ac_cv_c_inline'+set}'`\" = set"; then
+    echo $ac_n "(cached) $ac_c" 1>&6
+  else
+    ac_cv_c_inline=no
+  for ac_kw in inline __inline__ __inline; do
+    cat > conftest.$ac_ext <<EOF
+! #line 1869 "configure"
+  #include "confdefs.h"
+  
+  int main() {
+  } $ac_kw foo() {
+  ; return 0; }
+  EOF
+! if { (eval echo configure:1876: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+    rm -rf conftest*
+    ac_cv_c_inline=$ac_kw; break
+  else
+***************
+*** 1890,1901 ****
+  esac
+  
+  echo $ac_n "checking for sysctlbyname""... $ac_c" 1>&6
+! echo "configure:1894: checking for sysctlbyname" >&5
+  if eval "test \"`echo '$''{'ac_cv_func_sysctlbyname'+set}'`\" = set"; then
+    echo $ac_n "(cached) $ac_c" 1>&6
+  else
+    cat > conftest.$ac_ext <<EOF
+! #line 1899 "configure"
+  #include "confdefs.h"
+  /* System header to define __stub macros and hopefully few prototypes,
+      which can conflict with char sysctlbyname(); below.  */
+--- 1898,1909 ----
+  esac
+  
+  echo $ac_n "checking for sysctlbyname""... $ac_c" 1>&6
+! echo "configure:1902: checking for sysctlbyname" >&5
+  if eval "test \"`echo '$''{'ac_cv_func_sysctlbyname'+set}'`\" = set"; then
+    echo $ac_n "(cached) $ac_c" 1>&6
+  else
+    cat > conftest.$ac_ext <<EOF
+! #line 1907 "configure"
+  #include "confdefs.h"
+  /* System header to define __stub macros and hopefully few prototypes,
+      which can conflict with char sysctlbyname(); below.  */
+***************
+*** 1918,1924 ****
+  
+  ; return 0; }
+  EOF
+! if { (eval echo configure:1922: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+    rm -rf conftest*
+    eval "ac_cv_func_sysctlbyname=yes"
+  else
+--- 1926,1932 ----
+  
+  ; return 0; }
+  EOF
+! if { (eval echo configure:1930: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+    rm -rf conftest*
+    eval "ac_cv_func_sysctlbyname=yes"
+  else
+***************
+*** 1946,1954 ****
+  # is reported to not support "static inline" (RT #1212).
+  #
+  echo $ac_n "checking for static inline breakage""... $ac_c" 1>&6
+! echo "configure:1950: checking for static inline breakage" >&5
+  cat > conftest.$ac_ext <<EOF
+! #line 1952 "configure"
+  #include "confdefs.h"
+  
+  int main() {
+--- 1954,1962 ----
+  # is reported to not support "static inline" (RT #1212).
+  #
+  echo $ac_n "checking for static inline breakage""... $ac_c" 1>&6
+! echo "configure:1958: checking for static inline breakage" >&5
+  cat > conftest.$ac_ext <<EOF
+! #line 1960 "configure"
+  #include "confdefs.h"
+  
+  int main() {
+***************
+*** 1965,1971 ****
+       
+  ; return 0; }
+  EOF
+! if { (eval echo configure:1969: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+    rm -rf conftest*
+    echo "$ac_t""no" 1>&6
+  else
+--- 1973,1979 ----
+       
+  ; return 0; }
+  EOF
+! if { (eval echo configure:1977: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+    rm -rf conftest*
+    echo "$ac_t""no" 1>&6
+  else
+***************
+*** 1981,1992 ****
+  rm -f conftest*
+  
+  echo $ac_n "checking for size_t""... $ac_c" 1>&6
+! echo "configure:1985: checking for size_t" >&5
+  if eval "test \"`echo '$''{'ac_cv_type_size_t'+set}'`\" = set"; then
+    echo $ac_n "(cached) $ac_c" 1>&6
+  else
+    cat > conftest.$ac_ext <<EOF
+! #line 1990 "configure"
+  #include "confdefs.h"
+  #include <sys/types.h>
+  #if STDC_HEADERS
+--- 1989,2000 ----
+  rm -f conftest*
+  
+  echo $ac_n "checking for size_t""... $ac_c" 1>&6
+! echo "configure:1993: checking for size_t" >&5
+  if eval "test \"`echo '$''{'ac_cv_type_size_t'+set}'`\" = set"; then
+    echo $ac_n "(cached) $ac_c" 1>&6
+  else
+    cat > conftest.$ac_ext <<EOF
+! #line 1998 "configure"
+  #include "confdefs.h"
+  #include <sys/types.h>
+  #if STDC_HEADERS
+***************
+*** 2014,2025 ****
+  fi
+  
+  echo $ac_n "checking for ssize_t""... $ac_c" 1>&6
+! echo "configure:2018: checking for ssize_t" >&5
+  if eval "test \"`echo '$''{'ac_cv_type_ssize_t'+set}'`\" = set"; then
+    echo $ac_n "(cached) $ac_c" 1>&6
+  else
+    cat > conftest.$ac_ext <<EOF
+! #line 2023 "configure"
+  #include "confdefs.h"
+  #include <sys/types.h>
+  #if STDC_HEADERS
+--- 2022,2033 ----
+  fi
+  
+  echo $ac_n "checking for ssize_t""... $ac_c" 1>&6
+! echo "configure:2026: checking for ssize_t" >&5
+  if eval "test \"`echo '$''{'ac_cv_type_ssize_t'+set}'`\" = set"; then
+    echo $ac_n "(cached) $ac_c" 1>&6
+  else
+    cat > conftest.$ac_ext <<EOF
+! #line 2031 "configure"
+  #include "confdefs.h"
+  #include <sys/types.h>
+  #if STDC_HEADERS
+***************
+*** 2047,2058 ****
+  fi
+  
+  echo $ac_n "checking whether time.h and sys/time.h may both be included""... $ac_c" 1>&6
+! echo "configure:2051: checking whether time.h and sys/time.h may both be included" >&5
+  if eval "test \"`echo '$''{'ac_cv_header_time'+set}'`\" = set"; then
+    echo $ac_n "(cached) $ac_c" 1>&6
+  else
+    cat > conftest.$ac_ext <<EOF
+! #line 2056 "configure"
+  #include "confdefs.h"
+  #include <sys/types.h>
+  #include <sys/time.h>
+--- 2055,2066 ----
+  fi
+  
+  echo $ac_n "checking whether time.h and sys/time.h may both be included""... $ac_c" 1>&6
+! echo "configure:2059: checking whether time.h and sys/time.h may both be included" >&5
+  if eval "test \"`echo '$''{'ac_cv_header_time'+set}'`\" = set"; then
+    echo $ac_n "(cached) $ac_c" 1>&6
+  else
+    cat > conftest.$ac_ext <<EOF
+! #line 2064 "configure"
+  #include "confdefs.h"
+  #include <sys/types.h>
+  #include <sys/time.h>
+***************
+*** 2061,2067 ****
+  struct tm *tp;
+  ; return 0; }
+  EOF
+! if { (eval echo configure:2065: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+    rm -rf conftest*
+    ac_cv_header_time=yes
+  else
+--- 2069,2075 ----
+  struct tm *tp;
+  ; return 0; }
+  EOF
+! if { (eval echo configure:2073: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+    rm -rf conftest*
+    ac_cv_header_time=yes
+  else
+***************
+*** 2082,2097 ****
+  fi
+  
+  echo $ac_n "checking for long long""... $ac_c" 1>&6
+! echo "configure:2086: checking for long long" >&5
+  cat > conftest.$ac_ext <<EOF
+! #line 2088 "configure"
+  #include "confdefs.h"
+  
+  int main() {
+  long long i = 0; return (0);
+  ; return 0; }
+  EOF
+! if { (eval echo configure:2095: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+    rm -rf conftest*
+    echo "$ac_t""yes" 1>&6
+               ISC_PLATFORM_HAVELONGLONG="#define ISC_PLATFORM_HAVELONGLONG 1"
+--- 2090,2105 ----
+  fi
+  
+  echo $ac_n "checking for long long""... $ac_c" 1>&6
+! echo "configure:2094: checking for long long" >&5
+  cat > conftest.$ac_ext <<EOF
+! #line 2096 "configure"
+  #include "confdefs.h"
+  
+  int main() {
+  long long i = 0; return (0);
+  ; return 0; }
+  EOF
+! if { (eval echo configure:2103: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+    rm -rf conftest*
+    echo "$ac_t""yes" 1>&6
+               ISC_PLATFORM_HAVELONGLONG="#define ISC_PLATFORM_HAVELONGLONG 1"
+***************
+*** 2111,2119 ****
+  case $ac_cv_header_unistd_h in
+  yes)
+  echo $ac_n "checking if unistd.h defines fd_set""... $ac_c" 1>&6
+! echo "configure:2115: checking if unistd.h defines fd_set" >&5
+  cat > conftest.$ac_ext <<EOF
+! #line 2117 "configure"
+  #include "confdefs.h"
+  
+  #include <unistd.h>
+--- 2119,2127 ----
+  case $ac_cv_header_unistd_h in
+  yes)
+  echo $ac_n "checking if unistd.h defines fd_set""... $ac_c" 1>&6
+! echo "configure:2123: checking if unistd.h defines fd_set" >&5
+  cat > conftest.$ac_ext <<EOF
+! #line 2125 "configure"
+  #include "confdefs.h"
+  
+  #include <unistd.h>
+***************
+*** 2121,2127 ****
+  fd_set read_set; return (0);
+  ; return 0; }
+  EOF
+! if { (eval echo configure:2125: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+    rm -rf conftest*
+    echo "$ac_t""yes" 1>&6
+        ISC_PLATFORM_NEEDSYSSELECTH="#undef ISC_PLATFORM_NEEDSYSSELECTH"
+--- 2129,2135 ----
+  fd_set read_set; return (0);
+  ; return 0; }
+  EOF
+! if { (eval echo configure:2133: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+    rm -rf conftest*
+    echo "$ac_t""yes" 1>&6
+        ISC_PLATFORM_NEEDSYSSELECTH="#undef ISC_PLATFORM_NEEDSYSSELECTH"
+***************
+*** 2163,2176 ****
+  # Find the machine's endian flavor.
+  #
+  echo $ac_n "checking whether byte ordering is bigendian""... $ac_c" 1>&6
+! echo "configure:2167: checking whether byte ordering is bigendian" >&5
+  if eval "test \"`echo '$''{'ac_cv_c_bigendian'+set}'`\" = set"; then
+    echo $ac_n "(cached) $ac_c" 1>&6
+  else
+    ac_cv_c_bigendian=unknown
+  # See if sys/param.h defines the BYTE_ORDER macro.
+  cat > conftest.$ac_ext <<EOF
+! #line 2174 "configure"
+  #include "confdefs.h"
+  #include <sys/types.h>
+  #include <sys/param.h>
+--- 2171,2184 ----
+  # Find the machine's endian flavor.
+  #
+  echo $ac_n "checking whether byte ordering is bigendian""... $ac_c" 1>&6
+! echo "configure:2175: checking whether byte ordering is bigendian" >&5
+  if eval "test \"`echo '$''{'ac_cv_c_bigendian'+set}'`\" = set"; then
+    echo $ac_n "(cached) $ac_c" 1>&6
+  else
+    ac_cv_c_bigendian=unknown
+  # See if sys/param.h defines the BYTE_ORDER macro.
+  cat > conftest.$ac_ext <<EOF
+! #line 2182 "configure"
+  #include "confdefs.h"
+  #include <sys/types.h>
+  #include <sys/param.h>
+***************
+*** 2181,2191 ****
+  #endif
+  ; return 0; }
+  EOF
+! if { (eval echo configure:2185: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+    rm -rf conftest*
+    # It does; now see whether it defined to BIG_ENDIAN or not.
+  cat > conftest.$ac_ext <<EOF
+! #line 2189 "configure"
+  #include "confdefs.h"
+  #include <sys/types.h>
+  #include <sys/param.h>
+--- 2189,2199 ----
+  #endif
+  ; return 0; }
+  EOF
+! if { (eval echo configure:2193: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+    rm -rf conftest*
+    # It does; now see whether it defined to BIG_ENDIAN or not.
+  cat > conftest.$ac_ext <<EOF
+! #line 2197 "configure"
+  #include "confdefs.h"
+  #include <sys/types.h>
+  #include <sys/param.h>
+***************
+*** 2196,2202 ****
+  #endif
+  ; return 0; }
+  EOF
+! if { (eval echo configure:2200: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+    rm -rf conftest*
+    ac_cv_c_bigendian=yes
+  else
+--- 2204,2210 ----
+  #endif
+  ; return 0; }
+  EOF
+! if { (eval echo configure:2208: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+    rm -rf conftest*
+    ac_cv_c_bigendian=yes
+  else
+***************
+*** 2216,2222 ****
+      { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; }
+  else
+    cat > conftest.$ac_ext <<EOF
+! #line 2220 "configure"
+  #include "confdefs.h"
+  main () {
+    /* Are we little or big endian?  From Harbison&Steele.  */
+--- 2224,2230 ----
+      { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; }
+  else
+    cat > conftest.$ac_ext <<EOF
+! #line 2228 "configure"
+  #include "confdefs.h"
+  main () {
+    /* Are we little or big endian?  From Harbison&Steele.  */
+***************
+*** 2229,2235 ****
+    exit (u.c[sizeof (long) - 1] == 1);
+  }
+  EOF
+! if { (eval echo configure:2233: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+  then
+    ac_cv_c_bigendian=no
+  else
+--- 2237,2243 ----
+    exit (u.c[sizeof (long) - 1] == 1);
+  }
+  EOF
+! if { (eval echo configure:2241: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+  then
+    ac_cv_c_bigendian=no
+  else
+***************
+*** 2257,2263 ****
+  # was --with-openssl specified?
+  #
+  echo $ac_n "checking for OpenSSL library""... $ac_c" 1>&6
+! echo "configure:2261: checking for OpenSSL library" >&5
+  # Check whether --with-openssl or --without-openssl was given.
+  if test "${with_openssl+set}" = set; then
+    withval="$with_openssl"
+--- 2265,2271 ----
+  # was --with-openssl specified?
+  #
+  echo $ac_n "checking for OpenSSL library""... $ac_c" 1>&6
+! echo "configure:2269: checking for OpenSSL library" >&5
+  # Check whether --with-openssl or --without-openssl was given.
+  if test "${with_openssl+set}" = set; then
+    withval="$with_openssl"
+***************
+*** 2298,2304 ****
+               echo "$ac_t""using openssl from $use_openssl/lib and $use_openssl/include" 1>&6
+  
+               echo $ac_n "checking OpenSSL library version""... $ac_c" 1>&6
+! echo "configure:2302: checking OpenSSL library version" >&5
+               saved_cflags="$CFLAGS"
+               saved_libs="$LIBS"
+               CFLAGS="$CFLAGS $DST_OPENSSL_INC"
+--- 2306,2312 ----
+               echo "$ac_t""using openssl from $use_openssl/lib and $use_openssl/include" 1>&6
+  
+               echo $ac_n "checking OpenSSL library version""... $ac_c" 1>&6
+! echo "configure:2310: checking OpenSSL library version" >&5
+               saved_cflags="$CFLAGS"
+               saved_libs="$LIBS"
+               CFLAGS="$CFLAGS $DST_OPENSSL_INC"
+***************
+*** 2307,2313 ****
+    echo "$ac_t""assuming target platform has compatible version" 1>&6
+  else
+    cat > conftest.$ac_ext <<EOF
+! #line 2311 "configure"
+  #include "confdefs.h"
+  
+  #include <stdio.h>
+--- 2315,2321 ----
+    echo "$ac_t""assuming target platform has compatible version" 1>&6
+  else
+    cat > conftest.$ac_ext <<EOF
+! #line 2319 "configure"
+  #include "confdefs.h"
+  
+  #include <stdio.h>
+***************
+*** 2322,2328 ****
+  }
+  
+  EOF
+! if { (eval echo configure:2326: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+  then
+    echo "$ac_t""ok" 1>&6
+  else
+--- 2330,2336 ----
+  }
+  
+  EOF
+! if { (eval echo configure:2334: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+  then
+    echo "$ac_t""ok" 1>&6
+  else
+***************
+*** 2387,2393 ****
+  # was --with-randomdev specified?
+  #
+  echo $ac_n "checking for random device""... $ac_c" 1>&6
+! echo "configure:2391: checking for random device" >&5
+  # Check whether --with-randomdev or --without-randomdev was given.
+  if test "${with_randomdev+set}" = set; then
+    withval="$with_randomdev"
+--- 2395,2401 ----
+  # was --with-randomdev specified?
+  #
+  echo $ac_n "checking for random device""... $ac_c" 1>&6
+! echo "configure:2399: checking for random device" >&5
+  # Check whether --with-randomdev or --without-randomdev was given.
+  if test "${with_randomdev+set}" = set; then
+    withval="$with_randomdev"
+***************
+*** 2411,2417 ****
+               
+  ac_safe=`echo "$devrandom" | sed 'y%./+-%__p_%'`
+  echo $ac_n "checking for $devrandom""... $ac_c" 1>&6
+! echo "configure:2415: checking for $devrandom" >&5
+  if eval "test \"`echo '$''{'ac_cv_file_$ac_safe'+set}'`\" = set"; then
+    echo $ac_n "(cached) $ac_c" 1>&6
+  else
+--- 2419,2425 ----
+               
+  ac_safe=`echo "$devrandom" | sed 'y%./+-%__p_%'`
+  echo $ac_n "checking for $devrandom""... $ac_c" 1>&6
+! echo "configure:2423: checking for $devrandom" >&5
+  if eval "test \"`echo '$''{'ac_cv_file_$ac_safe'+set}'`\" = set"; then
+    echo $ac_n "(cached) $ac_c" 1>&6
+  else
+***************
+*** 2463,2469 ****
+  #
+  
+  echo $ac_n "checking whether to build with thread support""... $ac_c" 1>&6
+! echo "configure:2467: checking whether to build with thread support" >&5
+  
+  case $host in
+  *-dec-osf*)
+--- 2471,2477 ----
+  #
+  
+  echo $ac_n "checking whether to build with thread support""... $ac_c" 1>&6
+! echo "configure:2475: checking whether to build with thread support" >&5
+  
+  case $host in
+  *-dec-osf*)
+***************
+*** 2551,2557 ****
+               # experiment with it.
+               CC="gcc"
+               echo $ac_n "checking which NetBSD thread library to use""... $ac_c" 1>&6
+! echo "configure:2555: checking which NetBSD thread library to use" >&5
+  
+               # Check whether --with-ptl2 or --without-ptl2 was given.
+  if test "${with_ptl2+set}" = set; then
+--- 2559,2565 ----
+               # experiment with it.
+               CC="gcc"
+               echo $ac_n "checking which NetBSD thread library to use""... $ac_c" 1>&6
+! echo "configure:2563: checking which NetBSD thread library to use" >&5
+  
+               # Check whether --with-ptl2 or --without-ptl2 was given.
+  if test "${with_ptl2+set}" = set; then
+***************
+*** 2590,2596 ****
+               ;;
+               *)
+                       echo $ac_n "checking for pthread_create in -lpthread""... $ac_c" 1>&6
+! echo "configure:2594: checking for pthread_create in -lpthread" >&5
+  ac_lib_var=`echo pthread'_'pthread_create | sed 'y%./+-%__p_%'`
+  if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
+    echo $ac_n "(cached) $ac_c" 1>&6
+--- 2598,2604 ----
+               ;;
+               *)
+                       echo $ac_n "checking for pthread_create in -lpthread""... $ac_c" 1>&6
+! echo "configure:2602: checking for pthread_create in -lpthread" >&5
+  ac_lib_var=`echo pthread'_'pthread_create | sed 'y%./+-%__p_%'`
+  if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
+    echo $ac_n "(cached) $ac_c" 1>&6
+***************
+*** 2598,2604 ****
+    ac_save_LIBS="$LIBS"
+  LIBS="-lpthread  $LIBS"
+  cat > conftest.$ac_ext <<EOF
+! #line 2602 "configure"
+  #include "confdefs.h"
+  /* Override any gcc2 internal prototype to avoid an error.  */
+  /* We use char because int might match the return type of a gcc2
+--- 2606,2612 ----
+    ac_save_LIBS="$LIBS"
+  LIBS="-lpthread  $LIBS"
+  cat > conftest.$ac_ext <<EOF
+! #line 2610 "configure"
+  #include "confdefs.h"
+  /* Override any gcc2 internal prototype to avoid an error.  */
+  /* We use char because int might match the return type of a gcc2
+***************
+*** 2609,2615 ****
+  pthread_create()
+  ; return 0; }
+  EOF
+! if { (eval echo configure:2613: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+    rm -rf conftest*
+    eval "ac_cv_lib_$ac_lib_var=yes"
+  else
+--- 2617,2623 ----
+  pthread_create()
+  ; return 0; }
+  EOF
+! if { (eval echo configure:2621: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+    rm -rf conftest*
+    eval "ac_cv_lib_$ac_lib_var=yes"
+  else
+***************
+*** 2635,2641 ****
+  else
+    echo "$ac_t""no" 1>&6
+  echo $ac_n "checking for __pthread_create in -lpthread""... $ac_c" 1>&6
+! echo "configure:2639: checking for __pthread_create in -lpthread" >&5
+  ac_lib_var=`echo pthread'_'__pthread_create | sed 'y%./+-%__p_%'`
+  if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
+    echo $ac_n "(cached) $ac_c" 1>&6
+--- 2643,2649 ----
+  else
+    echo "$ac_t""no" 1>&6
+  echo $ac_n "checking for __pthread_create in -lpthread""... $ac_c" 1>&6
+! echo "configure:2647: checking for __pthread_create in -lpthread" >&5
+  ac_lib_var=`echo pthread'_'__pthread_create | sed 'y%./+-%__p_%'`
+  if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
+    echo $ac_n "(cached) $ac_c" 1>&6
+***************
+*** 2643,2649 ****
+    ac_save_LIBS="$LIBS"
+  LIBS="-lpthread  $LIBS"
+  cat > conftest.$ac_ext <<EOF
+! #line 2647 "configure"
+  #include "confdefs.h"
+  /* Override any gcc2 internal prototype to avoid an error.  */
+  /* We use char because int might match the return type of a gcc2
+--- 2651,2657 ----
+    ac_save_LIBS="$LIBS"
+  LIBS="-lpthread  $LIBS"
+  cat > conftest.$ac_ext <<EOF
+! #line 2655 "configure"
+  #include "confdefs.h"
+  /* Override any gcc2 internal prototype to avoid an error.  */
+  /* We use char because int might match the return type of a gcc2
+***************
+*** 2654,2660 ****
+  __pthread_create()
+  ; return 0; }
+  EOF
+! if { (eval echo configure:2658: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+    rm -rf conftest*
+    eval "ac_cv_lib_$ac_lib_var=yes"
+  else
+--- 2662,2668 ----
+  __pthread_create()
+  ; return 0; }
+  EOF
+! if { (eval echo configure:2666: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+    rm -rf conftest*
+    eval "ac_cv_lib_$ac_lib_var=yes"
+  else
+***************
+*** 2680,2686 ****
+  else
+    echo "$ac_t""no" 1>&6
+  echo $ac_n "checking for __pthread_create_system in -lpthread""... $ac_c" 1>&6
+! echo "configure:2684: checking for __pthread_create_system in -lpthread" >&5
+  ac_lib_var=`echo pthread'_'__pthread_create_system | sed 'y%./+-%__p_%'`
+  if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
+    echo $ac_n "(cached) $ac_c" 1>&6
+--- 2688,2694 ----
+  else
+    echo "$ac_t""no" 1>&6
+  echo $ac_n "checking for __pthread_create_system in -lpthread""... $ac_c" 1>&6
+! echo "configure:2692: checking for __pthread_create_system in -lpthread" >&5
+  ac_lib_var=`echo pthread'_'__pthread_create_system | sed 'y%./+-%__p_%'`
+  if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
+    echo $ac_n "(cached) $ac_c" 1>&6
+***************
+*** 2688,2694 ****
+    ac_save_LIBS="$LIBS"
+  LIBS="-lpthread  $LIBS"
+  cat > conftest.$ac_ext <<EOF
+! #line 2692 "configure"
+  #include "confdefs.h"
+  /* Override any gcc2 internal prototype to avoid an error.  */
+  /* We use char because int might match the return type of a gcc2
+--- 2696,2702 ----
+    ac_save_LIBS="$LIBS"
+  LIBS="-lpthread  $LIBS"
+  cat > conftest.$ac_ext <<EOF
+! #line 2700 "configure"
+  #include "confdefs.h"
+  /* Override any gcc2 internal prototype to avoid an error.  */
+  /* We use char because int might match the return type of a gcc2
+***************
+*** 2699,2705 ****
+  __pthread_create_system()
+  ; return 0; }
+  EOF
+! if { (eval echo configure:2703: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+    rm -rf conftest*
+    eval "ac_cv_lib_$ac_lib_var=yes"
+  else
+--- 2707,2713 ----
+  __pthread_create_system()
+  ; return 0; }
+  EOF
+! if { (eval echo configure:2711: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+    rm -rf conftest*
+    eval "ac_cv_lib_$ac_lib_var=yes"
+  else
+***************
+*** 2725,2731 ****
+  else
+    echo "$ac_t""no" 1>&6
+  echo $ac_n "checking for pthread_create in -lc_r""... $ac_c" 1>&6
+! echo "configure:2729: checking for pthread_create in -lc_r" >&5
+  ac_lib_var=`echo c_r'_'pthread_create | sed 'y%./+-%__p_%'`
+  if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
+    echo $ac_n "(cached) $ac_c" 1>&6
+--- 2733,2739 ----
+  else
+    echo "$ac_t""no" 1>&6
+  echo $ac_n "checking for pthread_create in -lc_r""... $ac_c" 1>&6
+! echo "configure:2737: checking for pthread_create in -lc_r" >&5
+  ac_lib_var=`echo c_r'_'pthread_create | sed 'y%./+-%__p_%'`
+  if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
+    echo $ac_n "(cached) $ac_c" 1>&6
+***************
+*** 2733,2739 ****
+    ac_save_LIBS="$LIBS"
+  LIBS="-lc_r  $LIBS"
+  cat > conftest.$ac_ext <<EOF
+! #line 2737 "configure"
+  #include "confdefs.h"
+  /* Override any gcc2 internal prototype to avoid an error.  */
+  /* We use char because int might match the return type of a gcc2
+--- 2741,2747 ----
+    ac_save_LIBS="$LIBS"
+  LIBS="-lc_r  $LIBS"
+  cat > conftest.$ac_ext <<EOF
+! #line 2745 "configure"
+  #include "confdefs.h"
+  /* Override any gcc2 internal prototype to avoid an error.  */
+  /* We use char because int might match the return type of a gcc2
+***************
+*** 2744,2750 ****
+  pthread_create()
+  ; return 0; }
+  EOF
+! if { (eval echo configure:2748: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+    rm -rf conftest*
+    eval "ac_cv_lib_$ac_lib_var=yes"
+  else
+--- 2752,2758 ----
+  pthread_create()
+  ; return 0; }
+  EOF
+! if { (eval echo configure:2756: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+    rm -rf conftest*
+    eval "ac_cv_lib_$ac_lib_var=yes"
+  else
+***************
+*** 2770,2776 ****
+  else
+    echo "$ac_t""no" 1>&6
+  echo $ac_n "checking for pthread_create in -lc""... $ac_c" 1>&6
+! echo "configure:2774: checking for pthread_create in -lc" >&5
+  ac_lib_var=`echo c'_'pthread_create | sed 'y%./+-%__p_%'`
+  if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
+    echo $ac_n "(cached) $ac_c" 1>&6
+--- 2778,2784 ----
+  else
+    echo "$ac_t""no" 1>&6
+  echo $ac_n "checking for pthread_create in -lc""... $ac_c" 1>&6
+! echo "configure:2782: checking for pthread_create in -lc" >&5
+  ac_lib_var=`echo c'_'pthread_create | sed 'y%./+-%__p_%'`
+  if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
+    echo $ac_n "(cached) $ac_c" 1>&6
+***************
+*** 2778,2784 ****
+    ac_save_LIBS="$LIBS"
+  LIBS="-lc  $LIBS"
+  cat > conftest.$ac_ext <<EOF
+! #line 2782 "configure"
+  #include "confdefs.h"
+  /* Override any gcc2 internal prototype to avoid an error.  */
+  /* We use char because int might match the return type of a gcc2
+--- 2786,2792 ----
+    ac_save_LIBS="$LIBS"
+  LIBS="-lc  $LIBS"
+  cat > conftest.$ac_ext <<EOF
+! #line 2790 "configure"
+  #include "confdefs.h"
+  /* Override any gcc2 internal prototype to avoid an error.  */
+  /* We use char because int might match the return type of a gcc2
+***************
+*** 2789,2795 ****
+  pthread_create()
+  ; return 0; }
+  EOF
+! if { (eval echo configure:2793: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+    rm -rf conftest*
+    eval "ac_cv_lib_$ac_lib_var=yes"
+  else
+--- 2797,2803 ----
+  pthread_create()
+  ; return 0; }
+  EOF
+! if { (eval echo configure:2801: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+    rm -rf conftest*
+    eval "ac_cv_lib_$ac_lib_var=yes"
+  else
+***************
+*** 2835,2841 ****
+       # We'd like to use sigwait() too
+       #
+       echo $ac_n "checking for sigwait in -lc""... $ac_c" 1>&6
+! echo "configure:2839: checking for sigwait in -lc" >&5
+  ac_lib_var=`echo c'_'sigwait | sed 'y%./+-%__p_%'`
+  if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
+    echo $ac_n "(cached) $ac_c" 1>&6
+--- 2843,2849 ----
+       # We'd like to use sigwait() too
+       #
+       echo $ac_n "checking for sigwait in -lc""... $ac_c" 1>&6
+! echo "configure:2847: checking for sigwait in -lc" >&5
+  ac_lib_var=`echo c'_'sigwait | sed 'y%./+-%__p_%'`
+  if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
+    echo $ac_n "(cached) $ac_c" 1>&6
+***************
+*** 2843,2849 ****
+    ac_save_LIBS="$LIBS"
+  LIBS="-lc  $LIBS"
+  cat > conftest.$ac_ext <<EOF
+! #line 2847 "configure"
+  #include "confdefs.h"
+  /* Override any gcc2 internal prototype to avoid an error.  */
+  /* We use char because int might match the return type of a gcc2
+--- 2851,2857 ----
+    ac_save_LIBS="$LIBS"
+  LIBS="-lc  $LIBS"
+  cat > conftest.$ac_ext <<EOF
+! #line 2855 "configure"
+  #include "confdefs.h"
+  /* Override any gcc2 internal prototype to avoid an error.  */
+  /* We use char because int might match the return type of a gcc2
+***************
+*** 2854,2860 ****
+  sigwait()
+  ; return 0; }
+  EOF
+! if { (eval echo configure:2858: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+    rm -rf conftest*
+    eval "ac_cv_lib_$ac_lib_var=yes"
+  else
+--- 2862,2868 ----
+  sigwait()
+  ; return 0; }
+  EOF
+! if { (eval echo configure:2866: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+    rm -rf conftest*
+    eval "ac_cv_lib_$ac_lib_var=yes"
+  else
+***************
+*** 2876,2882 ****
+  else
+    echo "$ac_t""no" 1>&6
+  echo $ac_n "checking for sigwait in -lpthread""... $ac_c" 1>&6
+! echo "configure:2880: checking for sigwait in -lpthread" >&5
+  ac_lib_var=`echo pthread'_'sigwait | sed 'y%./+-%__p_%'`
+  if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
+    echo $ac_n "(cached) $ac_c" 1>&6
+--- 2884,2890 ----
+  else
+    echo "$ac_t""no" 1>&6
+  echo $ac_n "checking for sigwait in -lpthread""... $ac_c" 1>&6
+! echo "configure:2888: checking for sigwait in -lpthread" >&5
+  ac_lib_var=`echo pthread'_'sigwait | sed 'y%./+-%__p_%'`
+  if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
+    echo $ac_n "(cached) $ac_c" 1>&6
+***************
+*** 2884,2890 ****
+    ac_save_LIBS="$LIBS"
+  LIBS="-lpthread  $LIBS"
+  cat > conftest.$ac_ext <<EOF
+! #line 2888 "configure"
+  #include "confdefs.h"
+  /* Override any gcc2 internal prototype to avoid an error.  */
+  /* We use char because int might match the return type of a gcc2
+--- 2892,2898 ----
+    ac_save_LIBS="$LIBS"
+  LIBS="-lpthread  $LIBS"
+  cat > conftest.$ac_ext <<EOF
+! #line 2896 "configure"
+  #include "confdefs.h"
+  /* Override any gcc2 internal prototype to avoid an error.  */
+  /* We use char because int might match the return type of a gcc2
+***************
+*** 2895,2901 ****
+  sigwait()
+  ; return 0; }
+  EOF
+! if { (eval echo configure:2899: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+    rm -rf conftest*
+    eval "ac_cv_lib_$ac_lib_var=yes"
+  else
+--- 2903,2909 ----
+  sigwait()
+  ; return 0; }
+  EOF
+! if { (eval echo configure:2907: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+    rm -rf conftest*
+    eval "ac_cv_lib_$ac_lib_var=yes"
+  else
+***************
+*** 2917,2923 ****
+  else
+    echo "$ac_t""no" 1>&6
+  echo $ac_n "checking for _Psigwait in -lpthread""... $ac_c" 1>&6
+! echo "configure:2921: checking for _Psigwait in -lpthread" >&5
+  ac_lib_var=`echo pthread'_'_Psigwait | sed 'y%./+-%__p_%'`
+  if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
+    echo $ac_n "(cached) $ac_c" 1>&6
+--- 2925,2931 ----
+  else
+    echo "$ac_t""no" 1>&6
+  echo $ac_n "checking for _Psigwait in -lpthread""... $ac_c" 1>&6
+! echo "configure:2929: checking for _Psigwait in -lpthread" >&5
+  ac_lib_var=`echo pthread'_'_Psigwait | sed 'y%./+-%__p_%'`
+  if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
+    echo $ac_n "(cached) $ac_c" 1>&6
+***************
+*** 2925,2931 ****
+    ac_save_LIBS="$LIBS"
+  LIBS="-lpthread  $LIBS"
+  cat > conftest.$ac_ext <<EOF
+! #line 2929 "configure"
+  #include "confdefs.h"
+  /* Override any gcc2 internal prototype to avoid an error.  */
+  /* We use char because int might match the return type of a gcc2
+--- 2933,2939 ----
+    ac_save_LIBS="$LIBS"
+  LIBS="-lpthread  $LIBS"
+  cat > conftest.$ac_ext <<EOF
+! #line 2937 "configure"
+  #include "confdefs.h"
+  /* Override any gcc2 internal prototype to avoid an error.  */
+  /* We use char because int might match the return type of a gcc2
+***************
+*** 2936,2942 ****
+  _Psigwait()
+  ; return 0; }
+  EOF
+! if { (eval echo configure:2940: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+    rm -rf conftest*
+    eval "ac_cv_lib_$ac_lib_var=yes"
+  else
+--- 2944,2950 ----
+  _Psigwait()
+  ; return 0; }
+  EOF
+! if { (eval echo configure:2948: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+    rm -rf conftest*
+    eval "ac_cv_lib_$ac_lib_var=yes"
+  else
+***************
+*** 2966,2977 ****
+  
+  
+       echo $ac_n "checking for pthread_attr_getstacksize""... $ac_c" 1>&6
+! echo "configure:2970: checking for pthread_attr_getstacksize" >&5
+  if eval "test \"`echo '$''{'ac_cv_func_pthread_attr_getstacksize'+set}'`\" = set"; then
+    echo $ac_n "(cached) $ac_c" 1>&6
+  else
+    cat > conftest.$ac_ext <<EOF
+! #line 2975 "configure"
+  #include "confdefs.h"
+  /* System header to define __stub macros and hopefully few prototypes,
+      which can conflict with char pthread_attr_getstacksize(); below.  */
+--- 2974,2985 ----
+  
+  
+       echo $ac_n "checking for pthread_attr_getstacksize""... $ac_c" 1>&6
+! echo "configure:2978: checking for pthread_attr_getstacksize" >&5
+  if eval "test \"`echo '$''{'ac_cv_func_pthread_attr_getstacksize'+set}'`\" = set"; then
+    echo $ac_n "(cached) $ac_c" 1>&6
+  else
+    cat > conftest.$ac_ext <<EOF
+! #line 2983 "configure"
+  #include "confdefs.h"
+  /* System header to define __stub macros and hopefully few prototypes,
+      which can conflict with char pthread_attr_getstacksize(); below.  */
+***************
+*** 2994,3000 ****
+  
+  ; return 0; }
+  EOF
+! if { (eval echo configure:2998: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+    rm -rf conftest*
+    eval "ac_cv_func_pthread_attr_getstacksize=yes"
+  else
+--- 3002,3008 ----
+  
+  ; return 0; }
+  EOF
+! if { (eval echo configure:3006: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+    rm -rf conftest*
+    eval "ac_cv_func_pthread_attr_getstacksize=yes"
+  else
+***************
+*** 3026,3032 ****
+               #
+               *-freebsd*)
+                       echo $ac_n "checking for sigwait in -lc_r""... $ac_c" 1>&6
+! echo "configure:3030: checking for sigwait in -lc_r" >&5
+  ac_lib_var=`echo c_r'_'sigwait | sed 'y%./+-%__p_%'`
+  if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
+    echo $ac_n "(cached) $ac_c" 1>&6
+--- 3034,3040 ----
+               #
+               *-freebsd*)
+                       echo $ac_n "checking for sigwait in -lc_r""... $ac_c" 1>&6
+! echo "configure:3038: checking for sigwait in -lc_r" >&5
+  ac_lib_var=`echo c_r'_'sigwait | sed 'y%./+-%__p_%'`
+  if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
+    echo $ac_n "(cached) $ac_c" 1>&6
+***************
+*** 3034,3040 ****
+    ac_save_LIBS="$LIBS"
+  LIBS="-lc_r  $LIBS"
+  cat > conftest.$ac_ext <<EOF
+! #line 3038 "configure"
+  #include "confdefs.h"
+  /* Override any gcc2 internal prototype to avoid an error.  */
+  /* We use char because int might match the return type of a gcc2
+--- 3042,3048 ----
+    ac_save_LIBS="$LIBS"
+  LIBS="-lc_r  $LIBS"
+  cat > conftest.$ac_ext <<EOF
+! #line 3046 "configure"
+  #include "confdefs.h"
+  /* Override any gcc2 internal prototype to avoid an error.  */
+  /* We use char because int might match the return type of a gcc2
+***************
+*** 3045,3051 ****
+  sigwait()
+  ; return 0; }
+  EOF
+! if { (eval echo configure:3049: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+    rm -rf conftest*
+    eval "ac_cv_lib_$ac_lib_var=yes"
+  else
+--- 3053,3059 ----
+  sigwait()
+  ; return 0; }
+  EOF
+! if { (eval echo configure:3057: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+    rm -rf conftest*
+    eval "ac_cv_lib_$ac_lib_var=yes"
+  else
+***************
+*** 3100,3111 ****
+  EOF
+  
+                       echo $ac_n "checking for pthread_setconcurrency""... $ac_c" 1>&6
+! echo "configure:3104: checking for pthread_setconcurrency" >&5
+  if eval "test \"`echo '$''{'ac_cv_func_pthread_setconcurrency'+set}'`\" = set"; then
+    echo $ac_n "(cached) $ac_c" 1>&6
+  else
+    cat > conftest.$ac_ext <<EOF
+! #line 3109 "configure"
+  #include "confdefs.h"
+  /* System header to define __stub macros and hopefully few prototypes,
+      which can conflict with char pthread_setconcurrency(); below.  */
+--- 3108,3119 ----
+  EOF
+  
+                       echo $ac_n "checking for pthread_setconcurrency""... $ac_c" 1>&6
+! echo "configure:3112: checking for pthread_setconcurrency" >&5
+  if eval "test \"`echo '$''{'ac_cv_func_pthread_setconcurrency'+set}'`\" = set"; then
+    echo $ac_n "(cached) $ac_c" 1>&6
+  else
+    cat > conftest.$ac_ext <<EOF
+! #line 3117 "configure"
+  #include "confdefs.h"
+  /* System header to define __stub macros and hopefully few prototypes,
+      which can conflict with char pthread_setconcurrency(); below.  */
+***************
+*** 3128,3134 ****
+  
+  ; return 0; }
+  EOF
+! if { (eval echo configure:3132: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+    rm -rf conftest*
+    eval "ac_cv_func_pthread_setconcurrency=yes"
+  else
+--- 3136,3142 ----
+  
+  ; return 0; }
+  EOF
+! if { (eval echo configure:3140: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+    rm -rf conftest*
+    eval "ac_cv_func_pthread_setconcurrency=yes"
+  else
+***************
+*** 3166,3177 ****
+       # Look for sysconf to allow detection of the number of processors.
+       #
+       echo $ac_n "checking for sysconf""... $ac_c" 1>&6
+! echo "configure:3170: checking for sysconf" >&5
+  if eval "test \"`echo '$''{'ac_cv_func_sysconf'+set}'`\" = set"; then
+    echo $ac_n "(cached) $ac_c" 1>&6
+  else
+    cat > conftest.$ac_ext <<EOF
+! #line 3175 "configure"
+  #include "confdefs.h"
+  /* System header to define __stub macros and hopefully few prototypes,
+      which can conflict with char sysconf(); below.  */
+--- 3174,3185 ----
+       # Look for sysconf to allow detection of the number of processors.
+       #
+       echo $ac_n "checking for sysconf""... $ac_c" 1>&6
+! echo "configure:3178: checking for sysconf" >&5
+  if eval "test \"`echo '$''{'ac_cv_func_sysconf'+set}'`\" = set"; then
+    echo $ac_n "(cached) $ac_c" 1>&6
+  else
+    cat > conftest.$ac_ext <<EOF
+! #line 3183 "configure"
+  #include "confdefs.h"
+  /* System header to define __stub macros and hopefully few prototypes,
+      which can conflict with char sysconf(); below.  */
+***************
+*** 3194,3200 ****
+  
+  ; return 0; }
+  EOF
+! if { (eval echo configure:3198: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+    rm -rf conftest*
+    eval "ac_cv_func_sysconf=yes"
+  else
+--- 3202,3208 ----
+  
+  ; return 0; }
+  EOF
+! if { (eval echo configure:3206: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+    rm -rf conftest*
+    eval "ac_cv_func_sysconf=yes"
+  else
+***************
+*** 3275,3286 ****
+  # be defined.
+  #
+  echo $ac_n "checking for flockfile""... $ac_c" 1>&6
+! echo "configure:3279: checking for flockfile" >&5
+  if eval "test \"`echo '$''{'ac_cv_func_flockfile'+set}'`\" = set"; then
+    echo $ac_n "(cached) $ac_c" 1>&6
+  else
+    cat > conftest.$ac_ext <<EOF
+! #line 3284 "configure"
+  #include "confdefs.h"
+  /* System header to define __stub macros and hopefully few prototypes,
+      which can conflict with char flockfile(); below.  */
+--- 3283,3294 ----
+  # be defined.
+  #
+  echo $ac_n "checking for flockfile""... $ac_c" 1>&6
+! echo "configure:3287: checking for flockfile" >&5
+  if eval "test \"`echo '$''{'ac_cv_func_flockfile'+set}'`\" = set"; then
+    echo $ac_n "(cached) $ac_c" 1>&6
+  else
+    cat > conftest.$ac_ext <<EOF
+! #line 3292 "configure"
+  #include "confdefs.h"
+  /* System header to define __stub macros and hopefully few prototypes,
+      which can conflict with char flockfile(); below.  */
+***************
+*** 3303,3309 ****
+  
+  ; return 0; }
+  EOF
+! if { (eval echo configure:3307: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+    rm -rf conftest*
+    eval "ac_cv_func_flockfile=yes"
+  else
+--- 3311,3317 ----
+  
+  ; return 0; }
+  EOF
+! if { (eval echo configure:3315: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+    rm -rf conftest*
+    eval "ac_cv_func_flockfile=yes"
+  else
+***************
+*** 3326,3337 ****
+  fi
+  
+  echo $ac_n "checking for getc_unlocked""... $ac_c" 1>&6
+! echo "configure:3330: checking for getc_unlocked" >&5
+  if eval "test \"`echo '$''{'ac_cv_func_getc_unlocked'+set}'`\" = set"; then
+    echo $ac_n "(cached) $ac_c" 1>&6
+  else
+    cat > conftest.$ac_ext <<EOF
+! #line 3335 "configure"
+  #include "confdefs.h"
+  /* System header to define __stub macros and hopefully few prototypes,
+      which can conflict with char getc_unlocked(); below.  */
+--- 3334,3345 ----
+  fi
+  
+  echo $ac_n "checking for getc_unlocked""... $ac_c" 1>&6
+! echo "configure:3338: checking for getc_unlocked" >&5
+  if eval "test \"`echo '$''{'ac_cv_func_getc_unlocked'+set}'`\" = set"; then
+    echo $ac_n "(cached) $ac_c" 1>&6
+  else
+    cat > conftest.$ac_ext <<EOF
+! #line 3343 "configure"
+  #include "confdefs.h"
+  /* System header to define __stub macros and hopefully few prototypes,
+      which can conflict with char getc_unlocked(); below.  */
+***************
+*** 3354,3360 ****
+  
+  ; return 0; }
+  EOF
+! if { (eval echo configure:3358: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+    rm -rf conftest*
+    eval "ac_cv_func_getc_unlocked=yes"
+  else
+--- 3362,3368 ----
+  
+  ; return 0; }
+  EOF
+! if { (eval echo configure:3366: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+    rm -rf conftest*
+    eval "ac_cv_func_getc_unlocked=yes"
+  else
+***************
+*** 3381,3387 ****
+  # Indicate what the final decision was regarding threads.
+  #
+  echo $ac_n "checking whether to build with threads""... $ac_c" 1>&6
+! echo "configure:3385: checking whether to build with threads" >&5
+  if $use_threads; then
+       echo "$ac_t""yes" 1>&6
+  else
+--- 3389,3395 ----
+  # Indicate what the final decision was regarding threads.
+  #
+  echo $ac_n "checking whether to build with threads""... $ac_c" 1>&6
+! echo "configure:3393: checking whether to build with threads" >&5
+  if $use_threads; then
+       echo "$ac_t""yes" 1>&6
+  else
+***************
+*** 3457,3468 ****
+  # NLS
+  #
+  echo $ac_n "checking for catgets""... $ac_c" 1>&6
+! echo "configure:3461: checking for catgets" >&5
+  if eval "test \"`echo '$''{'ac_cv_func_catgets'+set}'`\" = set"; then
+    echo $ac_n "(cached) $ac_c" 1>&6
+  else
+    cat > conftest.$ac_ext <<EOF
+! #line 3466 "configure"
+  #include "confdefs.h"
+  /* System header to define __stub macros and hopefully few prototypes,
+      which can conflict with char catgets(); below.  */
+--- 3465,3476 ----
+  # NLS
+  #
+  echo $ac_n "checking for catgets""... $ac_c" 1>&6
+! echo "configure:3469: checking for catgets" >&5
+  if eval "test \"`echo '$''{'ac_cv_func_catgets'+set}'`\" = set"; then
+    echo $ac_n "(cached) $ac_c" 1>&6
+  else
+    cat > conftest.$ac_ext <<EOF
+! #line 3474 "configure"
+  #include "confdefs.h"
+  /* System header to define __stub macros and hopefully few prototypes,
+      which can conflict with char catgets(); below.  */
+***************
+*** 3485,3491 ****
+  
+  ; return 0; }
+  EOF
+! if { (eval echo configure:3489: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+    rm -rf conftest*
+    eval "ac_cv_func_catgets=yes"
+  else
+--- 3493,3499 ----
+  
+  ; return 0; }
+  EOF
+! if { (eval echo configure:3497: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+    rm -rf conftest*
+    eval "ac_cv_func_catgets=yes"
+  else
+***************
+*** 3523,3529 ****
+               ;;
+       *)
+               echo $ac_n "checking for socket in -lsocket""... $ac_c" 1>&6
+! echo "configure:3527: checking for socket in -lsocket" >&5
+  ac_lib_var=`echo socket'_'socket | sed 'y%./+-%__p_%'`
+  if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
+    echo $ac_n "(cached) $ac_c" 1>&6
+--- 3531,3537 ----
+               ;;
+       *)
+               echo $ac_n "checking for socket in -lsocket""... $ac_c" 1>&6
+! echo "configure:3535: checking for socket in -lsocket" >&5
+  ac_lib_var=`echo socket'_'socket | sed 'y%./+-%__p_%'`
+  if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
+    echo $ac_n "(cached) $ac_c" 1>&6
+***************
+*** 3531,3537 ****
+    ac_save_LIBS="$LIBS"
+  LIBS="-lsocket  $LIBS"
+  cat > conftest.$ac_ext <<EOF
+! #line 3535 "configure"
+  #include "confdefs.h"
+  /* Override any gcc2 internal prototype to avoid an error.  */
+  /* We use char because int might match the return type of a gcc2
+--- 3539,3545 ----
+    ac_save_LIBS="$LIBS"
+  LIBS="-lsocket  $LIBS"
+  cat > conftest.$ac_ext <<EOF
+! #line 3543 "configure"
+  #include "confdefs.h"
+  /* Override any gcc2 internal prototype to avoid an error.  */
+  /* We use char because int might match the return type of a gcc2
+***************
+*** 3542,3548 ****
+  socket()
+  ; return 0; }
+  EOF
+! if { (eval echo configure:3546: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+    rm -rf conftest*
+    eval "ac_cv_lib_$ac_lib_var=yes"
+  else
+--- 3550,3556 ----
+  socket()
+  ; return 0; }
+  EOF
+! if { (eval echo configure:3554: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+    rm -rf conftest*
+    eval "ac_cv_lib_$ac_lib_var=yes"
+  else
+***************
+*** 3570,3576 ****
+  fi
+  
+               echo $ac_n "checking for inet_ntoa in -lnsl""... $ac_c" 1>&6
+! echo "configure:3574: checking for inet_ntoa in -lnsl" >&5
+  ac_lib_var=`echo nsl'_'inet_ntoa | sed 'y%./+-%__p_%'`
+  if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
+    echo $ac_n "(cached) $ac_c" 1>&6
+--- 3578,3584 ----
+  fi
+  
+               echo $ac_n "checking for inet_ntoa in -lnsl""... $ac_c" 1>&6
+! echo "configure:3582: checking for inet_ntoa in -lnsl" >&5
+  ac_lib_var=`echo nsl'_'inet_ntoa | sed 'y%./+-%__p_%'`
+  if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
+    echo $ac_n "(cached) $ac_c" 1>&6
+***************
+*** 3578,3584 ****
+    ac_save_LIBS="$LIBS"
+  LIBS="-lnsl  $LIBS"
+  cat > conftest.$ac_ext <<EOF
+! #line 3582 "configure"
+  #include "confdefs.h"
+  /* Override any gcc2 internal prototype to avoid an error.  */
+  /* We use char because int might match the return type of a gcc2
+--- 3586,3592 ----
+    ac_save_LIBS="$LIBS"
+  LIBS="-lnsl  $LIBS"
+  cat > conftest.$ac_ext <<EOF
+! #line 3590 "configure"
+  #include "confdefs.h"
+  /* Override any gcc2 internal prototype to avoid an error.  */
+  /* We use char because int might match the return type of a gcc2
+***************
+*** 3589,3595 ****
+  inet_ntoa()
+  ; return 0; }
+  EOF
+! if { (eval echo configure:3593: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+    rm -rf conftest*
+    eval "ac_cv_lib_$ac_lib_var=yes"
+  else
+--- 3597,3603 ----
+  inet_ntoa()
+  ; return 0; }
+  EOF
+! if { (eval echo configure:3601: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+    rm -rf conftest*
+    eval "ac_cv_lib_$ac_lib_var=yes"
+  else
+***************
+*** 3623,3629 ****
+  # Purify support
+  #
+  echo $ac_n "checking whether to use purify""... $ac_c" 1>&6
+! echo "configure:3627: checking whether to use purify" >&5
+  # Check whether --with-purify or --without-purify was given.
+  if test "${with_purify+set}" = set; then
+    withval="$with_purify"
+--- 3631,3637 ----
+  # Purify support
+  #
+  echo $ac_n "checking whether to use purify""... $ac_c" 1>&6
+! echo "configure:3635: checking whether to use purify" >&5
+  # Check whether --with-purify or --without-purify was given.
+  if test "${with_purify+set}" = set; then
+    withval="$with_purify"
+***************
+*** 3640,3646 ****
+               # Extract the first word of "purify", so it can be a program name with args.
+  set dummy purify; ac_word=$2
+  echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+! echo "configure:3644: checking for $ac_word" >&5
+  if eval "test \"`echo '$''{'ac_cv_path_purify_path'+set}'`\" = set"; then
+    echo $ac_n "(cached) $ac_c" 1>&6
+  else
+--- 3648,3654 ----
+               # Extract the first word of "purify", so it can be a program name with args.
+  set dummy purify; ac_word=$2
+  echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+! echo "configure:3652: checking for $ac_word" >&5
+  if eval "test \"`echo '$''{'ac_cv_path_purify_path'+set}'`\" = set"; then
+    echo $ac_n "(cached) $ac_c" 1>&6
+  else
+***************
+*** 3717,3728 ****
+  case $use_libtool in
+       yes)
+               echo $ac_n "checking for Cygwin environment""... $ac_c" 1>&6
+! echo "configure:3721: checking for Cygwin environment" >&5
+  if eval "test \"`echo '$''{'ac_cv_cygwin'+set}'`\" = set"; then
+    echo $ac_n "(cached) $ac_c" 1>&6
+  else
+    cat > conftest.$ac_ext <<EOF
+! #line 3726 "configure"
+  #include "confdefs.h"
+  
+  int main() {
+--- 3725,3736 ----
+  case $use_libtool in
+       yes)
+               echo $ac_n "checking for Cygwin environment""... $ac_c" 1>&6
+! echo "configure:3729: checking for Cygwin environment" >&5
+  if eval "test \"`echo '$''{'ac_cv_cygwin'+set}'`\" = set"; then
+    echo $ac_n "(cached) $ac_c" 1>&6
+  else
+    cat > conftest.$ac_ext <<EOF
+! #line 3734 "configure"
+  #include "confdefs.h"
+  
+  int main() {
+***************
+*** 3733,3739 ****
+  return __CYGWIN__;
+  ; return 0; }
+  EOF
+! if { (eval echo configure:3737: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+    rm -rf conftest*
+    ac_cv_cygwin=yes
+  else
+--- 3741,3747 ----
+  return __CYGWIN__;
+  ; return 0; }
+  EOF
+! if { (eval echo configure:3745: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+    rm -rf conftest*
+    ac_cv_cygwin=yes
+  else
+***************
+*** 3750,3768 ****
+  CYGWIN=
+  test "$ac_cv_cygwin" = yes && CYGWIN=yes
+  echo $ac_n "checking for mingw32 environment""... $ac_c" 1>&6
+! echo "configure:3754: checking for mingw32 environment" >&5
+  if eval "test \"`echo '$''{'ac_cv_mingw32'+set}'`\" = set"; then
+    echo $ac_n "(cached) $ac_c" 1>&6
+  else
+    cat > conftest.$ac_ext <<EOF
+! #line 3759 "configure"
+  #include "confdefs.h"
+  
+  int main() {
+  return __MINGW32__;
+  ; return 0; }
+  EOF
+! if { (eval echo configure:3766: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+    rm -rf conftest*
+    ac_cv_mingw32=yes
+  else
+--- 3758,3776 ----
+  CYGWIN=
+  test "$ac_cv_cygwin" = yes && CYGWIN=yes
+  echo $ac_n "checking for mingw32 environment""... $ac_c" 1>&6
+! echo "configure:3762: checking for mingw32 environment" >&5
+  if eval "test \"`echo '$''{'ac_cv_mingw32'+set}'`\" = set"; then
+    echo $ac_n "(cached) $ac_c" 1>&6
+  else
+    cat > conftest.$ac_ext <<EOF
+! #line 3767 "configure"
+  #include "confdefs.h"
+  
+  int main() {
+  return __MINGW32__;
+  ; return 0; }
+  EOF
+! if { (eval echo configure:3774: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+    rm -rf conftest*
+    ac_cv_mingw32=yes
+  else
+***************
+*** 3848,3854 ****
+  fi
+  
+  echo $ac_n "checking build system type""... $ac_c" 1>&6
+! echo "configure:3852: checking build system type" >&5
+  
+  build_alias=$build
+  case "$build_alias" in
+--- 3856,3862 ----
+  fi
+  
+  echo $ac_n "checking build system type""... $ac_c" 1>&6
+! echo "configure:3860: checking build system type" >&5
+  
+  build_alias=$build
+  case "$build_alias" in
+***************
+*** 3877,3883 ****
+  if test "$GCC" = yes; then
+    # Check if gcc -print-prog-name=ld gives a path.
+    echo $ac_n "checking for ld used by GCC""... $ac_c" 1>&6
+! echo "configure:3881: checking for ld used by GCC" >&5
+    case $host in
+    *-*-mingw*)
+      # gcc leaves a trailing carriage return which upsets mingw
+--- 3885,3891 ----
+  if test "$GCC" = yes; then
+    # Check if gcc -print-prog-name=ld gives a path.
+    echo $ac_n "checking for ld used by GCC""... $ac_c" 1>&6
+! echo "configure:3889: checking for ld used by GCC" >&5
+    case $host in
+    *-*-mingw*)
+      # gcc leaves a trailing carriage return which upsets mingw
+***************
+*** 3907,3916 ****
+    esac
+  elif test "$with_gnu_ld" = yes; then
+    echo $ac_n "checking for GNU ld""... $ac_c" 1>&6
+! echo "configure:3911: checking for GNU ld" >&5
+  else
+    echo $ac_n "checking for non-GNU ld""... $ac_c" 1>&6
+! echo "configure:3914: checking for non-GNU ld" >&5
+  fi
+  if eval "test \"`echo '$''{'lt_cv_path_LD'+set}'`\" = set"; then
+    echo $ac_n "(cached) $ac_c" 1>&6
+--- 3915,3924 ----
+    esac
+  elif test "$with_gnu_ld" = yes; then
+    echo $ac_n "checking for GNU ld""... $ac_c" 1>&6
+! echo "configure:3919: checking for GNU ld" >&5
+  else
+    echo $ac_n "checking for non-GNU ld""... $ac_c" 1>&6
+! echo "configure:3922: checking for non-GNU ld" >&5
+  fi
+  if eval "test \"`echo '$''{'lt_cv_path_LD'+set}'`\" = set"; then
+    echo $ac_n "(cached) $ac_c" 1>&6
+***************
+*** 3945,3951 ****
+  fi
+  test -z "$LD" && { echo "configure: error: no acceptable ld found in \$PATH" 1>&2; exit 1; }
+  echo $ac_n "checking if the linker ($LD) is GNU ld""... $ac_c" 1>&6
+! echo "configure:3949: checking if the linker ($LD) is GNU ld" >&5
+  if eval "test \"`echo '$''{'lt_cv_prog_gnu_ld'+set}'`\" = set"; then
+    echo $ac_n "(cached) $ac_c" 1>&6
+  else
+--- 3953,3959 ----
+  fi
+  test -z "$LD" && { echo "configure: error: no acceptable ld found in \$PATH" 1>&2; exit 1; }
+  echo $ac_n "checking if the linker ($LD) is GNU ld""... $ac_c" 1>&6
+! echo "configure:3957: checking if the linker ($LD) is GNU ld" >&5
+  if eval "test \"`echo '$''{'lt_cv_prog_gnu_ld'+set}'`\" = set"; then
+    echo $ac_n "(cached) $ac_c" 1>&6
+  else
+***************
+*** 3962,3968 ****
+  
+  
+  echo $ac_n "checking for $LD option to reload object files""... $ac_c" 1>&6
+! echo "configure:3966: checking for $LD option to reload object files" >&5
+  if eval "test \"`echo '$''{'lt_cv_ld_reload_flag'+set}'`\" = set"; then
+    echo $ac_n "(cached) $ac_c" 1>&6
+  else
+--- 3970,3976 ----
+  
+  
+  echo $ac_n "checking for $LD option to reload object files""... $ac_c" 1>&6
+! echo "configure:3974: checking for $LD option to reload object files" >&5
+  if eval "test \"`echo '$''{'lt_cv_ld_reload_flag'+set}'`\" = set"; then
+    echo $ac_n "(cached) $ac_c" 1>&6
+  else
+***************
+*** 3974,3980 ****
+  test -n "$reload_flag" && reload_flag=" $reload_flag"
+  
+  echo $ac_n "checking for BSD-compatible nm""... $ac_c" 1>&6
+! echo "configure:3978: checking for BSD-compatible nm" >&5
+  if eval "test \"`echo '$''{'lt_cv_path_NM'+set}'`\" = set"; then
+    echo $ac_n "(cached) $ac_c" 1>&6
+  else
+--- 3982,3988 ----
+  test -n "$reload_flag" && reload_flag=" $reload_flag"
+  
+  echo $ac_n "checking for BSD-compatible nm""... $ac_c" 1>&6
+! echo "configure:3986: checking for BSD-compatible nm" >&5
+  if eval "test \"`echo '$''{'lt_cv_path_NM'+set}'`\" = set"; then
+    echo $ac_n "(cached) $ac_c" 1>&6
+  else
+***************
+*** 4012,4018 ****
+  echo "$ac_t""$NM" 1>&6
+  
+  echo $ac_n "checking whether ln -s works""... $ac_c" 1>&6
+! echo "configure:4016: checking whether ln -s works" >&5
+  if eval "test \"`echo '$''{'ac_cv_prog_LN_S'+set}'`\" = set"; then
+    echo $ac_n "(cached) $ac_c" 1>&6
+  else
+--- 4020,4026 ----
+  echo "$ac_t""$NM" 1>&6
+  
+  echo $ac_n "checking whether ln -s works""... $ac_c" 1>&6
+! echo "configure:4024: checking whether ln -s works" >&5
+  if eval "test \"`echo '$''{'ac_cv_prog_LN_S'+set}'`\" = set"; then
+    echo $ac_n "(cached) $ac_c" 1>&6
+  else
+***************
+*** 4033,4039 ****
+  fi
+  
+  echo $ac_n "checking how to recognise dependant libraries""... $ac_c" 1>&6
+! echo "configure:4037: checking how to recognise dependant libraries" >&5
+  if eval "test \"`echo '$''{'lt_cv_deplibs_check_method'+set}'`\" = set"; then
+    echo $ac_n "(cached) $ac_c" 1>&6
+  else
+--- 4041,4047 ----
+  fi
+  
+  echo $ac_n "checking how to recognise dependant libraries""... $ac_c" 1>&6
+! echo "configure:4045: checking how to recognise dependant libraries" >&5
+  if eval "test \"`echo '$''{'lt_cv_deplibs_check_method'+set}'`\" = set"; then
+    echo $ac_n "(cached) $ac_c" 1>&6
+  else
+***************
+*** 4206,4218 ****
+  deplibs_check_method=$lt_cv_deplibs_check_method
+  
+  echo $ac_n "checking for object suffix""... $ac_c" 1>&6
+! echo "configure:4210: checking for object suffix" >&5
+  if eval "test \"`echo '$''{'ac_cv_objext'+set}'`\" = set"; then
+    echo $ac_n "(cached) $ac_c" 1>&6
+  else
+    rm -f conftest*
+  echo 'int i = 1;' > conftest.$ac_ext
+! if { (eval echo configure:4216: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+    for ac_file in conftest.*; do
+      case $ac_file in
+      *.c) ;;
+--- 4214,4226 ----
+  deplibs_check_method=$lt_cv_deplibs_check_method
+  
+  echo $ac_n "checking for object suffix""... $ac_c" 1>&6
+! echo "configure:4218: checking for object suffix" >&5
+  if eval "test \"`echo '$''{'ac_cv_objext'+set}'`\" = set"; then
+    echo $ac_n "(cached) $ac_c" 1>&6
+  else
+    rm -f conftest*
+  echo 'int i = 1;' > conftest.$ac_ext
+! if { (eval echo configure:4224: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+    for ac_file in conftest.*; do
+      case $ac_file in
+      *.c) ;;
+***************
+*** 4232,4238 ****
+  
+  
+  echo $ac_n "checking for executable suffix""... $ac_c" 1>&6
+! echo "configure:4236: checking for executable suffix" >&5
+  if eval "test \"`echo '$''{'ac_cv_exeext'+set}'`\" = set"; then
+    echo $ac_n "(cached) $ac_c" 1>&6
+  else
+--- 4240,4246 ----
+  
+  
+  echo $ac_n "checking for executable suffix""... $ac_c" 1>&6
+! echo "configure:4244: checking for executable suffix" >&5
+  if eval "test \"`echo '$''{'ac_cv_exeext'+set}'`\" = set"; then
+    echo $ac_n "(cached) $ac_c" 1>&6
+  else
+***************
+*** 4242,4251 ****
+    rm -f conftest*
+    echo 'int main () { return 0; }' > conftest.$ac_ext
+    ac_cv_exeext=
+!   if { (eval echo configure:4246: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }; then
+      for file in conftest.*; do
+        case $file in
+!       *.c | *.o | *.obj) ;;
+        *) ac_cv_exeext=`echo $file | sed -e s/conftest//` ;;
+        esac
+      done
+--- 4250,4259 ----
+    rm -f conftest*
+    echo 'int main () { return 0; }' > conftest.$ac_ext
+    ac_cv_exeext=
+!   if { (eval echo configure:4254: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }; then
+      for file in conftest.*; do
+        case $file in
+!       *.c | *.C | *.o | *.obj) ;;
+        *) ac_cv_exeext=`echo $file | sed -e s/conftest//` ;;
+        esac
+      done
+***************
+*** 4273,4279 ****
+  
+  # Check for command to grab the raw symbol name followed by C symbol from nm.
+  echo $ac_n "checking command to parse $NM output""... $ac_c" 1>&6
+! echo "configure:4277: checking command to parse $NM output" >&5
+  if eval "test \"`echo '$''{'lt_cv_sys_global_symbol_pipe'+set}'`\" = set"; then
+    echo $ac_n "(cached) $ac_c" 1>&6
+  else
+--- 4281,4287 ----
+  
+  # Check for command to grab the raw symbol name followed by C symbol from nm.
+  echo $ac_n "checking command to parse $NM output""... $ac_c" 1>&6
+! echo "configure:4285: checking command to parse $NM output" >&5
+  if eval "test \"`echo '$''{'lt_cv_sys_global_symbol_pipe'+set}'`\" = set"; then
+    echo $ac_n "(cached) $ac_c" 1>&6
+  else
+***************
+*** 4349,4358 ****
+  int main(){nm_test_var='a';nm_test_func();return(0);}
+  EOF
+  
+!   if { (eval echo configure:4353: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+      # Now try to grab the symbols.
+      nlist=conftest.nm
+!     if { (eval echo configure:4356: \"$NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist\") 1>&5; (eval $NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist) 2>&5; } && test -s "$nlist"; then
+        # Try sorting and uniquifying the output.
+        if sort "$nlist" | uniq > "$nlist"T; then
+       mv -f "$nlist"T "$nlist"
+--- 4357,4366 ----
+  int main(){nm_test_var='a';nm_test_func();return(0);}
+  EOF
+  
+!   if { (eval echo configure:4361: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+      # Now try to grab the symbols.
+      nlist=conftest.nm
+!     if { (eval echo configure:4364: \"$NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist\") 1>&5; (eval $NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist) 2>&5; } && test -s "$nlist"; then
+        # Try sorting and uniquifying the output.
+        if sort "$nlist" | uniq > "$nlist"T; then
+       mv -f "$nlist"T "$nlist"
+***************
+*** 4403,4409 ****
+         save_CFLAGS="$CFLAGS"
+         LIBS="conftstm.$ac_objext"
+         CFLAGS="$CFLAGS$no_builtin_flag"
+!        if { (eval echo configure:4407: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+           pipe_works=yes
+         fi
+         LIBS="$save_LIBS"
+--- 4411,4417 ----
+         save_CFLAGS="$CFLAGS"
+         LIBS="conftstm.$ac_objext"
+         CFLAGS="$CFLAGS$no_builtin_flag"
+!        if { (eval echo configure:4415: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+           pipe_works=yes
+         fi
+         LIBS="$save_LIBS"
+***************
+*** 4449,4465 ****
+  do
+  ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
+  echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
+! echo "configure:4453: checking for $ac_hdr" >&5
+  if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
+    echo $ac_n "(cached) $ac_c" 1>&6
+  else
+    cat > conftest.$ac_ext <<EOF
+! #line 4458 "configure"
+  #include "confdefs.h"
+  #include <$ac_hdr>
+  EOF
+  ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
+! { (eval echo configure:4463: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+  ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
+  if test -z "$ac_err"; then
+    rm -rf conftest*
+--- 4457,4473 ----
+  do
+  ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
+  echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
+! echo "configure:4461: checking for $ac_hdr" >&5
+  if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
+    echo $ac_n "(cached) $ac_c" 1>&6
+  else
+    cat > conftest.$ac_ext <<EOF
+! #line 4466 "configure"
+  #include "confdefs.h"
+  #include <$ac_hdr>
+  EOF
+  ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
+! { (eval echo configure:4471: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+  ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
+  if test -z "$ac_err"; then
+    rm -rf conftest*
+***************
+*** 4494,4500 ****
+  file_magic*)
+    if test "$file_magic_cmd" = '$MAGIC_CMD'; then
+      echo $ac_n "checking for ${ac_tool_prefix}file""... $ac_c" 1>&6
+! echo "configure:4498: checking for ${ac_tool_prefix}file" >&5
+  if eval "test \"`echo '$''{'lt_cv_path_MAGIC_CMD'+set}'`\" = set"; then
+    echo $ac_n "(cached) $ac_c" 1>&6
+  else
+--- 4502,4508 ----
+  file_magic*)
+    if test "$file_magic_cmd" = '$MAGIC_CMD'; then
+      echo $ac_n "checking for ${ac_tool_prefix}file""... $ac_c" 1>&6
+! echo "configure:4506: checking for ${ac_tool_prefix}file" >&5
+  if eval "test \"`echo '$''{'lt_cv_path_MAGIC_CMD'+set}'`\" = set"; then
+    echo $ac_n "(cached) $ac_c" 1>&6
+  else
+***************
+*** 4556,4562 ****
+  if test -z "$lt_cv_path_MAGIC_CMD"; then
+    if test -n "$ac_tool_prefix"; then
+      echo $ac_n "checking for file""... $ac_c" 1>&6
+! echo "configure:4560: checking for file" >&5
+  if eval "test \"`echo '$''{'lt_cv_path_MAGIC_CMD'+set}'`\" = set"; then
+    echo $ac_n "(cached) $ac_c" 1>&6
+  else
+--- 4564,4570 ----
+  if test -z "$lt_cv_path_MAGIC_CMD"; then
+    if test -n "$ac_tool_prefix"; then
+      echo $ac_n "checking for file""... $ac_c" 1>&6
+! echo "configure:4568: checking for file" >&5
+  if eval "test \"`echo '$''{'lt_cv_path_MAGIC_CMD'+set}'`\" = set"; then
+    echo $ac_n "(cached) $ac_c" 1>&6
+  else
+***************
+*** 4627,4633 ****
+  # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args.
+  set dummy ${ac_tool_prefix}ranlib; ac_word=$2
+  echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+! echo "configure:4631: checking for $ac_word" >&5
+  if eval "test \"`echo '$''{'ac_cv_prog_RANLIB'+set}'`\" = set"; then
+    echo $ac_n "(cached) $ac_c" 1>&6
+  else
+--- 4635,4641 ----
+  # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args.
+  set dummy ${ac_tool_prefix}ranlib; ac_word=$2
+  echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+! echo "configure:4639: checking for $ac_word" >&5
+  if eval "test \"`echo '$''{'ac_cv_prog_RANLIB'+set}'`\" = set"; then
+    echo $ac_n "(cached) $ac_c" 1>&6
+  else
+***************
+*** 4659,4665 ****
+    # Extract the first word of "ranlib", so it can be a program name with args.
+  set dummy ranlib; ac_word=$2
+  echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+! echo "configure:4663: checking for $ac_word" >&5
+  if eval "test \"`echo '$''{'ac_cv_prog_RANLIB'+set}'`\" = set"; then
+    echo $ac_n "(cached) $ac_c" 1>&6
+  else
+--- 4667,4673 ----
+    # Extract the first word of "ranlib", so it can be a program name with args.
+  set dummy ranlib; ac_word=$2
+  echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+! echo "configure:4671: checking for $ac_word" >&5
+  if eval "test \"`echo '$''{'ac_cv_prog_RANLIB'+set}'`\" = set"; then
+    echo $ac_n "(cached) $ac_c" 1>&6
+  else
+***************
+*** 4694,4700 ****
+  # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args.
+  set dummy ${ac_tool_prefix}strip; ac_word=$2
+  echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+! echo "configure:4698: checking for $ac_word" >&5
+  if eval "test \"`echo '$''{'ac_cv_prog_STRIP'+set}'`\" = set"; then
+    echo $ac_n "(cached) $ac_c" 1>&6
+  else
+--- 4702,4708 ----
+  # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args.
+  set dummy ${ac_tool_prefix}strip; ac_word=$2
+  echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+! echo "configure:4706: checking for $ac_word" >&5
+  if eval "test \"`echo '$''{'ac_cv_prog_STRIP'+set}'`\" = set"; then
+    echo $ac_n "(cached) $ac_c" 1>&6
+  else
+***************
+*** 4726,4732 ****
+    # Extract the first word of "strip", so it can be a program name with args.
+  set dummy strip; ac_word=$2
+  echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+! echo "configure:4730: checking for $ac_word" >&5
+  if eval "test \"`echo '$''{'ac_cv_prog_STRIP'+set}'`\" = set"; then
+    echo $ac_n "(cached) $ac_c" 1>&6
+  else
+--- 4734,4740 ----
+    # Extract the first word of "strip", so it can be a program name with args.
+  set dummy strip; ac_word=$2
+  echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+! echo "configure:4738: checking for $ac_word" >&5
+  if eval "test \"`echo '$''{'ac_cv_prog_STRIP'+set}'`\" = set"; then
+    echo $ac_n "(cached) $ac_c" 1>&6
+  else
+***************
+*** 4775,4782 ****
+  case $host in
+  *-*-irix6*)
+    # Find out which ABI we are using.
+!   echo '#line 4779 "configure"' > conftest.$ac_ext
+!   if { (eval echo configure:4780: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+      case `/usr/bin/file conftest.$ac_objext` in
+      *32-bit*)
+        LD="${LD-ld} -32"
+--- 4783,4790 ----
+  case $host in
+  *-*-irix6*)
+    # Find out which ABI we are using.
+!   echo '#line 4787 "configure"' > conftest.$ac_ext
+!   if { (eval echo configure:4788: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+      case `/usr/bin/file conftest.$ac_objext` in
+      *32-bit*)
+        LD="${LD-ld} -32"
+***************
+*** 4797,4803 ****
+    SAVE_CFLAGS="$CFLAGS"
+    CFLAGS="$CFLAGS -belf"
+    echo $ac_n "checking whether the C compiler needs -belf""... $ac_c" 1>&6
+! echo "configure:4801: checking whether the C compiler needs -belf" >&5
+  if eval "test \"`echo '$''{'lt_cv_cc_needs_belf'+set}'`\" = set"; then
+    echo $ac_n "(cached) $ac_c" 1>&6
+  else
+--- 4805,4811 ----
+    SAVE_CFLAGS="$CFLAGS"
+    CFLAGS="$CFLAGS -belf"
+    echo $ac_n "checking whether the C compiler needs -belf""... $ac_c" 1>&6
+! echo "configure:4809: checking whether the C compiler needs -belf" >&5
+  if eval "test \"`echo '$''{'lt_cv_cc_needs_belf'+set}'`\" = set"; then
+    echo $ac_n "(cached) $ac_c" 1>&6
+  else
+***************
+*** 4810,4823 ****
+  cross_compiling=$ac_cv_prog_cc_cross
+  
+       cat > conftest.$ac_ext <<EOF
+! #line 4814 "configure"
+  #include "confdefs.h"
+  
+  int main() {
+  
+  ; return 0; }
+  EOF
+! if { (eval echo configure:4821: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+    rm -rf conftest*
+    lt_cv_cc_needs_belf=yes
+  else
+--- 4818,4831 ----
+  cross_compiling=$ac_cv_prog_cc_cross
+  
+       cat > conftest.$ac_ext <<EOF
+! #line 4822 "configure"
+  #include "confdefs.h"
+  
+  int main() {
+  
+  ; return 0; }
+  EOF
+! if { (eval echo configure:4829: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+    rm -rf conftest*
+    lt_cv_cc_needs_belf=yes
+  else
+***************
+*** 4932,4938 ****
+  ## FIXME: this should be a separate macro
+  ##
+  echo $ac_n "checking for objdir""... $ac_c" 1>&6
+! echo "configure:4936: checking for objdir" >&5
+  rm -f .libs 2>/dev/null
+  mkdir .libs 2>/dev/null
+  if test -d .libs; then
+--- 4940,4946 ----
+  ## FIXME: this should be a separate macro
+  ##
+  echo $ac_n "checking for objdir""... $ac_c" 1>&6
+! echo "configure:4944: checking for objdir" >&5
+  rm -f .libs 2>/dev/null
+  mkdir .libs 2>/dev/null
+  if test -d .libs; then
+***************
+*** 4963,4969 ****
+  # in isolation, and that seeing it set (from the cache) indicates that
+  # the associated values are set (in the cache) correctly too.
+  echo $ac_n "checking for $compiler option to produce PIC""... $ac_c" 1>&6
+! echo "configure:4967: checking for $compiler option to produce PIC" >&5
+  if eval "test \"`echo '$''{'lt_cv_prog_cc_pic'+set}'`\" = set"; then
+    echo $ac_n "(cached) $ac_c" 1>&6
+  else
+--- 4971,4977 ----
+  # in isolation, and that seeing it set (from the cache) indicates that
+  # the associated values are set (in the cache) correctly too.
+  echo $ac_n "checking for $compiler option to produce PIC""... $ac_c" 1>&6
+! echo "configure:4975: checking for $compiler option to produce PIC" >&5
+  if eval "test \"`echo '$''{'lt_cv_prog_cc_pic'+set}'`\" = set"; then
+    echo $ac_n "(cached) $ac_c" 1>&6
+  else
+***************
+*** 5115,5135 ****
+  
+    # Check to make sure the pic_flag actually works.
+    echo $ac_n "checking if $compiler PIC flag $lt_cv_prog_cc_pic works""... $ac_c" 1>&6
+! echo "configure:5119: checking if $compiler PIC flag $lt_cv_prog_cc_pic works" >&5
+    if eval "test \"`echo '$''{'lt_cv_prog_cc_pic_works'+set}'`\" = set"; then
+    echo $ac_n "(cached) $ac_c" 1>&6
+  else
+        save_CFLAGS="$CFLAGS"
+      CFLAGS="$CFLAGS $lt_cv_prog_cc_pic -DPIC"
+      cat > conftest.$ac_ext <<EOF
+! #line 5126 "configure"
+  #include "confdefs.h"
+  
+  int main() {
+  
+  ; return 0; }
+  EOF
+! if { (eval echo configure:5133: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+    rm -rf conftest*
+          case $host_os in
+        hpux9* | hpux10* | hpux11*)
+--- 5123,5143 ----
+  
+    # Check to make sure the pic_flag actually works.
+    echo $ac_n "checking if $compiler PIC flag $lt_cv_prog_cc_pic works""... $ac_c" 1>&6
+! echo "configure:5127: checking if $compiler PIC flag $lt_cv_prog_cc_pic works" >&5
+    if eval "test \"`echo '$''{'lt_cv_prog_cc_pic_works'+set}'`\" = set"; then
+    echo $ac_n "(cached) $ac_c" 1>&6
+  else
+        save_CFLAGS="$CFLAGS"
+      CFLAGS="$CFLAGS $lt_cv_prog_cc_pic -DPIC"
+      cat > conftest.$ac_ext <<EOF
+! #line 5134 "configure"
+  #include "confdefs.h"
+  
+  int main() {
+  
+  ; return 0; }
+  EOF
+! if { (eval echo configure:5141: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+    rm -rf conftest*
+          case $host_os in
+        hpux9* | hpux10* | hpux11*)
+***************
+*** 5185,5191 ****
+  ## FIXME: this should be a separate macro
+  ##
+  echo $ac_n "checking if $compiler static flag $lt_cv_prog_cc_static works""... $ac_c" 1>&6
+! echo "configure:5189: checking if $compiler static flag $lt_cv_prog_cc_static works" >&5
+  if eval "test \"`echo '$''{'lt_cv_prog_cc_static_works'+set}'`\" = set"; then
+    echo $ac_n "(cached) $ac_c" 1>&6
+  else
+--- 5193,5199 ----
+  ## FIXME: this should be a separate macro
+  ##
+  echo $ac_n "checking if $compiler static flag $lt_cv_prog_cc_static works""... $ac_c" 1>&6
+! echo "configure:5197: checking if $compiler static flag $lt_cv_prog_cc_static works" >&5
+  if eval "test \"`echo '$''{'lt_cv_prog_cc_static_works'+set}'`\" = set"; then
+    echo $ac_n "(cached) $ac_c" 1>&6
+  else
+***************
+*** 5193,5206 ****
+    save_LDFLAGS="$LDFLAGS"
+    LDFLAGS="$LDFLAGS $lt_cv_prog_cc_static"
+    cat > conftest.$ac_ext <<EOF
+! #line 5197 "configure"
+  #include "confdefs.h"
+  
+  int main() {
+  
+  ; return 0; }
+  EOF
+! if { (eval echo configure:5204: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+    rm -rf conftest*
+    lt_cv_prog_cc_static_works=yes
+  else
+--- 5201,5214 ----
+    save_LDFLAGS="$LDFLAGS"
+    LDFLAGS="$LDFLAGS $lt_cv_prog_cc_static"
+    cat > conftest.$ac_ext <<EOF
+! #line 5205 "configure"
+  #include "confdefs.h"
+  
+  int main() {
+  
+  ; return 0; }
+  EOF
+! if { (eval echo configure:5212: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+    rm -rf conftest*
+    lt_cv_prog_cc_static_works=yes
+  else
+***************
+*** 5231,5237 ****
+  ##
+  # Check to see if options -o and -c are simultaneously supported by compiler
+  echo $ac_n "checking if $compiler supports -c -o file.$ac_objext""... $ac_c" 1>&6
+! echo "configure:5235: checking if $compiler supports -c -o file.$ac_objext" >&5
+  if eval "test \"`echo '$''{'lt_cv_compiler_c_o'+set}'`\" = set"; then
+    echo $ac_n "(cached) $ac_c" 1>&6
+  else
+--- 5239,5245 ----
+  ##
+  # Check to see if options -o and -c are simultaneously supported by compiler
+  echo $ac_n "checking if $compiler supports -c -o file.$ac_objext""... $ac_c" 1>&6
+! echo "configure:5243: checking if $compiler supports -c -o file.$ac_objext" >&5
+  if eval "test \"`echo '$''{'lt_cv_compiler_c_o'+set}'`\" = set"; then
+    echo $ac_n "(cached) $ac_c" 1>&6
+  else
+***************
+*** 5250,5256 ****
+  save_CFLAGS="$CFLAGS"
+  CFLAGS="$CFLAGS -o out/conftest2.$ac_objext"
+  compiler_c_o=no
+! if { (eval echo configure:5254: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>out/conftest.err; } && test -s out/conftest2.$ac_objext; then
+    # The compiler can only warn and ignore the option if not recognized
+    # So say no if there are warnings
+    if test -s out/conftest.err; then
+--- 5258,5264 ----
+  save_CFLAGS="$CFLAGS"
+  CFLAGS="$CFLAGS -o out/conftest2.$ac_objext"
+  compiler_c_o=no
+! if { (eval echo configure:5262: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>out/conftest.err; } && test -s out/conftest2.$ac_objext; then
+    # The compiler can only warn and ignore the option if not recognized
+    # So say no if there are warnings
+    if test -s out/conftest.err; then
+***************
+*** 5279,5285 ****
+  if test x"$compiler_c_o" = x"yes"; then
+    # Check to see if we can write to a .lo
+    echo $ac_n "checking if $compiler supports -c -o file.lo""... $ac_c" 1>&6
+! echo "configure:5283: checking if $compiler supports -c -o file.lo" >&5
+    if eval "test \"`echo '$''{'lt_cv_compiler_o_lo'+set}'`\" = set"; then
+    echo $ac_n "(cached) $ac_c" 1>&6
+  else
+--- 5287,5293 ----
+  if test x"$compiler_c_o" = x"yes"; then
+    # Check to see if we can write to a .lo
+    echo $ac_n "checking if $compiler supports -c -o file.lo""... $ac_c" 1>&6
+! echo "configure:5291: checking if $compiler supports -c -o file.lo" >&5
+    if eval "test \"`echo '$''{'lt_cv_compiler_o_lo'+set}'`\" = set"; then
+    echo $ac_n "(cached) $ac_c" 1>&6
+  else
+***************
+*** 5288,5301 ****
+    save_CFLAGS="$CFLAGS"
+    CFLAGS="$CFLAGS -c -o conftest.lo"
+    cat > conftest.$ac_ext <<EOF
+! #line 5292 "configure"
+  #include "confdefs.h"
+  
+  int main() {
+  int some_variable = 0;
+  ; return 0; }
+  EOF
+! if { (eval echo configure:5299: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+    rm -rf conftest*
+        # The compiler can only warn and ignore the option if not recognized
+      # So say no if there are warnings
+--- 5296,5309 ----
+    save_CFLAGS="$CFLAGS"
+    CFLAGS="$CFLAGS -c -o conftest.lo"
+    cat > conftest.$ac_ext <<EOF
+! #line 5300 "configure"
+  #include "confdefs.h"
+  
+  int main() {
+  int some_variable = 0;
+  ; return 0; }
+  EOF
+! if { (eval echo configure:5307: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+    rm -rf conftest*
+        # The compiler can only warn and ignore the option if not recognized
+      # So say no if there are warnings
+***************
+*** 5329,5335 ****
+  if test "$compiler_c_o" = no && test "$need_locks" != no; then
+    # do not overwrite the value of need_locks provided by the user
+    echo $ac_n "checking if we can lock with hard links""... $ac_c" 1>&6
+! echo "configure:5333: checking if we can lock with hard links" >&5
+    hard_links=yes
+    $rm conftest*
+    ln conftest.a conftest.b 2>/dev/null && hard_links=no
+--- 5337,5343 ----
+  if test "$compiler_c_o" = no && test "$need_locks" != no; then
+    # do not overwrite the value of need_locks provided by the user
+    echo $ac_n "checking if we can lock with hard links""... $ac_c" 1>&6
+! echo "configure:5341: checking if we can lock with hard links" >&5
+    hard_links=yes
+    $rm conftest*
+    ln conftest.a conftest.b 2>/dev/null && hard_links=no
+***************
+*** 5352,5371 ****
+  if test "$GCC" = yes; then
+    # Check to see if options -fno-rtti -fno-exceptions are supported by compiler
+    echo $ac_n "checking if $compiler supports -fno-rtti -fno-exceptions""... $ac_c" 1>&6
+! echo "configure:5356: checking if $compiler supports -fno-rtti -fno-exceptions" >&5
+    echo "int some_variable = 0;" > conftest.$ac_ext
+    save_CFLAGS="$CFLAGS"
+    CFLAGS="$CFLAGS -fno-rtti -fno-exceptions -c conftest.$ac_ext"
+    compiler_rtti_exceptions=no
+    cat > conftest.$ac_ext <<EOF
+! #line 5362 "configure"
+  #include "confdefs.h"
+  
+  int main() {
+  int some_variable = 0;
+  ; return 0; }
+  EOF
+! if { (eval echo configure:5369: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+    rm -rf conftest*
+        # The compiler can only warn and ignore the option if not recognized
+      # So say no if there are warnings
+--- 5360,5379 ----
+  if test "$GCC" = yes; then
+    # Check to see if options -fno-rtti -fno-exceptions are supported by compiler
+    echo $ac_n "checking if $compiler supports -fno-rtti -fno-exceptions""... $ac_c" 1>&6
+! echo "configure:5364: checking if $compiler supports -fno-rtti -fno-exceptions" >&5
+    echo "int some_variable = 0;" > conftest.$ac_ext
+    save_CFLAGS="$CFLAGS"
+    CFLAGS="$CFLAGS -fno-rtti -fno-exceptions -c conftest.$ac_ext"
+    compiler_rtti_exceptions=no
+    cat > conftest.$ac_ext <<EOF
+! #line 5370 "configure"
+  #include "confdefs.h"
+  
+  int main() {
+  int some_variable = 0;
+  ; return 0; }
+  EOF
+! if { (eval echo configure:5377: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+    rm -rf conftest*
+        # The compiler can only warn and ignore the option if not recognized
+      # So say no if there are warnings
+***************
+*** 5396,5402 ****
+  ##
+  # See if the linker supports building shared libraries.
+  echo $ac_n "checking whether the linker ($LD) supports shared libraries""... $ac_c" 1>&6
+! echo "configure:5400: checking whether the linker ($LD) supports shared libraries" >&5
+  
+  allow_undefined_flag=
+  no_undefined_flag=
+--- 5404,5410 ----
+  ##
+  # See if the linker supports building shared libraries.
+  echo $ac_n "checking whether the linker ($LD) supports shared libraries""... $ac_c" 1>&6
+! echo "configure:5408: checking whether the linker ($LD) supports shared libraries" >&5
+  
+  allow_undefined_flag=
+  no_undefined_flag=
+***************
+*** 6016,6022 ****
+  ##
+  # Check hardcoding attributes.
+  echo $ac_n "checking how to hardcode library paths into programs""... $ac_c" 1>&6
+! echo "configure:6020: checking how to hardcode library paths into programs" >&5
+  hardcode_action=
+  if test -n "$hardcode_libdir_flag_spec" || \
+     test -n "$runpath_var"; then
+--- 6024,6030 ----
+  ##
+  # Check hardcoding attributes.
+  echo $ac_n "checking how to hardcode library paths into programs""... $ac_c" 1>&6
+! echo "configure:6028: checking how to hardcode library paths into programs" >&5
+  hardcode_action=
+  if test -n "$hardcode_libdir_flag_spec" || \
+     test -n "$runpath_var"; then
+***************
+*** 6048,6054 ****
+  striplib=
+  old_striplib=
+  echo $ac_n "checking whether stripping libraries is possible""... $ac_c" 1>&6
+! echo "configure:6052: checking whether stripping libraries is possible" >&5
+  if test -n "$STRIP" && $STRIP -V 2>&1 | grep "GNU strip" >/dev/null; then
+    test -z "$old_striplib" && old_striplib="$STRIP --strip-debug"
+    test -z "$striplib" && striplib="$STRIP --strip-unneeded"
+--- 6056,6062 ----
+  striplib=
+  old_striplib=
+  echo $ac_n "checking whether stripping libraries is possible""... $ac_c" 1>&6
+! echo "configure:6060: checking whether stripping libraries is possible" >&5
+  if test -n "$STRIP" && $STRIP -V 2>&1 | grep "GNU strip" >/dev/null; then
+    test -z "$old_striplib" && old_striplib="$STRIP --strip-debug"
+    test -z "$striplib" && striplib="$STRIP --strip-unneeded"
+***************
+*** 6066,6072 ****
+  ##
+  # PORTME Fill in your ld.so characteristics
+  echo $ac_n "checking dynamic linker characteristics""... $ac_c" 1>&6
+! echo "configure:6070: checking dynamic linker characteristics" >&5
+  library_names_spec=
+  libname_spec='lib$name'
+  soname_spec=
+--- 6074,6080 ----
+  ##
+  # PORTME Fill in your ld.so characteristics
+  echo $ac_n "checking dynamic linker characteristics""... $ac_c" 1>&6
+! echo "configure:6078: checking dynamic linker characteristics" >&5
+  library_names_spec=
+  libname_spec='lib$name'
+  soname_spec=
+***************
+*** 6456,6462 ****
+  ##
+  # Report the final consequences.
+  echo $ac_n "checking if libtool supports shared libraries""... $ac_c" 1>&6
+! echo "configure:6460: checking if libtool supports shared libraries" >&5
+  echo "$ac_t""$can_build_shared" 1>&6
+  ##
+  ## END FIXME
+--- 6464,6470 ----
+  ##
+  # Report the final consequences.
+  echo $ac_n "checking if libtool supports shared libraries""... $ac_c" 1>&6
+! echo "configure:6468: checking if libtool supports shared libraries" >&5
+  echo "$ac_t""$can_build_shared" 1>&6
+  ##
+  ## END FIXME
+***************
+*** 6497,6503 ****
+  
+    *)
+      echo $ac_n "checking for dlopen in -ldl""... $ac_c" 1>&6
+! echo "configure:6501: checking for dlopen in -ldl" >&5
+  ac_lib_var=`echo dl'_'dlopen | sed 'y%./+-%__p_%'`
+  if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
+    echo $ac_n "(cached) $ac_c" 1>&6
+--- 6505,6511 ----
+  
+    *)
+      echo $ac_n "checking for dlopen in -ldl""... $ac_c" 1>&6
+! echo "configure:6509: checking for dlopen in -ldl" >&5
+  ac_lib_var=`echo dl'_'dlopen | sed 'y%./+-%__p_%'`
+  if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
+    echo $ac_n "(cached) $ac_c" 1>&6
+***************
+*** 6505,6511 ****
+    ac_save_LIBS="$LIBS"
+  LIBS="-ldl  $LIBS"
+  cat > conftest.$ac_ext <<EOF
+! #line 6509 "configure"
+  #include "confdefs.h"
+  /* Override any gcc2 internal prototype to avoid an error.  */
+  /* We use char because int might match the return type of a gcc2
+--- 6513,6519 ----
+    ac_save_LIBS="$LIBS"
+  LIBS="-ldl  $LIBS"
+  cat > conftest.$ac_ext <<EOF
+! #line 6517 "configure"
+  #include "confdefs.h"
+  /* Override any gcc2 internal prototype to avoid an error.  */
+  /* We use char because int might match the return type of a gcc2
+***************
+*** 6516,6522 ****
+  dlopen()
+  ; return 0; }
+  EOF
+! if { (eval echo configure:6520: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+    rm -rf conftest*
+    eval "ac_cv_lib_$ac_lib_var=yes"
+  else
+--- 6524,6530 ----
+  dlopen()
+  ; return 0; }
+  EOF
+! if { (eval echo configure:6528: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+    rm -rf conftest*
+    eval "ac_cv_lib_$ac_lib_var=yes"
+  else
+***************
+*** 6535,6546 ****
+  else
+    echo "$ac_t""no" 1>&6
+  echo $ac_n "checking for dlopen""... $ac_c" 1>&6
+! echo "configure:6539: checking for dlopen" >&5
+  if eval "test \"`echo '$''{'ac_cv_func_dlopen'+set}'`\" = set"; then
+    echo $ac_n "(cached) $ac_c" 1>&6
+  else
+    cat > conftest.$ac_ext <<EOF
+! #line 6544 "configure"
+  #include "confdefs.h"
+  /* System header to define __stub macros and hopefully few prototypes,
+      which can conflict with char dlopen(); below.  */
+--- 6543,6554 ----
+  else
+    echo "$ac_t""no" 1>&6
+  echo $ac_n "checking for dlopen""... $ac_c" 1>&6
+! echo "configure:6547: checking for dlopen" >&5
+  if eval "test \"`echo '$''{'ac_cv_func_dlopen'+set}'`\" = set"; then
+    echo $ac_n "(cached) $ac_c" 1>&6
+  else
+    cat > conftest.$ac_ext <<EOF
+! #line 6552 "configure"
+  #include "confdefs.h"
+  /* System header to define __stub macros and hopefully few prototypes,
+      which can conflict with char dlopen(); below.  */
+***************
+*** 6563,6569 ****
+  
+  ; return 0; }
+  EOF
+! if { (eval echo configure:6567: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+    rm -rf conftest*
+    eval "ac_cv_func_dlopen=yes"
+  else
+--- 6571,6577 ----
+  
+  ; return 0; }
+  EOF
+! if { (eval echo configure:6575: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+    rm -rf conftest*
+    eval "ac_cv_func_dlopen=yes"
+  else
+***************
+*** 6581,6592 ****
+  else
+    echo "$ac_t""no" 1>&6
+  echo $ac_n "checking for shl_load""... $ac_c" 1>&6
+! echo "configure:6585: checking for shl_load" >&5
+  if eval "test \"`echo '$''{'ac_cv_func_shl_load'+set}'`\" = set"; then
+    echo $ac_n "(cached) $ac_c" 1>&6
+  else
+    cat > conftest.$ac_ext <<EOF
+! #line 6590 "configure"
+  #include "confdefs.h"
+  /* System header to define __stub macros and hopefully few prototypes,
+      which can conflict with char shl_load(); below.  */
+--- 6589,6600 ----
+  else
+    echo "$ac_t""no" 1>&6
+  echo $ac_n "checking for shl_load""... $ac_c" 1>&6
+! echo "configure:6593: checking for shl_load" >&5
+  if eval "test \"`echo '$''{'ac_cv_func_shl_load'+set}'`\" = set"; then
+    echo $ac_n "(cached) $ac_c" 1>&6
+  else
+    cat > conftest.$ac_ext <<EOF
+! #line 6598 "configure"
+  #include "confdefs.h"
+  /* System header to define __stub macros and hopefully few prototypes,
+      which can conflict with char shl_load(); below.  */
+***************
+*** 6609,6615 ****
+  
+  ; return 0; }
+  EOF
+! if { (eval echo configure:6613: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+    rm -rf conftest*
+    eval "ac_cv_func_shl_load=yes"
+  else
+--- 6617,6623 ----
+  
+  ; return 0; }
+  EOF
+! if { (eval echo configure:6621: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+    rm -rf conftest*
+    eval "ac_cv_func_shl_load=yes"
+  else
+***************
+*** 6627,6633 ****
+  else
+    echo "$ac_t""no" 1>&6
+  echo $ac_n "checking for dlopen in -lsvld""... $ac_c" 1>&6
+! echo "configure:6631: checking for dlopen in -lsvld" >&5
+  ac_lib_var=`echo svld'_'dlopen | sed 'y%./+-%__p_%'`
+  if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
+    echo $ac_n "(cached) $ac_c" 1>&6
+--- 6635,6641 ----
+  else
+    echo "$ac_t""no" 1>&6
+  echo $ac_n "checking for dlopen in -lsvld""... $ac_c" 1>&6
+! echo "configure:6639: checking for dlopen in -lsvld" >&5
+  ac_lib_var=`echo svld'_'dlopen | sed 'y%./+-%__p_%'`
+  if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
+    echo $ac_n "(cached) $ac_c" 1>&6
+***************
+*** 6635,6641 ****
+    ac_save_LIBS="$LIBS"
+  LIBS="-lsvld  $LIBS"
+  cat > conftest.$ac_ext <<EOF
+! #line 6639 "configure"
+  #include "confdefs.h"
+  /* Override any gcc2 internal prototype to avoid an error.  */
+  /* We use char because int might match the return type of a gcc2
+--- 6643,6649 ----
+    ac_save_LIBS="$LIBS"
+  LIBS="-lsvld  $LIBS"
+  cat > conftest.$ac_ext <<EOF
+! #line 6647 "configure"
+  #include "confdefs.h"
+  /* Override any gcc2 internal prototype to avoid an error.  */
+  /* We use char because int might match the return type of a gcc2
+***************
+*** 6646,6652 ****
+  dlopen()
+  ; return 0; }
+  EOF
+! if { (eval echo configure:6650: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+    rm -rf conftest*
+    eval "ac_cv_lib_$ac_lib_var=yes"
+  else
+--- 6654,6660 ----
+  dlopen()
+  ; return 0; }
+  EOF
+! if { (eval echo configure:6658: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+    rm -rf conftest*
+    eval "ac_cv_lib_$ac_lib_var=yes"
+  else
+***************
+*** 6665,6671 ****
+  else
+    echo "$ac_t""no" 1>&6
+  echo $ac_n "checking for shl_load in -ldld""... $ac_c" 1>&6
+! echo "configure:6669: checking for shl_load in -ldld" >&5
+  ac_lib_var=`echo dld'_'shl_load | sed 'y%./+-%__p_%'`
+  if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
+    echo $ac_n "(cached) $ac_c" 1>&6
+--- 6673,6679 ----
+  else
+    echo "$ac_t""no" 1>&6
+  echo $ac_n "checking for shl_load in -ldld""... $ac_c" 1>&6
+! echo "configure:6677: checking for shl_load in -ldld" >&5
+  ac_lib_var=`echo dld'_'shl_load | sed 'y%./+-%__p_%'`
+  if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
+    echo $ac_n "(cached) $ac_c" 1>&6
+***************
+*** 6673,6679 ****
+    ac_save_LIBS="$LIBS"
+  LIBS="-ldld  $LIBS"
+  cat > conftest.$ac_ext <<EOF
+! #line 6677 "configure"
+  #include "confdefs.h"
+  /* Override any gcc2 internal prototype to avoid an error.  */
+  /* We use char because int might match the return type of a gcc2
+--- 6681,6687 ----
+    ac_save_LIBS="$LIBS"
+  LIBS="-ldld  $LIBS"
+  cat > conftest.$ac_ext <<EOF
+! #line 6685 "configure"
+  #include "confdefs.h"
+  /* Override any gcc2 internal prototype to avoid an error.  */
+  /* We use char because int might match the return type of a gcc2
+***************
+*** 6684,6690 ****
+  shl_load()
+  ; return 0; }
+  EOF
+! if { (eval echo configure:6688: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+    rm -rf conftest*
+    eval "ac_cv_lib_$ac_lib_var=yes"
+  else
+--- 6692,6698 ----
+  shl_load()
+  ; return 0; }
+  EOF
+! if { (eval echo configure:6696: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+    rm -rf conftest*
+    eval "ac_cv_lib_$ac_lib_var=yes"
+  else
+***************
+*** 6737,6743 ****
+      LIBS="$lt_cv_dlopen_libs $LIBS"
+  
+      echo $ac_n "checking whether a program can dlopen itself""... $ac_c" 1>&6
+! echo "configure:6741: checking whether a program can dlopen itself" >&5
+  if eval "test \"`echo '$''{'lt_cv_dlopen_self'+set}'`\" = set"; then
+    echo $ac_n "(cached) $ac_c" 1>&6
+  else
+--- 6745,6751 ----
+      LIBS="$lt_cv_dlopen_libs $LIBS"
+  
+      echo $ac_n "checking whether a program can dlopen itself""... $ac_c" 1>&6
+! echo "configure:6749: checking whether a program can dlopen itself" >&5
+  if eval "test \"`echo '$''{'lt_cv_dlopen_self'+set}'`\" = set"; then
+    echo $ac_n "(cached) $ac_c" 1>&6
+  else
+***************
+*** 6747,6753 ****
+      lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
+    lt_status=$lt_dlunknown
+    cat > conftest.$ac_ext <<EOF
+! #line 6751 "configure"
+  #include "confdefs.h"
+  
+  #if HAVE_DLFCN_H
+--- 6755,6761 ----
+      lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
+    lt_status=$lt_dlunknown
+    cat > conftest.$ac_ext <<EOF
+! #line 6759 "configure"
+  #include "confdefs.h"
+  
+  #if HAVE_DLFCN_H
+***************
+*** 6808,6814 ****
+      exit (status);
+  }
+  EOF
+!   if { (eval echo configure:6812: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} 2>/dev/null; then
+      (./conftest; exit; ) 2>/dev/null
+      lt_status=$?
+      case x$lt_status in
+--- 6816,6822 ----
+      exit (status);
+  }
+  EOF
+!   if { (eval echo configure:6820: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} 2>/dev/null; then
+      (./conftest; exit; ) 2>/dev/null
+      lt_status=$?
+      case x$lt_status in
+***************
+*** 6831,6837 ****
+      if test "x$lt_cv_dlopen_self" = xyes; then
+        LDFLAGS="$LDFLAGS $link_static_flag"
+        echo $ac_n "checking whether a statically linked program can dlopen itself""... $ac_c" 1>&6
+! echo "configure:6835: checking whether a statically linked program can dlopen itself" >&5
+  if eval "test \"`echo '$''{'lt_cv_dlopen_self_static'+set}'`\" = set"; then
+    echo $ac_n "(cached) $ac_c" 1>&6
+  else
+--- 6839,6845 ----
+      if test "x$lt_cv_dlopen_self" = xyes; then
+        LDFLAGS="$LDFLAGS $link_static_flag"
+        echo $ac_n "checking whether a statically linked program can dlopen itself""... $ac_c" 1>&6
+! echo "configure:6843: checking whether a statically linked program can dlopen itself" >&5
+  if eval "test \"`echo '$''{'lt_cv_dlopen_self_static'+set}'`\" = set"; then
+    echo $ac_n "(cached) $ac_c" 1>&6
+  else
+***************
+*** 6841,6847 ****
+      lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
+    lt_status=$lt_dlunknown
+    cat > conftest.$ac_ext <<EOF
+! #line 6845 "configure"
+  #include "confdefs.h"
+  
+  #if HAVE_DLFCN_H
+--- 6849,6855 ----
+      lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
+    lt_status=$lt_dlunknown
+    cat > conftest.$ac_ext <<EOF
+! #line 6853 "configure"
+  #include "confdefs.h"
+  
+  #if HAVE_DLFCN_H
+***************
+*** 6902,6908 ****
+      exit (status);
+  }
+  EOF
+!   if { (eval echo configure:6906: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} 2>/dev/null; then
+      (./conftest; exit; ) 2>/dev/null
+      lt_status=$?
+      case x$lt_status in
+--- 6910,6916 ----
+      exit (status);
+  }
+  EOF
+!   if { (eval echo configure:6914: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} 2>/dev/null; then
+      (./conftest; exit; ) 2>/dev/null
+      lt_status=$?
+      case x$lt_status in
+***************
+*** 6953,6966 ****
+      # systems, -lgcc has to come before -lc. If gcc already passes -lc
+      # to ld, don't add -lc before -lgcc.
+      echo $ac_n "checking whether -lc should be explicitly linked in""... $ac_c" 1>&6
+! echo "configure:6957: checking whether -lc should be explicitly linked in" >&5
+      if eval "test \"`echo '$''{'lt_cv_archive_cmds_need_lc'+set}'`\" = set"; then
+    echo $ac_n "(cached) $ac_c" 1>&6
+  else
+    $rm conftest*
+      echo 'static int dummy;' > conftest.$ac_ext
+  
+!     if { (eval echo configure:6964: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+        soname=conftest
+        lib=conftest
+        libobjs=conftest.$ac_objext
+--- 6961,6974 ----
+      # systems, -lgcc has to come before -lc. If gcc already passes -lc
+      # to ld, don't add -lc before -lgcc.
+      echo $ac_n "checking whether -lc should be explicitly linked in""... $ac_c" 1>&6
+! echo "configure:6965: checking whether -lc should be explicitly linked in" >&5
+      if eval "test \"`echo '$''{'lt_cv_archive_cmds_need_lc'+set}'`\" = set"; then
+    echo $ac_n "(cached) $ac_c" 1>&6
+  else
+    $rm conftest*
+      echo 'static int dummy;' > conftest.$ac_ext
+  
+!     if { (eval echo configure:6972: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+        soname=conftest
+        lib=conftest
+        libobjs=conftest.$ac_objext
+***************
+*** 6973,6979 ****
+        libname=conftest
+        save_allow_undefined_flag=$allow_undefined_flag
+        allow_undefined_flag=
+!       if { (eval echo configure:6977: \"$archive_cmds 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\") 1>&5; (eval $archive_cmds 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) 2>&5; }
+        then
+       lt_cv_archive_cmds_need_lc=no
+        else
+--- 6981,6987 ----
+        libname=conftest
+        save_allow_undefined_flag=$allow_undefined_flag
+        allow_undefined_flag=
+!       if { (eval echo configure:6985: \"$archive_cmds 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\") 1>&5; (eval $archive_cmds 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) 2>&5; }
+        then
+       lt_cv_archive_cmds_need_lc=no
+        else
+***************
+*** 7630,7638 ****
+  # the right suffix on the files.
+  #
+  echo $ac_n "checking for IPv6 structures""... $ac_c" 1>&6
+! echo "configure:7634: checking for IPv6 structures" >&5
+  cat > conftest.$ac_ext <<EOF
+! #line 7636 "configure"
+  #include "confdefs.h"
+  
+  #include <sys/types.h>
+--- 7638,7646 ----
+  # the right suffix on the files.
+  #
+  echo $ac_n "checking for IPv6 structures""... $ac_c" 1>&6
+! echo "configure:7642: checking for IPv6 structures" >&5
+  cat > conftest.$ac_ext <<EOF
+! #line 7644 "configure"
+  #include "confdefs.h"
+  
+  #include <sys/types.h>
+***************
+*** 7642,7648 ****
+  struct sockaddr_in6 sin6; return (0);
+  ; return 0; }
+  EOF
+! if { (eval echo configure:7646: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+    rm -rf conftest*
+    echo "$ac_t""yes" 1>&6
+        found_ipv6=yes
+--- 7650,7656 ----
+  struct sockaddr_in6 sin6; return (0);
+  ; return 0; }
+  EOF
+! if { (eval echo configure:7654: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+    rm -rf conftest*
+    echo "$ac_t""yes" 1>&6
+        found_ipv6=yes
+***************
+*** 7660,7666 ****
+  # This is done before other IPv6 linking tests to LIBS is properly set.
+  #
+  echo $ac_n "checking for Kame IPv6 support""... $ac_c" 1>&6
+! echo "configure:7664: checking for Kame IPv6 support" >&5
+  # Check whether --with-kame or --without-kame was given.
+  if test "${with_kame+set}" = set; then
+    withval="$with_kame"
+--- 7668,7674 ----
+  # This is done before other IPv6 linking tests to LIBS is properly set.
+  #
+  echo $ac_n "checking for Kame IPv6 support""... $ac_c" 1>&6
+! echo "configure:7672: checking for Kame IPv6 support" >&5
+  # Check whether --with-kame or --without-kame was given.
+  if test "${with_kame+set}" = set; then
+    withval="$with_kame"
+***************
+*** 7751,7759 ****
+               LWRES_PLATFORM_HAVEIPV6="#define LWRES_PLATFORM_HAVEIPV6 1"
+  
+               echo $ac_n "checking for in6_addr""... $ac_c" 1>&6
+! echo "configure:7755: checking for in6_addr" >&5
+               cat > conftest.$ac_ext <<EOF
+! #line 7757 "configure"
+  #include "confdefs.h"
+  
+  #include <sys/types.h>
+--- 7759,7767 ----
+               LWRES_PLATFORM_HAVEIPV6="#define LWRES_PLATFORM_HAVEIPV6 1"
+  
+               echo $ac_n "checking for in6_addr""... $ac_c" 1>&6
+! echo "configure:7763: checking for in6_addr" >&5
+               cat > conftest.$ac_ext <<EOF
+! #line 7765 "configure"
+  #include "confdefs.h"
+  
+  #include <sys/types.h>
+***************
+*** 7766,7772 ****
+  struct in6_addr in6; return (0);
+  ; return 0; }
+  EOF
+! if { (eval echo configure:7770: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+    rm -rf conftest*
+    echo "$ac_t""yes" 1>&6
+                ISC_PLATFORM_HAVEINADDR6="#undef ISC_PLATFORM_HAVEINADDR6"
+--- 7774,7780 ----
+  struct in6_addr in6; return (0);
+  ; return 0; }
+  EOF
+! if { (eval echo configure:7778: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+    rm -rf conftest*
+    echo "$ac_t""yes" 1>&6
+                ISC_PLATFORM_HAVEINADDR6="#undef ISC_PLATFORM_HAVEINADDR6"
+***************
+*** 7784,7792 ****
+  rm -f conftest*
+  
+               echo $ac_n "checking for in6addr_any""... $ac_c" 1>&6
+! echo "configure:7788: checking for in6addr_any" >&5
+               cat > conftest.$ac_ext <<EOF
+! #line 7790 "configure"
+  #include "confdefs.h"
+  
+  #include <sys/types.h>
+--- 7792,7800 ----
+  rm -f conftest*
+  
+               echo $ac_n "checking for in6addr_any""... $ac_c" 1>&6
+! echo "configure:7796: checking for in6addr_any" >&5
+               cat > conftest.$ac_ext <<EOF
+! #line 7798 "configure"
+  #include "confdefs.h"
+  
+  #include <sys/types.h>
+***************
+*** 7800,7806 ****
+  struct in6_addr in6; in6 = in6addr_any; return (in6.s6_addr[0]);
+  ; return 0; }
+  EOF
+! if { (eval echo configure:7804: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+    rm -rf conftest*
+    echo "$ac_t""yes" 1>&6
+                        ISC_PLATFORM_NEEDIN6ADDRANY="#undef ISC_PLATFORM_NEEDIN6ADDRANY"
+--- 7808,7814 ----
+  struct in6_addr in6; in6 = in6addr_any; return (in6.s6_addr[0]);
+  ; return 0; }
+  EOF
+! if { (eval echo configure:7812: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+    rm -rf conftest*
+    echo "$ac_t""yes" 1>&6
+                        ISC_PLATFORM_NEEDIN6ADDRANY="#undef ISC_PLATFORM_NEEDIN6ADDRANY"
+***************
+*** 7816,7824 ****
+  rm -f conftest*
+  
+               echo $ac_n "checking for in6addr_loopback""... $ac_c" 1>&6
+! echo "configure:7820: checking for in6addr_loopback" >&5
+               cat > conftest.$ac_ext <<EOF
+! #line 7822 "configure"
+  #include "confdefs.h"
+  
+  #include <sys/types.h>
+--- 7824,7832 ----
+  rm -f conftest*
+  
+               echo $ac_n "checking for in6addr_loopback""... $ac_c" 1>&6
+! echo "configure:7828: checking for in6addr_loopback" >&5
+               cat > conftest.$ac_ext <<EOF
+! #line 7830 "configure"
+  #include "confdefs.h"
+  
+  #include <sys/types.h>
+***************
+*** 7832,7838 ****
+  struct in6_addr in6; in6 = in6addr_loopback; return (in6.s6_addr[0]);
+  ; return 0; }
+  EOF
+! if { (eval echo configure:7836: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+    rm -rf conftest*
+    echo "$ac_t""yes" 1>&6
+                        ISC_PLATFORM_NEEDIN6ADDRLOOPBACK="#undef ISC_PLATFORM_NEEDIN6ADDRLOOPBACK"
+--- 7840,7846 ----
+  struct in6_addr in6; in6 = in6addr_loopback; return (in6.s6_addr[0]);
+  ; return 0; }
+  EOF
+! if { (eval echo configure:7844: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+    rm -rf conftest*
+    echo "$ac_t""yes" 1>&6
+                        ISC_PLATFORM_NEEDIN6ADDRLOOPBACK="#undef ISC_PLATFORM_NEEDIN6ADDRLOOPBACK"
+***************
+*** 7848,7856 ****
+  rm -f conftest*
+  
+               echo $ac_n "checking for sin6_scope_id in struct sockaddr_in6""... $ac_c" 1>&6
+! echo "configure:7852: checking for sin6_scope_id in struct sockaddr_in6" >&5
+               cat > conftest.$ac_ext <<EOF
+! #line 7854 "configure"
+  #include "confdefs.h"
+  
+  #include <sys/types.h>
+--- 7856,7864 ----
+  rm -f conftest*
+  
+               echo $ac_n "checking for sin6_scope_id in struct sockaddr_in6""... $ac_c" 1>&6
+! echo "configure:7860: checking for sin6_scope_id in struct sockaddr_in6" >&5
+               cat > conftest.$ac_ext <<EOF
+! #line 7862 "configure"
+  #include "confdefs.h"
+  
+  #include <sys/types.h>
+***************
+*** 7863,7869 ****
+  struct sockaddr_in6 xyzzy; xyzzy.sin6_scope_id = 0; return (0);
+  ; return 0; }
+  EOF
+! if { (eval echo configure:7867: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+    rm -rf conftest*
+    echo "$ac_t""yes" 1>&6
+                        result="#define LWRES_HAVE_SIN6_SCOPE_ID 1"
+--- 7871,7877 ----
+  struct sockaddr_in6 xyzzy; xyzzy.sin6_scope_id = 0; return (0);
+  ; return 0; }
+  EOF
+! if { (eval echo configure:7875: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+    rm -rf conftest*
+    echo "$ac_t""yes" 1>&6
+                        result="#define LWRES_HAVE_SIN6_SCOPE_ID 1"
+***************
+*** 7878,7886 ****
+               LWRES_HAVE_SIN6_SCOPE_ID="$result"
+  
+               echo $ac_n "checking for in6_pktinfo""... $ac_c" 1>&6
+! echo "configure:7882: checking for in6_pktinfo" >&5
+               cat > conftest.$ac_ext <<EOF
+! #line 7884 "configure"
+  #include "confdefs.h"
+  
+  #include <sys/types.h>
+--- 7886,7894 ----
+               LWRES_HAVE_SIN6_SCOPE_ID="$result"
+  
+               echo $ac_n "checking for in6_pktinfo""... $ac_c" 1>&6
+! echo "configure:7890: checking for in6_pktinfo" >&5
+               cat > conftest.$ac_ext <<EOF
+! #line 7892 "configure"
+  #include "confdefs.h"
+  
+  #include <sys/types.h>
+***************
+*** 7893,7899 ****
+  struct in6_pktinfo xyzzy; return (0);
+  ; return 0; }
+  EOF
+! if { (eval echo configure:7897: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+    rm -rf conftest*
+    echo "$ac_t""yes" 1>&6
+                        ISC_PLATFORM_HAVEIN6PKTINFO="#define ISC_PLATFORM_HAVEIN6PKTINFO 1"
+--- 7901,7907 ----
+  struct in6_pktinfo xyzzy; return (0);
+  ; return 0; }
+  EOF
+! if { (eval echo configure:7905: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+    rm -rf conftest*
+    echo "$ac_t""yes" 1>&6
+                        ISC_PLATFORM_HAVEIN6PKTINFO="#define ISC_PLATFORM_HAVEIN6PKTINFO 1"
+***************
+*** 7948,7956 ****
+  #
+  
+  echo $ac_n "checking for inet_ntop""... $ac_c" 1>&6
+! echo "configure:7952: checking for inet_ntop" >&5
+  cat > conftest.$ac_ext <<EOF
+! #line 7954 "configure"
+  #include "confdefs.h"
+  
+  #include <sys/types.h>
+--- 7956,7964 ----
+  #
+  
+  echo $ac_n "checking for inet_ntop""... $ac_c" 1>&6
+! echo "configure:7960: checking for inet_ntop" >&5
+  cat > conftest.$ac_ext <<EOF
+! #line 7962 "configure"
+  #include "confdefs.h"
+  
+  #include <sys/types.h>
+***************
+*** 7960,7966 ****
+  inet_ntop(0, 0, 0, 0); return (0);
+  ; return 0; }
+  EOF
+! if { (eval echo configure:7964: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+    rm -rf conftest*
+    echo "$ac_t""yes" 1>&6
+          ISC_PLATFORM_NEEDNTOP="#undef ISC_PLATFORM_NEEDNTOP"
+--- 7968,7974 ----
+  inet_ntop(0, 0, 0, 0); return (0);
+  ; return 0; }
+  EOF
+! if { (eval echo configure:7972: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+    rm -rf conftest*
+    echo "$ac_t""yes" 1>&6
+          ISC_PLATFORM_NEEDNTOP="#undef ISC_PLATFORM_NEEDNTOP"
+***************
+*** 7981,7993 ****
+  # zeros should also be rejected.
+  
+  echo $ac_n "checking for inet_pton""... $ac_c" 1>&6
+! echo "configure:7985: checking for inet_pton" >&5
+  if test "$cross_compiling" = yes; then
+    echo "$ac_t""assuming target platform has working inet_pton" 1>&6
+       ISC_PLATFORM_NEEDPTON="#undef ISC_PLATFORM_NEEDPTON"
+  else
+    cat > conftest.$ac_ext <<EOF
+! #line 7991 "configure"
+  #include "confdefs.h"
+  
+  #include <sys/types.h>
+--- 7989,8001 ----
+  # zeros should also be rejected.
+  
+  echo $ac_n "checking for inet_pton""... $ac_c" 1>&6
+! echo "configure:7993: checking for inet_pton" >&5
+  if test "$cross_compiling" = yes; then
+    echo "$ac_t""assuming target platform has working inet_pton" 1>&6
+       ISC_PLATFORM_NEEDPTON="#undef ISC_PLATFORM_NEEDPTON"
+  else
+    cat > conftest.$ac_ext <<EOF
+! #line 7999 "configure"
+  #include "confdefs.h"
+  
+  #include <sys/types.h>
+***************
+*** 7997,8003 ****
+  main() { char a[4]; return (inet_pton(AF_INET, "1.2.3", a) == 1 ? 1 :
+                           inet_pton(AF_INET, "1.2.3.04", a) == 1 ? 1 : 0); }
+  EOF
+! if { (eval echo configure:8001: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+  then
+    echo "$ac_t""yes" 1>&6
+          ISC_PLATFORM_NEEDPTON="#undef ISC_PLATFORM_NEEDPTON"
+--- 8005,8011 ----
+  main() { char a[4]; return (inet_pton(AF_INET, "1.2.3", a) == 1 ? 1 :
+                           inet_pton(AF_INET, "1.2.3.04", a) == 1 ? 1 : 0); }
+  EOF
+! if { (eval echo configure:8009: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+  then
+    echo "$ac_t""yes" 1>&6
+          ISC_PLATFORM_NEEDPTON="#undef ISC_PLATFORM_NEEDPTON"
+***************
+*** 8015,8023 ****
+  
+  
+  echo $ac_n "checking for inet_aton""... $ac_c" 1>&6
+! echo "configure:8019: checking for inet_aton" >&5
+  cat > conftest.$ac_ext <<EOF
+! #line 8021 "configure"
+  #include "confdefs.h"
+  
+  #include <sys/types.h>
+--- 8023,8031 ----
+  
+  
+  echo $ac_n "checking for inet_aton""... $ac_c" 1>&6
+! echo "configure:8027: checking for inet_aton" >&5
+  cat > conftest.$ac_ext <<EOF
+! #line 8029 "configure"
+  #include "confdefs.h"
+  
+  #include <sys/types.h>
+***************
+*** 8027,8033 ****
+  struct in_addr in; inet_aton(0, &in); return (0);
+  ; return 0; }
+  EOF
+! if { (eval echo configure:8031: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+    rm -rf conftest*
+    echo "$ac_t""yes" 1>&6
+          ISC_PLATFORM_NEEDATON="#undef ISC_PLATFORM_NEEDATON"
+--- 8035,8041 ----
+  struct in_addr in; inet_aton(0, &in); return (0);
+  ; return 0; }
+  EOF
+! if { (eval echo configure:8039: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+    rm -rf conftest*
+    echo "$ac_t""yes" 1>&6
+          ISC_PLATFORM_NEEDATON="#undef ISC_PLATFORM_NEEDATON"
+***************
+*** 8060,8068 ****
+  esac
+  
+  echo $ac_n "checking for sa_len in struct sockaddr""... $ac_c" 1>&6
+! echo "configure:8064: checking for sa_len in struct sockaddr" >&5
+  cat > conftest.$ac_ext <<EOF
+! #line 8066 "configure"
+  #include "confdefs.h"
+  
+  #include <sys/types.h>
+--- 8068,8076 ----
+  esac
+  
+  echo $ac_n "checking for sa_len in struct sockaddr""... $ac_c" 1>&6
+! echo "configure:8072: checking for sa_len in struct sockaddr" >&5
+  cat > conftest.$ac_ext <<EOF
+! #line 8074 "configure"
+  #include "confdefs.h"
+  
+  #include <sys/types.h>
+***************
+*** 8071,8077 ****
+  struct sockaddr sa; sa.sa_len = 0; return (0);
+  ; return 0; }
+  EOF
+! if { (eval echo configure:8075: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+    rm -rf conftest*
+    echo "$ac_t""yes" 1>&6
+       ISC_PLATFORM_HAVESALEN="#define ISC_PLATFORM_HAVESALEN 1"
+--- 8079,8085 ----
+  struct sockaddr sa; sa.sa_len = 0; return (0);
+  ; return 0; }
+  EOF
+! if { (eval echo configure:8083: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+    rm -rf conftest*
+    echo "$ac_t""yes" 1>&6
+       ISC_PLATFORM_HAVESALEN="#define ISC_PLATFORM_HAVESALEN 1"
+***************
+*** 8092,8100 ****
+  # Look for a 4.4BSD or 4.3BSD struct msghdr
+  #
+  echo $ac_n "checking for struct msghdr flavor""... $ac_c" 1>&6
+! echo "configure:8096: checking for struct msghdr flavor" >&5
+  cat > conftest.$ac_ext <<EOF
+! #line 8098 "configure"
+  #include "confdefs.h"
+  
+  #include <sys/types.h>
+--- 8100,8108 ----
+  # Look for a 4.4BSD or 4.3BSD struct msghdr
+  #
+  echo $ac_n "checking for struct msghdr flavor""... $ac_c" 1>&6
+! echo "configure:8104: checking for struct msghdr flavor" >&5
+  cat > conftest.$ac_ext <<EOF
+! #line 8106 "configure"
+  #include "confdefs.h"
+  
+  #include <sys/types.h>
+***************
+*** 8103,8109 ****
+  struct msghdr msg; msg.msg_flags = 0; return (0);
+  ; return 0; }
+  EOF
+! if { (eval echo configure:8107: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+    rm -rf conftest*
+    echo "$ac_t""4.4BSD" 1>&6
+       ISC_PLATFORM_MSGHDRFLAVOR="#define ISC_NET_BSD44MSGHDR 1"
+--- 8111,8117 ----
+  struct msghdr msg; msg.msg_flags = 0; return (0);
+  ; return 0; }
+  EOF
+! if { (eval echo configure:8115: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+    rm -rf conftest*
+    echo "$ac_t""4.4BSD" 1>&6
+       ISC_PLATFORM_MSGHDRFLAVOR="#define ISC_NET_BSD44MSGHDR 1"
+***************
+*** 8121,8129 ****
+  # Look for in_port_t.
+  #
+  echo $ac_n "checking for type in_port_t""... $ac_c" 1>&6
+! echo "configure:8125: checking for type in_port_t" >&5
+  cat > conftest.$ac_ext <<EOF
+! #line 8127 "configure"
+  #include "confdefs.h"
+  
+  #include <sys/types.h>
+--- 8129,8137 ----
+  # Look for in_port_t.
+  #
+  echo $ac_n "checking for type in_port_t""... $ac_c" 1>&6
+! echo "configure:8133: checking for type in_port_t" >&5
+  cat > conftest.$ac_ext <<EOF
+! #line 8135 "configure"
+  #include "confdefs.h"
+  
+  #include <sys/types.h>
+***************
+*** 8132,8138 ****
+  in_port_t port = 25; return (0);
+  ; return 0; }
+  EOF
+! if { (eval echo configure:8136: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+    rm -rf conftest*
+    echo "$ac_t""yes" 1>&6
+       ISC_PLATFORM_NEEDPORTT="#undef ISC_PLATFORM_NEEDPORTT"
+--- 8140,8146 ----
+  in_port_t port = 25; return (0);
+  ; return 0; }
+  EOF
+! if { (eval echo configure:8144: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+    rm -rf conftest*
+    echo "$ac_t""yes" 1>&6
+       ISC_PLATFORM_NEEDPORTT="#undef ISC_PLATFORM_NEEDPORTT"
+***************
+*** 8150,8158 ****
+  # Check for addrinfo
+  #
+  echo $ac_n "checking for struct addrinfo""... $ac_c" 1>&6
+! echo "configure:8154: checking for struct addrinfo" >&5
+  cat > conftest.$ac_ext <<EOF
+! #line 8156 "configure"
+  #include "confdefs.h"
+  
+  #include <netdb.h>
+--- 8158,8166 ----
+  # Check for addrinfo
+  #
+  echo $ac_n "checking for struct addrinfo""... $ac_c" 1>&6
+! echo "configure:8162: checking for struct addrinfo" >&5
+  cat > conftest.$ac_ext <<EOF
+! #line 8164 "configure"
+  #include "confdefs.h"
+  
+  #include <netdb.h>
+***************
+*** 8160,8166 ****
+  struct addrinfo a; return (0);
+  ; return 0; }
+  EOF
+! if { (eval echo configure:8164: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+    rm -rf conftest*
+    echo "$ac_t""yes" 1>&6
+       ISC_LWRES_NEEDADDRINFO="#undef ISC_LWRES_NEEDADDRINFO"
+--- 8168,8174 ----
+  struct addrinfo a; return (0);
+  ; return 0; }
+  EOF
+! if { (eval echo configure:8172: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+    rm -rf conftest*
+    echo "$ac_t""yes" 1>&6
+       ISC_LWRES_NEEDADDRINFO="#undef ISC_LWRES_NEEDADDRINFO"
+***************
+*** 8182,8190 ****
+  # Check for rrsetinfo
+  #
+  echo $ac_n "checking for struct rrsetinfo""... $ac_c" 1>&6
+! echo "configure:8186: checking for struct rrsetinfo" >&5
+  cat > conftest.$ac_ext <<EOF
+! #line 8188 "configure"
+  #include "confdefs.h"
+  
+  #include <netdb.h>
+--- 8190,8198 ----
+  # Check for rrsetinfo
+  #
+  echo $ac_n "checking for struct rrsetinfo""... $ac_c" 1>&6
+! echo "configure:8194: checking for struct rrsetinfo" >&5
+  cat > conftest.$ac_ext <<EOF
+! #line 8196 "configure"
+  #include "confdefs.h"
+  
+  #include <netdb.h>
+***************
+*** 8192,8198 ****
+  struct rrsetinfo r; return (0);
+  ; return 0; }
+  EOF
+! if { (eval echo configure:8196: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+    rm -rf conftest*
+    echo "$ac_t""yes" 1>&6
+       ISC_LWRES_NEEDRRSETINFO="#undef ISC_LWRES_NEEDRRSETINFO"
+--- 8200,8206 ----
+  struct rrsetinfo r; return (0);
+  ; return 0; }
+  EOF
+! if { (eval echo configure:8204: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+    rm -rf conftest*
+    echo "$ac_t""yes" 1>&6
+       ISC_LWRES_NEEDRRSETINFO="#undef ISC_LWRES_NEEDRRSETINFO"
+***************
+*** 8207,8215 ****
+  
+  
+  echo $ac_n "checking for int sethostent""... $ac_c" 1>&6
+! echo "configure:8211: checking for int sethostent" >&5
+  cat > conftest.$ac_ext <<EOF
+! #line 8213 "configure"
+  #include "confdefs.h"
+  
+  #include <netdb.h>
+--- 8215,8223 ----
+  
+  
+  echo $ac_n "checking for int sethostent""... $ac_c" 1>&6
+! echo "configure:8219: checking for int sethostent" >&5
+  cat > conftest.$ac_ext <<EOF
+! #line 8221 "configure"
+  #include "confdefs.h"
+  
+  #include <netdb.h>
+***************
+*** 8217,8223 ****
+  int i = sethostent(0); return(0);
+  ; return 0; }
+  EOF
+! if { (eval echo configure:8221: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+    rm -rf conftest*
+    echo "$ac_t""yes" 1>&6
+       ISC_LWRES_SETHOSTENTINT="#define ISC_LWRES_SETHOSTENTINT 1"
+--- 8225,8231 ----
+  int i = sethostent(0); return(0);
+  ; return 0; }
+  EOF
+! if { (eval echo configure:8229: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+    rm -rf conftest*
+    echo "$ac_t""yes" 1>&6
+       ISC_LWRES_SETHOSTENTINT="#define ISC_LWRES_SETHOSTENTINT 1"
+***************
+*** 8232,8240 ****
+  
+  
+  echo $ac_n "checking for int endhostent""... $ac_c" 1>&6
+! echo "configure:8236: checking for int endhostent" >&5
+  cat > conftest.$ac_ext <<EOF
+! #line 8238 "configure"
+  #include "confdefs.h"
+  
+  #include <netdb.h>
+--- 8240,8248 ----
+  
+  
+  echo $ac_n "checking for int endhostent""... $ac_c" 1>&6
+! echo "configure:8244: checking for int endhostent" >&5
+  cat > conftest.$ac_ext <<EOF
+! #line 8246 "configure"
+  #include "confdefs.h"
+  
+  #include <netdb.h>
+***************
+*** 8242,8248 ****
+  int i = endhostent(); return(0);
+  ; return 0; }
+  EOF
+! if { (eval echo configure:8246: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+    rm -rf conftest*
+    echo "$ac_t""yes" 1>&6
+       ISC_LWRES_ENDHOSTENTINT="#define ISC_LWRES_ENDHOSTENTINT 1"
+--- 8250,8256 ----
+  int i = endhostent(); return(0);
+  ; return 0; }
+  EOF
+! if { (eval echo configure:8254: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+    rm -rf conftest*
+    echo "$ac_t""yes" 1>&6
+       ISC_LWRES_ENDHOSTENTINT="#define ISC_LWRES_ENDHOSTENTINT 1"
+***************
+*** 8257,8265 ****
+  
+  
+  echo $ac_n "checking for getnetbyaddr(in_addr_t, ...)""... $ac_c" 1>&6
+! echo "configure:8261: checking for getnetbyaddr(in_addr_t, ...)" >&5
+  cat > conftest.$ac_ext <<EOF
+! #line 8263 "configure"
+  #include "confdefs.h"
+  
+  #include <netdb.h>
+--- 8265,8273 ----
+  
+  
+  echo $ac_n "checking for getnetbyaddr(in_addr_t, ...)""... $ac_c" 1>&6
+! echo "configure:8269: checking for getnetbyaddr(in_addr_t, ...)" >&5
+  cat > conftest.$ac_ext <<EOF
+! #line 8271 "configure"
+  #include "confdefs.h"
+  
+  #include <netdb.h>
+***************
+*** 8268,8274 ****
+  
+  ; return 0; }
+  EOF
+! if { (eval echo configure:8272: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+    rm -rf conftest*
+    echo "$ac_t""yes" 1>&6
+       ISC_LWRES_GETNETBYADDRINADDR="#define ISC_LWRES_GETNETBYADDRINADDR 1"
+--- 8276,8282 ----
+  
+  ; return 0; }
+  EOF
+! if { (eval echo configure:8280: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+    rm -rf conftest*
+    echo "$ac_t""yes" 1>&6
+       ISC_LWRES_GETNETBYADDRINADDR="#define ISC_LWRES_GETNETBYADDRINADDR 1"
+***************
+*** 8283,8291 ****
+  
+  
+  echo $ac_n "checking for int setnetent""... $ac_c" 1>&6
+! echo "configure:8287: checking for int setnetent" >&5
+  cat > conftest.$ac_ext <<EOF
+! #line 8289 "configure"
+  #include "confdefs.h"
+  
+  #include <netdb.h>
+--- 8291,8299 ----
+  
+  
+  echo $ac_n "checking for int setnetent""... $ac_c" 1>&6
+! echo "configure:8295: checking for int setnetent" >&5
+  cat > conftest.$ac_ext <<EOF
+! #line 8297 "configure"
+  #include "confdefs.h"
+  
+  #include <netdb.h>
+***************
+*** 8293,8299 ****
+  int i = setnetent(0); return(0);
+  ; return 0; }
+  EOF
+! if { (eval echo configure:8297: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+    rm -rf conftest*
+    echo "$ac_t""yes" 1>&6
+       ISC_LWRES_SETNETENTINT="#define ISC_LWRES_SETNETENTINT 1"
+--- 8301,8307 ----
+  int i = setnetent(0); return(0);
+  ; return 0; }
+  EOF
+! if { (eval echo configure:8305: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+    rm -rf conftest*
+    echo "$ac_t""yes" 1>&6
+       ISC_LWRES_SETNETENTINT="#define ISC_LWRES_SETNETENTINT 1"
+***************
+*** 8308,8316 ****
+  
+  
+  echo $ac_n "checking for int endnetent""... $ac_c" 1>&6
+! echo "configure:8312: checking for int endnetent" >&5
+  cat > conftest.$ac_ext <<EOF
+! #line 8314 "configure"
+  #include "confdefs.h"
+  
+  #include <netdb.h>
+--- 8316,8324 ----
+  
+  
+  echo $ac_n "checking for int endnetent""... $ac_c" 1>&6
+! echo "configure:8320: checking for int endnetent" >&5
+  cat > conftest.$ac_ext <<EOF
+! #line 8322 "configure"
+  #include "confdefs.h"
+  
+  #include <netdb.h>
+***************
+*** 8318,8324 ****
+  int i = endnetent(); return(0);
+  ; return 0; }
+  EOF
+! if { (eval echo configure:8322: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+    rm -rf conftest*
+    echo "$ac_t""yes" 1>&6
+       ISC_LWRES_ENDNETENTINT="#define ISC_LWRES_ENDNETENTINT 1"
+--- 8326,8332 ----
+  int i = endnetent(); return(0);
+  ; return 0; }
+  EOF
+! if { (eval echo configure:8330: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+    rm -rf conftest*
+    echo "$ac_t""yes" 1>&6
+       ISC_LWRES_ENDNETENTINT="#define ISC_LWRES_ENDNETENTINT 1"
+***************
+*** 8333,8341 ****
+  
+  
+  echo $ac_n "checking for gethostbyaddr(const void *, size_t, ...)""... $ac_c" 1>&6
+! echo "configure:8337: checking for gethostbyaddr(const void *, size_t, ...)" >&5
+  cat > conftest.$ac_ext <<EOF
+! #line 8339 "configure"
+  #include "confdefs.h"
+  
+  #include <netdb.h>
+--- 8341,8349 ----
+  
+  
+  echo $ac_n "checking for gethostbyaddr(const void *, size_t, ...)""... $ac_c" 1>&6
+! echo "configure:8345: checking for gethostbyaddr(const void *, size_t, ...)" >&5
+  cat > conftest.$ac_ext <<EOF
+! #line 8347 "configure"
+  #include "confdefs.h"
+  
+  #include <netdb.h>
+***************
+*** 8344,8350 ****
+  return(0);
+  ; return 0; }
+  EOF
+! if { (eval echo configure:8348: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+    rm -rf conftest*
+    echo "$ac_t""yes" 1>&6
+       ISC_LWRES_GETHOSTBYADDRVOID="#define ISC_LWRES_GETHOSTBYADDRVOID 1"
+--- 8352,8358 ----
+  return(0);
+  ; return 0; }
+  EOF
+! if { (eval echo configure:8356: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+    rm -rf conftest*
+    echo "$ac_t""yes" 1>&6
+       ISC_LWRES_GETHOSTBYADDRVOID="#define ISC_LWRES_GETHOSTBYADDRVOID 1"
+***************
+*** 8359,8367 ****
+  
+  
+  echo $ac_n "checking for h_errno in netdb.h""... $ac_c" 1>&6
+! echo "configure:8363: checking for h_errno in netdb.h" >&5
+  cat > conftest.$ac_ext <<EOF
+! #line 8365 "configure"
+  #include "confdefs.h"
+  
+  #include <netdb.h>
+--- 8367,8375 ----
+  
+  
+  echo $ac_n "checking for h_errno in netdb.h""... $ac_c" 1>&6
+! echo "configure:8371: checking for h_errno in netdb.h" >&5
+  cat > conftest.$ac_ext <<EOF
+! #line 8373 "configure"
+  #include "confdefs.h"
+  
+  #include <netdb.h>
+***************
+*** 8369,8375 ****
+  h_errno = 1; return(0);
+  ; return 0; }
+  EOF
+! if { (eval echo configure:8373: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+    rm -rf conftest*
+    echo "$ac_t""yes" 1>&6
+       ISC_LWRES_NEEDHERRNO="#undef ISC_LWRES_NEEDHERRNO"
+--- 8377,8383 ----
+  h_errno = 1; return(0);
+  ; return 0; }
+  EOF
+! if { (eval echo configure:8381: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+    rm -rf conftest*
+    echo "$ac_t""yes" 1>&6
+       ISC_LWRES_NEEDHERRNO="#undef ISC_LWRES_NEEDHERRNO"
+***************
+*** 8384,8395 ****
+  
+  
+  echo $ac_n "checking for getipnodebyname""... $ac_c" 1>&6
+! echo "configure:8388: checking for getipnodebyname" >&5
+  if eval "test \"`echo '$''{'ac_cv_func_getipnodebyname'+set}'`\" = set"; then
+    echo $ac_n "(cached) $ac_c" 1>&6
+  else
+    cat > conftest.$ac_ext <<EOF
+! #line 8393 "configure"
+  #include "confdefs.h"
+  /* System header to define __stub macros and hopefully few prototypes,
+      which can conflict with char getipnodebyname(); below.  */
+--- 8392,8403 ----
+  
+  
+  echo $ac_n "checking for getipnodebyname""... $ac_c" 1>&6
+! echo "configure:8396: checking for getipnodebyname" >&5
+  if eval "test \"`echo '$''{'ac_cv_func_getipnodebyname'+set}'`\" = set"; then
+    echo $ac_n "(cached) $ac_c" 1>&6
+  else
+    cat > conftest.$ac_ext <<EOF
+! #line 8401 "configure"
+  #include "confdefs.h"
+  /* System header to define __stub macros and hopefully few prototypes,
+      which can conflict with char getipnodebyname(); below.  */
+***************
+*** 8412,8418 ****
+  
+  ; return 0; }
+  EOF
+! if { (eval echo configure:8416: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+    rm -rf conftest*
+    eval "ac_cv_func_getipnodebyname=yes"
+  else
+--- 8420,8426 ----
+  
+  ; return 0; }
+  EOF
+! if { (eval echo configure:8424: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+    rm -rf conftest*
+    eval "ac_cv_func_getipnodebyname=yes"
+  else
+***************
+*** 8433,8444 ****
+  fi
+  
+  echo $ac_n "checking for getnameinfo""... $ac_c" 1>&6
+! echo "configure:8437: checking for getnameinfo" >&5
+  if eval "test \"`echo '$''{'ac_cv_func_getnameinfo'+set}'`\" = set"; then
+    echo $ac_n "(cached) $ac_c" 1>&6
+  else
+    cat > conftest.$ac_ext <<EOF
+! #line 8442 "configure"
+  #include "confdefs.h"
+  /* System header to define __stub macros and hopefully few prototypes,
+      which can conflict with char getnameinfo(); below.  */
+--- 8441,8452 ----
+  fi
+  
+  echo $ac_n "checking for getnameinfo""... $ac_c" 1>&6
+! echo "configure:8445: checking for getnameinfo" >&5
+  if eval "test \"`echo '$''{'ac_cv_func_getnameinfo'+set}'`\" = set"; then
+    echo $ac_n "(cached) $ac_c" 1>&6
+  else
+    cat > conftest.$ac_ext <<EOF
+! #line 8450 "configure"
+  #include "confdefs.h"
+  /* System header to define __stub macros and hopefully few prototypes,
+      which can conflict with char getnameinfo(); below.  */
+***************
+*** 8461,8467 ****
+  
+  ; return 0; }
+  EOF
+! if { (eval echo configure:8465: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+    rm -rf conftest*
+    eval "ac_cv_func_getnameinfo=yes"
+  else
+--- 8469,8475 ----
+  
+  ; return 0; }
+  EOF
+! if { (eval echo configure:8473: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+    rm -rf conftest*
+    eval "ac_cv_func_getnameinfo=yes"
+  else
+***************
+*** 8482,8493 ****
+  fi
+  
+  echo $ac_n "checking for getaddrinfo""... $ac_c" 1>&6
+! echo "configure:8486: checking for getaddrinfo" >&5
+  if eval "test \"`echo '$''{'ac_cv_func_getaddrinfo'+set}'`\" = set"; then
+    echo $ac_n "(cached) $ac_c" 1>&6
+  else
+    cat > conftest.$ac_ext <<EOF
+! #line 8491 "configure"
+  #include "confdefs.h"
+  /* System header to define __stub macros and hopefully few prototypes,
+      which can conflict with char getaddrinfo(); below.  */
+--- 8490,8501 ----
+  fi
+  
+  echo $ac_n "checking for getaddrinfo""... $ac_c" 1>&6
+! echo "configure:8494: checking for getaddrinfo" >&5
+  if eval "test \"`echo '$''{'ac_cv_func_getaddrinfo'+set}'`\" = set"; then
+    echo $ac_n "(cached) $ac_c" 1>&6
+  else
+    cat > conftest.$ac_ext <<EOF
+! #line 8499 "configure"
+  #include "confdefs.h"
+  /* System header to define __stub macros and hopefully few prototypes,
+      which can conflict with char getaddrinfo(); below.  */
+***************
+*** 8510,8516 ****
+  
+  ; return 0; }
+  EOF
+! if { (eval echo configure:8514: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+    rm -rf conftest*
+    eval "ac_cv_func_getaddrinfo=yes"
+  else
+--- 8518,8524 ----
+  
+  ; return 0; }
+  EOF
+! if { (eval echo configure:8522: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+    rm -rf conftest*
+    eval "ac_cv_func_getaddrinfo=yes"
+  else
+***************
+*** 8535,8546 ****
+  fi
+  
+  echo $ac_n "checking for gai_strerror""... $ac_c" 1>&6
+! echo "configure:8539: checking for gai_strerror" >&5
+  if eval "test \"`echo '$''{'ac_cv_func_gai_strerror'+set}'`\" = set"; then
+    echo $ac_n "(cached) $ac_c" 1>&6
+  else
+    cat > conftest.$ac_ext <<EOF
+! #line 8544 "configure"
+  #include "confdefs.h"
+  /* System header to define __stub macros and hopefully few prototypes,
+      which can conflict with char gai_strerror(); below.  */
+--- 8543,8554 ----
+  fi
+  
+  echo $ac_n "checking for gai_strerror""... $ac_c" 1>&6
+! echo "configure:8547: checking for gai_strerror" >&5
+  if eval "test \"`echo '$''{'ac_cv_func_gai_strerror'+set}'`\" = set"; then
+    echo $ac_n "(cached) $ac_c" 1>&6
+  else
+    cat > conftest.$ac_ext <<EOF
+! #line 8552 "configure"
+  #include "confdefs.h"
+  /* System header to define __stub macros and hopefully few prototypes,
+      which can conflict with char gai_strerror(); below.  */
+***************
+*** 8563,8569 ****
+  
+  ; return 0; }
+  EOF
+! if { (eval echo configure:8567: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+    rm -rf conftest*
+    eval "ac_cv_func_gai_strerror=yes"
+  else
+--- 8571,8577 ----
+  
+  ; return 0; }
+  EOF
+! if { (eval echo configure:8575: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+    rm -rf conftest*
+    eval "ac_cv_func_gai_strerror=yes"
+  else
+***************
+*** 8593,8601 ****
+  # Look for a sysctl call to get the list of network interfaces.
+  #
+  echo $ac_n "checking for interface list sysctl""... $ac_c" 1>&6
+! echo "configure:8597: checking for interface list sysctl" >&5
+  cat > conftest.$ac_ext <<EOF
+! #line 8599 "configure"
+  #include "confdefs.h"
+  
+  #include <sys/param.h>
+--- 8601,8609 ----
+  # Look for a sysctl call to get the list of network interfaces.
+  #
+  echo $ac_n "checking for interface list sysctl""... $ac_c" 1>&6
+! echo "configure:8605: checking for interface list sysctl" >&5
+  cat > conftest.$ac_ext <<EOF
+! #line 8607 "configure"
+  #include "confdefs.h"
+  
+  #include <sys/param.h>
+***************
+*** 8625,8636 ****
+  # Check for some other useful functions that are not ever-present.
+  #
+  echo $ac_n "checking for strsep""... $ac_c" 1>&6
+! echo "configure:8629: checking for strsep" >&5
+  if eval "test \"`echo '$''{'ac_cv_func_strsep'+set}'`\" = set"; then
+    echo $ac_n "(cached) $ac_c" 1>&6
+  else
+    cat > conftest.$ac_ext <<EOF
+! #line 8634 "configure"
+  #include "confdefs.h"
+  /* System header to define __stub macros and hopefully few prototypes,
+      which can conflict with char strsep(); below.  */
+--- 8633,8644 ----
+  # Check for some other useful functions that are not ever-present.
+  #
+  echo $ac_n "checking for strsep""... $ac_c" 1>&6
+! echo "configure:8637: checking for strsep" >&5
+  if eval "test \"`echo '$''{'ac_cv_func_strsep'+set}'`\" = set"; then
+    echo $ac_n "(cached) $ac_c" 1>&6
+  else
+    cat > conftest.$ac_ext <<EOF
+! #line 8642 "configure"
+  #include "confdefs.h"
+  /* System header to define __stub macros and hopefully few prototypes,
+      which can conflict with char strsep(); below.  */
+***************
+*** 8653,8659 ****
+  
+  ; return 0; }
+  EOF
+! if { (eval echo configure:8657: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+    rm -rf conftest*
+    eval "ac_cv_func_strsep=yes"
+  else
+--- 8661,8667 ----
+  
+  ; return 0; }
+  EOF
+! if { (eval echo configure:8665: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+    rm -rf conftest*
+    eval "ac_cv_func_strsep=yes"
+  else
+***************
+*** 8674,8685 ****
+  fi
+  
+  echo $ac_n "checking for vsnprintf""... $ac_c" 1>&6
+! echo "configure:8678: checking for vsnprintf" >&5
+  if eval "test \"`echo '$''{'ac_cv_func_vsnprintf'+set}'`\" = set"; then
+    echo $ac_n "(cached) $ac_c" 1>&6
+  else
+    cat > conftest.$ac_ext <<EOF
+! #line 8683 "configure"
+  #include "confdefs.h"
+  /* System header to define __stub macros and hopefully few prototypes,
+      which can conflict with char vsnprintf(); below.  */
+--- 8682,8693 ----
+  fi
+  
+  echo $ac_n "checking for vsnprintf""... $ac_c" 1>&6
+! echo "configure:8686: checking for vsnprintf" >&5
+  if eval "test \"`echo '$''{'ac_cv_func_vsnprintf'+set}'`\" = set"; then
+    echo $ac_n "(cached) $ac_c" 1>&6
+  else
+    cat > conftest.$ac_ext <<EOF
+! #line 8691 "configure"
+  #include "confdefs.h"
+  /* System header to define __stub macros and hopefully few prototypes,
+      which can conflict with char vsnprintf(); below.  */
+***************
+*** 8702,8708 ****
+  
+  ; return 0; }
+  EOF
+! if { (eval echo configure:8706: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+    rm -rf conftest*
+    eval "ac_cv_func_vsnprintf=yes"
+  else
+--- 8710,8716 ----
+  
+  ; return 0; }
+  EOF
+! if { (eval echo configure:8714: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+    rm -rf conftest*
+    eval "ac_cv_func_vsnprintf=yes"
+  else
+***************
+*** 8727,8738 ****
+  
+  
+  echo $ac_n "checking for strerror""... $ac_c" 1>&6
+! echo "configure:8731: checking for strerror" >&5
+  if eval "test \"`echo '$''{'ac_cv_func_strerror'+set}'`\" = set"; then
+    echo $ac_n "(cached) $ac_c" 1>&6
+  else
+    cat > conftest.$ac_ext <<EOF
+! #line 8736 "configure"
+  #include "confdefs.h"
+  /* System header to define __stub macros and hopefully few prototypes,
+      which can conflict with char strerror(); below.  */
+--- 8735,8746 ----
+  
+  
+  echo $ac_n "checking for strerror""... $ac_c" 1>&6
+! echo "configure:8739: checking for strerror" >&5
+  if eval "test \"`echo '$''{'ac_cv_func_strerror'+set}'`\" = set"; then
+    echo $ac_n "(cached) $ac_c" 1>&6
+  else
+    cat > conftest.$ac_ext <<EOF
+! #line 8744 "configure"
+  #include "confdefs.h"
+  /* System header to define __stub macros and hopefully few prototypes,
+      which can conflict with char strerror(); below.  */
+***************
+*** 8755,8761 ****
+  
+  ; return 0; }
+  EOF
+! if { (eval echo configure:8759: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+    rm -rf conftest*
+    eval "ac_cv_func_strerror=yes"
+  else
+--- 8763,8769 ----
+  
+  ; return 0; }
+  EOF
+! if { (eval echo configure:8767: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+    rm -rf conftest*
+    eval "ac_cv_func_strerror=yes"
+  else
+***************
+*** 8789,8805 ****
+  # but that's defined elsewhere since we don't use configure on Win32.
+  #
+  echo $ac_n "checking printf format modifier for 64-bit integers""... $ac_c" 1>&6
+! echo "configure:8793: checking printf format modifier for 64-bit integers" >&5
+  if test "$cross_compiling" = yes; then
+    echo "$ac_t""assuming target platform uses ll" 1>&6
+       ISC_PLATFORM_QUADFORMAT='#define ISC_PLATFORM_QUADFORMAT "ll"'
+  else
+    cat > conftest.$ac_ext <<EOF
+! #line 8799 "configure"
+  #include "confdefs.h"
+  main() { exit(!(sizeof(long long int) == sizeof(long int))); }
+  EOF
+! if { (eval echo configure:8803: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+  then
+    echo "$ac_t""l" 1>&6
+       ISC_PLATFORM_QUADFORMAT='#define ISC_PLATFORM_QUADFORMAT "l"'
+--- 8797,8813 ----
+  # but that's defined elsewhere since we don't use configure on Win32.
+  #
+  echo $ac_n "checking printf format modifier for 64-bit integers""... $ac_c" 1>&6
+! echo "configure:8801: checking printf format modifier for 64-bit integers" >&5
+  if test "$cross_compiling" = yes; then
+    echo "$ac_t""assuming target platform uses ll" 1>&6
+       ISC_PLATFORM_QUADFORMAT='#define ISC_PLATFORM_QUADFORMAT "ll"'
+  else
+    cat > conftest.$ac_ext <<EOF
+! #line 8807 "configure"
+  #include "confdefs.h"
+  main() { exit(!(sizeof(long long int) == sizeof(long int))); }
+  EOF
+! if { (eval echo configure:8811: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+  then
+    echo "$ac_t""l" 1>&6
+       ISC_PLATFORM_QUADFORMAT='#define ISC_PLATFORM_QUADFORMAT "l"'
+***************
+*** 8819,8830 ****
+  # Security Stuff
+  #
+  echo $ac_n "checking for chroot""... $ac_c" 1>&6
+! echo "configure:8823: checking for chroot" >&5
+  if eval "test \"`echo '$''{'ac_cv_func_chroot'+set}'`\" = set"; then
+    echo $ac_n "(cached) $ac_c" 1>&6
+  else
+    cat > conftest.$ac_ext <<EOF
+! #line 8828 "configure"
+  #include "confdefs.h"
+  /* System header to define __stub macros and hopefully few prototypes,
+      which can conflict with char chroot(); below.  */
+--- 8827,8838 ----
+  # Security Stuff
+  #
+  echo $ac_n "checking for chroot""... $ac_c" 1>&6
+! echo "configure:8831: checking for chroot" >&5
+  if eval "test \"`echo '$''{'ac_cv_func_chroot'+set}'`\" = set"; then
+    echo $ac_n "(cached) $ac_c" 1>&6
+  else
+    cat > conftest.$ac_ext <<EOF
+! #line 8836 "configure"
+  #include "confdefs.h"
+  /* System header to define __stub macros and hopefully few prototypes,
+      which can conflict with char chroot(); below.  */
+***************
+*** 8847,8853 ****
+  
+  ; return 0; }
+  EOF
+! if { (eval echo configure:8851: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+    rm -rf conftest*
+    eval "ac_cv_func_chroot=yes"
+  else
+--- 8855,8861 ----
+  
+  ; return 0; }
+  EOF
+! if { (eval echo configure:8859: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+    rm -rf conftest*
+    eval "ac_cv_func_chroot=yes"
+  else
+***************
+*** 8881,8897 ****
+  do
+  ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
+  echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
+! echo "configure:8885: checking for $ac_hdr" >&5
+  if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
+    echo $ac_n "(cached) $ac_c" 1>&6
+  else
+    cat > conftest.$ac_ext <<EOF
+! #line 8890 "configure"
+  #include "confdefs.h"
+  #include <$ac_hdr>
+  EOF
+  ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
+! { (eval echo configure:8895: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+  ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
+  if test -z "$ac_err"; then
+    rm -rf conftest*
+--- 8889,8905 ----
+  do
+  ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
+  echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
+! echo "configure:8893: checking for $ac_hdr" >&5
+  if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
+    echo $ac_n "(cached) $ac_c" 1>&6
+  else
+    cat > conftest.$ac_ext <<EOF
+! #line 8898 "configure"
+  #include "confdefs.h"
+  #include <$ac_hdr>
+  EOF
+  ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
+! { (eval echo configure:8903: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+  ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
+  if test -z "$ac_err"; then
+    rm -rf conftest*
+***************
+*** 8925,8941 ****
+  do
+  ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
+  echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
+! echo "configure:8929: checking for $ac_hdr" >&5
+  if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
+    echo $ac_n "(cached) $ac_c" 1>&6
+  else
+    cat > conftest.$ac_ext <<EOF
+! #line 8934 "configure"
+  #include "confdefs.h"
+  #include <$ac_hdr>
+  EOF
+  ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
+! { (eval echo configure:8939: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+  ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
+  if test -z "$ac_err"; then
+    rm -rf conftest*
+--- 8933,8949 ----
+  do
+  ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
+  echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
+! echo "configure:8937: checking for $ac_hdr" >&5
+  if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
+    echo $ac_n "(cached) $ac_c" 1>&6
+  else
+    cat > conftest.$ac_ext <<EOF
+! #line 8942 "configure"
+  #include "confdefs.h"
+  #include <$ac_hdr>
+  EOF
+  ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
+! { (eval echo configure:8947: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+  ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
+  if test -z "$ac_err"; then
+    rm -rf conftest*
+***************
+*** 8966,8974 ****
+  # BSD/OS, and perhaps some others, don't define rlim_t.
+  #
+  echo $ac_n "checking for type rlim_t""... $ac_c" 1>&6
+! echo "configure:8970: checking for type rlim_t" >&5
+  cat > conftest.$ac_ext <<EOF
+! #line 8972 "configure"
+  #include "confdefs.h"
+  
+  #include <sys/types.h>
+--- 8974,8982 ----
+  # BSD/OS, and perhaps some others, don't define rlim_t.
+  #
+  echo $ac_n "checking for type rlim_t""... $ac_c" 1>&6
+! echo "configure:8978: checking for type rlim_t" >&5
+  cat > conftest.$ac_ext <<EOF
+! #line 8980 "configure"
+  #include "confdefs.h"
+  
+  #include <sys/types.h>
+***************
+*** 8978,8984 ****
+  rlim_t rl = 19671212; return (0);
+  ; return 0; }
+  EOF
+! if { (eval echo configure:8982: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+    rm -rf conftest*
+    echo "$ac_t""yes" 1>&6
+   ISC_PLATFORM_RLIMITTYPE="#define ISC_PLATFORM_RLIMITTYPE rlim_t"
+--- 8986,8992 ----
+  rlim_t rl = 19671212; return (0);
+  ; return 0; }
+  EOF
+! if { (eval echo configure:8990: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+    rm -rf conftest*
+    echo "$ac_t""yes" 1>&6
+   ISC_PLATFORM_RLIMITTYPE="#define ISC_PLATFORM_RLIMITTYPE rlim_t"
+***************
+*** 8989,9000 ****
+    echo "$ac_t""no" 1>&6
+  
+  echo $ac_n "checking type of rlim_cur""... $ac_c" 1>&6
+! echo "configure:8993: checking type of rlim_cur" >&5
+  if test "$cross_compiling" = yes; then
+    { echo "configure: error: cannot determine type of rlim_cur when cross compiling - define rlim_t" 1>&2; exit 1; }
+  else
+    cat > conftest.$ac_ext <<EOF
+! #line 8998 "configure"
+  #include "confdefs.h"
+  
+  #include <sys/types.h>
+--- 8997,9008 ----
+    echo "$ac_t""no" 1>&6
+  
+  echo $ac_n "checking type of rlim_cur""... $ac_c" 1>&6
+! echo "configure:9001: checking type of rlim_cur" >&5
+  if test "$cross_compiling" = yes; then
+    { echo "configure: error: cannot determine type of rlim_cur when cross compiling - define rlim_t" 1>&2; exit 1; }
+  else
+    cat > conftest.$ac_ext <<EOF
+! #line 9006 "configure"
+  #include "confdefs.h"
+  
+  #include <sys/types.h>
+***************
+*** 9002,9008 ****
+  #include <sys/resource.h>
+  main() { struct rlimit r; exit(!(sizeof(r.rlim_cur) == sizeof(int)));}
+  EOF
+! if { (eval echo configure:9006: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+  then
+    echo "$ac_t""int" 1>&6
+  ISC_PLATFORM_RLIMITTYPE="#define ISC_PLATFORM_RLIMITTYPE int"
+--- 9010,9016 ----
+  #include <sys/resource.h>
+  main() { struct rlimit r; exit(!(sizeof(r.rlim_cur) == sizeof(int)));}
+  EOF
+! if { (eval echo configure:9014: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+  then
+    echo "$ac_t""int" 1>&6
+  ISC_PLATFORM_RLIMITTYPE="#define ISC_PLATFORM_RLIMITTYPE int"
+***************
+*** 9015,9021 ****
+    { echo "configure: error: this cannot happen" 1>&2; exit 1; }
+  else
+    cat > conftest.$ac_ext <<EOF
+! #line 9019 "configure"
+  #include "confdefs.h"
+  
+  #include <sys/types.h>
+--- 9023,9029 ----
+    { echo "configure: error: this cannot happen" 1>&2; exit 1; }
+  else
+    cat > conftest.$ac_ext <<EOF
+! #line 9027 "configure"
+  #include "confdefs.h"
+  
+  #include <sys/types.h>
+***************
+*** 9023,9029 ****
+  #include <sys/resource.h>
+  main() { struct rlimit r; exit(!(sizeof(r.rlim_cur) == sizeof(long int)));}
+  EOF
+! if { (eval echo configure:9027: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+  then
+    echo "$ac_t""long int" 1>&6
+  ISC_PLATFORM_RLIMITTYPE="#define ISC_PLATFORM_RLIMITTYPE long int"
+--- 9031,9037 ----
+  #include <sys/resource.h>
+  main() { struct rlimit r; exit(!(sizeof(r.rlim_cur) == sizeof(long int)));}
+  EOF
+! if { (eval echo configure:9035: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+  then
+    echo "$ac_t""long int" 1>&6
+  ISC_PLATFORM_RLIMITTYPE="#define ISC_PLATFORM_RLIMITTYPE long int"
+***************
+*** 9036,9042 ****
+    { echo "configure: error: this cannot happen" 1>&2; exit 1; }
+  else
+    cat > conftest.$ac_ext <<EOF
+! #line 9040 "configure"
+  #include "confdefs.h"
+  
+  #include <sys/types.h>
+--- 9044,9050 ----
+    { echo "configure: error: this cannot happen" 1>&2; exit 1; }
+  else
+    cat > conftest.$ac_ext <<EOF
+! #line 9048 "configure"
+  #include "confdefs.h"
+  
+  #include <sys/types.h>
+***************
+*** 9044,9050 ****
+  #include <sys/resource.h>
+  main() { struct rlimit r; exit((!sizeof(r.rlim_cur) == sizeof(long long int)));}
+  EOF
+! if { (eval echo configure:9048: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+  then
+    echo "$ac_t""long long int" 1>&6
+  ISC_PLATFORM_RLIMITTYPE="#define ISC_PLATFORM_RLIMITTYPE long long int"
+--- 9052,9058 ----
+  #include <sys/resource.h>
+  main() { struct rlimit r; exit((!sizeof(r.rlim_cur) == sizeof(long long int)));}
+  EOF
+! if { (eval echo configure:9056: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+  then
+    echo "$ac_t""long long int" 1>&6
+  ISC_PLATFORM_RLIMITTYPE="#define ISC_PLATFORM_RLIMITTYPE long long int"
+***************
+*** 9168,9174 ****
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+  set dummy $ac_prog; ac_word=$2
+  echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+! echo "configure:9172: checking for $ac_word" >&5
+  if eval "test \"`echo '$''{'ac_cv_path_OPENJADE'+set}'`\" = set"; then
+    echo $ac_n "(cached) $ac_c" 1>&6
+  else
+--- 9176,9182 ----
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+  set dummy $ac_prog; ac_word=$2
+  echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+! echo "configure:9180: checking for $ac_word" >&5
+  if eval "test \"`echo '$''{'ac_cv_path_OPENJADE'+set}'`\" = set"; then
+    echo $ac_n "(cached) $ac_c" 1>&6
+  else
+***************
+*** 9215,9221 ****
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+  set dummy $ac_prog; ac_word=$2
+  echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+! echo "configure:9219: checking for $ac_word" >&5
+  if eval "test \"`echo '$''{'ac_cv_path_JADETEX'+set}'`\" = set"; then
+    echo $ac_n "(cached) $ac_c" 1>&6
+  else
+--- 9223,9229 ----
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+  set dummy $ac_prog; ac_word=$2
+  echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+! echo "configure:9227: checking for $ac_word" >&5
+  if eval "test \"`echo '$''{'ac_cv_path_JADETEX'+set}'`\" = set"; then
+    echo $ac_n "(cached) $ac_c" 1>&6
+  else
+***************
+*** 9258,9264 ****
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+  set dummy $ac_prog; ac_word=$2
+  echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+! echo "configure:9262: checking for $ac_word" >&5
+  if eval "test \"`echo '$''{'ac_cv_path_PDFJADETEX'+set}'`\" = set"; then
+    echo $ac_n "(cached) $ac_c" 1>&6
+  else
+--- 9266,9272 ----
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+  set dummy $ac_prog; ac_word=$2
+  echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+! echo "configure:9270: checking for $ac_word" >&5
+  if eval "test \"`echo '$''{'ac_cv_path_PDFJADETEX'+set}'`\" = set"; then
+    echo $ac_n "(cached) $ac_c" 1>&6
+  else
+***************
+*** 9314,9320 ****
+  
+  SGMLCATALOG=""
+  echo $ac_n "checking for catalog""... $ac_c" 1>&6
+! echo "configure:9318: checking for catalog" >&5
+  for d in $sgmltrees
+  do
+       f=$d/catalog
+--- 9322,9328 ----
+  
+  SGMLCATALOG=""
+  echo $ac_n "checking for catalog""... $ac_c" 1>&6
+! echo "configure:9326: checking for catalog" >&5
+  for d in $sgmltrees
+  do
+       f=$d/catalog
+***************
+*** 9356,9362 ****
+  
+  HTMLSTYLE=""
+  echo $ac_n "checking for html/docbook.dsl""... $ac_c" 1>&6
+! echo "configure:9360: checking for html/docbook.dsl" >&5
+  for d in $stylepath
+  do
+       f=$d/html/docbook.dsl
+--- 9364,9370 ----
+  
+  HTMLSTYLE=""
+  echo $ac_n "checking for html/docbook.dsl""... $ac_c" 1>&6
+! echo "configure:9368: checking for html/docbook.dsl" >&5
+  for d in $stylepath
+  do
+       f=$d/html/docbook.dsl
+***************
+*** 9377,9383 ****
+  
+  PRINTSTYLE=""
+  echo $ac_n "checking for print/docbook.dsl""... $ac_c" 1>&6
+! echo "configure:9381: checking for print/docbook.dsl" >&5
+  for d in $stylepath
+  do
+       f=$d/print/docbook.dsl
+--- 9385,9391 ----
+  
+  PRINTSTYLE=""
+  echo $ac_n "checking for print/docbook.dsl""... $ac_c" 1>&6
+! echo "configure:9389: checking for print/docbook.dsl" >&5
+  for d in $stylepath
+  do
+       f=$d/print/docbook.dsl
+***************
+*** 9403,9409 ****
+  
+  XMLDCL=""
+  echo $ac_n "checking for docbook/dsssl/modular/dtds/decls/xml.dcl""... $ac_c" 1>&6
+! echo "configure:9407: checking for docbook/dsssl/modular/dtds/decls/xml.dcl" >&5
+  for d in $sgmltrees
+  do
+       f=$d/docbook/dsssl/modular/dtds/decls/xml.dcl
+--- 9411,9417 ----
+  
+  XMLDCL=""
+  echo $ac_n "checking for docbook/dsssl/modular/dtds/decls/xml.dcl""... $ac_c" 1>&6
+! echo "configure:9415: checking for docbook/dsssl/modular/dtds/decls/xml.dcl" >&5
+  for d in $sgmltrees
+  do
+       f=$d/docbook/dsssl/modular/dtds/decls/xml.dcl
+***************
+*** 9429,9435 ****
+  
+  DOCBOOK2MANSPEC=""
+  echo $ac_n "checking for docbook2X/docbook2man-spec.pl""... $ac_c" 1>&6
+! echo "configure:9433: checking for docbook2X/docbook2man-spec.pl" >&5
+  for d in $sgmltrees
+  do
+       f=$d/docbook2X/docbook2man-spec.pl
+--- 9437,9443 ----
+  
+  DOCBOOK2MANSPEC=""
+  echo $ac_n "checking for docbook2X/docbook2man-spec.pl""... $ac_c" 1>&6
+! echo "configure:9441: checking for docbook2X/docbook2man-spec.pl" >&5
+  for d in $sgmltrees
+  do
+       f=$d/docbook2X/docbook2man-spec.pl
+***************
+*** 9449,9454 ****
+--- 9457,9649 ----
+  
+  
+  #
++ # MDN support
++ #
++ # Check whether --with-mdn or --without-mdn was given.
++ if test "${with_mdn+set}" = set; then
++   withval="$with_mdn"
++   use_mdn="$withval"
++ else
++   use_mdn="no"
++ fi
++ 
++ case "$use_mdn" in
++ yes)
++      if test X$prefix = XNONE ; then
++              mdn_path=/usr/local
++      else
++              mdn_path=$prefix
++      fi
++      ;;
++ no)
++      ;;
++ *)
++      mdn_path="$use_mdn"
++      ;;
++ esac
++ 
++ iconvinc=
++ iconvlib=
++ # Check whether --with-libiconv or --without-libiconv was given.
++ if test "${with_libiconv+set}" = set; then
++   withval="$with_libiconv"
++   use_libiconv="$withval"
++ else
++   use_libiconv="no"
++ fi
++ 
++ case "$use_libiconv" in
++ yes)
++      if test X$prefix = XNONE ; then
++              iconvlib="-L/usr/local/lib -R/usr/local/lib -liconv"
++      else
++              iconvlib="-L$prefix/lib -R$prefix/lib -liconv"
++      fi
++      ;;
++ no)
++      iconvlib=
++      ;;
++ *)
++      iconvlib="-L$use_libiconv/lib -R$use_libiconv/lib -liconv"
++      ;;
++ esac
++ 
++ # Check whether --with-iconv or --without-iconv was given.
++ if test "${with_iconv+set}" = set; then
++   withval="$with_iconv"
++   iconvlib="$withval"
++ fi
++ 
++ case "$iconvlib" in
++ no)
++      iconvlib=
++      ;;
++ yes)
++      iconvlib=-liconv
++      ;;
++ esac
++ 
++ # Check whether --with-mdnlib or --without-mdnlib was given.
++ if test "${with_mdnlib+set}" = set; then
++   withval="$with_mdnlib"
++   mdnlib="$withval"
++ else
++   mdnlib="no"
++ fi
++ 
++ if test "$mdnlib" = yes; then
++      { echo "configure: error: You must specify ARG for --with-mdnlib." 1>&2; exit 1; }
++ fi
++ 
++ if test "$use_mdn" != no; then
++      cat >> confdefs.h <<\EOF
++ #define WITH_MDN 1
++ EOF
++ 
++      STD_CINCLUDES="$STD_CINCLUDES -I$mdn_path/include"
++      if test "$mdnlib" != no; then
++              LIBS="$mdnlib $iconvlib $LIBS"
++      else
++              LIBS="-L$mdn_path/lib -lmdn $iconvlib $LIBS"
++      fi
++ fi
++ for ac_hdr in locale.h
++ do
++ ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
++ echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
++ echo "configure:9555: checking for $ac_hdr" >&5
++ if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
++   echo $ac_n "(cached) $ac_c" 1>&6
++ else
++   cat > conftest.$ac_ext <<EOF
++ #line 9560 "configure"
++ #include "confdefs.h"
++ #include <$ac_hdr>
++ EOF
++ ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
++ { (eval echo configure:9565: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
++ ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
++ if test -z "$ac_err"; then
++   rm -rf conftest*
++   eval "ac_cv_header_$ac_safe=yes"
++ else
++   echo "$ac_err" >&5
++   echo "configure: failed program was:" >&5
++   cat conftest.$ac_ext >&5
++   rm -rf conftest*
++   eval "ac_cv_header_$ac_safe=no"
++ fi
++ rm -f conftest*
++ fi
++ if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
++   echo "$ac_t""yes" 1>&6
++     ac_tr_hdr=HAVE_`echo $ac_hdr | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'`
++   cat >> confdefs.h <<EOF
++ #define $ac_tr_hdr 1
++ EOF
++  
++ else
++   echo "$ac_t""no" 1>&6
++ fi
++ done
++ 
++ for ac_func in setlocale
++ do
++ echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
++ echo "configure:9594: checking for $ac_func" >&5
++ if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
++   echo $ac_n "(cached) $ac_c" 1>&6
++ else
++   cat > conftest.$ac_ext <<EOF
++ #line 9599 "configure"
++ #include "confdefs.h"
++ /* System header to define __stub macros and hopefully few prototypes,
++     which can conflict with char $ac_func(); below.  */
++ #include <assert.h>
++ /* Override any gcc2 internal prototype to avoid an error.  */
++ /* We use char because int might match the return type of a gcc2
++     builtin and then its argument prototype would still apply.  */
++ char $ac_func();
++ 
++ int main() {
++ 
++ /* The GNU C library defines this for functions which it implements
++     to always fail with ENOSYS.  Some functions are actually named
++     something starting with __ and the normal name is an alias.  */
++ #if defined (__stub_$ac_func) || defined (__stub___$ac_func)
++ choke me
++ #else
++ $ac_func();
++ #endif
++ 
++ ; return 0; }
++ EOF
++ if { (eval echo configure:9622: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
++   rm -rf conftest*
++   eval "ac_cv_func_$ac_func=yes"
++ else
++   echo "configure: failed program was:" >&5
++   cat conftest.$ac_ext >&5
++   rm -rf conftest*
++   eval "ac_cv_func_$ac_func=no"
++ fi
++ rm -f conftest*
++ fi
++ 
++ if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then
++   echo "$ac_t""yes" 1>&6
++     ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
++   cat >> confdefs.h <<EOF
++ #define $ac_tr_func 1
++ EOF
++  
++ else
++   echo "$ac_t""no" 1>&6
++ fi
++ done
++ 
++ 
++ #
+  # Substitutions
+  #
+  
+***************
+*** 9849,9855 ****
+  
+  # Split the substitutions into bite-sized pieces for seds with
+  # small command number limits, like on Digital OSF/1 and HP-UX.
+! ac_max_sed_cmds=50 # Maximum number of lines to put in a sed script.
+  ac_file=1 # Number of current file.
+  ac_beg=1 # First line for current file.
+  ac_end=$ac_max_sed_cmds # Line after last line for current file.
+--- 10044,10050 ----
+  
+  # Split the substitutions into bite-sized pieces for seds with
+  # small command number limits, like on Digital OSF/1 and HP-UX.
+! ac_max_sed_cmds=90 # Maximum number of lines to put in a sed script.
+  ac_file=1 # Number of current file.
+  ac_beg=1 # First line for current file.
+  ac_end=$ac_max_sed_cmds # Line after last line for current file.
+Index: configure.in
+diff -c mdn/othersrc/bind9/configure.in:1.1.1.8 mdn/othersrc/bind9/configure.in:1.11
+*** configure.in       Tue Nov 27 16:55:48 2001
+--- configure.in       Thu Nov 29 18:45:14 2001
+***************
+*** 1605,1610 ****
+--- 1605,1683 ----
+  NOM_PATH_FILE(DOCBOOK2MANSPEC, docbook2X/docbook2man-spec.pl, $sgmltrees)
+  
+  #
++ # MDN support
++ #
++ AC_ARG_WITH(mdn,
++      [  --with-mdn[=MPREFIX]   enable MDN support using mDNkit [default PREFIX]],
++      use_mdn="$withval", use_mdn="no")
++ case "$use_mdn" in
++ yes)
++      if test X$prefix = XNONE ; then
++              mdn_path=/usr/local
++      else
++              mdn_path=$prefix
++      fi
++      ;;
++ no)
++      ;;
++ *)
++      mdn_path="$use_mdn"
++      ;;
++ esac
++ 
++ iconvinc=
++ iconvlib=
++ AC_ARG_WITH(libiconv,
++      [  --with-libiconv[=IPREFIX]   GNU libiconv are in IPREFIX [default PREFIX]],
++      use_libiconv="$withval", use_libiconv="no")
++ case "$use_libiconv" in
++ yes)
++      if test X$prefix = XNONE ; then
++              iconvlib="-L/usr/local/lib -R/usr/local/lib -liconv"
++      else
++              iconvlib="-L$prefix/lib -R$prefix/lib -liconv"
++      fi
++      ;;
++ no)
++      iconvlib=
++      ;;
++ *)
++      iconvlib="-L$use_libiconv/lib -R$use_libiconv/lib -liconv"
++      ;;
++ esac
++ 
++ AC_ARG_WITH(iconv,
++      [  --with-iconv[=LIBSPEC]   specify iconv library [default -liconv]],
++      iconvlib="$withval")
++ case "$iconvlib" in
++ no)
++      iconvlib=
++      ;;
++ yes)
++      iconvlib=-liconv
++      ;;
++ esac
++ 
++ AC_ARG_WITH(mdnlib,
++      [  --with-mdnlib=ARG    specify libmdn],
++      mdnlib="$withval", mdnlib="no")
++ if test "$mdnlib" = yes; then
++      AC_MSG_ERROR([You must specify ARG for --with-mdnlib.])
++ fi
++ 
++ if test "$use_mdn" != no; then
++      AC_DEFINE(WITH_MDN, 1, [define if mDNkit support is to be included.])
++      STD_CINCLUDES="$STD_CINCLUDES -I$mdn_path/include"
++      if test "$mdnlib" != no; then
++              LIBS="$mdnlib $iconvlib $LIBS"
++      else
++              LIBS="-L$mdn_path/lib -lmdn $iconvlib $LIBS"
++      fi
++ fi
++ AC_CHECK_HEADERS(locale.h)
++ AC_CHECK_FUNCS(setlocale)
++ 
++ #
+  # Substitutions
+  #
+  AC_SUBST(BIND9_TOP_BUILDDIR)
+Index: bin/dig/dig.1
+diff -c mdn/othersrc/bind9/bin/dig/dig.1:1.1.1.1 mdn/othersrc/bind9/bin/dig/dig.1:1.2
+*** bin/dig/dig.1      Tue Nov 27 16:55:50 2001
+--- bin/dig/dig.1      Thu Nov 29 14:36:25 2001
+***************
+*** 73,79 ****
+  is the name of the resource record that is to be looked up.
+  .TP
+  \fBtype\fR
+! indicates what type of query is required \(em
+  ANY, A, MX, SIG, etc.
+  \fItype\fR can be any valid query type. If no
+  \fItype\fR argument is supplied,
+--- 73,79 ----
+  is the name of the resource record that is to be looked up.
+  .TP
+  \fBtype\fR
+! indicates what type of query is required 
+  ANY, A, MX, SIG, etc.
+  \fItype\fR can be any valid query type. If no
+  \fItype\fR argument is supplied,
+***************
+*** 336,341 ****
+--- 336,352 ----
+  \fI+noqr\fR which means that \fBdig\fR
+  will not print the initial query when it looks up the NS records for
+  isc.org.
++ .SH "MDN SUPPORT"
++ .PP
++ If \fBdig\fR has been built with mdn support, it can
++ accept and display non-ASCII domain names.
++ \fBdig\fR appropriately converts character encoding of
++ domain name before sending a request to DNS server or displaying a
++ reply from the server.
++ If you'd like to turn off the MDN support for some reason, defines
++ the \fBMDN_DISABLE\fR environment variable.
++ The MDN support is disabled if the the variable is set when 
++ \fBdig\fR runs.
+  .SH "FILES"
+  .PP
+  \fI/etc/resolv.conf\fR
+Index: bin/dig/dig.c
+diff -c mdn/othersrc/bind9/bin/dig/dig.c:1.1.1.8 mdn/othersrc/bind9/bin/dig/dig.c:1.7
+*** bin/dig/dig.c      Tue Nov 27 16:55:50 2001
+--- bin/dig/dig.c      Thu Nov 29 18:45:14 2001
+***************
+*** 1305,1310 ****
+--- 1305,1315 ----
+               }
+               ISC_LIST_APPEND(lookup_list, lookup, link);
+       }
++ 
++ #ifdef WITH_MDN
++              if (getenv(MDN_DISABLE_ENVVAR_NAME) != NULL)
++                      lookup->mdn = ISC_FALSE;
++ #endif
+  }
+  
+  /*
+Index: bin/dig/dig.docbook
+diff -c mdn/othersrc/bind9/bin/dig/dig.docbook:1.1.1.1 mdn/othersrc/bind9/bin/dig/dig.docbook:1.2
+*** bin/dig/dig.docbook        Tue Nov 27 16:55:50 2001
+--- bin/dig/dig.docbook        Thu Nov 29 14:36:26 2001
+***************
+*** 502,507 ****
+--- 502,522 ----
+  </refsect1>
+  
+  <refsect1>
++ <title>MDN SUPPORT</title>
++ <para>
++ If <command>dig</command> has been built with mdn support, it can
++ accept and display non-ASCII domain names.
++ <command>dig</command> appropriately converts character encoding of
++ domain name before sending a request to DNS server or displaying a
++ reply from the server.
++ If you'd like to turn off the MDN support for some reason, defines
++ the <envar>MDN_DISABLE</envar> environment variable.
++ The MDN support is disabled if the the variable is set when 
++ <command>dig</command> runs.
++ </para>
++ </refsect1>
++ 
++ <refsect1>
+  <title>FILES</title>
+  <para>
+  <filename>/etc/resolv.conf</filename>
+Index: bin/dig/dighost.c
+diff -c mdn/othersrc/bind9/bin/dig/dighost.c:1.1.1.11 mdn/othersrc/bind9/bin/dig/dighost.c:1.26
+*** bin/dig/dighost.c  Tue Nov 27 16:55:51 2001
+--- bin/dig/dighost.c  Fri Nov 30 12:37:18 2001
+***************
+*** 32,37 ****
+--- 32,48 ----
+  #include <string.h>
+  #include <limits.h>
+  
++ #ifdef HAVE_LOCALE_H
++ #include <locale.h>
++ #endif
++ 
++ #ifdef WITH_MDN
++ #include <mdn/result.h>
++ #include <mdn/log.h>
++ #include <mdn/resconf.h>
++ #include <mdn/res.h>
++ #endif
++ 
+  #include <dns/byaddr.h>
+  #include <dns/fixedname.h>
+  #include <dns/message.h>
+***************
+*** 130,135 ****
+--- 141,160 ----
+  isc_mutex_t lookup_lock;
+  dig_lookup_t *current_lookup = NULL;
+  
++ #ifdef WITH_MDN
++ mdn_resconf_t mdnconf;
++ 
++ static void        initialize_mdn(void);
++ static isc_result_t   output_filter(isc_buffer_t *buffer,
++                                  unsigned int used_org,
++                                  isc_boolean_t absolute);
++ static mdn_result_t   append_textname(char *name, const char *origin,
++                                    size_t namesize);
++ static void        mdn_check_result(mdn_result_t r, const char *msg);
++ 
++ #define MAXDLEN               256
++ #endif
++ 
+  /*
+   * Apply and clear locks at the event level in global task.
+   * Can I get rid of these using shutdown events?  XXX
+***************
+*** 365,370 ****
+--- 390,398 ----
+       looknew->ignore = ISC_FALSE;
+       looknew->servfail_stops = ISC_FALSE;
+       looknew->besteffort = ISC_TRUE;
++ #ifdef WITH_MDN
++      looknew->mdn = ISC_TRUE;
++ #endif
+       looknew->dnssec = ISC_FALSE;
+       looknew->udpsize = 0;
+       looknew->recurse = ISC_TRUE;
+***************
+*** 426,431 ****
+--- 454,462 ----
+       looknew->ignore = lookold->ignore;
+       looknew->servfail_stops = lookold->servfail_stops;
+       looknew->besteffort = lookold->besteffort;
++ #ifdef WITH_MDN
++      looknew->mdn = ISC_TRUE;
++ #endif
+       looknew->dnssec = lookold->dnssec;
+       looknew->udpsize = lookold->udpsize;
+       looknew->recurse = lookold->recurse;
+***************
+*** 648,653 ****
+--- 679,688 ----
+               ISC_LIST_APPEND(server_list, srv, link);
+       }
+  
++ #ifdef WITH_MDN
++      initialize_mdn();
++ #endif
++ 
+       if (keyfile[0] != 0)
+               setup_file_key();
+       else if (keysecret[0] != 0)
+***************
+*** 1168,1174 ****
+--- 1203,1220 ----
+       isc_buffer_t b;
+       dns_compress_t cctx;
+       char store[MXNAME];
++ #ifdef WITH_MDN
++      mdn_result_t mr;
++      char utf8_textname[MXNAME], utf8_origin[MXNAME], idn_textname[MXNAME];
++ #endif
+  
++ #ifdef WITH_MDN
++         if (lookup->mdn == ISC_TRUE)
++              dns_name_settotextfilter(output_filter);
++         else
++              dns_name_settotextfilter(NULL);
++ #endif
++ 
+       REQUIRE(lookup != NULL);
+       INSIST(!free_now);
+  
+***************
+*** 1196,1201 ****
+--- 1242,1262 ----
+       isc_buffer_init(&lookup->onamebuf, lookup->onamespace,
+                       sizeof(lookup->onamespace));
+  
++ #ifdef WITH_MDN
++      if (lookup->mdn) {
++              /*
++               * We cannot convert `textname' and `origin' separately.
++               * `textname' doesn't contain TLD, but local mapping needs
++               * TLD.
++               */
++              mr = mdn_res_nameconv(mdnconf, "ld", lookup->textname,
++                                    utf8_textname, sizeof(utf8_textname));
++              mdn_check_result(mr, "convert textname to UTF-8");
++      } else {
++              strcpy(utf8_textname, lookup->textname);
++      }
++ #endif
++ 
+       /*
+        * If the name has too many dots, force the origin to be NULL
+        * (which produces an absolute lookup).  Otherwise, take the origin
+***************
+*** 1204,1215 ****
+--- 1265,1307 ----
+        * is TRUE or we got a domain line in the resolv.conf file.
+        */
+       /* XXX New search here? */
++ #ifdef WITH_MDN
++      if ((count_dots(utf8_textname) >= ndots) || !usesearch)
++              lookup->origin = NULL; /* Force abs lookup */
++      else if (lookup->origin == NULL && lookup->new_search && usesearch) {
++              lookup->origin = ISC_LIST_HEAD(search_list);
++      }
++ #else
+       if ((count_dots(lookup->textname) >= ndots) || !usesearch)
+               lookup->origin = NULL; /* Force abs lookup */
+       else if (lookup->origin == NULL && lookup->new_search && usesearch) {
+               lookup->origin = ISC_LIST_HEAD(search_list);
+       }
++ #endif
++ 
++ #ifdef WITH_MDN
++      if (lookup->mdn) {
++              if (lookup->origin != NULL) {
++                      mr = mdn_res_nameconv(mdnconf, "ld",
++                                            lookup->origin->origin,
++                                            utf8_origin,
++                                            sizeof(utf8_origin));
++                      mdn_check_result(mr, "convert origin to UTF-8");
++                      mr = append_textname(utf8_textname, utf8_origin,
++                                           sizeof(utf8_textname));
++                      mdn_check_result(mr, "append origin to textname");
++              }
++              mr = mdn_res_nameconv(mdnconf, "MNI", utf8_textname,
++                                    idn_textname, sizeof(idn_textname));
++              mdn_check_result(mr, "convert UTF-8 textname to IDN encoding");
++      }
++ #endif
++ 
++ #ifdef WITH_MDN
++      if (lookup->origin != NULL && !lookup->mdn) {
++ #else
+       if (lookup->origin != NULL) {
++ #endif
+               debug("trying origin %s", lookup->origin->origin);
+               result = dns_message_gettempname(lookup->sendmsg,
+                                                &lookup->oname);
+***************
+*** 1253,1258 ****
+--- 1345,1361 ----
+               debug("using root origin");
+               if (lookup->trace && lookup->trace_root)
+                       dns_name_clone(dns_rootname, lookup->name);
++ #ifdef WITH_MDN
++              else if (lookup->mdn) {
++                      len = strlen(idn_textname);
++                      isc_buffer_init(&b, idn_textname, len);
++                      isc_buffer_add(&b, len);
++                      result = dns_name_fromtext(lookup->name, &b,
++                                                 dns_rootname,
++                                                 ISC_FALSE,
++                                                 &lookup->namebuf);
++              }
++ #endif
+               else {
+                       len = strlen(lookup->textname);
+                       isc_buffer_init(&b, lookup->textname, len);
+***************
+*** 2588,2590 ****
+--- 2691,2806 ----
+       if (mctx != NULL)
+               isc_mem_destroy(&mctx);
+  }
++ 
++ #ifdef WITH_MDN
++ static void
++ initialize_mdn(void) {
++      mdn_result_t r;
++ 
++ #ifdef HAVE_SETLOCALE
++      /* Set locale */
++      (void)setlocale(LC_ALL, "");
++ #endif
++ 
++      /* General initialization. */
++      r = mdn_resconf_initialize();
++      if (r != mdn_success)
++              fatal("mdn initialization failed: %s",
++                    mdn_result_tostring(r));
++ 
++      /* Create configuration context. */
++      r = mdn_resconf_create(&mdnconf);
++      if (r != mdn_success)
++              fatal("mdn resconf initialization failed: %s",
++                    mdn_result_tostring(r));
++ 
++ 
++      /* Load mdn configuration file. */
++      r = mdn_resconf_loadfile(mdnconf, NULL);
++      if (r != mdn_success)
++              fatal("mdn configuration loading failed: %s",
++                    mdn_result_tostring(r));
++ 
++      /* Set domain name -> text post-conversion filter. */
++      dns_name_settotextfilter(output_filter);
++ }
++ 
++ static isc_result_t
++ output_filter(isc_buffer_t *buffer, unsigned int used_org,
++            isc_boolean_t absolute)
++ {
++      char tmp1[MAXDLEN], tmp2[MAXDLEN];
++      size_t fromlen, tolen;
++      isc_boolean_t end_with_dot;
++ 
++      /*
++       * Copy contents of 'buffer' to 'tmp1', supply trailing dot
++       * if 'absolute' is true, and terminate with NUL.
++       */
++      fromlen = isc_buffer_usedlength(buffer) - used_org;
++      if (fromlen >= MAXDLEN)
++              return (ISC_R_SUCCESS);
++      memcpy(tmp1, (char *)isc_buffer_base(buffer) + used_org, fromlen);
++      end_with_dot = (tmp1[fromlen - 1] == '.') ? ISC_TRUE : ISC_FALSE;
++      if (absolute && !end_with_dot) {
++              fromlen++;
++              if (fromlen >= MAXDLEN)
++                      return (ISC_R_SUCCESS);
++              tmp1[fromlen - 1] = '.';
++      }
++      tmp1[fromlen] = '\0';
++ 
++      /*
++       * Convert contents of 'tmp1' to local encoding.
++       */
++      if (mdn_res_nameconv(mdnconf, "i!NL", tmp1, tmp2, MAXDLEN)
++          != mdn_success)
++              return (ISC_R_SUCCESS);
++      strcpy(tmp1, tmp2);
++ 
++      /*
++       * Copy the converted contents in 'tmp1' back to 'buffer'.
++       * If we have appended trailing dot, remove it.
++       */
++      tolen = strlen(tmp1);
++      if (absolute && !end_with_dot && tmp1[tolen - 1] == '.')
++              tolen--;
++ 
++      if (isc_buffer_length(buffer) < used_org + tolen)
++              return (ISC_R_NOSPACE);
++ 
++      isc_buffer_subtract(buffer, isc_buffer_usedlength(buffer) - used_org);
++      memcpy(isc_buffer_used(buffer), tmp1, tolen);
++      isc_buffer_add(buffer, tolen);
++ 
++      return (ISC_R_SUCCESS);
++ }
++ 
++ static mdn_result_t
++ append_textname(char *name, const char *origin, size_t namesize) {
++      size_t namelen = strlen(name);
++      size_t originlen = strlen(origin);
++ 
++      /* Already absolute? */
++      if (namelen > 0 && name[namelen - 1] == '.')
++              return mdn_success;
++ 
++      /* Append dot and origin */
++ 
++      if (namelen + 1 + originlen >= namesize)
++              return mdn_buffer_overflow;
++ 
++      name[namelen++] = '.';
++      (void)strcpy(name + namelen, origin);
++      return mdn_success;
++ }
++ 
++ static void
++ mdn_check_result(mdn_result_t r, const char *msg) {
++      if (r != mdn_success) {
++              exitcode = 1;
++              fatal("%s: %s", msg, mdn_result_tostring(r));
++      }
++ }
++ 
++ #endif /* WITH_MDN */
+Index: bin/dig/host.1
+diff -c mdn/othersrc/bind9/bin/dig/host.1:1.1.1.1 mdn/othersrc/bind9/bin/dig/host.1:1.2
+*** bin/dig/host.1     Tue Nov 27 16:55:51 2001
+--- bin/dig/host.1     Thu Nov 29 14:36:26 2001
+***************
+*** 87,94 ****
+  retries will default to 1.
+  .PP
+  Non-recursive queries can be made via the \fB-r\fR option.
+! Setting this option clears the \fBRD\fR \(em recursion
+! desired \(em bit in the query which \fBhost\fR makes.
+  This should mean that the name server receiving the query will not
+  attempt to resolve \fIname\fR. The
+  \fB-r\fR option enables \fBhost\fR to mimic
+--- 87,94 ----
+  retries will default to 1.
+  .PP
+  Non-recursive queries can be made via the \fB-r\fR option.
+! Setting this option clears the \fBRD\fR recursion
+! desired bit in the query which \fBhost\fR makes.
+  This should mean that the name server receiving the query will not
+  attempt to resolve \fIname\fR. The
+  \fB-r\fR option enables \fBhost\fR to mimic
+***************
+*** 120,125 ****
+--- 120,136 ----
+  effectively wait forever for a reply. The time to wait for a response
+  will be set to the number of seconds given by the hardware's maximum
+  value for an integer quantity.
++ .SH "MDN SUPPORT"
++ .PP
++ If \fBhost\fR has been built with mdn support, it can
++ accept and display non-ASCII domain names.
++ \fBhost\fR appropriately converts character encoding of
++ domain name before sending a request to DNS server or displaying a
++ reply from the server.
++ If you'd like to turn off the MDN support for some reason, defines
++ the \fBMDN_DISABLE\fR environment variable.
++ The MDN support is disabled if the the variable is set when
++ \fBhost\fR runs.
+  .SH "FILES"
+  .PP
+  \fI/etc/resolv.conf\fR
+Index: bin/dig/host.c
+diff -c mdn/othersrc/bind9/bin/dig/host.c:1.1.1.8 mdn/othersrc/bind9/bin/dig/host.c:1.7
+*** bin/dig/host.c     Tue Nov 27 16:55:51 2001
+--- bin/dig/host.c     Thu Nov 29 18:45:14 2001
+***************
+*** 666,671 ****
+--- 666,676 ----
+       lookup->new_search = ISC_TRUE;
+       ISC_LIST_APPEND(lookup_list, lookup, link);
+  
++ #ifdef WITH_MDN
++      if (getenv(MDN_DISABLE_ENVVAR_NAME) != NULL)
++              lookup->mdn = ISC_FALSE;
++ #endif
++ 
+       usesearch = ISC_TRUE;
+  }
+  
+Index: bin/dig/host.docbook
+diff -c mdn/othersrc/bind9/bin/dig/host.docbook:1.1.1.1 mdn/othersrc/bind9/bin/dig/host.docbook:1.2
+*** bin/dig/host.docbook       Tue Nov 27 16:55:51 2001
+--- bin/dig/host.docbook       Thu Nov 29 14:36:26 2001
+***************
+*** 181,186 ****
+--- 181,201 ----
+  </refsect1>
+  
+  <refsect1>
++ <title>MDN SUPPORT</title>
++ <para>
++ If <command>host</command> has been built with mdn support, it can
++ accept and display non-ASCII domain names.
++ <command>host</command> appropriately converts character encoding of
++ domain name before sending a request to DNS server or displaying a
++ reply from the server.
++ If you'd like to turn off the MDN support for some reason, defines
++ the <envar>MDN_DISABLE</envar> environment variable.
++ The MDN support is disabled if the the variable is set when
++ <command>host</command> runs.
++ </para>
++ </refsect1>
++ 
++ <refsect1>
+  <title>FILES</title>
+  <para>
+  <filename>/etc/resolv.conf</filename>
+Index: bin/dig/nslookup.c
+diff -c mdn/othersrc/bind9/bin/dig/nslookup.c:1.1.1.8 mdn/othersrc/bind9/bin/dig/nslookup.c:1.7
+*** bin/dig/nslookup.c Tue Nov 27 16:55:51 2001
+--- bin/dig/nslookup.c Thu Nov 29 18:45:14 2001
+***************
+*** 656,661 ****
+--- 656,665 ----
+       ISC_LIST_APPEND(lookup_list, lookup, link);
+       lookup->origin = NULL;
+       ISC_LIST_INIT(lookup->my_server_list);
++ #ifdef WITH_MDN
++      if (getenv(MDN_DISABLE_ENVVAR_NAME) != NULL)
++              lookup->mdn = ISC_FALSE;
++ #endif
+       debug("looking up %s", lookup->textname);
+  }
+  
+Index: bin/dig/include/dig/dig.h
+diff -c mdn/othersrc/bind9/bin/dig/include/dig/dig.h:1.1.1.6 mdn/othersrc/bind9/bin/dig/include/dig/dig.h:1.7
+*** bin/dig/include/dig/dig.h  Tue Nov 27 16:55:51 2001
+--- bin/dig/include/dig/dig.h  Thu Nov 29 18:45:14 2001
+***************
+*** 74,79 ****
+--- 74,86 ----
+   * be 1.
+   */
+  
++ /*
++  * Name of environment variable which disables MDN support if defined.
++  */
++ #ifdef WITH_MDN
++ #define MDN_DISABLE_ENVVAR_NAME "MDN_DISABLE"
++ #endif
++ 
+  ISC_LANG_BEGINDECLS
+  
+  typedef struct dig_lookup dig_lookup_t;
+***************
+*** 109,114 ****
+--- 116,124 ----
+               servfail_stops,
+               new_search,
+               besteffort,
++ #ifdef WITH_MDN
++              mdn,
++ #endif
+               dnssec;
+       char textname[MXNAME]; /* Name we're going to be looking up */
+       char cmdline[MXNAME];
+Index: lib/dns/name.c
+diff -c mdn/othersrc/bind9/lib/dns/name.c:1.1.1.9 mdn/othersrc/bind9/lib/dns/name.c:1.12
+*** lib/dns/name.c     Tue Nov 27 16:57:32 2001
+--- lib/dns/name.c     Thu Nov 29 18:45:14 2001
+***************
+*** 194,199 ****
+--- 194,206 ----
+  /* XXXDCL make const? */
+  dns_name_t *dns_wildcardname = &wild;
+  
++ #ifdef WITH_MDN
++ /*
++  * dns_name_t to text post-conversion procedure.
++  */
++ static dns_name_totextfilter_t totext_filter_proc = NULL;
++ #endif
++ 
+  static void
+  set_offsets(const dns_name_t *name, unsigned char *offsets,
+           dns_name_t *set_name);
+***************
+*** 1682,1687 ****
+--- 1689,1697 ----
+       unsigned int labels;
+       isc_boolean_t saw_root = ISC_FALSE;
+       char num[4];
++ #ifdef WITH_MDN
++      unsigned int oused = target->used;
++ #endif
+  
+       /*
+        * This function assumes the name is in proper uncompressed
+***************
+*** 1859,1864 ****
+--- 1869,1878 ----
+  
+       isc_buffer_add(target, tlen - trem);
+  
++ #ifdef WITH_MDN
++      if (totext_filter_proc != NULL)
++              return ((*totext_filter_proc)(target, oused, saw_root));
++ #endif
+       return (ISC_R_SUCCESS);
+  }
+  
+***************
+*** 3315,3317 ****
+--- 3329,3337 ----
+       return (ISC_R_SUCCESS);
+  }
+  
++ #ifdef WITH_MDN
++ void
++ dns_name_settotextfilter(dns_name_totextfilter_t proc) {
++      totext_filter_proc = proc;
++ }
++ #endif
+Index: lib/dns/include/dns/name.h
+diff -c mdn/othersrc/bind9/lib/dns/include/dns/name.h:1.1.1.6 mdn/othersrc/bind9/lib/dns/include/dns/name.h:1.8
+*** lib/dns/include/dns/name.h Tue Nov 27 16:57:38 2001
+--- lib/dns/include/dns/name.h Thu Nov 29 18:45:14 2001
+***************
+*** 218,223 ****
+--- 218,234 ----
+   */
+  #define DNS_NAME_MAXWIRE 255
+  
++ #ifdef WITH_MDN
++ /*
++  * Text output filter procedure.
++  * 'target' is the buffer to be converted.  The region to be converted
++  * is from 'buffer'->base + 'used_org' to the end of the used region.
++  */
++ typedef isc_result_t (*dns_name_totextfilter_t)(isc_buffer_t *target,
++                                              unsigned int used_org,
++                                              isc_boolean_t absolute);
++ #endif
++ 
+  /***
+   *** Initialization
+   ***/
+***************
+*** 1243,1248 ****
+--- 1254,1267 ----
+   *   'size' > 0.
+   *
+   */
++ 
++ #ifdef WITH_MDN
++ void
++ dns_name_settotextfilter(dns_name_totextfilter_t proc);
++ /*
++  * Call 'proc' at the end of dns_name_totext.
++  */
++ #endif /* WITH_MDN */
+  
+  #define DNS_NAME_FORMATSIZE (DNS_NAME_MAXTEXT + 1)
+  /*
index 8542bf3db636a5be1b946aede8d9970a2c3890f4..a23bea0a0d537f5b43852a93c565489dcb11fe38 100644 (file)
---- ./README.mdnkit.orig       Wed Jan 24 01:22:44 2001
-+++ ./README.mdnkit    Wed Jan 24 01:22:44 2001
-@@ -0,0 +1,110 @@
-+
-+                      BIND-9 MDN patch
-+
-+             Japan Network Information Center (JPNIC)
-+
-+
-+* What is this patch for?
-+
-+This patch adds multilingual domain name (MDN) support to BIND-9.
-+You'll get multilingualized version of light weight resolver and
-+dig/host/nslookup commands.
-+
-+    + multilingualized version of light weight resolver
-+      The following APIs accept non-ASCII host name encoded in the
-+      local codeset (such as Shift JIS, Big5 or ISO8859-1)
-+      determined by the application's current locale, and return
-+      host names in the local codeset.
-+              lwres_gethostbyname
-+              lwres_gethostbyname_r
-+              lwres_gethostbyname2
-+              lwres_getipnodebyname
-+              lwres_getaddrinfo
-+              lwres_gethostbyaddr
-+              lwres_gethostbyaddr_r
-+              lwres_getipnodebyaddr
-+              lwres_getnameinfo
-+
-+    + mulltilingualized dig/host/nslookup
-+      dig/host/nslookup accepts non-ASCII domain names in the local
-+      codeset.  The domain names are normalized and converted to the
-+      encoding on the DNS protocol, and sent to DNS servers.  The
-+      replies are converted back to the local codeset and displayed.
-+
-+
-+* Compilation & installation
-+
-+0. Prerequisite
-+
-+You have to build and install mDNkit before building this patched version
-+of bind-9.
-+
-+1. Running configure script
-+
-+Run `configure' in the top directory.  See `README' for the
-+configuration options.
-+
-+This patch adds the following 3 options to `configure'.  You should
-+at least specify `--with-mdn' option to enable MDN support.
-+
-+    --with-mdn[=PREFIX]
-+      To enable MDN support, you have to specify `--with-mdn'
-+      option.  If you specified installation prefix other than
-+      `/usr/local' (which is the default) when conifguring mDNkit,
-+      also specify the prefix, like `--with-mdn=/usr/local/mdnkit'.
-+
-+    --with-iconv=LIBSPEC
-+      If your libc doens't provide iconv(), you need to specify the
-+      library containing iconv() with this option.  `LIBSPEC' is the
-+      argument(s) to `cc' or `ld' to link the library, for example,
-+      `--with-iconv="-L/usr/local/lib -liconv"'.
-+      You don't need to specify the header file directory for "iconv.h"
-+      to the compiler, as it isn't included directly by bind-9 with
-+      this patch.
-+
-+    --with-mdnlib=LIBSPEC
-+      With this option, you can explicitly specify the argument(s)
-+      to `cc' or `ld' to link the mDNkit's library, `libmdn'.  If
-+      this option is not specified, `-L${PREFIX}/lib -lmdn' is
-+      assumed, where ${PREFIX} is the installation prefix specified
-+      with `--with-mdn' option above.  You may need to use this
-+      option to specify extra argments, for example,
-+      `--with-mdnlib="-L/usr/local/lib -R/usr/local/lib -lmdn"'.
-+
-+Please consult `README' for other configuration options.
-+
-+Note that if you want to specify some extra header file directories,
-+you should use the environment variable STD_CINCLUDES instead of
-+CFLAGS, as described in README.
-+
-+2. Compilation and installation
-+
-+After running "configure", just do
-+
-+      make
-+      make install
-+
-+for compiling and installing.
-+
-+3. Resolver configuration
-+
-+To handle multilingual domain names, you have to specify the
-+properties like:
-+      + name encoding used in DNS protocol data
-+      + normalization schemes
-+These properties are specified by the mDNkit's resolver configuration
-+file, "mdnres.conf".  You have to create and set up the file properly.
-+The pathname of the file and contents are described in the manual
-+"mdnres.conf".
-+
-+
-+* Contact information
-+
-+Please see http//www.nic.ad.jp/jp/research/idn/ for the latest news
-+about mDNkit and this patch.
-+
-+Bug reports and comments on this kit should be sent to
-+mdnkit-bugs@nic.ad.jp and idn-cmt@nic.ad.jp, respectively.
-+
-+
-+; $Id: README.mdnkit,v 1.5 2000/10/18 04:54:57 ishisone Exp $
---- ./acconfig.h.orig  Wed Jan 24 00:53:00 2001
-+++ ./acconfig.h       Wed Jan 24 01:22:44 2001
-@@ -116,4 +116,7 @@
- #endif /* SHUTUP_STDARG_CAST && __GNUC__ */
-+/* define if mDNkit support is to be included. */
-+#undef WITH_MDN
-+
- /* define if the system has a random number generating device */
- #undef PATH_RANDOMDEV
---- ./config.h.in.orig Wed Jan 24 00:53:01 2001
-+++ ./config.h.in      Wed Jan 24 01:22:44 2001
-@@ -133,4 +133,10 @@
- #undef HAVE_PTHREAD_ATTR_GETSTACKSIZE
-+/* define if mDNkit support is to be included. */
-+#undef WITH_MDN
-+
-+/* Define if you have the setlocale function.  */
-+#undef HAVE_SETLOCALE
-+
- /* Define if you have the <fcntl.h> header file.  */
- #undef HAVE_FCNTL_H
-@@ -141,4 +147,7 @@
- /* Define if you have the <linux/prctl.h> header file.  */
- #undef HAVE_LINUX_PRCTL_H
-+
-+/* Define if you have the <locale.h> header file.  */
-+#undef HAVE_LOCALE_H
- /* Define if you have the <sys/sockio.h> header file.  */
---- ./configure.in.orig        Wed Jan 24 01:12:20 2001
-+++ ./configure.in     Wed Jan 24 01:22:44 2001
-@@ -1324,4 +1324,52 @@
- #
-+# MDN support
-+#
-+AC_ARG_WITH(mdn,
-+      [  --with-mdn[=PREFIX]    enable MDN support using mDNkit [default prefix /usr/local]],
-+      use_mdn="$withval", use_mdn="no")
-+case "$use_mdn" in
-+yes)
-+      mdn_path=/usr/local
-+      ;;
-+no)
-+      ;;
-+*)
-+      mdn_path="$use_mdn"
-+      ;;
-+esac
-+
-+AC_ARG_WITH(iconv,
-+      [  --with-iconv[=LIBSPEC]   specify iconv library [default -liconv]],
-+      iconvlib="$withval", iconvlib="no")
-+case "$iconvlib" in
-+no)
-+    iconvlib=
-+    ;;
-+yes)
-+    iconvlib=-liconv
-+    ;;
-+esac
-+
-+AC_ARG_WITH(mdnlib,
-+      [  --with-mdnlib=ARG    specify libmdn],
-+      mdnlib="$withval", mdnlib="no")
-+if test "$mdnlib" = yes; then
-+      AC_MSG_ERROR([You must specify ARG for --with-mdnlib.])
-+fi
-+
-+if test "$use_mdn" != no; then
-+      AC_DEFINE(WITH_MDN)
-+      STD_CINCLUDES="$STD_CINCLUDES -I$mdn_path/include"
-+      if test "$mdnlib" != no; then
-+              LIBS="$mdnlib $iconvlib $LIBS"
-+      else
-+              LIBS="-L$mdn_path/lib -lmdn $iconvlib $LIBS"
-+      fi
-+fi
-+AC_CHECK_HEADERS(locale.h)
-+AC_CHECK_FUNCS(setlocale)
-+
-+#
- # Substitutions
- #
---- ./lib/dns/config/confctx.c.orig    Wed Jan 24 00:55:34 2001
-+++ ./lib/dns/config/confctx.c Wed Jan 24 01:22:44 2001
-@@ -1030,4 +1030,7 @@
-       PRINT_AS_BOOLEAN(maintain_ixfr_base, "maintain-ixfr-base");
-       PRINT_AS_BOOLEAN(has_old_clients, "has-old-clients");
-+#ifdef WITH_MDN
-+      PRINT_AS_BOOLEAN(allow_utf8, "allow-utf8");
-+#endif
-       PRINT_AS_BOOLEAN(auth_nx_domain, "auth-nxdomain");
-       PRINT_AS_BOOLEAN(multiple_cnames, "multiple-cnames");
-@@ -1565,4 +1568,7 @@
-       opts->maintain_ixfr_base = NULL;
-       opts->has_old_clients = NULL;
-+#ifdef WITH_MDN
-+      opts->allow_utf8 = NULL;
-+#endif
-       opts->auth_nx_domain = NULL;
-       opts->multiple_cnames = NULL;
-@@ -1680,4 +1686,7 @@
-       FREEFIELD(maintain_ixfr_base);
-       FREEFIELD(has_old_clients);
-+#ifdef WITH_MDN
-+      FREEFIELD(allow_utf8);
-+#endif
-       FREEFIELD(auth_nx_domain);
-       FREEFIELD(multiple_cnames);
-@@ -1858,4 +1867,7 @@
- BOOL_FUNCS(maintainixfrbase, maintain_ixfr_base)
- BOOL_FUNCS(hasoldclients, has_old_clients)
-+#ifdef WITH_MDN
-+BOOL_FUNCS(allowutf8, allow_utf8)
-+#endif
- BOOL_FUNCS(authnxdomain, auth_nx_domain)
- BOOL_FUNCS(multiplecnames, multiple_cnames)
---- ./lib/dns/config/confparser.y.orig Wed Jan 24 01:12:59 2001
-+++ ./lib/dns/config/confparser.y      Wed Jan 24 01:22:44 2001
-@@ -275,4 +275,5 @@
- %token                L_ALLOW_UPDATE
- %token                L_ALLOW_UPDATE_FORWARDING
-+%token                L_ALLOW_UTF8
- %token                L_ALLOW_V6_SYNTHESIS
- %token                L_ALSO_NOTIFY
-@@ -1740,4 +1741,19 @@
-               }
-       }
-+      | L_ALLOW_UTF8 yea_or_nay
-+      {
-+#ifdef WITH_MDN
-+              tmpres = dns_c_ctx_setallowutf8(currcfg, $2);
-+              if (tmpres == ISC_R_EXISTS) {
-+                      parser_error(ISC_FALSE,
-+                                   "cannot redefine allow-utf8");
-+                      YYABORT;
-+              }
-+#else
-+              parser_error(ISC_FALSE, "must be configured with MDN"
-+                           "to use allow-utf8");
-+              YYABORT;
-+#endif
-+      }
-       | L_ADDITIONAL_DATA additional_data
-       {
-@@ -6122,4 +6138,7 @@
-       int yaccval;
- };
-+#ifdef WITH_MDN
-+      { "allow-utf8",                 L_ALLOW_UTF8 },
-+#endif
- static struct token keyword_tokens [] = {
---- ./lib/dns/include/dns/confctx.h.orig       Wed Jan 24 01:02:45 2001
-+++ ./lib/dns/include/dns/confctx.h    Wed Jan 24 01:22:44 2001
-@@ -185,4 +185,7 @@
-       isc_sockaddr_t         *transfer_source_v6;
-       isc_sockaddr_t         *query_source;
-+#ifdef WITH_MDN
-+      isc_boolean_t          *allow_utf8;
-+#endif
-       isc_sockaddr_t         *query_source_v6;
-@@ -631,4 +634,11 @@
- isc_result_t dns_c_ctx_gettreatcrasspace(dns_c_ctx_t *cfg,
-                                        isc_boolean_t *retval);
-+#ifdef WITH_MDN
-+isc_result_t dns_c_ctx_setallowutf8(dns_c_ctx_t *cfg,
-+                                  isc_boolean_t newval);
-+isc_result_t dns_c_ctx_getallowutf8(dns_c_ctx_t *cfg,
-+                                  isc_boolean_t *retval);
-+isc_result_t dns_c_ctx_unsetallowutf8(dns_c_ctx_t *cfg);
-+#endif
---- ./lib/dns/include/dns/name.h.orig  Wed Jan 24 01:03:27 2001
-+++ ./lib/dns/include/dns/name.h       Wed Jan 24 01:22:44 2001
-@@ -219,4 +219,15 @@
- #define DNS_NAME_MAXWIRE 255
-+#ifdef WITH_MDN
-+/*
-+ * Text output filter procedure.
-+ * 'target' is the buffer to be converted.  The region to be converted
-+ * is from 'buffer'->base + 'used_org' to the end of the used region.
-+ */
-+typedef isc_result_t (*dns_name_totextfilter_t)(isc_buffer_t *target,
-+                                              unsigned int used_org,
-+                                              isc_boolean_t absolute);
-+#endif
-+
- /***
-  *** Initialization
-@@ -1217,4 +1228,24 @@
-  *
-  */
-+
-+#ifdef WITH_MDN
-+void
-+dns_name_allowutf8(isc_boolean_t allowutf8);
-+/*
-+ * If 'allowutf8' is true, UTF-8 characters are not translated into
-+ * backslash escape format (\DDD) by dns_name_totext().
-+ *
-+ * XXX:
-+ *    Setting this modifies the global state.  Maybe there should be
-+ *    a way to set this for each name.
-+ */
-+
-+void
-+dns_name_settotextfilter(dns_name_totextfilter_t proc);
-+/*
-+ * Call 'proc' at the end of dns_name_totext.
-+ */
-+
-+#endif /* WITH_MDN */
- #define DNS_NAME_FORMATSIZE (DNS_NAME_MAXTEXT + 1)
---- ./lib/dns/name.c.orig      Wed Jan 24 00:59:40 2001
-+++ ./lib/dns/name.c   Wed Jan 24 01:22:44 2001
-@@ -32,4 +32,8 @@
- #include <dns/result.h>
-+#ifdef WITH_MDN
-+#include <mdn/utf8.h>
-+#endif
-+
- #define VALID_NAME(n) ISC_MAGIC_VALID(n, DNS_NAME_MAGIC)
-@@ -199,4 +203,17 @@
-           dns_name_t *set_name);
-+#ifdef WITH_MDN
-+/*
-+ * If this flag is true, dns_name_totext() copies UTF-8 characters
-+ * as is (ie not backslash-escaped form).
-+ */
-+static isc_boolean_t allow_utf8 = ISC_FALSE;
-+
-+/*
-+ * dns_name_t to text post-conversion procedure.
-+ */
-+static dns_name_totextfilter_t totext_filter_proc = NULL;
-+#endif
-+
- static void
- compact(dns_name_t *name, unsigned char *offsets);
-@@ -1683,4 +1700,8 @@
-       isc_boolean_t saw_root = ISC_FALSE;
-       char num[4];
-+#ifdef WITH_MDN
-+      unsigned int oused = target->used;
-+      unsigned int u8len;
-+#endif
-       /*
-@@ -1778,4 +1799,18 @@
-                                               trem--;
-                                               nlen--;
-+#ifdef WITH_MDN
-+                                      } else if (c >= 0x80 &&
-+                                                 allow_utf8 &&
-+                                                 (u8len =
-+                                                 mdn_utf8_isvalidchar(ndata))
-+                                                 > 0 &&
-+                                                 u8len <= trem) {
-+                                              memcpy(tdata, ndata, u8len);
-+                                              ndata += u8len;
-+                                              tdata += u8len;
-+                                              trem -= u8len;
-+                                              nlen -= u8len;
-+                                              count -= u8len - 1;
-+#endif
-                                       } else {
-                                               if (trem < 4)
-@@ -1859,4 +1894,8 @@
-       isc_buffer_add(target, tlen - trem);
-+#ifdef WITH_MDN
-+      if (totext_filter_proc != NULL)
-+              return ((*totext_filter_proc)(target, oused, saw_root));
-+#endif
-       return (ISC_R_SUCCESS);
- }
-@@ -3137,4 +3176,16 @@
-       dns_offsets_t odata;
-+
-+#ifdef WITH_MDN
-+void
-+dns_name_allowutf8(isc_boolean_t allowutf8) {
-+      allow_utf8 = allowutf8;
-+}
-+
-+void
-+dns_name_settotextfilter(dns_name_totextfilter_t proc) {
-+      totext_filter_proc = proc;
-+}
-+#endif
-       /*
-        * Make dest a copy of source.
---- ./lib/lwres/getaddrinfo.c.orig     Wed Jan 24 01:11:09 2001
-+++ ./lib/lwres/getaddrinfo.c  Wed Jan 24 01:22:44 2001
-@@ -54,4 +54,12 @@
- #endif
-+#ifdef WITH_MDN               /* Add 'encodeflag' parameter to 3 functions. */
-+static int add_ipv4(const char *hostname, int flags, struct addrinfo **aip,
-+    int socktype, int port, int encodeflg);
-+static int add_ipv6(const char *hostname, int flags, struct addrinfo **aip,
-+    int socktype, int port, int encodeflg);
-+static void set_order(int, int (**)(const char *, int, struct addrinfo **,
-+         int, int, int));
-+#else
- static int add_ipv4(const char *hostname, int flags, struct addrinfo **aip,
-     int socktype, int port);
-@@ -60,4 +68,5 @@
- static void set_order(int, int (**)(const char *, int, struct addrinfo **,
-          int, int));
-+#endif /* WITH_MDN */
- #define FOUND_IPV4    0x1
-@@ -67,7 +76,22 @@
- #define ISC_AI_MASK (AI_PASSIVE|AI_CANONNAME|AI_NUMERICHOST)
-+#ifdef WITH_MDN
- int
- lwres_getaddrinfo(const char *hostname, const char *servname,
-+                const struct addrinfo *hints, struct addrinfo **res)
-+{
-+      /* The last parameter is a encoding type. Default is local encoding. */
-+      return (lwres_getaddrinfo_enc(hostname, servname, hints, res, 0));
-+}
-+#endif /* WITH_MDN */
-+
-+int
-+#ifdef WITH_MDN
-+lwres_getaddrinfo_enc(const char *hostname, const char *servname,
-+      const struct addrinfo *hints, struct addrinfo **res, int encodeflg)
-+#else
-+lwres_getaddrinfo(const char *hostname, const char *servname,
-       const struct addrinfo *hints, struct addrinfo **res)
-+#endif /* WITH_MDN */
- {
-       struct servent *sp;
-@@ -76,6 +100,11 @@
-       struct addrinfo *ai, *ai_list;
-       int port, err, i;
-+#ifdef WITH_MDN
-+      int (*net_order[FOUND_MAX+1])(const char *, int, struct addrinfo **,
-+               int, int, int);
-+#else
-       int (*net_order[FOUND_MAX+1])(const char *, int, struct addrinfo **,
-                int, int);
-+#endif /* WITH_MDN */
-       if (hostname == NULL && servname == NULL)
-@@ -354,5 +383,9 @@
-                       break;
-               err = (net_order[i])(hostname, flags, &ai_list,
-+#ifdef WITH_MDN
-+                                   socktype, port, encodeflg);
-+#else
-                                    socktype, port);
-+#endif
-               if (err != 0)
-                       return (err);
-@@ -393,6 +426,11 @@
- static void
-+#ifdef WITH_MDN
-+set_order(int family, int (**net_order)(const char *, int, struct addrinfo **,
-+                                      int, int, int))
-+#else
- set_order(int family, int (**net_order)(const char *, int, struct addrinfo **,
-                                       int, int))
-+#endif /* WITH_MDN */
- {
-       char *order, *tok;
-@@ -452,6 +490,11 @@
- static int
-+#ifdef WITH_MDN
-+add_ipv4(const char *hostname, int flags, struct addrinfo **aip,
-+      int socktype, int port, int encodeflg)
-+#else
- add_ipv4(const char *hostname, int flags, struct addrinfo **aip,
-       int socktype, int port)
-+#endif /* WITH_MDN */
- {
-       struct addrinfo *ai;
-@@ -477,6 +520,12 @@
-               SIN(ai->ai_addr)->sin_port = port;
-               memcpy(&SIN(ai->ai_addr)->sin_addr, v4_loop, 4);
-+#ifdef WITH_MDN
-+      } else if (lwres_getaddrsbyname_enc(lwrctx, hostname,
-+                                          LWRES_ADDRTYPE_V4,
-+                                          &by, encodeflg) == 0) {
-+#else
-       } else if (lwres_getaddrsbyname(lwrctx, hostname,
-                                       LWRES_ADDRTYPE_V4, &by) == 0) {
-+#endif /* WITH_MDN */
-               addr = LWRES_LIST_HEAD(by->addrs);
-               while (addr != NULL) {
-@@ -512,6 +561,11 @@
- static int
-+#ifdef WITH_MDN
-+add_ipv6(const char *hostname, int flags, struct addrinfo **aip,
-+       int socktype, int port, int encodeflg)
-+#else
- add_ipv6(const char *hostname, int flags, struct addrinfo **aip,
-        int socktype, int port)
-+#endif /* WITH_MDN */
- {
-       struct addrinfo *ai;
-@@ -538,6 +592,12 @@
-               SIN6(ai->ai_addr)->sin6_port = port;
-               memcpy(&SIN6(ai->ai_addr)->sin6_addr, v6_loop, 16);
-+#ifdef WITH_MDN
-+      } else if (lwres_getaddrsbyname_enc(lwrctx, hostname,
-+                                          LWRES_ADDRTYPE_V6,
-+                                          &by, encodeflg) == 0) {
-+#else
-       } else if (lwres_getaddrsbyname(lwrctx, hostname,
-                                       LWRES_ADDRTYPE_V6, &by) == 0) {
-+#endif /* WITH_MDN */
-               addr = LWRES_LIST_HEAD(by->addrs);
-               while (addr != NULL) {
---- ./lib/lwres/gethost.c.orig Wed Jan 24 01:11:10 2001
-+++ ./lib/lwres/gethost.c      Wed Jan 24 01:22:44 2001
-@@ -26,4 +26,7 @@
- #include <string.h>
-+#ifdef WITH_MDN
-+#include <lwres/lwres.h>
-+#endif /* WITH_MDN */
- #include <lwres/netdb.h>
-@@ -37,30 +40,81 @@
- static int copytobuf(struct hostent *, struct hostent *, char *, int);
-+#ifdef WITH_MDN
- struct hostent *
- lwres_gethostbyname(const char *name) {
-+      /* The last parameter is a encoding type. Default is local encoding. */
-+      return (lwres_gethostbyname_enc(name, LWRES_ENCODING_LOCAL));
-+}
-+#endif /* WITH_MDN */
-+
-+struct hostent *
-+#ifdef WITH_MDN
-+lwres_gethostbyname_enc(const char *name, int encodeflg) {
-+#else
-+lwres_gethostbyname(const char *name) {
-+#endif /* WITH_MDN */
-       if (he != NULL)
-               lwres_freehostent(he);
-+#ifdef WITH_MDN
-+      he = lwres_getipnodebyname_enc(name, AF_INET, 0, &lwres_h_errno,
-+                                     encodeflg);
-+#else
-       he = lwres_getipnodebyname(name, AF_INET, 0, &lwres_h_errno);
-+#endif /* WITH_MDN */
-       return (he);
- }
-+#ifdef WITH_MDN
- struct hostent *
- lwres_gethostbyname2(const char *name, int af) {
-+      /* The last parameter is a encoding type. Default is local encoding. */
-+      return (lwres_gethostbyname2_enc(name, af, LWRES_ENCODING_LOCAL));
-+}
-+#endif /* WITH_MDN */
-+
-+struct hostent *
-+#ifdef WITH_MDN
-+lwres_gethostbyname2_enc(const char *name, int af, int encodeflg) {
-+#else
-+lwres_gethostbyname2(const char *name, int af) {
-+#endif /* WITH_MDN */
-       if (he != NULL)
-               lwres_freehostent(he);
-+#ifdef WITH_MDN
-+      he = lwres_getipnodebyname_enc(name, af, 0, &lwres_h_errno, encodeflg);
-+#else
-       he = lwres_getipnodebyname(name, af, 0, &lwres_h_errno);
-+#endif /* WITH_MDN */
-       return (he);
- }
-+#ifdef WITH_MDN
-+struct hostent *
-+lwres_gethostbyaddr(const char *addr, int len, int type) {
-+      /* The last parameter is a encoding type. Default is local encoding. */
-+      return (lwres_gethostbyaddr_enc(addr, len, type,
-+                                      LWRES_ENCODING_LOCAL));
-+}
-+#endif /* WITH_MDN */
-+
- struct hostent *
-+#ifdef WITH_MDN
-+lwres_gethostbyaddr_enc(const char *addr, int len, int type, int encodeflg) {
-+#else
- lwres_gethostbyaddr(const char *addr, int len, int type) {
-+#endif /* WITH_MDN */
-       if (he != NULL)
-               lwres_freehostent(he);
-+#ifdef WITH_MDN
-+      he = lwres_getipnodebyaddr_enc(addr, len, type, &lwres_h_errno,
-+                                     encodeflg);
-+#else
-       he = lwres_getipnodebyaddr(addr, len, type, &lwres_h_errno);
-+#endif /* WITH_MDN */
-       return (he);
- }
-@@ -89,12 +143,32 @@
- }
-+#ifdef WITH_MDN
- struct hostent *
- lwres_gethostbyname_r(const char *name, struct hostent *resbuf,
-               char *buf, int buflen, int *error)
- {
-+      /* The last parameter is a encoding type. Default is local encoding. */
-+      return (lwres_gethostbyname_r_enc(name, resbuf, buf, buflen, error,
-+                                        LWRES_ENCODING_LOCAL));
-+}
-+#endif /* WITH_MDN */
-+
-+struct hostent *
-+#ifdef WITH_MDN
-+lwres_gethostbyname_r_enc(const char *name, struct hostent *resbuf,
-+              char *buf, int buflen, int *error, int encodeflg)
-+#else
-+lwres_gethostbyname_r(const char *name, struct hostent *resbuf,
-+              char *buf, int buflen, int *error)
-+#endif /* WITH_MDN */
-+{
-       struct hostent *he;
-       int res;
-+#ifdef WITH_MDN
-+      he = lwres_getipnodebyname_enc(name, AF_INET, 0, error, encodeflg);
-+#else
-       he = lwres_getipnodebyname(name, AF_INET, 0, error);
-+#endif /* WITH_MDN */
-       if (he == NULL)
-               return (NULL);
-@@ -108,13 +182,35 @@
- }
-+#ifdef WITH_MDN
-+struct hostent  *
-+lwres_gethostbyaddr_r(const char *addr, int len, int type,
-+                    struct hostent *resbuf, char *buf, int buflen,
-+                    int *error)
-+{
-+      /* The last parameter is a encoding type. Default is local encoding. */
-+      return (lwres_gethostbyaddr_r_enc(addr, len, type, resbuf, buf, buflen,
-+                                        error, LWRES_ENCODING_LOCAL));
-+}
-+#endif /* WITH_MDN */
-+
- struct hostent  *
-+#ifdef WITH_MDN
-+lwres_gethostbyaddr_r_enc(const char *addr, int len, int type,
-+                        struct hostent *resbuf, char *buf, int buflen,
-+                        int *error, int encodeflg)
-+#else
- lwres_gethostbyaddr_r(const char *addr, int len, int type,
-                     struct hostent *resbuf, char *buf, int buflen,
-                     int *error)
-+#endif /* WITH_MDN */
- {
-       struct hostent *he;
-       int res;
-+#ifdef WITH_MDN
-+      he = lwres_getipnodebyaddr_enc(addr, len, type, error, encodeflg);
-+#else
-       he = lwres_getipnodebyaddr(addr, len, type, error);
-+#endif /* WITH_MDN */
-       if (he == NULL)
-               return (NULL);
---- ./lib/lwres/getipnode.c.orig       Wed Jan 24 01:11:14 2001
-+++ ./lib/lwres/getipnode.c    Wed Jan 24 01:22:44 2001
-@@ -99,6 +99,22 @@
-  */
-+#ifdef WITH_MDN
- struct hostent *
-+lwres_getipnodebyname(const char *name, int af, int flags, int *error_num)
-+{
-+      /* The last parameter is a encoding type. Default is local encoding. */
-+      return (lwres_getipnodebyname_enc(name, af, flags, error_num,
-+                                        LWRES_ENCODING_LOCAL));
-+}
-+#endif /* WITH_MDN */
-+
-+struct hostent *
-+#ifdef WITH_MDN
-+lwres_getipnodebyname_enc(const char *name, int af, int flags, int *error_num,
-+                        int encodeflg)
-+{
-+#else
- lwres_getipnodebyname(const char *name, int af, int flags, int *error_num) {
-+#endif /* WITH_MDN */
-       int have_v4 = 1, have_v6 = 1;
-       struct in_addr in4;
-@@ -171,5 +187,10 @@
-       if (have_v6 && af == AF_INET6) {
-+#ifdef WITH_MDN               
-+              n = lwres_getaddrsbyname_enc(lwrctx, name, LWRES_ADDRTYPE_V6,
-+                                           &by, encodeflg);
-+#else
-               n = lwres_getaddrsbyname(lwrctx, name, LWRES_ADDRTYPE_V6, &by);
-+#endif /* WITH_MDN */
-               if (n == 0) {
-                       he1 = hostfromname(by, AF_INET6);
-@@ -188,5 +209,10 @@
-            (af == AF_INET6 && (flags & AI_V4MAPPED) != 0 &&
-             (he1 == NULL || (flags & AI_ALL) != 0)))) {
-+#ifdef WITH_MDN
-+              n = lwres_getaddrsbyname_enc(lwrctx, name, LWRES_ADDRTYPE_V4,
-+                                           &by, encodeflg);
-+#else
-               n = lwres_getaddrsbyname(lwrctx, name, LWRES_ADDRTYPE_V4, &by);
-+#endif /* WITH_MDN */
-               if (n == 0) {
-                       he2 = hostfromname(by, AF_INET);
-@@ -220,6 +246,20 @@
- }
-+#ifdef WITH_MDN
-+struct hostent *
-+lwres_getipnodebyaddr(const void *src, size_t len, int af, int *error_num) {
-+      /* The last parameter is a encoding type. Default is local encoding. */
-+      return (lwres_getipnodebyaddr_enc(src, len, af, error_num,
-+                                        LWRES_ENCODING_LOCAL));
-+}
-+#endif /* WITH_MDN */
- struct hostent *
-+#ifdef WITH_MDN
-+lwres_getipnodebyaddr_enc(const void *src, size_t len, int af, int *error_num,
-+                        int encodeflg)
-+{
-+#else
- lwres_getipnodebyaddr(const void *src, size_t len, int af, int *error_num) {
-+#endif /* WITH_MDN */
-       struct hostent *he1, *he2;
-       lwres_context_t *lwrctx = NULL;
-@@ -282,6 +322,12 @@
-                       (void) lwres_conf_parse(lwrctx, lwres_resolv_conf);
-               if (n == LWRES_R_SUCCESS)
-+#ifdef WITH_MDN
-+                      n = lwres_getnamebyaddr_enc(lwrctx, LWRES_ADDRTYPE_V4,
-+                                                  INADDRSZ, cp, &by,
-+                                                  encodeflg);
-+#else
-                       n = lwres_getnamebyaddr(lwrctx, LWRES_ADDRTYPE_V4,
-                                               INADDRSZ, cp, &by);
-+#endif /* WITH_MDN */
-               if (n != LWRES_R_SUCCESS) {
-                       lwres_conf_clear(lwrctx);
-@@ -326,6 +372,11 @@
-               (void) lwres_conf_parse(lwrctx, lwres_resolv_conf);
-       if (n == LWRES_R_SUCCESS)
-+#ifdef WITH_MDN
-+              n = lwres_getnamebyaddr_enc(lwrctx, LWRES_ADDRTYPE_V6,
-+                                          IN6ADDRSZ, src, &by, encodeflg);
-+#else
-               n = lwres_getnamebyaddr(lwrctx, LWRES_ADDRTYPE_V6, IN6ADDRSZ,
-                                       src, &by);
-+#endif /* WITH_MDN */
-       if (n != 0) {
-               *error_num = HOST_NOT_FOUND;
---- ./lib/lwres/getnameinfo.c.orig     Wed Jan 24 01:11:15 2001
-+++ ./lib/lwres/getnameinfo.c  Wed Jan 24 01:22:44 2001
-@@ -106,8 +106,24 @@
-       } while (0)
-+#ifdef WITH_MDN
- int
- lwres_getnameinfo(const struct sockaddr *sa, size_t salen, char *host,
-                 size_t hostlen, char *serv, size_t servlen, int flags)
- {
-+      /* The last parameter is a encoding type. Default is local encoding. */
-+      return (lwres_getnameinfo_enc(sa, salen, host, hostlen, serv, servlen,
-+                                    flags, LWRES_ENCODING_LOCAL));
-+}
-+#endif /* WITH_MDN */
-+int
-+#ifdef WITH_MDN
-+lwres_getnameinfo_enc(const struct sockaddr *sa, size_t salen, char *host,
-+                    size_t hostlen, char *serv, size_t servlen, int flags,
-+                    int encodeflg)
-+#else
-+lwres_getnameinfo(const struct sockaddr *sa, size_t salen, char *host,
-+                size_t hostlen, char *serv, size_t servlen, int flags)
-+#endif /* WITH_MDN */
-+{
-       struct afd *afd;
-       struct servent *sp;
-@@ -259,6 +275,12 @@
-               if (n == 0)
-+#ifdef WITH_MDN
-+                      n = lwres_getnamebyaddr_enc(lwrctx, lwf,
-+                                                  afd->a_addrlen, addr, &by,
-+                                                  encodeflg);
-+#else
-                       n = lwres_getnamebyaddr(lwrctx, lwf, afd->a_addrlen,
-                                               addr, &by);
-+#endif /* WITH_MDN */
-               if (n == 0) {
-                       if (flags & NI_NOFQDN) {
---- ./lib/lwres/include/lwres/lwres.h.orig     Wed Jan 24 01:10:57 2001
-+++ ./lib/lwres/include/lwres/lwres.h  Wed Jan 24 01:22:44 2001
-@@ -27,4 +27,7 @@
- #include <lwres/list.h>
- #include <lwres/lwpacket.h>
-+#ifdef WITH_MDN
-+#include <mdn/resconf.h>
-+#endif /* WITH_MDN */
- /*
-@@ -247,4 +250,7 @@
-       lwres_uint8_t   ndots;         /* set to n in 'options ndots:n' */
-       lwres_uint8_t   no_tld_query;  /* non-zero if 'options no_tld_query' */
-+#ifdef WITH_MDN
-+      mdn_resconf_t   mdnctx;         /* structure for mdn configuration */
-+#endif /* WITH_MDN */
- } lwres_conf_t;
-@@ -255,4 +261,10 @@
- #define LWRES_MAX_ADDRS                       64              /* max # of addrs */
-+#ifdef WITH_MDN
-+/* These are used for specifying encoding of the domain names */
-+#define LWRES_ENCODING_LOCAL          0       /* local encoding */
-+#define LWRES_ENCODING_UCS            1       /* UTF-8 encoding */
-+#endif /* WITH_MDN */
-+
- LWRES_LANG_BEGINDECLS
-@@ -264,4 +276,30 @@
- extern const char *lwres_resolv_conf;
-+#ifdef WITH_MDN
-+/*
-+ * Forward declarations
-+ */
-+struct addrinfo;
-+struct sockaddr;
-+
-+int           lwres_getaddrinfo_enc(const char *, const char *,
-+                                    const struct addrinfo *,
-+                                    struct addrinfo **,
-+                                    int encodeflg);
-+int           lwres_getnameinfo_enc(const struct sockaddr *, size_t, char *,
-+                                    size_t, char *, size_t, int, int);
-+struct hostent        *lwres_gethostbyaddr_enc(const char *, int, int, int);
-+struct hostent        *lwres_gethostbyname_enc(const char *, int);
-+struct hostent        *lwres_gethostbyname2_enc(const char *, int, int);
-+struct hostent        *lwres_getipnodebyname_enc(const char *, int, int, int *, int);
-+struct hostent        *lwres_getipnodebyaddr_enc(const void *, size_t, int, int *,
-+                                         int);
-+struct hostent        *lwres_gethostbyaddr_r_enc(const char *, int, int,
-+                                         struct hostent *, char *, int,
-+                                         int *, int);
-+struct hostent        *lwres_gethostbyname_r_enc(const char *, struct hostent *,
-+                                         char *, int, int *, int);
-+#endif /* WITH_MDN */
-+
- lwres_result_t
- lwres_gabnrequest_render(lwres_context_t *ctx, lwres_gabnrequest_t *req,
-@@ -277,7 +315,13 @@
- lwres_result_t
-+#ifdef WITH_MDN
-+lwres_gabnresponse_parse(lwres_context_t *ctx, lwres_buffer_t *b,
-+                       lwres_lwpacket_t *pkt,
-+                       lwres_gabnresponse_t **structp, int encodeflg);
-+#else
- lwres_gabnresponse_parse(lwres_context_t *ctx, lwres_buffer_t *b,
-                        lwres_lwpacket_t *pkt,
-                        lwres_gabnresponse_t **structp);
-+#endif /* WITH_MDN */
- void
-@@ -332,8 +376,15 @@
-                       lwres_lwpacket_t *pkt, lwres_gnbarequest_t **structp);
-+#ifdef WITH_MDN
-+lwres_result_t
-+lwres_gnbaresponse_parse(lwres_context_t *ctx, lwres_buffer_t *b,
-+                       lwres_lwpacket_t *pkt,
-+                       lwres_gnbaresponse_t **structp, int encodeflg);
-+#else
- lwres_result_t
- lwres_gnbaresponse_parse(lwres_context_t *ctx, lwres_buffer_t *b,
-                        lwres_lwpacket_t *pkt,
-                        lwres_gnbaresponse_t **structp);
-+#endif /* WITH_MDN */
- void
-@@ -570,4 +621,10 @@
- lwres_getaddrsbyname(lwres_context_t *ctx, const char *name,
-                    lwres_uint32_t addrtypes, lwres_gabnresponse_t **structp);
-+#ifdef WITH_MDN
-+lwres_result_t
-+lwres_getaddrsbyname_enc(lwres_context_t *ctx, const char *name,
-+                       lwres_uint32_t addrtypes,
-+                       lwres_gabnresponse_t **structp, int encodeflg);
-+#endif /* WITH_MDN */
- lwres_result_t
-@@ -575,4 +632,10 @@
-                   lwres_uint16_t addrlen, const unsigned char *addr,
-                   lwres_gnbaresponse_t **structp);
-+#ifdef WITH_MDN
-+lwres_result_t
-+lwres_getnamebyaddr_enc(lwres_context_t *ctx, lwres_uint32_t addrtype,
-+                      lwres_uint16_t addrlen, const unsigned char *addr,
-+                      lwres_gnbaresponse_t **structp, int encodeflg);
-+#endif /* WITH_MDN */
- lwres_result_t
-@@ -580,4 +643,9 @@
-                    lwres_uint16_t rdclass, lwres_uint16_t rdtype,
-                    lwres_uint32_t flags, lwres_grbnresponse_t **structp);
-+
-+#ifdef WITH_MDN
-+lwres_result_t
-+lwres_result_frommdn(mdn_result_t r);
-+#endif
- LWRES_LANG_ENDDECLS
---- ./lib/lwres/lwconfig.c.orig        Wed Jan 24 01:11:20 2001
-+++ ./lib/lwres/lwconfig.c     Wed Jan 24 01:22:45 2001
-@@ -56,4 +56,7 @@
- #include <lwres/net.h>
- #include <lwres/result.h>
-+#ifdef WITH_MDN
-+#include <mdn/result.h>
-+#endif /* WITH_MDN */
- #include "assert_p.h"
-@@ -241,4 +244,13 @@
-               lwres_resetaddr(&confdata->sortlist[i].mask);
-       }
-+#ifdef WITH_MDN
-+      /*
-+       * Initialize the context for MDN.
-+       */
-+      confdata->mdnctx = NULL;
-+      if (mdn_resconf_initialize() == mdn_success) {
-+              (void)mdn_resconf_create(&confdata->mdnctx);
-+      }
-+#endif /* WITH_MDN */
- }
-@@ -606,4 +618,9 @@
-       fclose(fp);
-+#ifdef WITH_MDN
-+      /* Read mdn configuration file. */
-+      if (confdata->mdnctx != NULL)
-+              (void)mdn_resconf_loadfile(confdata->mdnctx, NULL);
-+#endif
-       return (ret);
- }
---- ./lib/lwres/lwres_gabn.c.orig      Wed Jan 24 01:11:25 2001
-+++ ./lib/lwres/lwres_gabn.c   Wed Jan 24 01:22:45 2001
-@@ -28,4 +28,7 @@
- #include <lwres/lwres.h>
- #include <lwres/result.h>
-+#ifdef WITH_MDN
-+#include <mdn/res.h>
-+#endif /* WITH_MDN */
- #include "context_p.h"
-@@ -245,6 +248,12 @@
- lwres_result_t
-+#ifdef WITH_MDN
-+lwres_gabnresponse_parse(lwres_context_t *ctx, lwres_buffer_t *b,
-+                       lwres_lwpacket_t *pkt, lwres_gabnresponse_t **structp,
-+                       int encodeflg)
-+#else
- lwres_gabnresponse_parse(lwres_context_t *ctx, lwres_buffer_t *b,
-                       lwres_lwpacket_t *pkt, lwres_gabnresponse_t **structp)
-+#endif /* WITH_MDN */
- {
-       lwres_result_t ret;
-@@ -256,4 +265,9 @@
-       lwres_addrlist_t addrlist;
-       lwres_addr_t *addr;
-+#ifdef WITH_MDN
-+      char *tmp_realname;
-+      char *tmp_aliases;
-+      mdn_result_t r;
-+#endif /* WITH_MDN */
-       REQUIRE(ctx != NULL);
-@@ -319,4 +333,26 @@
-       if (ret != LWRES_R_SUCCESS)
-               goto out;
-+#ifdef WITH_MDN
-+      /*
-+       * Convert from UCS to local encoding if needed.
-+       */
-+      tmp_realname = (char *)malloc(1024);
-+      switch (encodeflg) {
-+      case LWRES_ENCODING_LOCAL:      /* from UCS to local encoding */
-+              r = mdn_res_ucstolocal(ctx->confdata.mdnctx, gabn->realname,
-+                                     tmp_realname, 1024);
-+              if (r != mdn_success) {
-+                      free(tmp_realname);
-+                      tmp_realname = NULL;
-+                      ret = lwres_result_frommdn(r);
-+                      goto out;
-+              }
-+              break;
-+      default:
-+              strcpy(tmp_realname, gabn->realname);
-+              break;
-+      }
-+      gabn->realname = tmp_realname;
-+#endif /* WITH_MDN */
-       /*
-@@ -328,4 +364,27 @@
-               if (ret != LWRES_R_SUCCESS)
-                       goto out;
-+#ifdef WITH_MDN
-+              /*
-+               * Convert from UCS to local encoding.
-+               */
-+              tmp_aliases = (char *)malloc(1024);
-+              switch (encodeflg) {
-+              case LWRES_ENCODING_LOCAL:     /* from UCS to local encoding */
-+                      r = mdn_res_ucstolocal(ctx->confdata.mdnctx,
-+                                             gabn->aliases[x],
-+                                             tmp_aliases, 1024);
-+                      if (r != mdn_success) {
-+                              free(tmp_aliases);
-+                              tmp_aliases = NULL;
-+                              ret = lwres_result_frommdn(r);
-+                              goto out;
-+                      }
-+                      break;
-+              default:        /* When encoding on DNS protocol */
-+                      strcpy(tmp_aliases, gabn->aliases[x]);
-+                      break;
-+              }
-+              gabn->aliases[x] = tmp_aliases;
-+#endif /* WITH_MDN */
-       }
-@@ -391,4 +450,7 @@
-       lwres_gabnresponse_t *gabn;
-       lwres_addr_t *addr;
-+#ifdef WITH_MDN
-+      unsigned int x;
-+#endif /* WITH_MDN */
-       REQUIRE(ctx != NULL);
-@@ -398,4 +460,12 @@
-       *structp = NULL;
-+#ifdef WITH_MDN
-+      free(gabn->realname);
-+      gabn->realname = NULL;
-+      for (x = 0 ; x < gabn->naliases ; x++) {
-+              free(gabn->aliases[x]);
-+              gabn->aliases[x] = NULL;
-+      }
-+#endif /* WITH_MDN */
-       if (gabn->naliases > 0) {
-               CTXFREE(gabn->aliases, sizeof(char *) * gabn->naliases);
---- ./lib/lwres/lwres_gnba.c.orig      Wed Jan 24 01:11:26 2001
-+++ ./lib/lwres/lwres_gnba.c   Wed Jan 24 01:22:45 2001
-@@ -28,4 +28,7 @@
- #include <lwres/lwres.h>
- #include <lwres/result.h>
-+#ifdef WITH_MDN
-+#include <mdn/res.h>
-+#endif /* WITH_MDN */
- #include "context_p.h"
-@@ -204,6 +207,12 @@
- lwres_result_t
-+#ifdef WITH_MDN
-+lwres_gnbaresponse_parse(lwres_context_t *ctx, lwres_buffer_t *b,
-+                       lwres_lwpacket_t *pkt, lwres_gnbaresponse_t **structp,
-+                       int encodeflg)
-+#else
- lwres_gnbaresponse_parse(lwres_context_t *ctx, lwres_buffer_t *b,
-                        lwres_lwpacket_t *pkt, lwres_gnbaresponse_t **structp)
-+#endif /* WITH_MDN */
- {
-       int ret;
-@@ -212,4 +221,9 @@
-       lwres_uint16_t naliases;
-       lwres_gnbaresponse_t *gnba;
-+#ifdef WITH_MDN
-+      char *tmp_realname;
-+      char *tmp_aliases;
-+      mdn_result_t r;
-+#endif /* WITH_MDN */
-       REQUIRE(ctx != NULL);
-@@ -261,4 +275,26 @@
-       if (ret != LWRES_R_SUCCESS)
-               goto out;
-+#ifdef WITH_MDN
-+      /*
-+       * Convert from UCS to local encoding if needed.
-+       */
-+      tmp_realname = (char *)malloc(1024);
-+      switch (encodeflg) {
-+      case LWRES_ENCODING_LOCAL:      /* from UCS to local encoding */
-+              r = mdn_res_ucstolocal(ctx->confdata.mdnctx, gnba->realname,
-+                                     tmp_realname, 1024);
-+              if (r != mdn_success) {
-+                      free(tmp_realname);
-+                      tmp_realname = NULL;
-+                      ret = lwres_result_frommdn(r);
-+                      goto out;
-+              }
-+              break;
-+      default:
-+              strcpy(tmp_realname, gnba->realname);
-+              break;
-+      }
-+      gnba->realname = tmp_realname;
-+#endif /* WITH_MDN */
-       /*
-@@ -270,4 +306,27 @@
-               if (ret != LWRES_R_SUCCESS)
-                       goto out;
-+#ifdef WITH_MDN
-+              /*
-+               * Convert from UCS to local encoding.
-+               */
-+              tmp_aliases = (char *)malloc(1024);
-+              switch (encodeflg) {
-+              case LWRES_ENCODING_LOCAL:     /* from UCS to local encoding */
-+                      r = mdn_res_ucstolocal(ctx->confdata.mdnctx,
-+                                             gnba->aliases[x],
-+                                             tmp_aliases, 1024);
-+                      if (r != mdn_success) {
-+                              free(tmp_aliases);
-+                              tmp_aliases = NULL;
-+                              ret = lwres_result_frommdn(r);
-+                              goto out;
-+                      }
-+                      break;
-+              default:        /* When encoding on DNS protocol */
-+                      strcpy(tmp_aliases, gnba->aliases[x]);
-+                      break;
-+              }
-+              gnba->aliases[x] = tmp_aliases;
-+#endif /* WITH_MDN */
-       }
-@@ -311,4 +370,7 @@
- {
-       lwres_gnbaresponse_t *gnba;
-+#ifdef WITH_MDN
-+      unsigned int x;
-+#endif /* WITH_MDN */
-       REQUIRE(ctx != NULL);
-@@ -318,4 +380,12 @@
-       *structp = NULL;
-+#ifdef WITH_MDN
-+      free(gnba->realname);
-+      gnba->realname = NULL;
-+      for (x = 0 ; x < gnba->naliases ; x++) {
-+              free(gnba->aliases[x]);
-+              gnba->aliases[x] = NULL;
-+      }
-+#endif /* WITH_MDN */
-       if (gnba->naliases > 0) {
-               CTXFREE(gnba->aliases, sizeof(char *) * gnba->naliases);
---- ./lib/lwres/lwresutil.c.orig       Wed Jan 24 01:11:30 2001
-+++ ./lib/lwres/lwresutil.c    Wed Jan 24 01:22:45 2001
-@@ -33,4 +33,7 @@
- #include <lwres/lwres.h>
- #include <lwres/result.h>
-+#ifdef WITH_MDN
-+#include <mdn/res.h>
-+#endif /* WITH_MDN */
- #include "assert_p.h"
-@@ -160,8 +163,24 @@
- }
-+#ifdef WITH_MDN
- lwres_result_t
- lwres_getaddrsbyname(lwres_context_t *ctx, const char *name,
-                    lwres_uint32_t addrtypes, lwres_gabnresponse_t **structp)
- {
-+      /* The last parameter is a encoding type. Default is local encoding. */
-+      return (lwres_getaddrsbyname_enc(ctx, name, addrtypes, structp, 0));
-+}
-+#endif /* WITH_MDN */
-+
-+lwres_result_t
-+#ifdef WITH_MDN
-+lwres_getaddrsbyname_enc(lwres_context_t *ctx, const char *name,
-+                   lwres_uint32_t addrtypes, lwres_gabnresponse_t **structp,
-+                   int encodeflg)
-+#else
-+lwres_getaddrsbyname(lwres_context_t *ctx, const char *name,
-+                   lwres_uint32_t addrtypes, lwres_gabnresponse_t **structp)
-+#endif /* WITH_MDN */
-+{
-       lwres_gabnrequest_t request;
-       lwres_gabnresponse_t *response;
-@@ -174,4 +193,8 @@
-       char target_name[1024];
-       unsigned int target_length;
-+#ifdef WITH_MDN
-+      mdn_result_t r;
-+      char request_name[1024];
-+#endif /* WITH_MDN */
-       REQUIRE(ctx != NULL);
-@@ -201,6 +224,35 @@
-        */
-       request.addrtypes = addrtypes;
-+#ifdef WITH_MDN
-+      /*
-+       * Convert from local encoding to UCS, then perform normalization.
-+       */
-+      switch (encodeflg) {
-+      case LWRES_ENCODING_LOCAL:      /* from local encoding */
-+              r = mdn_res_localtoucs(ctx->confdata.mdnctx, target_name,
-+                                     request_name, sizeof(request_name));
-+              if (r == mdn_success) {
-+                      r = mdn_res_normalize(ctx->confdata.mdnctx,
-+                                            request_name,
-+                                            target_name,
-+                                            sizeof(target_name));
-+              }
-+              request.name = target_name;
-+              break;
-+      default:
-+              r = mdn_res_normalize(ctx->confdata.mdnctx, target_name,
-+                                    request_name, sizeof(request_name));
-+              request.name = request_name;
-+              break;
-+      }
-+      if (r != mdn_success) {
-+              ret = lwres_result_frommdn(r);
-+              goto out;
-+      }
-+      request.namelen = strlen(request.name);
-+#else
-       request.name = target_name;
-       request.namelen = target_length;
-+#endif /* WITH_MDN */
-       pkt.pktflags = 0;
-       pkt.serial = serial;
-@@ -251,5 +303,9 @@
-        * Parse the response.
-        */
-+#ifdef WITH_MDN
-+      ret = lwres_gabnresponse_parse(ctx, &b_in, &pkt, &response, encodeflg);
-+#else
-       ret = lwres_gabnresponse_parse(ctx, &b_in, &pkt, &response);
-+#endif /* WITH_MDN */
-       if (ret != LWRES_R_SUCCESS)
-               goto out;
-@@ -273,8 +329,25 @@
-+#ifdef WITH_MDN
-+lwres_result_t
-+lwres_getnamebyaddr(lwres_context_t *ctx, lwres_uint32_t addrtype,
-+                  lwres_uint16_t addrlen, const unsigned char *addr,
-+                  lwres_gnbaresponse_t **structp)
-+{
-+      /* The last parameter is a encoding type. Default is local encoding. */
-+      return (lwres_getnamebyaddr_enc(ctx, addrtype, addrlen, addr, structp,
-+                                      LWRES_ENCODING_LOCAL));
-+}
-+#endif /* WITH_MDN */
- lwres_result_t
-+#ifdef WITH_MDN
-+lwres_getnamebyaddr_enc(lwres_context_t *ctx, lwres_uint32_t addrtype,
-+                      lwres_uint16_t addrlen, const unsigned char *addr,
-+                      lwres_gnbaresponse_t **structp, int encodeflg)
-+#else
- lwres_getnamebyaddr(lwres_context_t *ctx, lwres_uint32_t addrtype,
-                   lwres_uint16_t addrlen, const unsigned char *addr,
-                   lwres_gnbaresponse_t **structp)
-+#endif /* WITH_MDN */
- {
-       lwres_gnbarequest_t request;
-@@ -359,5 +432,9 @@
-        * Parse the response.
-        */
-+#ifdef WITH_MDN
-+      ret = lwres_gnbaresponse_parse(ctx, &b_in, &pkt, &response, encodeflg);
-+#else
-       ret = lwres_gnbaresponse_parse(ctx, &b_in, &pkt, &response);
-+#endif /* WITH_MDN */
-       if (ret != LWRES_R_SUCCESS)
-               goto out;
-@@ -379,4 +456,21 @@
-       return (ret);
- }
-+
-+#ifdef WITH_MDN
-+lwres_result_t
-+lwres_result_frommdn(mdn_result_t r) {
-+      /*
-+       * Convert mDNkit's result code to lwres's one.
-+       */
-+      switch (r) {
-+      case mdn_success:
-+              return (LWRES_R_SUCCESS);
-+      case mdn_nomemory:
-+              return (LWRES_R_NOMEMORY);
-+      default:
-+              return (LWRES_R_FAILURE);
-+      }
-+}
-+#endif
- lwres_result_t
---- ./bin/dig/dighost.c.orig   Wed Jan 24 00:48:34 2001
-+++ ./bin/dig/dighost.c        Wed Jan 24 01:24:34 2001
-@@ -33,4 +33,14 @@
- #include <string.h>
- #include <limits.h>
-+#ifdef HAVE_LOCALE_H
-+#include <locale.h>
-+#endif
-+
-+#ifdef WITH_MDN
-+#include <mdn/result.h>
-+#include <mdn/log.h>
-+#include <mdn/resconf.h>
-+#include <mdn/res.h>
-+#endif
- #include <dns/byaddr.h>
-@@ -133,4 +143,18 @@
- isc_uint32_t rr_limit = INT_MAX;
-+#ifdef WITH_MDN
-+mdn_resconf_t mdnconf;
-+
-+static void           initialize_mdn(void);
-+static isc_result_t   output_filter(isc_buffer_t *buffer,
-+                                    unsigned int used_org,
-+                                    isc_boolean_t absolute);
-+static mdn_result_t   append_textname(char *name, const char *origin,
-+                                      size_t namesize);
-+static void           mdn_check_result(mdn_result_t r, const char *msg);
-+
-+#define MAXDLEN               256
-+#endif
-+
- /*
-  * Apply and clear locks at the event level in global task.
-@@ -675,4 +699,8 @@
-       }
-+#ifdef WITH_MDN
-+      initialize_mdn();
-+#endif
-+
-       if (keyfile[0] != 0)
-               setup_file_key();
-@@ -1221,4 +1249,9 @@
-       isc_buffer_t b;
-       char store[MXNAME];
-+      char *textname;
-+#ifdef WITH_MDN
-+      mdn_result_t mr;
-+      char ucs_name[MXNAME], ucs_tmp[MXNAME];
-+#endif
-       REQUIRE(lookup != NULL);
-@@ -1274,4 +1307,13 @@
-               result = dns_name_fromtext(lookup->oname, &b, dns_rootname,
-                                          ISC_FALSE, &lookup->onamebuf);
-+#ifdef WITH_MDN
-+      mr = mdn_res_localtoucs(mdnconf, lookup->textname, ucs_name,
-+                              sizeof(ucs_name));
-+      mdn_check_result(mr, "local to UCS conversion");
-+      textname = ucs_name;
-+#else
-+      textname = lookup->textname;
-+#endif
-+
-               if (result != ISC_R_SUCCESS) {
-                       dns_message_puttempname(lookup->sendmsg,
-@@ -1281,4 +1323,22 @@
-                       fatal("'%s' is not in legal name syntax (%s)",
-                             lookup->origin->origin,
-+#ifdef WITH_MDN
-+              /*
-+               * We cannot convert name and origin separately and combine
-+               * them later, because some encoding scheme (such as UTF-5)
-+               * can be applied only to an entire domain name, not a
-+               * partial one.
-+               */
-+              mr = append_textname(ucs_name, lookup->origin->origin,
-+                                   sizeof(ucs_name));
-+              mdn_check_result(mr, "concatenation with origin");
-+              mr = mdn_res_normalize(mdnconf, ucs_name, ucs_tmp,
-+                                     sizeof(ucs_tmp));
-+              mdn_check_result(mr, "normalization");
-+              mr = mdn_res_ucstodns(mdnconf, ucs_tmp, ucs_name,
-+                                    sizeof(ucs_name));
-+              mdn_check_result(mr, "UCS to DNS encoding conversion");
-+              goto no_origin;
-+#else
-                             dns_result_totext(result));
-               }
-@@ -1302,7 +1362,26 @@
-               }
-               dns_message_puttempname(lookup->sendmsg, &lookup->oname);
-+#endif
-       } else {
-               debug("using root origin");
-+#ifdef WITH_MDN
-+      no_origin:
-+#endif
-               if (!lookup->trace_root) {
-+#ifdef WITH_MDN
-+                      mr = mdn_res_normalize(mdnconf, ucs_name, ucs_tmp,
-+                                             sizeof(ucs_tmp));
-+                      mdn_check_result(mr, "normalization");
-+                      mr = mdn_res_ucstodns(mdnconf, ucs_tmp, ucs_name,
-+                                            sizeof(ucs_name));
-+                      mdn_check_result(mr, "UCS to DNS encoding conversion");
-+                      len = strlen(ucs_name);
-+                      isc_buffer_init(&b, ucs_name, len);
-+                      isc_buffer_add(&b, len);
-+                      result = dns_name_fromtext(lookup->name, &b,
-+                                                 dns_rootname,
-+                                                 ISC_FALSE,
-+                                                 &lookup->namebuf);
-+#else
-                       len = strlen(lookup->textname);
-                       isc_buffer_init(&b, lookup->textname, len);
-@@ -1312,4 +1391,5 @@
-                                                  ISC_FALSE,
-                                                  &lookup->namebuf);
-+#endif
-               } else {
-                       dns_name_clone(dns_rootname, lookup->name);
-@@ -2711,2 +2791,123 @@
-               isc_mem_destroy(&mctx);
- }
-+
-+#ifdef WITH_MDN
-+static void
-+initialize_mdn(void) {
-+      mdn_result_t r;
-+      mdn_converter_t conv;
-+
-+#ifdef HAVE_SETLOCALE
-+      /* Set locale */
-+      (void)setlocale(LC_ALL, "");
-+#endif
-+
-+      /* General initialization. */
-+      r = mdn_resconf_initialize();
-+      if (r != mdn_success)
-+              fatal("mdn initialization failed: %s",
-+                    mdn_result_tostring(r));
-+
-+      /* Create configuration context. */
-+      r = mdn_resconf_create(&mdnconf);
-+      if (r != mdn_success)
-+              fatal("mdn resconf initialization failed: %s",
-+                    mdn_result_tostring(r));
-+
-+
-+      /* Load mdn configuration file. */
-+      r = mdn_resconf_loadfile(mdnconf, NULL);
-+      if (r != mdn_success)
-+              fatal("mdn configuration loading failed: %s",
-+                    mdn_result_tostring(r));
-+
-+      /* Allow utf-8 characters in domain names if necessary. */
-+      if ((conv = mdn_resconf_serverconverter(mdnconf)) != NULL &&
-+          !mdn_converter_isasciicompatible(conv)) {
-+              debug("allowing UTF-8 characters in domain names");
-+              dns_name_allowutf8(ISC_TRUE);
-+      }
-+      /* Set domain name -> text post-conversion filter. */
-+      dns_name_settotextfilter(output_filter);
-+}
-+
-+static isc_result_t
-+output_filter(isc_buffer_t *buffer, unsigned int used_org,
-+            isc_boolean_t absolute)
-+{
-+      char tmp1[MAXDLEN], tmp2[MAXDLEN];
-+      size_t fromlen, tolen;
-+      isc_boolean_t end_with_dot;
-+
-+      /*
-+       * Copy contents of 'buffer' to 'tmp1', supply trailing dot
-+       * if 'absolute' is true, and terminate with NUL.
-+       */
-+      fromlen = isc_buffer_usedlength(buffer) - used_org;
-+      if (fromlen >= MAXDLEN)
-+              return (ISC_R_SUCCESS);
-+      memcpy(tmp1, (char *)isc_buffer_base(buffer) + used_org, fromlen);
-+      end_with_dot = (tmp1[fromlen - 1] == '.') ? ISC_TRUE : ISC_FALSE;
-+      if (absolute && !end_with_dot) {
-+              fromlen++;
-+              if (fromlen >= MAXDLEN)
-+                      return (ISC_R_SUCCESS);
-+              tmp1[fromlen - 1] = '.';
-+      }
-+      tmp1[fromlen] = '\0';
-+
-+      /*
-+       * Convert contents of 'tmp1' to local encoding.
-+       */
-+      if (mdn_res_dnstoucs(mdnconf, tmp1, tmp2, MAXDLEN)
-+          != mdn_success ||
-+          mdn_res_ucstolocal(mdnconf, tmp2, tmp1, MAXDLEN)
-+          != mdn_success)
-+              return (ISC_R_SUCCESS);
-+
-+      /*
-+       * Copy the converted contents in 'tmp1' back to 'buffer'.
-+       * If we have appended trailing dot, remove it.
-+       */
-+      tolen = strlen(tmp1);
-+      if (absolute && !end_with_dot && tmp1[tolen - 1] == '.')
-+              tolen--;
-+
-+      if (isc_buffer_length(buffer) < used_org + tolen)
-+              return (ISC_R_NOSPACE);
-+
-+      isc_buffer_subtract(buffer, isc_buffer_usedlength(buffer) - used_org);
-+      memcpy(isc_buffer_used(buffer), tmp1, tolen);
-+      isc_buffer_add(buffer, tolen);
-+
-+      return (ISC_R_SUCCESS);
-+}
-+
-+static mdn_result_t
-+append_textname(char *name, const char *origin, size_t namesize) {
-+      size_t namelen = strlen(name);
-+      size_t originlen = strlen(origin);
-+
-+      /* Already absolute? */
-+      if (namelen > 0 && name[namelen - 1] == '.')
-+              return mdn_success;
-+
-+      /* Append dot and origin */
-+
-+      if (namelen + 1 + originlen >= namesize)
-+              return mdn_buffer_overflow;
-+
-+      name[namelen++] = '.';
-+      (void)strcpy(name + namelen, origin);
-+      return mdn_success;
-+}
-+
-+static void
-+mdn_check_result(mdn_result_t r, const char *msg) {
-+      if (r != mdn_success) {
-+              exitcode = 1;
-+              fatal("%s: %s", msg, mdn_result_tostring(r));
-+      }
-+}
-+
-+#endif /* WITH_MDN */
---- ./bin/named/Makefile.in.orig       Wed Jan 24 00:49:10 2001
-+++ ./bin/named/Makefile.in    Wed Jan 24 01:22:45 2001
-@@ -34,5 +34,5 @@
- CINCLUDES =   -I${srcdir}/include -I${srcdir}/unix/include \
-               ${LWRES_INCLUDES} ${DNS_INCLUDES} ${ISC_INCLUDES} \
--              ${OMAPI_INCLUDES} ${DBDRIVER_INCLUDES}
-+              ${OMAPI_INCLUDES} ${DBDRIVER_INCLUDES} \
- CDEFINES =
-@@ -52,5 +52,5 @@
- LIBS =                ${LWRESLIBS} ${OMAPILIBS} ${DNSLIBS} ${ISCLIBS} \
--              ${DBDRIVER_LIBS} @LIBS@
-+              ${DBDRIVER_LIBS} ${ICONVLIB} @LIBS@
- SUBDIRS =     unix
-@@ -64,5 +64,5 @@
-               zoneconf.@O@ \
-               lwaddr.@O@ lwresd.@O@ lwdclient.@O@ lwderror.@O@ lwdgabn.@O@ \
--              lwdgnba.@O@ lwdgrbn.@O@ lwdnoop.@O@ lwsearch.@O@ \
-+              lwdgnba.@O@ lwdgrbn.@O@ lwdmdn.@O@ lwdnoop.@O@ lwsearch.@O@ \
-               $(DBDRIVER_OBJS)
-@@ -75,5 +75,5 @@
-               zoneconf.c \
-               lwaddr.c lwresd.c lwdclient.c lwderror.c lwdgabn.c \
--              lwdgnba.c lwdgrbn.c lwdnoop.c lwsearch.c \
-+              lwdgnba.c lwdgrbn.c lwdmdn.c lwdnoop.c lwsearch.c \
-               $(DBDRIVER_SRCS)
---- ./bin/named/include/named/globals.h.orig   Wed Jan 24 00:49:01 2001
-+++ ./bin/named/include/named/globals.h        Wed Jan 24 01:22:45 2001
-@@ -104,4 +104,12 @@
- EXTERN const char *           ns_g_username           INIT(NULL);
-+#ifdef WITH_MDN
-+/*
-+ * MDN configuration.
-+ */
-+EXTERN char *                 lwresd_g_mdnconffile;
-+EXTERN isc_boolean_t          lwresd_g_mdnreloadwanted;
-+#endif
-+
- #undef EXTERN
- #undef INIT
---- ./bin/named/include/named/lwdmdn.h.orig    Wed Jan 24 01:22:45 2001
-+++ ./bin/named/include/named/lwdmdn.h Wed Jan 24 01:22:45 2001
-@@ -0,0 +1,23 @@
-+/* $Id: lwdmdn.h,v 1.1 2000/08/16 08:55:32 ishisone Exp $ */
-+
-+#ifndef NAMED_LWDMDN_H
-+#define NAMED_LWDMDN_H
-+
-+#include <isc/types.h>
-+#include <mdn/result.h>
-+
-+ISC_LANG_BEGINDECLS
-+
-+void
-+ns_lwdmdn_initialize(void);
-+
-+isc_result_t
-+ns_lwdmdn_convertfromutf8(isc_buffer_t *from_buffer, isc_buffer_t *to_buffer);
-+
-+isc_result_t
-+ns_lwdmdn_converttoutf8(isc_buffer_t *from_buffer, isc_buffer_t *to_buffer);
-+
-+ISC_LANG_ENDDECLS
-+
-+#endif /* NAMED_LWDMDN_H */
-+
---- ./bin/named/lwdgabn.c.orig Wed Jan 24 00:49:30 2001
-+++ ./bin/named/lwdgabn.c      Wed Jan 24 01:22:45 2001
-@@ -35,4 +35,7 @@
- #include <named/lwaddr.h>
- #include <named/lwdclient.h>
-+#ifdef WITH_MDN
-+#include <named/lwdmdn.h>
-+#endif
- #include <named/lwresd.h>
- #include <named/lwsearch.h>
-@@ -277,4 +280,7 @@
-       isc_result_t result;
-       isc_uint16_t naliases;
-+#ifdef WITH_MDN
-+      isc_buffer_t *tbufp;
-+#endif
-       b = client->recv_buffer;
-@@ -283,8 +289,25 @@
-        * Render the new name to the buffer.
-        */
-+#ifdef WITH_MDN
-+      tbufp = NULL;
-+      result = isc_buffer_allocate(client->clientmgr->mctx, &tbufp, 256);
-+      if (result != ISC_R_SUCCESS)
-+              return (result);
-+      result = dns_name_totext(dns_fixedname_name(&client->target_name),
-+                               ISC_TRUE, tbufp);
-+      if (result != ISC_R_SUCCESS) {
-+              isc_buffer_free(&tbufp);
-+              return (result);
-+      }
-+      result = ns_lwdmdn_converttoutf8(tbufp, &client->recv_buffer);
-+      isc_buffer_free(&tbufp);
-+      if (result != ISC_R_SUCCESS)
-+              return (result);
-+#else
-       result = dns_name_totext(dns_fixedname_name(&client->target_name),
-                                ISC_TRUE, &client->recv_buffer);
-       if (result != ISC_R_SUCCESS)
-               return (result);
-+#endif
-       /*
-@@ -312,4 +335,7 @@
-       isc_result_t result;
-       dns_name_t *tname;
-+#ifdef WITH_MDN
-+      isc_buffer_t *tbufp;
-+#endif
-       b = client->recv_buffer;
-@@ -323,5 +349,19 @@
-        * Render the new name to the buffer.
-        */
-+#ifdef WITH_MDN
-+      tbufp = NULL;
-+      result = isc_buffer_allocate(client->clientmgr->mctx, &tbufp, 256);
-+      if (result != ISC_R_SUCCESS)
-+              return (result);
-+      result = dns_name_totext(tname, ISC_TRUE, tbufp);
-+      if (result != ISC_R_SUCCESS) {
-+              isc_buffer_free(&tbufp);
-+              return (result);
-+      }
-+      result = ns_lwdmdn_converttoutf8(tbufp, &client->recv_buffer);
-+      isc_buffer_free(&tbufp);
-+#else
-       result = dns_name_totext(tname, ISC_TRUE, &client->recv_buffer);
-+#endif
-       if (result != ISC_R_SUCCESS)
-               return (result);
-@@ -599,4 +639,7 @@
-       ns_lwdclientmgr_t *cm;
-       isc_buffer_t namebuf;
-+#ifdef WITH_MDN
-+      isc_buffer_t *tnamebufp;
-+#endif
-       REQUIRE(NS_LWDCLIENT_ISRECVDONE(client));
-@@ -612,11 +655,39 @@
-               goto out;
-+#ifdef WITH_MDN
-+      /*
-+       * XXX Assuming allocation size for req->name is larger than
-+       * req->namelen by at least one, which is true in the current
-+       * implementation.
-+       */
-+      isc_buffer_init(&namebuf, req->name, req->namelen + 1);
-+      isc_buffer_add(&namebuf, req->namelen);
-+      tnamebufp = NULL;
-+      result = isc_buffer_allocate(client->clientmgr->mctx, &tnamebufp, 256);
-+      if (result != ISC_R_SUCCESS)
-+              goto out;
-+      /*
-+       * Convert UTF-8 string in namebuf into DNS protocol encoding.
-+       */
-+      result = ns_lwdmdn_convertfromutf8(&namebuf, tnamebufp);
-+      if (result != ISC_R_SUCCESS) {
-+              isc_buffer_free(&tnamebufp);
-+              goto out;
-+      }
-+#else
-       isc_buffer_init(&namebuf, req->name, req->namelen);
-       isc_buffer_add(&namebuf, req->namelen);
-+#endif
-       dns_fixedname_init(&client->target_name);
-       dns_fixedname_init(&client->query_name);
-+#ifdef WITH_MDN
-+      result = dns_name_fromtext(dns_fixedname_name(&client->query_name),
-+                                 tnamebufp, dns_rootname, ISC_FALSE, NULL);
-+      isc_buffer_free(&tnamebufp);
-+#else
-       result = dns_name_fromtext(dns_fixedname_name(&client->query_name),
-                                  &namebuf, NULL, ISC_FALSE, NULL);
-+#endif
-       if (result != ISC_R_SUCCESS)
-               goto out;
---- ./bin/named/lwdgnba.c.orig Wed Jan 24 00:49:32 2001
-+++ ./bin/named/lwdgnba.c      Wed Jan 24 01:22:45 2001
-@@ -30,4 +30,7 @@
- #include <named/types.h>
- #include <named/lwdclient.h>
-+#ifdef WITH_MDN
-+#include <named/lwdmdn.h>
-+#endif
- static void start_byaddr(ns_lwdclient_t *);
-@@ -48,4 +51,7 @@
-       isc_uint16_t naliases;
-+#ifdef WITH_MDN
-+      isc_buffer_t *tbufp;
-+#endif
-       UNUSED(task);
-@@ -95,7 +101,23 @@
-               b = client->recv_buffer;
-+#ifdef WITH_MDN
-+              tbufp = NULL;
-+              result = isc_buffer_allocate(cm->mctx, &tbufp, 256);
-+              if (result != ISC_R_SUCCESS)
-+                      goto out;
-+              result = dns_name_totext(name, ISC_TRUE, tbufp);
-+              if (result != ISC_R_SUCCESS) {
-+                      isc_buffer_free(&tbufp);
-+                      goto out;
-+              }
-+              result = ns_lwdmdn_converttoutf8(tbufp, &client->recv_buffer);
-+              isc_buffer_free(&tbufp);
-+              if (result != ISC_R_SUCCESS)
-+                      goto out;
-+#else
-               result = dns_name_totext(name, ISC_TRUE, &client->recv_buffer);
-               if (result != ISC_R_SUCCESS)
-                       goto out;
-+#endif
-               ns_lwdclient_log(50, "found name '%.*s'",
-                                client->recv_buffer.used - b.used,
---- ./bin/named/lwdmdn.c.orig  Wed Jan 24 01:22:45 2001
-+++ ./bin/named/lwdmdn.c       Wed Jan 24 01:22:45 2001
-@@ -0,0 +1,283 @@
-+/* $Id: lwdmdn.c,v 1.6 2000/09/07 06:27:40 ishisone Exp $ */
-+
-+#include <config.h>
-+
-+#include <stdlib.h>
-+#include <stdarg.h>
-+#include <string.h>
-+
-+#ifdef WITH_MDN
-+#include <mdn/result.h>
-+#include <mdn/log.h>
-+#include <mdn/resconf.h>
-+#include <mdn/res.h>
-+#endif
-+
-+#include <isc/result.h>
-+#include <isc/rwlock.h>
-+#include <isc/util.h>
-+
-+#include <named/types.h>
-+#include <named/log.h>
-+#ifdef WITH_MDN
-+#include <named/lwdmdn.h>
-+#endif
-+#include <named/lwdclient.h>
-+#include <named/globals.h>
-+
-+#ifdef WITH_MDN
-+
-+typedef enum {
-+      convert_from_utf8,
-+      convert_to_utf8
-+} convert_direction_t;
-+
-+static isc_logmodule_t modules[] = {
-+      { "mdn",                0 },
-+      { NULL,                 0 }
-+};
-+#define NS_LOGMODULE_MDN      (&modules[0])
-+
-+static isc_rwlock_t   mdnconflock;
-+static mdn_resconf_t  mdnconf = NULL;
-+
-+static isc_result_t   convert_buffer(isc_buffer_t *from_buffer,
-+                                     isc_buffer_t *to_buffer,
-+                                     convert_direction_t dir);
-+static isc_result_t   load_mdnconfiguration(const char *filename);
-+static isc_result_t   mdnresult_to_iscresult(mdn_result_t r);
-+static void           set_log_level(int level);
-+static void           logger(int level, const char *msg);
-+static void           logwrite(int level, const char *fmt, ...);
-+
-+void
-+ns_lwdmdn_initialize(void) {
-+      mdn_result_t r;
-+      isc_result_t result;
-+
-+      logwrite(ISC_LOG_DEBUG(50), "initializing mdn");
-+
-+      /* Register MDN module for logging. */
-+      isc_log_registermodules(ns_g_lctx, modules);
-+
-+      /* Set libmdn log hander. */
-+      mdn_log_setproc(logger);
-+
-+      /* Set log level. */
-+      set_log_level(ns_g_debuglevel);
-+
-+      /* General initialization. */
-+      r = mdn_resconf_initialize();
-+      RUNTIME_CHECK(r == mdn_success);
-+
-+      /* Create configuration context. */
-+      r = mdn_resconf_create(&mdnconf);
-+      RUNTIME_CHECK(r == mdn_success);
-+
-+      /* Initialize configuration lock variable. */
-+      result = isc_rwlock_init(&mdnconflock, 1, 1);
-+      RUNTIME_CHECK(result == ISC_R_SUCCESS);
-+
-+      /* Load configuration file. */
-+      lwresd_g_mdnreloadwanted = 1;
-+      (void)load_mdnconfiguration(lwresd_g_mdnconffile);
-+}
-+
-+isc_result_t
-+ns_lwdmdn_convertfromutf8(isc_buffer_t *from_buffer, isc_buffer_t *to_buffer) {
-+      return convert_buffer(from_buffer, to_buffer, convert_from_utf8);
-+}
-+
-+isc_result_t
-+ns_lwdmdn_converttoutf8(isc_buffer_t *from_buffer, isc_buffer_t *to_buffer) {
-+      return convert_buffer(from_buffer, to_buffer, convert_to_utf8);
-+}
-+
-+static isc_result_t
-+convert_buffer(isc_buffer_t *from_buffer, isc_buffer_t *to_buffer,
-+             convert_direction_t dir)
-+{
-+      isc_result_t result;
-+      mdn_result_t r;
-+      char *fromstr, *tostr;
-+      char tmp[256];
-+      size_t tolen;
-+
-+      /*
-+       * Reload MDN configuration file, if necessary.
-+       */
-+      if (lwresd_g_mdnreloadwanted) {
-+              result = load_mdnconfiguration(lwresd_g_mdnconffile);
-+      }
-+
-+      /*
-+       * Since libmdn assumes all the strings are NUL-terminated,
-+       * teminate the input string.  If the buffer has some free space,
-+       * utilize it.  Otherwise, make a local copy.
-+       */
-+      if (isc_buffer_remaininglength(from_buffer) > 0) {
-+              fromstr = isc_buffer_used(from_buffer); /* temporary */
-+              *fromstr = '\0';
-+              fromstr = isc_buffer_base(from_buffer);
-+      } else {
-+              size_t fromlen = isc_buffer_usedlength(from_buffer);
-+
-+              if (fromlen >= sizeof(tmp))
-+                      fromlen = sizeof(tmp) - 1;
-+              fromstr = tmp;
-+              memcpy(fromstr, isc_buffer_base(from_buffer), fromlen);
-+              fromstr[fromlen] = '\0';
-+      }
-+      tostr = isc_buffer_used(to_buffer);
-+      tolen = isc_buffer_availablelength(to_buffer);
-+
-+      RWLOCK(&mdnconflock, isc_rwlocktype_read);
-+
-+      if (dir == convert_from_utf8)
-+              r = mdn_res_ucstodns(mdnconf, fromstr, tostr, tolen);
-+      else
-+              r = mdn_res_dnstoucs(mdnconf, fromstr, tostr, tolen);
-+
-+      RWUNLOCK(&mdnconflock, isc_rwlocktype_read);
-+
-+      if (r != mdn_success)
-+              return (mdnresult_to_iscresult(r));
-+
-+      isc_buffer_add(to_buffer, strlen(tostr));
-+
-+      return (ISC_R_SUCCESS);
-+}
-+
-+static isc_result_t
-+load_mdnconfiguration(const char *filename) {
-+      isc_result_t result = ISC_R_SUCCESS;
-+      mdn_result_t r;
-+      mdn_converter_t conv;
-+      isc_boolean_t loaded = ISC_FALSE;
-+      isc_boolean_t allow_utf8;
-+
-+      RWLOCK(&mdnconflock, isc_rwlocktype_write);
-+
-+      logwrite(ISC_LOG_DEBUG(50), "loading mdn configuration %s",
-+               filename == NULL ? mdn_resconf_defaultfile() : filename);
-+
-+      if (lwresd_g_mdnreloadwanted) {
-+              r = mdn_resconf_loadfile(mdnconf, filename);
-+              if (r == mdn_success)
-+                      loaded = ISC_TRUE;
-+              else
-+                      result = mdnresult_to_iscresult(r);
-+      }
-+      lwresd_g_mdnreloadwanted = 0;
-+      logwrite(ISC_LOG_DEBUG(100), "finish loading mdn configuration");
-+
-+      RWUNLOCK(&mdnconflock, isc_rwlocktype_write);
-+
-+      if (loaded) {
-+              if ((conv = mdn_resconf_serverconverter(mdnconf)) != NULL &&
-+                  !mdn_converter_isasciicompatible(conv)) {
-+                      logwrite(ISC_LOG_DEBUG(50),
-+                               "allowing UTF-8 domain names");
-+                      allow_utf8 = ISC_TRUE;
-+              } else {
-+                      allow_utf8 = ISC_FALSE;
-+              }
-+              dns_name_allowutf8(allow_utf8);
-+      }
-+
-+      return (result);
-+}
-+
-+static isc_result_t
-+mdnresult_to_iscresult(mdn_result_t r) {
-+      switch (r) {
-+      case mdn_success:
-+              return (ISC_R_SUCCESS);
-+        case mdn_notfound:
-+        case mdn_noentry:
-+        case mdn_invalid_name:
-+              return (ISC_R_NOTFOUND);
-+        case mdn_buffer_overflow:
-+              return (ISC_R_NOSPACE);
-+        case mdn_nomemory:
-+              return (ISC_R_NOMEMORY);
-+        case mdn_nofile:
-+              return (ISC_R_FILENOTFOUND);
-+      default:
-+              return (ISC_R_FAILURE);
-+      }
-+}
-+
-+static void
-+set_log_level(int level) {
-+      int loglevel;
-+
-+      if (level < ISC_LOG_ERROR) {
-+              loglevel = mdn_log_level_fatal;
-+      } else if (level < ISC_LOG_WARNING) {
-+              loglevel = mdn_log_level_error;
-+      } else if (level < ISC_LOG_INFO) {
-+              loglevel = mdn_log_level_warning;
-+      } else if (level < ISC_LOG_DEBUG(50)) {
-+              loglevel = mdn_log_level_info;
-+      } else if (level < ISC_LOG_DEBUG(100)) {
-+              loglevel = mdn_log_level_trace;
-+      } else {
-+              loglevel = mdn_log_level_dump;
-+      }
-+      mdn_log_setlevel(loglevel);
-+}
-+
-+static void
-+logger(int level, const char *msg) {
-+      int loglevel;
-+      int msglen;
-+
-+      /*
-+       * Convert libmdn's log level to bind's log level.
-+       */
-+      switch (level) {
-+      case mdn_log_level_fatal:
-+              loglevel = ISC_LOG_CRITICAL;
-+              break;
-+      case mdn_log_level_error:
-+              loglevel = ISC_LOG_ERROR;
-+              break;
-+      case mdn_log_level_warning:
-+              loglevel = ISC_LOG_WARNING;
-+              break;
-+      case mdn_log_level_info:
-+              loglevel = ISC_LOG_INFO;
-+              break;
-+      case mdn_log_level_trace:
-+              loglevel = ISC_LOG_DEBUG(50);   /* XXX */
-+              break;
-+      case mdn_log_level_dump:
-+      default:
-+              loglevel = ISC_LOG_DEBUG(100);  /* XXX */
-+              break;
-+      }
-+
-+      /*
-+       * Since libmdn's messages are end with newline, we have to
-+       * remove it.
-+       */
-+      msglen = strlen(msg);
-+      if (msglen > 0 && msg[msglen - 1] == '\n')
-+              msglen--;
-+
-+      isc_log_write(ns_g_lctx, NS_LOGCATEGORY_CLIENT, NS_LOGMODULE_MDN,
-+                    loglevel, "%.*s", msglen, msg);
-+}
-+
-+static void
-+logwrite(int level, const char *fmt, ...) {
-+      va_list args;
-+      
-+      va_start(args, fmt);
-+      isc_log_vwrite(ns_g_lctx, NS_LOGCATEGORY_CLIENT, NS_LOGMODULE_MDN,
-+                     level, fmt, args);
-+      va_end(args);
-+}
-+
-+#endif /* WITH_MDN */
---- ./bin/named/lwresd.c.orig  Wed Jan 24 00:49:36 2001
-+++ ./bin/named/lwresd.c       Wed Jan 24 01:22:45 2001
-@@ -47,4 +47,7 @@
- #include <named/log.h>
- #include <named/lwaddr.h>
-+#ifdef WITH_MDN
-+#include <named/lwdmdn.h>
-+#endif
- #include <named/lwresd.h>
- #include <named/lwdclient.h>
-@@ -351,4 +354,11 @@
-               goto fail;
-       }
-+
-+#ifdef WITH_MDN
-+      /*
-+       * Initialize MDN stuff.
-+       */
-+      ns_lwdmdn_initialize();
-+#endif
-       if (lwres->searchlist != NULL) {
---- ./bin/named/main.c.orig    Wed Jan 24 00:49:40 2001
-+++ ./bin/named/main.c Wed Jan 24 01:22:45 2001
-@@ -278,5 +278,9 @@
-       isc_commandline_errprint = ISC_FALSE;
-       while ((ch = isc_commandline_parse(argc, argv,
-+#ifdef WITH_MDN                               /* Additional option 'M'. */
-+                                         "c:C:d:fgi:lM:n:N:p:P:st:u:vx:")) !=
-+#else
-                                          "c:C:d:fgi:ln:N:p:P:st:u:vx:")) !=
-+#endif
-              -1) {
-               switch (ch) {
-@@ -312,4 +316,9 @@
-                       ns_g_lwresdonly = ISC_TRUE;
-                       break;
-+#ifdef WITH_MDN
-+              case 'M':
-+                      lwresd_g_mdnconffile = isc_commandline_argument;
-+                      break;
-+#endif
-               case 'N': /* Deprecated. */
-               case 'n':
+MDN patch for bind-9.2.0
+========================
+
+
+This is a patch file for ISC BIND 9.2.0 to make it work with
+internationalized/multilingual domain names.  With this patch you'll
+get MDN-aware dig/host/nslookup.
+
+To apply this patch, you should go to the top directory of the BIND
+distribution (where you see `README' file), then invoke `patch'
+command like this:
+
+       % patch -p0 < this-file
+
+Then follow the instructions described in `README.mdnkit' to compile
+and install.
+
+
+Index: README.mdnkit
+diff -c /dev/null mdn/othersrc/bind9/README.mdnkit:1.9
+*** README.mdnkit      Thu Dec  6 13:51:44 2001
+--- README.mdnkit      Wed Aug 22 15:19:31 2001
+***************
+*** 0 ****
+--- 1,124 ----
++ 
++                      BIND-9 MDN patch
++ 
++             Japan Network Information Center (JPNIC)
++ 
++ 
++ * What is this patch for?
++ 
++ This patch adds multilingual domain name (MDN) support to BIND-9.
++ You'll get multilingualized version of dig/host/nslookup commands.
++ 
++     + mulltilingualized dig/host/nslookup
++      dig/host/nslookup accepts non-ASCII domain names in the local
++      codeset (such as Shift JIS, Big5 or ISO8859-1) determined by
++      the locale information.  The domain names are normalized and
++      converted to the encoding on the DNS protocol, and sent to DNS
++      servers.  The replies are converted back to the local codeset
++      and displayed.
++ 
++ 
++ * Compilation & installation
++ 
++ 0. Prerequisite
++ 
++ You have to build and install mDNkit before building this patched version
++ of bind-9.
++ 
++ 1. Running configure script
++ 
++ Run `configure' in the top directory.  See `README' for the
++ configuration options.
++ 
++ This patch adds the following 4 options to `configure'.  You should
++ at least specify `--with-mdn' option to enable MDN support.
++ 
++     --with-mdn[=MDN_PREFIX]
++      To enable MDN support, you have to specify `--with-mdn' option.
++      The argument MDN_PREFIX is the install prefix of mDNkit.  If
++      MDN_PREFIX is omitted, PREFIX (derived from `--prefix=PREFIX')
++      is assumed.
++ 
++     --with-libiconv[=LIBICONV_PREFIX]
++      Specify this option if mDNkit you have installed links GNU
++      libiconv.  The argument LIBICONV_PREFIX is install prefix of
++      GNU libiconv.  If the argument is omitted, PREFIX (derived
++      from `--prefix=PREFIX') is assumed.
++ 
++      `--with-libiconv' is shorthand option for GNU libiconv.
++ 
++          --with-libiconv=/usr/local
++ 
++      This is equivalent to:
++ 
++          --with-iconv='-L/usr/local/lib -R/usr/local/lib -liconv'
++ 
++      `--with-libiconv' assumes that your C compiler has `-R'
++      option, and that the option adds the specified run-time path
++      to an exacutable binary.  If `-R' option of your compiler has
++      different meaning, or your compiler lacks the option, you
++      should use `--with-iconv' option instead.  Binary command
++      without run-time path information might be unexecutable.
++      In that case, you would see an error message like:
++ 
++          error in loading shared libraries: libiconv.so.2: cannot
++          open shared object file
++ 
++      If both `--with-libiconv' and `--with-iconv' options are
++      specified, `--with-iconv' is prior to `--with-libiconv'.
++ 
++     --with-iconv=ICONV_LIBSPEC
++      If your libc doens't provide iconv(), you need to specify the
++      library containing iconv() with this option.  `ICONV_LIBSPEC'
++      is the argument(s) to `cc' or `ld' to link the library, for
++      example, `--with-iconv="-L/usr/local/lib -liconv"'.
++      You don't need to specify the header file directory for "iconv.h"
++      to the compiler, as it isn't included directly by bind-9 with
++      this patch.
++ 
++     --with-mdnlib=MDN_LIBSPEC
++      With this option, you can explicitly specify the argument(s)
++      to `cc' or `ld' to link the mDNkit's library, `libmdn'.  If
++      this option is not specified, `-L${PREFIX}/lib -lmdn' is
++      assumed, where ${PREFIX} is the installation prefix specified
++      with `--with-mdn' option above.  You may need to use this
++      option to specify extra argments, for example,
++      `--with-mdnlib="-L/usr/local/lib -R/usr/local/lib -lmdn"'.
++ 
++ Please consult `README' for other configuration options.
++ 
++ Note that if you want to specify some extra header file directories,
++ you should use the environment variable STD_CINCLUDES instead of
++ CFLAGS, as described in README.
++ 
++ 2. Compilation and installation
++ 
++ After running "configure", just do
++ 
++      make
++      make install
++ 
++ for compiling and installing.
++ 
++ 3. Resolver configuration
++ 
++ To handle multilingual domain names, you have to specify the
++ properties like:
++      + name encoding used in DNS protocol data
++      + normalization (NAMEPREP) schemes
++ These properties are specified by the mDNkit's configuration file,
++ "mdn.conf".  You have to create and set up the file properly.  The
++ pathname of the file and contents are described in the manual
++ "mdn.conf".
++ 
++ 
++ * Contact information
++ 
++ Please see http//www.nic.ad.jp/jp/research/idn/ for the latest news
++ about mDNkit and this patch.
++ 
++ Bug reports and comments on this kit should be sent to
++ mdnkit-bugs@nic.ad.jp and idn-cmt@nic.ad.jp, respectively.
++ 
++ 
++ ; $Id: bind-9.2.0-patch,v 1.1 2002/01/02 02:46:59 marka Exp $
+Index: config.h.in
+diff -c mdn/othersrc/bind9/config.h.in:1.1.1.6 mdn/othersrc/bind9/config.h.in:1.10.2.1
+*** config.h.in        Tue Nov 27 16:55:45 2001
+--- config.h.in        Thu Dec  6 13:51:12 2001
+***************
+*** 141,146 ****
+--- 141,149 ----
+  /* define if you have strerror in the C library. */
+  #undef HAVE_STRERROR
+  
++ /* Define if you have the setlocale function.  */
++ #undef HAVE_SETLOCALE
++ 
+  /* Define if you have the <dlfcn.h> header file.  */
+  #undef HAVE_DLFCN_H
+  
+***************
+*** 150,155 ****
+--- 153,161 ----
+  /* Define if you have the <linux/capability.h> header file.  */
+  #undef HAVE_LINUX_CAPABILITY_H
+  
++ /* Define if you have the <locale.h> header file.  */
++ #undef HAVE_LOCALE_H
++ 
+  /* Define if you have the <sys/prctl.h> header file.  */
+  #undef HAVE_SYS_PRCTL_H
+  
+***************
+*** 176,178 ****
+--- 182,188 ----
+  
+  /* Define if you have the socket library (-lsocket).  */
+  #undef HAVE_LIBSOCKET
++ 
++ /* define if mDNkit support is to be included. */
++ #undef WITH_MDN
++ 
+Index: configure.in
+diff -c mdn/othersrc/bind9/configure.in:1.1.1.8 mdn/othersrc/bind9/configure.in:1.11
+*** configure.in       Tue Nov 27 16:55:48 2001
+--- configure.in       Thu Nov 29 18:45:14 2001
+***************
+*** 1605,1610 ****
+--- 1605,1683 ----
+  NOM_PATH_FILE(DOCBOOK2MANSPEC, docbook2X/docbook2man-spec.pl, $sgmltrees)
+  
+  #
++ # MDN support
++ #
++ AC_ARG_WITH(mdn,
++      [  --with-mdn[=MPREFIX]   enable MDN support using mDNkit [default PREFIX]],
++      use_mdn="$withval", use_mdn="no")
++ case "$use_mdn" in
++ yes)
++      if test X$prefix = XNONE ; then
++              mdn_path=/usr/local
++      else
++              mdn_path=$prefix
++      fi
++      ;;
++ no)
++      ;;
++ *)
++      mdn_path="$use_mdn"
++      ;;
++ esac
++ 
++ iconvinc=
++ iconvlib=
++ AC_ARG_WITH(libiconv,
++      [  --with-libiconv[=IPREFIX]   GNU libiconv are in IPREFIX [default PREFIX]],
++      use_libiconv="$withval", use_libiconv="no")
++ case "$use_libiconv" in
++ yes)
++      if test X$prefix = XNONE ; then
++              iconvlib="-L/usr/local/lib -R/usr/local/lib -liconv"
++      else
++              iconvlib="-L$prefix/lib -R$prefix/lib -liconv"
++      fi
++      ;;
++ no)
++      iconvlib=
++      ;;
++ *)
++      iconvlib="-L$use_libiconv/lib -R$use_libiconv/lib -liconv"
++      ;;
++ esac
++ 
++ AC_ARG_WITH(iconv,
++      [  --with-iconv[=LIBSPEC]   specify iconv library [default -liconv]],
++      iconvlib="$withval")
++ case "$iconvlib" in
++ no)
++      iconvlib=
++      ;;
++ yes)
++      iconvlib=-liconv
++      ;;
++ esac
++ 
++ AC_ARG_WITH(mdnlib,
++      [  --with-mdnlib=ARG    specify libmdn],
++      mdnlib="$withval", mdnlib="no")
++ if test "$mdnlib" = yes; then
++      AC_MSG_ERROR([You must specify ARG for --with-mdnlib.])
++ fi
++ 
++ if test "$use_mdn" != no; then
++      AC_DEFINE(WITH_MDN, 1, [define if mDNkit support is to be included.])
++      STD_CINCLUDES="$STD_CINCLUDES -I$mdn_path/include"
++      if test "$mdnlib" != no; then
++              LIBS="$mdnlib $iconvlib $LIBS"
++      else
++              LIBS="-L$mdn_path/lib -lmdn $iconvlib $LIBS"
++      fi
++ fi
++ AC_CHECK_HEADERS(locale.h)
++ AC_CHECK_FUNCS(setlocale)
++ 
++ #
+  # Substitutions
+  #
+  AC_SUBST(BIND9_TOP_BUILDDIR)
+Index: bin/dig/dig.1
+diff -c mdn/othersrc/bind9/bin/dig/dig.1:1.1.1.1 mdn/othersrc/bind9/bin/dig/dig.1:1.2
+*** bin/dig/dig.1      Tue Nov 27 16:55:50 2001
+--- bin/dig/dig.1      Thu Nov 29 14:36:25 2001
+***************
+*** 73,79 ****
+  is the name of the resource record that is to be looked up.
+  .TP
+  \fBtype\fR
+! indicates what type of query is required \(em
+  ANY, A, MX, SIG, etc.
+  \fItype\fR can be any valid query type. If no
+  \fItype\fR argument is supplied,
+--- 73,79 ----
+  is the name of the resource record that is to be looked up.
+  .TP
+  \fBtype\fR
+! indicates what type of query is required 
+  ANY, A, MX, SIG, etc.
+  \fItype\fR can be any valid query type. If no
+  \fItype\fR argument is supplied,
+***************
+*** 336,341 ****
+--- 336,352 ----
+  \fI+noqr\fR which means that \fBdig\fR
+  will not print the initial query when it looks up the NS records for
+  isc.org.
++ .SH "MDN SUPPORT"
++ .PP
++ If \fBdig\fR has been built with mdn support, it can
++ accept and display non-ASCII domain names.
++ \fBdig\fR appropriately converts character encoding of
++ domain name before sending a request to DNS server or displaying a
++ reply from the server.
++ If you'd like to turn off the MDN support for some reason, defines
++ the \fBMDN_DISABLE\fR environment variable.
++ The MDN support is disabled if the the variable is set when 
++ \fBdig\fR runs.
+  .SH "FILES"
+  .PP
+  \fI/etc/resolv.conf\fR
+Index: bin/dig/dig.c
+diff -c mdn/othersrc/bind9/bin/dig/dig.c:1.1.1.8 mdn/othersrc/bind9/bin/dig/dig.c:1.7
+*** bin/dig/dig.c      Tue Nov 27 16:55:50 2001
+--- bin/dig/dig.c      Thu Nov 29 18:45:14 2001
+***************
+*** 1305,1310 ****
+--- 1305,1315 ----
+               }
+               ISC_LIST_APPEND(lookup_list, lookup, link);
+       }
++ 
++ #ifdef WITH_MDN
++              if (getenv(MDN_DISABLE_ENVVAR_NAME) != NULL)
++                      lookup->mdn = ISC_FALSE;
++ #endif
+  }
+  
+  /*
+Index: bin/dig/dig.docbook
+diff -c mdn/othersrc/bind9/bin/dig/dig.docbook:1.1.1.1 mdn/othersrc/bind9/bin/dig/dig.docbook:1.2
+*** bin/dig/dig.docbook        Tue Nov 27 16:55:50 2001
+--- bin/dig/dig.docbook        Thu Nov 29 14:36:26 2001
+***************
+*** 502,507 ****
+--- 502,522 ----
+  </refsect1>
+  
+  <refsect1>
++ <title>MDN SUPPORT</title>
++ <para>
++ If <command>dig</command> has been built with mdn support, it can
++ accept and display non-ASCII domain names.
++ <command>dig</command> appropriately converts character encoding of
++ domain name before sending a request to DNS server or displaying a
++ reply from the server.
++ If you'd like to turn off the MDN support for some reason, defines
++ the <envar>MDN_DISABLE</envar> environment variable.
++ The MDN support is disabled if the the variable is set when 
++ <command>dig</command> runs.
++ </para>
++ </refsect1>
++ 
++ <refsect1>
+  <title>FILES</title>
+  <para>
+  <filename>/etc/resolv.conf</filename>
+Index: bin/dig/dighost.c
+diff -c mdn/othersrc/bind9/bin/dig/dighost.c:1.1.1.11 mdn/othersrc/bind9/bin/dig/dighost.c:1.26
+*** bin/dig/dighost.c  Tue Nov 27 16:55:51 2001
+--- bin/dig/dighost.c  Fri Nov 30 12:37:18 2001
+***************
+*** 32,37 ****
+--- 32,48 ----
+  #include <string.h>
+  #include <limits.h>
+  
++ #ifdef HAVE_LOCALE_H
++ #include <locale.h>
++ #endif
++ 
++ #ifdef WITH_MDN
++ #include <mdn/result.h>
++ #include <mdn/log.h>
++ #include <mdn/resconf.h>
++ #include <mdn/res.h>
++ #endif
++ 
+  #include <dns/byaddr.h>
+  #include <dns/fixedname.h>
+  #include <dns/message.h>
+***************
+*** 130,135 ****
+--- 141,160 ----
+  isc_mutex_t lookup_lock;
+  dig_lookup_t *current_lookup = NULL;
+  
++ #ifdef WITH_MDN
++ mdn_resconf_t mdnconf;
++ 
++ static void        initialize_mdn(void);
++ static isc_result_t   output_filter(isc_buffer_t *buffer,
++                                  unsigned int used_org,
++                                  isc_boolean_t absolute);
++ static mdn_result_t   append_textname(char *name, const char *origin,
++                                    size_t namesize);
++ static void        mdn_check_result(mdn_result_t r, const char *msg);
++ 
++ #define MAXDLEN               256
++ #endif
++ 
+  /*
+   * Apply and clear locks at the event level in global task.
+   * Can I get rid of these using shutdown events?  XXX
+***************
+*** 365,370 ****
+--- 390,398 ----
+       looknew->ignore = ISC_FALSE;
+       looknew->servfail_stops = ISC_FALSE;
+       looknew->besteffort = ISC_TRUE;
++ #ifdef WITH_MDN
++      looknew->mdn = ISC_TRUE;
++ #endif
+       looknew->dnssec = ISC_FALSE;
+       looknew->udpsize = 0;
+       looknew->recurse = ISC_TRUE;
+***************
+*** 426,431 ****
+--- 454,462 ----
+       looknew->ignore = lookold->ignore;
+       looknew->servfail_stops = lookold->servfail_stops;
+       looknew->besteffort = lookold->besteffort;
++ #ifdef WITH_MDN
++      looknew->mdn = ISC_TRUE;
++ #endif
+       looknew->dnssec = lookold->dnssec;
+       looknew->udpsize = lookold->udpsize;
+       looknew->recurse = lookold->recurse;
+***************
+*** 648,653 ****
+--- 679,688 ----
+               ISC_LIST_APPEND(server_list, srv, link);
+       }
+  
++ #ifdef WITH_MDN
++      initialize_mdn();
++ #endif
++ 
+       if (keyfile[0] != 0)
+               setup_file_key();
+       else if (keysecret[0] != 0)
+***************
+*** 1168,1174 ****
+--- 1203,1220 ----
+       isc_buffer_t b;
+       dns_compress_t cctx;
+       char store[MXNAME];
++ #ifdef WITH_MDN
++      mdn_result_t mr;
++      char utf8_textname[MXNAME], utf8_origin[MXNAME], idn_textname[MXNAME];
++ #endif
+  
++ #ifdef WITH_MDN
++         if (lookup->mdn == ISC_TRUE)
++              dns_name_settotextfilter(output_filter);
++         else
++              dns_name_settotextfilter(NULL);
++ #endif
++ 
+       REQUIRE(lookup != NULL);
+       INSIST(!free_now);
+  
+***************
+*** 1196,1201 ****
+--- 1242,1262 ----
+       isc_buffer_init(&lookup->onamebuf, lookup->onamespace,
+                       sizeof(lookup->onamespace));
+  
++ #ifdef WITH_MDN
++      if (lookup->mdn) {
++              /*
++               * We cannot convert `textname' and `origin' separately.
++               * `textname' doesn't contain TLD, but local mapping needs
++               * TLD.
++               */
++              mr = mdn_res_nameconv(mdnconf, "ld", lookup->textname,
++                                    utf8_textname, sizeof(utf8_textname));
++              mdn_check_result(mr, "convert textname to UTF-8");
++      } else {
++              strcpy(utf8_textname, lookup->textname);
++      }
++ #endif
++ 
+       /*
+        * If the name has too many dots, force the origin to be NULL
+        * (which produces an absolute lookup).  Otherwise, take the origin
+***************
+*** 1204,1215 ****
+--- 1265,1307 ----
+        * is TRUE or we got a domain line in the resolv.conf file.
+        */
+       /* XXX New search here? */
++ #ifdef WITH_MDN
++      if ((count_dots(utf8_textname) >= ndots) || !usesearch)
++              lookup->origin = NULL; /* Force abs lookup */
++      else if (lookup->origin == NULL && lookup->new_search && usesearch) {
++              lookup->origin = ISC_LIST_HEAD(search_list);
++      }
++ #else
+       if ((count_dots(lookup->textname) >= ndots) || !usesearch)
+               lookup->origin = NULL; /* Force abs lookup */
+       else if (lookup->origin == NULL && lookup->new_search && usesearch) {
+               lookup->origin = ISC_LIST_HEAD(search_list);
+       }
++ #endif
++ 
++ #ifdef WITH_MDN
++      if (lookup->mdn) {
++              if (lookup->origin != NULL) {
++                      mr = mdn_res_nameconv(mdnconf, "ld",
++                                            lookup->origin->origin,
++                                            utf8_origin,
++                                            sizeof(utf8_origin));
++                      mdn_check_result(mr, "convert origin to UTF-8");
++                      mr = append_textname(utf8_textname, utf8_origin,
++                                           sizeof(utf8_textname));
++                      mdn_check_result(mr, "append origin to textname");
++              }
++              mr = mdn_res_nameconv(mdnconf, "MNI", utf8_textname,
++                                    idn_textname, sizeof(idn_textname));
++              mdn_check_result(mr, "convert UTF-8 textname to IDN encoding");
++      }
++ #endif
++ 
++ #ifdef WITH_MDN
++      if (lookup->origin != NULL && !lookup->mdn) {
++ #else
+       if (lookup->origin != NULL) {
++ #endif
+               debug("trying origin %s", lookup->origin->origin);
+               result = dns_message_gettempname(lookup->sendmsg,
+                                                &lookup->oname);
+***************
+*** 1253,1258 ****
+--- 1345,1361 ----
+               debug("using root origin");
+               if (lookup->trace && lookup->trace_root)
+                       dns_name_clone(dns_rootname, lookup->name);
++ #ifdef WITH_MDN
++              else if (lookup->mdn) {
++                      len = strlen(idn_textname);
++                      isc_buffer_init(&b, idn_textname, len);
++                      isc_buffer_add(&b, len);
++                      result = dns_name_fromtext(lookup->name, &b,
++                                                 dns_rootname,
++                                                 ISC_FALSE,
++                                                 &lookup->namebuf);
++              }
++ #endif
+               else {
+                       len = strlen(lookup->textname);
+                       isc_buffer_init(&b, lookup->textname, len);
+***************
+*** 2588,2590 ****
+--- 2691,2806 ----
+       if (mctx != NULL)
+               isc_mem_destroy(&mctx);
+  }
++ 
++ #ifdef WITH_MDN
++ static void
++ initialize_mdn(void) {
++      mdn_result_t r;
++ 
++ #ifdef HAVE_SETLOCALE
++      /* Set locale */
++      (void)setlocale(LC_ALL, "");
++ #endif
++ 
++      /* General initialization. */
++      r = mdn_resconf_initialize();
++      if (r != mdn_success)
++              fatal("mdn initialization failed: %s",
++                    mdn_result_tostring(r));
++ 
++      /* Create configuration context. */
++      r = mdn_resconf_create(&mdnconf);
++      if (r != mdn_success)
++              fatal("mdn resconf initialization failed: %s",
++                    mdn_result_tostring(r));
++ 
++ 
++      /* Load mdn configuration file. */
++      r = mdn_resconf_loadfile(mdnconf, NULL);
++      if (r != mdn_success)
++              fatal("mdn configuration loading failed: %s",
++                    mdn_result_tostring(r));
++ 
++      /* Set domain name -> text post-conversion filter. */
++      dns_name_settotextfilter(output_filter);
++ }
++ 
++ static isc_result_t
++ output_filter(isc_buffer_t *buffer, unsigned int used_org,
++            isc_boolean_t absolute)
++ {
++      char tmp1[MAXDLEN], tmp2[MAXDLEN];
++      size_t fromlen, tolen;
++      isc_boolean_t end_with_dot;
++ 
++      /*
++       * Copy contents of 'buffer' to 'tmp1', supply trailing dot
++       * if 'absolute' is true, and terminate with NUL.
++       */
++      fromlen = isc_buffer_usedlength(buffer) - used_org;
++      if (fromlen >= MAXDLEN)
++              return (ISC_R_SUCCESS);
++      memcpy(tmp1, (char *)isc_buffer_base(buffer) + used_org, fromlen);
++      end_with_dot = (tmp1[fromlen - 1] == '.') ? ISC_TRUE : ISC_FALSE;
++      if (absolute && !end_with_dot) {
++              fromlen++;
++              if (fromlen >= MAXDLEN)
++                      return (ISC_R_SUCCESS);
++              tmp1[fromlen - 1] = '.';
++      }
++      tmp1[fromlen] = '\0';
++ 
++      /*
++       * Convert contents of 'tmp1' to local encoding.
++       */
++      if (mdn_res_nameconv(mdnconf, "i!NL", tmp1, tmp2, MAXDLEN)
++          != mdn_success)
++              return (ISC_R_SUCCESS);
++      strcpy(tmp1, tmp2);
++ 
++      /*
++       * Copy the converted contents in 'tmp1' back to 'buffer'.
++       * If we have appended trailing dot, remove it.
++       */
++      tolen = strlen(tmp1);
++      if (absolute && !end_with_dot && tmp1[tolen - 1] == '.')
++              tolen--;
++ 
++      if (isc_buffer_length(buffer) < used_org + tolen)
++              return (ISC_R_NOSPACE);
++ 
++      isc_buffer_subtract(buffer, isc_buffer_usedlength(buffer) - used_org);
++      memcpy(isc_buffer_used(buffer), tmp1, tolen);
++      isc_buffer_add(buffer, tolen);
++ 
++      return (ISC_R_SUCCESS);
++ }
++ 
++ static mdn_result_t
++ append_textname(char *name, const char *origin, size_t namesize) {
++      size_t namelen = strlen(name);
++      size_t originlen = strlen(origin);
++ 
++      /* Already absolute? */
++      if (namelen > 0 && name[namelen - 1] == '.')
++              return mdn_success;
++ 
++      /* Append dot and origin */
++ 
++      if (namelen + 1 + originlen >= namesize)
++              return mdn_buffer_overflow;
++ 
++      name[namelen++] = '.';
++      (void)strcpy(name + namelen, origin);
++      return mdn_success;
++ }
++ 
++ static void
++ mdn_check_result(mdn_result_t r, const char *msg) {
++      if (r != mdn_success) {
++              exitcode = 1;
++              fatal("%s: %s", msg, mdn_result_tostring(r));
++      }
++ }
++ 
++ #endif /* WITH_MDN */
+Index: bin/dig/host.1
+diff -c mdn/othersrc/bind9/bin/dig/host.1:1.1.1.1 mdn/othersrc/bind9/bin/dig/host.1:1.2
+*** bin/dig/host.1     Tue Nov 27 16:55:51 2001
+--- bin/dig/host.1     Thu Nov 29 14:36:26 2001
+***************
+*** 87,94 ****
+  retries will default to 1.
+  .PP
+  Non-recursive queries can be made via the \fB-r\fR option.
+! Setting this option clears the \fBRD\fR \(em recursion
+! desired \(em bit in the query which \fBhost\fR makes.
+  This should mean that the name server receiving the query will not
+  attempt to resolve \fIname\fR. The
+  \fB-r\fR option enables \fBhost\fR to mimic
+--- 87,94 ----
+  retries will default to 1.
+  .PP
+  Non-recursive queries can be made via the \fB-r\fR option.
+! Setting this option clears the \fBRD\fR recursion
+! desired bit in the query which \fBhost\fR makes.
+  This should mean that the name server receiving the query will not
+  attempt to resolve \fIname\fR. The
+  \fB-r\fR option enables \fBhost\fR to mimic
+***************
+*** 120,125 ****
+--- 120,136 ----
+  effectively wait forever for a reply. The time to wait for a response
+  will be set to the number of seconds given by the hardware's maximum
+  value for an integer quantity.
++ .SH "MDN SUPPORT"
++ .PP
++ If \fBhost\fR has been built with mdn support, it can
++ accept and display non-ASCII domain names.
++ \fBhost\fR appropriately converts character encoding of
++ domain name before sending a request to DNS server or displaying a
++ reply from the server.
++ If you'd like to turn off the MDN support for some reason, defines
++ the \fBMDN_DISABLE\fR environment variable.
++ The MDN support is disabled if the the variable is set when
++ \fBhost\fR runs.
+  .SH "FILES"
+  .PP
+  \fI/etc/resolv.conf\fR
+Index: bin/dig/host.c
+diff -c mdn/othersrc/bind9/bin/dig/host.c:1.1.1.8 mdn/othersrc/bind9/bin/dig/host.c:1.7
+*** bin/dig/host.c     Tue Nov 27 16:55:51 2001
+--- bin/dig/host.c     Thu Nov 29 18:45:14 2001
+***************
+*** 666,671 ****
+--- 666,676 ----
+       lookup->new_search = ISC_TRUE;
+       ISC_LIST_APPEND(lookup_list, lookup, link);
+  
++ #ifdef WITH_MDN
++      if (getenv(MDN_DISABLE_ENVVAR_NAME) != NULL)
++              lookup->mdn = ISC_FALSE;
++ #endif
++ 
+       usesearch = ISC_TRUE;
+  }
+  
+Index: bin/dig/host.docbook
+diff -c mdn/othersrc/bind9/bin/dig/host.docbook:1.1.1.1 mdn/othersrc/bind9/bin/dig/host.docbook:1.2
+*** bin/dig/host.docbook       Tue Nov 27 16:55:51 2001
+--- bin/dig/host.docbook       Thu Nov 29 14:36:26 2001
+***************
+*** 181,186 ****
+--- 181,201 ----
+  </refsect1>
+  
+  <refsect1>
++ <title>MDN SUPPORT</title>
++ <para>
++ If <command>host</command> has been built with mdn support, it can
++ accept and display non-ASCII domain names.
++ <command>host</command> appropriately converts character encoding of
++ domain name before sending a request to DNS server or displaying a
++ reply from the server.
++ If you'd like to turn off the MDN support for some reason, defines
++ the <envar>MDN_DISABLE</envar> environment variable.
++ The MDN support is disabled if the the variable is set when
++ <command>host</command> runs.
++ </para>
++ </refsect1>
++ 
++ <refsect1>
+  <title>FILES</title>
+  <para>
+  <filename>/etc/resolv.conf</filename>
+Index: bin/dig/nslookup.c
+diff -c mdn/othersrc/bind9/bin/dig/nslookup.c:1.1.1.8 mdn/othersrc/bind9/bin/dig/nslookup.c:1.7
+*** bin/dig/nslookup.c Tue Nov 27 16:55:51 2001
+--- bin/dig/nslookup.c Thu Nov 29 18:45:14 2001
+***************
+*** 656,661 ****
+--- 656,665 ----
+       ISC_LIST_APPEND(lookup_list, lookup, link);
+       lookup->origin = NULL;
+       ISC_LIST_INIT(lookup->my_server_list);
++ #ifdef WITH_MDN
++      if (getenv(MDN_DISABLE_ENVVAR_NAME) != NULL)
++              lookup->mdn = ISC_FALSE;
++ #endif
+       debug("looking up %s", lookup->textname);
+  }
+  
+Index: bin/dig/include/dig/dig.h
+diff -c mdn/othersrc/bind9/bin/dig/include/dig/dig.h:1.1.1.6 mdn/othersrc/bind9/bin/dig/include/dig/dig.h:1.7
+*** bin/dig/include/dig/dig.h  Tue Nov 27 16:55:51 2001
+--- bin/dig/include/dig/dig.h  Thu Nov 29 18:45:14 2001
+***************
+*** 74,79 ****
+--- 74,86 ----
+   * be 1.
+   */
+  
++ /*
++  * Name of environment variable which disables MDN support if defined.
++  */
++ #ifdef WITH_MDN
++ #define MDN_DISABLE_ENVVAR_NAME "MDN_DISABLE"
++ #endif
++ 
+  ISC_LANG_BEGINDECLS
+  
+  typedef struct dig_lookup dig_lookup_t;
+***************
+*** 109,114 ****
+--- 116,124 ----
+               servfail_stops,
+               new_search,
+               besteffort,
++ #ifdef WITH_MDN
++              mdn,
++ #endif
+               dnssec;
+       char textname[MXNAME]; /* Name we're going to be looking up */
+       char cmdline[MXNAME];
+Index: lib/dns/name.c
+diff -c mdn/othersrc/bind9/lib/dns/name.c:1.1.1.9 mdn/othersrc/bind9/lib/dns/name.c:1.12
+*** lib/dns/name.c     Tue Nov 27 16:57:32 2001
+--- lib/dns/name.c     Thu Nov 29 18:45:14 2001
+***************
+*** 194,199 ****
+--- 194,206 ----
+  /* XXXDCL make const? */
+  dns_name_t *dns_wildcardname = &wild;
+  
++ #ifdef WITH_MDN
++ /*
++  * dns_name_t to text post-conversion procedure.
++  */
++ static dns_name_totextfilter_t totext_filter_proc = NULL;
++ #endif
++ 
+  static void
+  set_offsets(const dns_name_t *name, unsigned char *offsets,
+           dns_name_t *set_name);
+***************
+*** 1682,1687 ****
+--- 1689,1697 ----
+       unsigned int labels;
+       isc_boolean_t saw_root = ISC_FALSE;
+       char num[4];
++ #ifdef WITH_MDN
++      unsigned int oused = target->used;
++ #endif
+  
+       /*
+        * This function assumes the name is in proper uncompressed
+***************
+*** 1859,1864 ****
+--- 1869,1878 ----
+  
+       isc_buffer_add(target, tlen - trem);
+  
++ #ifdef WITH_MDN
++      if (totext_filter_proc != NULL)
++              return ((*totext_filter_proc)(target, oused, saw_root));
++ #endif
+       return (ISC_R_SUCCESS);
+  }
+  
+***************
+*** 3315,3317 ****
+--- 3329,3337 ----
+       return (ISC_R_SUCCESS);
+  }
+  
++ #ifdef WITH_MDN
++ void
++ dns_name_settotextfilter(dns_name_totextfilter_t proc) {
++      totext_filter_proc = proc;
++ }
++ #endif
+Index: lib/dns/include/dns/name.h
+diff -c mdn/othersrc/bind9/lib/dns/include/dns/name.h:1.1.1.6 mdn/othersrc/bind9/lib/dns/include/dns/name.h:1.8
+*** lib/dns/include/dns/name.h Tue Nov 27 16:57:38 2001
+--- lib/dns/include/dns/name.h Thu Nov 29 18:45:14 2001
+***************
+*** 218,223 ****
+--- 218,234 ----
+   */
+  #define DNS_NAME_MAXWIRE 255
+  
++ #ifdef WITH_MDN
++ /*
++  * Text output filter procedure.
++  * 'target' is the buffer to be converted.  The region to be converted
++  * is from 'buffer'->base + 'used_org' to the end of the used region.
++  */
++ typedef isc_result_t (*dns_name_totextfilter_t)(isc_buffer_t *target,
++                                              unsigned int used_org,
++                                              isc_boolean_t absolute);
++ #endif
++ 
+  /***
+   *** Initialization
+   ***/
+***************
+*** 1243,1248 ****
+--- 1254,1267 ----
+   *   'size' > 0.
+   *
+   */
++ 
++ #ifdef WITH_MDN
++ void
++ dns_name_settotextfilter(dns_name_totextfilter_t proc);
++ /*
++  * Call 'proc' at the end of dns_name_totext.
++  */
++ #endif /* WITH_MDN */
+  
+  #define DNS_NAME_FORMATSIZE (DNS_NAME_MAXTEXT + 1)
+  /*
index ee67587959f8929120fa8467a8065bbff7f1dbbc..c23f5fb8de1fa4b6169e9a4744a17754d186d131 100644 (file)
@@ -1,4 +1,4 @@
-# $Id: Makefile.in,v 1.9 2001/04/06 07:53:12 ishisone Exp $
+# $Id: Makefile.in,v 1.1 2002/01/02 02:47:00 marka Exp $
 # Copyright (c) 2000 Japan Network Information Center.  All rights reserved.
 #  
 # By using this file, you agree to the terms and conditions set forth bellow.
@@ -7,8 +7,8 @@
 # 
 # The following License Terms and Conditions apply, unless a different
 # license is obtained from Japan Network Information Center ("JPNIC"),
-# a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku,
-# Tokyo, Japan.
+# a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda,
+# Chiyoda-ku, Tokyo 101-0047, Japan.
 # 
 # 1. Use, Modification and Redistribution (including distribution of any
 #    modified or derived work) in source and/or binary forms is permitted
@@ -61,7 +61,7 @@ VPATH = @srcdir@
 prefix = @prefix@
 exec_prefix = @exec_prefix@
 
-SUBDIRS = mdnconv runmdn
+SUBDIRS = mdnconv @RUNMDN_SUBDIR@
 
 SHELL = @SHELL@
 
index d6f4ab8e317024e5d7faac1b9d25c83d0991a415..e2af9b5635480b2ada7487ccd9a7a665e0b52feb 100644 (file)
@@ -1,4 +1,4 @@
-# $Id: Makefile.in,v 1.15 2001/03/28 02:12:37 m-kasahr Exp $
+# $Id: Makefile.in,v 1.1 2002/01/02 02:47:01 marka Exp $
 # Copyright (c) 2000 Japan Network Information Center.  All rights reserved.
 #  
 # By using this file, you agree to the terms and conditions set forth bellow.
@@ -7,8 +7,8 @@
 # 
 # The following License Terms and Conditions apply, unless a different
 # license is obtained from Japan Network Information Center ("JPNIC"),
-# a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku,
-# Tokyo, Japan.
+# a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda,
+# Chiyoda-ku, Tokyo 101-0047, Japan.
 # 
 # 1. Use, Modification and Redistribution (including distribution of any
 #    modified or derived work) in source and/or binary forms is permitted
@@ -75,22 +75,29 @@ MKINSTALLDIRS = @top_srcdir@/mkinstalldirs
 SHELL   = @SHELL@
 LIBTOOL = @LIBTOOL@
 
+ICONVINC = @ICONVINC@
+ICONVLIB = @ICONVLIB@
+MDNLIB = ../../lib/libmdn.la
+
 OPTS =
-INCS = -I$(srcdir)/../../include -I../../include
+INCS = -I$(srcdir)/../../include -I../../include $(ICONVINC)
 DEFS =
 
 CFLAGS = $(OPTS) $(INCS) $(DEFS) @CFLAGS@
+LDFLAGS = $(OPTS) @LDFLAGS@
 
 SRCS = mdnconv.c util.c
 OBJS = mdnconv.o util.o
 
-ICONVLIB = @ICONVLIB@
-MDNLIB = ../../lib/libmdn.la
-
-all: mdnconv
+all: mdnconv mdnslookup
 
 mdnconv: $(OBJS) $(MDNLIB)
-       $(LIBTOOL) --mode=link $(CC) -o $@ $(OBJS) $(MDNLIB) $(ICONVLIB)
+       $(LIBTOOL) --mode=link $(CC) $(LDFLAGS) -o $@ \
+               $(OBJS) $(MDNLIB) $(ICONVLIB)
+
+mdnslookup: $(srcdir)/mdnslookup.in
+       sed -e 's%[@]bindir[@]%$(bindir)%' $(srcdir)/mdnslookup.in > mdnslookup
+       chmod 0755 mdnslookup
 
 install: install-prog install-man
 
@@ -103,5 +110,5 @@ install-man:
        $(INSTALL_DATA) $(srcdir)/mdnconv.1 $(mandir)/man1
 
 clean:
-       rm -f *.o mdnconv *.core core *~
+       rm -f *.o mdnconv mdnslookup *.core core *~
        rm -fr .libs/
index 13bb3936c23927983f366225115204127694d070..c79116a298c260114590e65eb8139e25d75e6682 100644 (file)
@@ -1,4 +1,4 @@
-.\" $Id: mdnconv.1,v 1.17 2001/05/18 04:16:27 ishisone Exp $
+.\" $Id: mdnconv.1,v 1.1 2002/01/02 02:47:01 marka Exp $
 .\"
 .\" Copyright (c) 2000,2001 Japan Network Information Center.
 .\" All rights reserved.
@@ -9,8 +9,8 @@
 .\" 
 .\" The following License Terms and Conditions apply, unless a different
 .\" license is obtained from Japan Network Information Center ("JPNIC"),
-.\" a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku,
-.\" Tokyo, Japan.
+.\" a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda,
+.\" Chiyoda-ku, Tokyo 101-0047, Japan.
 .\" 
 .\" 1. Use, Modification and Redistribution (including distribution of any
 .\"    modified or derived work) in source and/or binary forms is permitted
@@ -104,10 +104,13 @@ standard domain name preperation (NAMEPREP)
 Furthermore, delimiter mapping is also performed in case \-delimitermap
 command line option is specified.
 .PP
-The other mode is a reverse convertion, from IDN-encoded domain name to
+The other mode is a reverse conversion, from IDN-encoded domain name to
 local-encoded domain names.
-Since IDN-ecoded names are usually already normalized by local mapping and
-NAMEPREP process, only codeset conversion is performed in this mode.
+In this mode, local mapping and NAMEPREP are not performed since
+IDN-encoded names should already be normalized.
+Instead, a check is done in order to make sure the IDN-encoded domain name
+is properly NAMEPREP'ed.  If it is not, the name will be output in
+IDN encoding, not in the local encoding.
 .\"
 .SH OPTIONS
 Normally
@@ -124,25 +127,13 @@ Any of the following codeset names can be specified.
 .IP "\(bu" 2
 Any codeset names which \fIiconv_open()\fP library function accepts
 .IP "\(bu" 2
-\f(CWRACE\fR
-.IP "\(bu" 2
-\f(CWBRACE\fR
+\f(CWAMC-ACE-Z\fR
 .IP "\(bu" 2
-\f(CWLACE\fR
+\f(CWRACE\fR
 .IP "\(bu" 2
 \f(CWDUDE\fR
 .IP "\(bu" 2
-\f(CWUTF-5\fR
-.IP "\(bu" 2
-\f(CWUTF-6\fR
-.IP "\(bu" 2
-\f(CWAltDUDE\fR
-.IP "\(bu" 2
-\f(CWAMC-ACE-O\fR
-.IP "\(bu" 2
-\f(CWAMC-ACE-M\fR
-.IP "\(bu" 2
-\f(CWAMC-ACE-R\fR
+\f(CWUTF-8\fR
 .IP "\(bu" 2
 Any alias names for the above, defined by the codeset alias file.
 .RE
@@ -182,12 +173,15 @@ Specify the version of NAMEPREP.
 The following is a list of currently available
 .IR version s.
 .RS 4
-.IP \f(CWnameprep-02\fR 4
-Perform NAMEPREP according to the Internet Draft
-``draft-ietf-idn-nameprep-02.txt'' (NAMEPREP-02).
 .IP \f(CWnameprep-03\fR 4
 Perform NAMEPREP according to the Internet Draft
 ``draft-ietf-idn-nameprep-03.txt'' (NAMEPREP-03).
+.IP \f(CWnameprep-05\fR 4
+Perform NAMEPREP according to the Internet Draft
+``draft-ietf-idn-nameprep-05.txt'' (NAMEPREP-05).
+.IP \f(CWnameprep-06\fR 4
+Perform NAMEPREP according to the Internet Draft
+``draft-ietf-idn-nameprep-06.txt'' (NAMEPREP-06).
 .RE
 .IP "" 4
 This option is a shorthand for specifying the 4 options below.
@@ -207,13 +201,10 @@ This option is a shorthand for specifying the 4 options below.
 .I version
 .ft R
 .RE
-.IP "" 4
-This option is only meaningful in the normal conversion mode.
 .TP 4
 \fB\-nonameprep\fR, \fB\-N\fR
-Specify to skip NAMEPREP process in the normal conversion mode.
-.br
-This option is only meaningful in the normal conversion mode.
+Specify to skip NAMEPREP process (or NAMEPREP verification process
+in the reverse conversion mode).
 .TP 4
 \fB\-map\fR \fImap\fR
 Specify the name of the mapping rule for NAMEPREP mapping process.
@@ -221,10 +212,12 @@ Currently, following
 .IR map s
 are available.
 .RS 4
-.IP \f(CWnameprep-02\fR 4
-Use the list of mappings specified by NAMEPREP-02 draft.
 .IP \f(CWnameprep-03\fR 4
 Use the list of mappings specified by NAMEPREP-03 draft.
+.IP \f(CWnameprep-05\fR 4
+Use the list of mappings specified by NAMEPREP-05 draft.
+.IP \f(CWnameprep-06\fR 4
+Use the list of mappings specified by NAMEPREP-06 draft.
 .IP \f(CWfilemap:\fR\fIpath\fR 4
 Use list of mappings specified by mapfile
 .IR path .
@@ -238,37 +231,25 @@ specification.
 If neither this option nor ``\-nameprep'' are specified,
 the schemes specified in the configuration file (``nameprep-map'' entry)
 are used.
-.br
-This option is only meaningful in the normal conversion mode.
 .TP 4
 \fB\-normalize\fP \fIscheme\fP
 Specify the normalization scheme for NAMEPREP normalization process.
 Currently, following \fIscheme\fPs are available:
 .RS 4
-.IP \f(CWascii-uppercase\fR
-ASCII lowercase to uppercase mapping.
-.IP \f(CWascii-lowercase\fR
-ASCII uppercase to lowercase mapping.
-.IP \f(CWunicode-uppercase\fR
-Unicode lowercase to uppercase mapping, which is described in
-``Unicode Technical Report #21: Case Mappings'',
-available from unicode.org.
-.IP \f(CWunicode-lowercase\fR
-Unicode uppercase to lowercase mapping, according ``Case Mappings''.
-.IP \f(CWunicode-foldcase\fR
-Unicode case-folding for case-less string matching,
-also described in the above document.
-.IP \f(CWunicode-form-c\fR
-Unicode Normlization Form C, which is described in
-``Unicode Technical Report #15: Unicode Normalization Forms'',
-also available from unicode.org.
 .IP \f(CWunicode-form-kc\fR
-Unicode Normlization Form KC, also described in the above
-document.
-.IP \f(CWnameprep-02\fR
-Synonim for ``unicode-form-kc''.
+Unicode Normlization Form KC, also described in
+``Unicode Technical Report #15: Unicode Normalization Forms'',
+available from unicode.org.
+.IP \f(CWunicode-form-kc/3.0.1\fR
+Unicode Normlization Form KC, version 3.0.1
+.IP \f(CWunicode-form-kc/3.1.0\fR
+Unicode Normlization Form KC, version 3.1.0
 .IP \f(CWnameprep-03\fR
-Synonim for ``unicode-form-kc''.
+Synonim for ``unicode-form-kc/3.0.1''.
+.IP \f(CWnameprep-05\fR
+Synonim for ``unicode-form-kc/3.1.0''.
+.IP \f(CWnameprep-06\fR
+Synonim for ``unicode-form-kc/3.1.0''.
 .RE
 .IP "" 4
 This option can be specified more than once.
@@ -278,8 +259,6 @@ specification.
 If neither this option nor ``\-nameprep'' are specified,
 the schemes specified in the configuration file (``nameprep-normalize'' entry)
 are used.
-.br
-This option is only meaningful in the normal conversion mode.
 .TP 4
 \fB\-prohibit\fR \fIset\fR
 Specify the set of prohibited characters.
@@ -287,10 +266,12 @@ Currently, following
 .IR set s
 are available.
 .RS 4
-.IP \f(CWnameprep-02\fR 4
-Use list of prohibit characters specified by NAMEPREP-02 draft.
 .IP \f(CWnameprep-03\fR 4
 Use list of prohibit characters specified by NAMEPREP-03 draft.
+.IP \f(CWnameprep-05\fR 4
+Use list of prohibit characters specified by NAMEPREP-05 draft.
+.IP \f(CWnameprep-06\fR 4
+Use list of prohibit characters specified by NAMEPREP-06 draft.
 .IP \f(CWfileset:\fR\fIpath\fR 4
 Use list of characters specified by setfile
 .IR path .
@@ -303,8 +284,6 @@ prohibited characters is the union of the specified sets.
 If neither this option nor ``\-nameprep'' is specified,
 list of characters specified by the configuration file
 (``nameprep-prohibit'' entry) is used.
-.br
-This option is only meaningful in the normal conversion mode.
 .TP 4
 \fB\-unassigned\fR \fIset\fR
 Specify the set of unassigned codepoints.
@@ -312,10 +291,12 @@ Currently, following
 .IR set s
 are available.
 .RS 4
-.IP \f(CWnameprep-02\fR 4
-Use the list of unassigned characters specified by NAMEPREP-02 draft.
 .IP \f(CWnameprep-03\fR 4
 Use the list of unassigned characters specified by NAMEPREP-03 draft.
+.IP \f(CWnameprep-05\fR 4
+Use the list of unassigned characters specified by NAMEPREP-05 draft.
+.IP \f(CWnameprep-06\fR 4
+Use the list of unassigned characters specified by NAMEPREP-06 draft.
 .IP \f(CWfileset:\fR\fIpath\fR 4
 Use list of characters specified by setfile
 .IR path .
@@ -331,14 +312,10 @@ prohibited characters is the union of the specified sets.
 If neither this option nor ``\-nameprep'' is specified,
 list of characters specified by the configuration file
 (``nameprep-unassigned'' entry) is used.
-.br
-This option is only meaningful in the normal conversion mode.
 .TP 4
 \fB\-unassigncheck\fR, \fB\-u\fR
 Specify unassigned codepoint check should be performed.
 Unassigned codepoint check is disabled by default.
-.br
-This option is only meaningful in the normal conversion mode.
 .TP 4
 \fB\-delimiter\fR \fIcodepoint\fP
 Specify the character to be mapped to domain name delimiter (period).
@@ -384,6 +361,10 @@ Force line-buffering mode.
 \fB\-version\fP, \fB\-v\fP
 Print version information and quit.
 .\"
+.SH LOCAL CODESET
+mdnconv guesses local codeset from locale and environment variables.
+See the ``LOCAL CODESET'' section in mdn.conf(5) for more details.
+.\"
 .SH CONVERSION MECHANISM
 Here is a brief step-by-step description of how
 .B mdnconv
@@ -464,6 +445,14 @@ Perform name preparation (NAMEPREP).  This is a following 3-step process.
 3) Prohibited/unassigned character checking
 .fi
 .RE
+.IP "" 4
+When
+.B mdnconv
+operates in the reverse conversion mode, this process checks that the
+given domain name is properly NAMEPREP'ed.  If it is not properly
+NAMEPREP'ed and the input codeset is an ACE, the domain name is
+converted back to the input codeset in the following process, instead
+of the output codeset.
 .IP "6. output-side conversion" 4
 Finally,
 .B mdnconv
@@ -472,7 +461,7 @@ And it writes them to stdout together with the rest of the line.
 .PP
 If
 .B mdnconv
-operates in the reverse conversion mode, step 3, 4 and 5 above are skipped.
+operates in the reverse conversion mode, step 3 and 4 above are skipped.
 .\"
 .SH FILE MANAGEMENT
 Maybe the best way to manage named.conf or zone master files that contains
index 3d424b5afcd365c85f867ea6c69898463683f4eb..0e75d7ee85b3ebbbfaf7196dbbc55931d45658a5 100644 (file)
@@ -1,5 +1,5 @@
 #ifndef lint
-static char *rcsid = "$Id: mdnconv.c,v 1.32 2001/05/18 04:16:28 ishisone Exp $";
+static char *rcsid = "$Id: mdnconv.c,v 1.1 2002/01/02 02:47:02 marka Exp $";
 #endif
 
 /*
@@ -12,8 +12,8 @@ static char *rcsid = "$Id: mdnconv.c,v 1.32 2001/05/18 04:16:28 ishisone Exp $";
  * 
  * The following License Terms and Conditions apply, unless a different
  * license is obtained from Japan Network Information Center ("JPNIC"),
- * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku,
- * Tokyo, Japan.
+ * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda,
+ * Chiyoda-ku, Tokyo 101-0047, Japan.
  * 
  * 1. Use, Modification and Redistribution (including distribution of any
  *    modified or derived work) in source and/or binary forms is permitted
@@ -256,7 +256,7 @@ main(int ac, char **av) {
        /* Create resource context. */
        resconf = NULL;
        if ((r = mdn_resconf_create(&resconf)) != mdn_success) {
-               errormsg("error initilizing configuration parameters\n");
+               errormsg("error initializing configuration parameters\n");
                return (1);
        }
 
@@ -278,13 +278,21 @@ main(int ac, char **av) {
        if (flags & FLAG_REVERSE) {
                if (in_code != NULL)
                        set_idncode(resconf, in_code);
+               else
+                       check_defaultidncode(resconf, "-in");
                if (out_code != NULL)
                        set_localcode(resconf, out_code);
+               else
+                       check_defaultlocalcode(resconf, "-out");
        } else {
                if (in_code != NULL)
                        set_localcode(resconf, in_code);
+               else
+                       check_defaultlocalcode(resconf, "-in");
                if (out_code != NULL)
                        set_idncode(resconf, out_code);
+               else
+                       check_defaultidncode(resconf, "-out");
        }
 
        /* Set delimiter map(s). */
@@ -355,7 +363,19 @@ convert_file(mdn_resconf_t conf, FILE *fp, int flags) {
                mdn_converter_destroy(conv);
 
        if (flags & FLAG_REVERSE) {
-               strcpy(insn1, "i");
+               char *insnp = insn1;
+
+               *insnp++ = 'i';
+               if (flags & FLAG_NAMEPREP) {
+                       *insnp++ = '!';
+                       *insnp++ = 'N';
+               }
+               if (flags & FLAG_UNASSIGNCHECK) {
+                       *insnp++ = '!';
+                       *insnp++ = 'u';
+               }
+               *insnp = '\0';
+
                strcpy(insn2, "L");
        } else {
                char *insnp = insn2;
@@ -392,7 +412,7 @@ convert_file(mdn_resconf_t conf, FILE *fp, int flags) {
                /*
                 * Convert input line to UTF-8.
                 */
-               if (ace_hack) {
+               if (ace_hack && (flags & FLAG_SELECTIVE)) {
                        /*
                         * Selectively decode those portions.
                         */
@@ -418,7 +438,7 @@ convert_file(mdn_resconf_t conf, FILE *fp, int flags) {
                 * Perform local mapping and NAMEPREP, and convert to
                 * the output codeset.
                 */
-               if (flags & FLAG_SELECTIVE) {
+               if (!(flags & FLAG_REVERSE) && (flags & FLAG_SELECTIVE)) {
                        r = selective_encode(conf, insn2, line2, line1,
                                             sizeof(line1));
                } else {
diff --git a/contrib/idn/mdnkit/tools/mdnconv/mdnslookup.in b/contrib/idn/mdnkit/tools/mdnconv/mdnslookup.in
new file mode 100644 (file)
index 0000000..84b6e62
--- /dev/null
@@ -0,0 +1,132 @@
+#! /bin/sh
+# $Id: mdnslookup.in,v 1.1 2002/02/08 05:41:33 marka Exp $
+#
+# Copyright (c) 2000 Japan Network Information Center.  All rights reserved.
+#  
+# By using this file, you agree to the terms and conditions set forth bellow.
+# 
+#                      LICENSE TERMS AND CONDITIONS 
+# 
+# The following License Terms and Conditions apply, unless a different
+# license is obtained from Japan Network Information Center ("JPNIC"),
+# a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku,
+# Tokyo, Japan.
+# 
+# 1. Use, Modification and Redistribution (including distribution of any
+#    modified or derived work) in source and/or binary forms is permitted
+#    under this License Terms and Conditions.
+# 
+# 2. Redistribution of source code must retain the copyright notices as they
+#    appear in each source code file, this License Terms and Conditions.
+# 
+# 3. Redistribution in binary form must reproduce the Copyright Notice,
+#    this License Terms and Conditions, in the documentation and/or other
+#    materials provided with the distribution.  For the purposes of binary
+#    distribution the "Copyright Notice" refers to the following language:
+#    "Copyright (c) Japan Network Information Center.  All rights reserved."
+# 
+# 4. Neither the name of JPNIC may be used to endorse or promote products
+#    derived from this Software without specific prior written approval of
+#    JPNIC.
+# 
+# 5. Disclaimer/Limitation of Liability: THIS SOFTWARE IS PROVIDED BY JPNIC
+#    "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+#    LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+#    PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL JPNIC BE LIABLE
+#    FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+#    CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+#    SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+#    BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+#    WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+#    OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+#    ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+# 
+# 6. Indemnification by Licensee
+#    Any person or entities using and/or redistributing this Software under
+#    this License Terms and Conditions shall defend indemnify and hold
+#    harmless JPNIC from and against any and all judgements damages,
+#    expenses, settlement liabilities, cost and other liabilities of any
+#    kind as a result of use and redistribution of this Software or any
+#    claim, suite, action, litigation or proceeding by any third party
+#    arising out of or relates to this License Terms and Conditions.
+# 
+# 7. Governing Law, Jurisdiction and Venue
+#    This License Terms and Conditions shall be governed by and and
+#    construed in accordance with the law of Japan. Any person or entities
+#    using and/or redistributing this Software under this License Terms and
+#    Conditions hereby agrees and consent to the personal and exclusive
+#    jurisdiction and venue of Tokyo District Court of Japan.
+
+USAGE="Usage: $0 domain-name DNS-server"
+
+#
+# Parse command line arguments.
+#
+if [ $# -lt 2 ] ; then
+    echo "$0: too few argument" 1>&2
+    echo $USAGE 1>&2
+    exit 1
+fi
+
+if [ $# -gt 2 ] ; then
+    echo "$0: too many argument" 1>&2
+    echo $USAGE 1>&2
+    exit 1
+fi
+
+case "$1" in
+-*) echo "$0: unknown option $1" 1>&2
+    echo $USAGE 1>&2
+    exit 1
+    ;;
+esac
+
+LOCAL_DOMAIN_NAME="$1"
+NAME_SERVER="$2"
+
+#
+# Append some directories to PATH.
+#
+[ -d /usr/sbin ] && PATH=$PATH:/usr/sbin
+[ -d /sbin ] && PATH=$PATH:/sbin
+
+#
+# Find `nslookup' command.
+#
+if [ x"$NSLOOKUP" = x ] ; then
+    for I in `echo $PATH | sed -e 's/:/ /g'` ; do
+       if [ -x $I/nslookup ] ; then
+           NSLOOKUP="$I/nslookup"
+           break
+       fi
+    done
+    if [ "$NSLOOKUP" = "" ] ; then
+       echo "$0: nslookup not found" 1>&2
+       exit 1
+    fi
+fi
+if [ ! -x "$NSLOOKUP" ] ; then
+    echo "$0: nslookup not found" 1>&2
+    exit 1
+fi
+
+#
+# Check if `mdnconv' command exists.
+#
+MDNCONV=${MDNCONV-"@bindir@/mdnconv"}
+if [ ! -x "$MDNCONV" ] ; then
+    echo "$0: mdnconv not found" 1>&2
+    exit 1
+fi
+
+#
+# Convert domain name to IDN encoding.
+#
+IDN_DOMAIN_NAME="`echo $LOCAL_DOMAIN_NAME | $MDNCONV -w`" || exit 1
+
+#
+# Invoke nslookup.
+#
+$NSLOOKUP $IDN_DOMAIN_NAME $NAME_SERVER < /dev/null || exit 1
+
+exit 0
index 08d22f9cadd5e211ad6148bf39b7e2b5eea151a5..6ffec735eae612ab19f9b0755941b42626768de6 100644 (file)
@@ -1,5 +1,5 @@
 #ifndef lint
-static char *rcsid = "$Id: util.c,v 1.17 2001/04/16 02:18:15 m-kasahr Exp $";
+static char *rcsid = "$Id: util.c,v 1.1 2002/01/02 02:47:02 marka Exp $";
 #endif
 
 /*
@@ -11,8 +11,8 @@ static char *rcsid = "$Id: util.c,v 1.17 2001/04/16 02:18:15 m-kasahr Exp $";
  * 
  * The following License Terms and Conditions apply, unless a different
  * license is obtained from Japan Network Information Center ("JPNIC"),
- * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku,
- * Tokyo, Japan.
+ * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda,
+ * Chiyoda-ku, Tokyo 101-0047, Japan.
  * 
  * 1. Use, Modification and Redistribution (including distribution of any
  *    modified or derived work) in source and/or binary forms is permitted
@@ -168,7 +168,7 @@ selective_decode(mdn_resconf_t conf, char *insn,
        domain_name = NULL;
 
        /*
-        * We ignores a chunk maching to the regular expression:
+        * We ignore chunks matching to the regular expression:
         *    [\-\.][0-9A-Za-z\-\.]*
         *
         * While `*from' points to a character in such a chunk,
@@ -247,7 +247,6 @@ selective_decode(mdn_resconf_t conf, char *insn,
                                }
                                to += len;
                                tolen -= len;
-
                        }
 
                        /*
@@ -404,6 +403,32 @@ set_unassigned_checkers(mdn_resconf_t conf, char **unassigns, int nunassigns) {
        }
 }
 
+void
+check_defaultlocalcode(mdn_resconf_t conf, const char *opt) {
+       mdn_converter_t conv = mdn_resconf_getlocalconverter(conf);
+
+       if (conv == NULL) {
+               errormsg("cannot get the default local encoding.\n"
+                        "please specify an appropriate one "
+                        "with `%s' option.\n", opt);
+               exit(1);
+       } else
+               mdn_converter_destroy(conv);
+}
+
+void
+check_defaultidncode(mdn_resconf_t conf, const char *opt) {
+       mdn_converter_t conv = mdn_resconf_getidnconverter(conf);
+
+       if (conv == NULL) {
+               errormsg("cannot get the default IDN encoding.\n"
+                        "please specify an appropriate one "
+                        "with `%s' option.\n", opt);
+               exit(1);
+       } else
+               mdn_converter_destroy(conv);
+}
+
 void
 errormsg(const char *fmt, ...) {
        va_list args;
index 2ec6aa6c4b44ca9ff06fa26c492d47e69239c2bb..3a86e1fa2c8fbb3f301264d464079e103067009b 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: util.h,v 1.7 2001/02/23 10:36:52 m-kasahr Exp $ */
+/* $Id: util.h,v 1.1 2002/01/02 02:47:02 marka Exp $ */
 /*
  * Copyright (c) 2000,2001 Japan Network Information Center.
  * All rights reserved.
@@ -9,8 +9,8 @@
  * 
  * The following License Terms and Conditions apply, unless a different
  * license is obtained from Japan Network Information Center ("JPNIC"),
- * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku,
- * Tokyo, Japan.
+ * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda,
+ * Chiyoda-ku, Tokyo 101-0047, Japan.
  * 
  * 1. Use, Modification and Redistribution (including distribution of any
  *    modified or derived work) in source and/or binary forms is permitted
@@ -81,5 +81,9 @@ extern void           set_prohibit_checkers(mdn_resconf_t conf,
 extern void            set_unassigned_checkers(mdn_resconf_t conf,
                                                char **unassigns,
                                                int nunassigns);
+extern void            check_defaultlocalcode(mdn_resconf_t conf,
+                                              const char *opt);
+extern void            check_defaultidncode(mdn_resconf_t conf,
+                                              const char *opt);
 extern void            errormsg(const char *fmt, ...);
 
index b2c8c660b925543ca5a1d4c3b794026bdc7299c0..ea892d0bdedd347df7d52d9b32e1459893e2d7a9 100644 (file)
@@ -1,4 +1,4 @@
-# $Id: Makefile.in,v 1.32 2001/05/22 03:00:23 m-kasahr Exp $
+# $Id: Makefile.in,v 1.1 2002/01/02 02:47:03 marka Exp $
 # Copyright (c) 2000 Japan Network Information Center.  All rights reserved.
 #  
 # By using this file, you agree to the terms and conditions set forth bellow.
@@ -7,8 +7,8 @@
 # 
 # The following License Terms and Conditions apply, unless a different
 # license is obtained from Japan Network Information Center ("JPNIC"),
-# a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku,
-# Tokyo, Japan.
+# a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda,
+# Chiyoda-ku, Tokyo 101-0047, Japan.
 # 
 # 1. Use, Modification and Redistribution (including distribution of any
 #    modified or derived work) in source and/or binary forms is permitted
 #    Conditions hereby agrees and consent to the personal and exclusive
 #    jurisdiction and venue of Tokyo District Court of Japan.
 
-LIB_CURRENT=7
-LIB_REVISION=0
-LIB_AGE=0
+LIB_CURRENT = 7
+LIB_REVISION = 3
+LIB_AGE = 0
 
 .SUFFIXES: .lo
 
 top_builddir = ../..
+subdir = tools/runmdn
 
 srcdir  = @srcdir@
 VPATH   = @srcdir@
@@ -81,9 +82,12 @@ MKINSTALLDIRS = @top_srcdir@/mkinstalldirs
 SHELL   = @SHELL@
 LIBTOOL = @LIBTOOL@
 
+ICONVINC = @ICONVINC@
+ICONVLIB = @ICONVLIB@
+
 OPTS    =
-INCS    = -I$(srcdir)/../../include -I../../include
-DEFS    =
+INCS    = -I$(srcdir)/../../include -I../../include $(ICONVINC)
+DEFS    = 
 CFLAGS  = $(INCS) $(OPTS) $(DEFS) @CFLAGS@
 LDFLAGS = @LDFLAGS@
 
@@ -99,6 +103,9 @@ MDNOBJS  = \
        $(MDNDIR)/amcacem.lo \
        $(MDNDIR)/amcaceo.lo \
        $(MDNDIR)/amcacer.lo \
+       $(MDNDIR)/amcacev.lo \
+       $(MDNDIR)/amcacew.lo \
+       $(MDNDIR)/amcacez.lo \
        $(MDNDIR)/api.lo \
        $(MDNDIR)/brace.lo \
        $(MDNDIR)/checker.lo \
@@ -112,6 +119,7 @@ MDNOBJS  = \
        $(MDNDIR)/lace.lo \
        $(MDNDIR)/localencoding.lo \
        $(MDNDIR)/log.lo \
+       $(MDNDIR)/mace.lo \
        $(MDNDIR)/mapper.lo \
        $(MDNDIR)/mapselector.lo \
        $(MDNDIR)/nameprep.lo \
@@ -131,12 +139,10 @@ MDNOBJS  = \
        $(MDNDIR)/util.lo \
        $(MDNDIR)/version.lo
 
-ICONVLIB = @ICONVLIB@
-
 .c.lo:
        $(LIBTOOL) --mode=compile $(CC) $(CFLAGS) -c $<
 
-all: $(LIB).la
+all: $(LIB).la runmdn
 
 rtresolver.lo: $(srcdir)/resolver.c
        $(LIBTOOL) --mode=compile $(CC) $(CFLAGS) -DFOR_RUNMDN -o $@ \
@@ -147,6 +153,11 @@ $(LIB).la: $(OBJS)
                -version-info $(LIB_CURRENT):$(LIB_REVISION):$(LIB_AGE) \
                -module -rpath $(libdir) $(OBJS) $(LIBDL)
 
+runmdn: $(srcdir)/runmdn.in
+       cd $(top_builddir) && \
+               CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= CONFIG_LINKS= \
+               $(SHELL) ./config.status
+
 install: install-lib install-script install-man
 
 install-script:
index e545218ae63ec6274be3e48b96bb498e7e3b4b6e..b86762c88cbf2ac038db117fd278ae55ebb676fb 100644 (file)
@@ -1,5 +1,5 @@
 #ifndef lint
-static char *rcsid = "$Id: resolver.c,v 1.1 2001/06/09 00:30:50 tale Exp $";
+static char *rcsid = "$Id: resolver.c,v 1.2 2002/02/08 05:41:38 marka Exp $";
 #endif
 
 /*
@@ -11,8 +11,8 @@ static char *rcsid = "$Id: resolver.c,v 1.1 2001/06/09 00:30:50 tale Exp $";
  * 
  * The following License Terms and Conditions apply, unless a different
  * license is obtained from Japan Network Information Center ("JPNIC"),
- * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku,
- * Tokyo, Japan.
+ * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda,
+ * Chiyoda-ku, Tokyo 101-0047, Japan.
  * 
  * 1. Use, Modification and Redistribution (including distribution of any
  *    modified or derived work) in source and/or binary forms is permitted
@@ -593,7 +593,7 @@ ENTRY(gethostbyname2)(const char *name, int af) {
 
 #ifdef HAVE_GETHOSTBYADDR
 struct hostent *
-ENTRY(gethostbyaddr)(const char *addr, GHBA_ADDRLEN_T len, int type) {
+ENTRY(gethostbyaddr)(GHBA_ADDR_T addr, GHBA_ADDRLEN_T len, int type) {
        static hostbuf_t buf;
        static struct hostent he;
        struct hostent *hp;
@@ -727,7 +727,7 @@ ENTRY(gethostbyname2_r)(const char *name, int af, struct hostent *result,
 
 #ifdef HAVE_GETHOSTBYADDR_R
 int
-ENTRY(gethostbyaddr_r)(const char *addr, GHBA_ADDRLEN_T len, int type,
+ENTRY(gethostbyaddr_r)(GHBA_ADDR_T addr, GHBA_ADDRLEN_T len, int type,
                       struct hostent *result,
                       char *buffer, size_t buflen,
                       struct hostent **rp, int *errp)
@@ -830,7 +830,7 @@ ENTRY(gethostbyname_r)(const char *name, struct hostent *result,
 
 #ifdef HAVE_GETHOSTBYADDR_R
 struct hostent *
-ENTRY(gethostbyaddr_r)(const char *addr, GHBA_ADDRLEN_T len, int type,
+ENTRY(gethostbyaddr_r)(GHBA_ADDR_T addr, GHBA_ADDRLEN_T len, int type,
                       struct hostent *result,
                       char *buffer, int buflen, int *errp)
 {
@@ -1009,9 +1009,9 @@ ENTRY(freeaddrinfo)(struct addrinfo *aip) {
 
 #ifdef HAVE_GETNAMEINFO
 int
-ENTRY(getnameinfo)(const struct sockaddr *sa, socklen_t salen,
-                  char *host, size_t hostlen, char *serv, size_t servlen,
-                  int flags)
+ENTRY(getnameinfo)(const struct sockaddr *sa, GNI_SALEN_T salen,
+                  char *host, GNI_HOSTLEN_T hostlen, char *serv,
+                  GNI_SERVLEN_T servlen, GNI_FLAGS_T flags)
 {
        char name[MDN_NAME_SIZE];
        size_t namelen = sizeof(name);
index c21c32ac066c63e96bde08eb6c644081b095f4a5..8fc0bb3f34e2d8e9ee08fc546e273a2c857748f9 100644 (file)
@@ -1,4 +1,4 @@
-.\" $Id: runmdn.1,v 1.7 2001/04/23 05:56:27 ishisone Exp $
+.\" $Id: runmdn.1,v 1.1 2002/01/02 02:47:04 marka Exp $
 .\"
 .\" Copyright (c) 2000,2001 Japan Network Information Center.
 .\" All rights reserved.
@@ -9,8 +9,8 @@
 .\" 
 .\" The following License Terms and Conditions apply, unless a different
 .\" license is obtained from Japan Network Information Center ("JPNIC"),
-.\" a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku,
-.\" Tokyo, Japan.
+.\" a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda,
+.\" Chiyoda-ku, Tokyo 101-0047, Japan.
 .\" 
 .\" 1. Use, Modification and Redistribution (including distribution of any
 .\"    modified or derived work) in source and/or binary forms is permitted
@@ -63,7 +63,7 @@
 runmdn \- A script to allow applications to use multilingual domain names.
 .\"
 .SH SYNOPSIS
-\fBrunmdn\fP \fIprogram-name\fP [\fIargs..\fP]
+\fBrunmdn\fP [\fB-e\fP \fIlocal-codeset\fP] \fIprogram-name\fP [\fIargs..\fP]
 .\"
 .SH DESCRIPTION
 .B runmdn
@@ -82,6 +82,16 @@ multilingual DNS by configuring mDNkit's configuration file
 \fBmdn.conf\fP.
 See mdn.conf(5) which describes the configuration.
 .\"
+.SH OPTION
+The following option is available:
+.TP 4
+\fB\-e\fP \fIlocal-codeset\fP
+Specify the application's local codeset.
+If the option is not specified,
+.B runmdn
+guesses the codeset from the current locale.
+See the ``NOTE'' section for more details about local codeset.
+.\"
 .SH IMPLEMENTATION
 .B runmdn
 is a small shell script that sets up an environment variable called
@@ -135,10 +145,13 @@ configuration file (
 ).  See mdn.conf(5) for details.
 .\"
 .SH NOTE
-By default,
+Unless
+\fB\-e\fP
+option is specified,
 .B runmdn
 tries to guess the application's local codeset from the application's current
-locale.  However, sometimes it cannot guess the codeset correctly, for example
+locale.
+However, sometimes it cannot guess the codeset correctly, for example
 if the application does not set the locale appropriately
 by calling `setlocale()'.
 In that case, you can explicitly specify the local codeset by setting an
index 11d04f78de40b08d25ea9250a97d8f5eefe7fbc3..81e0f5203d36bf2039b5335b1a8f26e42f503c6e 100644 (file)
@@ -1,5 +1,5 @@
 #! /bin/sh
-# $Id: runmdn.in,v 1.8 2000/09/28 01:37:22 ishisone Exp $
+# $Id: runmdn.in,v 1.1 2002/01/02 02:47:04 marka Exp $
 #
 # Copyright (c) 2000 Japan Network Information Center.  All rights reserved.
 #  
 #    Conditions hereby agrees and consent to the personal and exclusive
 #    jurisdiction and venue of Tokyo District Court of Japan.
 
-preload=
+# Parse command line options.
+usage="Usage: `basename $0` [-e local-encoding] command [argument..]"
+while test $# -gt 0; do
+    case "$1" in
+    -e)
+       if test $# -le 1; then
+           echo $usage 1>&2
+           exit 1
+       fi
+       MDN_LOCAL_CODESET="$2"
+       export MDN_LOCAL_CODESET
+       shift
+       ;;
+    -)
+       break
+       ;;
+    -*)
+       echo $usage 1>&2
+       exit 1
+       ;;
+    *)
+       break
+       ;;
+    esac
+    shift
+done
+if test $# -eq 0; then
+    echo $usage 1>&2
+    exit 1
+fi
 
+# Load library info.
+preload=
 iconv_file=@ICONVSOFILE@
 if test "$iconv_file" != none; then
     preload="$iconv_file@PRELOAD_SEP@"
 fi
 
-# Load library info.
 prefix=@prefix@
 exec_prefix=@exec_prefix@
 libdir=`echo @libdir@`
index 5264f612250b11a6e44222127bd8f1632ab0c7c8..6e11b71c085ff88fcbbddbd741983c017f6d30e2 100644 (file)
@@ -1,5 +1,5 @@
 #ifndef lint
-static char *rcsid = "$Id: stub.c,v 1.1 2001/06/09 00:30:51 tale Exp $";
+static char *rcsid = "$Id: stub.c,v 1.2 2002/02/08 05:41:42 marka Exp $";
 #endif
 
 /*
@@ -11,8 +11,8 @@ static char *rcsid = "$Id: stub.c,v 1.1 2001/06/09 00:30:51 tale Exp $";
  * 
  * The following License Terms and Conditions apply, unless a different
  * license is obtained from Japan Network Information Center ("JPNIC"),
- * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku,
- * Tokyo, Japan.
+ * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda,
+ * Chiyoda-ku, Tokyo 101-0047, Japan.
  * 
  * 1. Use, Modification and Redistribution (including distribution of any
  *    modified or derived work) in source and/or binary forms is permitted
@@ -195,8 +195,8 @@ mdn_stub_gethostbyname2(const char *name, int af) {
 
 #ifdef HAVE_GETHOSTBYADDR
 struct hostent *
-mdn_stub_gethostbyaddr(const char *addr, GHBA_ADDRLEN_T len, int type) {
-       static struct hostent *(*fp)(const char *name,
+mdn_stub_gethostbyaddr(GHBA_ADDR_T addr, GHBA_ADDRLEN_T len, int type) {
+       static struct hostent *(*fp)(GHBA_ADDR_T name,
                                     GHBA_ADDRLEN_T len, int type);
 
        if (fp == NULL)
@@ -247,11 +247,11 @@ mdn_stub_gethostbyname2_r(const char *name, int af, struct hostent *result,
 
 #ifdef HAVE_GETHOSTBYADDR_R
 int
-mdn_stub_gethostbyaddr_r(const char *addr, GHBA_ADDRLEN_T len, int type,
+mdn_stub_gethostbyaddr_r(GHBA_ADDR_T addr, GHBA_ADDRLEN_T len, int type,
                         struct hostent *result, char *buffer,
                         size_t buflen, struct hostent **rp, int *errp)
 {
-       static int (*fp)(const char *addr, GHBA_ADDRLEN_T len, int type,
+       static int (*fp)(GHBA_ADDR_T addr, GHBA_ADDRLEN_T len, int type,
                         struct hostent *result, char *buffer,
                         size_t buflen, struct hostent **rp, int *errp);
 
@@ -284,11 +284,11 @@ mdn_stub_gethostbyname_r(const char *name, struct hostent *result,
 
 #ifdef HAVE_GETHOSTBYADDR_R
 struct hostent *
-mdn_stub_gethostbyaddr_r(const char *addr, int len, int type,
+mdn_stub_gethostbyaddr_r(GHBA_ADDR_T addr, int len, int type,
                         struct hostent *result, char *buffer,
                         int buflen, int *errp)
 {
-       static struct hostent *(*fp)(const char *addr, int len, int type,
+       static struct hostent *(*fp)(GHBA_ADDR_T addr, int len, int type,
                                     struct hostent *result, char *buffer,
                                     int buflen, int *errp);
 
@@ -372,14 +372,13 @@ mdn_stub_freeaddrinfo(struct addrinfo *aip) {
 
 #ifdef HAVE_GETNAMEINFO
 int
-mdn_stub_getnameinfo(const struct sockaddr *sa, socklen_t salen,
-                    char *host, size_t hostlen, char *serv, size_t servlen,
-                    int flags)
-{
-       static int (*fp)(const struct sockaddr *sa, socklen_t salen,
-                        char *host, size_t hostlen,
-                        char *serv, size_t servlen,
-                        int flags);
+mdn_stub_getnameinfo(const struct sockaddr *sa, GNI_SALEN_T salen,
+                    char *host, GNI_HOSTLEN_T hostlen,
+                    char *serv, GNI_SERVLEN_T servlen, GNI_FLAGS_T flags) {
+       static int (*fp)(const struct sockaddr *sa, GNI_SALEN_T salen,
+                        char *host, GNI_HOSTLEN_T hostlen,
+                        char *serv, GNI_SERVLEN_T servlen,
+                        GNI_FLAGS_T flags);
 
        if (fp == NULL)
                fp = get_func_addr("getnameinfo");
index ffe417716fa89359b4975b28a5cae1f1ec8feef2..dcfff6b48e7473524bdb6b79fd08cff236b69c25 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: stub.h,v 1.1 2001/06/09 00:30:51 tale Exp $ */
+/* $Id: stub.h,v 1.2 2002/02/08 05:41:43 marka Exp $ */
 
 #ifndef STUB_H
 #define STUB_H
@@ -39,20 +39,20 @@ mdn_stub_gethostbyname2_r(const char *name, int af, struct hostent *result,
 
 #ifdef HAVE_GETHOSTBYADDR
 extern struct hostent *
-mdn_stub_gethostbyaddr(const char *addr, GHBA_ADDRLEN_T len, int type);
+mdn_stub_gethostbyaddr(GHBA_ADDR_T addr, GHBA_ADDRLEN_T len, int type);
 #endif
 
 #ifdef GETHOST_R_GLIBC_FLAVOR
 #ifdef HAVE_GETHOSTBYADDR_R
 extern int
-mdn_stub_gethostbyaddr_r(const char *addr, GHBA_ADDRLEN_T len, int type,
+mdn_stub_gethostbyaddr_r(GHBA_ADDR_T addr, GHBA_ADDRLEN_T len, int type,
                         struct hostent *result, char *buffer,
                         size_t buflen, struct hostent **rp, int *errp);
 #endif
 #else /* GETHOST_R_GLIBC_FLAVOR */
 #ifdef HAVE_GETHOSTBYADDR_R
 extern struct hostent *
-mdn_stub_gethostbyaddr_r(const char *addr, GHBA_ADDRLEN_T len, int type,
+mdn_stub_gethostbyaddr_r(GHBA_ADDR_T addr, GHBA_ADDRLEN_T len, int type,
                         struct hostent *result, char *buffer,
                         int buflen, int *errp);
 #endif
@@ -86,9 +86,9 @@ mdn_stub_freeaddrinfo(struct addrinfo *aip);
 
 #ifdef HAVE_GETNAMEINFO
 extern int
-mdn_stub_getnameinfo(const struct sockaddr *sa, socklen_t salen,
-                    char *host, size_t hostlen, char *serv, size_t servlen,
-                    int flags);
+mdn_stub_getnameinfo(const struct sockaddr *sa, GNI_SALEN_T salen,
+                    char *host, GNI_HOSTLEN_T hostlen, char *serv,
+                    GNI_SERVLEN_T servlen, GNI_FLAGS_T flags);
 #endif
 
 #endif /* STUB_H */
index 94742ab51abfa93cacba6e03e5b430e3d069eab5..0261874eb0afabcdd04bd7f29100783a8028c3ad 100644 (file)
@@ -1,4 +1,4 @@
-# $Id: SparseMap.pm,v 1.1 2001/06/09 00:30:51 tale Exp $
+# $Id: SparseMap.pm,v 1.2 2002/02/08 05:41:45 marka Exp $
 #
 # Copyright (c) 2001 Japan Network Information Center.  All rights reserved.
 #
@@ -8,8 +8,8 @@
 # 
 # The following License Terms and Conditions apply, unless a different
 # license is obtained from Japan Network Information Center ("JPNIC"),
-# a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku,
-# Tokyo, Japan.
+# a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda,
+# Chiyoda-ku, Tokyo 101-0047, Japan.
 # 
 # 1. Use, Modification and Redistribution (including distribution of any
 #    modified or derived work) in source and/or binary forms is under this
@@ -220,7 +220,7 @@ sub cprog_imap {
        $idcol = 4;
        $idwid = 10;
     }
-    $prog = "static unsigned $idtype ${name}_imap[] = {\n";
+    $prog = "static const unsigned $idtype ${name}_imap[] = {\n";
     $i = 0;
     foreach my $v (@indirect) {
        if ($i % $idcol == 0) {
@@ -426,7 +426,7 @@ sub cprog_dmap {
     my $bmsize = 1 << ($self->{BITS}->[-1] - 3);
 
     $prog = <<"END";
-static struct {
+static const struct {
        unsigned char bm[$bmsize];
 } ${name}_bitmap[] = {
 END
@@ -541,7 +541,7 @@ sub cprog_dmap {
     $idwid = decimalwidth($min) if decimalwidth($min) > $idwid;
 
     $prog = <<"END";
-static struct {
+static const struct {
        $idtype tbl[$tblsize];
 } ${name}_table[] = {
 END
index 6307554781a448408386554ddc60db9dec8bd9dc..33eb8eeb34ea7b3fb6beb9bf32d292e5a8893e6c 100644 (file)
@@ -1,4 +1,4 @@
-# $Id: UCD.pm,v 1.1 2001/06/09 00:30:51 tale Exp $
+# $Id: UCD.pm,v 1.2 2002/02/08 05:41:46 marka Exp $
 #
 # Copyright (c) 2000,2001 Japan Network Information Center.
 # All rights reserved.
@@ -9,8 +9,8 @@
 # 
 # The following License Terms and Conditions apply, unless a different
 # license is obtained from Japan Network Information Center ("JPNIC"),
-# a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku,
-# Tokyo, Japan.
+# a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda,
+# Chiyoda-ku, Tokyo 101-0047, Japan.
 # 
 # 1. Use, Modification and Redistribution (including distribution of any
 #    modified or derived work) in source and/or binary forms is under this
index 96165b4fd74cf9118b8e4d0c6c6007a83b1e8eaf..c3830b8b858cdfb6dada825523359a6d1858d656 100644 (file)
@@ -1,5 +1,5 @@
 #! /usr/local/bin/perl -w
-# $Id: generate_nameprep_data.pl,v 1.1 2001/06/09 00:30:51 tale Exp $
+# $Id: generate_nameprep_data.pl,v 1.2 2002/02/08 05:41:47 marka Exp $
 #
 # Copyright (c) 2001 Japan Network Information Center.  All rights reserved.
 #  
@@ -9,8 +9,8 @@
 # 
 # The following License Terms and Conditions apply, unless a different
 # license is obtained from Japan Network Information Center ("JPNIC"),
-# a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku,
-# Tokyo, Japan.
+# a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda,
+# Chiyoda-ku, Tokyo 101-0047, Japan.
 # 
 # 1. Use, Modification and Redistribution (including distribution of any
 #    modified or derived work) in source and/or binary forms is under this
 #
 
 use v5.6.0;            # for pack('U')
+use bytes;
 
 use lib qw(.);
 
 use SparseMap;
 use Getopt::Long;
 
-(my $myid = '$Id: generate_nameprep_data.pl,v 1.1 2001/06/09 00:30:51 tale Exp $') =~ s/\$([^\$]+)\$/\$-$1-\$/;
+(my $myid = '$Id: generate_nameprep_data.pl,v 1.2 2002/02/08 05:41:47 marka Exp $') =~ s/\$([^\$]+)\$/\$-$1-\$/;
 
 my @map_bits = (9, 7, 5);
 my @proh_bits = (7, 7, 7);
@@ -229,7 +230,7 @@ sub generate_map {
     $map->fix();
 
     print $map->cprog(NAME => "nameprep_${version}_map");
-    print "\nstatic unsigned char nameprep_${version}_map_data[] = \{\n";
+    print "\nstatic const unsigned char nameprep_${version}_map_data[] = \{\n";
     print_uchararray($$bufref);
     print "};\n\n";
 }
index 27d78452ea4be97e132010f07178e0d640a0e13e..bfb5b8a49459b221f426aac639609890f6149d4a 100644 (file)
@@ -1,5 +1,5 @@
 #! /usr/local/bin/perl -w
-# $Id: generate_normalize_data.pl,v 1.5 2001/02/13 07:34:02 ishisone Exp $
+# $Id: generate_normalize_data.pl,v 1.1 2002/01/02 02:47:06 marka Exp $
 #
 # Copyright (c) 2000,2001 Japan Network Information Center.
 # All rights reserved.
@@ -10,8 +10,8 @@
 # 
 # The following License Terms and Conditions apply, unless a different
 # license is obtained from Japan Network Information Center ("JPNIC"),
-# a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku,
-# Tokyo, Japan.
+# a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda,
+# Chiyoda-ku, Tokyo 101-0047, Japan.
 # 
 # 1. Use, Modification and Redistribution (including distribution of any
 #    modified or derived work) in source and/or binary forms is under this
@@ -84,7 +84,7 @@ my $CASEMAP_LAST_BIT = 0x10;
 my $LETTER_BIT = 1;
 my $NSPMARK_BIT = 2;
 
-(my $myid = '$Id: generate_normalize_data.pl,v 1.5 2001/02/13 07:34:02 ishisone Exp $') =~ s/\$([^\$]+)\$/\$-$1-\$/;
+(my $myid = '$Id: generate_normalize_data.pl,v 1.1 2002/01/02 02:47:06 marka Exp $') =~ s/\$([^\$]+)\$/\$-$1-\$/;
 
 my @default_bits = (9, 7, 5);
 #my @default_bits = (7, 7, 7);
@@ -95,9 +95,10 @@ my @folding_bits = @default_bits;
 my @casemap_bits = @default_bits;
 my @casemap_ctx_bits = @default_bits;
 
+my $prefix = '';
 my $dir = '.';
 my $unicodedatafile = 'UnicodeData.txt';
-my $exclusionfile = 'CompositionExclusions-1.txt';
+my $exclusionfile = 'CompositionExclusions.txt';
 my $specialcasefile = 'SpecialCasing.txt';
 my $casefoldingfile = 'CaseFolding.txt';
 my $verbose;
@@ -107,6 +108,7 @@ GetOptions('dir|d=s' => \$dir,
           'exclude|e=s' => \$exclusionfile,    
           'specialcase|s=s' => \$specialcasefile,
           'casefold|c=s' => \$casefoldingfile,
+          'prefix|p=s' => \$prefix,
           'verbose|v' => \$verbose,
 ) or usage();
 
@@ -415,7 +417,7 @@ sub print_canon_class {
 END
     print_bits("CANON_CLASS", @canon_class_bits);
     print "\n";
-    print $canon_class->cprog(NAME => "canon_class");
+    print $canon_class->cprog(NAME => "${prefix}canon_class");
 }
 
 #
@@ -434,13 +436,10 @@ sub print_composition {
 END
     print_bits("CANON_COMPOSE", @comp_bits);
     print "\n";
-    print $comp->cprog(NAME => "compose");
+    print $comp->cprog(NAME => "${prefix}compose");
     print <<"END";
 
-static struct composition {
-       unsigned long c2;       /* 2nd character */
-       unsigned long comp;     /* composed character */
-} compose_seq[] = {
+static const struct composition ${prefix}compose_seq[] = {
 END
     my $i = 0;
     foreach my $r (@comp_data) {
@@ -472,9 +471,9 @@ END
     print_bits("DECOMP", @decomp_bits);
     print "#define DECOMP_COMPAT\t$DECOMP_COMPAT_BIT\n\n";
 
-    print $decomp->cprog(NAME => "decompose");
+    print $decomp->cprog(NAME => "${prefix}decompose");
 
-    print "static unsigned long decompose_seq[] = {\n";
+    print "static const unsigned long ${prefix}decompose_seq[] = {\n";
     print_ulseq(@decomp_data);
     print "};\n\n";
 }
@@ -505,14 +504,14 @@ sub print_casemap {
 END
     print_bits("CASEMAP", @casemap_bits);
     print "\n";
-    print $upper->cprog(NAME => "toupper");
-    print $lower->cprog(NAME => "tolower");
+    print $upper->cprog(NAME => "${prefix}toupper");
+    print $lower->cprog(NAME => "${prefix}tolower");
 
-    print "static unsigned long toupper_seq[] = {\n";
+    print "static const unsigned long ${prefix}toupper_seq[] = {\n";
     print_ulseq(@toupper_data);
     print "};\n\n";
 
-    print "static unsigned long tolower_seq[] = {\n";
+    print "static const unsigned long ${prefix}tolower_seq[] = {\n";
     print_ulseq(@tolower_data);
     print "};\n\n";
 }
@@ -533,9 +532,9 @@ sub print_casefolding {
 END
     print_bits("CASE_FOLDING", @folding_bits);
     print "\n";
-    print $folding->cprog(NAME => "case_folding");
+    print $folding->cprog(NAME => "${prefix}case_folding");
 
-    print "static unsigned long case_folding_seq[] = {\n";
+    print "static const unsigned long ${prefix}case_folding_seq[] = {\n";
     print_ulseq(@folding_data);
     print "};\n\n";
 }
@@ -563,7 +562,7 @@ END
 #define CTX_NSM                $NSPMARK_BIT
 
 END
-    print $casemap_ctx->cprog(NAME => "casemap_ctx");
+    print $casemap_ctx->cprog(NAME => "${prefix}casemap_ctx");
 }
 
 sub sprint_composition_hash {
index 663bcaa8977ad77809b270b3a883c8e242e32f39..bd7a4e3c478e45d67efc7f03d4ea6a6f8eb57270 100644 (file)
@@ -21,4 +21,4 @@ Then go to the top directory and run the following command to compile
 On Windows NT you can run 'mdnsproxy' as a service, while on Windows
 95/98 'mdnsproxy' can be run but not as a service.
 
-; $Id: README.WIN,v 1.1 2001/06/09 00:30:53 tale Exp $
+; $Id: README.WIN,v 1.2 2002/02/08 05:41:50 marka Exp $
index 1f267ebb1207549a992d83dda5b66715c679209d..5b3fd74a15591c0445a89aaa4312c76a5e6e028a 100644 (file)
@@ -11,8 +11,8 @@
  * 
  * The following License Terms and Conditions apply, unless a different
  * license is obtained from Japan Network Information Center ("JPNIC"),
- * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku,
- * Tokyo, Japan.
+ * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda,
+ * Chiyoda-ku, Tokyo 101-0047, Japan.
  * 
  * 1. Use, Modification and Redistribution (including distribution of any
  *    modified or derived work) in source and/or binary forms is permitted
index f4e565eb997aac62c9ef1c06e94c94386cd8e970..257e7a7bf96b94a8adb2c8a9f5110438b43b30b5 100644 (file)
@@ -11,8 +11,8 @@
  * 
  * The following License Terms and Conditions apply, unless a different
  * license is obtained from Japan Network Information Center ("JPNIC"),
- * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku,
- * Tokyo, Japan.
+ * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda,
+ * Chiyoda-ku, Tokyo 101-0047, Japan.
  * 
  * 1. Use, Modification and Redistribution (including distribution of any
  *    modified or derived work) in source and/or binary forms is permitted
index c81f013f85989550e75325d9d0d5fa2762a1b12e..d888e00a36bef1e619f81d60928c3c680fef557f 100644 (file)
@@ -17,8 +17,8 @@
  * 
  * The following License Terms and Conditions apply, unless a different
  * license is obtained from Japan Network Information Center ("JPNIC"),
- * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku,
- * Tokyo, Japan.
+ * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda,
+ * Chiyoda-ku, Tokyo 101-0047, Japan.
  * 
  * 1. Use, Modification and Redistribution (including distribution of any
  *    modified or derived work) in source and/or binary forms is permitted
index 94086ad74f3b0a18c51b5a5f42faedb38ab3c2e8..7ef92273b2657646cd50ba5975f47f3b53fef196 100644 (file)
@@ -11,8 +11,8 @@
  * 
  * The following License Terms and Conditions apply, unless a different
  * license is obtained from Japan Network Information Center ("JPNIC"),
- * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku,
- * Tokyo, Japan.
+ * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda,
+ * Chiyoda-ku, Tokyo 101-0047, Japan.
  * 
  * 1. Use, Modification and Redistribution (including distribution of any
  *    modified or derived work) in source and/or binary forms is permitted
index 92082e120831a02b6fe7688f2559f9dee7c8806d..fef6ea6b8ec4d69af6634f8dc070eb602ae5f84e 100644 (file)
@@ -19,8 +19,8 @@
  * 
  * The following License Terms and Conditions apply, unless a different
  * license is obtained from Japan Network Information Center ("JPNIC"),
- * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku,
- * Tokyo, Japan.
+ * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda,
+ * Chiyoda-ku, Tokyo 101-0047, Japan.
  * 
  * 1. Use, Modification and Redistribution (including distribution of any
  *    modified or derived work) in source and/or binary forms is permitted
index 9cf09567623081ff5978a9656195d1067de95755..80f6b3fcf340902888f03660c4c69a77a4a07421 100644 (file)
@@ -11,8 +11,8 @@
  * 
  * The following License Terms and Conditions apply, unless a different
  * license is obtained from Japan Network Information Center ("JPNIC"),
- * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku,
- * Tokyo, Japan.
+ * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda,
+ * Chiyoda-ku, Tokyo 101-0047, Japan.
  * 
  * 1. Use, Modification and Redistribution (including distribution of any
  *    modified or derived work) in source and/or binary forms is permitted
index 63ea9b2358e3b63df1374942623c3f55bc998bab..fe7819217006b7c49e2b86c186021790016fad97 100644 (file)
@@ -11,8 +11,8 @@
  * 
  * The following License Terms and Conditions apply, unless a different
  * license is obtained from Japan Network Information Center ("JPNIC"),
- * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku,
- * Tokyo, Japan.
+ * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda,
+ * Chiyoda-ku, Tokyo 101-0047, Japan.
  * 
  * 1. Use, Modification and Redistribution (including distribution of any
  *    modified or derived work) in source and/or binary forms is permitted
index 17b0a1076abecb2981ceb6ebe742555c5afd99dd..260050801bdfbbc5a98f2ecb68fabe75f5d87aaa 100644 (file)
@@ -10,8 +10,8 @@
 # 
 # The following License Terms and Conditions apply, unless a different
 # license is obtained from Japan Network Information Center ("JPNIC"),
-# a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku,
-# Tokyo, Japan.
+# a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda,
+# Chiyoda-ku, Tokyo 101-0047, Japan.
 # 
 # 1. Use, Modification and Redistribution (including distribution of any
 #    modified or derived work) in source and/or binary forms is permitted
index 6c711a70e65e03b7e7f225b17088656ca43baa28..1a12d8a7d4568583c97a0dda8cb206c0758f65b1 100644 (file)
@@ -11,8 +11,8 @@
  * 
  * The following License Terms and Conditions apply, unless a different
  * license is obtained from Japan Network Information Center ("JPNIC"),
- * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku,
- * Tokyo, Japan.
+ * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda,
+ * Chiyoda-ku, Tokyo 101-0047, Japan.
  * 
  * 1. Use, Modification and Redistribution (including distribution of any
  *    modified or derived work) in source and/or binary forms is permitted
index dd6e6369382702cab2f9c77e22d8ccdb0562e874..0969cf022ef83cdce2587b72b75fdc3a86e1c219 100644 (file)
@@ -10,8 +10,8 @@
 # 
 # The following License Terms and Conditions apply, unless a different
 # license is obtained from Japan Network Information Center ("JPNIC"),
-# a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku,
-# Tokyo, Japan.
+# a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda,
+# Chiyoda-ku, Tokyo 101-0047, Japan.
 # 
 # 1. Use, Modification and Redistribution (including distribution of any
 #    modified or derived work) in source and/or binary forms is permitted
index 068aa16f904228123b504f2063b70a66bc5a8804..f8af6c402c6aa00dad20e52fe7c48cec05fbaaf3 100644 (file)
@@ -1,4 +1,4 @@
-# $Id: mdnconf.tcl,v 1.1 2001/06/09 00:30:55 tale Exp $
+# $Id: mdnconf.tcl,v 1.2 2002/02/08 05:42:08 marka Exp $
 #
 # mdnconf.tcl - configure mDN Wrapper
 #
@@ -12,8 +12,8 @@
 #  
 #  The following License Terms and Conditions apply, unless a different
 #  license is obtained from Japan Network Information Center ("JPNIC"),
-#  a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku,
-#  Tokyo, Japan.
+#  a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda,
+#  Chiyoda-ku, Tokyo 101-0047, Japan.
 #  
 #  1. Use, Modification and Redistribution (including distribution of any
 #     modified or derived work) in source and/or binary forms is permitted
@@ -66,7 +66,7 @@ global  registryKey registryEnc registryDef
 global  filesCpy filesRen filesDel
 
 # mDNkit version
-set version    "2.1"
+set version    "2.2.2"
 
 set configFile  "mdnconf.lst"   ;# list of wrapped program
 set configBack  "mdnconf.bak"   ;# backup of previous data
index 9608722c20b43cb8ffd57dcc13e0daaa0251c088..71855af2523ebee47b0f98b4518d62f2283213f1 100644 (file)
@@ -10,8 +10,8 @@
 # 
 # The following License Terms and Conditions apply, unless a different
 # license is obtained from Japan Network Information Center ("JPNIC"),
-# a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku,
-# Tokyo, Japan.
+# a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda,
+# Chiyoda-ku, Tokyo 101-0047, Japan.
 # 
 # 1. Use, Modification and Redistribution (including distribution of any
 #    modified or derived work) in source and/or binary forms is permitted
index b66989ecca092855f3573b77bb8f73ce16707bd4..14fa633edf6cdf66afa3f114c3e2aa33af0871dd 100644 (file)
@@ -11,8 +11,8 @@
  * 
  * The following License Terms and Conditions apply, unless a different
  * license is obtained from Japan Network Information Center ("JPNIC"),
- * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku,
- * Tokyo, Japan.
+ * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda,
+ * Chiyoda-ku, Tokyo 101-0047, Japan.
  * 
  * 1. Use, Modification and Redistribution (including distribution of any
  *    modified or derived work) in source and/or binary forms is permitted
index d5c7a57662d1aa0e1448683d31a6ecdb95d28296..b4755b222141dc8dea8befde47e5fb639fdbe099 100644 (file)
@@ -11,8 +11,8 @@
  * 
  * The following License Terms and Conditions apply, unless a different
  * license is obtained from Japan Network Information Center ("JPNIC"),
- * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku,
- * Tokyo, Japan.
+ * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda,
+ * Chiyoda-ku, Tokyo 101-0047, Japan.
  * 
  * 1. Use, Modification and Redistribution (including distribution of any
  *    modified or derived work) in source and/or binary forms is permitted
index f01c20e19664d746fff334d6046d04bd77626f27..929b1890d4cadd82e1301b9302a5cb9f9de60eca 100644 (file)
@@ -11,8 +11,8 @@
  * 
  * The following License Terms and Conditions apply, unless a different
  * license is obtained from Japan Network Information Center ("JPNIC"),
- * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku,
- * Tokyo, Japan.
+ * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda,
+ * Chiyoda-ku, Tokyo 101-0047, Japan.
  * 
  * 1. Use, Modification and Redistribution (including distribution of any
  *    modified or derived work) in source and/or binary forms is permitted
index 5665b69ff23f4f9893509c47c4f8301c1ac6e9e7..9ef58006bc126827b2d86eff52bd6b9d78c2184e 100644 (file)
@@ -11,8 +11,8 @@
  * 
  * The following License Terms and Conditions apply, unless a different
  * license is obtained from Japan Network Information Center ("JPNIC"),
- * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku,
- * Tokyo, Japan.
+ * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda,
+ * Chiyoda-ku, Tokyo 101-0047, Japan.
  * 
  * 1. Use, Modification and Redistribution (including distribution of any
  *    modified or derived work) in source and/or binary forms is permitted
index 6fa21a1bbf796ff5148f888613295da5825d1a49..d560cf9dc69c3b30f798f33e4c14522ee4ee8620 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: dllstub.c,v 1.1 2001/06/09 00:30:55 tale Exp $ */
+/* $Id: dllstub.c,v 1.2 2002/02/08 05:42:14 marka Exp $ */
 
 SOCKET   PASCAL
 accept(SOCKET a0, struct sockaddr* a1, int* a2)
index b634603c4bb1391ab85204559ec01ed839cc9c17..ddabc1224aa565a0017d8fa92c8521d1a89659af 100644 (file)
@@ -10,8 +10,8 @@
 # 
 # The following License Terms and Conditions apply, unless a different
 # license is obtained from Japan Network Information Center ("JPNIC"),
-# a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku,
-# Tokyo, Japan.
+# a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda,
+# Chiyoda-ku, Tokyo 101-0047, Japan.
 # 
 # 1. Use, Modification and Redistribution (including distribution of any
 #    modified or derived work) in source and/or binary forms is permitted
index 4c7496f47dd0be3851d1da3eacf5aea9eca12f69..17bd74727f093103057f7010bc9014598d7d94fa 100644 (file)
@@ -11,8 +11,8 @@
  * 
  * The following License Terms and Conditions apply, unless a different
  * license is obtained from Japan Network Information Center ("JPNIC"),
- * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku,
- * Tokyo, Japan.
+ * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda,
+ * Chiyoda-ku, Tokyo 101-0047, Japan.
  * 
  * 1. Use, Modification and Redistribution (including distribution of any
  *    modified or derived work) in source and/or binary forms is permitted
index bb3fd1c6fab4091a682677146c4c811824cb3eb8..3d794b2f4ee4195c83b7888f75d90bd4147258a7 100644 (file)
@@ -11,8 +11,8 @@
  * 
  * The following License Terms and Conditions apply, unless a different
  * license is obtained from Japan Network Information Center ("JPNIC"),
- * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku,
- * Tokyo, Japan.
+ * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda,
+ * Chiyoda-ku, Tokyo 101-0047, Japan.
  * 
  * 1. Use, Modification and Redistribution (including distribution of any
  *    modified or derived work) in source and/or binary forms is permitted
index 7846c8c8a0589d52a884baf910cb255f855b4d48..9e12d9df7dfd2cb4eeee11fde102402af3db00d0 100644 (file)
@@ -11,8 +11,8 @@
  * 
  * The following License Terms and Conditions apply, unless a different
  * license is obtained from Japan Network Information Center ("JPNIC"),
- * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku,
- * Tokyo, Japan.
+ * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda,
+ * Chiyoda-ku, Tokyo 101-0047, Japan.
  * 
  * 1. Use, Modification and Redistribution (including distribution of any
  *    modified or derived work) in source and/or binary forms is permitted
index be0595bfdef51bc758c40927961e1185f8ff7017..0fd3a4bd94b3f7113c5761b7c94437538447e9f8 100644 (file)
@@ -11,8 +11,8 @@
  * 
  * The following License Terms and Conditions apply, unless a different
  * license is obtained from Japan Network Information Center ("JPNIC"),
- * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku,
- * Tokyo, Japan.
+ * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda,
+ * Chiyoda-ku, Tokyo 101-0047, Japan.
  * 
  * 1. Use, Modification and Redistribution (including distribution of any
  *    modified or derived work) in source and/or binary forms is permitted
index b1d99675d2584de25ab44189287db9a44d674425..24bf0c1697a4c03247e9f4fc4a764de49034a159 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: dllstub.c,v 1.1 2001/06/09 00:30:55 tale Exp $ */
+/* $Id: dllstub.c,v 1.2 2002/02/08 05:42:23 marka Exp $ */
 
 SOCKET   PASCAL
 accept(SOCKET a0, struct sockaddr* a1, int* a2)
index 2c2a6e1b6b6b82c5cf4b91c02dce8c94f188c51e..e9d8985a1a6c1cc5fe35074d30d484a55e4790ef 100644 (file)
@@ -10,8 +10,8 @@
 # 
 # The following License Terms and Conditions apply, unless a different
 # license is obtained from Japan Network Information Center ("JPNIC"),
-# a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku,
-# Tokyo, Japan.
+# a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda,
+# Chiyoda-ku, Tokyo 101-0047, Japan.
 # 
 # 1. Use, Modification and Redistribution (including distribution of any
 #    modified or derived work) in source and/or binary forms is permitted