summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authornigel <nigel@2f5784b3-3f2a-0410-8824-cb99058d5e15>2007-02-24 21:41:21 +0000
committernigel <nigel@2f5784b3-3f2a-0410-8824-cb99058d5e15>2007-02-24 21:41:21 +0000
commitced1f145fdf26ec7df4b9048a9da0ef17e9618f2 (patch)
tree371f88a16cfb5ac0a176622bcd424aa6c28c4cc8
parent2550303b1f255c525d802f94d9c4411a0ccc630f (diff)
downloadpcre-ced1f145fdf26ec7df4b9048a9da0ef17e9618f2.tar.gz
Load pcre-6.5 into code/trunk.
git-svn-id: svn://vcs.exim.org/pcre/code/trunk@87 2f5784b3-3f2a-0410-8824-cb99058d5e15
-rw-r--r--ChangeLog216
-rw-r--r--LICENCE2
-rw-r--r--Makefile.in108
-rw-r--r--NEWS22
-rw-r--r--NON-UNIX-USE34
-rw-r--r--README36
-rw-r--r--RunGrepTest.in128
-rwxr-xr-xRunTest.in21
-rwxr-xr-xconfig.guess556
-rw-r--r--config.h.in114
-rwxr-xr-xconfig.sub103
-rwxr-xr-xconfigure3871
-rw-r--r--configure.ac (renamed from configure.in)44
-rw-r--r--dftables.c2
-rw-r--r--doc/Tech.Notes7
-rw-r--r--doc/html/pcre.html42
-rw-r--r--doc/html/pcre_config.html2
-rw-r--r--doc/html/pcre_dfa_exec.html8
-rw-r--r--doc/html/pcre_exec.html6
-rw-r--r--doc/html/pcreapi.html81
-rw-r--r--doc/html/pcrecompat.html11
-rw-r--r--doc/html/pcrecpp.html8
-rw-r--r--doc/html/pcregrep.html342
-rw-r--r--doc/html/pcrepartial.html24
-rw-r--r--doc/html/pcrepattern.html173
-rw-r--r--doc/html/pcreposix.html67
-rw-r--r--doc/html/pcreprecompile.html9
-rw-r--r--doc/html/pcretest.html33
-rw-r--r--doc/pcre.341
-rw-r--r--doc/pcre.txt1328
-rw-r--r--doc/pcre_config.32
-rw-r--r--doc/pcre_dfa_exec.38
-rw-r--r--doc/pcre_exec.36
-rw-r--r--doc/pcreapi.378
-rw-r--r--doc/pcrecompat.311
-rw-r--r--doc/pcrecpp.38
-rw-r--r--doc/pcregrep.1312
-rw-r--r--doc/pcregrep.txt375
-rw-r--r--doc/pcrepartial.333
-rw-r--r--doc/pcrepattern.3164
-rw-r--r--doc/pcreposix.366
-rw-r--r--doc/pcreprecompile.38
-rw-r--r--doc/pcretest.132
-rw-r--r--doc/pcretest.txt328
-rw-r--r--ltmain.sh783
-rw-r--r--pcre.def12
-rw-r--r--pcre.h (renamed from pcre.h.in)55
-rw-r--r--pcre_compile.c273
-rw-r--r--pcre_config.c8
-rw-r--r--pcre_dfa_exec.c225
-rw-r--r--pcre_exec.c465
-rw-r--r--pcre_fullinfo.c4
-rw-r--r--pcre_get.c2
-rw-r--r--pcre_globals.c2
-rw-r--r--pcre_info.c4
-rw-r--r--pcre_internal.h82
-rw-r--r--pcre_maketables.c33
-rw-r--r--pcre_ord2utf8.c4
-rw-r--r--pcre_printint.src30
-rw-r--r--pcre_refcount.c4
-rw-r--r--pcre_scanner.cc8
-rw-r--r--pcre_scanner_unittest.cc1
-rw-r--r--pcre_study.c4
-rw-r--r--pcre_tables.c145
-rw-r--r--pcre_try_flipped.c4
-rw-r--r--pcre_ucp_findchar.c161
-rw-r--r--pcre_ucp_searchfuncs.c175
-rw-r--r--pcre_valid_utf8.c4
-rw-r--r--pcre_version.c9
-rw-r--r--pcre_xclass.c45
-rw-r--r--pcrecpp.cc19
-rw-r--r--pcrecpp.h (renamed from pcrecpp.h.in)163
-rw-r--r--pcrecpp_unittest.cc61
-rw-r--r--pcrecpparg.h.in171
-rw-r--r--pcregrep.c902
-rw-r--r--pcreposix.c45
-rw-r--r--pcreposix.h31
-rw-r--r--pcretest.c116
-rwxr-xr-xperltest2
-rw-r--r--testdata/grepinput23
-rw-r--r--testdata/greplist5
-rw-r--r--testdata/grepoutput129
-rw-r--r--testdata/testinput240
-rw-r--r--testdata/testinput326
-rw-r--r--testdata/testinput43
-rw-r--r--testdata/testinput55
-rw-r--r--testdata/testinput6224
-rw-r--r--testdata/testinput712
-rw-r--r--testdata/testinput9217
-rw-r--r--testdata/testoutput12
-rw-r--r--testdata/testoutput2236
-rw-r--r--testdata/testoutput356
-rw-r--r--testdata/testoutput46
-rw-r--r--testdata/testoutput5207
-rw-r--r--testdata/testoutput6434
-rw-r--r--testdata/testoutput719
-rw-r--r--testdata/testoutput82
-rw-r--r--testdata/testoutput9397
-rw-r--r--ucp.h76
-rw-r--r--ucpinternal.h116
-rw-r--r--ucptable.c18065
101 files changed, 12252 insertions, 20970 deletions
diff --git a/ChangeLog b/ChangeLog
index a04153a..c8cc316 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,6 +1,222 @@
ChangeLog for PCRE
------------------
+Version 6.5 01-Feb-06
+---------------------
+
+ 1. When using the partial match feature with pcre_dfa_exec(), it was not
+ anchoring the second and subsequent partial matches at the new starting
+ point. This could lead to incorrect results. For example, with the pattern
+ /1234/, partially matching against "123" and then "a4" gave a match.
+
+ 2. Changes to pcregrep:
+
+ (a) All non-match returns from pcre_exec() were being treated as failures
+ to match the line. Now, unless the error is PCRE_ERROR_NOMATCH, an
+ error message is output. Some extra information is given for the
+ PCRE_ERROR_MATCHLIMIT and PCRE_ERROR_RECURSIONLIMIT errors, which are
+ probably the only errors that are likely to be caused by users (by
+ specifying a regex that has nested indefinite repeats, for instance).
+ If there are more than 20 of these errors, pcregrep is abandoned.
+
+ (b) A binary zero was treated as data while matching, but terminated the
+ output line if it was written out. This has been fixed: binary zeroes
+ are now no different to any other data bytes.
+
+ (c) Whichever of the LC_ALL or LC_CTYPE environment variables is set is
+ used to set a locale for matching. The --locale=xxxx long option has
+ been added (no short equivalent) to specify a locale explicitly on the
+ pcregrep command, overriding the environment variables.
+
+ (d) When -B was used with -n, some line numbers in the output were one less
+ than they should have been.
+
+ (e) Added the -o (--only-matching) option.
+
+ (f) If -A or -C was used with -c (count only), some lines of context were
+ accidentally printed for the final match.
+
+ (g) Added the -H (--with-filename) option.
+
+ (h) The combination of options -rh failed to suppress file names for files
+ that were found from directory arguments.
+
+ (i) Added the -D (--devices) and -d (--directories) options.
+
+ (j) Added the -F (--fixed-strings) option.
+
+ (k) Allow "-" to be used as a file name for -f as well as for a data file.
+
+ (l) Added the --colo(u)r option.
+
+ (m) Added Jeffrey Friedl's -S testing option, but within #ifdefs so that it
+ is not present by default.
+
+ 3. A nasty bug was discovered in the handling of recursive patterns, that is,
+ items such as (?R) or (?1), when the recursion could match a number of
+ alternatives. If it matched one of the alternatives, but subsequently,
+ outside the recursion, there was a failure, the code tried to back up into
+ the recursion. However, because of the way PCRE is implemented, this is not
+ possible, and the result was an incorrect result from the match.
+
+ In order to prevent this happening, the specification of recursion has
+ been changed so that all such subpatterns are automatically treated as
+ atomic groups. Thus, for example, (?R) is treated as if it were (?>(?R)).
+
+ 4. I had overlooked the fact that, in some locales, there are characters for
+ which isalpha() is true but neither isupper() nor islower() are true. In
+ the fr_FR locale, for instance, the \xAA and \xBA characters (ordmasculine
+ and ordfeminine) are like this. This affected the treatment of \w and \W
+ when they appeared in character classes, but not when they appeared outside
+ a character class. The bit map for "word" characters is now created
+ separately from the results of isalnum() instead of just taking it from the
+ upper, lower, and digit maps. (Plus the underscore character, of course.)
+
+ 5. The above bug also affected the handling of POSIX character classes such as
+ [[:alpha:]] and [[:alnum:]]. These do not have their own bit maps in PCRE's
+ permanent tables. Instead, the bit maps for such a class were previously
+ created as the appropriate unions of the upper, lower, and digit bitmaps.
+ Now they are created by subtraction from the [[:word:]] class, which has
+ its own bitmap.
+
+ 6. The [[:blank:]] character class matches horizontal, but not vertical space.
+ It is created by subtracting the vertical space characters (\x09, \x0a,
+ \x0b, \x0c) from the [[:space:]] bitmap. Previously, however, the
+ subtraction was done in the overall bitmap for a character class, meaning
+ that a class such as [\x0c[:blank:]] was incorrect because \x0c would not
+ be recognized. This bug has been fixed.
+
+ 7. Patches from the folks at Google:
+
+ (a) pcrecpp.cc: "to handle a corner case that may or may not happen in
+ real life, but is still worth protecting against".
+
+ (b) pcrecpp.cc: "corrects a bug when negative radixes are used with
+ regular expressions".
+
+ (c) pcre_scanner.cc: avoid use of std::count() because not all systems
+ have it.
+
+ (d) Split off pcrecpparg.h from pcrecpp.h and had the former built by
+ "configure" and the latter not, in order to fix a problem somebody had
+ with compiling the Arg class on HP-UX.
+
+ (e) Improve the error-handling of the C++ wrapper a little bit.
+
+ (f) New tests for checking recursion limiting.
+
+ 8. The pcre_memmove() function, which is used only if the environment does not
+ have a standard memmove() function (and is therefore rarely compiled),
+ contained two bugs: (a) use of int instead of size_t, and (b) it was not
+ returning a result (though PCRE never actually uses the result).
+
+ 9. In the POSIX regexec() interface, if nmatch is specified as a ridiculously
+ large number - greater than INT_MAX/(3*sizeof(int)) - REG_ESPACE is
+ returned instead of calling malloc() with an overflowing number that would
+ most likely cause subsequent chaos.
+
+10. The debugging option of pcretest was not showing the NO_AUTO_CAPTURE flag.
+
+11. The POSIX flag REG_NOSUB is now supported. When a pattern that was compiled
+ with this option is matched, the nmatch and pmatch options of regexec() are
+ ignored.
+
+12. Added REG_UTF8 to the POSIX interface. This is not defined by POSIX, but is
+ provided in case anyone wants to the the POSIX interface with UTF-8
+ strings.
+
+13. Added CXXLDFLAGS to the Makefile parameters to provide settings only on the
+ C++ linking (needed for some HP-UX environments).
+
+14. Avoid compiler warnings in get_ucpname() when compiled without UCP support
+ (unused parameter) and in the pcre_printint() function (omitted "default"
+ switch label when the default is to do nothing).
+
+15. Added some code to make it possible, when PCRE is compiled as a C++
+ library, to replace subject pointers for pcre_exec() with a smart pointer
+ class, thus making it possible to process discontinuous strings.
+
+16. The two macros PCRE_EXPORT and PCRE_DATA_SCOPE are confusing, and perform
+ much the same function. They were added by different people who were trying
+ to make PCRE easy to compile on non-Unix systems. It has been suggested
+ that PCRE_EXPORT be abolished now that there is more automatic apparatus
+ for compiling on Windows systems. I have therefore replaced it with
+ PCRE_DATA_SCOPE. This is set automatically for Windows; if not set it
+ defaults to "extern" for C or "extern C" for C++, which works fine on
+ Unix-like systems. It is now possible to override the value of PCRE_DATA_
+ SCOPE with something explicit in config.h. In addition:
+
+ (a) pcreposix.h still had just "extern" instead of either of these macros;
+ I have replaced it with PCRE_DATA_SCOPE.
+
+ (b) Functions such as _pcre_xclass(), which are internal to the library,
+ but external in the C sense, all had PCRE_EXPORT in their definitions.
+ This is apparently wrong for the Windows case, so I have removed it.
+ (It makes no difference on Unix-like systems.)
+
+17. Added a new limit, MATCH_LIMIT_RECURSION, which limits the depth of nesting
+ of recursive calls to match(). This is different to MATCH_LIMIT because
+ that limits the total number of calls to match(), not all of which increase
+ the depth of recursion. Limiting the recursion depth limits the amount of
+ stack (or heap if NO_RECURSE is set) that is used. The default can be set
+ when PCRE is compiled, and changed at run time. A patch from Google adds
+ this functionality to the C++ interface.
+
+18. Changes to the handling of Unicode character properties:
+
+ (a) Updated the table to Unicode 4.1.0.
+
+ (b) Recognize characters that are not in the table as "Cn" (undefined).
+
+ (c) I revised the way the table is implemented to a much improved format
+ which includes recognition of ranges. It now supports the ranges that
+ are defined in UnicodeData.txt, and it also amalgamates other
+ characters into ranges. This has reduced the number of entries in the
+ table from around 16,000 to around 3,000, thus reducing its size
+ considerably. I realized I did not need to use a tree structure after
+ all - a binary chop search is just as efficient. Having reduced the
+ number of entries, I extended their size from 6 bytes to 8 bytes to
+ allow for more data.
+
+ (d) Added support for Unicode script names via properties such as \p{Han}.
+
+19. In UTF-8 mode, a backslash followed by a non-Ascii character was not
+ matching that character.
+
+20. When matching a repeated Unicode property with a minimum greater than zero,
+ (for example \pL{2,}), PCRE could look past the end of the subject if it
+ reached it while seeking the minimum number of characters. This could
+ happen only if some of the characters were more than one byte long, because
+ there is a check for at least the minimum number of bytes.
+
+21. Refactored the implementation of \p and \P so as to be more general, to
+ allow for more different types of property in future. This has changed the
+ compiled form incompatibly. Anybody with saved compiled patterns that use
+ \p or \P will have to recompile them.
+
+22. Added "Any" and "L&" to the supported property types.
+
+23. Recognize \x{...} as a code point specifier, even when not in UTF-8 mode,
+ but give a compile time error if the value is greater than 0xff.
+
+24. The man pages for pcrepartial, pcreprecompile, and pcre_compile2 were
+ accidentally not being installed or uninstalled.
+
+25. The pcre.h file was built from pcre.h.in, but the only changes that were
+ made were to insert the current release number. This seemed silly, because
+ it made things harder for people building PCRE on systems that don't run
+ "configure". I have turned pcre.h into a distributed file, no longer built
+ by "configure", with the version identification directly included. There is
+ no longer a pcre.h.in file.
+
+ However, this change necessitated a change to the pcre-config script as
+ well. It is built from pcre-config.in, and one of the substitutions was the
+ release number. I have updated configure.ac so that ./configure now finds
+ the release number by grepping pcre.h.
+
+26. Added the ability to run the tests under valgrind.
+
+
Version 6.4 05-Sep-05
---------------------
diff --git a/LICENCE b/LICENCE
index e8eb0d9..2a3d00e 100644
--- a/LICENCE
+++ b/LICENCE
@@ -22,7 +22,7 @@ Email domain: cam.ac.uk
University of Cambridge Computing Service,
Cambridge, England. Phone: +44 1223 334714.
-Copyright (c) 1997-2005 University of Cambridge
+Copyright (c) 1997-2006 University of Cambridge
All rights reserved.
diff --git a/Makefile.in b/Makefile.in
index fbb3199..babec2b 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -78,6 +78,7 @@ CXX = @CXX@
CFLAGS = @CFLAGS@
CXXFLAGS = @CXXFLAGS@
LDFLAGS = @LDFLAGS@
+CXXLDFLAGS = @CXXLDFLAGS@
CC_FOR_BUILD = @CC_FOR_BUILD@
CFLAGS_FOR_BUILD = @CFLAGS_FOR_BUILD@
@@ -90,7 +91,7 @@ UTF8 = @UTF8@
NEWLINE = @NEWLINE@
POSIX_MALLOC_THRESHOLD = @POSIX_MALLOC_THRESHOLD@
LINK_SIZE = @LINK_SIZE@
-MATCH_LIMIT = @MATCH_LIMIT@
+MATCH_LIMIT = @MATCH_LIMIT@ @MATCH_LIMIT_RECURSION@
NO_RECURSE = @NO_RECURSE@
EBCDIC = @EBCDIC@
@@ -108,7 +109,7 @@ LTCXXCOMPILE = $(LIBTOOL) --mode=compile $(CXX) -c $(CXXFLAGS) -I. -I$(top_srcdi
LINKLIB = $(LIBTOOL) --mode=link $(CC) -export-symbols-regex '^[^_]' $(LDFLAGS) -I. -I$(top_srcdir)
LINK_FOR_BUILD = $(LIBTOOL) --mode=link $(CC_FOR_BUILD) $(CFLAGS_FOR_BUILD) $(LDFLAGS_FOR_BUILD) -I. -I$(top_srcdir)
@ON_WINDOWS@CXXLINK = $(CXX) $(LDFLAGS) -I. -I$(top_srcdir) -L.libs
-@NOT_ON_WINDOWS@CXXLINK = $(LIBTOOL) --mode=link $(CXX) $(LDFLAGS) -I. -I$(top_srcdir)
+@NOT_ON_WINDOWS@CXXLINK = $(LIBTOOL) --mode=link $(CXX) $(LDFLAGS) $(CXXLDFLAGS) -I. -I$(top_srcdir)
CXXLINKLIB = $(LIBTOOL) --mode=link $(CXX) $(LDFLAGS) -I. -I$(top_srcdir)
# These are the version numbers for the shared libraries
@@ -135,7 +136,7 @@ OBJ = pcre_chartables.@OBJEXT@ \
pcre_study.@OBJEXT@ \
pcre_tables.@OBJEXT@ \
pcre_try_flipped.@OBJEXT@ \
- pcre_ucp_findchar.@OBJEXT@ \
+ pcre_ucp_searchfuncs.@OBJEXT@ \
pcre_valid_utf8.@OBJEXT@ \
pcre_version.@OBJEXT@ \
pcre_xclass.@OBJEXT@ \
@@ -156,7 +157,7 @@ LOBJ = pcre_chartables.lo \
pcre_study.lo \
pcre_tables.lo \
pcre_try_flipped.lo \
- pcre_ucp_findchar.lo \
+ pcre_ucp_searchfuncs.lo \
pcre_valid_utf8.lo \
pcre_version.lo \
pcre_xclass.lo \
@@ -175,25 +176,36 @@ CPP_TARGETS = libpcrecpp.la \
pcre_scanner_unittest@EXEEXT@ \
pcre_stringpiece_unittest@EXEEXT@
-all: libpcre.la @POSIX_LIB@ pcretest@EXEEXT@ pcregrep@EXEEXT@ @MAYBE_CPP_TARGETS@ @ON_WINDOWS@ winshared
+all: libpcre.la @POSIX_LIB@ pcretest@EXEEXT@ pcregrep@EXEEXT@ \
+ @MAYBE_CPP_TARGETS@ @ON_WINDOWS@ winshared
pcregrep@EXEEXT@: libpcre.la pcregrep.@OBJEXT@ @ON_WINDOWS@ winshared
$(LINK) -o pcregrep@EXEEXT@ pcregrep.@OBJEXT@ libpcre.la
-pcretest@EXEEXT@: libpcre.la @POSIX_LIB@ pcretest.@OBJEXT@ @ON_WINDOWS@ winshared
- $(LINK) $(PURIFY) $(EFENCE) -o pcretest@EXEEXT@ pcretest.@OBJEXT@ \
+pcretest@EXEEXT@: libpcre.la @POSIX_LIB@ pcretest.@OBJEXT@ \
+ @ON_WINDOWS@ winshared
+ $(LINK) $(PURIFY) $(EFENCE) -o pcretest@EXEEXT@ \
+ pcretest.@OBJEXT@ \
libpcre.la @POSIX_LIB@
-pcrecpp_unittest@EXEEXT@: libpcrecpp.la pcrecpp_unittest.@OBJEXT@ @ON_WINDOWS@ winshared
- $(CXXLINK) $(PURIFY) $(EFENCE) -o pcrecpp_unittest@EXEEXT@ pcrecpp_unittest.@OBJEXT@ \
+pcrecpp_unittest@EXEEXT@: libpcrecpp.la pcrecpp_unittest.@OBJEXT@ \
+ @ON_WINDOWS@ winshared
+ $(CXXLINK) $(PURIFY) $(EFENCE) -o pcrecpp_unittest@EXEEXT@ \
+ pcrecpp_unittest.@OBJEXT@ \
libpcrecpp.la @POSIX_LIB@
-pcre_scanner_unittest@EXEEXT@: libpcrecpp.la pcre_scanner_unittest.@OBJEXT@ @ON_WINDOWS@ winshared
- $(CXXLINK) $(PURIFY) $(EFENCE) -o pcre_scanner_unittest@EXEEXT@ pcre_scanner_unittest.@OBJEXT@ \
+pcre_scanner_unittest@EXEEXT@: libpcrecpp.la pcre_scanner_unittest.@OBJEXT@ \
+ @ON_WINDOWS@ winshared
+ $(CXXLINK) $(PURIFY) $(EFENCE) \
+ -o pcre_scanner_unittest@EXEEXT@ \
+ pcre_scanner_unittest.@OBJEXT@ \
libpcrecpp.la @POSIX_LIB@
-pcre_stringpiece_unittest@EXEEXT@: libpcrecpp.la pcre_stringpiece_unittest.@OBJEXT@ @ON_WINDOWS@ winshared
- $(CXXLINK) $(PURIFY) $(EFENCE) -o pcre_stringpiece_unittest@EXEEXT@ pcre_stringpiece_unittest.@OBJEXT@ \
+pcre_stringpiece_unittest@EXEEXT@: libpcrecpp.la \
+ pcre_stringpiece_unittest.@OBJEXT@ @ON_WINDOWS@ winshared
+ $(CXXLINK) $(PURIFY) $(EFENCE) \
+ -o pcre_stringpiece_unittest@EXEEXT@ \
+ pcre_stringpiece_unittest.@OBJEXT@ \
libpcrecpp.la @POSIX_LIB@
libpcre.la: $(OBJ)
@@ -218,7 +230,8 @@ pcre_chartables.@OBJEXT@: pcre_chartables.c
@$(LTCOMPILE) pcre_chartables.c
pcre_compile.@OBJEXT@: Makefile config.h pcre.h \
- $(top_srcdir)/pcre_internal.h $(top_srcdir)/pcre_compile.c
+ $(top_srcdir)/pcre_internal.h $(top_srcdir)/pcre_compile.c \
+ $(top_srcdir)/pcre_printint.src
@$(LTCOMPILE) $(UTF8) $(UCP) $(POSIX_MALLOC_THRESHOLD) \
$(top_srcdir)/pcre_compile.c
@@ -287,10 +300,12 @@ pcre_try_flipped.@OBJEXT@: Makefile config.h pcre.h \
@$(LTCOMPILE) $(UTF8) $(UCP) $(POSIX_MALLOC_THRESHOLD) \
$(top_srcdir)/pcre_try_flipped.c
-pcre_ucp_findchar.@OBJEXT@: Makefile config.h pcre.h \
- $(top_srcdir)/pcre_internal.h $(top_srcdir)/pcre_ucp_findchar.c
+pcre_ucp_searchfuncs.@OBJEXT@: Makefile config.h pcre.h \
+ $(top_srcdir)/pcre_internal.h \
+ $(top_srcdir)/pcre_ucp_searchfuncs.c \
+ $(top_srcdir)/ucptable.c
@$(LTCOMPILE) $(UTF8) $(UCP) $(POSIX_MALLOC_THRESHOLD) \
- $(top_srcdir)/pcre_ucp_findchar.c
+ $(top_srcdir)/pcre_ucp_searchfuncs.c
pcre_valid_utf8.@OBJEXT@: Makefile config.h pcre.h \
$(top_srcdir)/pcre_internal.h $(top_srcdir)/pcre_valid_utf8.c
@@ -309,42 +324,53 @@ pcre_xclass.@OBJEXT@: Makefile config.h pcre.h \
pcreposix.@OBJEXT@: $(top_srcdir)/pcreposix.c $(top_srcdir)/pcreposix.h \
$(top_srcdir)/pcre_internal.h pcre.h config.h Makefile
- @$(LTCOMPILE) $(POSIX_MALLOC_THRESHOLD) $(top_srcdir)/pcreposix.c
+ @$(LTCOMPILE) $(POSIX_MALLOC_THRESHOLD) \
+ $(top_srcdir)/pcreposix.c
-pcrecpp.@OBJEXT@: $(top_srcdir)/pcrecpp.cc pcrecpp.h \
- pcre_stringpiece.h pcre.h config.h Makefile
+pcrecpp.@OBJEXT@: $(top_srcdir)/pcrecpp.cc $(top_srcdir)/pcrecpp.h \
+ pcrecpparg.h pcre_stringpiece.h pcre.h config.h Makefile
@$(LTCXXCOMPILE) $(UTF8) $(UCP) $(POSIX_MALLOC_THRESHOLD) \
$(top_srcdir)/pcrecpp.cc
-pcre_scanner.@OBJEXT@: $(top_srcdir)/pcre_scanner.cc $(top_srcdir)/pcre_scanner.h \
- pcrecpp.h pcre_stringpiece.h pcre.h config.h Makefile
+pcre_scanner.@OBJEXT@: $(top_srcdir)/pcre_scanner.cc \
+ $(top_srcdir)/pcre_scanner.h \
+ $(top_srcdir)/pcrecpp.h pcrecpparg.h pcre_stringpiece.h \
+ pcre.h config.h Makefile
@$(LTCXXCOMPILE) $(UTF8) $(UCP) $(POSIX_MALLOC_THRESHOLD) \
$(top_srcdir)/pcre_scanner.cc
-pcre_stringpiece.@OBJEXT@: $(top_srcdir)/pcre_stringpiece.cc pcre_stringpiece.h \
+pcre_stringpiece.@OBJEXT@: $(top_srcdir)/pcre_stringpiece.cc \
+ pcre_stringpiece.h \
config.h Makefile
@$(LTCXXCOMPILE) $(UTF8) $(UCP) $(POSIX_MALLOC_THRESHOLD) \
$(top_srcdir)/pcre_stringpiece.cc
pcretest.@OBJEXT@: $(top_srcdir)/pcretest.c $(top_srcdir)/pcre_internal.h \
- pcre.h config.h Makefile
- $(CC) -c $(CFLAGS) -I. -I$(top_srcdir) $(UTF8) $(UCP) $(LINK_SIZE) $(top_srcdir)/pcretest.c
+ $(top_srcdir)/pcre_printint.src pcre.h config.h Makefile
+ $(CC) -c $(CFLAGS) -I. -I$(top_srcdir) $(UTF8) $(UCP) \
+ $(LINK_SIZE) $(top_srcdir)/pcretest.c
-pcrecpp_unittest.@OBJEXT@: $(top_srcdir)/pcrecpp_unittest.cc pcrecpp.h \
- pcre_stringpiece.h pcre.h config.h Makefile
- $(CXX) -c $(CXXFLAGS) -I. -I$(top_srcdir) $(UTF8) $(UCP) $(LINK_SIZE) $(top_srcdir)/pcrecpp_unittest.cc
+pcrecpp_unittest.@OBJEXT@: $(top_srcdir)/pcrecpp_unittest.cc \
+ $(top_srcdir)/pcrecpp.h \
+ pcrecpparg.h pcre_stringpiece.h pcre.h config.h Makefile
+ $(CXX) -c $(CXXFLAGS) -I. -I$(top_srcdir) $(UTF8) $(UCP) \
+ $(LINK_SIZE) $(top_srcdir)/pcrecpp_unittest.cc
-pcre_stringpiece_unittest.@OBJEXT@: $(top_srcdir)/pcre_stringpiece_unittest.cc \
- pcre_stringpiece.h config.h Makefile
- $(CXX) -c $(CXXFLAGS) -I. -I$(top_srcdir) $(UTF8) $(UCP) $(LINK_SIZE) $(top_srcdir)/pcre_stringpiece_unittest.cc
+pcre_stringpiece_unittest.@OBJEXT@: $(top_srcdir)/pcre_stringpiece_unittest.cc \
+ pcre_stringpiece.h pcrecpparg.h config.h Makefile
+ $(CXX) -c $(CXXFLAGS) -I. -I$(top_srcdir) $(UTF8) $(UCP) \
+ $(LINK_SIZE) $(top_srcdir)/pcre_stringpiece_unittest.cc
pcre_scanner_unittest.@OBJEXT@: $(top_srcdir)/pcre_scanner_unittest.cc \
- $(top_srcdir)/pcre_scanner.h pcrecpp.h pcre_stringpiece.h \
- pcre.h config.h Makefile
- $(CXX) -c $(CXXFLAGS) -I. -I$(top_srcdir) $(UTF8) $(UCP) $(LINK_SIZE) $(top_srcdir)/pcre_scanner_unittest.cc
+ $(top_srcdir)/pcre_scanner.h \
+ $(top_srcdir)/pcrecpp.h pcre_stringpiece.h \
+ pcre.h pcrecpparg.h config.h Makefile
+ $(CXX) -c $(CXXFLAGS) -I. -I$(top_srcdir) $(UTF8) $(UCP) \
+ $(LINK_SIZE) $(top_srcdir)/pcre_scanner_unittest.cc
pcregrep.@OBJEXT@: $(top_srcdir)/pcregrep.c pcre.h Makefile config.h
- $(CC) -c $(CFLAGS) -I. -I$(top_srcdir) $(UTF8) $(UCP) $(PCREGREP_OSTYPE) $(top_srcdir)/pcregrep.c
+ $(CC) -c $(CFLAGS) -I. -I$(top_srcdir) $(UTF8) $(UCP) \
+ $(PCREGREP_OSTYPE) $(top_srcdir)/pcregrep.c
# Some Windows-specific targets for MinGW. Do not use for Cygwin.
@@ -442,7 +468,8 @@ install: all @ON_WINDOWS@ wininstall
$(mkinstalldirs) $(DESTDIR)$(INCDIR)
$(INSTALL_DATA) pcre.h $(DESTDIR)$(INCDIR)/pcre.h
$(INSTALL_DATA) $(top_srcdir)/pcreposix.h $(DESTDIR)$(INCDIR)/pcreposix.h
-@HAVE_CPP@ $(INSTALL_DATA) pcrecpp.h $(DESTDIR)$(INCDIR)/pcrecpp.h
+@HAVE_CPP@ $(INSTALL_DATA) $(top_srcdir)/pcrecpp.h $(DESTDIR)$(INCDIR)/pcrecpp.h
+@HAVE_CPP@ $(INSTALL_DATA) pcrecpparg.h $(DESTDIR)$(INCDIR)/pcrecpparg.h
@HAVE_CPP@ $(INSTALL_DATA) pcre_stringpiece.h $(DESTDIR)$(INCDIR)/pcre_stringpiece.h
@HAVE_CPP@ $(INSTALL_DATA) $(top_srcdir)/pcre_scanner.h $(DESTDIR)$(INCDIR)/pcre_scanner.h
$(mkinstalldirs) $(DESTDIR)$(MANDIR)/man3
@@ -453,11 +480,14 @@ install: all @ON_WINDOWS@ wininstall
$(INSTALL_DATA) $(top_srcdir)/doc/pcrecompat.3 $(DESTDIR)$(MANDIR)/man3/pcrecompat.3
@HAVE_CPP@ $(INSTALL_DATA) $(top_srcdir)/doc/pcrecpp.3 $(DESTDIR)$(MANDIR)/man3/pcrecpp.3
$(INSTALL_DATA) $(top_srcdir)/doc/pcrematching.3 $(DESTDIR)$(MANDIR)/man3/pcrematching.3
+ $(INSTALL_DATA) $(top_srcdir)/doc/pcrepartial.3 $(DESTDIR)$(MANDIR)/man3/pcrepartial.3
$(INSTALL_DATA) $(top_srcdir)/doc/pcrepattern.3 $(DESTDIR)$(MANDIR)/man3/pcrepattern.3
$(INSTALL_DATA) $(top_srcdir)/doc/pcreperform.3 $(DESTDIR)$(MANDIR)/man3/pcreperform.3
$(INSTALL_DATA) $(top_srcdir)/doc/pcreposix.3 $(DESTDIR)$(MANDIR)/man3/pcreposix.3
+ $(INSTALL_DATA) $(top_srcdir)/doc/pcreprecompile.3 $(DESTDIR)$(MANDIR)/man3/pcreprecompile.3
$(INSTALL_DATA) $(top_srcdir)/doc/pcresample.3 $(DESTDIR)$(MANDIR)/man3/pcresample.3
$(INSTALL_DATA) $(top_srcdir)/doc/pcre_compile.3 $(DESTDIR)$(MANDIR)/man3/pcre_compile.3
+ $(INSTALL_DATA) $(top_srcdir)/doc/pcre_compile2.3 $(DESTDIR)$(MANDIR)/man3/pcre_compile2.3
$(INSTALL_DATA) $(top_srcdir)/doc/pcre_config.3 $(DESTDIR)$(MANDIR)/man3/pcre_config.3
$(INSTALL_DATA) $(top_srcdir)/doc/pcre_copy_named_substring.3 $(DESTDIR)$(MANDIR)/man3/pcre_copy_named_substring.3
$(INSTALL_DATA) $(top_srcdir)/doc/pcre_copy_substring.3 $(DESTDIR)$(MANDIR)/man3/pcre_copy_substring.3
@@ -494,6 +524,7 @@ uninstall:; -rm -rf \
$(DESTDIR)$(INCDIR)/pcre.h \
$(DESTDIR)$(INCDIR)/pcreposix.h \
$(DESTDIR)$(INCDIR)/pcrecpp.h \
+ $(DESTDIR)$(INCDIR)/pcrecpparg.h \
$(DESTDIR)$(INCDIR)/pcre_scanner.h \
$(DESTDIR)$(INCDIR)/pcre_stringpiece.h \
$(DESTDIR)$(MANDIR)/man3/pcre.3 \
@@ -503,11 +534,14 @@ uninstall:; -rm -rf \
$(DESTDIR)$(MANDIR)/man3/pcrecompat.3 \
$(DESTDIR)$(MANDIR)/man3/pcrecpp.3 \
$(DESTDIR)$(MANDIR)/man3/pcrematching.3 \
+ $(DESTDIR)$(MANDIR)/man3/pcrepartial.3 \
$(DESTDIR)$(MANDIR)/man3/pcrepattern.3 \
$(DESTDIR)$(MANDIR)/man3/pcreperform.3 \
$(DESTDIR)$(MANDIR)/man3/pcreposix.3 \
+ $(DESTDIR)$(MANDIR)/man3/pcreprecompile.3 \
$(DESTDIR)$(MANDIR)/man3/pcresample.3 \
$(DESTDIR)$(MANDIR)/man3/pcre_compile.3 \
+ $(DESTDIR)$(MANDIR)/man3/pcre_compile2.3 \
$(DESTDIR)$(MANDIR)/man3/pcre_config.3 \
$(DESTDIR)$(MANDIR)/man3/pcre_copy_named_substring.3 \
$(DESTDIR)$(MANDIR)/man3/pcre_copy_substring.3 \
@@ -542,7 +576,7 @@ clean:; -rm -rf *.@OBJEXT@ *.lo *.a *.la .libs pcretest@EXEEXT@ pcre_str
distclean: clean
-rm -f pcre_chartables.c libtool pcre-config libpcre.pc \
- pcre.h pcre_stringpiece.h pcrecpp.h \
+ pcre.h pcre_stringpiece.h pcrecpparg.h \
dftables@EXEEXT@ RunGrepTest RunTest \
Makefile config.h config.status config.log config.cache
diff --git a/NEWS b/NEWS
index a6113e0..a8b3a7a 100644
--- a/NEWS
+++ b/NEWS
@@ -1,6 +1,28 @@
News about PCRE releases
------------------------
+Release 6.5 01-Feb-06
+---------------------
+
+Important changes in this release:
+
+1. A number of new features have been added to pcregrep.
+
+2. The Unicode property tables have been updated to Unicode 4.1.0, and the
+ supported properties have been extended with script names such as "Arabic",
+ and the derived properties "Any" and "L&". This has necessitated a change to
+ the interal format of compiled patterns. Any saved compiled patterns that
+ use \p or \P must be recompiled.
+
+3. The specification of recursion in patterns has been changed so that all
+ recursive subpatterns are automatically treated as atomic groups. Thus, for
+ example, (?R) is treated as if it were (?>(?R)). This is necessary because
+ otherwise there are situations where recursion does not work.
+
+See the ChangeLog for a complete list of changes, which include a number of bug
+fixes and tidies.
+
+
Release 6.0 07-Jun-05
---------------------
diff --git a/NON-UNIX-USE b/NON-UNIX-USE
index fc02ba1..459bdf2 100644
--- a/NON-UNIX-USE
+++ b/NON-UNIX-USE
@@ -11,8 +11,9 @@ the Contrib directory on the ftp site that you may find useful. See
If you want to compile PCRE for a non-Unix system (or perhaps, more strictly,
for a system that does not support "configure" and "make" files), note that
-PCRE consists entirely of code written in Standard C, and so should compile
-successfully on any system that has a Standard C compiler and library.
+the basic PCRE library consists entirely of code written in Standard C, and so
+should compile successfully on any system that has a Standard C compiler and
+library. The C++ wrapper functions are a separate issue (see below).
GENERIC INSTRUCTIONS FOR THE C LIBRARY
@@ -34,27 +35,16 @@ your compiler gives to '\n'.
rem Use write, because notepad cannot handle UNIX files. Change values.
write config.h
-(2) Copy or rename the file pcre.in as pcre.h, and change the macro definitions
-for PCRE_MAJOR, PCRE_MINOR, and PCRE_DATE near its start to the values set in
-configure.in.
-
- rem Mark Tetrode's commands
- copy pcre.in pcre.h
- rem Read values from configure.in
- write configure.in
- rem Change values
- write pcre.h
-
-(3) Compile dftables.c as a stand-alone program, and then run it with
+(2) Compile dftables.c as a stand-alone program, and then run it with
the single argument "pcre_chartables.c". This generates a set of standard
character tables and writes them to that file.
rem Mark Tetrode's commands
rem Compile & run
cl -DSUPPORT_UTF8 -DSUPPORT_UCP dftables.c
- dftables.exe chartables.c
+ dftables.exe pcre_chartables.c
-(4) Compile the following source files:
+(3) Compile the following source files:
pcre_chartables.c
pcre_compile.c
@@ -67,12 +57,11 @@ character tables and writes them to that file.
pcre_info.c
pcre_maketables.c
pcre_ord2utf8.c
- pcre_printint.c
pcre_refcount.c
pcre_study.c
pcre_tables.c
pcre_try_flipped.c
- pcre_ucp_findchar.c
+ pcre_ucp_searchfuncs.c
pcre_valid_utf8.c
pcre_version.c
pcre_xclass.c
@@ -88,7 +77,7 @@ shared libraries, you may have to do this once for each type.
cl -DSUPPORT_UTF8 -DSUPPORT_UCP -DPOSIX_MALLOC_THRESHOLD=10 /c maketables.c get.c study.c pcre.c
lib /OUT:pcre.lib maketables.obj get.obj study.obj pcre.obj
-(5) Similarly, compile pcreposix.c and link it (on its own) as the pcreposix
+(4) Similarly, compile pcreposix.c and link it (on its own) as the pcreposix
library.
rem Mark Tetrode's commands, for a static library
@@ -96,14 +85,14 @@ library.
cl -DSUPPORT_UTF8 -DSUPPORT_UCP -DPOSIX_MALLOC_THRESHOLD=10 /c pcreposix.c
lib /OUT:pcreposix.lib pcreposix.obj
-(6) Compile the test program pcretest.c. This needs the functions in the
+(5) Compile the test program pcretest.c. This needs the functions in the
pcre and pcreposix libraries when linking.
rem Mark Tetrode's commands
rem compile & link
cl /F0x400000 pcretest.c pcre.lib pcreposix.lib
-(7) Run pcretest on the testinput files in the testdata directory, and check
+(6) Run pcretest on the testinput files in the testdata directory, and check
that the output matches the corresponding testoutput files. You must use the
-i option when checking testinput2. Note that the supplied files are in Unix
format, with just LF characters as line terminators. You may need to edit them
@@ -126,6 +115,9 @@ to change this if your system uses a different convention.
Note that there are now three more tests (7, 8, 9) that did not exist when Mark
wrote those comments. The test the new pcre_dfa_exec() function.
+(7) If you want to use the pcregrep command, compile and link pcregrep.c; it
+uses only the basic PCRE library.
+
THE C++ WRAPPER FUNCTIONS
diff --git a/README b/README
index 2ede6fc..ab9ee51 100644
--- a/README
+++ b/README
@@ -68,6 +68,9 @@ others are pointers to URLs containing relevant files.
Building PCRE on a Unix-like system
-----------------------------------
+If you are using HP's ANSI C++ compiler (aCC), please see the special note
+in the section entitled "Using HP's ANSI C++ compiler (aCC)" below.
+
To build PCRE on a Unix-like system, first run the "configure" command from the
PCRE distribution directory, with your current directory set to the directory
where you want the files to be created. This command is a standard GNU
@@ -91,6 +94,10 @@ into /source/pcre/pcre-xxx, but you want to build it in /build/pcre/pcre-xxx:
cd /build/pcre/pcre-xxx
/source/pcre/pcre-xxx/configure
+PCRE is written in C and is normally compiled as a C library. However, it is
+possible to build it as a C++ library, though the provided building apparatus
+does not have any features to support this.
+
There are some optional features that can be included or omitted from the PCRE
library. You can read more about them in the pcrebuild man page.
@@ -111,11 +118,11 @@ library. You can read more about them in the pcrebuild man page.
property table); only the basic two-letter properties such as Lu are
supported.
-. You can build PCRE to recognized CR or NL as the newline character, instead
- of whatever your compiler uses for "\n", by adding --newline-is-cr or
- --newline-is-nl to the "configure" command, respectively. Only do this if you
+. You can build PCRE to recognize either CR or LF as the newline character,
+ instead of whatever your compiler uses for "\n", by adding --newline-is-cr or
+ --newline-is-lf to the "configure" command, respectively. Only do this if you
really understand what you are doing. On traditional Unix-like systems, the
- newline character is NL.
+ newline character is LF.
. When called via the POSIX interface, PCRE uses malloc() to get additional
storage for processing capturing parentheses if there are more than 10 of
@@ -262,6 +269,22 @@ when calling the "configure" command. If they are not specified, they default
to the values of CC and CFLAGS.
+Using HP's ANSI C++ compiler (aCC)
+----------------------------------
+
+Unless C++ support is disabled by specifiying the "--disable-cpp" option of the
+"configure" script, you *must* include the "-AA" option in the CXXFLAGS
+environment variable in order for the C++ components to compile correctly.
+
+Also, note that the aCC compiler on PA-RISC platforms may have a defect whereby
+needed libraries fail to get included when specifying the "-AA" compiler
+option. If you experience unresolved symbols when linking the C++ programs,
+use the workaround of specifying the following environment variable prior to
+running the "configure" script:
+
+ CXXLDFLAGS="-lstd_v2 -lCsup_v2"
+
+
Building on non-Unix systems
----------------------------
@@ -430,7 +453,8 @@ The distribution should contain the following files:
pcre_internal.h header for internal use
config.in template for config.h, which is built by configure
- pcrecpp.h.in "source" for the header file for the C++ wrapper
+ pcrecpp.h the header file for the C++ wrapper
+ pcrecpparg.h.in "source" for another C++ header file
pcrecpp.cc )
pcre_scanner.cc ) source for the C++ wrapper library
@@ -491,4 +515,4 @@ The distribution should contain the following files:
Philip Hazel
Email local part: ph10
Email domain: cam.ac.uk
-August 2005
+January 2006
diff --git a/RunGrepTest.in b/RunGrepTest.in
index 109267e..feb68b2 100644
--- a/RunGrepTest.in
+++ b/RunGrepTest.in
@@ -4,133 +4,185 @@
# to that file.
echo "Testing pcregrep"
+./pcregrep -V
# Run pcregrep tests. The assumption is that the PCRE tests check the library
# itself. What we are checking here is the file handling and options that are
# supported by pcregrep.
cf=diff
+valgrind=
if [ ! -d testdata ] ; then
ln -s @top_srcdir@/testdata testdata
fi
testdata=./testdata
-./pcregrep -V 2>testtry
+while [ $# -gt 0 ] ; do
+ case $1 in
+ valgrind) valgrind="valgrind -q --leak-check=no";;
+ *) echo "Unknown argument $1"; exit 1;;
+ esac
+ shift
+done
-echo "---------------------------- Test 1 ------------------------------" >>testtry
-./pcregrep PATTERN $testdata/grepinput >>testtry
+echo "---------------------------- Test 1 ------------------------------" >testtry
+$valgrind ./pcregrep PATTERN $testdata/grepinput >>testtry
echo "---------------------------- Test 2 ------------------------------" >>testtry
-./pcregrep '^PATTERN' $testdata/grepinput >>testtry
+$valgrind ./pcregrep '^PATTERN' $testdata/grepinput >>testtry
echo "---------------------------- Test 3 ------------------------------" >>testtry
-./pcregrep -in PATTERN $testdata/grepinput >>testtry
+$valgrind ./pcregrep -in PATTERN $testdata/grepinput >>testtry
echo "---------------------------- Test 4 ------------------------------" >>testtry
-./pcregrep -ic PATTERN $testdata/grepinput >>testtry
+$valgrind ./pcregrep -ic PATTERN $testdata/grepinput >>testtry
echo "---------------------------- Test 5 ------------------------------" >>testtry
-./pcregrep -in PATTERN $testdata/grepinput $testdata/grepinputx >>testtry
+$valgrind ./pcregrep -in PATTERN $testdata/grepinput $testdata/grepinputx >>testtry
echo "---------------------------- Test 6 ------------------------------" >>testtry
-./pcregrep -inh PATTERN $testdata/grepinput $testdata/grepinputx >>testtry
+$valgrind ./pcregrep -inh PATTERN $testdata/grepinput $testdata/grepinputx >>testtry
echo "---------------------------- Test 7 ------------------------------" >>testtry
-./pcregrep -il PATTERN $testdata/grepinput $testdata/grepinputx >>testtry
+$valgrind ./pcregrep -il PATTERN $testdata/grepinput $testdata/grepinputx >>testtry
echo "---------------------------- Test 8 ------------------------------" >>testtry
-./pcregrep -l PATTERN $testdata/grepinput $testdata/grepinputx >>testtry
+$valgrind ./pcregrep -l PATTERN $testdata/grepinput $testdata/grepinputx >>testtry
echo "---------------------------- Test 9 ------------------------------" >>testtry
-./pcregrep -q PATTERN $testdata/grepinput $testdata/grepinputx >>testtry
+$valgrind ./pcregrep -q PATTERN $testdata/grepinput $testdata/grepinputx >>testtry
echo "RC=$?" >>testtry
echo "---------------------------- Test 10 -----------------------------" >>testtry
-./pcregrep -q NEVER-PATTERN $testdata/grepinput $testdata/grepinputx >>testtry
+$valgrind ./pcregrep -q NEVER-PATTERN $testdata/grepinput $testdata/grepinputx >>testtry
echo "RC=$?" >>testtry
echo "---------------------------- Test 11 -----------------------------" >>testtry
-./pcregrep -vn pattern $testdata/grepinputx >>testtry
+$valgrind ./pcregrep -vn pattern $testdata/grepinputx >>testtry
echo "---------------------------- Test 12 -----------------------------" >>testtry
-./pcregrep -ix pattern $testdata/grepinputx >>testtry
+$valgrind ./pcregrep -ix pattern $testdata/grepinputx >>testtry
echo "---------------------------- Test 13 -----------------------------" >>testtry
-./pcregrep -f$testdata/greplist $testdata/grepinputx >>testtry
+$valgrind ./pcregrep -f$testdata/greplist $testdata/grepinputx >>testtry
echo "---------------------------- Test 14 -----------------------------" >>testtry
-./pcregrep -w pat $testdata/grepinput $testdata/grepinputx >>testtry
+$valgrind ./pcregrep -w pat $testdata/grepinput $testdata/grepinputx >>testtry
echo "---------------------------- Test 15 -----------------------------" >>testtry
-./pcregrep 'abc^*' $testdata/grepinput 2>>testtry >>testtry
+$valgrind ./pcregrep 'abc^*' $testdata/grepinput 2>>testtry >>testtry
echo "---------------------------- Test 16 -----------------------------" >>testtry
-./pcregrep abc $testdata/grepinput $testdata/nonexistfile 2>>testtry >>testtry
+$valgrind ./pcregrep abc $testdata/grepinput $testdata/nonexistfile 2>>testtry >>testtry
echo "---------------------------- Test 17 -----------------------------" >>testtry
-./pcregrep -M 'the\noutput' $testdata/grepinput >>testtry
+$valgrind ./pcregrep -M 'the\noutput' $testdata/grepinput >>testtry
echo "---------------------------- Test 18 -----------------------------" >>testtry
-./pcregrep -Mn '(the\noutput|dog\.\n--)' $testdata/grepinput >>testtry
+$valgrind ./pcregrep -Mn '(the\noutput|dog\.\n--)' $testdata/grepinput >>testtry
echo "---------------------------- Test 19 -----------------------------" >>testtry
-./pcregrep -Mix 'Pattern' $testdata/grepinputx >>testtry
+$valgrind ./pcregrep -Mix 'Pattern' $testdata/grepinputx >>testtry
echo "---------------------------- Test 20 -----------------------------" >>testtry
-./pcregrep -Mixn 'complete pair\nof lines' $testdata/grepinputx >>testtry
+$valgrind ./pcregrep -Mixn 'complete pair\nof lines' $testdata/grepinputx >>testtry
echo "---------------------------- Test 21 -----------------------------" >>testtry
-./pcregrep -nA3 'four' $testdata/grepinputx >>testtry
+$valgrind ./pcregrep -nA3 'four' $testdata/grepinputx >>testtry
echo "---------------------------- Test 22 -----------------------------" >>testtry
-./pcregrep -nB3 'four' $testdata/grepinputx >>testtry
+$valgrind ./pcregrep -nB3 'four' $testdata/grepinputx >>testtry
echo "---------------------------- Test 23 -----------------------------" >>testtry
-./pcregrep -C3 'four' $testdata/grepinputx >>testtry
+$valgrind ./pcregrep -C3 'four' $testdata/grepinputx >>testtry
echo "---------------------------- Test 24 -----------------------------" >>testtry
-./pcregrep -A9 'four' $testdata/grepinputx >>testtry
+$valgrind ./pcregrep -A9 'four' $testdata/grepinputx >>testtry
echo "---------------------------- Test 25 -----------------------------" >>testtry
-./pcregrep -nB9 'four' $testdata/grepinputx >>testtry
+$valgrind ./pcregrep -nB9 'four' $testdata/grepinputx >>testtry
echo "---------------------------- Test 26 -----------------------------" >>testtry
-./pcregrep -A9 -B9 'four' $testdata/grepinputx >>testtry
+$valgrind ./pcregrep -A9 -B9 'four' $testdata/grepinputx >>testtry
echo "---------------------------- Test 27 -----------------------------" >>testtry
-./pcregrep -A10 'four' $testdata/grepinputx >>testtry
+$valgrind ./pcregrep -A10 'four' $testdata/grepinputx >>testtry
echo "---------------------------- Test 28 -----------------------------" >>testtry
-./pcregrep -nB10 'four' $testdata/grepinputx >>testtry
+$valgrind ./pcregrep -nB10 'four' $testdata/grepinputx >>testtry
echo "---------------------------- Test 29 -----------------------------" >>testtry
-./pcregrep -C12 -B10 'four' $testdata/grepinputx >>testtry
+$valgrind ./pcregrep -C12 -B10 'four' $testdata/grepinputx >>testtry
echo "---------------------------- Test 30 -----------------------------" >>testtry
-./pcregrep -inB3 'pattern' $testdata/grepinput $testdata/grepinputx >>testtry
+$valgrind ./pcregrep -inB3 'pattern' $testdata/grepinput $testdata/grepinputx >>testtry
echo "---------------------------- Test 31 -----------------------------" >>testtry
-./pcregrep -inA3 'pattern' $testdata/grepinput $testdata/grepinputx >>testtry
+$valgrind ./pcregrep -inA3 'pattern' $testdata/grepinput $testdata/grepinputx >>testtry
echo "---------------------------- Test 32 -----------------------------" >>testtry
-./pcregrep -L 'fox' $testdata/grepinput $testdata/grepinputx >>testtry
+$valgrind ./pcregrep -L 'fox' $testdata/grepinput $testdata/grepinputx >>testtry
echo "---------------------------- Test 33 -----------------------------" >>testtry
-./pcregrep 'fox' $testdata/grepnonexist >>testtry 2>&1
+$valgrind ./pcregrep 'fox' $testdata/grepnonexist >>testtry 2>&1
echo "RC=$?" >>testtry
echo "---------------------------- Test 34 -----------------------------" >>testtry
-./pcregrep -s 'fox' $testdata/grepnonexist >>testtry 2>&1
+$valgrind ./pcregrep -s 'fox' $testdata/grepnonexist >>testtry 2>&1
echo "RC=$?" >>testtry
echo "---------------------------- Test 35 -----------------------------" >>testtry
-./pcregrep -L -r --include=grepinputx 'fox' $testdata >>testtry
+$valgrind ./pcregrep -L -r --include=grepinputx 'fox' $testdata >>testtry
echo "RC=$?" >>testtry
echo "---------------------------- Test 36 -----------------------------" >>testtry
-./pcregrep -L -r --include=grepinput --exclude 'grepinput$' 'fox' $testdata >>testtry
+$valgrind ./pcregrep -L -r --include=grepinput --exclude 'grepinput$' 'fox' $testdata >>testtry
echo "RC=$?" >>testtry
+echo "---------------------------- Test 37 -----------------------------" >>testtry
+$valgrind ./pcregrep '^(a+)*\d' $testdata/grepinput >>testtry 2>teststderr
+echo "RC=$?" >>testtry
+echo "======== STDERR ========" >>testtry
+cat teststderr >>testtry
+
+echo "---------------------------- Test 38 ------------------------------" >>testtry
+$valgrind ./pcregrep '>\x00<' $testdata/grepinput >>testtry
+
+echo "---------------------------- Test 39 ------------------------------" >>testtry
+$valgrind ./pcregrep -A1 'before the binary zero' $testdata/grepinput >>testtry
+
+echo "---------------------------- Test 40 ------------------------------" >>testtry
+$valgrind ./pcregrep -B1 'after the binary zero' $testdata/grepinput >>testtry
+
+echo "---------------------------- Test 41 ------------------------------" >>testtry
+$valgrind ./pcregrep -B1 -o '\w+ the binary zero' $testdata/grepinput >>testtry
+
+echo "---------------------------- Test 41 ------------------------------" >>testtry
+$valgrind ./pcregrep -B1 -onH '\w+ the binary zero' $testdata/grepinput >>testtry
+
+echo "---------------------------- Test 42 ------------------------------" >>testtry
+$valgrind ./pcregrep -on 'before|zero|after' $testdata/grepinput >>testtry
+
+echo "---------------------------- Test 43 ------------------------------" >>testtry
+$valgrind ./pcregrep -on -e before -e zero -e after $testdata/grepinput >>testtry
+
+echo "---------------------------- Test 44 ------------------------------" >>testtry
+$valgrind ./pcregrep -on -f $testdata/greplist -e binary $testdata/grepinput >>testtry
+
+echo "---------------------------- Test 45 ------------------------------" >>testtry
+$valgrind ./pcregrep -e abc -e '(unclosed' $testdata/grepinput 2>>testtry >>testtry
+
+echo "---------------------------- Test 46 ------------------------------" >>testtry
+$valgrind ./pcregrep -Fx "AB.VE
+elephant" $testdata/grepinput >>testtry
+
+echo "---------------------------- Test 47 ------------------------------" >>testtry
+$valgrind ./pcregrep -F "AB.VE
+elephant" $testdata/grepinput >>testtry
+
+echo "---------------------------- Test 48 ------------------------------" >>testtry
+$valgrind ./pcregrep -F -e DATA -e "AB.VE
+elephant" $testdata/grepinput >>testtry
# Now compare the results.
diff --git a/RunTest.in b/RunTest.in
index 69f0665..f6518ed 100755
--- a/RunTest.in
+++ b/RunTest.in
@@ -6,11 +6,13 @@
# Run PCRE tests
cf=diff
+valgrind=
if [ ! -d testdata ] ; then
ln -s @top_srcdir@/testdata testdata
fi
testdata=./testdata
+
# Select which tests to run; if no selection, run all
do1=no
@@ -34,6 +36,7 @@ while [ $# -gt 0 ] ; do
7) do7=yes;;
8) do8=yes;;
9) do9=yes;;
+ valgrind) valgrind="valgrind -q";;
*) echo "Unknown test number $1"; exit 1;;
esac
shift
@@ -110,7 +113,7 @@ fi
if [ $do1 = yes ] ; then
echo "Test 1: main functionality (Perl compatible)"
- ./pcretest $testdata/testinput1 testtry
+ $valgrind ./pcretest -q $testdata/testinput1 testtry
if [ $? = 0 ] ; then
$cf testtry $testdata/testoutput1
if [ $? != 0 ] ; then exit 1; fi
@@ -125,7 +128,7 @@ fi
if [ $do2 = yes ] ; then
if [ "@LINK_SIZE@" = "" -o "@LINK_SIZE@" = "-DLINK_SIZE=2" ] ; then
echo "Test 2: API and error handling (not Perl compatible)"
- ./pcretest -i $testdata/testinput2 testtry
+ $valgrind ./pcretest -q -i $testdata/testinput2 testtry
if [ $? = 0 ] ; then
$cf testtry $testdata/testoutput2
if [ $? != 0 ] ; then exit 1; fi
@@ -145,7 +148,7 @@ if [ $do3 = yes ] ; then
locale -a | grep '^fr_FR$' >/dev/null
if [ $? -eq 0 ] ; then
echo "Test 3: locale-specific features (using 'fr_FR' locale)"
- ./pcretest $testdata/testinput3 testtry
+ $valgrind ./pcretest -q $testdata/testinput3 testtry
if [ $? = 0 ] ; then
$cf testtry $testdata/testoutput3
if [ $? != 0 ] ; then
@@ -170,7 +173,7 @@ fi
if [ $do4 = yes ] ; then
echo "Test 4: UTF-8 support (Perl compatible)"
- ./pcretest $testdata/testinput4 testtry
+ $valgrind ./pcretest -q $testdata/testinput4 testtry
if [ $? = 0 ] ; then
$cf testtry $testdata/testoutput4
if [ $? != 0 ] ; then exit 1; fi
@@ -183,7 +186,7 @@ fi
if [ $do5 = yes ] ; then
if [ "@LINK_SIZE@" = "" -o "@LINK_SIZE@" = "-DLINK_SIZE=2" ] ; then
echo "Test 5: API and internals for UTF-8 support (not Perl compatible)"
- ./pcretest $testdata/testinput5 testtry
+ $valgrind ./pcretest -q $testdata/testinput5 testtry
if [ $? = 0 ] ; then
$cf testtry $testdata/testoutput5
if [ $? != 0 ] ; then exit 1; fi
@@ -200,7 +203,7 @@ fi
if [ $do6 = yes ] ; then
if [ "@LINK_SIZE@" = "" -o "@LINK_SIZE@" = "-DLINK_SIZE=2" ] ; then
echo "Test 6: Unicode property support"
- ./pcretest $testdata/testinput6 testtry
+ $valgrind ./pcretest -q $testdata/testinput6 testtry
if [ $? = 0 ] ; then
$cf testtry $testdata/testoutput6
if [ $? != 0 ] ; then exit 1; fi
@@ -218,7 +221,7 @@ fi
if [ $do7 = yes ] ; then
echo "Test 7: DFA matching"
- ./pcretest -dfa $testdata/testinput7 testtry
+ $valgrind ./pcretest -q -dfa $testdata/testinput7 testtry
if [ $? = 0 ] ; then
$cf testtry $testdata/testoutput7
if [ $? != 0 ] ; then exit 1; fi
@@ -230,7 +233,7 @@ fi
if [ $do8 = yes ] ; then
echo "Test 8: DFA matching with UTF-8"
- ./pcretest -dfa $testdata/testinput8 testtry
+ $valgrind ./pcretest -q -dfa $testdata/testinput8 testtry
if [ $? = 0 ] ; then
$cf testtry $testdata/testoutput8
if [ $? != 0 ] ; then exit 1; fi
@@ -242,7 +245,7 @@ fi
if [ $do9 = yes ] ; then
echo "Test 9: DFA matching with Unicode properties"
- ./pcretest -dfa $testdata/testinput9 testtry
+ $valgrind ./pcretest -q -dfa $testdata/testinput9 testtry
if [ $? = 0 ] ; then
$cf testtry $testdata/testoutput9
if [ $? != 0 ] ; then exit 1; fi
diff --git a/config.guess b/config.guess
index 82a4ba2..01edd7b 100755
--- a/config.guess
+++ b/config.guess
@@ -3,7 +3,7 @@
# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
# 2000, 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
-timestamp='2005-03-24'
+timestamp='2005-12-23'
# 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
@@ -17,13 +17,15 @@ timestamp='2005-03-24'
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA
+# 02110-1301, USA.
#
# As a special exception to the GNU General Public License, if you
# distribute this file as part of a program that contains a
# configuration script generated by Autoconf, you may include it under
# the same distribution terms that you use for the rest of that program.
+
# Originally written by Per Bothner <per@bothner.com>.
# Please send patches to <config-patches@gnu.org>. Submit a context
# diff and a properly formatted ChangeLog entry.
@@ -66,11 +68,11 @@ Try \`$me --help' for more information."
while test $# -gt 0 ; do
case $1 in
--time-stamp | --time* | -t )
- echo "$timestamp" ; exit 0 ;;
+ echo "$timestamp" ; exit ;;
--version | -v )
- echo "$version" ; exit 0 ;;
+ echo "$version" ; exit ;;
--help | --h* | -h )
- echo "$usage"; exit 0 ;;
+ echo "$usage"; exit ;;
-- ) # Stop option processing
shift; break ;;
- ) # Use stdin as input.
@@ -123,7 +125,7 @@ case $CC_FOR_BUILD,$HOST_CC,$CC in
;;
,,*) CC_FOR_BUILD=$CC ;;
,*,*) CC_FOR_BUILD=$HOST_CC ;;
-esac ;'
+esac ; set_cc_for_build= ;'
# This is needed to find uname on a Pyramid OSx when run in the BSD universe.
# (ghazi@noc.rutgers.edu 1994-08-24)
@@ -213,55 +215,20 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
# contains redundant information, the shorter form:
# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used.
echo "${machine}-${os}${release}"
- exit 0 ;;
- amd64:OpenBSD:*:*)
- echo x86_64-unknown-openbsd${UNAME_RELEASE}
- exit 0 ;;
- amiga:OpenBSD:*:*)
- echo m68k-unknown-openbsd${UNAME_RELEASE}
- exit 0 ;;
- cats:OpenBSD:*:*)
- echo arm-unknown-openbsd${UNAME_RELEASE}
- exit 0 ;;
- hp300:OpenBSD:*:*)
- echo m68k-unknown-openbsd${UNAME_RELEASE}
- exit 0 ;;
- luna88k:OpenBSD:*:*)
- echo m88k-unknown-openbsd${UNAME_RELEASE}
- exit 0 ;;
- mac68k:OpenBSD:*:*)
- echo m68k-unknown-openbsd${UNAME_RELEASE}
- exit 0 ;;
- macppc:OpenBSD:*:*)
- echo powerpc-unknown-openbsd${UNAME_RELEASE}
- exit 0 ;;
- mvme68k:OpenBSD:*:*)
- echo m68k-unknown-openbsd${UNAME_RELEASE}
- exit 0 ;;
- mvme88k:OpenBSD:*:*)
- echo m88k-unknown-openbsd${UNAME_RELEASE}
- exit 0 ;;
- mvmeppc:OpenBSD:*:*)
- echo powerpc-unknown-openbsd${UNAME_RELEASE}
- exit 0 ;;
- sgi:OpenBSD:*:*)
- echo mips64-unknown-openbsd${UNAME_RELEASE}
- exit 0 ;;
- sun3:OpenBSD:*:*)
- echo m68k-unknown-openbsd${UNAME_RELEASE}
- exit 0 ;;
+ exit ;;
*:OpenBSD:*:*)
- echo ${UNAME_MACHINE}-unknown-openbsd${UNAME_RELEASE}
- exit 0 ;;
+ UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'`
+ echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE}
+ exit ;;
*:ekkoBSD:*:*)
echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE}
- exit 0 ;;
+ exit ;;
macppc:MirBSD:*:*)
echo powerppc-unknown-mirbsd${UNAME_RELEASE}
- exit 0 ;;
+ exit ;;
*:MirBSD:*:*)
echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE}
- exit 0 ;;
+ exit ;;
alpha:OSF1:*:*)
case $UNAME_RELEASE in
*4.0)
@@ -314,40 +281,43 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
# A Xn.n version is an unreleased experimental baselevel.
# 1.2 uses "1.2" for uname -r.
echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
- exit 0 ;;
+ exit ;;
Alpha\ *:Windows_NT*:*)
# How do we know it's Interix rather than the generic POSIX subsystem?
# Should we change UNAME_MACHINE based on the output of uname instead
# of the specific Alpha model?
echo alpha-pc-interix
- exit 0 ;;
+ exit ;;
21064:Windows_NT:50:3)
echo alpha-dec-winnt3.5
- exit 0 ;;
+ exit ;;
Amiga*:UNIX_System_V:4.0:*)
echo m68k-unknown-sysv4
- exit 0;;
+ exit ;;
*:[Aa]miga[Oo][Ss]:*:*)
echo ${UNAME_MACHINE}-unknown-amigaos
- exit 0 ;;
+ exit ;;
*:[Mm]orph[Oo][Ss]:*:*)
echo ${UNAME_MACHINE}-unknown-morphos
- exit 0 ;;
+ exit ;;
*:OS/390:*:*)
echo i370-ibm-openedition
- exit 0 ;;
+ exit ;;
*:z/VM:*:*)
echo s390-ibm-zvmoe
- exit 0 ;;
+ exit ;;
*:OS400:*:*)
echo powerpc-ibm-os400
- exit 0 ;;
+ exit ;;
arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*)
echo arm-acorn-riscix${UNAME_RELEASE}
- exit 0;;
+ exit ;;
+ arm:riscos:*:*|arm:RISCOS:*:*)
+ echo arm-unknown-riscos
+ exit ;;
SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*)
echo hppa1.1-hitachi-hiuxmpp
- exit 0;;
+ exit ;;
Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*)
# akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE.
if test "`(/bin/universe) 2>/dev/null`" = att ; then
@@ -355,32 +325,32 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
else
echo pyramid-pyramid-bsd
fi
- exit 0 ;;
+ exit ;;
NILE*:*:*:dcosx)
echo pyramid-pyramid-svr4
- exit 0 ;;
+ exit ;;
DRS?6000:unix:4.0:6*)
echo sparc-icl-nx6
- exit 0 ;;
+ exit ;;
DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*)
case `/usr/bin/uname -p` in
- sparc) echo sparc-icl-nx7 && exit 0 ;;
+ sparc) echo sparc-icl-nx7; exit ;;
esac ;;
sun4H:SunOS:5.*:*)
echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
- exit 0 ;;
+ exit ;;
sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*)
echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
- exit 0 ;;
+ exit ;;
i86pc:SunOS:5.*:*)
echo i386-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
- exit 0 ;;
+ exit ;;
sun4*:SunOS:6*:*)
# According to config.sub, this is the proper way to canonicalize
# SunOS6. Hard to guess exactly what SunOS6 will be like, but
# it's likely to be more like Solaris than SunOS4.
echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
- exit 0 ;;
+ exit ;;
sun4*:SunOS:*:*)
case "`/usr/bin/arch -k`" in
Series*|S4*)
@@ -389,10 +359,10 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
esac
# Japanese Language versions have a version number like `4.1.3-JL'.
echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'`
- exit 0 ;;
+ exit ;;
sun3*:SunOS:*:*)
echo m68k-sun-sunos${UNAME_RELEASE}
- exit 0 ;;
+ exit ;;
sun*:*:4.2BSD:*)
UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null`
test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3
@@ -404,10 +374,10 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
echo sparc-sun-sunos${UNAME_RELEASE}
;;
esac
- exit 0 ;;
+ exit ;;
aushp:SunOS:*:*)
echo sparc-auspex-sunos${UNAME_RELEASE}
- exit 0 ;;
+ exit ;;
# The situation for MiNT is a little confusing. The machine name
# can be virtually everything (everything which is not
# "atarist" or "atariste" at least should have a processor
@@ -418,40 +388,40 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
# be no problem.
atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*)
echo m68k-atari-mint${UNAME_RELEASE}
- exit 0 ;;
+ exit ;;
atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*)
echo m68k-atari-mint${UNAME_RELEASE}
- exit 0 ;;
+ exit ;;
*falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*)
echo m68k-atari-mint${UNAME_RELEASE}
- exit 0 ;;
+ exit ;;
milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*)
echo m68k-milan-mint${UNAME_RELEASE}
- exit 0 ;;
+ exit ;;
hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*)
echo m68k-hades-mint${UNAME_RELEASE}
- exit 0 ;;
+ exit ;;
*:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*)
echo m68k-unknown-mint${UNAME_RELEASE}
- exit 0 ;;
+ exit ;;
m68k:machten:*:*)
echo m68k-apple-machten${UNAME_RELEASE}
- exit 0 ;;
+ exit ;;
powerpc:machten:*:*)
echo powerpc-apple-machten${UNAME_RELEASE}
- exit 0 ;;
+ exit ;;
RISC*:Mach:*:*)
echo mips-dec-mach_bsd4.3
- exit 0 ;;
+ exit ;;
RISC*:ULTRIX:*:*)
echo mips-dec-ultrix${UNAME_RELEASE}
- exit 0 ;;
+ exit ;;
VAX*:ULTRIX*:*:*)
echo vax-dec-ultrix${UNAME_RELEASE}
- exit 0 ;;
+ exit ;;
2020:CLIX:*:* | 2430:CLIX:*:*)
echo clipper-intergraph-clix${UNAME_RELEASE}
- exit 0 ;;
+ exit ;;
mips:*:*:UMIPS | mips:*:*:RISCos)
eval $set_cc_for_build
sed 's/^ //' << EOF >$dummy.c
@@ -475,32 +445,33 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
exit (-1);
}
EOF
- $CC_FOR_BUILD -o $dummy $dummy.c \
- && $dummy `echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` \
- && exit 0
+ $CC_FOR_BUILD -o $dummy $dummy.c &&
+ dummyarg=`echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` &&
+ SYSTEM_NAME=`$dummy $dummyarg` &&
+ { echo "$SYSTEM_NAME"; exit; }
echo mips-mips-riscos${UNAME_RELEASE}
- exit 0 ;;
+ exit ;;
Motorola:PowerMAX_OS:*:*)
echo powerpc-motorola-powermax
- exit 0 ;;
+ exit ;;
Motorola:*:4.3:PL8-*)
echo powerpc-harris-powermax
- exit 0 ;;
+ exit ;;
Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*)
echo powerpc-harris-powermax
- exit 0 ;;
+ exit ;;
Night_Hawk:Power_UNIX:*:*)
echo powerpc-harris-powerunix
- exit 0 ;;
+ exit ;;
m88k:CX/UX:7*:*)
echo m88k-harris-cxux7
- exit 0 ;;
+ exit ;;
m88k:*:4*:R4*)
echo m88k-motorola-sysv4
- exit 0 ;;
+ exit ;;
m88k:*:3*:R3*)
echo m88k-motorola-sysv3
- exit 0 ;;
+ exit ;;
AViiON:dgux:*:*)
# DG/UX returns AViiON for all architectures
UNAME_PROCESSOR=`/usr/bin/uname -p`
@@ -516,29 +487,29 @@ EOF
else
echo i586-dg-dgux${UNAME_RELEASE}
fi
- exit 0 ;;
+ exit ;;
M88*:DolphinOS:*:*) # DolphinOS (SVR3)
echo m88k-dolphin-sysv3
- exit 0 ;;
+ exit ;;
M88*:*:R3*:*)
# Delta 88k system running SVR3
echo m88k-motorola-sysv3
- exit 0 ;;
+ exit ;;
XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3)
echo m88k-tektronix-sysv3
- exit 0 ;;
+ exit ;;
Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD)
echo m68k-tektronix-bsd
- exit 0 ;;
+ exit ;;
*:IRIX*:*:*)
echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'`
- exit 0 ;;
+ exit ;;
????????: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 '
+ echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id
+ exit ;; # Note that: echo "'`uname -s`'" gives 'AIX '
i*86:AIX:*:*)
echo i386-ibm-aix
- exit 0 ;;
+ exit ;;
ia64:AIX:*:*)
if [ -x /usr/bin/oslevel ] ; then
IBM_REV=`/usr/bin/oslevel`
@@ -546,7 +517,7 @@ EOF
IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE}
fi
echo ${UNAME_MACHINE}-ibm-aix${IBM_REV}
- exit 0 ;;
+ exit ;;
*:AIX:2:3)
if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then
eval $set_cc_for_build
@@ -561,14 +532,18 @@ EOF
exit(0);
}
EOF
- $CC_FOR_BUILD -o $dummy $dummy.c && $dummy && exit 0
- echo rs6000-ibm-aix3.2.5
+ if $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy`
+ then
+ echo "$SYSTEM_NAME"
+ else
+ echo rs6000-ibm-aix3.2.5
+ fi
elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then
echo rs6000-ibm-aix3.2.4
else
echo rs6000-ibm-aix3.2
fi
- exit 0 ;;
+ exit ;;
*:AIX:*:[45])
IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'`
if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then
@@ -582,28 +557,28 @@ EOF
IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE}
fi
echo ${IBM_ARCH}-ibm-aix${IBM_REV}
- exit 0 ;;
+ exit ;;
*:AIX:*:*)
echo rs6000-ibm-aix
- exit 0 ;;
+ exit ;;
ibmrt:4.4BSD:*|romp-ibm:BSD:*)
echo romp-ibm-bsd4.4
- exit 0 ;;
+ exit ;;
ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and
echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to
- exit 0 ;; # report: romp-ibm BSD 4.3
+ exit ;; # report: romp-ibm BSD 4.3
*:BOSX:*:*)
echo rs6000-bull-bosx
- exit 0 ;;
+ exit ;;
DPX/2?00:B.O.S.:*:*)
echo m68k-bull-sysv3
- exit 0 ;;
+ exit ;;
9000/[34]??:4.3bsd:1.*:*)
echo m68k-hp-bsd
- exit 0 ;;
+ exit ;;
hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*)
echo m68k-hp-bsd4.4
- exit 0 ;;
+ exit ;;
9000/[34678]??:HP-UX:*:*)
HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
case "${UNAME_MACHINE}" in
@@ -665,9 +640,19 @@ EOF
esac
if [ ${HP_ARCH} = "hppa2.0w" ]
then
- # avoid double evaluation of $set_cc_for_build
- test -n "$CC_FOR_BUILD" || eval $set_cc_for_build
- if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E -) | grep __LP64__ >/dev/null
+ eval $set_cc_for_build
+
+ # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating
+ # 32-bit code. hppa64-hp-hpux* has the same kernel and a compiler
+ # generating 64-bit code. GNU and HP use different nomenclature:
+ #
+ # $ CC_FOR_BUILD=cc ./config.guess
+ # => hppa2.0w-hp-hpux11.23
+ # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess
+ # => hppa64-hp-hpux11.23
+
+ if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) |
+ grep __LP64__ >/dev/null
then
HP_ARCH="hppa2.0w"
else
@@ -675,11 +660,11 @@ EOF
fi
fi
echo ${HP_ARCH}-hp-hpux${HPUX_REV}
- exit 0 ;;
+ exit ;;
ia64:HP-UX:*:*)
HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
echo ia64-hp-hpux${HPUX_REV}
- exit 0 ;;
+ exit ;;
3050*:HI-UX:*:*)
eval $set_cc_for_build
sed 's/^ //' << EOF >$dummy.c
@@ -707,161 +692,171 @@ EOF
exit (0);
}
EOF
- $CC_FOR_BUILD -o $dummy $dummy.c && $dummy && exit 0
+ $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` &&
+ { echo "$SYSTEM_NAME"; exit; }
echo unknown-hitachi-hiuxwe2
- exit 0 ;;
+ exit ;;
9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* )
echo hppa1.1-hp-bsd
- exit 0 ;;
+ exit ;;
9000/8??:4.3bsd:*:*)
echo hppa1.0-hp-bsd
- exit 0 ;;
+ exit ;;
*9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*)
echo hppa1.0-hp-mpeix
- exit 0 ;;
+ exit ;;
hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* )
echo hppa1.1-hp-osf
- exit 0 ;;
+ exit ;;
hp8??:OSF1:*:*)
echo hppa1.0-hp-osf
- exit 0 ;;
+ exit ;;
i*86:OSF1:*:*)
if [ -x /usr/sbin/sysversion ] ; then
echo ${UNAME_MACHINE}-unknown-osf1mk
else
echo ${UNAME_MACHINE}-unknown-osf1
fi
- exit 0 ;;
+ exit ;;
parisc*:Lites*:*:*)
echo hppa1.1-hp-lites
- exit 0 ;;
+ exit ;;
C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*)
echo c1-convex-bsd
- exit 0 ;;
+ exit ;;
C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*)
if getsysinfo -f scalar_acc
then echo c32-convex-bsd
else echo c2-convex-bsd
fi
- exit 0 ;;
+ exit ;;
C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*)
echo c34-convex-bsd
- exit 0 ;;
+ exit ;;
C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*)
echo c38-convex-bsd
- exit 0 ;;
+ exit ;;
C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*)
echo c4-convex-bsd
- exit 0 ;;
+ exit ;;
CRAY*Y-MP:*:*:*)
echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
- exit 0 ;;
+ exit ;;
CRAY*[A-Z]90:*:*:*)
echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \
| sed -e 's/CRAY.*\([A-Z]90\)/\1/' \
-e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \
-e 's/\.[^.]*$/.X/'
- exit 0 ;;
+ exit ;;
CRAY*TS:*:*:*)
echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
- exit 0 ;;
+ exit ;;
CRAY*T3E:*:*:*)
echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
- exit 0 ;;
+ exit ;;
CRAY*SV1:*:*:*)
echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
- exit 0 ;;
+ exit ;;
*:UNICOS/mp:*:*)
echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
- exit 0 ;;
+ exit ;;
F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*)
FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'`
echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
- exit 0 ;;
+ exit ;;
5000:UNIX_System_V:4.*:*)
FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'`
echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
- exit 0 ;;
+ exit ;;
i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*)
echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE}
- exit 0 ;;
+ exit ;;
sparc*:BSD/OS:*:*)
echo sparc-unknown-bsdi${UNAME_RELEASE}
- exit 0 ;;
+ exit ;;
*:BSD/OS:*:*)
echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE}
- exit 0 ;;
+ exit ;;
*:FreeBSD:*:*)
- echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`
- exit 0 ;;
+ case ${UNAME_MACHINE} in
+ pc98)
+ echo i386-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
+ *)
+ echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
+ esac
+ exit ;;
i*:CYGWIN*:*)
echo ${UNAME_MACHINE}-pc-cygwin
- exit 0 ;;
+ exit ;;
i*:MINGW*:*)
echo ${UNAME_MACHINE}-pc-mingw32
- exit 0 ;;
+ exit ;;
+ i*:windows32*:*)
+ # uname -m includes "-pc" on this system.
+ echo ${UNAME_MACHINE}-mingw32
+ exit ;;
i*:PW*:*)
echo ${UNAME_MACHINE}-pc-pw32
- exit 0 ;;
- x86:Interix*:[34]*)
+ exit ;;
+ x86:Interix*:[345]*)
echo i586-pc-interix${UNAME_RELEASE}|sed -e 's/\..*//'
- exit 0 ;;
+ exit ;;
[345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*)
echo i${UNAME_MACHINE}-pc-mks
- exit 0 ;;
+ exit ;;
i*:Windows_NT*:* | Pentium*:Windows_NT*:*)
# How do we know it's Interix rather than the generic POSIX subsystem?
# It also conflicts with pre-2.0 versions of AT&T UWIN. Should we
# UNAME_MACHINE based on the output of uname instead of i386?
echo i586-pc-interix
- exit 0 ;;
+ exit ;;
i*:UWIN*:*)
echo ${UNAME_MACHINE}-pc-uwin
- exit 0 ;;
- amd64:CYGWIN*:*:*)
+ exit ;;
+ amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*)
echo x86_64-unknown-cygwin
- exit 0 ;;
+ exit ;;
p*:CYGWIN*:*)
echo powerpcle-unknown-cygwin
- exit 0 ;;
+ exit ;;
prep*:SunOS:5.*:*)
echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
- exit 0 ;;
+ exit ;;
*:GNU:*:*)
# the GNU system
echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'`
- exit 0 ;;
+ exit ;;
*:GNU/*:*:*)
# other systems with GNU libc and userland
echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-gnu
- exit 0 ;;
+ exit ;;
i*86:Minix:*:*)
echo ${UNAME_MACHINE}-pc-minix
- exit 0 ;;
+ exit ;;
arm*:Linux:*:*)
echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
- exit 0 ;;
+ exit ;;
cris:Linux:*:*)
echo cris-axis-linux-${LIBC}
- exit 0 ;;
+ exit ;;
crisv32:Linux:*:*)
echo crisv32-axis-linux-${LIBC}
- exit 0 ;;
+ exit ;;
frv:Linux:*:*)
echo frv-unknown-linux-${LIBC}
- exit 0 ;;
+ exit ;;
ia64:Linux:*:*)
echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
- exit 0 ;;
+ exit ;;
m32r*:Linux:*:*)
echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
- exit 0 ;;
+ exit ;;
m68*:Linux:*:*)
echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
- exit 0 ;;
+ exit ;;
mips:Linux:*:*)
eval $set_cc_for_build
sed 's/^ //' << EOF >$dummy.c
@@ -878,8 +873,8 @@ EOF
#endif
#endif
EOF
- eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^CPU=`
- test x"${CPU}" != x && echo "${CPU}-unknown-linux-${LIBC}" && exit 0
+ eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n '/^CPU/{s: ::g;p;}'`"
+ test x"${CPU}" != x && { echo "${CPU}-unknown-linux-${LIBC}"; exit; }
;;
mips64:Linux:*:*)
eval $set_cc_for_build
@@ -897,15 +892,18 @@ EOF
#endif
#endif
EOF
- eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^CPU=`
- test x"${CPU}" != x && echo "${CPU}-unknown-linux-${LIBC}" && exit 0
+ eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n '/^CPU/{s: ::g;p;}'`"
+ test x"${CPU}" != x && { echo "${CPU}-unknown-linux-${LIBC}"; exit; }
;;
+ or32:Linux:*:*)
+ echo or32-unknown-linux-${LIBC}
+ exit ;;
ppc:Linux:*:*)
echo powerpc-unknown-linux-${LIBC}
- exit 0 ;;
+ exit ;;
ppc64:Linux:*:*)
echo powerpc64-unknown-linux-${LIBC}
- exit 0 ;;
+ exit ;;
alpha:Linux:*:*)
case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in
EV5) UNAME_MACHINE=alphaev5 ;;
@@ -919,7 +917,7 @@ EOF
objdump --private-headers /bin/sh | grep ld.so.1 >/dev/null
if test "$?" = 0 ; then LIBC="gnulibc1" ; fi
echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
- exit 0 ;;
+ exit ;;
parisc:Linux:*:* | hppa:Linux:*:*)
# Look for CPU level
case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in
@@ -927,25 +925,28 @@ EOF
PA8*) echo hppa2.0-unknown-linux-${LIBC} ;;
*) echo hppa-unknown-linux-${LIBC} ;;
esac
- exit 0 ;;
+ exit ;;
parisc64:Linux:*:* | hppa64:Linux:*:*)
echo hppa64-unknown-linux-${LIBC}
- exit 0 ;;
+ exit ;;
s390:Linux:*:* | s390x:Linux:*:*)
echo ${UNAME_MACHINE}-ibm-linux
- exit 0 ;;
+ exit ;;
sh64*:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
- exit 0 ;;
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+ exit ;;
sh*:Linux:*:*)
echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
- exit 0 ;;
+ exit ;;
sparc:Linux:*:* | sparc64:Linux:*:*)
echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
- exit 0 ;;
+ exit ;;
+ vax:Linux:*:*)
+ echo ${UNAME_MACHINE}-dec-linux-${LIBC}
+ exit ;;
x86_64:Linux:*:*)
echo x86_64-unknown-linux-${LIBC}
- exit 0 ;;
+ exit ;;
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
@@ -963,17 +964,18 @@ EOF
;;
a.out-i386-linux)
echo "${UNAME_MACHINE}-pc-linux-${LIBC}aout"
- exit 0 ;;
+ exit ;;
coff-i386)
echo "${UNAME_MACHINE}-pc-linux-${LIBC}coff"
- exit 0 ;;
+ exit ;;
"")
# Either a pre-BFD a.out linker (linux-gnuoldld) or
# one that does not give us useful --help.
echo "${UNAME_MACHINE}-pc-linux-${LIBC}oldld"
- exit 0 ;;
+ exit ;;
esac
- if [ "`echo $LIBC | sed -e 's:uclibc::'`" != "$LIBC" ] ; then echo "$TENTATIVE" && exit 0 ; fi
+ # This should get integrated into the C code below, but now we hack
+ if [ "$LIBC" != "gnu" ] ; then echo "$TENTATIVE" && exit 0 ; fi
# Determine whether the default compiler is a.out or elf
eval $set_cc_for_build
sed 's/^ //' << EOF >$dummy.c
@@ -989,7 +991,7 @@ EOF
LIBC=gnulibc1
# endif
#else
- #ifdef __INTEL_COMPILER
+ #if defined(__INTEL_COMPILER) || defined(__PGI)
LIBC=gnu
#else
LIBC=gnuaout
@@ -999,16 +1001,19 @@ EOF
LIBC=dietlibc
#endif
EOF
- eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^LIBC=`
- test x"${LIBC}" != x && echo "${UNAME_MACHINE}-pc-linux-${LIBC}" && exit 0
- test x"${TENTATIVE}" != x && echo "${TENTATIVE}" && exit 0
+ eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n '/^LIBC/{s: ::g;p;}'`"
+ test x"${LIBC}" != x && {
+ echo "${UNAME_MACHINE}-pc-linux-${LIBC}"
+ exit
+ }
+ test x"${TENTATIVE}" != x && { echo "${TENTATIVE}"; exit; }
;;
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 ;;
+ exit ;;
i*86:UNIX_SV:4.2MP:2.*)
# Unixware is an offshoot of SVR4, but it has its own version
# number series starting with 2...
@@ -1016,27 +1021,27 @@ EOF
# I just have to hope. -- rms.
# Use sysv4.2uw... so that sysv4* matches it.
echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION}
- exit 0 ;;
+ exit ;;
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 ;;
+ exit ;;
i*86:XTS-300:*:STOP)
echo ${UNAME_MACHINE}-unknown-stop
- exit 0 ;;
+ exit ;;
i*86:atheos:*:*)
echo ${UNAME_MACHINE}-unknown-atheos
- exit 0 ;;
- i*86:syllable:*:*)
+ exit ;;
+ i*86:syllable:*:*)
echo ${UNAME_MACHINE}-pc-syllable
- exit 0 ;;
+ exit ;;
i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.0*:*)
echo i386-unknown-lynxos${UNAME_RELEASE}
- exit 0 ;;
+ exit ;;
i*86:*DOS:*:*)
echo ${UNAME_MACHINE}-pc-msdosdjgpp
- exit 0 ;;
+ exit ;;
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
@@ -1044,15 +1049,16 @@ EOF
else
echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL}
fi
- exit 0 ;;
- i*86:*:5:[78]*)
+ exit ;;
+ i*86:*:5:[678]*)
+ # UnixWare 7.x, OpenUNIX and OpenServer 6.
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 ;;
+ exit ;;
i*86:*:3.2:*)
if test -f /usr/options/cb.name; then
UNAME_REL=`sed -n 's/.*Version //p' </usr/options/cb.name`
@@ -1070,73 +1076,73 @@ EOF
else
echo ${UNAME_MACHINE}-pc-sysv32
fi
- exit 0 ;;
+ exit ;;
pc:*:*:*)
# Left here for compatibility:
# uname -m prints for DJGPP always 'pc', but it prints nothing about
# the processor, so we play safe by assuming i386.
echo i386-pc-msdosdjgpp
- exit 0 ;;
+ exit ;;
Intel:Mach:3*:*)
echo i386-pc-mach3
- exit 0 ;;
+ exit ;;
paragon:*:*:*)
echo i860-intel-osf1
- exit 0 ;;
+ exit ;;
i860:*:4.*:*) # i860-SVR4
if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then
echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4
else # Add other i860-SVR4 vendors below as they are discovered.
echo i860-unknown-sysv${UNAME_RELEASE} # Unknown i860-SVR4
fi
- exit 0 ;;
+ exit ;;
mini*:CTIX:SYS*5:*)
# "miniframe"
echo m68010-convergent-sysv
- exit 0 ;;
+ exit ;;
mc68k:UNIX:SYSTEM5:3.51m)
echo m68k-convergent-sysv
- exit 0 ;;
+ exit ;;
M680?0:D-NIX:5.3:*)
echo m68k-diab-dnix
- exit 0 ;;
+ exit ;;
M68*:*:R3V[5678]*:*)
- test -r /sysV68 && echo 'm68k-motorola-sysv' && exit 0 ;;
+ test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;;
3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0)
OS_REL=''
test -r /etc/.relid \
&& OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid`
/bin/uname -p 2>/dev/null | grep 86 >/dev/null \
- && echo i486-ncr-sysv4.3${OS_REL} && exit 0
+ && { echo i486-ncr-sysv4.3${OS_REL}; exit; }
/bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \
- && echo i586-ncr-sysv4.3${OS_REL} && exit 0 ;;
+ && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;;
3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*)
/bin/uname -p 2>/dev/null | grep 86 >/dev/null \
- && echo i486-ncr-sysv4 && exit 0 ;;
+ && { echo i486-ncr-sysv4; exit; } ;;
m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*)
echo m68k-unknown-lynxos${UNAME_RELEASE}
- exit 0 ;;
+ exit ;;
mc68030:UNIX_System_V:4.*:*)
echo m68k-atari-sysv4
- exit 0 ;;
+ exit ;;
TSUNAMI:LynxOS:2.*:*)
echo sparc-unknown-lynxos${UNAME_RELEASE}
- exit 0 ;;
+ exit ;;
rs6000:LynxOS:2.*:*)
echo rs6000-unknown-lynxos${UNAME_RELEASE}
- exit 0 ;;
+ exit ;;
PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.0*:*)
echo powerpc-unknown-lynxos${UNAME_RELEASE}
- exit 0 ;;
+ exit ;;
SM[BE]S:UNIX_SV:*:*)
echo mips-dde-sysv${UNAME_RELEASE}
- exit 0 ;;
+ exit ;;
RM*:ReliantUNIX-*:*:*)
echo mips-sni-sysv4
- exit 0 ;;
+ exit ;;
RM*:SINIX-*:*:*)
echo mips-sni-sysv4
- exit 0 ;;
+ exit ;;
*:SINIX-*:*:*)
if uname -p 2>/dev/null >/dev/null ; then
UNAME_MACHINE=`(uname -p) 2>/dev/null`
@@ -1144,69 +1150,72 @@ EOF
else
echo ns32k-sni-sysv
fi
- exit 0 ;;
+ exit ;;
PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort
# says <Richard.M.Bartel@ccMail.Census.GOV>
echo i586-unisys-sysv4
- exit 0 ;;
+ exit ;;
*:UNIX_System_V:4*:FTX*)
# From Gerald Hewes <hewes@openmarket.com>.
# How about differentiating between stratus architectures? -djm
echo hppa1.1-stratus-sysv4
- exit 0 ;;
+ exit ;;
*:*:*:FTX*)
# From seanf@swdc.stratus.com.
echo i860-stratus-sysv4
- exit 0 ;;
+ exit ;;
+ i*86:VOS:*:*)
+ # From Paul.Green@stratus.com.
+ echo ${UNAME_MACHINE}-stratus-vos
+ exit ;;
*:VOS:*:*)
# From Paul.Green@stratus.com.
echo hppa1.1-stratus-vos
- exit 0 ;;
+ exit ;;
mc68*:A/UX:*:*)
echo m68k-apple-aux${UNAME_RELEASE}
- exit 0 ;;
+ exit ;;
news*:NEWS-OS:6*:*)
echo mips-sony-newsos6
- exit 0 ;;
+ exit ;;
R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*)
if [ -d /usr/nec ]; then
echo mips-nec-sysv${UNAME_RELEASE}
else
echo mips-unknown-sysv${UNAME_RELEASE}
fi
- exit 0 ;;
+ exit ;;
BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only.
echo powerpc-be-beos
- exit 0 ;;
+ exit ;;
BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only.
echo powerpc-apple-beos
- exit 0 ;;
+ exit ;;
BePC:BeOS:*:*) # BeOS running on Intel PC compatible.
echo i586-pc-beos
- exit 0 ;;
+ exit ;;
SX-4:SUPER-UX:*:*)
echo sx4-nec-superux${UNAME_RELEASE}
- exit 0 ;;
+ exit ;;
SX-5:SUPER-UX:*:*)
echo sx5-nec-superux${UNAME_RELEASE}
- exit 0 ;;
+ exit ;;
SX-6:SUPER-UX:*:*)
echo sx6-nec-superux${UNAME_RELEASE}
- exit 0 ;;
+ exit ;;
Power*:Rhapsody:*:*)
echo powerpc-apple-rhapsody${UNAME_RELEASE}
- exit 0 ;;
+ exit ;;
*:Rhapsody:*:*)
echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE}
- exit 0 ;;
+ exit ;;
*:Darwin:*:*)
UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown
case $UNAME_PROCESSOR in
- *86) UNAME_PROCESSOR=i686 ;;
unknown) UNAME_PROCESSOR=powerpc ;;
esac
echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE}
- exit 0 ;;
+ exit ;;
*:procnto*:*:* | *:QNX:[0123456789]*:*)
UNAME_PROCESSOR=`uname -p`
if test "$UNAME_PROCESSOR" = "x86"; then
@@ -1214,25 +1223,25 @@ EOF
UNAME_MACHINE=pc
fi
echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE}
- exit 0 ;;
+ exit ;;
*:QNX:*:4*)
echo i386-pc-qnx
- exit 0 ;;
+ exit ;;
NSE-?:NONSTOP_KERNEL:*:*)
echo nse-tandem-nsk${UNAME_RELEASE}
- exit 0 ;;
+ exit ;;
NSR-?:NONSTOP_KERNEL:*:*)
echo nsr-tandem-nsk${UNAME_RELEASE}
- exit 0 ;;
+ exit ;;
*:NonStop-UX:*:*)
echo mips-compaq-nonstopux
- exit 0 ;;
+ exit ;;
BS2000:POSIX*:*:*)
echo bs2000-siemens-sysv
- exit 0 ;;
+ exit ;;
DS/*:UNIX_System_V:*:*)
echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE}
- exit 0 ;;
+ exit ;;
*:Plan9:*:*)
# "uname -m" is not consistent, so use $cputype instead. 386
# is converted to i386 for consistency with other x86
@@ -1243,41 +1252,47 @@ EOF
UNAME_MACHINE="$cputype"
fi
echo ${UNAME_MACHINE}-unknown-plan9
- exit 0 ;;
+ exit ;;
*:TOPS-10:*:*)
echo pdp10-unknown-tops10
- exit 0 ;;
+ exit ;;
*:TENEX:*:*)
echo pdp10-unknown-tenex
- exit 0 ;;
+ exit ;;
KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*)
echo pdp10-dec-tops20
- exit 0 ;;
+ exit ;;
XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*)
echo pdp10-xkl-tops20
- exit 0 ;;
+ exit ;;
*:TOPS-20:*:*)
echo pdp10-unknown-tops20
- exit 0 ;;
+ exit ;;
*:ITS:*:*)
echo pdp10-unknown-its
- exit 0 ;;
+ exit ;;
SEI:*:*:SEIUX)
echo mips-sei-seiux${UNAME_RELEASE}
- exit 0 ;;
+ exit ;;
*:DragonFly:*:*)
echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`
- exit 0 ;;
+ exit ;;
*:*VMS:*:*)
UNAME_MACHINE=`(uname -p) 2>/dev/null`
case "${UNAME_MACHINE}" in
- A*) echo alpha-dec-vms && exit 0 ;;
- I*) echo ia64-dec-vms && exit 0 ;;
- V*) echo vax-dec-vms && exit 0 ;;
+ A*) echo alpha-dec-vms ; exit ;;
+ I*) echo ia64-dec-vms ; exit ;;
+ V*) echo vax-dec-vms ; exit ;;
esac ;;
*:XENIX:*:SysV)
echo i386-pc-xenix
- exit 0 ;;
+ exit ;;
+ i*86:skyos:*:*)
+ echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE}` | sed -e 's/ .*$//'
+ exit ;;
+ i*86:rdos:*:*)
+ echo ${UNAME_MACHINE}-pc-rdos
+ exit ;;
esac
#echo '(No uname command or uname output not recognized.)' 1>&2
@@ -1309,7 +1324,7 @@ main ()
#endif
#if defined (__arm) && defined (__acorn) && defined (__unix)
- printf ("arm-acorn-riscix"); exit (0);
+ printf ("arm-acorn-riscix\n"); exit (0);
#endif
#if defined (hp300) && !defined (hpux)
@@ -1398,11 +1413,12 @@ main ()
}
EOF
-$CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && $dummy && exit 0
+$CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && SYSTEM_NAME=`$dummy` &&
+ { echo "$SYSTEM_NAME"; exit; }
# Apollos put the system type in the environment.
-test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit 0; }
+test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit; }
# Convex versions that predate uname can use getsysinfo(1)
@@ -1411,22 +1427,22 @@ then
case `getsysinfo -f cpu_type` in
c1*)
echo c1-convex-bsd
- exit 0 ;;
+ exit ;;
c2*)
if getsysinfo -f scalar_acc
then echo c32-convex-bsd
else echo c2-convex-bsd
fi
- exit 0 ;;
+ exit ;;
c34*)
echo c34-convex-bsd
- exit 0 ;;
+ exit ;;
c38*)
echo c38-convex-bsd
- exit 0 ;;
+ exit ;;
c4*)
echo c4-convex-bsd
- exit 0 ;;
+ exit ;;
esac
fi
diff --git a/config.h.in b/config.h.in
index a6d1451..1d53f23 100644
--- a/config.h.in
+++ b/config.h.in
@@ -1,15 +1,16 @@
-/* On Unix systems config.in is converted by configure into config.h. PCRE is
-written in Standard C, but there are a few non-standard things it can cope
-with, allowing it to run on SunOS4 and other "close to standard" systems.
-
-On a non-Unix system you should just copy this file into config.h, and set up
-the macros the way you need them. You should normally change the definitions of
-HAVE_STRERROR and HAVE_MEMMOVE to 1. Unfortunately, because of the way autoconf
-works, these cannot be made the defaults. If your system has bcopy() and not
-memmove(), change the definition of HAVE_BCOPY instead of HAVE_MEMMOVE. If your
-system has neither bcopy() nor memmove(), leave them both as 0; an emulation
-function will be used. */
+/* On Unix-like systems config.in is converted by "configure" into config.h.
+Some other environments also support the use of "configure". PCRE is written in
+Standard C, but there are a few non-standard things it can cope with, allowing
+it to run on SunOS4 and other "close to standard" systems.
+
+On a non-Unix-like system you should just copy this file into config.h, and set
+up the macros the way you need them. You should normally change the definitions
+of HAVE_STRERROR and HAVE_MEMMOVE to 1. Unfortunately, because of the way
+autoconf works, these cannot be made the defaults. If your system has bcopy()
+and not memmove(), change the definition of HAVE_BCOPY instead of HAVE_MEMMOVE.
+If your system has neither bcopy() nor memmove(), leave them both as 0; an
+emulation function will be used. */
/* If you are compiling for a system that uses EBCDIC instead of ASCII
character codes, define this macro as 1. On systems that can use "configure",
@@ -19,76 +20,70 @@ this can be done via --enable-ebcdic. */
#define EBCDIC 0
#endif
-/* If you are compiling for a system that needs some magic to be inserted
-before the definition of an exported function, define this macro to contain the
-relevant magic. It apears at the start of every exported function. */
+/* If you are compiling for a system other than a Unix-like system or Win32,
+and it needs some magic to be inserted before the definition of a function that
+is exported by the library, define this macro to contain the relevant magic. If
+you do not define this macro, it defaults to "extern" for a C compiler and
+"extern C" for a C++ compiler on non-Win32 systems. This macro apears at the
+start of every exported function that is part of the external API. It does not
+appear on functions that are "external" in the C sense, but which are internal
+to the library. */
-#define PCRE_EXPORT
+/* #define PCRE_DATA_SCOPE */
-/* Define to empty if the "const" keyword does not work. */
+/* Define the following macro to empty if the "const" keyword does not work. */
#undef const
-/* Define to "unsigned" if <stddef.h> doesn't define size_t. */
+/* Define the following macro to "unsigned" if <stddef.h> does not define
+size_t. */
#undef size_t
/* The following two definitions are mainly for the benefit of SunOS4, which
-doesn't have the strerror() or memmove() functions that should be present in
+does not have the strerror() or memmove() functions that should be present in
all Standard C libraries. The macros HAVE_STRERROR and HAVE_MEMMOVE should
normally be defined with the value 1 for other systems, but unfortunately we
-can't make this the default because "configure" files generated by autoconf
+cannot make this the default because "configure" files generated by autoconf
will only change 0 to 1; they won't change 1 to 0 if the functions are not
found. */
#define HAVE_STRERROR 0
#define HAVE_MEMMOVE 0
-/* There are some non-Unix systems that don't even have bcopy(). If this macro
-is false, an emulation is used. If HAVE_MEMMOVE is set to 1, the value of
+/* There are some non-Unix-like systems that don't even have bcopy(). If this
+macro is false, an emulation is used. If HAVE_MEMMOVE is set to 1, the value of
HAVE_BCOPY is not relevant. */
#define HAVE_BCOPY 0
/* The value of NEWLINE determines the newline character. The default is to
leave it up to the compiler, but some sites want to force a particular value.
-On Unix systems, "configure" can be used to override this default. */
+On Unix-like systems, "configure" can be used to override this default. */
#ifndef NEWLINE
#define NEWLINE '\n'
#endif
-/* The value of LINK_SIZE determines the number of bytes used to store
-links as offsets within the compiled regex. The default is 2, which allows for
-compiled patterns up to 64K long. This covers the vast majority of cases.
-However, PCRE can also be compiled to use 3 or 4 bytes instead. This allows for
-longer patterns in extreme cases. On Unix systems, "configure" can be used to
-override this default. */
+/* The value of LINK_SIZE determines the number of bytes used to store links as
+offsets within the compiled regex. The default is 2, which allows for compiled
+patterns up to 64K long. This covers the vast majority of cases. However, PCRE
+can also be compiled to use 3 or 4 bytes instead. This allows for longer
+patterns in extreme cases. On systems that support it, "configure" can be used
+to override this default. */
#ifndef LINK_SIZE
#define LINK_SIZE 2
#endif
-/* The value of MATCH_LIMIT determines the default number of times the match()
-function can be called during a single execution of pcre_exec(). (There is a
-runtime method of setting a different limit.) The limit exists in order to
-catch runaway regular expressions that take for ever to determine that they do
-not match. The default is set very large so that it does not accidentally catch
-legitimate cases. On Unix systems, "configure" can be used to override this
-default default. */
-
-#ifndef MATCH_LIMIT
-#define MATCH_LIMIT 10000000
-#endif
-
/* When calling PCRE via the POSIX interface, additional working storage is
required for holding the pointers to capturing substrings because PCRE requires
three integers per substring, whereas the POSIX interface provides only two. If
the number of expected substrings is small, the wrapper function uses space on
the stack, because this is faster than using malloc() for each call. The
-threshold above which the stack is no longer use is defined by POSIX_MALLOC_
-THRESHOLD. On Unix systems, "configure" can be used to override this default.
-*/
+threshold above which the stack is no longer used is defined by POSIX_MALLOC_
+THRESHOLD. On systems that support it, "configure" can be used to override this
+default. */
#ifndef POSIX_MALLOC_THRESHOLD
#define POSIX_MALLOC_THRESHOLD 10
@@ -97,11 +92,36 @@ THRESHOLD. On Unix systems, "configure" can be used to override this default.
/* PCRE uses recursive function calls to handle backtracking while matching.
This can sometimes be a problem on systems that have stacks of limited size.
Define NO_RECURSE to get a version that doesn't use recursion in the match()
-function; instead it creates its own stack by steam using pcre_recurse_malloc
-to get memory. For more detail, see comments and other stuff just above the
-match() function. On Unix systems, "configure" can be used to set this in the
-Makefile (use --disable-stack-for-recursion). */
+function; instead it creates its own stack by steam using pcre_recurse_malloc()
+to obtain memory from the heap. For more detail, see the comments and other
+stuff just above the match() function. On systems that support it, "configure"
+can be used to set this in the Makefile (use --disable-stack-for-recursion). */
/* #define NO_RECURSE */
+/* The value of MATCH_LIMIT determines the default number of times the internal
+match() function can be called during a single execution of pcre_exec(). There
+is a runtime interface for setting a different limit. The limit exists in order
+to catch runaway regular expressions that take for ever to determine that they
+do not match. The default is set very large so that it does not accidentally
+catch legitimate cases. On systems that support it, "configure" can be used to
+override this default default. */
+
+#ifndef MATCH_LIMIT
+#define MATCH_LIMIT 10000000
+#endif
+
+/* The above limit applies to all calls of match(), whether or not they
+increase the recursion depth. In some environments it is desirable to limit the
+depth of recursive calls of match() more strictly, in order to restrict the
+maximum amount of stack (or heap, if NO_RECURSE is defined) that is used. The
+value of MATCH_LIMIT_RECURSION applies only to recursive calls of match(). To
+have any useful effect, it must be less than the value of MATCH_LIMIT. There is
+a runtime method for setting a different limit. On systems that support it,
+"configure" can be used to override this default default. */
+
+#ifndef MATCH_LIMIT_RECURSION
+#define MATCH_LIMIT_RECURSION MATCH_LIMIT
+#endif
+
/* End */
diff --git a/config.sub b/config.sub
index b93d317..14332b7 100755
--- a/config.sub
+++ b/config.sub
@@ -3,7 +3,7 @@
# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
# 2000, 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
-timestamp='2005-02-10'
+timestamp='2005-12-23'
# This file is (in principle) common to ALL GNU software.
# The presence of a machine in this file suggests that SOME GNU software
@@ -21,14 +21,15 @@ timestamp='2005-02-10'
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place - Suite 330,
-# Boston, MA 02111-1307, USA.
-
+# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA
+# 02110-1301, USA.
+#
# As a special exception to the GNU General Public License, if you
# distribute this file as part of a program that contains a
# configuration script generated by Autoconf, you may include it under
# the same distribution terms that you use for the rest of that program.
+
# Please send patches to <config-patches@gnu.org>. Submit a context
# diff and a properly formatted ChangeLog entry.
#
@@ -83,11 +84,11 @@ Try \`$me --help' for more information."
while test $# -gt 0 ; do
case $1 in
--time-stamp | --time* | -t )
- echo "$timestamp" ; exit 0 ;;
+ echo "$timestamp" ; exit ;;
--version | -v )
- echo "$version" ; exit 0 ;;
+ echo "$version" ; exit ;;
--help | --h* | -h )
- echo "$usage"; exit 0 ;;
+ echo "$usage"; exit ;;
-- ) # Stop option processing
shift; break ;;
- ) # Use stdin as input.
@@ -99,7 +100,7 @@ while test $# -gt 0 ; do
*local*)
# First pass through any local machine types.
echo $1
- exit 0;;
+ exit ;;
* )
break ;;
@@ -118,8 +119,9 @@ esac
# Here we must recognize all the valid KERNEL-OS combinations.
maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'`
case $maybe_os in
- nto-qnx* | linux-gnu* | linux-dietlibc | linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | \
- kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* | storm-chaos* | os2-emx* | rtmk-nova*)
+ nto-qnx* | linux-gnu* | linux-dietlibc | linux-newlib* | linux-uclibc* | \
+ uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* | \
+ storm-chaos* | os2-emx* | rtmk-nova*)
os=-$maybe_os
basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`
;;
@@ -170,6 +172,10 @@ case $os in
-hiux*)
os=-hiuxwe2
;;
+ -sco6)
+ os=-sco5v6
+ basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+ ;;
-sco5)
os=-sco3.2v5
basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
@@ -186,6 +192,10 @@ case $os in
# Don't forget version if it is 3.2v4 or newer.
basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
;;
+ -sco5v6*)
+ # Don't forget version if it is 3.2v4 or newer.
+ basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+ ;;
-sco*)
os=-sco3.2v2
basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
@@ -231,13 +241,14 @@ case $basic_machine in
| alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \
| am33_2.0 \
| arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr \
+ | bfin \
| c4x | clipper \
- | d10v | d30v | dlx | dsp16xx \
+ | d10v | d30v | dlx | dsp16xx | dvp \
| fr30 | frv \
| h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
| i370 | i860 | i960 | ia64 \
| ip2k | iq2000 \
- | m32r | m32rle | m68000 | m68k | m88k | maxq | mcore \
+ | m32r | m32rle | m68000 | m68k | m88k | maxq | mb | microblaze | mcore \
| mips | mipsbe | mipseb | mipsel | mipsle \
| mips16 \
| mips64 | mips64el \
@@ -246,6 +257,7 @@ case $basic_machine in
| mips64vr4100 | mips64vr4100el \
| mips64vr4300 | mips64vr4300el \
| mips64vr5000 | mips64vr5000el \
+ | mips64vr5900 | mips64vr5900el \
| mipsisa32 | mipsisa32el \
| mipsisa32r2 | mipsisa32r2el \
| mipsisa64 | mipsisa64el \
@@ -253,25 +265,29 @@ case $basic_machine in
| mipsisa64sb1 | mipsisa64sb1el \
| mipsisa64sr71k | mipsisa64sr71kel \
| mipstx39 | mipstx39el \
- | mips64r5900 | mips64r5900el \
| mn10200 | mn10300 \
+ | mt \
| msp430 \
| ns16k | ns32k \
- | openrisc | or32 \
+ | or32 \
| pdp10 | pdp11 | pj | pjl \
| powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \
| pyramid \
- | sh | sh[1234] | sh[23]e | sh[34]eb | shbe | shle | sh[1234]le | sh3ele \
+ | sh | sh[1234] | sh[24]a | sh[24]a*eb | sh[23]e | sh[34]eb | shbe | shle | sh[1234]le | sh3ele \
| sh64 | sh64le \
- | sparc | sparc64 | sparc86x | sparclet | sparclite | sparcv8 | sparcv9 | sparcv9b \
+ | sparc | sparc64 | sparc64b | sparc86x | sparclet | sparclite \
+ | sparcv8 | sparcv9 | sparcv9b \
| strongarm \
- | tahoe | dvp | thumb | tic4x | tic80 | tron \
+ | tahoe | thumb | tic4x | tic80 | tron \
| v850 | v850e \
| we32k \
| x86 | xscale | xscalee[bl] | xstormy16 | xtensa \
| z8k)
basic_machine=$basic_machine-unknown
;;
+ m32c)
+ basic_machine=$basic_machine-unknown
+ ;;
m6811 | m68hc11 | m6812 | m68hc12)
# Motorola 68HC11/12.
basic_machine=$basic_machine-unknown
@@ -279,6 +295,13 @@ case $basic_machine in
;;
m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k)
;;
+ ms1)
+ basic_machine=mt-unknown
+ ;;
+ nios2 | nios2-* | nios2 | nios2-*)
+ basic_machine=nios2-altera
+ os=-none
+ ;;
# We use `pc' rather than `unknown'
# because (1) that's what they normally are, and
@@ -299,7 +322,7 @@ case $basic_machine in
| alphapca5[67]-* | alpha64pca5[67]-* | arc-* \
| arm-* | armbe-* | armle-* | armeb-* | armv*-* \
| avr-* \
- | bs2000-* \
+ | bfin-* | bs2000-* \
| c[123]* | c30-* | [cjt]90-* | c4x-* | c54x-* | c55x-* | c6x-* \
| clipper-* | craynv-* | cydra-* \
| d10v-* | d30v-* | dlx-* \
@@ -320,6 +343,7 @@ case $basic_machine in
| mips64vr4100-* | mips64vr4100el-* \
| mips64vr4300-* | mips64vr4300el-* \
| mips64vr5000-* | mips64vr5000el-* \
+ | mips64vr5900-* | mips64vr5900el-* \
| mipsisa32-* | mipsisa32el-* \
| mipsisa32r2-* | mipsisa32r2el-* \
| mipsisa64-* | mipsisa64el-* \
@@ -327,8 +351,8 @@ case $basic_machine in
| mipsisa64sb1-* | mipsisa64sb1el-* \
| mipsisa64sr71k-* | mipsisa64sr71kel-* \
| mipstx39-* | mipstx39el-* \
- | mips64r5900-* | mips64r5900el-* \
| mmix-* \
+ | mt-* \
| msp430-* \
| none-* | np1-* | ns16k-* | ns32k-* \
| orion-* \
@@ -336,9 +360,10 @@ case $basic_machine in
| powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \
| pyramid-* \
| romp-* | rs6000-* \
- | sh-* | sh[1234]-* | sh[23]e-* | sh[34]eb-* | shbe-* \
+ | sh-* | sh[1234]-* | sh[24]a-* | sh[23]e-* | sh[34]eb-* | shbe-* \
| shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \
- | sparc-* | sparc64-* | sparc86x-* | sparclet-* | sparclite-* \
+ | sparc-* | sparc64-* | sparc64b-* | sparc86x-* | sparclet-* \
+ | sparclite-* \
| sparcv8-* | sparcv9-* | sparcv9b-* | strongarm-* | sv1-* | sx?-* \
| tahoe-* | thumb-* \
| tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \
@@ -350,6 +375,8 @@ case $basic_machine in
| ymp-* \
| z8k-*)
;;
+ m32c-*)
+ ;;
# Recognize the various machine names and aliases which stand
# for a CPU type and a company and sometimes even an OS.
386bsd)
@@ -703,6 +730,9 @@ case $basic_machine in
basic_machine=i386-pc
os=-msdos
;;
+ ms1-*)
+ basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'`
+ ;;
mvs)
basic_machine=i370-ibm
os=-mvs
@@ -778,9 +808,8 @@ case $basic_machine in
basic_machine=hppa1.1-oki
os=-proelf
;;
- or32 | or32-*)
+ openrisc | openrisc-*)
basic_machine=or32-unknown
- os=-coff
;;
os400)
basic_machine=powerpc-ibm
@@ -811,6 +840,12 @@ case $basic_machine in
pc532 | pc532-*)
basic_machine=ns32k-pc532
;;
+ pc98)
+ basic_machine=i386-pc
+ ;;
+ pc98-*)
+ basic_machine=i386-`echo $basic_machine | sed 's/^[^-]*-//'`
+ ;;
pentium | p5 | k5 | k6 | nexgen | viac3)
basic_machine=i586-pc
;;
@@ -867,6 +902,10 @@ case $basic_machine in
basic_machine=i586-unknown
os=-pw32
;;
+ rdos)
+ basic_machine=i386-pc
+ os=-rdos
+ ;;
rom68k)
basic_machine=m68k-rom68k
os=-coff
@@ -1106,12 +1145,9 @@ case $basic_machine in
we32k)
basic_machine=we32k-att
;;
- sh3 | sh4 | sh[34]eb | sh[1234]le | sh[23]ele)
+ sh[1234] | sh[24]a | sh[34]eb | sh[1234]le | sh[23]ele)
basic_machine=sh-unknown
;;
- sh64)
- basic_machine=sh64-unknown
- ;;
sparc | sparcv8 | sparcv9 | sparcv9b)
basic_machine=sparc-sun
;;
@@ -1192,13 +1228,15 @@ case $os in
| -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \
| -chorusos* | -chorusrdb* \
| -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
- | -mingw32* | -linux-gnu* | -linux-uclibc* | -uxpv* | -beos* | -mpeix* | -udk* \
+ | -mingw32* | -linux-gnu* | -linux-newlib* | -linux-uclibc* \
+ | -uxpv* | -beos* | -mpeix* | -udk* \
| -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \
| -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \
| -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \
| -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \
| -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \
- | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* | -irx*)
+ | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \
+ | -skyos* | -haiku* | -rdos* | -irx*)
# Remember, each alternative MUST END IN *, to match a version number.
;;
-qnx*)
@@ -1216,7 +1254,7 @@ case $os in
os=`echo $os | sed -e 's|nto|nto-qnx|'`
;;
-sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \
- | -windows* | -osx | -abug | -netware* | -os9* | -beos* \
+ | -windows* | -osx | -abug | -netware* | -os9* | -beos* | -haiku* \
| -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*)
;;
-mac*)
@@ -1405,6 +1443,9 @@ case $basic_machine in
*-be)
os=-beos
;;
+ *-haiku)
+ os=-haiku
+ ;;
*-ibm)
os=-aix
;;
@@ -1576,7 +1617,7 @@ case $basic_machine in
esac
echo $basic_machine$os
-exit 0
+exit
# Local variables:
# eval: (add-hook 'write-file-hooks 'time-stamp)
diff --git a/configure b/configure
index e178aa5..2c68668 100755
--- a/configure
+++ b/configure
@@ -285,8 +285,8 @@ if test "X${echo_test_string+set}" != Xset; then
# find a string as large as possible, as long as the shell can cope with it
for cmd in 'sed 50q "$0"' 'sed 20q "$0"' 'sed 10q "$0"' 'sed 2q "$0"' 'echo test'; do
# expected sizes: less than 2Kb, 1Kb, 512 bytes, 16 bytes, ...
- if (echo_test_string="`eval $cmd`") 2>/dev/null &&
- echo_test_string="`eval $cmd`" &&
+ if (echo_test_string=`eval $cmd`) 2>/dev/null &&
+ echo_test_string=`eval $cmd` &&
(test "X$echo_test_string" = "X$echo_test_string") 2>/dev/null
then
break
@@ -463,7 +463,7 @@ ac_includes_default="\
# include <unistd.h>
#endif"
-ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT CXX CXXFLAGS ac_ct_CXX INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA build build_cpu build_vendor build_os host host_cpu host_vendor host_os EGREP LN_S ECHO AR ac_ct_AR RANLIB ac_ct_RANLIB STRIP ac_ct_STRIP DLLTOOL ac_ct_DLLTOOL AS ac_ct_AS OBJDUMP ac_ct_OBJDUMP CPP CXXCPP F77 FFLAGS ac_ct_F77 LIBTOOL pcre_have_bits_type_traits pcre_have_type_traits MAYBE_CPP_TARGETS HAVE_CPP pcre_have_long_long pcre_have_ulong_long BUILD_EXEEXT BUILD_OBJEXT CC_FOR_BUILD CXX_FOR_BUILD CFLAGS_FOR_BUILD CXXFLAGS_FOR_BUILD EBCDIC HAVE_MEMMOVE HAVE_STRERROR LINK_SIZE MATCH_LIMIT NEWLINE NO_RECURSE PCRE_MAJOR PCRE_MINOR PCRE_DATE PCRE_VERSION PCRE_LIB_VERSION PCRE_POSIXLIB_VERSION PCRE_CPPLIB_VERSION POSIX_MALLOC_THRESHOLD UCP UTF8 WIN_PREFIX ON_WINDOWS NOT_ON_WINDOWS POSIX_OBJ POSIX_LOBJ POSIX_LIB LIBOBJS LTLIBOBJS'
+ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT CXX CXXFLAGS ac_ct_CXX INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA build build_cpu build_vendor build_os host host_cpu host_vendor host_os EGREP LN_S ECHO AR ac_ct_AR RANLIB ac_ct_RANLIB STRIP ac_ct_STRIP DLLTOOL ac_ct_DLLTOOL AS ac_ct_AS OBJDUMP ac_ct_OBJDUMP CPP CXXCPP F77 FFLAGS ac_ct_F77 LIBTOOL pcre_have_bits_type_traits pcre_have_type_traits MAYBE_CPP_TARGETS HAVE_CPP pcre_have_long_long pcre_have_ulong_long BUILD_EXEEXT BUILD_OBJEXT CC_FOR_BUILD CXX_FOR_BUILD CFLAGS_FOR_BUILD CXXFLAGS_FOR_BUILD CXXLDFLAGS EBCDIC HAVE_MEMMOVE HAVE_STRERROR LINK_SIZE MATCH_LIMIT MATCH_LIMIT_RECURSION NEWLINE NO_RECURSE PCRE_LIB_VERSION PCRE_POSIXLIB_VERSION PCRE_CPPLIB_VERSION PCRE_VERSION POSIX_MALLOC_THRESHOLD UCP UTF8 WIN_PREFIX ON_WINDOWS NOT_ON_WINDOWS POSIX_OBJ POSIX_LOBJ POSIX_LIB LIBOBJS LTLIBOBJS'
ac_subst_files=''
# Initialize some variables set by options.
@@ -1041,9 +1041,10 @@ Optional Packages:
both]
--with-tags[=TAGS]
include additional configurations [automatic]
- --with-posix-malloc-threshold=5 threshold for POSIX malloc usage
+ --with-posix-malloc-threshold=10 threshold for POSIX malloc usage
--with-link-size=2 internal link size (2, 3, or 4 allowed)
- --with-match-limit=10000000 default limit on internal looping)
+ --with-match-limit=10000000 default limit on internal looping
+ --with-match-limit-recursion=10000000 default limit on internal recursion
Some influential environment variables:
CC C compiler command
@@ -1505,12 +1506,6 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
-PCRE_MAJOR=6
-PCRE_MINOR=4
-PCRE_DATE=05-Sep-2005
-PCRE_VERSION=${PCRE_MAJOR}.${PCRE_MINOR}
-
-
POSIX_MALLOC_THRESHOLD=-DPOSIX_MALLOC_THRESHOLD=10
@@ -1519,6 +1514,12 @@ PCRE_POSIXLIB_VERSION=0:0:0
PCRE_CPPLIB_VERSION=0:0:0
+PCRE_MAJOR=`grep '#define PCRE_MAJOR' ./pcre.h | cut -c 29-`
+PCRE_MINOR=`grep '#define PCRE_MINOR' ./pcre.h | cut -c 29-`
+PCRE_PRERELEASE=`grep '#define PCRE_PRERELEASE' ./pcre.h | cut -c 29-`
+PCRE_VERSION=${PCRE_MAJOR}.${PCRE_MINOR}${PCRE_PRERELEASE}
+
+
# Check whether --enable-cpp or --disable-cpp was given.
if test "${enable_cpp+set}" = set; then
enableval="$enable_cpp"
@@ -3179,7 +3180,7 @@ else
if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
lt_cv_path_LD="$ac_dir/$ac_prog"
# Check to see if the program is GNU ld. I'd rather use --version,
- # but apparently some GNU ld's only accept -v.
+ # but apparently some variants of GNU ld only accept -v.
# Break only if it was the GNU/non-GNU ld that we prefer.
case `"$lt_cv_path_LD" -v 2>&1 </dev/null` in
*GNU* | *'with BFD'*)
@@ -3213,7 +3214,7 @@ echo $ECHO_N "checking if the linker ($LD) is GNU ld... $ECHO_C" >&6
if test "${lt_cv_prog_gnu_ld+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
- # I'd rather use --version here, but apparently some GNU ld's only accept -v.
+ # I'd rather use --version here, but apparently some GNU lds only accept -v.
case `$LD -v 2>&1 </dev/null` in
*GNU* | *'with BFD'*)
lt_cv_prog_gnu_ld=yes
@@ -3246,7 +3247,7 @@ reload_cmds='$LD$reload_flag -o $output$reload_objs'
case $host_os in
darwin*)
if test "$GCC" = yes; then
- reload_cmds='$CC -nostdlib ${wl}-r -o $output$reload_objs'
+ reload_cmds='$LTCC $LTCFLAGS -nostdlib ${wl}-r -o $output$reload_objs'
else
reload_cmds='$LD$reload_flag -o $output$reload_objs'
fi
@@ -3262,36 +3263,43 @@ else
# Let the user override the test.
lt_cv_path_NM="$NM"
else
- lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
- for ac_dir in $PATH /usr/ccs/bin /usr/ucb /bin; do
- IFS="$lt_save_ifs"
- test -z "$ac_dir" && ac_dir=.
- tmp_nm="$ac_dir/${ac_tool_prefix}nm"
- if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then
- # Check to see if the nm accepts a BSD-compat flag.
- # Adding the `sed 1q' prevents false positives on HP-UX, which says:
- # nm: unknown option "B" ignored
- # Tru64's nm complains that /dev/null is an invalid object file
- case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in
- */dev/null* | *'Invalid file or object type'*)
- lt_cv_path_NM="$tmp_nm -B"
- break
- ;;
- *)
- case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in
- */dev/null*)
- lt_cv_path_NM="$tmp_nm -p"
+ lt_nm_to_check="${ac_tool_prefix}nm"
+ if test -n "$ac_tool_prefix" && test "$build" = "$host"; then
+ lt_nm_to_check="$lt_nm_to_check nm"
+ fi
+ for lt_tmp_nm in $lt_nm_to_check; do
+ lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+ for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do
+ IFS="$lt_save_ifs"
+ test -z "$ac_dir" && ac_dir=.
+ tmp_nm="$ac_dir/$lt_tmp_nm"
+ if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then
+ # Check to see if the nm accepts a BSD-compat flag.
+ # Adding the `sed 1q' prevents false positives on HP-UX, which says:
+ # nm: unknown option "B" ignored
+ # Tru64's nm complains that /dev/null is an invalid object file
+ case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in
+ */dev/null* | *'Invalid file or object type'*)
+ lt_cv_path_NM="$tmp_nm -B"
break
;;
*)
- lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but
- continue # so that we can try to find one that supports BSD flags
+ case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in
+ */dev/null*)
+ lt_cv_path_NM="$tmp_nm -p"
+ break
+ ;;
+ *)
+ lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but
+ continue # so that we can try to find one that supports BSD flags
+ ;;
+ esac
;;
esac
- esac
- fi
+ fi
+ done
+ IFS="$lt_save_ifs"
done
- IFS="$lt_save_ifs"
test -z "$lt_cv_path_NM" && lt_cv_path_NM=nm
fi
fi
@@ -3383,7 +3391,7 @@ gnu*)
hpux10.20* | hpux11*)
lt_cv_file_magic_cmd=/usr/bin/file
- case "$host_cpu" in
+ case $host_cpu in
ia64*)
lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - IA64'
lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so
@@ -3399,6 +3407,11 @@ hpux10.20* | hpux11*)
esac
;;
+interix3*)
+ # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here
+ lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|\.a)$'
+ ;;
+
irix5* | irix6* | nonstopux*)
case $LD in
*-32|*"-32 ") libmagic=32-bit;;
@@ -3444,15 +3457,11 @@ osf3* | osf4* | osf5*)
lt_cv_deplibs_check_method=pass_all
;;
-sco3.2v5*)
- lt_cv_deplibs_check_method=pass_all
- ;;
-
solaris*)
lt_cv_deplibs_check_method=pass_all
;;
-sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
+sysv4 | sysv4.3*)
case $host_vendor in
motorola)
lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib) M[0-9][0-9]* Version [0-9]'
@@ -3473,10 +3482,13 @@ sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
siemens)
lt_cv_deplibs_check_method=pass_all
;;
+ pc)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
esac
;;
-sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[78]* | unixware7* | sysv4*uw2*)
+sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
lt_cv_deplibs_check_method=pass_all
;;
esac
@@ -3494,6 +3506,9 @@ test -z "$deplibs_check_method" && deplibs_check_method=unknown
# If no C compiler was specified, use CC.
LTCC=${LTCC-"$CC"}
+# If no C compiler flags were specified, use CFLAGS.
+LTCFLAGS=${LTCFLAGS-"$CFLAGS"}
+
# Allow CC to be a program name with arguments.
compiler=$CC
@@ -3529,7 +3544,7 @@ ia64-*-hpux*)
;;
*-*-irix6*)
# Find out which ABI we are using.
- echo '#line 3532 "configure"' > conftest.$ac_ext
+ echo '#line 3547 "configure"' > conftest.$ac_ext
if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
@@ -3572,7 +3587,7 @@ x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*|s390*-*linux*|sparc*-*linux*)
ac_status=$?
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); }; then
- case "`/usr/bin/file conftest.o`" in
+ case `/usr/bin/file conftest.o` in
*32-bit*)
case $host in
x86_64-*linux*)
@@ -3610,24 +3625,6 @@ x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*|s390*-*linux*|sparc*-*linux*)
rm -rf conftest*
;;
-*-*-linux*)
- # Test if the compiler is 64bit
- echo 'int i;' > conftest.$ac_ext
- lt_cv_cc_64bit_output=no
- if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; then
- case `/usr/bin/file conftest.$ac_objext` in
- *"ELF 64"*)
- lt_cv_cc_64bit_output=yes
- ;;
- esac
- fi
- rm -rf conftest*
- ;;
-
*-*-sco3.2v5*)
# On SCO OpenServer 5, we need -belf to get full-featured binaries.
SAVE_CFLAGS="$CFLAGS"
@@ -3703,6 +3700,26 @@ echo "${ECHO_T}$lt_cv_cc_needs_belf" >&6
CFLAGS="$SAVE_CFLAGS"
fi
;;
+sparc*-*solaris*)
+ # Find out which ABI we are using.
+ echo 'int i;' > conftest.$ac_ext
+ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; then
+ case `/usr/bin/file conftest.o` in
+ *64-bit*)
+ case $lt_cv_prog_gnu_ld in
+ yes*) LD="${LD-ld} -m elf64_sparc" ;;
+ *) LD="${LD-ld} -64" ;;
+ esac
+ ;;
+ esac
+ fi
+ rm -rf conftest*
+ ;;
+
*-*-cygwin* | *-*-mingw* | *-*-pw32*)
if test -n "$ac_tool_prefix"; then
# Extract the first word of "${ac_tool_prefix}dlltool", so it can be a program name with args.
@@ -4904,7 +4921,7 @@ fi
# Provide some information about the compiler.
-echo "$as_me:4907:" \
+echo "$as_me:4924:" \
"checking for Fortran 77 compiler version" >&5
ac_compiler=`set X $ac_compile; echo $2`
{ (eval echo "$as_me:$LINENO: \"$ac_compiler --version </dev/null >&5\"") >&5
@@ -5101,12 +5118,18 @@ else
elif test -x /usr/sbin/sysctl; then
lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax`
else
- lt_cv_sys_max_cmd_len=65536 # usable default for *BSD
+ lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs
fi
# And add a safety zone
lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4`
lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3`
;;
+
+ interix*)
+ # We know the value 262144 and hardcode it with a safety zone (like BSD)
+ lt_cv_sys_max_cmd_len=196608
+ ;;
+
osf*)
# Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure
# due to this test when exec_disable_arg_limit is 1 on Tru64. It is not
@@ -5120,6 +5143,17 @@ else
esac
fi
;;
+ sco3.2v5*)
+ lt_cv_sys_max_cmd_len=102400
+ ;;
+ sysv5* | sco5v6* | sysv4.2uw2*)
+ kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null`
+ if test -n "$kargmax"; then
+ lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[ ]//'`
+ else
+ lt_cv_sys_max_cmd_len=32768
+ fi
+ ;;
*)
# If test is not a shell built-in, we'll probably end up computing a
# maximum length that is only half of the actual maximum length, but
@@ -5205,9 +5239,18 @@ irix* | nonstopux*)
osf*)
symcode='[BCDEGQRST]'
;;
-solaris* | sysv5*)
+solaris*)
symcode='[BDRT]'
;;
+sco3.2v5*)
+ symcode='[DT]'
+ ;;
+sysv4.2uw2*)
+ symcode='[DT]'
+ ;;
+sysv5* | sco5v6* | unixware* | OpenUNIX*)
+ symcode='[ABDT]'
+ ;;
sysv4)
symcode='[DFNSTU]'
;;
@@ -5416,7 +5459,7 @@ rm="rm -f"
default_ofile=libtool
can_build_shared=yes
-# All known linkers require a `.a' archive for static linking (except M$VC,
+# All known linkers require a `.a' archive for static linking (except MSVC,
# which needs '.lib').
libext=a
ltmain="$ac_aux_dir/ltmain.sh"
@@ -5673,6 +5716,7 @@ test -z "$AR_FLAGS" && AR_FLAGS=cru
test -z "$AS" && AS=as
test -z "$CC" && CC=cc
test -z "$LTCC" && LTCC=$CC
+test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS
test -z "$DLLTOOL" && DLLTOOL=dlltool
test -z "$LD" && LD=ld
test -z "$LN_S" && LN_S="ln -s"
@@ -5692,10 +5736,10 @@ old_postuninstall_cmds=
if test -n "$RANLIB"; then
case $host_os in
openbsd*)
- old_postinstall_cmds="\$RANLIB -t \$oldlib~$old_postinstall_cmds"
+ old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$oldlib"
;;
*)
- old_postinstall_cmds="\$RANLIB \$oldlib~$old_postinstall_cmds"
+ old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$oldlib"
;;
esac
old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib"
@@ -5737,7 +5781,7 @@ else
if test -n "$file_magic_test_file"; then
case $deplibs_check_method in
"file_magic "*)
- file_magic_regex="`expr \"$deplibs_check_method\" : \"file_magic \(.*\)\"`"
+ file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"`
MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null |
$EGREP "$file_magic_regex" > /dev/null; then
@@ -5799,7 +5843,7 @@ else
if test -n "$file_magic_test_file"; then
case $deplibs_check_method in
"file_magic "*)
- file_magic_regex="`expr \"$deplibs_check_method\" : \"file_magic \(.*\)\"`"
+ file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"`
MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null |
$EGREP "$file_magic_regex" > /dev/null; then
@@ -5875,33 +5919,53 @@ test -z "$pic_mode" && pic_mode=default
#
echo "$as_me:$LINENO: checking for correct ltmain.sh version" >&5
echo $ECHO_N "checking for correct ltmain.sh version... $ECHO_C" >&6
-if test -z "$ltmain"; then
+if test "x$ltmain" = "x" ; then
echo "$as_me:$LINENO: result: no" >&5
echo "${ECHO_T}no" >&6
- echo
- echo "*** Gentoo sanity check failed! ***"
- echo "*** \$ltmain is not defined, please check the patch for consistency! ***"
- echo
- exit 1
+ { { echo "$as_me:$LINENO: error:
+
+*** [Gentoo] sanity check failed! ***
+*** \$ltmain is not defined, please check the patch for consistency! ***
+" >&5
+echo "$as_me: error:
+
+*** [Gentoo] sanity check failed! ***
+*** \$ltmain is not defined, please check the patch for consistency! ***
+" >&2;}
+ { (exit 1); exit 1; }; }
fi
-gentoo_lt_version="1.5.18"
-gentoo_ltmain_version=`grep '^[:space:]*VERSION=' $ltmain | sed -e 's|^[:space:]*VERSION=||'`
-if test "$gentoo_lt_version" != "$gentoo_ltmain_version"; then
+gentoo_lt_version="1.5.22"
+gentoo_ltmain_version=`sed -n '/^[ ]*VERSION=/{s/^[ ]*VERSION=//;p;q;}' "$ltmain"`
+if test "x$gentoo_lt_version" != "x$gentoo_ltmain_version" ; then
echo "$as_me:$LINENO: result: no" >&5
echo "${ECHO_T}no" >&6
- echo
- echo "*** Gentoo sanity check failed! ***"
- echo "*** libtool.m4 and ltmain.sh have a version mismatch! ***"
- echo "*** (libtool.m4 = $gentoo_lt_version, ltmain.sh = $gentoo_ltmain_version) ***"
- echo
- echo "Please run:"
- echo
- echo " libtoolize --copy --force"
- echo
- echo "if appropriate, please contact the maintainer of this"
- echo "package (or your distribution) for help."
- echo
- exit 1
+ { { echo "$as_me:$LINENO: error:
+
+*** [Gentoo] sanity check failed! ***
+*** libtool.m4 and ltmain.sh have a version mismatch! ***
+*** (libtool.m4 = $gentoo_lt_version, ltmain.sh = $gentoo_ltmain_version) ***
+
+Please run:
+
+ libtoolize --copy --force
+
+if appropriate, please contact the maintainer of this
+package (or your distribution) for help.
+" >&5
+echo "$as_me: error:
+
+*** [Gentoo] sanity check failed! ***
+*** libtool.m4 and ltmain.sh have a version mismatch! ***
+*** (libtool.m4 = $gentoo_lt_version, ltmain.sh = $gentoo_ltmain_version) ***
+
+Please run:
+
+ libtoolize --copy --force
+
+if appropriate, please contact the maintainer of this
+package (or your distribution) for help.
+" >&2;}
+ { (exit 1); exit 1; }; }
else
echo "$as_me:$LINENO: result: yes" >&5
echo "${ECHO_T}yes" >&6
@@ -5935,6 +5999,9 @@ lt_simple_link_test_code='int main(){return(0);}\n'
# If no C compiler was specified, use CC.
LTCC=${LTCC-"$CC"}
+# If no C compiler flags were specified, use CFLAGS.
+LTCFLAGS=${LTCFLAGS-"$CFLAGS"}
+
# Allow CC to be a program name with arguments.
compiler=$CC
@@ -5942,82 +6009,17 @@ compiler=$CC
# save warnings/boilerplate of simple test code
ac_outfile=conftest.$ac_objext
printf "$lt_simple_compile_test_code" >conftest.$ac_ext
-eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d' >conftest.err
+eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
_lt_compiler_boilerplate=`cat conftest.err`
$rm conftest*
ac_outfile=conftest.$ac_objext
printf "$lt_simple_link_test_code" >conftest.$ac_ext
-eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d' >conftest.err
+eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
_lt_linker_boilerplate=`cat conftest.err`
$rm conftest*
-#
-# Check for any special shared library compilation flags.
-#
-lt_prog_cc_shlib=
-if test "$GCC" = no; then
- case $host_os in
- sco3.2v5*)
- lt_prog_cc_shlib='-belf'
- ;;
- esac
-fi
-if test -n "$lt_prog_cc_shlib"; then
- { echo "$as_me:$LINENO: WARNING: \`$CC' requires \`$lt_prog_cc_shlib' to build shared libraries" >&5
-echo "$as_me: WARNING: \`$CC' requires \`$lt_prog_cc_shlib' to build shared libraries" >&2;}
- if echo "$old_CC $old_CFLAGS " | grep "[ ]$lt_prog_cc_shlib[ ]" >/dev/null; then :
- else
- { echo "$as_me:$LINENO: WARNING: add \`$lt_prog_cc_shlib' to the CC or CFLAGS env variable and reconfigure" >&5
-echo "$as_me: WARNING: add \`$lt_prog_cc_shlib' to the CC or CFLAGS env variable and reconfigure" >&2;}
- lt_cv_prog_cc_can_build_shared=no
- fi
-fi
-
-
-#
-# Check to make sure the static flag actually works.
-#
-echo "$as_me:$LINENO: checking if $compiler static flag $lt_prog_compiler_static works" >&5
-echo $ECHO_N "checking if $compiler static flag $lt_prog_compiler_static works... $ECHO_C" >&6
-if test "${lt_prog_compiler_static_works+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- lt_prog_compiler_static_works=no
- save_LDFLAGS="$LDFLAGS"
- LDFLAGS="$LDFLAGS $lt_prog_compiler_static"
- printf "$lt_simple_link_test_code" > conftest.$ac_ext
- if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then
- # The compiler can only warn and ignore the option if not recognized
- # So say no if there are warnings
- if test -s conftest.err; then
- # Append any errors to the config.log.
- cat conftest.err 1>&5
- $echo "X$_lt_linker_boilerplate" | $Xsed > conftest.exp
- $SED '/^$/d' conftest.err >conftest.er2
- if diff conftest.exp conftest.er2 >/dev/null; then
- lt_prog_compiler_static_works=yes
- fi
- else
- lt_prog_compiler_static_works=yes
- fi
- fi
- $rm conftest*
- LDFLAGS="$save_LDFLAGS"
-
-fi
-echo "$as_me:$LINENO: result: $lt_prog_compiler_static_works" >&5
-echo "${ECHO_T}$lt_prog_compiler_static_works" >&6
-
-if test x"$lt_prog_compiler_static_works" = xyes; then
- :
-else
- lt_prog_compiler_static=
-fi
-
-
-
lt_prog_compiler_no_builtin_flag=
@@ -6040,20 +6042,20 @@ else
# with a dollar sign (not a hyphen), so the echo should work correctly.
# The option is referenced via a variable to avoid confusing sed.
lt_compile=`echo "$ac_compile" | $SED \
- -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \
+ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
- (eval echo "\"\$as_me:6046: $lt_compile\"" >&5)
+ (eval echo "\"\$as_me:6048: $lt_compile\"" >&5)
(eval "$lt_compile" 2>conftest.err)
ac_status=$?
cat conftest.err >&5
- echo "$as_me:6050: \$? = $ac_status" >&5
+ echo "$as_me:6052: \$? = $ac_status" >&5
if (exit $ac_status) && test -s "$ac_outfile"; then
# The compiler can only warn and ignore the option if not recognized
# So say no if there are warnings other than the usual output.
- $echo "X$_lt_compiler_boilerplate" | $Xsed >conftest.exp
- $SED '/^$/d' conftest.err >conftest.er2
- if test ! -s conftest.err || diff conftest.exp conftest.er2 >/dev/null; then
+ $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp
+ $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+ if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then
lt_cv_prog_compiler_rtti_exceptions=yes
fi
fi
@@ -6114,6 +6116,11 @@ echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6
lt_prog_compiler_pic='-fno-common'
;;
+ interix3*)
+ # Interix 3.x gcc -fpic/-fPIC options generate broken code.
+ # Instead, we relocate shared libraries at runtime.
+ ;;
+
msdosdjgpp*)
# Just because we use GCC doesn't mean we suddenly get shared libraries
# on systems that don't support them.
@@ -6130,7 +6137,7 @@ echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6
hpux*)
# PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
# not for PA HP-UX.
- case "$host_cpu" in
+ case $host_cpu in
hppa*64*|ia64*)
# +Z the default
;;
@@ -6177,7 +6184,7 @@ echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6
lt_prog_compiler_wl='-Wl,'
# PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
# not for PA HP-UX.
- case "$host_cpu" in
+ case $host_cpu in
hppa*64*|ia64*)
# +Z the default
;;
@@ -6207,12 +6214,12 @@ echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6
lt_prog_compiler_pic='-KPIC'
lt_prog_compiler_static='-static'
;;
- pgcc* | pgf77* | pgf90*)
+ pgcc* | pgf77* | pgf90* | pgf95*)
# Portland Group compilers (*not* the Pentium gcc compiler,
# which looks to be a dead project)
lt_prog_compiler_wl='-Wl,'
lt_prog_compiler_pic='-fpic'
- lt_prog_compiler_static='-static'
+ lt_prog_compiler_static='-Bstatic'
;;
ccc*)
lt_prog_compiler_wl='-Wl,'
@@ -6228,11 +6235,6 @@ echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6
lt_prog_compiler_static='-non_shared'
;;
- sco3.2v5*)
- lt_prog_compiler_pic='-Kpic'
- lt_prog_compiler_static='-dn'
- ;;
-
solaris*)
lt_prog_compiler_pic='-KPIC'
lt_prog_compiler_static='-Bstatic'
@@ -6250,7 +6252,7 @@ echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6
lt_prog_compiler_static='-Bstatic'
;;
- sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
+ sysv4 | sysv4.2uw2* | sysv4.3*)
lt_prog_compiler_wl='-Wl,'
lt_prog_compiler_pic='-KPIC'
lt_prog_compiler_static='-Bstatic'
@@ -6263,6 +6265,12 @@ echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6
fi
;;
+ sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*)
+ lt_prog_compiler_wl='-Wl,'
+ lt_prog_compiler_pic='-KPIC'
+ lt_prog_compiler_static='-Bstatic'
+ ;;
+
unicos*)
lt_prog_compiler_wl='-Wl,'
lt_prog_compiler_can_build_shared=no
@@ -6302,20 +6310,20 @@ else
# with a dollar sign (not a hyphen), so the echo should work correctly.
# The option is referenced via a variable to avoid confusing sed.
lt_compile=`echo "$ac_compile" | $SED \
- -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \
+ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
- (eval echo "\"\$as_me:6308: $lt_compile\"" >&5)
+ (eval echo "\"\$as_me:6316: $lt_compile\"" >&5)
(eval "$lt_compile" 2>conftest.err)
ac_status=$?
cat conftest.err >&5
- echo "$as_me:6312: \$? = $ac_status" >&5
+ echo "$as_me:6320: \$? = $ac_status" >&5
if (exit $ac_status) && test -s "$ac_outfile"; then
# The compiler can only warn and ignore the option if not recognized
# So say no if there are warnings other than the usual output.
- $echo "X$_lt_compiler_boilerplate" | $Xsed >conftest.exp
- $SED '/^$/d' conftest.err >conftest.er2
- if test ! -s conftest.err || diff conftest.exp conftest.er2 >/dev/null; then
+ $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp
+ $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+ if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then
lt_prog_compiler_pic_works=yes
fi
fi
@@ -6336,7 +6344,7 @@ else
fi
fi
-case "$host_os" in
+case $host_os in
# For platforms which do not support PIC, -DPIC is meaningless:
*djgpp*)
lt_prog_compiler_pic=
@@ -6346,6 +6354,48 @@ case "$host_os" in
;;
esac
+#
+# Check to make sure the static flag actually works.
+#
+wl=$lt_prog_compiler_wl eval lt_tmp_static_flag=\"$lt_prog_compiler_static\"
+echo "$as_me:$LINENO: checking if $compiler static flag $lt_tmp_static_flag works" >&5
+echo $ECHO_N "checking if $compiler static flag $lt_tmp_static_flag works... $ECHO_C" >&6
+if test "${lt_prog_compiler_static_works+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ lt_prog_compiler_static_works=no
+ save_LDFLAGS="$LDFLAGS"
+ LDFLAGS="$LDFLAGS $lt_tmp_static_flag"
+ printf "$lt_simple_link_test_code" > conftest.$ac_ext
+ if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then
+ # The linker can only warn and ignore the option if not recognized
+ # So say no if there are warnings
+ if test -s conftest.err; then
+ # Append any errors to the config.log.
+ cat conftest.err 1>&5
+ $echo "X$_lt_linker_boilerplate" | $Xsed -e '/^$/d' > conftest.exp
+ $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+ if diff conftest.exp conftest.er2 >/dev/null; then
+ lt_prog_compiler_static_works=yes
+ fi
+ else
+ lt_prog_compiler_static_works=yes
+ fi
+ fi
+ $rm conftest*
+ LDFLAGS="$save_LDFLAGS"
+
+fi
+echo "$as_me:$LINENO: result: $lt_prog_compiler_static_works" >&5
+echo "${ECHO_T}$lt_prog_compiler_static_works" >&6
+
+if test x"$lt_prog_compiler_static_works" = xyes; then
+ :
+else
+ lt_prog_compiler_static=
+fi
+
+
echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5
echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6
if test "${lt_cv_prog_compiler_c_o+set}" = set; then
@@ -6364,25 +6414,25 @@ else
# Note that $ac_compile itself does not contain backslashes and begins
# with a dollar sign (not a hyphen), so the echo should work correctly.
lt_compile=`echo "$ac_compile" | $SED \
- -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \
+ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
- (eval echo "\"\$as_me:6370: $lt_compile\"" >&5)
+ (eval echo "\"\$as_me:6420: $lt_compile\"" >&5)
(eval "$lt_compile" 2>out/conftest.err)
ac_status=$?
cat out/conftest.err >&5
- echo "$as_me:6374: \$? = $ac_status" >&5
+ echo "$as_me:6424: \$? = $ac_status" >&5
if (exit $ac_status) && test -s out/conftest2.$ac_objext
then
# The compiler can only warn and ignore the option if not recognized
# So say no if there are warnings
- $echo "X$_lt_compiler_boilerplate" | $Xsed > out/conftest.exp
- $SED '/^$/d' out/conftest.err >out/conftest.er2
- if test ! -s out/conftest.err || diff out/conftest.exp out/conftest.er2 >/dev/null; then
+ $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp
+ $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2
+ if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then
lt_cv_prog_compiler_c_o=yes
fi
fi
- chmod u+w .
+ chmod u+w . 2>&5
$rm conftest*
# SGI C++ compiler will create directory out/ii_files/ for
# template instantiation
@@ -6478,6 +6528,10 @@ cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"`
with_gnu_ld=no
fi
;;
+ interix*)
+ # we just hope/assume this is gcc and not c89 (= MSVC++)
+ with_gnu_ld=yes
+ ;;
openbsd*)
with_gnu_ld=no
;;
@@ -6562,7 +6616,7 @@ EOF
export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS] /s/.* \([^ ]*\)/\1 DATA/'\'' | $SED -e '\''/^[AITW] /s/.* //'\'' | sort | uniq > $export_symbols'
if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then
- archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib'
+ archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
# If the export-symbols file already is a .def file (1st line
# is EXPORTS), use it as is; otherwise, prepend...
archive_expsym_cmds='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
@@ -6571,22 +6625,37 @@ EOF
echo EXPORTS > $output_objdir/$soname.def;
cat $export_symbols >> $output_objdir/$soname.def;
fi~
- $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib'
+ $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
else
ld_shlibs=no
fi
;;
+ interix3*)
+ hardcode_direct=no
+ hardcode_shlibpath_var=no
+ hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
+ export_dynamic_flag_spec='${wl}-E'
+ # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc.
+ # Instead, shared libraries are loaded at an image base (0x10000000 by
+ # default) and relocated if they conflict, which is a slow very memory
+ # consuming and fragmenting process. To avoid this, we pick a random,
+ # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link
+ # time. Moving up from 0x10000000 also allows more sbrk(2) space.
+ archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+ archive_expsym_cmds='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+ ;;
+
linux*)
if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
tmp_addflag=
case $cc_basename,$host_cpu in
pgcc*) # Portland Group C compiler
- whole_archive_flag_spec='${wl}--whole-archive,`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive'
+ whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive'
tmp_addflag=' $pic_flag'
;;
- pgf77* | pgf90* ) # Portland Group f77 and f90 compilers
- whole_archive_flag_spec='${wl}--whole-archive,`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive'
+ pgf77* | pgf90* | pgf95*) # Portland Group f77 and f90 compilers
+ whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive'
tmp_addflag=' $pic_flag -Mnomain' ;;
ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64
tmp_addflag=' -i_dynamic' ;;
@@ -6618,7 +6687,7 @@ EOF
fi
;;
- solaris* | sysv5*)
+ solaris*)
if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then
ld_shlibs=no
cat <<EOF 1>&2
@@ -6639,6 +6708,33 @@ EOF
fi
;;
+ sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*)
+ case `$LD -v 2>&1` in
+ *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*)
+ ld_shlibs=no
+ cat <<_LT_EOF 1>&2
+
+*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not
+*** reliably create shared libraries on SCO systems. Therefore, libtool
+*** is disabling shared libraries support. We urge you to upgrade GNU
+*** binutils to release 2.16.91.0.3 or newer. Another option is to modify
+*** your PATH or compiler configuration so that the native linker is
+*** used, and then restart.
+
+_LT_EOF
+ ;;
+ *)
+ if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+ hardcode_libdir_flag_spec='`test -z "$SCOABSPATH" && echo ${wl}-rpath,$libdir`'
+ archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib'
+ archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname,-retain-symbols-file,$export_symbols -o $lib'
+ else
+ ld_shlibs=no
+ fi
+ ;;
+ esac
+ ;;
+
sunos4*)
archive_cmds='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags'
wlarc=
@@ -6672,7 +6768,7 @@ EOF
# Note: this linker hardcodes the directories in LIBPATH if there
# are no directories specified by -L.
hardcode_minus_L=yes
- if test "$GCC" = yes && test -z "$link_static_flag"; then
+ if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then
# Neither direct hardcoding nor static linking is supported with a
# broken collect2.
hardcode_direct=unsupported
@@ -6706,6 +6802,7 @@ EOF
break
fi
done
+ ;;
esac
exp_sym_flag='-bexport'
@@ -6743,6 +6840,7 @@ EOF
hardcode_libdir_flag_spec='-L$libdir'
hardcode_libdir_separator=
fi
+ ;;
esac
shared_flag='-shared'
if test "$aix_use_runtimelinking" = yes; then
@@ -6755,11 +6853,11 @@ EOF
# chokes on -Wl,-G. The following line is correct:
shared_flag='-G'
else
- if test "$aix_use_runtimelinking" = yes; then
+ if test "$aix_use_runtimelinking" = yes; then
shared_flag='${wl}-G'
else
shared_flag='${wl}-bM:SRE'
- fi
+ fi
fi
fi
@@ -6824,12 +6922,12 @@ rm -f conftest.err conftest.$ac_objext \
if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath"
- archive_expsym_cmds="\$CC"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols $shared_flag"
+ archive_expsym_cmds="\$CC"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag"
else
if test "$host_cpu" = ia64; then
hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib'
allow_undefined_flag="-z nodefs"
- archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols"
+ archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols"
else
# Determine the default libpath from the value encoded in an empty executable.
cat >conftest.$ac_ext <<_ACEOF
@@ -6889,13 +6987,11 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
# -berok will link without error, but may produce a broken library.
no_undefined_flag=' ${wl}-bernotok'
allow_undefined_flag=' ${wl}-berok'
- # -bexpall does not export symbols beginning with underscore (_)
- always_export_symbols=yes
# Exported symbols can be pulled into shared objects from archives
- whole_archive_flag_spec=' '
+ whole_archive_flag_spec='$convenience'
archive_cmds_need_lc=yes
- # This is similar to how AIX traditionally builds it's shared libraries.
- archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}-bE:$export_symbols ${wl}-bnoentry${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
+ # This is similar to how AIX traditionally builds its shared libraries.
+ archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
fi
fi
;;
@@ -6934,7 +7030,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
;;
darwin* | rhapsody*)
- case "$host_os" in
+ case $host_os in
rhapsody* | darwin1.[012])
allow_undefined_flag='${wl}-undefined ${wl}suppress'
;;
@@ -6963,7 +7059,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
output_verbose_link_cmd='echo'
archive_cmds='$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring'
module_cmds='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags'
- # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's
+ # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds
archive_expsym_cmds='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
module_expsym_cmds='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
else
@@ -6972,7 +7068,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
output_verbose_link_cmd='echo'
archive_cmds='$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $verstring'
module_cmds='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags'
- # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's
+ # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds
archive_expsym_cmds='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
module_expsym_cmds='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
;;
@@ -7036,47 +7132,62 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
export_dynamic_flag_spec='${wl}-E'
;;
- hpux10* | hpux11*)
+ hpux10*)
if test "$GCC" = yes -a "$with_gnu_ld" = no; then
- case "$host_cpu" in
- hppa*64*|ia64*)
+ archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+ else
+ archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
+ fi
+ if test "$with_gnu_ld" = no; then
+ hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
+ hardcode_libdir_separator=:
+
+ hardcode_direct=yes
+ export_dynamic_flag_spec='${wl}-E'
+
+ # hardcode_minus_L: Not really in the search PATH,
+ # but as the default location of the library.
+ hardcode_minus_L=yes
+ fi
+ ;;
+
+ hpux11*)
+ if test "$GCC" = yes -a "$with_gnu_ld" = no; then
+ case $host_cpu in
+ hppa*64*)
archive_cmds='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
;;
+ ia64*)
+ archive_cmds='$CC -shared ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
*)
archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
;;
esac
else
- case "$host_cpu" in
- hppa*64*|ia64*)
- archive_cmds='$LD -b +h $soname -o $lib $libobjs $deplibs $linker_flags'
+ case $host_cpu in
+ hppa*64*)
+ archive_cmds='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ ia64*)
+ archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
;;
*)
- archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
+ archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
;;
esac
fi
if test "$with_gnu_ld" = no; then
- case "$host_cpu" in
- hppa*64*)
- hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
+ hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
+ hardcode_libdir_separator=:
+
+ case $host_cpu in
+ hppa*64*|ia64*)
hardcode_libdir_flag_spec_ld='+b $libdir'
- hardcode_libdir_separator=:
- hardcode_direct=no
- hardcode_shlibpath_var=no
- ;;
- ia64*)
- hardcode_libdir_flag_spec='-L$libdir'
hardcode_direct=no
hardcode_shlibpath_var=no
-
- # hardcode_minus_L: Not really in the search PATH,
- # but as the default location of the library.
- hardcode_minus_L=yes
;;
*)
- hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
- hardcode_libdir_separator=:
hardcode_direct=yes
export_dynamic_flag_spec='${wl}-E'
@@ -7178,14 +7289,6 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
hardcode_libdir_separator=:
;;
- sco3.2v5*)
- archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
- hardcode_shlibpath_var=no
- export_dynamic_flag_spec='${wl}-Bexport'
- runpath_var=LD_RUN_PATH
- hardcode_runpath_var=yes
- ;;
-
solaris*)
no_undefined_flag=' -z text'
if test "$GCC" = yes; then
@@ -7271,36 +7374,45 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
fi
;;
- sysv4.2uw2*)
- archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags'
- hardcode_direct=yes
- hardcode_minus_L=no
+ sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7*)
+ no_undefined_flag='${wl}-z,text'
+ archive_cmds_need_lc=no
hardcode_shlibpath_var=no
- hardcode_runpath_var=yes
- runpath_var=LD_RUN_PATH
- ;;
+ runpath_var='LD_RUN_PATH'
- sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[78]* | unixware7*)
- no_undefined_flag='${wl}-z ${wl}text'
if test "$GCC" = yes; then
- archive_cmds='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ archive_cmds='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ archive_expsym_cmds='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
else
- archive_cmds='$CC -G ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ archive_cmds='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ archive_expsym_cmds='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
fi
- runpath_var='LD_RUN_PATH'
- hardcode_shlibpath_var=no
;;
- sysv5*)
- no_undefined_flag=' -z text'
- # $CC -shared without GNU ld will not create a library from C++
- # object files and a static libstdc++, better avoid it by now
- archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
- archive_expsym_cmds='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
- $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp'
- hardcode_libdir_flag_spec=
+ sysv5* | sco3.2v5* | sco5v6*)
+ # Note: We can NOT use -z defs as we might desire, because we do not
+ # link with -lc, and that would cause any symbols used from libc to
+ # always be unresolved, which means just about no library would
+ # ever link correctly. If we're not using GNU ld we use -z text
+ # though, which does catch some bad symbols but isn't as heavy-handed
+ # as -z defs.
+ no_undefined_flag='${wl}-z,text'
+ allow_undefined_flag='${wl}-z,nodefs'
+ archive_cmds_need_lc=no
hardcode_shlibpath_var=no
+ hardcode_libdir_flag_spec='`test -z "$SCOABSPATH" && echo ${wl}-R,$libdir`'
+ hardcode_libdir_separator=':'
+ link_all_deplibs=yes
+ export_dynamic_flag_spec='${wl}-Bexport'
runpath_var='LD_RUN_PATH'
+
+ if test "$GCC" = yes; then
+ archive_cmds='$CC -shared ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ archive_expsym_cmds='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ else
+ archive_cmds='$CC -G ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ archive_expsym_cmds='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ fi
;;
uts4*)
@@ -7319,11 +7431,6 @@ echo "$as_me:$LINENO: result: $ld_shlibs" >&5
echo "${ECHO_T}$ld_shlibs" >&6
test "$ld_shlibs" = no && can_build_shared=no
-variables_saved_for_relink="PATH $shlibpath_var $runpath_var"
-if test "$GCC" = yes; then
- variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
-fi
-
#
# Do we need to explicitly link libc?
#
@@ -7356,6 +7463,7 @@ echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&
libobjs=conftest.$ac_objext
deplibs=
wl=$lt_prog_compiler_wl
+ pic_flag=$lt_prog_compiler_pic
compiler_flags=-v
linker_flags=-v
verstring=
@@ -7516,7 +7624,8 @@ cygwin* | mingw* | pw32*)
dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~
dldir=$destdir/`dirname \$dlpath`~
test -d \$dldir || mkdir -p \$dldir~
- $install_prog $dir/$dlname \$dldir/$dlname'
+ $install_prog $dir/$dlname \$dldir/$dlname~
+ chmod a+x \$dldir/$dlname'
postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
dlpath=$dir/\$dldll~
$rm \$dlpath'
@@ -7593,7 +7702,7 @@ darwin* | rhapsody*)
soname_spec='${libname}${release}${major}$shared_ext'
shlibpath_overrides_runpath=yes
shlibpath_var=DYLD_LIBRARY_PATH
- shrext_cmds='$(test .$module = .yes && echo .so || echo .dylib)'
+ shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`'
# Apple's gcc prints 'gcc -print-search-dirs' doesn't operate the same.
if test "$GCC" = yes; then
sys_lib_search_path_spec=`$CC -print-search-dirs | tr "\n" "$PATH_SEPARATOR" | sed -e 's/libraries:/@libraries:/' | tr "@" "\n" | grep "^libraries:" | sed -e "s/^libraries://" -e "s,=/,/,g" -e "s,$PATH_SEPARATOR, ,g" -e "s,.*,& /lib /usr/lib /usr/local/lib,g"`
@@ -7631,8 +7740,22 @@ kfreebsd*-gnu)
freebsd* | dragonfly*)
# DragonFly does not have aout. When/if they implement a new
# versioning mechanism, adjust this.
- objformat=`test -x /usr/bin/objformat && /usr/bin/objformat || echo aout`
- version_type=freebsd-$objformat
+ if test -x /usr/bin/objformat; then
+ objformat=`/usr/bin/objformat`
+ else
+ case $host_os in
+ freebsd[123]*) objformat=aout ;;
+ *) objformat=elf ;;
+ esac
+ fi
+ # Handle Gentoo/FreeBSD as it was Linux
+ case $host_vendor in
+ gentoo)
+ version_type=linux ;;
+ *)
+ version_type=freebsd-$objformat ;;
+ esac
+
case $version_type in
freebsd-elf*)
library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
@@ -7643,6 +7766,12 @@ freebsd* | dragonfly*)
library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix'
need_version=yes
;;
+ linux)
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ need_lib_prefix=no
+ need_version=no
+ ;;
esac
shlibpath_var=LD_LIBRARY_PATH
case $host_os in
@@ -7653,10 +7782,15 @@ freebsd* | dragonfly*)
shlibpath_overrides_runpath=yes
hardcode_into_libs=yes
;;
- *) # from 3.2 on
+ freebsd3.[2-9]* | freebsdelf3.[2-9]* | \
+ freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1)
shlibpath_overrides_runpath=no
hardcode_into_libs=yes
;;
+ freebsd*) # from 4.6 on
+ shlibpath_overrides_runpath=yes
+ hardcode_into_libs=yes
+ ;;
esac
;;
@@ -7676,7 +7810,7 @@ hpux9* | hpux10* | hpux11*)
version_type=sunos
need_lib_prefix=no
need_version=no
- case "$host_cpu" in
+ case $host_cpu in
ia64*)
shrext_cmds='.so'
hardcode_into_libs=yes
@@ -7716,6 +7850,18 @@ hpux9* | hpux10* | hpux11*)
postinstall_cmds='chmod 555 $lib'
;;
+interix3*)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=no
+ hardcode_into_libs=yes
+ ;;
+
irix5* | irix6* | nonstopux*)
case $host_os in
nonstopux*) version_type=nonstopux ;;
@@ -7779,13 +7925,6 @@ linux*)
sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra"
fi
- case $host_cpu:$lt_cv_cc_64bit_output in
- powerpc64:yes | s390x:yes | sparc64:yes | x86_64:yes)
- sys_lib_dlsearch_path_spec="/lib64 /usr/lib64 /usr/X11R6/lib64"
- sys_lib_search_path_spec="/lib64 /usr/lib64 /usr/local/lib64 /usr/X11R6/lib64"
- ;;
- esac
-
# We used to test for /lib/ld.so.1 and disable shared libraries on
# powerpc, because MkLinux only supported shared libraries with the
# GNU dynamic linker. Since this was broken with cross compilers,
@@ -7793,30 +7932,6 @@ linux*)
# people can always --disable-shared, the test was removed, and we
# assume the GNU/Linux dynamic linker is in use.
dynamic_linker='GNU/Linux ld.so'
-
- # Find out which ABI we are using (multilib Linux x86_64 hack).
- libsuff=
- case "$host_cpu" in
- x86_64*)
- echo '#line 7801 "configure"' > conftest.$ac_ext
- if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; then
- case `/usr/bin/file conftest.$ac_objext` in
- *64-bit*)
- libsuff=64
- ;;
- esac
- fi
- rm -rf conftest*
- ;;
- *)
- ;;
- esac
- sys_lib_dlsearch_path_spec="/lib${libsuff} /usr/lib${libsuff}"
- sys_lib_search_path_spec="/lib${libsuff} /usr/lib${libsuff} /usr/local/lib${libsuff}"
;;
knetbsd*-gnu)
@@ -7868,6 +7983,7 @@ nto-qnx*)
openbsd*)
version_type=sunos
+ sys_lib_dlsearch_path_spec="/usr/lib"
need_lib_prefix=no
# Some older versions of OpenBSD (3.3 at least) *do* need versioned libs.
case $host_os in
@@ -7911,13 +8027,6 @@ osf3* | osf4* | osf5*)
sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec"
;;
-sco3.2v5*)
- version_type=osf
- soname_spec='${libname}${release}${shared_ext}$major'
- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
- shlibpath_var=LD_LIBRARY_PATH
- ;;
-
solaris*)
version_type=linux
need_lib_prefix=no
@@ -7943,7 +8052,7 @@ sunos4*)
need_version=yes
;;
-sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
+sysv4 | sysv4.3*)
version_type=linux
library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
soname_spec='${libname}${release}${shared_ext}$major'
@@ -7976,6 +8085,29 @@ sysv4*MP*)
fi
;;
+sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
+ version_type=freebsd-elf
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ hardcode_into_libs=yes
+ if test "$with_gnu_ld" = yes; then
+ sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib'
+ shlibpath_overrides_runpath=no
+ else
+ sys_lib_search_path_spec='/usr/ccs/lib /usr/lib'
+ shlibpath_overrides_runpath=yes
+ case $host_os in
+ sco3.2v5*)
+ sys_lib_search_path_spec="$sys_lib_search_path_spec /lib"
+ ;;
+ esac
+ fi
+ sys_lib_dlsearch_path_spec='/usr/lib'
+ ;;
+
uts4*)
version_type=linux
library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
@@ -7991,6 +8123,11 @@ echo "$as_me:$LINENO: result: $dynamic_linker" >&5
echo "${ECHO_T}$dynamic_linker" >&6
test "$dynamic_linker" = no && can_build_shared=no
+variables_saved_for_relink="PATH $shlibpath_var $runpath_var"
+if test "$GCC" = yes; then
+ variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
+fi
+
echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5
echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6
hardcode_action=
@@ -8646,7 +8783,7 @@ fi
test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H"
save_LDFLAGS="$LDFLAGS"
- eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\"
+ wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\"
save_LIBS="$LIBS"
LIBS="$lt_cv_dlopen_libs $LIBS"
@@ -8662,7 +8799,7 @@ else
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
lt_status=$lt_dlunknown
cat > conftest.$ac_ext <<EOF
-#line 8665 "configure"
+#line 8802 "configure"
#include "confdefs.h"
#if HAVE_DLFCN_H
@@ -8719,6 +8856,8 @@ int main ()
else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore;
/* dlclose (self); */
}
+ else
+ puts (dlerror ());
exit (status);
}
@@ -8728,12 +8867,12 @@ EOF
ac_status=$?
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then
- (./conftest; exit; ) 2>/dev/null
+ (./conftest; exit; ) >&5 2>/dev/null
lt_status=$?
case x$lt_status in
x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;;
x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;;
- x$lt_unknown|x*) lt_cv_dlopen_self=no ;;
+ x$lt_dlunknown|x*) lt_cv_dlopen_self=no ;;
esac
else :
# compilation failed
@@ -8748,7 +8887,7 @@ echo "$as_me:$LINENO: result: $lt_cv_dlopen_self" >&5
echo "${ECHO_T}$lt_cv_dlopen_self" >&6
if test "x$lt_cv_dlopen_self" = xyes; then
- LDFLAGS="$LDFLAGS $link_static_flag"
+ wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\"
echo "$as_me:$LINENO: checking whether a statically linked program can dlopen itself" >&5
echo $ECHO_N "checking whether a statically linked program can dlopen itself... $ECHO_C" >&6
if test "${lt_cv_dlopen_self_static+set}" = set; then
@@ -8760,7 +8899,7 @@ else
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
lt_status=$lt_dlunknown
cat > conftest.$ac_ext <<EOF
-#line 8763 "configure"
+#line 8902 "configure"
#include "confdefs.h"
#if HAVE_DLFCN_H
@@ -8817,6 +8956,8 @@ int main ()
else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore;
/* dlclose (self); */
}
+ else
+ puts (dlerror ());
exit (status);
}
@@ -8826,12 +8967,12 @@ EOF
ac_status=$?
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then
- (./conftest; exit; ) 2>/dev/null
+ (./conftest; exit; ) >&5 2>/dev/null
lt_status=$?
case x$lt_status in
x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;;
x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;;
- x$lt_unknown|x*) lt_cv_dlopen_self_static=no ;;
+ x$lt_dlunknown|x*) lt_cv_dlopen_self_static=no ;;
esac
else :
# compilation failed
@@ -8864,7 +9005,7 @@ echo "${ECHO_T}$lt_cv_dlopen_self_static" >&6
fi
-# Report which librarie types wil actually be built
+# Report which library types will actually be built
echo "$as_me:$LINENO: checking if libtool supports shared libraries" >&5
echo $ECHO_N "checking if libtool supports shared libraries... $ECHO_C" >&6
echo "$as_me:$LINENO: result: $can_build_shared" >&5
@@ -8876,7 +9017,7 @@ test "$can_build_shared" = "no" && enable_shared=no
# On AIX, shared libraries and static libraries use the same namespace, and
# are all built from PIC.
-case "$host_os" in
+case $host_os in
aix3*)
test "$enable_shared" = yes && enable_static=no
if test -n "$RANLIB"; then
@@ -8914,7 +9055,7 @@ if test -f "$ltmain"; then
# Now quote all the things that may contain metacharacters while being
# careful not to overquote the AC_SUBSTed values. We take copies of the
# variables and quote the copies for generation of the libtool script.
- for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC NM \
+ for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC LTCFLAGS NM \
SED SHELL STRIP \
libname_spec library_names_spec soname_spec extract_expsyms_cmds \
old_striplib striplib file_magic_cmd finish_cmds finish_eval \
@@ -9080,6 +9221,9 @@ AR_FLAGS=$lt_AR_FLAGS
# A C compiler.
LTCC=$lt_LTCC
+# LTCC compiler flags.
+LTCFLAGS=$lt_LTCFLAGS
+
# A language-specific compiler.
CC=$lt_compiler
@@ -9410,6 +9554,9 @@ echo "$as_me: WARNING: output file \`$ofile' does not look like a libtool script
echo "$as_me: WARNING: using \`LTCC=$LTCC', extracted from \`$ofile'" >&2;}
fi
fi
+ if test -z "$LTCFLAGS"; then
+ eval "`$SHELL ${ofile} --config | grep '^LTCFLAGS='`"
+ fi
# Extract list of available tagged configurations in $ofile.
# Note that this assumes the entire list is on one line.
@@ -9462,6 +9609,7 @@ hardcode_libdir_flag_spec_CXX=
hardcode_libdir_flag_spec_ld_CXX=
hardcode_libdir_separator_CXX=
hardcode_minus_L_CXX=no
+hardcode_shlibpath_var_CXX=unsupported
hardcode_automatic_CXX=no
module_cmds_CXX=
module_expsym_cmds_CXX=
@@ -9479,7 +9627,7 @@ postdeps_CXX=
compiler_lib_search_path_CXX=
# Source file extension for C++ test sources.
-ac_ext=cc
+ac_ext=cpp
# Object file extension for compiled C++ test sources.
objext=o
@@ -9489,13 +9637,16 @@ objext_CXX=$objext
lt_simple_compile_test_code="int some_variable = 0;\n"
# Code to be used in simple link tests
-lt_simple_link_test_code='int main(int, char *) { return(0); }\n'
+lt_simple_link_test_code='int main(int, char *[]) { return(0); }\n'
# ltmain only uses $CC for tagged configurations so make sure $CC is set.
# If no C compiler was specified, use CC.
LTCC=${LTCC-"$CC"}
+# If no C compiler flags were specified, use CFLAGS.
+LTCFLAGS=${LTCFLAGS-"$CFLAGS"}
+
# Allow CC to be a program name with arguments.
compiler=$CC
@@ -9503,13 +9654,13 @@ compiler=$CC
# save warnings/boilerplate of simple test code
ac_outfile=conftest.$ac_objext
printf "$lt_simple_compile_test_code" >conftest.$ac_ext
-eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d' >conftest.err
+eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
_lt_compiler_boilerplate=`cat conftest.err`
$rm conftest*
ac_outfile=conftest.$ac_objext
printf "$lt_simple_link_test_code" >conftest.$ac_ext
-eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d' >conftest.err
+eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
_lt_linker_boilerplate=`cat conftest.err`
$rm conftest*
@@ -9524,12 +9675,12 @@ lt_save_path_LD=$lt_cv_path_LD
if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then
lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx
else
- unset lt_cv_prog_gnu_ld
+ $as_unset lt_cv_prog_gnu_ld
fi
if test -n "${lt_cv_path_LDCXX+set}"; then
lt_cv_path_LD=$lt_cv_path_LDCXX
else
- unset lt_cv_path_LD
+ $as_unset lt_cv_path_LD
fi
test -z "${LDCXX+set}" || LD=$LDCXX
CC=${CXX-"c++"}
@@ -9615,7 +9766,7 @@ else
if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
lt_cv_path_LD="$ac_dir/$ac_prog"
# Check to see if the program is GNU ld. I'd rather use --version,
- # but apparently some GNU ld's only accept -v.
+ # but apparently some variants of GNU ld only accept -v.
# Break only if it was the GNU/non-GNU ld that we prefer.
case `"$lt_cv_path_LD" -v 2>&1 </dev/null` in
*GNU* | *'with BFD'*)
@@ -9649,7 +9800,7 @@ echo $ECHO_N "checking if the linker ($LD) is GNU ld... $ECHO_C" >&6
if test "${lt_cv_prog_gnu_ld+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
- # I'd rather use --version here, but apparently some GNU ld's only accept -v.
+ # I'd rather use --version here, but apparently some GNU lds only accept -v.
case `$LD -v 2>&1 </dev/null` in
*GNU* | *'with BFD'*)
lt_cv_prog_gnu_ld=yes
@@ -9740,6 +9891,7 @@ case $host_os in
;;
esac
done
+ ;;
esac
exp_sym_flag='-bexport'
@@ -9777,6 +9929,7 @@ case $host_os in
hardcode_libdir_flag_spec_CXX='-L$libdir'
hardcode_libdir_separator_CXX=
fi
+ ;;
esac
shared_flag='-shared'
if test "$aix_use_runtimelinking" = yes; then
@@ -9859,12 +10012,12 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
hardcode_libdir_flag_spec_CXX='${wl}-blibpath:$libdir:'"$aix_libpath"
- archive_expsym_cmds_CXX="\$CC"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols $shared_flag"
+ archive_expsym_cmds_CXX="\$CC"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag"
else
if test "$host_cpu" = ia64; then
hardcode_libdir_flag_spec_CXX='${wl}-R $libdir:/usr/lib:/lib'
allow_undefined_flag_CXX="-z nodefs"
- archive_expsym_cmds_CXX="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols"
+ archive_expsym_cmds_CXX="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols"
else
# Determine the default libpath from the value encoded in an empty executable.
cat >conftest.$ac_ext <<_ACEOF
@@ -9924,16 +10077,26 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
# -berok will link without error, but may produce a broken library.
no_undefined_flag_CXX=' ${wl}-bernotok'
allow_undefined_flag_CXX=' ${wl}-berok'
- # -bexpall does not export symbols beginning with underscore (_)
- always_export_symbols_CXX=yes
# Exported symbols can be pulled into shared objects from archives
- whole_archive_flag_spec_CXX=' '
+ whole_archive_flag_spec_CXX='$convenience'
archive_cmds_need_lc_CXX=yes
- # This is similar to how AIX traditionally builds it's shared libraries.
- archive_expsym_cmds_CXX="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}-bE:$export_symbols ${wl}-bnoentry${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
+ # This is similar to how AIX traditionally builds its shared libraries.
+ archive_expsym_cmds_CXX="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
fi
fi
;;
+
+ beos*)
+ if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+ allow_undefined_flag_CXX=unsupported
+ # Joseph Beckenbach <jrb3@best.com> says some releases of gcc
+ # support --undefined. This deserves some investigation. FIXME
+ archive_cmds_CXX='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ else
+ ld_shlibs_CXX=no
+ fi
+ ;;
+
chorus*)
case $cc_basename in
*)
@@ -9943,7 +10106,6 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
esac
;;
-
cygwin* | mingw* | pw32*)
# _LT_AC_TAGVAR(hardcode_libdir_flag_spec, CXX) is actually meaningless,
# as there is no search path for DLLs.
@@ -9953,7 +10115,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
enable_shared_with_static_runtimes_CXX=yes
if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then
- archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib'
+ archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
# If the export-symbols file already is a .def file (1st line
# is EXPORTS), use it as is; otherwise, prepend...
archive_expsym_cmds_CXX='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
@@ -9962,13 +10124,13 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
echo EXPORTS > $output_objdir/$soname.def;
cat $export_symbols >> $output_objdir/$soname.def;
fi~
- $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib'
+ $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
else
ld_shlibs_CXX=no
fi
;;
darwin* | rhapsody*)
- case "$host_os" in
+ case $host_os in
rhapsody* | darwin1.[012])
allow_undefined_flag_CXX='${wl}-undefined ${wl}suppress'
;;
@@ -10006,7 +10168,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
archive_cmds_CXX='$CC -r -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring'
fi
module_cmds_CXX='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags'
- # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's
+ # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds
if test "X$lt_int_apple_cc_single_mod" = Xyes ; then
archive_expsym_cmds_CXX='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
else
@@ -10019,7 +10181,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
output_verbose_link_cmd='echo'
archive_cmds_CXX='$CC -qmkshrobj ${wl}-single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $verstring'
module_cmds_CXX='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags'
- # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's
+ # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds
archive_expsym_cmds_CXX='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj ${wl}-single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
module_expsym_cmds_CXX='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
;;
@@ -10099,33 +10261,22 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
;;
hpux10*|hpux11*)
if test $with_gnu_ld = no; then
- case "$host_cpu" in
- hppa*64*)
- hardcode_libdir_flag_spec_CXX='${wl}+b ${wl}$libdir'
+ hardcode_libdir_flag_spec_CXX='${wl}+b ${wl}$libdir'
+ hardcode_libdir_separator_CXX=:
+
+ case $host_cpu in
+ hppa*64*|ia64*)
hardcode_libdir_flag_spec_ld_CXX='+b $libdir'
- hardcode_libdir_separator_CXX=:
- ;;
- ia64*)
- hardcode_libdir_flag_spec_CXX='-L$libdir'
;;
*)
- hardcode_libdir_flag_spec_CXX='${wl}+b ${wl}$libdir'
- hardcode_libdir_separator_CXX=:
export_dynamic_flag_spec_CXX='${wl}-E'
;;
esac
fi
- case "$host_cpu" in
- hppa*64*)
- hardcode_direct_CXX=no
- hardcode_shlibpath_var_CXX=no
- ;;
- ia64*)
+ case $host_cpu in
+ hppa*64*|ia64*)
hardcode_direct_CXX=no
hardcode_shlibpath_var_CXX=no
- hardcode_minus_L_CXX=yes # Not in the search PATH,
- # but as the default
- # location of the library.
;;
*)
hardcode_direct_CXX=yes
@@ -10141,9 +10292,12 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
ld_shlibs_CXX=no
;;
aCC*)
- case "$host_cpu" in
- hppa*64*|ia64*)
- archive_cmds_CXX='$LD -b +h $soname -o $lib $linker_flags $libobjs $deplibs'
+ case $host_cpu in
+ hppa*64*)
+ archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+ ;;
+ ia64*)
+ archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
;;
*)
archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
@@ -10162,9 +10316,12 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
*)
if test "$GXX" = yes; then
if test $with_gnu_ld = no; then
- case "$host_cpu" in
- ia64*|hppa*64*)
- archive_cmds_CXX='$LD -b +h $soname -o $lib $linker_flags $libobjs $deplibs'
+ case $host_cpu in
+ hppa*64*)
+ archive_cmds_CXX='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+ ;;
+ ia64*)
+ archive_cmds_CXX='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
;;
*)
archive_cmds_CXX='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
@@ -10178,6 +10335,20 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
;;
esac
;;
+ interix3*)
+ hardcode_direct_CXX=no
+ hardcode_shlibpath_var_CXX=no
+ hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir'
+ export_dynamic_flag_spec_CXX='${wl}-E'
+ # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc.
+ # Instead, shared libraries are loaded at an image base (0x10000000 by
+ # default) and relocated if they conflict, which is a slow very memory
+ # consuming and fragmenting process. To avoid this, we pick a random,
+ # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link
+ # time. Moving up from 0x10000000 also allows more sbrk(2) space.
+ archive_cmds_CXX='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+ archive_expsym_cmds_CXX='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+ ;;
irix5* | irix6*)
case $cc_basename in
CC*)
@@ -10263,7 +10434,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
hardcode_libdir_flag_spec_CXX='${wl}--rpath ${wl}$libdir'
export_dynamic_flag_spec_CXX='${wl}--export-dynamic'
- whole_archive_flag_spec_CXX='${wl}--whole-archive,`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive'
+ whole_archive_flag_spec_CXX='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive'
;;
cxx*)
# Compaq C++
@@ -10460,19 +10631,6 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
# FIXME: insert proper C++ library support
ld_shlibs_CXX=no
;;
- sco*)
- archive_cmds_need_lc_CXX=no
- case $cc_basename in
- CC*)
- # FIXME: insert proper C++ library support
- ld_shlibs_CXX=no
- ;;
- *)
- # FIXME: insert proper C++ library support
- ld_shlibs_CXX=no
- ;;
- esac
- ;;
sunos4*)
case $cc_basename in
CC*)
@@ -10495,10 +10653,11 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
case $cc_basename in
CC*)
# Sun C++ 4.2, 5.x and Centerline C++
+ archive_cmds_need_lc_CXX=yes
no_undefined_flag_CXX=' -zdefs'
- archive_cmds_CXX='$CC -G${allow_undefined_flag} -nolib -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+ archive_cmds_CXX='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
archive_expsym_cmds_CXX='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
- $CC -G${allow_undefined_flag} -nolib ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp'
+ $CC -G${allow_undefined_flag} ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp'
hardcode_libdir_flag_spec_CXX='-R$libdir'
hardcode_shlibpath_var_CXX=no
@@ -10518,15 +10677,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
esac
link_all_deplibs_CXX=yes
- # Commands to make compiler produce verbose output that lists
- # what "hidden" libraries, object files and flags are used when
- # linking a shared library.
- #
- # There doesn't appear to be a way to prevent this compiler from
- # explicitly linking system object files so we need to strip them
- # from the output so that they don't get included in the library
- # dependencies.
- output_verbose_link_cmd='templist=`$CC -G $CFLAGS -v conftest.$objext 2>&1 | grep "\-[LR]"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
+ output_verbose_link_cmd='echo'
# Archives containing C++ object files must be created using
# "CC -xar", where "CC" is the Sun C++ compiler. This is
@@ -10572,8 +10723,59 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
;;
esac
;;
- sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[78]* | unixware7*)
+ sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*)
+ no_undefined_flag_CXX='${wl}-z,text'
+ archive_cmds_need_lc_CXX=no
+ hardcode_shlibpath_var_CXX=no
+ runpath_var='LD_RUN_PATH'
+
+ case $cc_basename in
+ CC*)
+ archive_cmds_CXX='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ archive_expsym_cmds_CXX='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ *)
+ archive_cmds_CXX='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ archive_expsym_cmds_CXX='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ esac
+ ;;
+ sysv5* | sco3.2v5* | sco5v6*)
+ # Note: We can NOT use -z defs as we might desire, because we do not
+ # link with -lc, and that would cause any symbols used from libc to
+ # always be unresolved, which means just about no library would
+ # ever link correctly. If we're not using GNU ld we use -z text
+ # though, which does catch some bad symbols but isn't as heavy-handed
+ # as -z defs.
+ # For security reasons, it is highly recommended that you always
+ # use absolute paths for naming shared libraries, and exclude the
+ # DT_RUNPATH tag from executables and libraries. But doing so
+ # requires that you compile everything twice, which is a pain.
+ # So that behaviour is only enabled if SCOABSPATH is set to a
+ # non-empty value in the environment. Most likely only useful for
+ # creating official distributions of packages.
+ # This is a hack until libtool officially supports absolute path
+ # names for shared libraries.
+ no_undefined_flag_CXX='${wl}-z,text'
+ allow_undefined_flag_CXX='${wl}-z,nodefs'
archive_cmds_need_lc_CXX=no
+ hardcode_shlibpath_var_CXX=no
+ hardcode_libdir_flag_spec_CXX='`test -z "$SCOABSPATH" && echo ${wl}-R,$libdir`'
+ hardcode_libdir_separator_CXX=':'
+ link_all_deplibs_CXX=yes
+ export_dynamic_flag_spec_CXX='${wl}-Bexport'
+ runpath_var='LD_RUN_PATH'
+
+ case $cc_basename in
+ CC*)
+ archive_cmds_CXX='$CC -G ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ archive_expsym_cmds_CXX='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ *)
+ archive_cmds_CXX='$CC -shared ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ archive_expsym_cmds_CXX='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ esac
;;
tandem*)
case $cc_basename in
@@ -10630,7 +10832,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
# The `*' in the case matches for architectures that use `case' in
# $output_verbose_cmd can trigger glob expansion during the loop
# eval without this substitution.
- output_verbose_link_cmd="`$echo \"X$output_verbose_link_cmd\" | $Xsed -e \"$no_glob_subst\"`"
+ output_verbose_link_cmd=`$echo "X$output_verbose_link_cmd" | $Xsed -e "$no_glob_subst"`
for p in `eval $output_verbose_link_cmd`; do
case $p in
@@ -10706,6 +10908,29 @@ fi
$rm -f confest.$objext
+# PORTME: override above test on systems where it is broken
+case $host_os in
+interix3*)
+ # Interix 3.5 installs completely hosed .la files for C++, so rather than
+ # hack all around it, let's just trust "g++" to DTRT.
+ predep_objects_CXX=
+ postdep_objects_CXX=
+ postdeps_CXX=
+ ;;
+
+solaris*)
+ case $cc_basename in
+ CC*)
+ # Adding this requires a known-good setup of shared libraries for
+ # Sun compiler versions before 5.6, else PIC objects from an old
+ # archive will be linked into the output, leading to subtle bugs.
+ postdeps_CXX='-lCstd -lCrun'
+ ;;
+ esac
+ ;;
+esac
+
+
case " $postdeps_CXX " in
*" -lc "*) archive_cmds_need_lc_CXX=no ;;
esac
@@ -10753,6 +10978,10 @@ echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6
# DJGPP does not support shared libraries at all
lt_prog_compiler_pic_CXX=
;;
+ interix3*)
+ # Interix 3.x gcc -fpic/-fPIC options generate broken code.
+ # Instead, we relocate shared libraries at runtime.
+ ;;
sysv4*MP*)
if test -d /usr/nec; then
lt_prog_compiler_pic_CXX=-Kconform_pic
@@ -10761,7 +10990,7 @@ echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6
hpux*)
# PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
# not for PA HP-UX.
- case "$host_cpu" in
+ case $host_cpu in
hppa*64*|ia64*)
;;
*)
@@ -10822,15 +11051,15 @@ echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6
case $cc_basename in
CC*)
lt_prog_compiler_wl_CXX='-Wl,'
- lt_prog_compiler_static_CXX="${ac_cv_prog_cc_wl}-a ${ac_cv_prog_cc_wl}archive"
+ lt_prog_compiler_static_CXX='${wl}-a ${wl}archive'
if test "$host_cpu" != ia64; then
lt_prog_compiler_pic_CXX='+Z'
fi
;;
aCC*)
lt_prog_compiler_wl_CXX='-Wl,'
- lt_prog_compiler_static_CXX="${ac_cv_prog_cc_wl}-a ${ac_cv_prog_cc_wl}archive"
- case "$host_cpu" in
+ lt_prog_compiler_static_CXX='${wl}-a ${wl}archive'
+ case $host_cpu in
hppa*64*|ia64*)
# +Z the default
;;
@@ -10843,6 +11072,10 @@ echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6
;;
esac
;;
+ interix*)
+ # This is c89, which is MS Visual C++ (no shared libs)
+ # Anyone wants to do a port?
+ ;;
irix5* | irix6* | nonstopux*)
case $cc_basename in
CC*)
@@ -10871,7 +11104,7 @@ echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6
# Portland Group C++ compiler.
lt_prog_compiler_wl_CXX='-Wl,'
lt_prog_compiler_pic_CXX='-fpic'
- lt_prog_compiler_static_CXX='-static'
+ lt_prog_compiler_static_CXX='-Bstatic'
;;
cxx*)
# Compaq C++
@@ -10922,15 +11155,6 @@ echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6
;;
psos*)
;;
- sco*)
- case $cc_basename in
- CC*)
- lt_prog_compiler_pic_CXX='-fPIC'
- ;;
- *)
- ;;
- esac
- ;;
solaris*)
case $cc_basename in
CC*)
@@ -10972,7 +11196,14 @@ echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6
;;
esac
;;
- unixware*)
+ sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*)
+ case $cc_basename in
+ CC*)
+ lt_prog_compiler_wl_CXX='-Wl,'
+ lt_prog_compiler_pic_CXX='-KPIC'
+ lt_prog_compiler_static_CXX='-Bstatic'
+ ;;
+ esac
;;
vxworks*)
;;
@@ -11005,20 +11236,20 @@ else
# with a dollar sign (not a hyphen), so the echo should work correctly.
# The option is referenced via a variable to avoid confusing sed.
lt_compile=`echo "$ac_compile" | $SED \
- -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \
+ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
- (eval echo "\"\$as_me:11011: $lt_compile\"" >&5)
+ (eval echo "\"\$as_me:11242: $lt_compile\"" >&5)
(eval "$lt_compile" 2>conftest.err)
ac_status=$?
cat conftest.err >&5
- echo "$as_me:11015: \$? = $ac_status" >&5
+ echo "$as_me:11246: \$? = $ac_status" >&5
if (exit $ac_status) && test -s "$ac_outfile"; then
# The compiler can only warn and ignore the option if not recognized
# So say no if there are warnings other than the usual output.
- $echo "X$_lt_compiler_boilerplate" | $Xsed >conftest.exp
- $SED '/^$/d' conftest.err >conftest.er2
- if test ! -s conftest.err || diff conftest.exp conftest.er2 >/dev/null; then
+ $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp
+ $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+ if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then
lt_prog_compiler_pic_works_CXX=yes
fi
fi
@@ -11039,7 +11270,7 @@ else
fi
fi
-case "$host_os" in
+case $host_os in
# For platforms which do not support PIC, -DPIC is meaningless:
*djgpp*)
lt_prog_compiler_pic_CXX=
@@ -11049,6 +11280,48 @@ case "$host_os" in
;;
esac
+#
+# Check to make sure the static flag actually works.
+#
+wl=$lt_prog_compiler_wl_CXX eval lt_tmp_static_flag=\"$lt_prog_compiler_static_CXX\"
+echo "$as_me:$LINENO: checking if $compiler static flag $lt_tmp_static_flag works" >&5
+echo $ECHO_N "checking if $compiler static flag $lt_tmp_static_flag works... $ECHO_C" >&6
+if test "${lt_prog_compiler_static_works_CXX+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ lt_prog_compiler_static_works_CXX=no
+ save_LDFLAGS="$LDFLAGS"
+ LDFLAGS="$LDFLAGS $lt_tmp_static_flag"
+ printf "$lt_simple_link_test_code" > conftest.$ac_ext
+ if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then
+ # The linker can only warn and ignore the option if not recognized
+ # So say no if there are warnings
+ if test -s conftest.err; then
+ # Append any errors to the config.log.
+ cat conftest.err 1>&5
+ $echo "X$_lt_linker_boilerplate" | $Xsed -e '/^$/d' > conftest.exp
+ $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+ if diff conftest.exp conftest.er2 >/dev/null; then
+ lt_prog_compiler_static_works_CXX=yes
+ fi
+ else
+ lt_prog_compiler_static_works_CXX=yes
+ fi
+ fi
+ $rm conftest*
+ LDFLAGS="$save_LDFLAGS"
+
+fi
+echo "$as_me:$LINENO: result: $lt_prog_compiler_static_works_CXX" >&5
+echo "${ECHO_T}$lt_prog_compiler_static_works_CXX" >&6
+
+if test x"$lt_prog_compiler_static_works_CXX" = xyes; then
+ :
+else
+ lt_prog_compiler_static_CXX=
+fi
+
+
echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5
echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6
if test "${lt_cv_prog_compiler_c_o_CXX+set}" = set; then
@@ -11067,25 +11340,25 @@ else
# Note that $ac_compile itself does not contain backslashes and begins
# with a dollar sign (not a hyphen), so the echo should work correctly.
lt_compile=`echo "$ac_compile" | $SED \
- -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \
+ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
- (eval echo "\"\$as_me:11073: $lt_compile\"" >&5)
+ (eval echo "\"\$as_me:11346: $lt_compile\"" >&5)
(eval "$lt_compile" 2>out/conftest.err)
ac_status=$?
cat out/conftest.err >&5
- echo "$as_me:11077: \$? = $ac_status" >&5
+ echo "$as_me:11350: \$? = $ac_status" >&5
if (exit $ac_status) && test -s out/conftest2.$ac_objext
then
# The compiler can only warn and ignore the option if not recognized
# So say no if there are warnings
- $echo "X$_lt_compiler_boilerplate" | $Xsed > out/conftest.exp
- $SED '/^$/d' out/conftest.err >out/conftest.er2
- if test ! -s out/conftest.err || diff out/conftest.exp out/conftest.er2 >/dev/null; then
+ $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp
+ $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2
+ if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then
lt_cv_prog_compiler_c_o_CXX=yes
fi
fi
- chmod u+w .
+ chmod u+w . 2>&5
$rm conftest*
# SGI C++ compiler will create directory out/ii_files/ for
# template instantiation
@@ -11151,11 +11424,6 @@ echo "$as_me:$LINENO: result: $ld_shlibs_CXX" >&5
echo "${ECHO_T}$ld_shlibs_CXX" >&6
test "$ld_shlibs_CXX" = no && can_build_shared=no
-variables_saved_for_relink="PATH $shlibpath_var $runpath_var"
-if test "$GCC" = yes; then
- variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
-fi
-
#
# Do we need to explicitly link libc?
#
@@ -11188,6 +11456,7 @@ echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&
libobjs=conftest.$ac_objext
deplibs=
wl=$lt_prog_compiler_wl_CXX
+ pic_flag=$lt_prog_compiler_pic_CXX
compiler_flags=-v
linker_flags=-v
verstring=
@@ -11348,7 +11617,8 @@ cygwin* | mingw* | pw32*)
dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~
dldir=$destdir/`dirname \$dlpath`~
test -d \$dldir || mkdir -p \$dldir~
- $install_prog $dir/$dlname \$dldir/$dlname'
+ $install_prog $dir/$dlname \$dldir/$dlname~
+ chmod a+x \$dldir/$dlname'
postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
dlpath=$dir/\$dldll~
$rm \$dlpath'
@@ -11425,7 +11695,7 @@ darwin* | rhapsody*)
soname_spec='${libname}${release}${major}$shared_ext'
shlibpath_overrides_runpath=yes
shlibpath_var=DYLD_LIBRARY_PATH
- shrext_cmds='$(test .$module = .yes && echo .so || echo .dylib)'
+ shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`'
# Apple's gcc prints 'gcc -print-search-dirs' doesn't operate the same.
if test "$GCC" = yes; then
sys_lib_search_path_spec=`$CC -print-search-dirs | tr "\n" "$PATH_SEPARATOR" | sed -e 's/libraries:/@libraries:/' | tr "@" "\n" | grep "^libraries:" | sed -e "s/^libraries://" -e "s,=/,/,g" -e "s,$PATH_SEPARATOR, ,g" -e "s,.*,& /lib /usr/lib /usr/local/lib,g"`
@@ -11463,8 +11733,22 @@ kfreebsd*-gnu)
freebsd* | dragonfly*)
# DragonFly does not have aout. When/if they implement a new
# versioning mechanism, adjust this.
- objformat=`test -x /usr/bin/objformat && /usr/bin/objformat || echo aout`
- version_type=freebsd-$objformat
+ if test -x /usr/bin/objformat; then
+ objformat=`/usr/bin/objformat`
+ else
+ case $host_os in
+ freebsd[123]*) objformat=aout ;;
+ *) objformat=elf ;;
+ esac
+ fi
+ # Handle Gentoo/FreeBSD as it was Linux
+ case $host_vendor in
+ gentoo)
+ version_type=linux ;;
+ *)
+ version_type=freebsd-$objformat ;;
+ esac
+
case $version_type in
freebsd-elf*)
library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
@@ -11475,6 +11759,12 @@ freebsd* | dragonfly*)
library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix'
need_version=yes
;;
+ linux)
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ need_lib_prefix=no
+ need_version=no
+ ;;
esac
shlibpath_var=LD_LIBRARY_PATH
case $host_os in
@@ -11485,10 +11775,15 @@ freebsd* | dragonfly*)
shlibpath_overrides_runpath=yes
hardcode_into_libs=yes
;;
- *) # from 3.2 on
+ freebsd3.[2-9]* | freebsdelf3.[2-9]* | \
+ freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1)
shlibpath_overrides_runpath=no
hardcode_into_libs=yes
;;
+ freebsd*) # from 4.6 on
+ shlibpath_overrides_runpath=yes
+ hardcode_into_libs=yes
+ ;;
esac
;;
@@ -11508,7 +11803,7 @@ hpux9* | hpux10* | hpux11*)
version_type=sunos
need_lib_prefix=no
need_version=no
- case "$host_cpu" in
+ case $host_cpu in
ia64*)
shrext_cmds='.so'
hardcode_into_libs=yes
@@ -11548,6 +11843,18 @@ hpux9* | hpux10* | hpux11*)
postinstall_cmds='chmod 555 $lib'
;;
+interix3*)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=no
+ hardcode_into_libs=yes
+ ;;
+
irix5* | irix6* | nonstopux*)
case $host_os in
nonstopux*) version_type=nonstopux ;;
@@ -11611,13 +11918,6 @@ linux*)
sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra"
fi
- case $host_cpu:$lt_cv_cc_64bit_output in
- powerpc64:yes | s390x:yes | sparc64:yes | x86_64:yes)
- sys_lib_dlsearch_path_spec="/lib64 /usr/lib64 /usr/X11R6/lib64"
- sys_lib_search_path_spec="/lib64 /usr/lib64 /usr/local/lib64 /usr/X11R6/lib64"
- ;;
- esac
-
# We used to test for /lib/ld.so.1 and disable shared libraries on
# powerpc, because MkLinux only supported shared libraries with the
# GNU dynamic linker. Since this was broken with cross compilers,
@@ -11625,30 +11925,6 @@ linux*)
# people can always --disable-shared, the test was removed, and we
# assume the GNU/Linux dynamic linker is in use.
dynamic_linker='GNU/Linux ld.so'
-
- # Find out which ABI we are using (multilib Linux x86_64 hack).
- libsuff=
- case "$host_cpu" in
- x86_64*)
- echo '#line 11633 "configure"' > conftest.$ac_ext
- if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; then
- case `/usr/bin/file conftest.$ac_objext` in
- *64-bit*)
- libsuff=64
- ;;
- esac
- fi
- rm -rf conftest*
- ;;
- *)
- ;;
- esac
- sys_lib_dlsearch_path_spec="/lib${libsuff} /usr/lib${libsuff}"
- sys_lib_search_path_spec="/lib${libsuff} /usr/lib${libsuff} /usr/local/lib${libsuff}"
;;
knetbsd*-gnu)
@@ -11700,6 +11976,7 @@ nto-qnx*)
openbsd*)
version_type=sunos
+ sys_lib_dlsearch_path_spec="/usr/lib"
need_lib_prefix=no
# Some older versions of OpenBSD (3.3 at least) *do* need versioned libs.
case $host_os in
@@ -11743,13 +12020,6 @@ osf3* | osf4* | osf5*)
sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec"
;;
-sco3.2v5*)
- version_type=osf
- soname_spec='${libname}${release}${shared_ext}$major'
- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
- shlibpath_var=LD_LIBRARY_PATH
- ;;
-
solaris*)
version_type=linux
need_lib_prefix=no
@@ -11775,7 +12045,7 @@ sunos4*)
need_version=yes
;;
-sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
+sysv4 | sysv4.3*)
version_type=linux
library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
soname_spec='${libname}${release}${shared_ext}$major'
@@ -11808,6 +12078,29 @@ sysv4*MP*)
fi
;;
+sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
+ version_type=freebsd-elf
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ hardcode_into_libs=yes
+ if test "$with_gnu_ld" = yes; then
+ sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib'
+ shlibpath_overrides_runpath=no
+ else
+ sys_lib_search_path_spec='/usr/ccs/lib /usr/lib'
+ shlibpath_overrides_runpath=yes
+ case $host_os in
+ sco3.2v5*)
+ sys_lib_search_path_spec="$sys_lib_search_path_spec /lib"
+ ;;
+ esac
+ fi
+ sys_lib_dlsearch_path_spec='/usr/lib'
+ ;;
+
uts4*)
version_type=linux
library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
@@ -11823,6 +12116,11 @@ echo "$as_me:$LINENO: result: $dynamic_linker" >&5
echo "${ECHO_T}$dynamic_linker" >&6
test "$dynamic_linker" = no && can_build_shared=no
+variables_saved_for_relink="PATH $shlibpath_var $runpath_var"
+if test "$GCC" = yes; then
+ variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
+fi
+
echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5
echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6
hardcode_action_CXX=
@@ -11860,841 +12158,6 @@ elif test "$shlibpath_overrides_runpath" = yes ||
enable_fast_install=needless
fi
-striplib=
-old_striplib=
-echo "$as_me:$LINENO: checking whether stripping libraries is possible" >&5
-echo $ECHO_N "checking whether stripping libraries is possible... $ECHO_C" >&6
-if test -n "$STRIP" && $STRIP -V 2>&1 | grep "GNU strip" >/dev/null; then
- test -z "$old_striplib" && old_striplib="$STRIP --strip-debug"
- test -z "$striplib" && striplib="$STRIP --strip-unneeded"
- echo "$as_me:$LINENO: result: yes" >&5
-echo "${ECHO_T}yes" >&6
-else
-# FIXME - insert some real tests, host_os isn't really good enough
- case $host_os in
- darwin*)
- if test -n "$STRIP" ; then
- striplib="$STRIP -x"
- echo "$as_me:$LINENO: result: yes" >&5
-echo "${ECHO_T}yes" >&6
- else
- echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6
-fi
- ;;
- *)
- echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6
- ;;
- esac
-fi
-
-if test "x$enable_dlopen" != xyes; then
- enable_dlopen=unknown
- enable_dlopen_self=unknown
- enable_dlopen_self_static=unknown
-else
- lt_cv_dlopen=no
- lt_cv_dlopen_libs=
-
- case $host_os in
- beos*)
- lt_cv_dlopen="load_add_on"
- lt_cv_dlopen_libs=
- lt_cv_dlopen_self=yes
- ;;
-
- mingw* | pw32*)
- lt_cv_dlopen="LoadLibrary"
- lt_cv_dlopen_libs=
- ;;
-
- cygwin*)
- lt_cv_dlopen="dlopen"
- lt_cv_dlopen_libs=
- ;;
-
- darwin*)
- # if libdl is installed we need to link against it
- echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5
-echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6
-if test "${ac_cv_lib_dl_dlopen+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- ac_check_lib_save_LIBS=$LIBS
-LIBS="-ldl $LIBS"
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-
-/* Override any gcc2 internal prototype to avoid an error. */
-#ifdef __cplusplus
-extern "C"
-#endif
-/* We use char because int might match the return type of a gcc2
- builtin and then its argument prototype would still apply. */
-char dlopen ();
-int
-main ()
-{
-dlopen ();
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
- (eval $ac_link) 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_cxx_werror_flag"
- || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_cv_lib_dl_dlopen=yes
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_cv_lib_dl_dlopen=no
-fi
-rm -f conftest.err conftest.$ac_objext \
- conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5
-echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6
-if test $ac_cv_lib_dl_dlopen = yes; then
- lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"
-else
-
- lt_cv_dlopen="dyld"
- lt_cv_dlopen_libs=
- lt_cv_dlopen_self=yes
-
-fi
-
- ;;
-
- *)
- echo "$as_me:$LINENO: checking for shl_load" >&5
-echo $ECHO_N "checking for shl_load... $ECHO_C" >&6
-if test "${ac_cv_func_shl_load+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-/* Define shl_load to an innocuous variant, in case <limits.h> declares shl_load.
- For example, HP-UX 11i <limits.h> declares gettimeofday. */
-#define shl_load innocuous_shl_load
-
-/* System header to define __stub macros and hopefully few prototypes,
- which can conflict with char shl_load (); below.
- Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
- <limits.h> exists even on freestanding compilers. */
-
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
-
-#undef shl_load
-
-/* Override any gcc2 internal prototype to avoid an error. */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
- builtin and then its argument prototype would still apply. */
-char shl_load ();
-/* The GNU C library defines this for functions which it implements
- to always fail with ENOSYS. Some functions are actually named
- something starting with __ and the normal name is an alias. */
-#if defined (__stub_shl_load) || defined (__stub___shl_load)
-choke me
-#else
-char (*f) () = shl_load;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != shl_load;
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
- (eval $ac_link) 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_cxx_werror_flag"
- || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_cv_func_shl_load=yes
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_cv_func_shl_load=no
-fi
-rm -f conftest.err conftest.$ac_objext \
- conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: $ac_cv_func_shl_load" >&5
-echo "${ECHO_T}$ac_cv_func_shl_load" >&6
-if test $ac_cv_func_shl_load = yes; then
- lt_cv_dlopen="shl_load"
-else
- echo "$as_me:$LINENO: checking for shl_load in -ldld" >&5
-echo $ECHO_N "checking for shl_load in -ldld... $ECHO_C" >&6
-if test "${ac_cv_lib_dld_shl_load+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- ac_check_lib_save_LIBS=$LIBS
-LIBS="-ldld $LIBS"
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-
-/* Override any gcc2 internal prototype to avoid an error. */
-#ifdef __cplusplus
-extern "C"
-#endif
-/* We use char because int might match the return type of a gcc2
- builtin and then its argument prototype would still apply. */
-char shl_load ();
-int
-main ()
-{
-shl_load ();
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
- (eval $ac_link) 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_cxx_werror_flag"
- || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_cv_lib_dld_shl_load=yes
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_cv_lib_dld_shl_load=no
-fi
-rm -f conftest.err conftest.$ac_objext \
- conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-echo "$as_me:$LINENO: result: $ac_cv_lib_dld_shl_load" >&5
-echo "${ECHO_T}$ac_cv_lib_dld_shl_load" >&6
-if test $ac_cv_lib_dld_shl_load = yes; then
- lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-dld"
-else
- echo "$as_me:$LINENO: checking for dlopen" >&5
-echo $ECHO_N "checking for dlopen... $ECHO_C" >&6
-if test "${ac_cv_func_dlopen+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-/* Define dlopen to an innocuous variant, in case <limits.h> declares dlopen.
- For example, HP-UX 11i <limits.h> declares gettimeofday. */
-#define dlopen innocuous_dlopen
-
-/* System header to define __stub macros and hopefully few prototypes,
- which can conflict with char dlopen (); below.
- Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
- <limits.h> exists even on freestanding compilers. */
-
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
-
-#undef dlopen
-
-/* Override any gcc2 internal prototype to avoid an error. */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
- builtin and then its argument prototype would still apply. */
-char dlopen ();
-/* The GNU C library defines this for functions which it implements
- to always fail with ENOSYS. Some functions are actually named
- something starting with __ and the normal name is an alias. */
-#if defined (__stub_dlopen) || defined (__stub___dlopen)
-choke me
-#else
-char (*f) () = dlopen;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != dlopen;
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
- (eval $ac_link) 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_cxx_werror_flag"
- || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_cv_func_dlopen=yes
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_cv_func_dlopen=no
-fi
-rm -f conftest.err conftest.$ac_objext \
- conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: $ac_cv_func_dlopen" >&5
-echo "${ECHO_T}$ac_cv_func_dlopen" >&6
-if test $ac_cv_func_dlopen = yes; then
- lt_cv_dlopen="dlopen"
-else
- echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5
-echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6
-if test "${ac_cv_lib_dl_dlopen+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- ac_check_lib_save_LIBS=$LIBS
-LIBS="-ldl $LIBS"
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-
-/* Override any gcc2 internal prototype to avoid an error. */
-#ifdef __cplusplus
-extern "C"
-#endif
-/* We use char because int might match the return type of a gcc2
- builtin and then its argument prototype would still apply. */
-char dlopen ();
-int
-main ()
-{
-dlopen ();
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
- (eval $ac_link) 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_cxx_werror_flag"
- || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_cv_lib_dl_dlopen=yes
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_cv_lib_dl_dlopen=no
-fi
-rm -f conftest.err conftest.$ac_objext \
- conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5
-echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6
-if test $ac_cv_lib_dl_dlopen = yes; then
- lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"
-else
- echo "$as_me:$LINENO: checking for dlopen in -lsvld" >&5
-echo $ECHO_N "checking for dlopen in -lsvld... $ECHO_C" >&6
-if test "${ac_cv_lib_svld_dlopen+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- ac_check_lib_save_LIBS=$LIBS
-LIBS="-lsvld $LIBS"
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-
-/* Override any gcc2 internal prototype to avoid an error. */
-#ifdef __cplusplus
-extern "C"
-#endif
-/* We use char because int might match the return type of a gcc2
- builtin and then its argument prototype would still apply. */
-char dlopen ();
-int
-main ()
-{
-dlopen ();
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
- (eval $ac_link) 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_cxx_werror_flag"
- || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_cv_lib_svld_dlopen=yes
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_cv_lib_svld_dlopen=no
-fi
-rm -f conftest.err conftest.$ac_objext \
- conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-echo "$as_me:$LINENO: result: $ac_cv_lib_svld_dlopen" >&5
-echo "${ECHO_T}$ac_cv_lib_svld_dlopen" >&6
-if test $ac_cv_lib_svld_dlopen = yes; then
- lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"
-else
- echo "$as_me:$LINENO: checking for dld_link in -ldld" >&5
-echo $ECHO_N "checking for dld_link in -ldld... $ECHO_C" >&6
-if test "${ac_cv_lib_dld_dld_link+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- ac_check_lib_save_LIBS=$LIBS
-LIBS="-ldld $LIBS"
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-
-/* Override any gcc2 internal prototype to avoid an error. */
-#ifdef __cplusplus
-extern "C"
-#endif
-/* We use char because int might match the return type of a gcc2
- builtin and then its argument prototype would still apply. */
-char dld_link ();
-int
-main ()
-{
-dld_link ();
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
- (eval $ac_link) 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_cxx_werror_flag"
- || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_cv_lib_dld_dld_link=yes
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_cv_lib_dld_dld_link=no
-fi
-rm -f conftest.err conftest.$ac_objext \
- conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-echo "$as_me:$LINENO: result: $ac_cv_lib_dld_dld_link" >&5
-echo "${ECHO_T}$ac_cv_lib_dld_dld_link" >&6
-if test $ac_cv_lib_dld_dld_link = yes; then
- lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld"
-fi
-
-
-fi
-
-
-fi
-
-
-fi
-
-
-fi
-
-
-fi
-
- ;;
- esac
-
- if test "x$lt_cv_dlopen" != xno; then
- enable_dlopen=yes
- else
- enable_dlopen=no
- fi
-
- case $lt_cv_dlopen in
- dlopen)
- save_CPPFLAGS="$CPPFLAGS"
- test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H"
-
- save_LDFLAGS="$LDFLAGS"
- eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\"
-
- save_LIBS="$LIBS"
- LIBS="$lt_cv_dlopen_libs $LIBS"
-
- echo "$as_me:$LINENO: checking whether a program can dlopen itself" >&5
-echo $ECHO_N "checking whether a program can dlopen itself... $ECHO_C" >&6
-if test "${lt_cv_dlopen_self+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- if test "$cross_compiling" = yes; then :
- lt_cv_dlopen_self=cross
-else
- lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
- lt_status=$lt_dlunknown
- cat > conftest.$ac_ext <<EOF
-#line 12497 "configure"
-#include "confdefs.h"
-
-#if HAVE_DLFCN_H
-#include <dlfcn.h>
-#endif
-
-#include <stdio.h>
-
-#ifdef RTLD_GLOBAL
-# define LT_DLGLOBAL RTLD_GLOBAL
-#else
-# ifdef DL_GLOBAL
-# define LT_DLGLOBAL DL_GLOBAL
-# else
-# define LT_DLGLOBAL 0
-# endif
-#endif
-
-/* We may have to define LT_DLLAZY_OR_NOW in the command line if we
- find out it does not work in some platform. */
-#ifndef LT_DLLAZY_OR_NOW
-# ifdef RTLD_LAZY
-# define LT_DLLAZY_OR_NOW RTLD_LAZY
-# else
-# ifdef DL_LAZY
-# define LT_DLLAZY_OR_NOW DL_LAZY
-# else
-# ifdef RTLD_NOW
-# define LT_DLLAZY_OR_NOW RTLD_NOW
-# else
-# ifdef DL_NOW
-# define LT_DLLAZY_OR_NOW DL_NOW
-# else
-# define LT_DLLAZY_OR_NOW 0
-# endif
-# endif
-# endif
-# endif
-#endif
-
-#ifdef __cplusplus
-extern "C" void exit (int);
-#endif
-
-void fnord() { int i=42;}
-int main ()
-{
- void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
- int status = $lt_dlunknown;
-
- if (self)
- {
- if (dlsym (self,"fnord")) status = $lt_dlno_uscore;
- else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore;
- /* dlclose (self); */
- }
-
- exit (status);
-}
-EOF
- if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then
- (./conftest; exit; ) 2>/dev/null
- lt_status=$?
- case x$lt_status in
- x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;;
- x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;;
- x$lt_unknown|x*) lt_cv_dlopen_self=no ;;
- esac
- else :
- # compilation failed
- lt_cv_dlopen_self=no
- fi
-fi
-rm -fr conftest*
-
-
-fi
-echo "$as_me:$LINENO: result: $lt_cv_dlopen_self" >&5
-echo "${ECHO_T}$lt_cv_dlopen_self" >&6
-
- if test "x$lt_cv_dlopen_self" = xyes; then
- LDFLAGS="$LDFLAGS $link_static_flag"
- echo "$as_me:$LINENO: checking whether a statically linked program can dlopen itself" >&5
-echo $ECHO_N "checking whether a statically linked program can dlopen itself... $ECHO_C" >&6
-if test "${lt_cv_dlopen_self_static+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- if test "$cross_compiling" = yes; then :
- lt_cv_dlopen_self_static=cross
-else
- lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
- lt_status=$lt_dlunknown
- cat > conftest.$ac_ext <<EOF
-#line 12595 "configure"
-#include "confdefs.h"
-
-#if HAVE_DLFCN_H
-#include <dlfcn.h>
-#endif
-
-#include <stdio.h>
-
-#ifdef RTLD_GLOBAL
-# define LT_DLGLOBAL RTLD_GLOBAL
-#else
-# ifdef DL_GLOBAL
-# define LT_DLGLOBAL DL_GLOBAL
-# else
-# define LT_DLGLOBAL 0
-# endif
-#endif
-
-/* We may have to define LT_DLLAZY_OR_NOW in the command line if we
- find out it does not work in some platform. */
-#ifndef LT_DLLAZY_OR_NOW
-# ifdef RTLD_LAZY
-# define LT_DLLAZY_OR_NOW RTLD_LAZY
-# else
-# ifdef DL_LAZY
-# define LT_DLLAZY_OR_NOW DL_LAZY
-# else
-# ifdef RTLD_NOW
-# define LT_DLLAZY_OR_NOW RTLD_NOW
-# else
-# ifdef DL_NOW
-# define LT_DLLAZY_OR_NOW DL_NOW
-# else
-# define LT_DLLAZY_OR_NOW 0
-# endif
-# endif
-# endif
-# endif
-#endif
-
-#ifdef __cplusplus
-extern "C" void exit (int);
-#endif
-
-void fnord() { int i=42;}
-int main ()
-{
- void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
- int status = $lt_dlunknown;
-
- if (self)
- {
- if (dlsym (self,"fnord")) status = $lt_dlno_uscore;
- else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore;
- /* dlclose (self); */
- }
-
- exit (status);
-}
-EOF
- if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then
- (./conftest; exit; ) 2>/dev/null
- lt_status=$?
- case x$lt_status in
- x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;;
- x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;;
- x$lt_unknown|x*) lt_cv_dlopen_self_static=no ;;
- esac
- else :
- # compilation failed
- lt_cv_dlopen_self_static=no
- fi
-fi
-rm -fr conftest*
-
-
-fi
-echo "$as_me:$LINENO: result: $lt_cv_dlopen_self_static" >&5
-echo "${ECHO_T}$lt_cv_dlopen_self_static" >&6
- fi
-
- CPPFLAGS="$save_CPPFLAGS"
- LDFLAGS="$save_LDFLAGS"
- LIBS="$save_LIBS"
- ;;
- esac
-
- case $lt_cv_dlopen_self in
- yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;;
- *) enable_dlopen_self=unknown ;;
- esac
-
- case $lt_cv_dlopen_self_static in
- yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;;
- *) enable_dlopen_self_static=unknown ;;
- esac
-fi
-
# The else clause should only fire when bootstrapping the
# libtool distribution, otherwise you forgot to ship ltmain.sh
@@ -12709,7 +12172,7 @@ if test -f "$ltmain"; then
# Now quote all the things that may contain metacharacters while being
# careful not to overquote the AC_SUBSTed values. We take copies of the
# variables and quote the copies for generation of the libtool script.
- for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC NM \
+ for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC LTCFLAGS NM \
SED SHELL STRIP \
libname_spec library_names_spec soname_spec extract_expsyms_cmds \
old_striplib striplib file_magic_cmd finish_cmds finish_eval \
@@ -12827,6 +12290,9 @@ AR_FLAGS=$lt_AR_FLAGS
# A C compiler.
LTCC=$lt_LTCC
+# LTCC compiler flags.
+LTCFLAGS=$lt_LTCFLAGS
+
# A language-specific compiler.
CC=$lt_compiler_CXX
@@ -13169,6 +12635,9 @@ lt_simple_link_test_code=" program t\n end\n"
# If no C compiler was specified, use CC.
LTCC=${LTCC-"$CC"}
+# If no C compiler flags were specified, use CFLAGS.
+LTCFLAGS=${LTCFLAGS-"$CFLAGS"}
+
# Allow CC to be a program name with arguments.
compiler=$CC
@@ -13176,13 +12645,13 @@ compiler=$CC
# save warnings/boilerplate of simple test code
ac_outfile=conftest.$ac_objext
printf "$lt_simple_compile_test_code" >conftest.$ac_ext
-eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d' >conftest.err
+eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
_lt_compiler_boilerplate=`cat conftest.err`
$rm conftest*
ac_outfile=conftest.$ac_objext
printf "$lt_simple_link_test_code" >conftest.$ac_ext
-eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d' >conftest.err
+eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
_lt_linker_boilerplate=`cat conftest.err`
$rm conftest*
@@ -13214,7 +12683,7 @@ test "$can_build_shared" = "no" && enable_shared=no
# On AIX, shared libraries and static libraries use the same namespace, and
# are all built from PIC.
-case "$host_os" in
+case $host_os in
aix3*)
test "$enable_shared" = yes && enable_static=no
if test -n "$RANLIB"; then
@@ -13238,8 +12707,6 @@ test "$enable_shared" = yes || enable_static=yes
echo "$as_me:$LINENO: result: $enable_static" >&5
echo "${ECHO_T}$enable_static" >&6
-test "$ld_shlibs_F77" = no && can_build_shared=no
-
GCC_F77="$G77"
LD_F77="$LD"
@@ -13286,6 +12753,11 @@ echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6
lt_prog_compiler_pic_F77='-fno-common'
;;
+ interix3*)
+ # Interix 3.x gcc -fpic/-fPIC options generate broken code.
+ # Instead, we relocate shared libraries at runtime.
+ ;;
+
msdosdjgpp*)
# Just because we use GCC doesn't mean we suddenly get shared libraries
# on systems that don't support them.
@@ -13302,7 +12774,7 @@ echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6
hpux*)
# PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
# not for PA HP-UX.
- case "$host_cpu" in
+ case $host_cpu in
hppa*64*|ia64*)
# +Z the default
;;
@@ -13349,7 +12821,7 @@ echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6
lt_prog_compiler_wl_F77='-Wl,'
# PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
# not for PA HP-UX.
- case "$host_cpu" in
+ case $host_cpu in
hppa*64*|ia64*)
# +Z the default
;;
@@ -13379,12 +12851,12 @@ echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6
lt_prog_compiler_pic_F77='-KPIC'
lt_prog_compiler_static_F77='-static'
;;
- pgcc* | pgf77* | pgf90*)
+ pgcc* | pgf77* | pgf90* | pgf95*)
# Portland Group compilers (*not* the Pentium gcc compiler,
# which looks to be a dead project)
lt_prog_compiler_wl_F77='-Wl,'
lt_prog_compiler_pic_F77='-fpic'
- lt_prog_compiler_static_F77='-static'
+ lt_prog_compiler_static_F77='-Bstatic'
;;
ccc*)
lt_prog_compiler_wl_F77='-Wl,'
@@ -13400,11 +12872,6 @@ echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6
lt_prog_compiler_static_F77='-non_shared'
;;
- sco3.2v5*)
- lt_prog_compiler_pic_F77='-Kpic'
- lt_prog_compiler_static_F77='-dn'
- ;;
-
solaris*)
lt_prog_compiler_pic_F77='-KPIC'
lt_prog_compiler_static_F77='-Bstatic'
@@ -13422,7 +12889,7 @@ echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6
lt_prog_compiler_static_F77='-Bstatic'
;;
- sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
+ sysv4 | sysv4.2uw2* | sysv4.3*)
lt_prog_compiler_wl_F77='-Wl,'
lt_prog_compiler_pic_F77='-KPIC'
lt_prog_compiler_static_F77='-Bstatic'
@@ -13435,6 +12902,12 @@ echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6
fi
;;
+ sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*)
+ lt_prog_compiler_wl_F77='-Wl,'
+ lt_prog_compiler_pic_F77='-KPIC'
+ lt_prog_compiler_static_F77='-Bstatic'
+ ;;
+
unicos*)
lt_prog_compiler_wl_F77='-Wl,'
lt_prog_compiler_can_build_shared_F77=no
@@ -13474,20 +12947,20 @@ else
# with a dollar sign (not a hyphen), so the echo should work correctly.
# The option is referenced via a variable to avoid confusing sed.
lt_compile=`echo "$ac_compile" | $SED \
- -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \
+ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
- (eval echo "\"\$as_me:13480: $lt_compile\"" >&5)
+ (eval echo "\"\$as_me:12953: $lt_compile\"" >&5)
(eval "$lt_compile" 2>conftest.err)
ac_status=$?
cat conftest.err >&5
- echo "$as_me:13484: \$? = $ac_status" >&5
+ echo "$as_me:12957: \$? = $ac_status" >&5
if (exit $ac_status) && test -s "$ac_outfile"; then
# The compiler can only warn and ignore the option if not recognized
# So say no if there are warnings other than the usual output.
- $echo "X$_lt_compiler_boilerplate" | $Xsed >conftest.exp
- $SED '/^$/d' conftest.err >conftest.er2
- if test ! -s conftest.err || diff conftest.exp conftest.er2 >/dev/null; then
+ $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp
+ $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+ if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then
lt_prog_compiler_pic_works_F77=yes
fi
fi
@@ -13508,7 +12981,7 @@ else
fi
fi
-case "$host_os" in
+case $host_os in
# For platforms which do not support PIC, -DPIC is meaningless:
*djgpp*)
lt_prog_compiler_pic_F77=
@@ -13518,6 +12991,48 @@ case "$host_os" in
;;
esac
+#
+# Check to make sure the static flag actually works.
+#
+wl=$lt_prog_compiler_wl_F77 eval lt_tmp_static_flag=\"$lt_prog_compiler_static_F77\"
+echo "$as_me:$LINENO: checking if $compiler static flag $lt_tmp_static_flag works" >&5
+echo $ECHO_N "checking if $compiler static flag $lt_tmp_static_flag works... $ECHO_C" >&6
+if test "${lt_prog_compiler_static_works_F77+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ lt_prog_compiler_static_works_F77=no
+ save_LDFLAGS="$LDFLAGS"
+ LDFLAGS="$LDFLAGS $lt_tmp_static_flag"
+ printf "$lt_simple_link_test_code" > conftest.$ac_ext
+ if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then
+ # The linker can only warn and ignore the option if not recognized
+ # So say no if there are warnings
+ if test -s conftest.err; then
+ # Append any errors to the config.log.
+ cat conftest.err 1>&5
+ $echo "X$_lt_linker_boilerplate" | $Xsed -e '/^$/d' > conftest.exp
+ $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+ if diff conftest.exp conftest.er2 >/dev/null; then
+ lt_prog_compiler_static_works_F77=yes
+ fi
+ else
+ lt_prog_compiler_static_works_F77=yes
+ fi
+ fi
+ $rm conftest*
+ LDFLAGS="$save_LDFLAGS"
+
+fi
+echo "$as_me:$LINENO: result: $lt_prog_compiler_static_works_F77" >&5
+echo "${ECHO_T}$lt_prog_compiler_static_works_F77" >&6
+
+if test x"$lt_prog_compiler_static_works_F77" = xyes; then
+ :
+else
+ lt_prog_compiler_static_F77=
+fi
+
+
echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5
echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6
if test "${lt_cv_prog_compiler_c_o_F77+set}" = set; then
@@ -13536,25 +13051,25 @@ else
# Note that $ac_compile itself does not contain backslashes and begins
# with a dollar sign (not a hyphen), so the echo should work correctly.
lt_compile=`echo "$ac_compile" | $SED \
- -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \
+ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
- (eval echo "\"\$as_me:13542: $lt_compile\"" >&5)
+ (eval echo "\"\$as_me:13057: $lt_compile\"" >&5)
(eval "$lt_compile" 2>out/conftest.err)
ac_status=$?
cat out/conftest.err >&5
- echo "$as_me:13546: \$? = $ac_status" >&5
+ echo "$as_me:13061: \$? = $ac_status" >&5
if (exit $ac_status) && test -s out/conftest2.$ac_objext
then
# The compiler can only warn and ignore the option if not recognized
# So say no if there are warnings
- $echo "X$_lt_compiler_boilerplate" | $Xsed > out/conftest.exp
- $SED '/^$/d' out/conftest.err >out/conftest.er2
- if test ! -s out/conftest.err || diff out/conftest.exp out/conftest.er2 >/dev/null; then
+ $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp
+ $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2
+ if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then
lt_cv_prog_compiler_c_o_F77=yes
fi
fi
- chmod u+w .
+ chmod u+w . 2>&5
$rm conftest*
# SGI C++ compiler will create directory out/ii_files/ for
# template instantiation
@@ -13650,6 +13165,10 @@ cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"`
with_gnu_ld=no
fi
;;
+ interix*)
+ # we just hope/assume this is gcc and not c89 (= MSVC++)
+ with_gnu_ld=yes
+ ;;
openbsd*)
with_gnu_ld=no
;;
@@ -13734,7 +13253,7 @@ EOF
export_symbols_cmds_F77='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS] /s/.* \([^ ]*\)/\1 DATA/'\'' | $SED -e '\''/^[AITW] /s/.* //'\'' | sort | uniq > $export_symbols'
if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then
- archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib'
+ archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
# If the export-symbols file already is a .def file (1st line
# is EXPORTS), use it as is; otherwise, prepend...
archive_expsym_cmds_F77='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
@@ -13743,22 +13262,37 @@ EOF
echo EXPORTS > $output_objdir/$soname.def;
cat $export_symbols >> $output_objdir/$soname.def;
fi~
- $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib'
+ $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
else
ld_shlibs_F77=no
fi
;;
+ interix3*)
+ hardcode_direct_F77=no
+ hardcode_shlibpath_var_F77=no
+ hardcode_libdir_flag_spec_F77='${wl}-rpath,$libdir'
+ export_dynamic_flag_spec_F77='${wl}-E'
+ # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc.
+ # Instead, shared libraries are loaded at an image base (0x10000000 by
+ # default) and relocated if they conflict, which is a slow very memory
+ # consuming and fragmenting process. To avoid this, we pick a random,
+ # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link
+ # time. Moving up from 0x10000000 also allows more sbrk(2) space.
+ archive_cmds_F77='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+ archive_expsym_cmds_F77='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+ ;;
+
linux*)
if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
tmp_addflag=
case $cc_basename,$host_cpu in
pgcc*) # Portland Group C compiler
- whole_archive_flag_spec_F77='${wl}--whole-archive,`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive'
+ whole_archive_flag_spec_F77='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive'
tmp_addflag=' $pic_flag'
;;
- pgf77* | pgf90* ) # Portland Group f77 and f90 compilers
- whole_archive_flag_spec_F77='${wl}--whole-archive,`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive'
+ pgf77* | pgf90* | pgf95*) # Portland Group f77 and f90 compilers
+ whole_archive_flag_spec_F77='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive'
tmp_addflag=' $pic_flag -Mnomain' ;;
ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64
tmp_addflag=' -i_dynamic' ;;
@@ -13790,7 +13324,7 @@ EOF
fi
;;
- solaris* | sysv5*)
+ solaris*)
if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then
ld_shlibs_F77=no
cat <<EOF 1>&2
@@ -13811,6 +13345,33 @@ EOF
fi
;;
+ sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*)
+ case `$LD -v 2>&1` in
+ *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*)
+ ld_shlibs_F77=no
+ cat <<_LT_EOF 1>&2
+
+*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not
+*** reliably create shared libraries on SCO systems. Therefore, libtool
+*** is disabling shared libraries support. We urge you to upgrade GNU
+*** binutils to release 2.16.91.0.3 or newer. Another option is to modify
+*** your PATH or compiler configuration so that the native linker is
+*** used, and then restart.
+
+_LT_EOF
+ ;;
+ *)
+ if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+ hardcode_libdir_flag_spec_F77='`test -z "$SCOABSPATH" && echo ${wl}-rpath,$libdir`'
+ archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib'
+ archive_expsym_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname,-retain-symbols-file,$export_symbols -o $lib'
+ else
+ ld_shlibs_F77=no
+ fi
+ ;;
+ esac
+ ;;
+
sunos4*)
archive_cmds_F77='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags'
wlarc=
@@ -13844,7 +13405,7 @@ EOF
# Note: this linker hardcodes the directories in LIBPATH if there
# are no directories specified by -L.
hardcode_minus_L_F77=yes
- if test "$GCC" = yes && test -z "$link_static_flag"; then
+ if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then
# Neither direct hardcoding nor static linking is supported with a
# broken collect2.
hardcode_direct_F77=unsupported
@@ -13878,6 +13439,7 @@ EOF
break
fi
done
+ ;;
esac
exp_sym_flag='-bexport'
@@ -13915,6 +13477,7 @@ EOF
hardcode_libdir_flag_spec_F77='-L$libdir'
hardcode_libdir_separator_F77=
fi
+ ;;
esac
shared_flag='-shared'
if test "$aix_use_runtimelinking" = yes; then
@@ -13927,11 +13490,11 @@ EOF
# chokes on -Wl,-G. The following line is correct:
shared_flag='-G'
else
- if test "$aix_use_runtimelinking" = yes; then
+ if test "$aix_use_runtimelinking" = yes; then
shared_flag='${wl}-G'
else
shared_flag='${wl}-bM:SRE'
- fi
+ fi
fi
fi
@@ -13986,12 +13549,12 @@ rm -f conftest.err conftest.$ac_objext \
if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
hardcode_libdir_flag_spec_F77='${wl}-blibpath:$libdir:'"$aix_libpath"
- archive_expsym_cmds_F77="\$CC"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols $shared_flag"
+ archive_expsym_cmds_F77="\$CC"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag"
else
if test "$host_cpu" = ia64; then
hardcode_libdir_flag_spec_F77='${wl}-R $libdir:/usr/lib:/lib'
allow_undefined_flag_F77="-z nodefs"
- archive_expsym_cmds_F77="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols"
+ archive_expsym_cmds_F77="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols"
else
# Determine the default libpath from the value encoded in an empty executable.
cat >conftest.$ac_ext <<_ACEOF
@@ -14041,13 +13604,11 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
# -berok will link without error, but may produce a broken library.
no_undefined_flag_F77=' ${wl}-bernotok'
allow_undefined_flag_F77=' ${wl}-berok'
- # -bexpall does not export symbols beginning with underscore (_)
- always_export_symbols_F77=yes
# Exported symbols can be pulled into shared objects from archives
- whole_archive_flag_spec_F77=' '
+ whole_archive_flag_spec_F77='$convenience'
archive_cmds_need_lc_F77=yes
- # This is similar to how AIX traditionally builds it's shared libraries.
- archive_expsym_cmds_F77="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}-bE:$export_symbols ${wl}-bnoentry${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
+ # This is similar to how AIX traditionally builds its shared libraries.
+ archive_expsym_cmds_F77="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
fi
fi
;;
@@ -14086,7 +13647,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
;;
darwin* | rhapsody*)
- case "$host_os" in
+ case $host_os in
rhapsody* | darwin1.[012])
allow_undefined_flag_F77='${wl}-undefined ${wl}suppress'
;;
@@ -14115,7 +13676,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
output_verbose_link_cmd='echo'
archive_cmds_F77='$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring'
module_cmds_F77='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags'
- # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's
+ # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds
archive_expsym_cmds_F77='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
module_expsym_cmds_F77='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
else
@@ -14124,7 +13685,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
output_verbose_link_cmd='echo'
archive_cmds_F77='$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $verstring'
module_cmds_F77='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags'
- # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's
+ # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds
archive_expsym_cmds_F77='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
module_expsym_cmds_F77='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
;;
@@ -14188,47 +13749,62 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
export_dynamic_flag_spec_F77='${wl}-E'
;;
- hpux10* | hpux11*)
+ hpux10*)
if test "$GCC" = yes -a "$with_gnu_ld" = no; then
- case "$host_cpu" in
- hppa*64*|ia64*)
+ archive_cmds_F77='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+ else
+ archive_cmds_F77='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
+ fi
+ if test "$with_gnu_ld" = no; then
+ hardcode_libdir_flag_spec_F77='${wl}+b ${wl}$libdir'
+ hardcode_libdir_separator_F77=:
+
+ hardcode_direct_F77=yes
+ export_dynamic_flag_spec_F77='${wl}-E'
+
+ # hardcode_minus_L: Not really in the search PATH,
+ # but as the default location of the library.
+ hardcode_minus_L_F77=yes
+ fi
+ ;;
+
+ hpux11*)
+ if test "$GCC" = yes -a "$with_gnu_ld" = no; then
+ case $host_cpu in
+ hppa*64*)
archive_cmds_F77='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
;;
+ ia64*)
+ archive_cmds_F77='$CC -shared ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
*)
archive_cmds_F77='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
;;
esac
else
- case "$host_cpu" in
- hppa*64*|ia64*)
- archive_cmds_F77='$LD -b +h $soname -o $lib $libobjs $deplibs $linker_flags'
+ case $host_cpu in
+ hppa*64*)
+ archive_cmds_F77='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ ia64*)
+ archive_cmds_F77='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
;;
*)
- archive_cmds_F77='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
+ archive_cmds_F77='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
;;
esac
fi
if test "$with_gnu_ld" = no; then
- case "$host_cpu" in
- hppa*64*)
- hardcode_libdir_flag_spec_F77='${wl}+b ${wl}$libdir'
+ hardcode_libdir_flag_spec_F77='${wl}+b ${wl}$libdir'
+ hardcode_libdir_separator_F77=:
+
+ case $host_cpu in
+ hppa*64*|ia64*)
hardcode_libdir_flag_spec_ld_F77='+b $libdir'
- hardcode_libdir_separator_F77=:
hardcode_direct_F77=no
hardcode_shlibpath_var_F77=no
;;
- ia64*)
- hardcode_libdir_flag_spec_F77='-L$libdir'
- hardcode_direct_F77=no
- hardcode_shlibpath_var_F77=no
-
- # hardcode_minus_L: Not really in the search PATH,
- # but as the default location of the library.
- hardcode_minus_L_F77=yes
- ;;
*)
- hardcode_libdir_flag_spec_F77='${wl}+b ${wl}$libdir'
- hardcode_libdir_separator_F77=:
hardcode_direct_F77=yes
export_dynamic_flag_spec_F77='${wl}-E'
@@ -14330,14 +13906,6 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
hardcode_libdir_separator_F77=:
;;
- sco3.2v5*)
- archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
- hardcode_shlibpath_var_F77=no
- export_dynamic_flag_spec_F77='${wl}-Bexport'
- runpath_var=LD_RUN_PATH
- hardcode_runpath_var=yes
- ;;
-
solaris*)
no_undefined_flag_F77=' -z text'
if test "$GCC" = yes; then
@@ -14423,36 +13991,45 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
fi
;;
- sysv4.2uw2*)
- archive_cmds_F77='$LD -G -o $lib $libobjs $deplibs $linker_flags'
- hardcode_direct_F77=yes
- hardcode_minus_L_F77=no
+ sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7*)
+ no_undefined_flag_F77='${wl}-z,text'
+ archive_cmds_need_lc_F77=no
hardcode_shlibpath_var_F77=no
- hardcode_runpath_var=yes
- runpath_var=LD_RUN_PATH
- ;;
+ runpath_var='LD_RUN_PATH'
- sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[78]* | unixware7*)
- no_undefined_flag_F77='${wl}-z ${wl}text'
if test "$GCC" = yes; then
- archive_cmds_F77='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ archive_cmds_F77='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ archive_expsym_cmds_F77='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
else
- archive_cmds_F77='$CC -G ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ archive_cmds_F77='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ archive_expsym_cmds_F77='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
fi
- runpath_var='LD_RUN_PATH'
- hardcode_shlibpath_var_F77=no
;;
- sysv5*)
- no_undefined_flag_F77=' -z text'
- # $CC -shared without GNU ld will not create a library from C++
- # object files and a static libstdc++, better avoid it by now
- archive_cmds_F77='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
- archive_expsym_cmds_F77='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
- $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp'
- hardcode_libdir_flag_spec_F77=
+ sysv5* | sco3.2v5* | sco5v6*)
+ # Note: We can NOT use -z defs as we might desire, because we do not
+ # link with -lc, and that would cause any symbols used from libc to
+ # always be unresolved, which means just about no library would
+ # ever link correctly. If we're not using GNU ld we use -z text
+ # though, which does catch some bad symbols but isn't as heavy-handed
+ # as -z defs.
+ no_undefined_flag_F77='${wl}-z,text'
+ allow_undefined_flag_F77='${wl}-z,nodefs'
+ archive_cmds_need_lc_F77=no
hardcode_shlibpath_var_F77=no
+ hardcode_libdir_flag_spec_F77='`test -z "$SCOABSPATH" && echo ${wl}-R,$libdir`'
+ hardcode_libdir_separator_F77=':'
+ link_all_deplibs_F77=yes
+ export_dynamic_flag_spec_F77='${wl}-Bexport'
runpath_var='LD_RUN_PATH'
+
+ if test "$GCC" = yes; then
+ archive_cmds_F77='$CC -shared ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ archive_expsym_cmds_F77='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ else
+ archive_cmds_F77='$CC -G ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ archive_expsym_cmds_F77='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ fi
;;
uts4*)
@@ -14471,11 +14048,6 @@ echo "$as_me:$LINENO: result: $ld_shlibs_F77" >&5
echo "${ECHO_T}$ld_shlibs_F77" >&6
test "$ld_shlibs_F77" = no && can_build_shared=no
-variables_saved_for_relink="PATH $shlibpath_var $runpath_var"
-if test "$GCC" = yes; then
- variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
-fi
-
#
# Do we need to explicitly link libc?
#
@@ -14508,6 +14080,7 @@ echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&
libobjs=conftest.$ac_objext
deplibs=
wl=$lt_prog_compiler_wl_F77
+ pic_flag=$lt_prog_compiler_pic_F77
compiler_flags=-v
linker_flags=-v
verstring=
@@ -14668,7 +14241,8 @@ cygwin* | mingw* | pw32*)
dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~
dldir=$destdir/`dirname \$dlpath`~
test -d \$dldir || mkdir -p \$dldir~
- $install_prog $dir/$dlname \$dldir/$dlname'
+ $install_prog $dir/$dlname \$dldir/$dlname~
+ chmod a+x \$dldir/$dlname'
postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
dlpath=$dir/\$dldll~
$rm \$dlpath'
@@ -14745,7 +14319,7 @@ darwin* | rhapsody*)
soname_spec='${libname}${release}${major}$shared_ext'
shlibpath_overrides_runpath=yes
shlibpath_var=DYLD_LIBRARY_PATH
- shrext_cmds='$(test .$module = .yes && echo .so || echo .dylib)'
+ shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`'
# Apple's gcc prints 'gcc -print-search-dirs' doesn't operate the same.
if test "$GCC" = yes; then
sys_lib_search_path_spec=`$CC -print-search-dirs | tr "\n" "$PATH_SEPARATOR" | sed -e 's/libraries:/@libraries:/' | tr "@" "\n" | grep "^libraries:" | sed -e "s/^libraries://" -e "s,=/,/,g" -e "s,$PATH_SEPARATOR, ,g" -e "s,.*,& /lib /usr/lib /usr/local/lib,g"`
@@ -14783,8 +14357,22 @@ kfreebsd*-gnu)
freebsd* | dragonfly*)
# DragonFly does not have aout. When/if they implement a new
# versioning mechanism, adjust this.
- objformat=`test -x /usr/bin/objformat && /usr/bin/objformat || echo aout`
- version_type=freebsd-$objformat
+ if test -x /usr/bin/objformat; then
+ objformat=`/usr/bin/objformat`
+ else
+ case $host_os in
+ freebsd[123]*) objformat=aout ;;
+ *) objformat=elf ;;
+ esac
+ fi
+ # Handle Gentoo/FreeBSD as it was Linux
+ case $host_vendor in
+ gentoo)
+ version_type=linux ;;
+ *)
+ version_type=freebsd-$objformat ;;
+ esac
+
case $version_type in
freebsd-elf*)
library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
@@ -14795,6 +14383,12 @@ freebsd* | dragonfly*)
library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix'
need_version=yes
;;
+ linux)
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ need_lib_prefix=no
+ need_version=no
+ ;;
esac
shlibpath_var=LD_LIBRARY_PATH
case $host_os in
@@ -14805,10 +14399,15 @@ freebsd* | dragonfly*)
shlibpath_overrides_runpath=yes
hardcode_into_libs=yes
;;
- *) # from 3.2 on
+ freebsd3.[2-9]* | freebsdelf3.[2-9]* | \
+ freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1)
shlibpath_overrides_runpath=no
hardcode_into_libs=yes
;;
+ freebsd*) # from 4.6 on
+ shlibpath_overrides_runpath=yes
+ hardcode_into_libs=yes
+ ;;
esac
;;
@@ -14828,7 +14427,7 @@ hpux9* | hpux10* | hpux11*)
version_type=sunos
need_lib_prefix=no
need_version=no
- case "$host_cpu" in
+ case $host_cpu in
ia64*)
shrext_cmds='.so'
hardcode_into_libs=yes
@@ -14868,6 +14467,18 @@ hpux9* | hpux10* | hpux11*)
postinstall_cmds='chmod 555 $lib'
;;
+interix3*)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=no
+ hardcode_into_libs=yes
+ ;;
+
irix5* | irix6* | nonstopux*)
case $host_os in
nonstopux*) version_type=nonstopux ;;
@@ -14931,13 +14542,6 @@ linux*)
sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra"
fi
- case $host_cpu:$lt_cv_cc_64bit_output in
- powerpc64:yes | s390x:yes | sparc64:yes | x86_64:yes)
- sys_lib_dlsearch_path_spec="/lib64 /usr/lib64 /usr/X11R6/lib64"
- sys_lib_search_path_spec="/lib64 /usr/lib64 /usr/local/lib64 /usr/X11R6/lib64"
- ;;
- esac
-
# We used to test for /lib/ld.so.1 and disable shared libraries on
# powerpc, because MkLinux only supported shared libraries with the
# GNU dynamic linker. Since this was broken with cross compilers,
@@ -14945,30 +14549,6 @@ linux*)
# people can always --disable-shared, the test was removed, and we
# assume the GNU/Linux dynamic linker is in use.
dynamic_linker='GNU/Linux ld.so'
-
- # Find out which ABI we are using (multilib Linux x86_64 hack).
- libsuff=
- case "$host_cpu" in
- x86_64*)
- echo '#line 14953 "configure"' > conftest.$ac_ext
- if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; then
- case `/usr/bin/file conftest.$ac_objext` in
- *64-bit*)
- libsuff=64
- ;;
- esac
- fi
- rm -rf conftest*
- ;;
- *)
- ;;
- esac
- sys_lib_dlsearch_path_spec="/lib${libsuff} /usr/lib${libsuff}"
- sys_lib_search_path_spec="/lib${libsuff} /usr/lib${libsuff} /usr/local/lib${libsuff}"
;;
knetbsd*-gnu)
@@ -15020,6 +14600,7 @@ nto-qnx*)
openbsd*)
version_type=sunos
+ sys_lib_dlsearch_path_spec="/usr/lib"
need_lib_prefix=no
# Some older versions of OpenBSD (3.3 at least) *do* need versioned libs.
case $host_os in
@@ -15063,13 +14644,6 @@ osf3* | osf4* | osf5*)
sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec"
;;
-sco3.2v5*)
- version_type=osf
- soname_spec='${libname}${release}${shared_ext}$major'
- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
- shlibpath_var=LD_LIBRARY_PATH
- ;;
-
solaris*)
version_type=linux
need_lib_prefix=no
@@ -15095,7 +14669,7 @@ sunos4*)
need_version=yes
;;
-sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
+sysv4 | sysv4.3*)
version_type=linux
library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
soname_spec='${libname}${release}${shared_ext}$major'
@@ -15128,6 +14702,29 @@ sysv4*MP*)
fi
;;
+sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
+ version_type=freebsd-elf
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ hardcode_into_libs=yes
+ if test "$with_gnu_ld" = yes; then
+ sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib'
+ shlibpath_overrides_runpath=no
+ else
+ sys_lib_search_path_spec='/usr/ccs/lib /usr/lib'
+ shlibpath_overrides_runpath=yes
+ case $host_os in
+ sco3.2v5*)
+ sys_lib_search_path_spec="$sys_lib_search_path_spec /lib"
+ ;;
+ esac
+ fi
+ sys_lib_dlsearch_path_spec='/usr/lib'
+ ;;
+
uts4*)
version_type=linux
library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
@@ -15143,6 +14740,11 @@ echo "$as_me:$LINENO: result: $dynamic_linker" >&5
echo "${ECHO_T}$dynamic_linker" >&6
test "$dynamic_linker" = no && can_build_shared=no
+variables_saved_for_relink="PATH $shlibpath_var $runpath_var"
+if test "$GCC" = yes; then
+ variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
+fi
+
echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5
echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6
hardcode_action_F77=
@@ -15180,36 +14782,6 @@ elif test "$shlibpath_overrides_runpath" = yes ||
enable_fast_install=needless
fi
-striplib=
-old_striplib=
-echo "$as_me:$LINENO: checking whether stripping libraries is possible" >&5
-echo $ECHO_N "checking whether stripping libraries is possible... $ECHO_C" >&6
-if test -n "$STRIP" && $STRIP -V 2>&1 | grep "GNU strip" >/dev/null; then
- test -z "$old_striplib" && old_striplib="$STRIP --strip-debug"
- test -z "$striplib" && striplib="$STRIP --strip-unneeded"
- echo "$as_me:$LINENO: result: yes" >&5
-echo "${ECHO_T}yes" >&6
-else
-# FIXME - insert some real tests, host_os isn't really good enough
- case $host_os in
- darwin*)
- if test -n "$STRIP" ; then
- striplib="$STRIP -x"
- echo "$as_me:$LINENO: result: yes" >&5
-echo "${ECHO_T}yes" >&6
- else
- echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6
-fi
- ;;
- *)
- echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6
- ;;
- esac
-fi
-
-
# The else clause should only fire when bootstrapping the
# libtool distribution, otherwise you forgot to ship ltmain.sh
@@ -15224,7 +14796,7 @@ if test -f "$ltmain"; then
# Now quote all the things that may contain metacharacters while being
# careful not to overquote the AC_SUBSTed values. We take copies of the
# variables and quote the copies for generation of the libtool script.
- for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC NM \
+ for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC LTCFLAGS NM \
SED SHELL STRIP \
libname_spec library_names_spec soname_spec extract_expsyms_cmds \
old_striplib striplib file_magic_cmd finish_cmds finish_eval \
@@ -15342,6 +14914,9 @@ AR_FLAGS=$lt_AR_FLAGS
# A C compiler.
LTCC=$lt_LTCC
+# LTCC compiler flags.
+LTCFLAGS=$lt_LTCFLAGS
+
# A language-specific compiler.
CC=$lt_compiler_F77
@@ -15652,6 +15227,9 @@ lt_simple_link_test_code='public class conftest { public static void main(String
# If no C compiler was specified, use CC.
LTCC=${LTCC-"$CC"}
+# If no C compiler flags were specified, use CFLAGS.
+LTCFLAGS=${LTCFLAGS-"$CFLAGS"}
+
# Allow CC to be a program name with arguments.
compiler=$CC
@@ -15659,13 +15237,13 @@ compiler=$CC
# save warnings/boilerplate of simple test code
ac_outfile=conftest.$ac_objext
printf "$lt_simple_compile_test_code" >conftest.$ac_ext
-eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d' >conftest.err
+eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
_lt_compiler_boilerplate=`cat conftest.err`
$rm conftest*
ac_outfile=conftest.$ac_objext
printf "$lt_simple_link_test_code" >conftest.$ac_ext
-eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d' >conftest.err
+eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
_lt_linker_boilerplate=`cat conftest.err`
$rm conftest*
@@ -15713,20 +15291,20 @@ else
# with a dollar sign (not a hyphen), so the echo should work correctly.
# The option is referenced via a variable to avoid confusing sed.
lt_compile=`echo "$ac_compile" | $SED \
- -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \
+ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
- (eval echo "\"\$as_me:15719: $lt_compile\"" >&5)
+ (eval echo "\"\$as_me:15297: $lt_compile\"" >&5)
(eval "$lt_compile" 2>conftest.err)
ac_status=$?
cat conftest.err >&5
- echo "$as_me:15723: \$? = $ac_status" >&5
+ echo "$as_me:15301: \$? = $ac_status" >&5
if (exit $ac_status) && test -s "$ac_outfile"; then
# The compiler can only warn and ignore the option if not recognized
# So say no if there are warnings other than the usual output.
- $echo "X$_lt_compiler_boilerplate" | $Xsed >conftest.exp
- $SED '/^$/d' conftest.err >conftest.er2
- if test ! -s conftest.err || diff conftest.exp conftest.er2 >/dev/null; then
+ $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp
+ $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+ if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then
lt_cv_prog_compiler_rtti_exceptions=yes
fi
fi
@@ -15787,6 +15365,11 @@ echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6
lt_prog_compiler_pic_GCJ='-fno-common'
;;
+ interix3*)
+ # Interix 3.x gcc -fpic/-fPIC options generate broken code.
+ # Instead, we relocate shared libraries at runtime.
+ ;;
+
msdosdjgpp*)
# Just because we use GCC doesn't mean we suddenly get shared libraries
# on systems that don't support them.
@@ -15803,7 +15386,7 @@ echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6
hpux*)
# PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
# not for PA HP-UX.
- case "$host_cpu" in
+ case $host_cpu in
hppa*64*|ia64*)
# +Z the default
;;
@@ -15850,7 +15433,7 @@ echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6
lt_prog_compiler_wl_GCJ='-Wl,'
# PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
# not for PA HP-UX.
- case "$host_cpu" in
+ case $host_cpu in
hppa*64*|ia64*)
# +Z the default
;;
@@ -15880,12 +15463,12 @@ echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6
lt_prog_compiler_pic_GCJ='-KPIC'
lt_prog_compiler_static_GCJ='-static'
;;
- pgcc* | pgf77* | pgf90*)
+ pgcc* | pgf77* | pgf90* | pgf95*)
# Portland Group compilers (*not* the Pentium gcc compiler,
# which looks to be a dead project)
lt_prog_compiler_wl_GCJ='-Wl,'
lt_prog_compiler_pic_GCJ='-fpic'
- lt_prog_compiler_static_GCJ='-static'
+ lt_prog_compiler_static_GCJ='-Bstatic'
;;
ccc*)
lt_prog_compiler_wl_GCJ='-Wl,'
@@ -15901,11 +15484,6 @@ echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6
lt_prog_compiler_static_GCJ='-non_shared'
;;
- sco3.2v5*)
- lt_prog_compiler_pic_GCJ='-Kpic'
- lt_prog_compiler_static_GCJ='-dn'
- ;;
-
solaris*)
lt_prog_compiler_pic_GCJ='-KPIC'
lt_prog_compiler_static_GCJ='-Bstatic'
@@ -15923,7 +15501,7 @@ echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6
lt_prog_compiler_static_GCJ='-Bstatic'
;;
- sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
+ sysv4 | sysv4.2uw2* | sysv4.3*)
lt_prog_compiler_wl_GCJ='-Wl,'
lt_prog_compiler_pic_GCJ='-KPIC'
lt_prog_compiler_static_GCJ='-Bstatic'
@@ -15936,6 +15514,12 @@ echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6
fi
;;
+ sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*)
+ lt_prog_compiler_wl_GCJ='-Wl,'
+ lt_prog_compiler_pic_GCJ='-KPIC'
+ lt_prog_compiler_static_GCJ='-Bstatic'
+ ;;
+
unicos*)
lt_prog_compiler_wl_GCJ='-Wl,'
lt_prog_compiler_can_build_shared_GCJ=no
@@ -15975,20 +15559,20 @@ else
# with a dollar sign (not a hyphen), so the echo should work correctly.
# The option is referenced via a variable to avoid confusing sed.
lt_compile=`echo "$ac_compile" | $SED \
- -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \
+ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
- (eval echo "\"\$as_me:15981: $lt_compile\"" >&5)
+ (eval echo "\"\$as_me:15565: $lt_compile\"" >&5)
(eval "$lt_compile" 2>conftest.err)
ac_status=$?
cat conftest.err >&5
- echo "$as_me:15985: \$? = $ac_status" >&5
+ echo "$as_me:15569: \$? = $ac_status" >&5
if (exit $ac_status) && test -s "$ac_outfile"; then
# The compiler can only warn and ignore the option if not recognized
# So say no if there are warnings other than the usual output.
- $echo "X$_lt_compiler_boilerplate" | $Xsed >conftest.exp
- $SED '/^$/d' conftest.err >conftest.er2
- if test ! -s conftest.err || diff conftest.exp conftest.er2 >/dev/null; then
+ $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp
+ $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+ if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then
lt_prog_compiler_pic_works_GCJ=yes
fi
fi
@@ -16009,7 +15593,7 @@ else
fi
fi
-case "$host_os" in
+case $host_os in
# For platforms which do not support PIC, -DPIC is meaningless:
*djgpp*)
lt_prog_compiler_pic_GCJ=
@@ -16019,6 +15603,48 @@ case "$host_os" in
;;
esac
+#
+# Check to make sure the static flag actually works.
+#
+wl=$lt_prog_compiler_wl_GCJ eval lt_tmp_static_flag=\"$lt_prog_compiler_static_GCJ\"
+echo "$as_me:$LINENO: checking if $compiler static flag $lt_tmp_static_flag works" >&5
+echo $ECHO_N "checking if $compiler static flag $lt_tmp_static_flag works... $ECHO_C" >&6
+if test "${lt_prog_compiler_static_works_GCJ+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ lt_prog_compiler_static_works_GCJ=no
+ save_LDFLAGS="$LDFLAGS"
+ LDFLAGS="$LDFLAGS $lt_tmp_static_flag"
+ printf "$lt_simple_link_test_code" > conftest.$ac_ext
+ if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then
+ # The linker can only warn and ignore the option if not recognized
+ # So say no if there are warnings
+ if test -s conftest.err; then
+ # Append any errors to the config.log.
+ cat conftest.err 1>&5
+ $echo "X$_lt_linker_boilerplate" | $Xsed -e '/^$/d' > conftest.exp
+ $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+ if diff conftest.exp conftest.er2 >/dev/null; then
+ lt_prog_compiler_static_works_GCJ=yes
+ fi
+ else
+ lt_prog_compiler_static_works_GCJ=yes
+ fi
+ fi
+ $rm conftest*
+ LDFLAGS="$save_LDFLAGS"
+
+fi
+echo "$as_me:$LINENO: result: $lt_prog_compiler_static_works_GCJ" >&5
+echo "${ECHO_T}$lt_prog_compiler_static_works_GCJ" >&6
+
+if test x"$lt_prog_compiler_static_works_GCJ" = xyes; then
+ :
+else
+ lt_prog_compiler_static_GCJ=
+fi
+
+
echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5
echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6
if test "${lt_cv_prog_compiler_c_o_GCJ+set}" = set; then
@@ -16037,25 +15663,25 @@ else
# Note that $ac_compile itself does not contain backslashes and begins
# with a dollar sign (not a hyphen), so the echo should work correctly.
lt_compile=`echo "$ac_compile" | $SED \
- -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \
+ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
- (eval echo "\"\$as_me:16043: $lt_compile\"" >&5)
+ (eval echo "\"\$as_me:15669: $lt_compile\"" >&5)
(eval "$lt_compile" 2>out/conftest.err)
ac_status=$?
cat out/conftest.err >&5
- echo "$as_me:16047: \$? = $ac_status" >&5
+ echo "$as_me:15673: \$? = $ac_status" >&5
if (exit $ac_status) && test -s out/conftest2.$ac_objext
then
# The compiler can only warn and ignore the option if not recognized
# So say no if there are warnings
- $echo "X$_lt_compiler_boilerplate" | $Xsed > out/conftest.exp
- $SED '/^$/d' out/conftest.err >out/conftest.er2
- if test ! -s out/conftest.err || diff out/conftest.exp out/conftest.er2 >/dev/null; then
+ $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp
+ $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2
+ if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then
lt_cv_prog_compiler_c_o_GCJ=yes
fi
fi
- chmod u+w .
+ chmod u+w . 2>&5
$rm conftest*
# SGI C++ compiler will create directory out/ii_files/ for
# template instantiation
@@ -16151,6 +15777,10 @@ cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"`
with_gnu_ld=no
fi
;;
+ interix*)
+ # we just hope/assume this is gcc and not c89 (= MSVC++)
+ with_gnu_ld=yes
+ ;;
openbsd*)
with_gnu_ld=no
;;
@@ -16235,7 +15865,7 @@ EOF
export_symbols_cmds_GCJ='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS] /s/.* \([^ ]*\)/\1 DATA/'\'' | $SED -e '\''/^[AITW] /s/.* //'\'' | sort | uniq > $export_symbols'
if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then
- archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib'
+ archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
# If the export-symbols file already is a .def file (1st line
# is EXPORTS), use it as is; otherwise, prepend...
archive_expsym_cmds_GCJ='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
@@ -16244,22 +15874,37 @@ EOF
echo EXPORTS > $output_objdir/$soname.def;
cat $export_symbols >> $output_objdir/$soname.def;
fi~
- $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib'
+ $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
else
ld_shlibs_GCJ=no
fi
;;
+ interix3*)
+ hardcode_direct_GCJ=no
+ hardcode_shlibpath_var_GCJ=no
+ hardcode_libdir_flag_spec_GCJ='${wl}-rpath,$libdir'
+ export_dynamic_flag_spec_GCJ='${wl}-E'
+ # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc.
+ # Instead, shared libraries are loaded at an image base (0x10000000 by
+ # default) and relocated if they conflict, which is a slow very memory
+ # consuming and fragmenting process. To avoid this, we pick a random,
+ # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link
+ # time. Moving up from 0x10000000 also allows more sbrk(2) space.
+ archive_cmds_GCJ='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+ archive_expsym_cmds_GCJ='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+ ;;
+
linux*)
if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
tmp_addflag=
case $cc_basename,$host_cpu in
pgcc*) # Portland Group C compiler
- whole_archive_flag_spec_GCJ='${wl}--whole-archive,`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive'
+ whole_archive_flag_spec_GCJ='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive'
tmp_addflag=' $pic_flag'
;;
- pgf77* | pgf90* ) # Portland Group f77 and f90 compilers
- whole_archive_flag_spec_GCJ='${wl}--whole-archive,`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive'
+ pgf77* | pgf90* | pgf95*) # Portland Group f77 and f90 compilers
+ whole_archive_flag_spec_GCJ='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive'
tmp_addflag=' $pic_flag -Mnomain' ;;
ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64
tmp_addflag=' -i_dynamic' ;;
@@ -16291,7 +15936,7 @@ EOF
fi
;;
- solaris* | sysv5*)
+ solaris*)
if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then
ld_shlibs_GCJ=no
cat <<EOF 1>&2
@@ -16312,6 +15957,33 @@ EOF
fi
;;
+ sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*)
+ case `$LD -v 2>&1` in
+ *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*)
+ ld_shlibs_GCJ=no
+ cat <<_LT_EOF 1>&2
+
+*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not
+*** reliably create shared libraries on SCO systems. Therefore, libtool
+*** is disabling shared libraries support. We urge you to upgrade GNU
+*** binutils to release 2.16.91.0.3 or newer. Another option is to modify
+*** your PATH or compiler configuration so that the native linker is
+*** used, and then restart.
+
+_LT_EOF
+ ;;
+ *)
+ if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+ hardcode_libdir_flag_spec_GCJ='`test -z "$SCOABSPATH" && echo ${wl}-rpath,$libdir`'
+ archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib'
+ archive_expsym_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname,-retain-symbols-file,$export_symbols -o $lib'
+ else
+ ld_shlibs_GCJ=no
+ fi
+ ;;
+ esac
+ ;;
+
sunos4*)
archive_cmds_GCJ='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags'
wlarc=
@@ -16345,7 +16017,7 @@ EOF
# Note: this linker hardcodes the directories in LIBPATH if there
# are no directories specified by -L.
hardcode_minus_L_GCJ=yes
- if test "$GCC" = yes && test -z "$link_static_flag"; then
+ if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then
# Neither direct hardcoding nor static linking is supported with a
# broken collect2.
hardcode_direct_GCJ=unsupported
@@ -16379,6 +16051,7 @@ EOF
break
fi
done
+ ;;
esac
exp_sym_flag='-bexport'
@@ -16416,6 +16089,7 @@ EOF
hardcode_libdir_flag_spec_GCJ='-L$libdir'
hardcode_libdir_separator_GCJ=
fi
+ ;;
esac
shared_flag='-shared'
if test "$aix_use_runtimelinking" = yes; then
@@ -16428,11 +16102,11 @@ EOF
# chokes on -Wl,-G. The following line is correct:
shared_flag='-G'
else
- if test "$aix_use_runtimelinking" = yes; then
+ if test "$aix_use_runtimelinking" = yes; then
shared_flag='${wl}-G'
else
shared_flag='${wl}-bM:SRE'
- fi
+ fi
fi
fi
@@ -16497,12 +16171,12 @@ rm -f conftest.err conftest.$ac_objext \
if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
hardcode_libdir_flag_spec_GCJ='${wl}-blibpath:$libdir:'"$aix_libpath"
- archive_expsym_cmds_GCJ="\$CC"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols $shared_flag"
+ archive_expsym_cmds_GCJ="\$CC"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag"
else
if test "$host_cpu" = ia64; then
hardcode_libdir_flag_spec_GCJ='${wl}-R $libdir:/usr/lib:/lib'
allow_undefined_flag_GCJ="-z nodefs"
- archive_expsym_cmds_GCJ="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols"
+ archive_expsym_cmds_GCJ="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols"
else
# Determine the default libpath from the value encoded in an empty executable.
cat >conftest.$ac_ext <<_ACEOF
@@ -16562,13 +16236,11 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
# -berok will link without error, but may produce a broken library.
no_undefined_flag_GCJ=' ${wl}-bernotok'
allow_undefined_flag_GCJ=' ${wl}-berok'
- # -bexpall does not export symbols beginning with underscore (_)
- always_export_symbols_GCJ=yes
# Exported symbols can be pulled into shared objects from archives
- whole_archive_flag_spec_GCJ=' '
+ whole_archive_flag_spec_GCJ='$convenience'
archive_cmds_need_lc_GCJ=yes
- # This is similar to how AIX traditionally builds it's shared libraries.
- archive_expsym_cmds_GCJ="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}-bE:$export_symbols ${wl}-bnoentry${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
+ # This is similar to how AIX traditionally builds its shared libraries.
+ archive_expsym_cmds_GCJ="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
fi
fi
;;
@@ -16607,7 +16279,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
;;
darwin* | rhapsody*)
- case "$host_os" in
+ case $host_os in
rhapsody* | darwin1.[012])
allow_undefined_flag_GCJ='${wl}-undefined ${wl}suppress'
;;
@@ -16636,7 +16308,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
output_verbose_link_cmd='echo'
archive_cmds_GCJ='$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring'
module_cmds_GCJ='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags'
- # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's
+ # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds
archive_expsym_cmds_GCJ='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
module_expsym_cmds_GCJ='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
else
@@ -16645,7 +16317,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
output_verbose_link_cmd='echo'
archive_cmds_GCJ='$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $verstring'
module_cmds_GCJ='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags'
- # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's
+ # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds
archive_expsym_cmds_GCJ='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
module_expsym_cmds_GCJ='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
;;
@@ -16709,47 +16381,62 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
export_dynamic_flag_spec_GCJ='${wl}-E'
;;
- hpux10* | hpux11*)
+ hpux10*)
if test "$GCC" = yes -a "$with_gnu_ld" = no; then
- case "$host_cpu" in
- hppa*64*|ia64*)
+ archive_cmds_GCJ='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+ else
+ archive_cmds_GCJ='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
+ fi
+ if test "$with_gnu_ld" = no; then
+ hardcode_libdir_flag_spec_GCJ='${wl}+b ${wl}$libdir'
+ hardcode_libdir_separator_GCJ=:
+
+ hardcode_direct_GCJ=yes
+ export_dynamic_flag_spec_GCJ='${wl}-E'
+
+ # hardcode_minus_L: Not really in the search PATH,
+ # but as the default location of the library.
+ hardcode_minus_L_GCJ=yes
+ fi
+ ;;
+
+ hpux11*)
+ if test "$GCC" = yes -a "$with_gnu_ld" = no; then
+ case $host_cpu in
+ hppa*64*)
archive_cmds_GCJ='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
;;
+ ia64*)
+ archive_cmds_GCJ='$CC -shared ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
*)
archive_cmds_GCJ='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
;;
esac
else
- case "$host_cpu" in
- hppa*64*|ia64*)
- archive_cmds_GCJ='$LD -b +h $soname -o $lib $libobjs $deplibs $linker_flags'
+ case $host_cpu in
+ hppa*64*)
+ archive_cmds_GCJ='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ ia64*)
+ archive_cmds_GCJ='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
;;
*)
- archive_cmds_GCJ='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
+ archive_cmds_GCJ='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
;;
esac
fi
if test "$with_gnu_ld" = no; then
- case "$host_cpu" in
- hppa*64*)
- hardcode_libdir_flag_spec_GCJ='${wl}+b ${wl}$libdir'
+ hardcode_libdir_flag_spec_GCJ='${wl}+b ${wl}$libdir'
+ hardcode_libdir_separator_GCJ=:
+
+ case $host_cpu in
+ hppa*64*|ia64*)
hardcode_libdir_flag_spec_ld_GCJ='+b $libdir'
- hardcode_libdir_separator_GCJ=:
hardcode_direct_GCJ=no
hardcode_shlibpath_var_GCJ=no
;;
- ia64*)
- hardcode_libdir_flag_spec_GCJ='-L$libdir'
- hardcode_direct_GCJ=no
- hardcode_shlibpath_var_GCJ=no
-
- # hardcode_minus_L: Not really in the search PATH,
- # but as the default location of the library.
- hardcode_minus_L_GCJ=yes
- ;;
*)
- hardcode_libdir_flag_spec_GCJ='${wl}+b ${wl}$libdir'
- hardcode_libdir_separator_GCJ=:
hardcode_direct_GCJ=yes
export_dynamic_flag_spec_GCJ='${wl}-E'
@@ -16851,14 +16538,6 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
hardcode_libdir_separator_GCJ=:
;;
- sco3.2v5*)
- archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
- hardcode_shlibpath_var_GCJ=no
- export_dynamic_flag_spec_GCJ='${wl}-Bexport'
- runpath_var=LD_RUN_PATH
- hardcode_runpath_var=yes
- ;;
-
solaris*)
no_undefined_flag_GCJ=' -z text'
if test "$GCC" = yes; then
@@ -16944,36 +16623,45 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
fi
;;
- sysv4.2uw2*)
- archive_cmds_GCJ='$LD -G -o $lib $libobjs $deplibs $linker_flags'
- hardcode_direct_GCJ=yes
- hardcode_minus_L_GCJ=no
+ sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7*)
+ no_undefined_flag_GCJ='${wl}-z,text'
+ archive_cmds_need_lc_GCJ=no
hardcode_shlibpath_var_GCJ=no
- hardcode_runpath_var=yes
- runpath_var=LD_RUN_PATH
- ;;
+ runpath_var='LD_RUN_PATH'
- sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[78]* | unixware7*)
- no_undefined_flag_GCJ='${wl}-z ${wl}text'
if test "$GCC" = yes; then
- archive_cmds_GCJ='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ archive_cmds_GCJ='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ archive_expsym_cmds_GCJ='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
else
- archive_cmds_GCJ='$CC -G ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ archive_cmds_GCJ='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ archive_expsym_cmds_GCJ='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
fi
- runpath_var='LD_RUN_PATH'
- hardcode_shlibpath_var_GCJ=no
;;
- sysv5*)
- no_undefined_flag_GCJ=' -z text'
- # $CC -shared without GNU ld will not create a library from C++
- # object files and a static libstdc++, better avoid it by now
- archive_cmds_GCJ='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
- archive_expsym_cmds_GCJ='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
- $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp'
- hardcode_libdir_flag_spec_GCJ=
+ sysv5* | sco3.2v5* | sco5v6*)
+ # Note: We can NOT use -z defs as we might desire, because we do not
+ # link with -lc, and that would cause any symbols used from libc to
+ # always be unresolved, which means just about no library would
+ # ever link correctly. If we're not using GNU ld we use -z text
+ # though, which does catch some bad symbols but isn't as heavy-handed
+ # as -z defs.
+ no_undefined_flag_GCJ='${wl}-z,text'
+ allow_undefined_flag_GCJ='${wl}-z,nodefs'
+ archive_cmds_need_lc_GCJ=no
hardcode_shlibpath_var_GCJ=no
+ hardcode_libdir_flag_spec_GCJ='`test -z "$SCOABSPATH" && echo ${wl}-R,$libdir`'
+ hardcode_libdir_separator_GCJ=':'
+ link_all_deplibs_GCJ=yes
+ export_dynamic_flag_spec_GCJ='${wl}-Bexport'
runpath_var='LD_RUN_PATH'
+
+ if test "$GCC" = yes; then
+ archive_cmds_GCJ='$CC -shared ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ archive_expsym_cmds_GCJ='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ else
+ archive_cmds_GCJ='$CC -G ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ archive_expsym_cmds_GCJ='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ fi
;;
uts4*)
@@ -16992,11 +16680,6 @@ echo "$as_me:$LINENO: result: $ld_shlibs_GCJ" >&5
echo "${ECHO_T}$ld_shlibs_GCJ" >&6
test "$ld_shlibs_GCJ" = no && can_build_shared=no
-variables_saved_for_relink="PATH $shlibpath_var $runpath_var"
-if test "$GCC" = yes; then
- variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
-fi
-
#
# Do we need to explicitly link libc?
#
@@ -17029,6 +16712,7 @@ echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&
libobjs=conftest.$ac_objext
deplibs=
wl=$lt_prog_compiler_wl_GCJ
+ pic_flag=$lt_prog_compiler_pic_GCJ
compiler_flags=-v
linker_flags=-v
verstring=
@@ -17189,7 +16873,8 @@ cygwin* | mingw* | pw32*)
dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~
dldir=$destdir/`dirname \$dlpath`~
test -d \$dldir || mkdir -p \$dldir~
- $install_prog $dir/$dlname \$dldir/$dlname'
+ $install_prog $dir/$dlname \$dldir/$dlname~
+ chmod a+x \$dldir/$dlname'
postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
dlpath=$dir/\$dldll~
$rm \$dlpath'
@@ -17266,7 +16951,7 @@ darwin* | rhapsody*)
soname_spec='${libname}${release}${major}$shared_ext'
shlibpath_overrides_runpath=yes
shlibpath_var=DYLD_LIBRARY_PATH
- shrext_cmds='$(test .$module = .yes && echo .so || echo .dylib)'
+ shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`'
# Apple's gcc prints 'gcc -print-search-dirs' doesn't operate the same.
if test "$GCC" = yes; then
sys_lib_search_path_spec=`$CC -print-search-dirs | tr "\n" "$PATH_SEPARATOR" | sed -e 's/libraries:/@libraries:/' | tr "@" "\n" | grep "^libraries:" | sed -e "s/^libraries://" -e "s,=/,/,g" -e "s,$PATH_SEPARATOR, ,g" -e "s,.*,& /lib /usr/lib /usr/local/lib,g"`
@@ -17304,8 +16989,22 @@ kfreebsd*-gnu)
freebsd* | dragonfly*)
# DragonFly does not have aout. When/if they implement a new
# versioning mechanism, adjust this.
- objformat=`test -x /usr/bin/objformat && /usr/bin/objformat || echo aout`
- version_type=freebsd-$objformat
+ if test -x /usr/bin/objformat; then
+ objformat=`/usr/bin/objformat`
+ else
+ case $host_os in
+ freebsd[123]*) objformat=aout ;;
+ *) objformat=elf ;;
+ esac
+ fi
+ # Handle Gentoo/FreeBSD as it was Linux
+ case $host_vendor in
+ gentoo)
+ version_type=linux ;;
+ *)
+ version_type=freebsd-$objformat ;;
+ esac
+
case $version_type in
freebsd-elf*)
library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
@@ -17316,6 +17015,12 @@ freebsd* | dragonfly*)
library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix'
need_version=yes
;;
+ linux)
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ need_lib_prefix=no
+ need_version=no
+ ;;
esac
shlibpath_var=LD_LIBRARY_PATH
case $host_os in
@@ -17326,10 +17031,15 @@ freebsd* | dragonfly*)
shlibpath_overrides_runpath=yes
hardcode_into_libs=yes
;;
- *) # from 3.2 on
+ freebsd3.[2-9]* | freebsdelf3.[2-9]* | \
+ freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1)
shlibpath_overrides_runpath=no
hardcode_into_libs=yes
;;
+ freebsd*) # from 4.6 on
+ shlibpath_overrides_runpath=yes
+ hardcode_into_libs=yes
+ ;;
esac
;;
@@ -17349,7 +17059,7 @@ hpux9* | hpux10* | hpux11*)
version_type=sunos
need_lib_prefix=no
need_version=no
- case "$host_cpu" in
+ case $host_cpu in
ia64*)
shrext_cmds='.so'
hardcode_into_libs=yes
@@ -17389,6 +17099,18 @@ hpux9* | hpux10* | hpux11*)
postinstall_cmds='chmod 555 $lib'
;;
+interix3*)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=no
+ hardcode_into_libs=yes
+ ;;
+
irix5* | irix6* | nonstopux*)
case $host_os in
nonstopux*) version_type=nonstopux ;;
@@ -17452,13 +17174,6 @@ linux*)
sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra"
fi
- case $host_cpu:$lt_cv_cc_64bit_output in
- powerpc64:yes | s390x:yes | sparc64:yes | x86_64:yes)
- sys_lib_dlsearch_path_spec="/lib64 /usr/lib64 /usr/X11R6/lib64"
- sys_lib_search_path_spec="/lib64 /usr/lib64 /usr/local/lib64 /usr/X11R6/lib64"
- ;;
- esac
-
# We used to test for /lib/ld.so.1 and disable shared libraries on
# powerpc, because MkLinux only supported shared libraries with the
# GNU dynamic linker. Since this was broken with cross compilers,
@@ -17466,30 +17181,6 @@ linux*)
# people can always --disable-shared, the test was removed, and we
# assume the GNU/Linux dynamic linker is in use.
dynamic_linker='GNU/Linux ld.so'
-
- # Find out which ABI we are using (multilib Linux x86_64 hack).
- libsuff=
- case "$host_cpu" in
- x86_64*)
- echo '#line 17474 "configure"' > conftest.$ac_ext
- if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; then
- case `/usr/bin/file conftest.$ac_objext` in
- *64-bit*)
- libsuff=64
- ;;
- esac
- fi
- rm -rf conftest*
- ;;
- *)
- ;;
- esac
- sys_lib_dlsearch_path_spec="/lib${libsuff} /usr/lib${libsuff}"
- sys_lib_search_path_spec="/lib${libsuff} /usr/lib${libsuff} /usr/local/lib${libsuff}"
;;
knetbsd*-gnu)
@@ -17541,6 +17232,7 @@ nto-qnx*)
openbsd*)
version_type=sunos
+ sys_lib_dlsearch_path_spec="/usr/lib"
need_lib_prefix=no
# Some older versions of OpenBSD (3.3 at least) *do* need versioned libs.
case $host_os in
@@ -17584,13 +17276,6 @@ osf3* | osf4* | osf5*)
sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec"
;;
-sco3.2v5*)
- version_type=osf
- soname_spec='${libname}${release}${shared_ext}$major'
- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
- shlibpath_var=LD_LIBRARY_PATH
- ;;
-
solaris*)
version_type=linux
need_lib_prefix=no
@@ -17616,7 +17301,7 @@ sunos4*)
need_version=yes
;;
-sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
+sysv4 | sysv4.3*)
version_type=linux
library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
soname_spec='${libname}${release}${shared_ext}$major'
@@ -17649,6 +17334,29 @@ sysv4*MP*)
fi
;;
+sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
+ version_type=freebsd-elf
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ hardcode_into_libs=yes
+ if test "$with_gnu_ld" = yes; then
+ sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib'
+ shlibpath_overrides_runpath=no
+ else
+ sys_lib_search_path_spec='/usr/ccs/lib /usr/lib'
+ shlibpath_overrides_runpath=yes
+ case $host_os in
+ sco3.2v5*)
+ sys_lib_search_path_spec="$sys_lib_search_path_spec /lib"
+ ;;
+ esac
+ fi
+ sys_lib_dlsearch_path_spec='/usr/lib'
+ ;;
+
uts4*)
version_type=linux
library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
@@ -17664,6 +17372,11 @@ echo "$as_me:$LINENO: result: $dynamic_linker" >&5
echo "${ECHO_T}$dynamic_linker" >&6
test "$dynamic_linker" = no && can_build_shared=no
+variables_saved_for_relink="PATH $shlibpath_var $runpath_var"
+if test "$GCC" = yes; then
+ variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
+fi
+
echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5
echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6
hardcode_action_GCJ=
@@ -17701,841 +17414,6 @@ elif test "$shlibpath_overrides_runpath" = yes ||
enable_fast_install=needless
fi
-striplib=
-old_striplib=
-echo "$as_me:$LINENO: checking whether stripping libraries is possible" >&5
-echo $ECHO_N "checking whether stripping libraries is possible... $ECHO_C" >&6
-if test -n "$STRIP" && $STRIP -V 2>&1 | grep "GNU strip" >/dev/null; then
- test -z "$old_striplib" && old_striplib="$STRIP --strip-debug"
- test -z "$striplib" && striplib="$STRIP --strip-unneeded"
- echo "$as_me:$LINENO: result: yes" >&5
-echo "${ECHO_T}yes" >&6
-else
-# FIXME - insert some real tests, host_os isn't really good enough
- case $host_os in
- darwin*)
- if test -n "$STRIP" ; then
- striplib="$STRIP -x"
- echo "$as_me:$LINENO: result: yes" >&5
-echo "${ECHO_T}yes" >&6
- else
- echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6
-fi
- ;;
- *)
- echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6
- ;;
- esac
-fi
-
-if test "x$enable_dlopen" != xyes; then
- enable_dlopen=unknown
- enable_dlopen_self=unknown
- enable_dlopen_self_static=unknown
-else
- lt_cv_dlopen=no
- lt_cv_dlopen_libs=
-
- case $host_os in
- beos*)
- lt_cv_dlopen="load_add_on"
- lt_cv_dlopen_libs=
- lt_cv_dlopen_self=yes
- ;;
-
- mingw* | pw32*)
- lt_cv_dlopen="LoadLibrary"
- lt_cv_dlopen_libs=
- ;;
-
- cygwin*)
- lt_cv_dlopen="dlopen"
- lt_cv_dlopen_libs=
- ;;
-
- darwin*)
- # if libdl is installed we need to link against it
- echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5
-echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6
-if test "${ac_cv_lib_dl_dlopen+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- ac_check_lib_save_LIBS=$LIBS
-LIBS="-ldl $LIBS"
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-
-/* Override any gcc2 internal prototype to avoid an error. */
-#ifdef __cplusplus
-extern "C"
-#endif
-/* We use char because int might match the return type of a gcc2
- builtin and then its argument prototype would still apply. */
-char dlopen ();
-int
-main ()
-{
-dlopen ();
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
- (eval $ac_link) 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag"
- || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_cv_lib_dl_dlopen=yes
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_cv_lib_dl_dlopen=no
-fi
-rm -f conftest.err conftest.$ac_objext \
- conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5
-echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6
-if test $ac_cv_lib_dl_dlopen = yes; then
- lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"
-else
-
- lt_cv_dlopen="dyld"
- lt_cv_dlopen_libs=
- lt_cv_dlopen_self=yes
-
-fi
-
- ;;
-
- *)
- echo "$as_me:$LINENO: checking for shl_load" >&5
-echo $ECHO_N "checking for shl_load... $ECHO_C" >&6
-if test "${ac_cv_func_shl_load+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-/* Define shl_load to an innocuous variant, in case <limits.h> declares shl_load.
- For example, HP-UX 11i <limits.h> declares gettimeofday. */
-#define shl_load innocuous_shl_load
-
-/* System header to define __stub macros and hopefully few prototypes,
- which can conflict with char shl_load (); below.
- Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
- <limits.h> exists even on freestanding compilers. */
-
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
-
-#undef shl_load
-
-/* Override any gcc2 internal prototype to avoid an error. */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
- builtin and then its argument prototype would still apply. */
-char shl_load ();
-/* The GNU C library defines this for functions which it implements
- to always fail with ENOSYS. Some functions are actually named
- something starting with __ and the normal name is an alias. */
-#if defined (__stub_shl_load) || defined (__stub___shl_load)
-choke me
-#else
-char (*f) () = shl_load;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != shl_load;
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
- (eval $ac_link) 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag"
- || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_cv_func_shl_load=yes
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_cv_func_shl_load=no
-fi
-rm -f conftest.err conftest.$ac_objext \
- conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: $ac_cv_func_shl_load" >&5
-echo "${ECHO_T}$ac_cv_func_shl_load" >&6
-if test $ac_cv_func_shl_load = yes; then
- lt_cv_dlopen="shl_load"
-else
- echo "$as_me:$LINENO: checking for shl_load in -ldld" >&5
-echo $ECHO_N "checking for shl_load in -ldld... $ECHO_C" >&6
-if test "${ac_cv_lib_dld_shl_load+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- ac_check_lib_save_LIBS=$LIBS
-LIBS="-ldld $LIBS"
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-
-/* Override any gcc2 internal prototype to avoid an error. */
-#ifdef __cplusplus
-extern "C"
-#endif
-/* We use char because int might match the return type of a gcc2
- builtin and then its argument prototype would still apply. */
-char shl_load ();
-int
-main ()
-{
-shl_load ();
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
- (eval $ac_link) 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag"
- || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_cv_lib_dld_shl_load=yes
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_cv_lib_dld_shl_load=no
-fi
-rm -f conftest.err conftest.$ac_objext \
- conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-echo "$as_me:$LINENO: result: $ac_cv_lib_dld_shl_load" >&5
-echo "${ECHO_T}$ac_cv_lib_dld_shl_load" >&6
-if test $ac_cv_lib_dld_shl_load = yes; then
- lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-dld"
-else
- echo "$as_me:$LINENO: checking for dlopen" >&5
-echo $ECHO_N "checking for dlopen... $ECHO_C" >&6
-if test "${ac_cv_func_dlopen+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-/* Define dlopen to an innocuous variant, in case <limits.h> declares dlopen.
- For example, HP-UX 11i <limits.h> declares gettimeofday. */
-#define dlopen innocuous_dlopen
-
-/* System header to define __stub macros and hopefully few prototypes,
- which can conflict with char dlopen (); below.
- Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
- <limits.h> exists even on freestanding compilers. */
-
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
-
-#undef dlopen
-
-/* Override any gcc2 internal prototype to avoid an error. */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
- builtin and then its argument prototype would still apply. */
-char dlopen ();
-/* The GNU C library defines this for functions which it implements
- to always fail with ENOSYS. Some functions are actually named
- something starting with __ and the normal name is an alias. */
-#if defined (__stub_dlopen) || defined (__stub___dlopen)
-choke me
-#else
-char (*f) () = dlopen;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != dlopen;
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
- (eval $ac_link) 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag"
- || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_cv_func_dlopen=yes
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_cv_func_dlopen=no
-fi
-rm -f conftest.err conftest.$ac_objext \
- conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: $ac_cv_func_dlopen" >&5
-echo "${ECHO_T}$ac_cv_func_dlopen" >&6
-if test $ac_cv_func_dlopen = yes; then
- lt_cv_dlopen="dlopen"
-else
- echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5
-echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6
-if test "${ac_cv_lib_dl_dlopen+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- ac_check_lib_save_LIBS=$LIBS
-LIBS="-ldl $LIBS"
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-
-/* Override any gcc2 internal prototype to avoid an error. */
-#ifdef __cplusplus
-extern "C"
-#endif
-/* We use char because int might match the return type of a gcc2
- builtin and then its argument prototype would still apply. */
-char dlopen ();
-int
-main ()
-{
-dlopen ();
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
- (eval $ac_link) 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag"
- || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_cv_lib_dl_dlopen=yes
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_cv_lib_dl_dlopen=no
-fi
-rm -f conftest.err conftest.$ac_objext \
- conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5
-echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6
-if test $ac_cv_lib_dl_dlopen = yes; then
- lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"
-else
- echo "$as_me:$LINENO: checking for dlopen in -lsvld" >&5
-echo $ECHO_N "checking for dlopen in -lsvld... $ECHO_C" >&6
-if test "${ac_cv_lib_svld_dlopen+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- ac_check_lib_save_LIBS=$LIBS
-LIBS="-lsvld $LIBS"
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-
-/* Override any gcc2 internal prototype to avoid an error. */
-#ifdef __cplusplus
-extern "C"
-#endif
-/* We use char because int might match the return type of a gcc2
- builtin and then its argument prototype would still apply. */
-char dlopen ();
-int
-main ()
-{
-dlopen ();
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
- (eval $ac_link) 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag"
- || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_cv_lib_svld_dlopen=yes
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_cv_lib_svld_dlopen=no
-fi
-rm -f conftest.err conftest.$ac_objext \
- conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-echo "$as_me:$LINENO: result: $ac_cv_lib_svld_dlopen" >&5
-echo "${ECHO_T}$ac_cv_lib_svld_dlopen" >&6
-if test $ac_cv_lib_svld_dlopen = yes; then
- lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"
-else
- echo "$as_me:$LINENO: checking for dld_link in -ldld" >&5
-echo $ECHO_N "checking for dld_link in -ldld... $ECHO_C" >&6
-if test "${ac_cv_lib_dld_dld_link+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- ac_check_lib_save_LIBS=$LIBS
-LIBS="-ldld $LIBS"
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-
-/* Override any gcc2 internal prototype to avoid an error. */
-#ifdef __cplusplus
-extern "C"
-#endif
-/* We use char because int might match the return type of a gcc2
- builtin and then its argument prototype would still apply. */
-char dld_link ();
-int
-main ()
-{
-dld_link ();
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
- (eval $ac_link) 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag"
- || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_cv_lib_dld_dld_link=yes
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_cv_lib_dld_dld_link=no
-fi
-rm -f conftest.err conftest.$ac_objext \
- conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-echo "$as_me:$LINENO: result: $ac_cv_lib_dld_dld_link" >&5
-echo "${ECHO_T}$ac_cv_lib_dld_dld_link" >&6
-if test $ac_cv_lib_dld_dld_link = yes; then
- lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld"
-fi
-
-
-fi
-
-
-fi
-
-
-fi
-
-
-fi
-
-
-fi
-
- ;;
- esac
-
- if test "x$lt_cv_dlopen" != xno; then
- enable_dlopen=yes
- else
- enable_dlopen=no
- fi
-
- case $lt_cv_dlopen in
- dlopen)
- save_CPPFLAGS="$CPPFLAGS"
- test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H"
-
- save_LDFLAGS="$LDFLAGS"
- eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\"
-
- save_LIBS="$LIBS"
- LIBS="$lt_cv_dlopen_libs $LIBS"
-
- echo "$as_me:$LINENO: checking whether a program can dlopen itself" >&5
-echo $ECHO_N "checking whether a program can dlopen itself... $ECHO_C" >&6
-if test "${lt_cv_dlopen_self+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- if test "$cross_compiling" = yes; then :
- lt_cv_dlopen_self=cross
-else
- lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
- lt_status=$lt_dlunknown
- cat > conftest.$ac_ext <<EOF
-#line 18338 "configure"
-#include "confdefs.h"
-
-#if HAVE_DLFCN_H
-#include <dlfcn.h>
-#endif
-
-#include <stdio.h>
-
-#ifdef RTLD_GLOBAL
-# define LT_DLGLOBAL RTLD_GLOBAL
-#else
-# ifdef DL_GLOBAL
-# define LT_DLGLOBAL DL_GLOBAL
-# else
-# define LT_DLGLOBAL 0
-# endif
-#endif
-
-/* We may have to define LT_DLLAZY_OR_NOW in the command line if we
- find out it does not work in some platform. */
-#ifndef LT_DLLAZY_OR_NOW
-# ifdef RTLD_LAZY
-# define LT_DLLAZY_OR_NOW RTLD_LAZY
-# else
-# ifdef DL_LAZY
-# define LT_DLLAZY_OR_NOW DL_LAZY
-# else
-# ifdef RTLD_NOW
-# define LT_DLLAZY_OR_NOW RTLD_NOW
-# else
-# ifdef DL_NOW
-# define LT_DLLAZY_OR_NOW DL_NOW
-# else
-# define LT_DLLAZY_OR_NOW 0
-# endif
-# endif
-# endif
-# endif
-#endif
-
-#ifdef __cplusplus
-extern "C" void exit (int);
-#endif
-
-void fnord() { int i=42;}
-int main ()
-{
- void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
- int status = $lt_dlunknown;
-
- if (self)
- {
- if (dlsym (self,"fnord")) status = $lt_dlno_uscore;
- else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore;
- /* dlclose (self); */
- }
-
- exit (status);
-}
-EOF
- if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then
- (./conftest; exit; ) 2>/dev/null
- lt_status=$?
- case x$lt_status in
- x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;;
- x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;;
- x$lt_unknown|x*) lt_cv_dlopen_self=no ;;
- esac
- else :
- # compilation failed
- lt_cv_dlopen_self=no
- fi
-fi
-rm -fr conftest*
-
-
-fi
-echo "$as_me:$LINENO: result: $lt_cv_dlopen_self" >&5
-echo "${ECHO_T}$lt_cv_dlopen_self" >&6
-
- if test "x$lt_cv_dlopen_self" = xyes; then
- LDFLAGS="$LDFLAGS $link_static_flag"
- echo "$as_me:$LINENO: checking whether a statically linked program can dlopen itself" >&5
-echo $ECHO_N "checking whether a statically linked program can dlopen itself... $ECHO_C" >&6
-if test "${lt_cv_dlopen_self_static+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- if test "$cross_compiling" = yes; then :
- lt_cv_dlopen_self_static=cross
-else
- lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
- lt_status=$lt_dlunknown
- cat > conftest.$ac_ext <<EOF
-#line 18436 "configure"
-#include "confdefs.h"
-
-#if HAVE_DLFCN_H
-#include <dlfcn.h>
-#endif
-
-#include <stdio.h>
-
-#ifdef RTLD_GLOBAL
-# define LT_DLGLOBAL RTLD_GLOBAL
-#else
-# ifdef DL_GLOBAL
-# define LT_DLGLOBAL DL_GLOBAL
-# else
-# define LT_DLGLOBAL 0
-# endif
-#endif
-
-/* We may have to define LT_DLLAZY_OR_NOW in the command line if we
- find out it does not work in some platform. */
-#ifndef LT_DLLAZY_OR_NOW
-# ifdef RTLD_LAZY
-# define LT_DLLAZY_OR_NOW RTLD_LAZY
-# else
-# ifdef DL_LAZY
-# define LT_DLLAZY_OR_NOW DL_LAZY
-# else
-# ifdef RTLD_NOW
-# define LT_DLLAZY_OR_NOW RTLD_NOW
-# else
-# ifdef DL_NOW
-# define LT_DLLAZY_OR_NOW DL_NOW
-# else
-# define LT_DLLAZY_OR_NOW 0
-# endif
-# endif
-# endif
-# endif
-#endif
-
-#ifdef __cplusplus
-extern "C" void exit (int);
-#endif
-
-void fnord() { int i=42;}
-int main ()
-{
- void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
- int status = $lt_dlunknown;
-
- if (self)
- {
- if (dlsym (self,"fnord")) status = $lt_dlno_uscore;
- else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore;
- /* dlclose (self); */
- }
-
- exit (status);
-}
-EOF
- if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then
- (./conftest; exit; ) 2>/dev/null
- lt_status=$?
- case x$lt_status in
- x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;;
- x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;;
- x$lt_unknown|x*) lt_cv_dlopen_self_static=no ;;
- esac
- else :
- # compilation failed
- lt_cv_dlopen_self_static=no
- fi
-fi
-rm -fr conftest*
-
-
-fi
-echo "$as_me:$LINENO: result: $lt_cv_dlopen_self_static" >&5
-echo "${ECHO_T}$lt_cv_dlopen_self_static" >&6
- fi
-
- CPPFLAGS="$save_CPPFLAGS"
- LDFLAGS="$save_LDFLAGS"
- LIBS="$save_LIBS"
- ;;
- esac
-
- case $lt_cv_dlopen_self in
- yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;;
- *) enable_dlopen_self=unknown ;;
- esac
-
- case $lt_cv_dlopen_self_static in
- yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;;
- *) enable_dlopen_self_static=unknown ;;
- esac
-fi
-
# The else clause should only fire when bootstrapping the
# libtool distribution, otherwise you forgot to ship ltmain.sh
@@ -18550,7 +17428,7 @@ if test -f "$ltmain"; then
# Now quote all the things that may contain metacharacters while being
# careful not to overquote the AC_SUBSTed values. We take copies of the
# variables and quote the copies for generation of the libtool script.
- for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC NM \
+ for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC LTCFLAGS NM \
SED SHELL STRIP \
libname_spec library_names_spec soname_spec extract_expsyms_cmds \
old_striplib striplib file_magic_cmd finish_cmds finish_eval \
@@ -18668,6 +17546,9 @@ AR_FLAGS=$lt_AR_FLAGS
# A C compiler.
LTCC=$lt_LTCC
+# LTCC compiler flags.
+LTCFLAGS=$lt_LTCFLAGS
+
# A language-specific compiler.
CC=$lt_compiler_GCJ
@@ -18977,6 +17858,9 @@ lt_simple_link_test_code="$lt_simple_compile_test_code"
# If no C compiler was specified, use CC.
LTCC=${LTCC-"$CC"}
+# If no C compiler flags were specified, use CFLAGS.
+LTCFLAGS=${LTCFLAGS-"$CFLAGS"}
+
# Allow CC to be a program name with arguments.
compiler=$CC
@@ -18984,13 +17868,13 @@ compiler=$CC
# save warnings/boilerplate of simple test code
ac_outfile=conftest.$ac_objext
printf "$lt_simple_compile_test_code" >conftest.$ac_ext
-eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d' >conftest.err
+eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
_lt_compiler_boilerplate=`cat conftest.err`
$rm conftest*
ac_outfile=conftest.$ac_objext
printf "$lt_simple_link_test_code" >conftest.$ac_ext
-eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d' >conftest.err
+eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
_lt_linker_boilerplate=`cat conftest.err`
$rm conftest*
@@ -19025,7 +17909,7 @@ if test -f "$ltmain"; then
# Now quote all the things that may contain metacharacters while being
# careful not to overquote the AC_SUBSTed values. We take copies of the
# variables and quote the copies for generation of the libtool script.
- for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC NM \
+ for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC LTCFLAGS NM \
SED SHELL STRIP \
libname_spec library_names_spec soname_spec extract_expsyms_cmds \
old_striplib striplib file_magic_cmd finish_cmds finish_eval \
@@ -19143,6 +18027,9 @@ AR_FLAGS=$lt_AR_FLAGS
# A C compiler.
LTCC=$lt_LTCC
+# LTCC compiler flags.
+LTCFLAGS=$lt_LTCFLAGS
+
# A language-specific compiler.
CC=$lt_compiler_RC
@@ -20809,6 +19696,15 @@ if test "${with_match_limit+set}" = set; then
fi;
+
+# Check whether --with-match-limit-recursion or --without-match-limit-recursion was given.
+if test "${with_match_limit_recursion+set}" = set; then
+ withval="$with_match_limit_recursion"
+ MATCH_LIMIT_RECURSION=-DMATCH_LIMIT_RECURSION=$withval
+
+fi;
+
+
if test "$UCP" != "" ; then
UTF8=-DSUPPORT_UTF8
fi
@@ -20838,7 +19734,6 @@ fi
-
case $host_os in
mingw* )
POSIX_OBJ=pcreposix.o
@@ -20872,7 +19767,7 @@ _ACEOF
fi
- ac_config_files="$ac_config_files Makefile pcre.h:pcre.h.in pcre-config:pcre-config.in libpcre.pc:libpcre.pc.in pcrecpp.h:pcrecpp.h.in pcre_stringpiece.h:pcre_stringpiece.h.in RunGrepTest:RunGrepTest.in RunTest:RunTest.in"
+ ac_config_files="$ac_config_files Makefile pcre-config:pcre-config.in libpcre.pc:libpcre.pc.in pcrecpparg.h:pcrecpparg.h.in pcre_stringpiece.h:pcre_stringpiece.h.in RunGrepTest:RunGrepTest.in RunTest:RunTest.in"
ac_config_commands="$ac_config_commands default"
cat >confcache <<\_ACEOF
# This file is a shell script that caches the results of configure
@@ -21403,10 +20298,9 @@ do
case "$ac_config_target" in
# Handling of arguments.
"Makefile" ) CONFIG_FILES="$CONFIG_FILES Makefile" ;;
- "pcre.h" ) CONFIG_FILES="$CONFIG_FILES pcre.h:pcre.h.in" ;;
"pcre-config" ) CONFIG_FILES="$CONFIG_FILES pcre-config:pcre-config.in" ;;
"libpcre.pc" ) CONFIG_FILES="$CONFIG_FILES libpcre.pc:libpcre.pc.in" ;;
- "pcrecpp.h" ) CONFIG_FILES="$CONFIG_FILES pcrecpp.h:pcrecpp.h.in" ;;
+ "pcrecpparg.h" ) CONFIG_FILES="$CONFIG_FILES pcrecpparg.h:pcrecpparg.h.in" ;;
"pcre_stringpiece.h" ) CONFIG_FILES="$CONFIG_FILES pcre_stringpiece.h:pcre_stringpiece.h.in" ;;
"RunGrepTest" ) CONFIG_FILES="$CONFIG_FILES RunGrepTest:RunGrepTest.in" ;;
"RunTest" ) CONFIG_FILES="$CONFIG_FILES RunTest:RunTest.in" ;;
@@ -21551,20 +20445,19 @@ s,@CC_FOR_BUILD@,$CC_FOR_BUILD,;t t
s,@CXX_FOR_BUILD@,$CXX_FOR_BUILD,;t t
s,@CFLAGS_FOR_BUILD@,$CFLAGS_FOR_BUILD,;t t
s,@CXXFLAGS_FOR_BUILD@,$CXXFLAGS_FOR_BUILD,;t t
+s,@CXXLDFLAGS@,$CXXLDFLAGS,;t t
s,@EBCDIC@,$EBCDIC,;t t
s,@HAVE_MEMMOVE@,$HAVE_MEMMOVE,;t t
s,@HAVE_STRERROR@,$HAVE_STRERROR,;t t
s,@LINK_SIZE@,$LINK_SIZE,;t t
s,@MATCH_LIMIT@,$MATCH_LIMIT,;t t
+s,@MATCH_LIMIT_RECURSION@,$MATCH_LIMIT_RECURSION,;t t
s,@NEWLINE@,$NEWLINE,;t t
s,@NO_RECURSE@,$NO_RECURSE,;t t
-s,@PCRE_MAJOR@,$PCRE_MAJOR,;t t
-s,@PCRE_MINOR@,$PCRE_MINOR,;t t
-s,@PCRE_DATE@,$PCRE_DATE,;t t
-s,@PCRE_VERSION@,$PCRE_VERSION,;t t
s,@PCRE_LIB_VERSION@,$PCRE_LIB_VERSION,;t t
s,@PCRE_POSIXLIB_VERSION@,$PCRE_POSIXLIB_VERSION,;t t
s,@PCRE_CPPLIB_VERSION@,$PCRE_CPPLIB_VERSION,;t t
+s,@PCRE_VERSION@,$PCRE_VERSION,;t t
s,@POSIX_MALLOC_THRESHOLD@,$POSIX_MALLOC_THRESHOLD,;t t
s,@UCP@,$UCP,;t t
s,@UTF8@,$UTF8,;t t
diff --git a/configure.in b/configure.ac
index e011a8a..e71e9bf 100644
--- a/configure.in
+++ b/configure.ac
@@ -15,22 +15,10 @@ dnl A safety precaution
AC_PREREQ(2.57)
-dnl Arrange to build config.h from config.h.in. Note that pcre.h is
-dnl built differently, as it is just a "substitution" file.
+dnl Arrange to build config.h from config.h.in.
dnl Manual says this macro should come right after AC_INIT.
AC_CONFIG_HEADER(config.h)
-dnl Provide the current PCRE version information. Do not use numbers
-dnl with leading zeros for the minor version, as they end up in a C
-dnl macro, and may be treated as octal constants. Stick to single
-dnl digits for minor numbers less than 10. There are unlikely to be
-dnl that many releases anyway.
-
-PCRE_MAJOR=6
-PCRE_MINOR=4
-PCRE_DATE=05-Sep-2005
-PCRE_VERSION=${PCRE_MAJOR}.${PCRE_MINOR}
-
dnl Default values for miscellaneous macros
POSIX_MALLOC_THRESHOLD=-DPOSIX_MALLOC_THRESHOLD=10
@@ -42,6 +30,14 @@ PCRE_LIB_VERSION=0:1:0
PCRE_POSIXLIB_VERSION=0:0:0
PCRE_CPPLIB_VERSION=0:0:0
+dnl Find the PCRE version from the pcre.h file. The PCRE_VERSION variable is
+dnl substituted in pcre-config.in.
+
+PCRE_MAJOR=`grep '#define PCRE_MAJOR' ./pcre.h | cut -c 29-`
+PCRE_MINOR=`grep '#define PCRE_MINOR' ./pcre.h | cut -c 29-`
+PCRE_PRERELEASE=`grep '#define PCRE_PRERELEASE' ./pcre.h | cut -c 29-`
+PCRE_VERSION=${PCRE_MAJOR}.${PCRE_MINOR}${PCRE_PRERELEASE}
+
dnl Handle --disable-cpp
AC_ARG_ENABLE(cpp,
@@ -204,7 +200,7 @@ dnl I've done.
dnl Handle --with-posix-malloc-threshold=n
AC_ARG_WITH(posix-malloc-threshold,
-[ --with-posix-malloc-threshold=5 threshold for POSIX malloc usage],
+[ --with-posix-malloc-threshold=10 threshold for POSIX malloc usage],
POSIX_MALLOC_THRESHOLD=-DPOSIX_MALLOC_THRESHOLD=$withval
)
@@ -215,13 +211,20 @@ AC_ARG_WITH(link-size,
LINK_SIZE=-DLINK_SIZE=$withval
)
-dnl Handle --with-match_limit=n
+dnl Handle --with-match-limit=n
AC_ARG_WITH(match-limit,
-[ --with-match-limit=10000000 default limit on internal looping)],
+[ --with-match-limit=10000000 default limit on internal looping],
MATCH_LIMIT=-DMATCH_LIMIT=$withval
)
+dnl Handle --with-match-limit_recursion=n
+
+AC_ARG_WITH(match-limit-recursion,
+[ --with-match-limit-recursion=10000000 default limit on internal recursion],
+ MATCH_LIMIT_RECURSION=-DMATCH_LIMIT_RECURSION=$withval
+)
+
dnl Unicode character property support implies UTF-8 support
if test "$UCP" != "" ; then
@@ -236,20 +239,19 @@ AC_SUBST(CC_FOR_BUILD)
AC_SUBST(CXX_FOR_BUILD)
AC_SUBST(CFLAGS_FOR_BUILD)
AC_SUBST(CXXFLAGS_FOR_BUILD)
+AC_SUBST(CXXLDFLAGS)
AC_SUBST(EBCDIC)
AC_SUBST(HAVE_MEMMOVE)
AC_SUBST(HAVE_STRERROR)
AC_SUBST(LINK_SIZE)
AC_SUBST(MATCH_LIMIT)
+AC_SUBST(MATCH_LIMIT_RECURSION)
AC_SUBST(NEWLINE)
AC_SUBST(NO_RECURSE)
-AC_SUBST(PCRE_MAJOR)
-AC_SUBST(PCRE_MINOR)
-AC_SUBST(PCRE_DATE)
-AC_SUBST(PCRE_VERSION)
AC_SUBST(PCRE_LIB_VERSION)
AC_SUBST(PCRE_POSIXLIB_VERSION)
AC_SUBST(PCRE_CPPLIB_VERSION)
+AC_SUBST(PCRE_VERSION)
AC_SUBST(POSIX_MALLOC_THRESHOLD)
AC_SUBST(UCP)
AC_SUBST(UTF8)
@@ -287,4 +289,4 @@ if test "x$enable_shared" = "xno" ; then
fi
dnl This must be last; it determines what files are written as well as config.h
-AC_OUTPUT(Makefile pcre.h:pcre.h.in pcre-config:pcre-config.in libpcre.pc:libpcre.pc.in pcrecpp.h:pcrecpp.h.in pcre_stringpiece.h:pcre_stringpiece.h.in RunGrepTest:RunGrepTest.in RunTest:RunTest.in,[chmod a+x RunTest RunGrepTest pcre-config])
+AC_OUTPUT(Makefile pcre-config:pcre-config.in libpcre.pc:libpcre.pc.in pcrecpparg.h:pcrecpparg.h.in pcre_stringpiece.h:pcre_stringpiece.h.in RunGrepTest:RunGrepTest.in RunTest:RunTest.in,[chmod a+x RunTest RunGrepTest pcre-config])
diff --git a/dftables.c b/dftables.c
index 4807538..5ba207a 100644
--- a/dftables.c
+++ b/dftables.c
@@ -6,7 +6,7 @@
and semantics are as close as possible to those of the Perl 5 language.
Written by Philip Hazel
- Copyright (c) 1997-2005 University of Cambridge
+ Copyright (c) 1997-2006 University of Cambridge
-----------------------------------------------------------------------------
Redistribution and use in source and binary forms, with or without
diff --git a/doc/Tech.Notes b/doc/Tech.Notes
index 322cc2d..aa5398d 100644
--- a/doc/Tech.Notes
+++ b/doc/Tech.Notes
@@ -309,7 +309,10 @@ Recursion
Recursion either matches the current regex, or some subexpression. The opcode
OP_RECURSE is followed by an value which is the offset to the starting bracket
-from the start of the whole pattern.
+from the start of the whole pattern. From release 6.5, OP_RECURSE is
+automatically wrapped inside OP_ONCE brackets (because otherwise some patterns
+broke it). OP_RECURSE is also used for "subroutine" calls, even though they
+are not strictly a recursion.
Callout
@@ -336,4 +339,4 @@ at compile time, and so does not cause anything to be put into the compiled
data.
Philip Hazel
-March 2005
+January 2006
diff --git a/doc/html/pcre.html b/doc/html/pcre.html
index 1f36924..f392371 100644
--- a/doc/html/pcre.html
+++ b/doc/html/pcre.html
@@ -156,10 +156,13 @@ If PCRE is built with Unicode character property support (which implies UTF-8
support), the escape sequences \p{..}, \P{..}, and \X are supported.
The available properties that can be tested are limited to the general
category properties such as Lu for an upper case letter or Nd for a decimal
-number. A full list is given in the
+number, the Unicode script names such as Arabic or Han, and the derived
+properties Any and L&. A full list is given in the
<a href="pcrepattern.html"><b>pcrepattern</b></a>
-documentation. The PCRE library is increased in size by about 90K when Unicode
-property support is included.
+documentation. Only the short names for properties are supported. For example,
+\p{L} matches a letter. Its Perl synonym, \p{Letter}, is not supported.
+Furthermore, in Perl, many properties may optionally be prefixed by "Is", for
+compatibility with Perl 5.6. PCRE does not support this.
</P>
<P>
The following comments apply when PCRE is running in UTF-8 mode:
@@ -177,31 +180,23 @@ PCRE when PCRE_NO_UTF8_CHECK is set, the results are undefined. Your program
may crash.
</P>
<P>
-2. In a pattern, the escape sequence \x{...}, where the contents of the braces
-is a string of hexadecimal digits, is interpreted as a UTF-8 character whose
-code number is the given hexadecimal number, for example: \x{1234}. If a
-non-hexadecimal digit appears between the braces, the item is not recognized.
-This escape sequence can be used either as a literal, or within a character
-class.
+2. An unbraced hexadecimal escape sequence (such as \xb3) matches a two-byte
+UTF-8 character if the value is greater than 127.
</P>
<P>
-3. The original hexadecimal escape sequence, \xhh, matches a two-byte UTF-8
-character if the value is greater than 127.
-</P>
-<P>
-4. Repeat quantifiers apply to complete UTF-8 characters, not to individual
+3. Repeat quantifiers apply to complete UTF-8 characters, not to individual
bytes, for example: \x{100}{3}.
</P>
<P>
-5. The dot metacharacter matches one UTF-8 character instead of a single byte.
+4. The dot metacharacter matches one UTF-8 character instead of a single byte.
</P>
<P>
-6. The escape sequence \C can be used to match a single byte in UTF-8 mode,
+5. The escape sequence \C can be used to match a single byte in UTF-8 mode,
but its use can lead to some strange effects. This facility is not available in
the alternative matching function, <b>pcre_dfa_exec()</b>.
</P>
<P>
-7. The character escapes \b, \B, \d, \D, \s, \S, \w, and \W correctly
+6. The character escapes \b, \B, \d, \D, \s, \S, \w, and \W correctly
test characters of any code value, but the characters that PCRE recognizes as
digits, spaces, or word characters remain the same set as before, all with
values less than 256. This remains true even when PCRE includes Unicode
@@ -210,16 +205,19 @@ cases. If you really want to test for a wider sense of, say, "digit", you
must use Unicode property tests such as \p{Nd}.
</P>
<P>
-8. Similarly, characters that match the POSIX named character classes are all
+7. Similarly, characters that match the POSIX named character classes are all
low-valued characters.
</P>
<P>
-9. Case-insensitive matching applies only to characters whose values are less
+8. Case-insensitive matching applies only to characters whose values are less
than 128, unless PCRE is built with Unicode property support. Even when Unicode
property support is available, PCRE still uses its own character tables when
checking the case of low-valued characters, so as not to degrade performance.
The Unicode property information is used only for characters with higher
-values.
+values. Even when Unicode property support is available, PCRE supports
+case-insensitive matching only when there is a one-to-one mapping between a
+letter's cases. There are a small number of many-to-one mappings in Unicode;
+these are not supported by PCRE.
</P>
<br><a name="SEC5" href="#TOC1">AUTHOR</a><br>
<P>
@@ -233,9 +231,9 @@ Cambridge CB2 3QG, England.
Putting an actual email address here seems to have been a spam magnet, so I've
taken it away. If you want to email me, use my initial and surname, separated
by a dot, at the domain ucs.cam.ac.uk.
-Last updated: 07 March 2005
+Last updated: 24 January 2006
<br>
-Copyright &copy; 1997-2005 University of Cambridge.
+Copyright &copy; 1997-2006 University of Cambridge.
<p>
Return to the <a href="index.html">PCRE index page</a>.
</p>
diff --git a/doc/html/pcre_config.html b/doc/html/pcre_config.html
index 8d8cc60..62ee2b6 100644
--- a/doc/html/pcre_config.html
+++ b/doc/html/pcre_config.html
@@ -36,6 +36,8 @@ The available codes are:
<pre>
PCRE_CONFIG_LINK_SIZE Internal link size: 2, 3, or 4
PCRE_CONFIG_MATCH_LIMIT Internal resource limit
+ PCRE_CONFIG_MATCH_LIMIT_RECURSION
+ Internal recursion depth limit
PCRE_CONFIG_NEWLINE Value of the newline character
PCRE_CONFIG_POSIX_MALLOC_THRESHOLD
Threshold of return slots, above
diff --git a/doc/html/pcre_dfa_exec.html b/doc/html/pcre_dfa_exec.html
index ceadb8b..10c29e2 100644
--- a/doc/html/pcre_dfa_exec.html
+++ b/doc/html/pcre_dfa_exec.html
@@ -69,13 +69,15 @@ A <b>pcre_extra</b> structure contains the following fields:
<pre>
<i>flags</i> Bits indicating which fields are set
<i>study_data</i> Opaque data from <b>pcre_study()</b>
- <i>match_limit</i> Limit on internal recursion
+ <i>match_limit</i> Limit on internal resource use
+ <i>match_limit_recursion</i> Limit on internal recursion depth
<i>callout_data</i> Opaque data passed back to callouts
<i>tables</i> Points to character tables or is NULL
</pre>
The flag bits are PCRE_EXTRA_STUDY_DATA, PCRE_EXTRA_MATCH_LIMIT,
-PCRE_EXTRA_CALLOUT_DATA, and PCRE_EXTRA_TABLES. For DFA matching, the
-<i>match_limit</i> field is not used, and must not be set.
+PCRE_EXTRA_MATCH_LIMIT_RECURSION, PCRE_EXTRA_CALLOUT_DATA, and
+PCRE_EXTRA_TABLES. For DFA matching, the <i>match_limit</i> and
+<i>match_limit_recursion</i> fields are not used, and must not be set.
</P>
<P>
There is a complete description of the PCRE native API in the
diff --git a/doc/html/pcre_exec.html b/doc/html/pcre_exec.html
index 5fae92f..c2581ee 100644
--- a/doc/html/pcre_exec.html
+++ b/doc/html/pcre_exec.html
@@ -61,12 +61,14 @@ A <b>pcre_extra</b> structure contains the following fields:
<pre>
<i>flags</i> Bits indicating which fields are set
<i>study_data</i> Opaque data from <b>pcre_study()</b>
- <i>match_limit</i> Limit on internal recursion
+ <i>match_limit</i> Limit on internal resource use
+ <i>match_limit_recursion</i> Limit on internal recursion depth
<i>callout_data</i> Opaque data passed back to callouts
<i>tables</i> Points to character tables or is NULL
</pre>
The flag bits are PCRE_EXTRA_STUDY_DATA, PCRE_EXTRA_MATCH_LIMIT,
-PCRE_EXTRA_CALLOUT_DATA, and PCRE_EXTRA_TABLES.
+PCRE_EXTRA_MATCH_LIMIT_RECURSION, PCRE_EXTRA_CALLOUT_DATA, and
+PCRE_EXTRA_TABLES.
</P>
<P>
There is a complete description of the PCRE native API in the
diff --git a/doc/html/pcreapi.html b/doc/html/pcreapi.html
index 29492a7..b4ca4c4 100644
--- a/doc/html/pcreapi.html
+++ b/doc/html/pcreapi.html
@@ -302,6 +302,12 @@ The output is an integer that gives the default limit for the number of
internal matching function calls in a <b>pcre_exec()</b> execution. Further
details are given with <b>pcre_exec()</b> below.
<pre>
+ PCRE_CONFIG_MATCH_LIMIT_RECURSION
+</pre>
+The output is an integer that gives the default limit for the depth of
+recursion when calling the internal matching function in a <b>pcre_exec()</b>
+execution. Further details are given with <b>pcre_exec()</b> below.
+<pre>
PCRE_CONFIG_STACKRECURSE
</pre>
The output is an integer that is set to one if internal recursion when running
@@ -358,8 +364,9 @@ time.
If <i>errptr</i> is NULL, <b>pcre_compile()</b> returns NULL immediately.
Otherwise, if compilation of a pattern fails, <b>pcre_compile()</b> returns
NULL, and sets the variable pointed to by <i>errptr</i> to point to a textual
-error message. The offset from the start of the pattern to the character where
-the error was discovered is placed in the variable pointed to by
+error message. This is a static string that is part of the library. You must
+not try to free it. The offset from the start of the pattern to the character
+where the error was discovered is placed in the variable pointed to by
<i>erroffset</i>, which must not be NULL. If it is, an immediate error is given.
</P>
<P>
@@ -615,9 +622,10 @@ options are defined, and this argument should always be zero.
<P>
The third argument for <b>pcre_study()</b> is a pointer for an error message. If
studying succeeds (even if no data is returned), the variable it points to is
-set to NULL. Otherwise it points to a textual error message. You should
-therefore test the error pointer for NULL after calling <b>pcre_study()</b>, to
-be sure that it has run successfully.
+set to NULL. Otherwise it is set to point to a textual error message. This is a
+static string that is part of the library. You must not try to free it. You
+should test the error pointer for NULL after calling <b>pcre_study()</b>, to be
+sure that it has run successfully.
</P>
<P>
This is a typical call to <b>pcre_study</b>():
@@ -639,7 +647,7 @@ digits, or whatever, by reference to a set of tables, indexed by character
value. When running in UTF-8 mode, this applies only to characters with codes
less than 128. Higher-valued codes never match escapes such as \w or \d, but
can be tested with \p if PCRE is built with Unicode character property
-support.
+support. The use of locales with Unicode is discouraged.
</P>
<P>
An internal set of tables is created in the default C locale when PCRE is
@@ -947,12 +955,13 @@ Extra data for <b>pcre_exec()</b>
If the <i>extra</i> argument is not NULL, it must point to a <b>pcre_extra</b>
data block. The <b>pcre_study()</b> function returns such a block (when it
doesn't return NULL), but you can also create one for yourself, and pass
-additional information in it. The fields in a <b>pcre_extra</b> block are as
-follows:
+additional information in it. The <b>pcre_extra</b> block contains the following
+fields (not necessarily in this order):
<pre>
unsigned long int <i>flags</i>;
void *<i>study_data</i>;
unsigned long int <i>match_limit</i>;
+ unsigned long int <i>match_limit_recursion</i>;
void *<i>callout_data</i>;
const unsigned char *<i>tables</i>;
</pre>
@@ -961,6 +970,7 @@ are set. The flag bits are:
<pre>
PCRE_EXTRA_STUDY_DATA
PCRE_EXTRA_MATCH_LIMIT
+ PCRE_EXTRA_MATCH_LIMIT_RECURSION
PCRE_EXTRA_CALLOUT_DATA
PCRE_EXTRA_TABLES
</pre>
@@ -977,18 +987,39 @@ classic example is the use of nested unlimited repeats.
</P>
<P>
Internally, PCRE uses a function called <b>match()</b> which it calls repeatedly
-(sometimes recursively). The limit is imposed on the number of times this
-function is called during a match, which has the effect of limiting the amount
-of recursion and backtracking that can take place. For patterns that are not
-anchored, the count starts from zero for each position in the subject string.
+(sometimes recursively). The limit set by <i>match_limit</i> is imposed on the
+number of times this function is called during a match, which has the effect of
+limiting the amount of backtracking that can take place. For patterns that are
+not anchored, the count restarts from zero for each position in the subject
+string.
</P>
<P>
-The default limit for the library can be set when PCRE is built; the default
+The default value for the limit can be set when PCRE is built; the default
default is 10 million, which handles all but the most extreme cases. You can
-reduce the default by suppling <b>pcre_exec()</b> with a <b>pcre_extra</b> block
-in which <i>match_limit</i> is set to a smaller value, and
-PCRE_EXTRA_MATCH_LIMIT is set in the <i>flags</i> field. If the limit is
-exceeded, <b>pcre_exec()</b> returns PCRE_ERROR_MATCHLIMIT.
+override the default by suppling <b>pcre_exec()</b> with a <b>pcre_extra</b>
+block in which <i>match_limit</i> is set, and PCRE_EXTRA_MATCH_LIMIT is set in
+the <i>flags</i> field. If the limit is exceeded, <b>pcre_exec()</b> returns
+PCRE_ERROR_MATCHLIMIT.
+</P>
+<P>
+The <i>match_limit_recursion</i> field is similar to <i>match_limit</i>, but
+instead of limiting the total number of times that <b>match()</b> is called, it
+limits the depth of recursion. The recursion depth is a smaller number than the
+total number of calls, because not all calls to <b>match()</b> are recursive.
+This limit is of use only if it is set smaller than <i>match_limit</i>.
+</P>
+<P>
+Limiting the recursion depth limits the amount of stack that can be used, or,
+when PCRE has been compiled to use memory on the heap instead of the stack, the
+amount of heap memory that can be used.
+</P>
+<P>
+The default value for <i>match_limit_recursion</i> can be set when PCRE is
+built; the default default is the same value as the default for
+<i>match_limit</i>. You can override the default by suppling <b>pcre_exec()</b>
+with a <b>pcre_extra</b> block in which <i>match_limit_recursion</i> is set, and
+PCRE_EXTRA_MATCH_LIMIT_RECURSION is set in the <i>flags</i> field. If the limit
+is exceeded, <b>pcre_exec()</b> returns PCRE_ERROR_RECURSIONLIMIT.
</P>
<P>
The <i>pcre_callout</i> field is used in conjunction with the "callout" feature,
@@ -1247,7 +1278,13 @@ below). It is never returned by <b>pcre_exec()</b>.
<pre>
PCRE_ERROR_MATCHLIMIT (-8)
</pre>
-The recursion and backtracking limit, as specified by the <i>match_limit</i>
+The backtracking limit, as specified by the <i>match_limit</i> field in a
+<b>pcre_extra</b> structure (or defaulted) was reached. See the description
+above.
+<pre>
+ PCRE_ERROR_RECURSIONLIMIT (-21)
+</pre>
+The internal recursion limit, as specified by the <i>match_limit_recursion</i>
field in a <b>pcre_extra</b> structure (or defaulted) was reached. See the
description above.
<pre>
@@ -1478,12 +1515,12 @@ multiple paths through the pattern tree. More workspace will be needed for
patterns and subjects where there are a lot of possible matches.
</P>
<P>
-Here is an example of a simple call to <b>pcre_exec()</b>:
+Here is an example of a simple call to <b>pcre_dfa_exec()</b>:
<pre>
int rc;
int ovector[10];
int wspace[20];
- rc = pcre_exec(
+ rc = pcre_dfa_exec(
re, /* result of pcre_compile() */
NULL, /* we didn't study the pattern */
"some string", /* the subject string */
@@ -1610,9 +1647,9 @@ error is given if the output vector is not large enough. This should be
extremely rare, as a vector of size 1000 is used.
</P>
<P>
-Last updated: 16 May 2005
+Last updated: 18 January 2006
<br>
-Copyright &copy; 1997-2005 University of Cambridge.
+Copyright &copy; 1997-2006 University of Cambridge.
<p>
Return to the <a href="index.html">PCRE index page</a>.
</p>
diff --git a/doc/html/pcrecompat.html b/doc/html/pcrecompat.html
index d15b3b0..21522f2 100644
--- a/doc/html/pcrecompat.html
+++ b/doc/html/pcrecompat.html
@@ -21,8 +21,8 @@ regular expressions. The differences described here are with respect to Perl
5.8.
</P>
<P>
-1. PCRE does not have full UTF-8 support. Details of what it does have are
-given in the
+1. PCRE has only a subset of Perl's UTF-8 and Unicode support. Details of what
+it does have are given in the
<a href="pcre.html#utf8support">section on UTF-8 support</a>
in the main
<a href="pcre.html"><b>pcre</b></a>
@@ -57,7 +57,8 @@ encountered by PCRE, an error is generated.
6. The Perl escape sequences \p, \P, and \X are supported only if PCRE is
built with Unicode character property support. The properties that can be
tested with \p and \P are limited to the general category properties such as
-Lu and Nd.
+Lu and Nd, script names such as Greek or Han, and the derived properties Any
+and L&.
</P>
<P>
7. PCRE does support the \Q...\E escape for quoting substrings. Characters in
@@ -146,9 +147,9 @@ different hosts that have the other endianness.
different way and is not Perl-compatible.
</P>
<P>
-Last updated: 28 February 2005
+Last updated: 24 January 2006
<br>
-Copyright &copy; 1997-2005 University of Cambridge.
+Copyright &copy; 1997-2006 University of Cambridge.
<p>
Return to the <a href="index.html">PCRE index page</a>.
</p>
diff --git a/doc/html/pcrecpp.html b/doc/html/pcrecpp.html
index 1d5acb7..8c3216d 100644
--- a/doc/html/pcrecpp.html
+++ b/doc/html/pcrecpp.html
@@ -188,13 +188,17 @@ which returns true if the modifier is set, and
<pre>
RE_Options & set_caseless(bool)
</pre>
-which sets or unsets the modifier. Moreover, PCRE_CONFIG_MATCH_LIMIT can be
+which sets or unsets the modifier. Moreover, PCRE_EXTRA_MATCH_LIMIT can be
accessed through the <b>set_match_limit()</b> and <b>match_limit()</b> member
functions. Setting <i>match_limit</i> to a non-zero value will limit the
execution of pcre to keep it from doing bad things like blowing the stack or
taking an eternity to return a result. A value of 5000 is good enough to stop
stack blowup in a 2MB thread stack. Setting <i>match_limit</i> to zero disables
-match limiting.
+match limiting. Alternatively, you can call <b>match_limit_recursion()</b>
+which uses PCRE_EXTRA_MATCH_LIMIT_RECURSION to limit how much PCRE
+recurses. <b>match_limit()</b> limits the number of matches PCRE does;
+<b>match_limit_recursion()</b> limits the depth of internal recursion, and
+therefore the amount of stack that is used.
</P>
<P>
Normally, to pass one or more modifiers to a RE class, you declare
diff --git a/doc/html/pcregrep.html b/doc/html/pcregrep.html
index 614034d..7b66c57 100644
--- a/doc/html/pcregrep.html
+++ b/doc/html/pcregrep.html
@@ -16,14 +16,16 @@ man page, in case the conversion went wrong.
<li><a name="TOC1" href="#SEC1">SYNOPSIS</a>
<li><a name="TOC2" href="#SEC2">DESCRIPTION</a>
<li><a name="TOC3" href="#SEC3">OPTIONS</a>
-<li><a name="TOC4" href="#SEC4">LONG OPTIONS</a>
-<li><a name="TOC5" href="#SEC5">OPTIONS WITH DATA</a>
-<li><a name="TOC6" href="#SEC6">DIAGNOSTICS</a>
-<li><a name="TOC7" href="#SEC7">AUTHOR</a>
+<li><a name="TOC4" href="#SEC4">ENVIRONMENT VARIABLES</a>
+<li><a name="TOC5" href="#SEC5">OPTIONS COMPATIBILITY</a>
+<li><a name="TOC6" href="#SEC6">OPTIONS WITH DATA</a>
+<li><a name="TOC7" href="#SEC7">MATCHING ERRORS</a>
+<li><a name="TOC8" href="#SEC8">DIAGNOSTICS</a>
+<li><a name="TOC9" href="#SEC9">AUTHOR</a>
</ul>
<br><a name="SEC1" href="#TOC1">SYNOPSIS</a><br>
<P>
-<b>pcregrep [options] [long options] [pattern] [file1 file2 ...]</b>
+<b>pcregrep [options] [long options] [pattern] [path1 path2 ...]</b>
</P>
<br><a name="SEC2" href="#TOC1">DESCRIPTION</a><br>
<P>
@@ -35,8 +37,23 @@ for a full description of syntax and semantics of the regular expressions that
PCRE supports.
</P>
<P>
-A pattern must be specified on the command line unless the <b>-f</b> option is
-used (see below).
+Patterns, whether supplied on the command line or in a separate file, are given
+without delimiters. For example:
+<pre>
+ pcregrep Thursday /etc/motd
+</pre>
+If you attempt to use delimiters (for example, by surrounding a pattern with
+slashes, as is common in Perl scripts), they are interpreted as part of the
+pattern. Quotes can of course be used on the command line because they are
+interpreted by the shell, and indeed they are required if a pattern contains
+white space or shell metacharacters.
+</P>
+<P>
+The first argument that follows any option settings is treated as the single
+pattern to be matched when neither <b>-e</b> nor <b>-f</b> is present.
+Conversely, when one or both of these options are used to specify patterns, all
+arguments are treated as path names. At least one of <b>-e</b>, <b>-f</b>, or an
+argument pattern must be provided.
</P>
<P>
If no files are specified, <b>pcregrep</b> reads the standard input. The
@@ -46,8 +63,8 @@ For example:
pcregrep some-pattern /file1 - /file3
</pre>
By default, each line that matches the pattern is copied to the standard
-output, and if there is more than one file, the file name is printed before
-each line of output. However, there are options that can change how
+output, and if there is more than one file, the file name is output at the
+start of each line. However, there are options that can change how
<b>pcregrep</b> behaves. In particular, the <b>-M</b> option makes it possible to
search for patterns that span line boundaries.
</P>
@@ -55,40 +72,98 @@ search for patterns that span line boundaries.
Patterns are limited to 8K or BUFSIZ characters, whichever is the greater.
BUFSIZ is defined in <b>&#60;stdio.h&#62;</b>.
</P>
+<P>
+If the <b>LC_ALL</b> or <b>LC_CTYPE</b> environment variable is set,
+<b>pcregrep</b> uses the value to set a locale when calling the PCRE library.
+The <b>--locale</b> option can be used to override this.
+</P>
<br><a name="SEC3" href="#TOC1">OPTIONS</a><br>
<P>
<b>--</b>
This terminate the list of options. It is useful if the next item on the
-command line starts with a hyphen, but is not an option.
+command line starts with a hyphen but is not an option. This allows for the
+processing of patterns and filenames that start with hyphens.
</P>
<P>
-<b>-A</b> <i>number</i>
-Print <i>number</i> lines of context after each matching line. If file names
-and/or line numbers are being printed, a hyphen separator is used instead of a
-colon for the context lines. A line containing "--" is printed between each
+<b>-A</b> <i>number</i>, <b>--after-context=</b><i>number</i>
+Output <i>number</i> lines of context after each matching line. If filenames
+and/or line numbers are being output, a hyphen separator is used instead of a
+colon for the context lines. A line containing "--" is output between each
group of lines, unless they are in fact contiguous in the input file. The value
of <i>number</i> is expected to be relatively small. However, <b>pcregrep</b>
-guarantees to have up to 8K of following text available for context printing.
+guarantees to have up to 8K of following text available for context output.
</P>
<P>
-<b>-B</b> <i>number</i>
-Print <i>number</i> lines of context before each matching line. If file names
-and/or line numbers are being printed, a hyphen separator is used instead of a
-colon for the context lines. A line containing "--" is printed between each
+<b>-B</b> <i>number</i>, <b>--before-context=</b><i>number</i>
+Output <i>number</i> lines of context before each matching line. If filenames
+and/or line numbers are being output, a hyphen separator is used instead of a
+colon for the context lines. A line containing "--" is output between each
group of lines, unless they are in fact contiguous in the input file. The value
of <i>number</i> is expected to be relatively small. However, <b>pcregrep</b>
-guarantees to have up to 8K of preceding text available for context printing.
+guarantees to have up to 8K of preceding text available for context output.
</P>
<P>
-<b>-C</b> <i>number</i>
-Print <i>number</i> lines of context both before and after each matching line.
+<b>-C</b> <i>number</i>, <b>--context=</b><i>number</i>
+Output <i>number</i> lines of context both before and after each matching line.
This is equivalent to setting both <b>-A</b> and <b>-B</b> to the same value.
</P>
<P>
-<b>-c</b>
-Do not print individual lines; instead just print a count of the number of
-lines that would otherwise have been printed. If several files are given, a
-count is printed for each of them.
+<b>-c</b>, <b>--count</b>
+Do not output individual lines; instead just output a count of the number of
+lines that would otherwise have been output. If several files are given, a
+count is output for each of them. In this mode, the <b>-A</b>, <b>-B</b>, and
+<b>-C</b> options are ignored.
+</P>
+<P>
+<b>--colour</b>, <b>--color</b>
+If this option is given without any data, it is equivalent to "--colour=auto".
+If data is required, it must be given in the same shell item, separated by an
+equals sign.
+</P>
+<P>
+<b>--colour=</b><i>value</i>, <b>--color=</b><i>value</i>
+This option specifies under what circumstances the part of a line that matched
+a pattern should be coloured in the output. The value may be "never" (the
+default), "always", or "auto". In the latter case, colouring happens only if
+the standard output is connected to a terminal. The colour can be specified by
+setting the environment variable PCREGREP_COLOUR or PCREGREP_COLOR. The value
+of this variable should be a string of two numbers, separated by a semicolon.
+They are copied directly into the control string for setting colour on a
+terminal, so it is your responsibility to ensure that they make sense. If
+neither of the environment variables is set, the default is "1;31", which gives
+red.
+</P>
+<P>
+<b>-D</b> <i>action</i>, <b>--devices=</b><i>action</i>
+If an input path is not a regular file or a directory, "action" specifies how
+it is to be processed. Valid values are "read" (the default) or "skip"
+(silently skip the path).
+</P>
+<P>
+<b>-d</b> <i>action</i>, <b>--directories=</b><i>action</i>
+If an input path is a directory, "action" specifies how it is to be processed.
+Valid values are "read" (the default), "recurse" (equivalent to the <b>-r</b>
+option), or "skip" (silently skip the path). In the default case, directories
+are read as if they were ordinary files. In some operating systems the effect
+of reading a directory like this is an immediate end-of-file.
+</P>
+<P>
+<b>-e</b> <i>pattern</i>, <b>--regex=</b><i>pattern</i>,
+<b>--regexp=</b><i>pattern</i> Specify a pattern to be matched. This option can
+be used multiple times in order to specify several patterns. It can also be
+used as a way of specifying a single pattern that starts with a hyphen. When
+<b>-e</b> is used, no argument pattern is taken from the command line; all
+arguments are treated as file names. There is an overall maximum of 100
+patterns. They are applied to each line in the order in which they are defined
+until one matches (or fails to match if <b>-v</b> is used). If <b>-f</b> is used
+with <b>-e</b>, the command line patterns are matched first, followed by the
+patterns from the file, independent of the order in which these options are
+specified. Note that multiple use of <b>-e</b> is not the same as a single
+pattern with alternatives. For example, X|Y finds the first character in a line
+that is X or Y, whereas if the two patterns are given separately,
+<b>pcregrep</b> finds X if it is present, even if it follows Y in the line. It
+finds Y only if there is no X in the line. This really matters only if you are
+using <b>-o</b> to show the portion of the line that matched.
</P>
<P>
<b>--exclude</b>=<i>pattern</i>
@@ -99,50 +174,85 @@ both <b>--include</b> and <b>--exclude</b>, it is excluded. There is no short
form for this option.
</P>
<P>
-<b>-f</b><i>filename</i>
-Read a number of patterns from the file, one per line, and match all of them
-against each line of input. A line is output if any of the patterns match it.
-When <b>-f</b> is used, no pattern is taken from the command line; all arguments
-are treated as file names. There is a maximum of 100 patterns. Trailing white
-space is removed, and blank lines are ignored. An empty file contains no
-patterns and therefore matches nothing.
+<b>-F</b>, <b>--fixed-strings</b>
+Interpret each pattern as a list of fixed strings, separated by newlines,
+instead of as a regular expression. The <b>-w</b> (match as a word) and <b>-x</b>
+(match whole line) options can be used with <b>-F</b>. They apply to each of the
+fixed strings. A line is selected if any of the fixed strings are found in it
+(subject to <b>-w</b> or <b>-x</b>, if present).
</P>
<P>
-<b>-h</b>
-Suppress printing of filenames when searching multiple files.
+<b>-f</b> <i>filename</i>, <b>--file=</b><i>filename</i>
+Read a number of patterns from the file, one per line, and match them against
+each line of input. A data line is output if any of the patterns match it. The
+filename can be given as "-" to refer to the standard input. When <b>-f</b> is
+used, patterns specified on the command line using <b>-e</b> may also be
+present; they are tested before the file's patterns. However, no other pattern
+is taken from the command line; all arguments are treated as file names. There
+is an overall maximum of 100 patterns. Trailing white space is removed from
+each line, and blank lines are ignored. An empty file contains no patterns and
+therefore matches nothing.
</P>
<P>
-<b>-i</b>
+<b>-H</b>, <b>--with-filename</b>
+Force the inclusion of the filename at the start of output lines when searching
+a single file. By default, the filename is not shown in this case. For matching
+lines, the filename is followed by a colon and a space; for context lines, a
+hyphen separator is used. If a line number is also being output, it follows the
+file name without a space.
+</P>
+<P>
+<b>-h</b>, <b>--no-filename</b>
+Suppress the output filenames when searching multiple files. By default,
+filenames are shown when multiple files are searched. For matching lines, the
+filename is followed by a colon and a space; for context lines, a hyphen
+separator is used. If a line number is also being output, it follows the file
+name without a space.
+</P>
+<P>
+<b>--help</b>
+Output a brief help message and exit.
+</P>
+<P>
+<b>-i</b>, <b>--ignore-case</b>
Ignore upper/lower case distinctions during comparisons.
</P>
<P>
<b>--include</b>=<i>pattern</i>
When <b>pcregrep</b> is searching the files in a directory as a consequence of
-the <b>-r</b> (recursive search) option, only files whose names match the
+the <b>-r</b> (recursive search) option, only those files whose names match the
pattern are included. The pattern is a PCRE regular expression. If a file name
matches both <b>--include</b> and <b>--exclude</b>, it is excluded. There is no
short form for this option.
</P>
<P>
-<b>-L</b>
-Instead of printing lines from the files, just print the names of the files
-that do not contain any lines that would have been printed. Each file name is
-printed once, on a separate line.
+<b>-L</b>, <b>--files-without-match</b>
+Instead of outputting lines from the files, just output the names of the files
+that do not contain any lines that would have been output. Each file name is
+output once, on a separate line.
</P>
<P>
-<b>-l</b>
-Instead of printing lines from the files, just print the names of the files
-containing lines that would have been printed. Each file name is printed
-once, on a separate line.
+<b>-l</b>, <b>--files-with-matches</b>
+Instead of outputting lines from the files, just output the names of the files
+containing lines that would have been output. Each file name is output
+once, on a separate line. Searching stops as soon as a matching line is found
+in a file.
</P>
<P>
<b>--label</b>=<i>name</i>
This option supplies a name to be used for the standard input when file names
-are being printed. If not supplied, "(standard input)" is used. There is no
+are being output. If not supplied, "(standard input)" is used. There is no
short form for this option.
</P>
<P>
-<b>-M</b>
+<b>--locale</b>=<i>locale-name</i>
+This option specifies a locale to be used for pattern matching. It overrides
+the value in the <b>LC_ALL</b> or <b>LC_CTYPE</b> environment variables. If no
+locale is specified, the PCRE library's default (usually the "C" locale) is
+used. There is no short form for this option.
+</P>
+<P>
+<b>-M</b>, <b>--multiline</b>
Allow patterns to match more than one line. When this option is given, patterns
may usefully contain literal newline characters and internal occurrences of ^
and $ characters. The output for any one match may consist of more than one
@@ -155,84 +265,80 @@ the previous 8K characters (or all the previous characters, if fewer than 8K)
are guaranteed to be available for lookbehind assertions.
</P>
<P>
-<b>-n</b>
-Precede each line by its line number in the file.
+<b>-n</b>, <b>--line-number</b>
+Precede each output line by its line number in the file, followed by a colon
+and a space for matching lines or a hyphen and a space for context lines. If
+the filename is also being output, it precedes the line number.
+</P>
+<P>
+<b>-o</b>, <b>--only-matching</b>
+Show only the part of the line that matched a pattern. In this mode, no
+context is shown. That is, the <b>-A</b>, <b>-B</b>, and <b>-C</b> options are
+ignored.
</P>
<P>
-<b>-q</b>
-Work quietly, that is, display nothing except error messages.
-The exit status indicates whether or not any matches were found.
+<b>-q</b>, <b>--quiet</b>
+Work quietly, that is, display nothing except error messages. The exit
+status indicates whether or not any matches were found.
</P>
<P>
-<b>-r</b>
+<b>-r</b>, <b>--recursive</b>
If any given path is a directory, recursively scan the files it contains,
-taking note of any <b>--include</b> and <b>--exclude</b> settings. Without
-<b>-r</b> a directory is scanned as a normal file.
+taking note of any <b>--include</b> and <b>--exclude</b> settings. By default, a
+directory is read as a normal file; in some operating systems this gives an
+immediate end-of-file. This option is a shorthand for setting the <b>-d</b>
+option to "recurse".
</P>
<P>
-<b>-s</b>
+<b>-s</b>, <b>--no-messages</b>
Suppress error messages about non-existent or unreadable files. Such files are
quietly skipped. However, the return code is still 2, even if matches were
found in other files.
</P>
<P>
-<b>-u</b>
+<b>-u</b>, <b>--utf-8</b>
Operate in UTF-8 mode. This option is available only if PCRE has been compiled
-with UTF-8 support. Both the pattern and each subject line must be valid
-strings of UTF-8 characters.
+with UTF-8 support. Both patterns and subject lines must be valid strings of
+UTF-8 characters.
</P>
<P>
-<b>-V</b>
+<b>-V</b>, <b>--version</b>
Write the version numbers of <b>pcregrep</b> and the PCRE library that is being
used to the standard error stream.
</P>
<P>
-<b>-v</b>
-Invert the sense of the match, so that lines which do <i>not</i> match the
-pattern are the ones that are found.
+<b>-v</b>, <b>--invert-match</b>
+Invert the sense of the match, so that lines which do <i>not</i> match any of
+the patterns are the ones that are found.
</P>
<P>
-<b>-w</b>
-Force the pattern to match only whole words. This is equivalent to having \b
+<b>-w</b>, <b>--word-regex</b>, <b>--word-regexp</b>
+Force the patterns to match only whole words. This is equivalent to having \b
at the start and end of the pattern.
</P>
<P>
-<b>-x</b>
-Force the pattern to be anchored (it must start matching at the beginning of
-the line) and in addition, require it to match the entire line. This is
+<b>-x</b>, <b>--line-regex</b>, \fP--line-regexp\fP
+Force the patterns to be anchored (each must start matching at the beginning of
+a line) and in addition, require them to match entire lines. This is
equivalent to having ^ and $ characters at the start and end of each
-alternative branch in the regular expression.
+alternative branch in every pattern.
</P>
-<br><a name="SEC4" href="#TOC1">LONG OPTIONS</a><br>
+<br><a name="SEC4" href="#TOC1">ENVIRONMENT VARIABLES</a><br>
<P>
-Long forms of all the options are available, as in GNU grep. They are shown in
-the following table:
-<pre>
- -A --after-context
- -B --before-context
- -C --context
- -c --count
- --exclude (no short form)
- -f --file
- -h --no-filename
- --help (no short form)
- -i --ignore-case
- --include (no short form)
- -L --files-without-match
- -l --files-with-matches
- --label (no short form)
- -n --line-number
- -r --recursive
- -q --quiet
- -s --no-messages
- -u --utf-8
- -V --version
- -v --invert-match
- -x --line-regex
- -x --line-regexp
-</PRE>
-</P>
-<br><a name="SEC5" href="#TOC1">OPTIONS WITH DATA</a><br>
+The environment variables <b>LC_ALL</b> and <b>LC_CTYPE</b> are examined, in that
+order, for a locale. The first one that is set is used. This can be overridden
+by the <b>--locale</b> option. If no locale is set, the PCRE library's default
+(usually the "C" locale) is used.
+</P>
+<br><a name="SEC5" href="#TOC1">OPTIONS COMPATIBILITY</a><br>
+<P>
+The majority of short and long forms of <b>pcregrep</b>'s options are the same
+as in the GNU <b>grep</b> program. Any long option of the form
+<b>--xxx-regexp</b> (GNU terminology) is also available as <b>--xxx-regex</b>
+(PCRE terminology). However, the <b>--locale</b>, <b>-M</b>, <b>--multiline</b>,
+<b>-u</b>, and <b>--utf-8</b> options are specific to <b>pcregrep</b>.
+</P>
+<br><a name="SEC6" href="#TOC1">OPTIONS WITH DATA</a><br>
<P>
There are four different ways in which an option with data can be specified.
If a short form option is used, the data may follow immediately, or in the next
@@ -242,22 +348,42 @@ command line item. For example:
-f /some/file
</pre>
If a long form option is used, the data may appear in the same command line
-item, separated by an = character, or it may appear in the next command line
-item. For example:
+item, separated by an equals character, or (with one exception) it may appear
+in the next command line item. For example:
<pre>
--file=/some/file
--file /some/file
-
-</PRE>
+</pre>
+Note, however, that if you want to supply a file name beginning with ~ as data
+in a shell command, and have the shell expand ~ to a home directory, you must
+separate the file name from the option, because the shell does not treat ~
+specially unless it is at the start of an item.
+</P>
+<P>
+The exception to the above is the <b>--colour</b> (or <b>--color</b>) option,
+for which the data is optional. If this option does have data, it must be given
+in the first form, using an equals character. Otherwise it will be assumed that
+it has no data.
+</P>
+<br><a name="SEC7" href="#TOC1">MATCHING ERRORS</a><br>
+<P>
+It is possible to supply a regular expression that takes a very long time to
+fail to match certain lines. Such patterns normally involve nested indefinite
+repeats, for example: (a+)*\d when matched against a line of a's with no final
+digit. The PCRE matching function has a resource limit that causes it to abort
+in these circumstances. If this happens, <b>pcregrep</b> outputs an error
+message and the line that caused the problem to the standard error stream. If
+there are more than 20 such errors, <b>pcregrep</b> gives up.
</P>
-<br><a name="SEC6" href="#TOC1">DIAGNOSTICS</a><br>
+<br><a name="SEC8" href="#TOC1">DIAGNOSTICS</a><br>
<P>
Exit status is 0 if any matches were found, 1 if no matches were found, and 2
for syntax errors and non-existent or inacessible files (even if matches were
-found in other files). Using the <b>-s</b> option to suppress error messages
-about inaccessble files does not affect the return code.
+found in other files) or too many matching errors. Using the <b>-s</b> option to
+suppress error messages about inaccessble files does not affect the return
+code.
</P>
-<br><a name="SEC7" href="#TOC1">AUTHOR</a><br>
+<br><a name="SEC9" href="#TOC1">AUTHOR</a><br>
<P>
Philip Hazel
<br>
@@ -266,9 +392,9 @@ University Computing Service
Cambridge CB2 3QG, England.
</P>
<P>
-Last updated: 16 May 2005
+Last updated: 23 January 2006
<br>
-Copyright &copy; 1997-2005 University of Cambridge.
+Copyright &copy; 1997-2006 University of Cambridge.
<p>
Return to the <a href="index.html">PCRE index page</a>.
</p>
diff --git a/doc/html/pcrepartial.html b/doc/html/pcrepartial.html
index 0dbfc02..acb93c2 100644
--- a/doc/html/pcrepartial.html
+++ b/doc/html/pcrepartial.html
@@ -197,9 +197,29 @@ Because of this phenomenon, it does not usually make sense to end a pattern
that is going to be matched in this way with a variable repeat.
</P>
<P>
-Last updated: 28 February 2005
+4. Patterns that contain alternatives at the top level which do not all
+start with the same pattern item may not work as expected. For example,
+consider this pattern:
+<pre>
+ 1234|3789
+</pre>
+If the first part of the subject is "ABC123", a partial match of the first
+alternative is found at offset 3. There is no partial match for the second
+alternative, because such a match does not start at the same point in the
+subject string. Attempting to continue with the string "789" does not yield a
+match because only those alternatives that match at one point in the subject
+are remembered. The problem arises because the start of the second alternative
+matches within the first alternative. There is no problem with anchored
+patterns or patterns such as:
+<pre>
+ 1234|ABCD
+</pre>
+where no string can be a partial match for both alternatives.
+</P>
+<P>
+Last updated: 16 January 2006
<br>
-Copyright &copy; 1997-2005 University of Cambridge.
+Copyright &copy; 1997-2006 University of Cambridge.
<p>
Return to the <a href="index.html">PCRE index page</a>.
</p>
diff --git a/doc/html/pcrepattern.html b/doc/html/pcrepattern.html
index 0f77b32..6df9ed8 100644
--- a/doc/html/pcrepattern.html
+++ b/doc/html/pcrepattern.html
@@ -175,7 +175,7 @@ represents:
\t tab (hex 09)
\ddd character with octal code ddd, or backreference
\xhh character with hex code hh
- \x{hhh..} character with hex code hhh... (UTF-8 mode only)
+ \x{hhh..} character with hex code hhh..
</pre>
The precise effect of \cx is as follows: if x is a lower case letter, it
is converted to upper case. Then bit 6 of the character (hex 40) is inverted.
@@ -184,18 +184,18 @@ Thus \cz becomes hex 1A, but \c{ becomes hex 3B, while \c; becomes hex
</P>
<P>
After \x, from zero to two hexadecimal digits are read (letters can be in
-upper or lower case). In UTF-8 mode, any number of hexadecimal digits may
-appear between \x{ and }, but the value of the character code must be less
-than 2**31 (that is, the maximum hexadecimal value is 7FFFFFFF). If characters
-other than hexadecimal digits appear between \x{ and }, or if there is no
-terminating }, this form of escape is not recognized. Instead, the initial
-\x will be interpreted as a basic hexadecimal escape, with no following
-digits, giving a character whose value is zero.
+upper or lower case). Any number of hexadecimal digits may appear between \x{
+and }, but the value of the character code must be less than 256 in non-UTF-8
+mode, and less than 2**31 in UTF-8 mode (that is, the maximum hexadecimal value
+is 7FFFFFFF). If characters other than hexadecimal digits appear between \x{
+and }, or if there is no terminating }, this form of escape is not recognized.
+Instead, the initial \x will be interpreted as a basic hexadecimal escape,
+with no following digits, giving a character whose value is zero.
</P>
<P>
Characters whose value is less than 256 can be defined by either of the two
-syntaxes for \x when PCRE is in UTF-8 mode. There is no difference in the
-way they are handled. For example, \xdc is exactly the same as \x{dc}.
+syntaxes for \x. There is no difference in the way they are handled. For
+example, \xdc is exactly the same as \x{dc}.
</P>
<P>
After \0 up to two further octal digits are read. In both cases, if there
@@ -285,36 +285,117 @@ greater than 128 are used for accented letters, and these are matched by \w.
<P>
In UTF-8 mode, characters with values greater than 128 never match \d, \s, or
\w, and always match \D, \S, and \W. This is true even when Unicode
-character property support is available.
+character property support is available. The use of locales with Unicode is
+discouraged.
<a name="uniextseq"></a></P>
<br><b>
Unicode character properties
</b><br>
<P>
When PCRE is built with Unicode character property support, three additional
-escape sequences to match generic character types are available when UTF-8 mode
+escape sequences to match character properties are available when UTF-8 mode
is selected. They are:
<pre>
- \p{<i>xx</i>} a character with the <i>xx</i> property
- \P{<i>xx</i>} a character without the <i>xx</i> property
- \X an extended Unicode sequence
-</pre>
-The property names represented by <i>xx</i> above are limited to the
-Unicode general category properties. Each character has exactly one such
-property, specified by a two-letter abbreviation. For compatibility with Perl,
-negation can be specified by including a circumflex between the opening brace
-and the property name. For example, \p{^Lu} is the same as \P{Lu}.
-</P>
-<P>
-If only one letter is specified with \p or \P, it includes all the properties
-that start with that letter. In this case, in the absence of negation, the
-curly brackets in the escape sequence are optional; these two examples have
-the same effect:
+ \p{<i>xx</i>} a character with the <i>xx</i> property
+ \P{<i>xx</i>} a character without the <i>xx</i> property
+ \X an extended Unicode sequence
+</pre>
+The property names represented by <i>xx</i> above are limited to the Unicode
+script names, the general category properties, and "Any", which matches any
+character (including newline). Other properties such as "InMusicalSymbols" are
+not currently supported by PCRE. Note that \P{Any} does not match any
+characters, so always causes a match failure.
+</P>
+<P>
+Sets of Unicode characters are defined as belonging to certain scripts. A
+character from one of these sets can be matched using a script name. For
+example:
+<pre>
+ \p{Greek}
+ \P{Han}
+</pre>
+Those that are not part of an identified script are lumped together as
+"Common". The current list of scripts is:
+</P>
+<P>
+Arabic,
+Armenian,
+Bengali,
+Bopomofo,
+Braille,
+Buginese,
+Buhid,
+Canadian_Aboriginal,
+Cherokee,
+Common,
+Coptic,
+Cypriot,
+Cyrillic,
+Deseret,
+Devanagari,
+Ethiopic,
+Georgian,
+Glagolitic,
+Gothic,
+Greek,
+Gujarati,
+Gurmukhi,
+Han,
+Hangul,
+Hanunoo,
+Hebrew,
+Hiragana,
+Inherited,
+Kannada,
+Katakana,
+Kharoshthi,
+Khmer,
+Lao,
+Latin,
+Limbu,
+Linear_B,
+Malayalam,
+Mongolian,
+Myanmar,
+New_Tai_Lue,
+Ogham,
+Old_Italic,
+Old_Persian,
+Oriya,
+Osmanya,
+Runic,
+Shavian,
+Sinhala,
+Syloti_Nagri,
+Syriac,
+Tagalog,
+Tagbanwa,
+Tai_Le,
+Tamil,
+Telugu,
+Thaana,
+Thai,
+Tibetan,
+Tifinagh,
+Ugaritic,
+Yi.
+</P>
+<P>
+Each character has exactly one general category property, specified by a
+two-letter abbreviation. For compatibility with Perl, negation can be specified
+by including a circumflex between the opening brace and the property name. For
+example, \p{^Lu} is the same as \P{Lu}.
+</P>
+<P>
+If only one letter is specified with \p or \P, it includes all the general
+category properties that start with that letter. In this case, in the absence
+of negation, the curly brackets in the escape sequence are optional; these two
+examples have the same effect:
<pre>
\p{L}
\pL
</pre>
-The following property codes are supported:
+The following general category property codes are supported:
<pre>
C Other
Cc Control
@@ -360,8 +441,19 @@ The following property codes are supported:
Zp Paragraph separator
Zs Space separator
</pre>
-Extended properties such as "Greek" or "InMusicalSymbols" are not supported by
-PCRE.
+The special property L& is also supported: it matches a character that has
+the Lu, Ll, or Lt property, in other words, a letter that is not classified as
+a modifier or "other".
+</P>
+<P>
+The long synonyms for these properties that Perl supports (such as \p{Letter})
+are not supported by PCRE. Nor is is permitted to prefix any of these
+properties with "Is".
+</P>
+<P>
+No character that is in the Unicode table has the Cn (unassigned) property.
+Instead, this property is assumed for any code point that is not in the
+Unicode table.
</P>
<P>
Specifying caseless matching does not affect these escape sequences. For
@@ -1360,14 +1452,19 @@ number, provided that it occurs inside that subpattern. (If not, it is a
(?R) is a recursive call of the entire regular expression.
</P>
<P>
-For example, this PCRE pattern solves the nested parentheses problem (assume
-the PCRE_EXTENDED option is set so that white space is ignored):
+A recursive subpattern call is always treated as an atomic group. That is, once
+it has matched some of the subject string, it is never re-entered, even if
+it contains untried alternatives and there is a subsequent matching failure.
+</P>
+<P>
+This PCRE pattern solves the nested parentheses problem (assume the
+PCRE_EXTENDED option is set so that white space is ignored):
<pre>
\( ( (?&#62;[^()]+) | (?R) )* \)
</pre>
First it matches an opening parenthesis. Then it matches any number of
substrings which can either be a sequence of non-parentheses, or a recursive
-match of the pattern itself (that is a correctly parenthesized substring).
+match of the pattern itself (that is, a correctly parenthesized substring).
Finally there is a closing parenthesis.
</P>
<P>
@@ -1450,6 +1547,12 @@ is used, it does match "sense and responsibility" as well as the other two
strings. Such references must, however, follow the subpattern to which they
refer.
</P>
+<P>
+Like recursive subpatterns, a "subroutine" call is always treated as an atomic
+group. That is, once it has matched some of the subject string, it is never
+re-entered, even if it contains untried alternatives and there is a subsequent
+matching failure.
+</P>
<br><a name="SEC20" href="#TOC1">CALLOUTS</a><br>
<P>
Perl has a feature whereby using the sequence (?{...}) causes arbitrary Perl
@@ -1486,9 +1589,9 @@ description of the interface to the callout function is given in the
documentation.
</P>
<P>
-Last updated: 28 February 2005
+Last updated: 24 January 2006
<br>
-Copyright &copy; 1997-2005 University of Cambridge.
+Copyright &copy; 1997-2006 University of Cambridge.
<p>
Return to the <a href="index.html">PCRE index page</a>.
</p>
diff --git a/doc/html/pcreposix.html b/doc/html/pcreposix.html
index 53ea2aa..9bf36ca 100644
--- a/doc/html/pcreposix.html
+++ b/doc/html/pcreposix.html
@@ -59,10 +59,10 @@ call the native ones, it is also necessary to add <b>-lpcre</b>.
</P>
<P>
I have implemented only those option bits that can be reasonably mapped to PCRE
-native options. In addition, the options REG_EXTENDED and REG_NOSUB are defined
-with the value zero. They have no effect, but since programs that are written
-to the POSIX interface often use them, this makes it easier to slot in PCRE as
-a replacement library. Other POSIX options are not even defined.
+native options. In addition, the option REG_EXTENDED is defined with the value
+zero. This has no effect, but since programs that are written to the POSIX
+interface often use it, this makes it easier to slot in PCRE as a replacement
+library. Other POSIX options are not even defined.
</P>
<P>
When PCRE is called via these functions, it is only the API that is POSIX-like
@@ -89,7 +89,7 @@ The function <b>regcomp()</b> is called to compile a pattern into an
internal form. The pattern is a C string terminated by a binary zero, and
is passed in the argument <i>pattern</i>. The <i>preg</i> argument is a pointer
to a <b>regex_t</b> structure that is used as a base for storing information
-about the compiled expression.
+about the compiled regular expression.
</P>
<P>
The argument <i>cflags</i> is either zero, or contains one or more of the bits
@@ -97,19 +97,35 @@ defined by the following macros:
<pre>
REG_DOTALL
</pre>
-The PCRE_DOTALL option is set when the expression is passed for compilation to
-the native function. Note that REG_DOTALL is not part of the POSIX standard.
+The PCRE_DOTALL option is set when the regular expression is passed for
+compilation to the native function. Note that REG_DOTALL is not part of the
+POSIX standard.
<pre>
REG_ICASE
</pre>
-The PCRE_CASELESS option is set when the expression is passed for compilation
-to the native function.
+The PCRE_CASELESS option is set when the regular expression is passed for
+compilation to the native function.
<pre>
REG_NEWLINE
</pre>
-The PCRE_MULTILINE option is set when the expression is passed for compilation
-to the native function. Note that this does <i>not</i> mimic the defined POSIX
-behaviour for REG_NEWLINE (see the following section).
+The PCRE_MULTILINE option is set when the regular expression is passed for
+compilation to the native function. Note that this does <i>not</i> mimic the
+defined POSIX behaviour for REG_NEWLINE (see the following section).
+<pre>
+ REG_NOSUB
+</pre>
+The PCRE_NO_AUTO_CAPTURE option is set when the regular expression is passed
+for compilation to the native function. In addition, when a pattern that is
+compiled with this flag is passed to <b>regexec()</b> for matching, the
+<i>nmatch</i> and <i>pmatch</i> arguments are ignored, and no captured strings
+are returned.
+<pre>
+ REG_UTF8
+</pre>
+The PCRE_UTF8 option is set when the regular expression is passed for
+compilation to the native function. This causes the pattern itself and all data
+strings used for matching it to be treated as UTF-8 strings. Note that REG_UTF8
+is not part of the POSIX standard.
</P>
<P>
In the absence of these flags, no options are passed to the native function.
@@ -177,15 +193,20 @@ The PCRE_NOTEOL option is set when calling the underlying PCRE matching
function.
</P>
<P>
-The portion of the string that was matched, and also any captured substrings,
-are returned via the <i>pmatch</i> argument, which points to an array of
-<i>nmatch</i> structures of type <i>regmatch_t</i>, containing the members
-<i>rm_so</i> and <i>rm_eo</i>. These contain the offset to the first character of
-each substring and the offset to the first character after the end of each
-substring, respectively. The 0th element of the vector relates to the entire
-portion of <i>string</i> that was matched; subsequent elements relate to the
-capturing subpatterns of the regular expression. Unused entries in the array
-have both structure members set to -1.
+If the pattern was compiled with the REG_NOSUB flag, no data about any matched
+strings is returned. The <i>nmatch</i> and <i>pmatch</i> arguments of
+<b>regexec()</b> are ignored.
+</P>
+<P>
+Otherwise,the portion of the string that was matched, and also any captured
+substrings, are returned via the <i>pmatch</i> argument, which points to an
+array of <i>nmatch</i> structures of type <i>regmatch_t</i>, containing the
+members <i>rm_so</i> and <i>rm_eo</i>. These contain the offset to the first
+character of each substring and the offset to the first character after the end
+of each substring, respectively. The 0th element of the vector relates to the
+entire portion of <i>string</i> that was matched; subsequent elements relate to
+the capturing subpatterns of the regular expression. Unused entries in the
+array have both structure members set to -1.
</P>
<P>
A successful match yields a zero return; various error codes are defined in the
@@ -215,9 +236,9 @@ University Computing Service,
Cambridge CB2 3QG, England.
</P>
<P>
-Last updated: 28 February 2005
+Last updated: 16 January 2006
<br>
-Copyright &copy; 1997-2005 University of Cambridge.
+Copyright &copy; 1997-2006 University of Cambridge.
<p>
Return to the <a href="index.html">PCRE index page</a>.
</p>
diff --git a/doc/html/pcreprecompile.html b/doc/html/pcreprecompile.html
index 4cf8add..00de3b0 100644
--- a/doc/html/pcreprecompile.html
+++ b/doc/html/pcreprecompile.html
@@ -127,9 +127,14 @@ advertised), you will have to recompile them for release 5.0. However, from now
on, it should be possible to make changes in a compatible manner.
</P>
<P>
-Last updated: 28 February 2005
+Notwithstanding the above, if you have any saved patterns in UTF-8 mode that
+use \p or \P that were compiled with any release up to and including 6.4, you
+will have to recompile them for release 6.5 and above.
+</P>
+<P>
+Last updated: 01 February 2006
<br>
-Copyright &copy; 1997-2005 University of Cambridge.
+Copyright &copy; 1997-2006 University of Cambridge.
<p>
Return to the <a href="index.html">PCRE index page</a>.
</p>
diff --git a/doc/html/pcretest.html b/doc/html/pcretest.html
index c43c8cb..8e97655 100644
--- a/doc/html/pcretest.html
+++ b/doc/html/pcretest.html
@@ -84,6 +84,10 @@ used to call PCRE. None of the other options has any effect when <b>-p</b> is
set.
</P>
<P>
+\fP-q\fP
+Do not output the version number of <b>pcretest</b> at the start of execution.
+</P>
+<P>
<b>-t</b>
Run each compile, study, and match many times with a timer, and output
resulting time per compile or match (in milliseconds). Do not set <b>-m</b> with
@@ -291,7 +295,8 @@ recognized:
\Gname call pcre_get_named_substring() for substring "name" after a successful match (name termin-
ated by next non-alphanumeric character)
\L call pcre_get_substringlist() after a successful match
- \M discover the minimum MATCH_LIMIT setting
+ \M discover the minimum MATCH_LIMIT and
+ MATCH_LIMIT_RECURSION settings
\N pass the PCRE_NOTEMPTY option to <b>pcre_exec()</b>
\Odd set the size of the output vector passed to <b>pcre_exec()</b> to dd (any number of digits)
\P pass the PCRE_PARTIAL option to <b>pcre_exec()</b> or <b>pcre_dfa_exec()</b>
@@ -308,13 +313,16 @@ an empty line as data, since a real empty line terminates the data input.
</P>
<P>
If \M is present, <b>pcretest</b> calls <b>pcre_exec()</b> several times, with
-different values in the <i>match_limit</i> field of the <b>pcre_extra</b> data
-structure, until it finds the minimum number that is needed for
-<b>pcre_exec()</b> to complete. This number is a measure of the amount of
-recursion and backtracking that takes place, and checking it out can be
-instructive. For most simple matches, the number is quite small, but for
-patterns with very large numbers of matching possibilities, it can become large
-very quickly with increasing length of subject string.
+different values in the <i>match_limit</i> and <i>match_limit_recursion</i>
+fields of the <b>pcre_extra</b> data structure, until it finds the minimum
+numbers for each parameter that allow <b>pcre_exec()</b> to complete. The
+<i>match_limit</i> number is a measure of the amount of backtracking that takes
+place, and checking it out can be instructive. For most simple matches, the
+number is quite small, but for patterns with very large numbers of matching
+possibilities, it can become large very quickly with increasing length of
+subject string. The <i>match_limit_recursion</i> number is a measure of how much
+stack (or, if PCRE is compiled with NO_RECURSE, how much heap) memory is needed
+to complete the match attempt.
</P>
<P>
When \O is used, the value specified may be higher or lower than the size set
@@ -323,8 +331,9 @@ the call of <b>pcre_exec()</b> for the line in which it appears.
</P>
<P>
If the <b>/P</b> modifier was present on the pattern, causing the POSIX wrapper
-API to be used, only \B and \Z have any effect, causing REG_NOTBOL and
-REG_NOTEOL to be passed to <b>regexec()</b> respectively.
+API to be used, the only option-setting sequences that have any effect are \B
+and \Z, causing REG_NOTBOL and REG_NOTEOL, respectively, to be passed to
+<b>regexec()</b>.
</P>
<P>
The use of \x{hh...} to represent UTF-8 characters is not dependent on the use
@@ -572,9 +581,9 @@ University Computing Service,
Cambridge CB2 3QG, England.
</P>
<P>
-Last updated: 28 February 2005
+Last updated: 18 January 2006
<br>
-Copyright &copy; 1997-2005 University of Cambridge.
+Copyright &copy; 1997-2006 University of Cambridge.
<p>
Return to the <a href="index.html">PCRE index page</a>.
</p>
diff --git a/doc/pcre.3 b/doc/pcre.3
index 155e532..6123a2c 100644
--- a/doc/pcre.3
+++ b/doc/pcre.3
@@ -156,12 +156,15 @@ If PCRE is built with Unicode character property support (which implies UTF-8
support), the escape sequences \ep{..}, \eP{..}, and \eX are supported.
The available properties that can be tested are limited to the general
category properties such as Lu for an upper case letter or Nd for a decimal
-number. A full list is given in the
+number, the Unicode script names such as Arabic or Han, and the derived
+properties Any and L&. A full list is given in the
.\" HREF
\fBpcrepattern\fP
.\"
-documentation. The PCRE library is increased in size by about 90K when Unicode
-property support is included.
+documentation. Only the short names for properties are supported. For example,
+\ep{L} matches a letter. Its Perl synonym, \ep{Letter}, is not supported.
+Furthermore, in Perl, many properties may optionally be prefixed by "Is", for
+compatibility with Perl 5.6. PCRE does not support this.
.P
The following comments apply when PCRE is running in UTF-8 mode:
.P
@@ -176,26 +179,19 @@ not diagnose an invalid UTF-8 string. If you pass an invalid UTF-8 string to
PCRE when PCRE_NO_UTF8_CHECK is set, the results are undefined. Your program
may crash.
.P
-2. In a pattern, the escape sequence \ex{...}, where the contents of the braces
-is a string of hexadecimal digits, is interpreted as a UTF-8 character whose
-code number is the given hexadecimal number, for example: \ex{1234}. If a
-non-hexadecimal digit appears between the braces, the item is not recognized.
-This escape sequence can be used either as a literal, or within a character
-class.
+2. An unbraced hexadecimal escape sequence (such as \exb3) matches a two-byte
+UTF-8 character if the value is greater than 127.
.P
-3. The original hexadecimal escape sequence, \exhh, matches a two-byte UTF-8
-character if the value is greater than 127.
-.P
-4. Repeat quantifiers apply to complete UTF-8 characters, not to individual
+3. Repeat quantifiers apply to complete UTF-8 characters, not to individual
bytes, for example: \ex{100}{3}.
.P
-5. The dot metacharacter matches one UTF-8 character instead of a single byte.
+4. The dot metacharacter matches one UTF-8 character instead of a single byte.
.P
-6. The escape sequence \eC can be used to match a single byte in UTF-8 mode,
+5. The escape sequence \eC can be used to match a single byte in UTF-8 mode,
but its use can lead to some strange effects. This facility is not available in
the alternative matching function, \fBpcre_dfa_exec()\fP.
.P
-7. The character escapes \eb, \eB, \ed, \eD, \es, \eS, \ew, and \eW correctly
+6. The character escapes \eb, \eB, \ed, \eD, \es, \eS, \ew, and \eW correctly
test characters of any code value, but the characters that PCRE recognizes as
digits, spaces, or word characters remain the same set as before, all with
values less than 256. This remains true even when PCRE includes Unicode
@@ -203,15 +199,18 @@ property support, because to do otherwise would slow down PCRE in many common
cases. If you really want to test for a wider sense of, say, "digit", you
must use Unicode property tests such as \ep{Nd}.
.P
-8. Similarly, characters that match the POSIX named character classes are all
+7. Similarly, characters that match the POSIX named character classes are all
low-valued characters.
.P
-9. Case-insensitive matching applies only to characters whose values are less
+8. Case-insensitive matching applies only to characters whose values are less
than 128, unless PCRE is built with Unicode property support. Even when Unicode
property support is available, PCRE still uses its own character tables when
checking the case of low-valued characters, so as not to degrade performance.
The Unicode property information is used only for characters with higher
-values.
+values. Even when Unicode property support is available, PCRE supports
+case-insensitive matching only when there is a one-to-one mapping between a
+letter's cases. There are a small number of many-to-one mappings in Unicode;
+these are not supported by PCRE.
.
.SH AUTHOR
.rs
@@ -227,6 +226,6 @@ taken it away. If you want to email me, use my initial and surname, separated
by a dot, at the domain ucs.cam.ac.uk.
.sp
.in 0
-Last updated: 07 March 2005
+Last updated: 24 January 2006
.br
-Copyright (c) 1997-2005 University of Cambridge.
+Copyright (c) 1997-2006 University of Cambridge.
diff --git a/doc/pcre.txt b/doc/pcre.txt
index ab6708e..fe57de4 100644
--- a/doc/pcre.txt
+++ b/doc/pcre.txt
@@ -137,9 +137,13 @@ UTF-8 AND UNICODE PROPERTY SUPPORT
UTF-8 support), the escape sequences \p{..}, \P{..}, and \X are sup-
ported. The available properties that can be tested are limited to the
general category properties such as Lu for an upper case letter or Nd
- for a decimal number. A full list is given in the pcrepattern documen-
- tation. The PCRE library is increased in size by about 90K when Unicode
- property support is included.
+ for a decimal number, the Unicode script names such as Arabic or Han,
+ and the derived properties Any and L&. A full list is given in the
+ pcrepattern documentation. Only the short names for properties are sup-
+ ported. For example, \p{L} matches a letter. Its Perl synonym, \p{Let-
+ ter}, is not supported. Furthermore, in Perl, many properties may
+ optionally be prefixed by "Is", for compatibility with Perl 5.6. PCRE
+ does not support this.
The following comments apply when PCRE is running in UTF-8 mode:
@@ -155,44 +159,41 @@ UTF-8 AND UNICODE PROPERTY SUPPORT
PCRE_NO_UTF8_CHECK is set, the results are undefined. Your program may
crash.
- 2. In a pattern, the escape sequence \x{...}, where the contents of the
- braces is a string of hexadecimal digits, is interpreted as a UTF-8
- character whose code number is the given hexadecimal number, for exam-
- ple: \x{1234}. If a non-hexadecimal digit appears between the braces,
- the item is not recognized. This escape sequence can be used either as
- a literal, or within a character class.
+ 2. An unbraced hexadecimal escape sequence (such as \xb3) matches a
+ two-byte UTF-8 character if the value is greater than 127.
- 3. The original hexadecimal escape sequence, \xhh, matches a two-byte
- UTF-8 character if the value is greater than 127.
-
- 4. Repeat quantifiers apply to complete UTF-8 characters, not to indi-
+ 3. Repeat quantifiers apply to complete UTF-8 characters, not to indi-
vidual bytes, for example: \x{100}{3}.
- 5. The dot metacharacter matches one UTF-8 character instead of a sin-
+ 4. The dot metacharacter matches one UTF-8 character instead of a sin-
gle byte.
- 6. The escape sequence \C can be used to match a single byte in UTF-8
- mode, but its use can lead to some strange effects. This facility is
+ 5. The escape sequence \C can be used to match a single byte in UTF-8
+ mode, but its use can lead to some strange effects. This facility is
not available in the alternative matching function, pcre_dfa_exec().
- 7. The character escapes \b, \B, \d, \D, \s, \S, \w, and \W correctly
- test characters of any code value, but the characters that PCRE recog-
- nizes as digits, spaces, or word characters remain the same set as
+ 6. The character escapes \b, \B, \d, \D, \s, \S, \w, and \W correctly
+ test characters of any code value, but the characters that PCRE recog-
+ nizes as digits, spaces, or word characters remain the same set as
before, all with values less than 256. This remains true even when PCRE
- includes Unicode property support, because to do otherwise would slow
- down PCRE in many common cases. If you really want to test for a wider
- sense of, say, "digit", you must use Unicode property tests such as
+ includes Unicode property support, because to do otherwise would slow
+ down PCRE in many common cases. If you really want to test for a wider
+ sense of, say, "digit", you must use Unicode property tests such as
\p{Nd}.
- 8. Similarly, characters that match the POSIX named character classes
+ 7. Similarly, characters that match the POSIX named character classes
are all low-valued characters.
- 9. Case-insensitive matching applies only to characters whose values
- are less than 128, unless PCRE is built with Unicode property support.
- Even when Unicode property support is available, PCRE still uses its
- own character tables when checking the case of low-valued characters,
- so as not to degrade performance. The Unicode property information is
- used only for characters with higher values.
+ 8. Case-insensitive matching applies only to characters whose values
+ are less than 128, unless PCRE is built with Unicode property support.
+ Even when Unicode property support is available, PCRE still uses its
+ own character tables when checking the case of low-valued characters,
+ so as not to degrade performance. The Unicode property information is
+ used only for characters with higher values. Even when Unicode property
+ support is available, PCRE supports case-insensitive matching only when
+ there is a one-to-one mapping between a letter's cases. There are a
+ small number of many-to-one mappings in Unicode; these are not sup-
+ ported by PCRE.
AUTHOR
@@ -201,12 +202,12 @@ AUTHOR
University Computing Service,
Cambridge CB2 3QG, England.
- Putting an actual email address here seems to have been a spam magnet,
+ Putting an actual email address here seems to have been a spam magnet,
so I've taken it away. If you want to email me, use my initial and sur-
name, separated by a dot, at the domain ucs.cam.ac.uk.
-Last updated: 07 March 2005
-Copyright (c) 1997-2005 University of Cambridge.
+Last updated: 24 January 2006
+Copyright (c) 1997-2006 University of Cambridge.
------------------------------------------------------------------------------
@@ -808,6 +809,12 @@ CHECKING BUILD-TIME OPTIONS
internal matching function calls in a pcre_exec() execution. Further
details are given with pcre_exec() below.
+ PCRE_CONFIG_MATCH_LIMIT_RECURSION
+
+ The output is an integer that gives the default limit for the depth of
+ recursion when calling the internal matching function in a pcre_exec()
+ execution. Further details are given with pcre_exec() below.
+
PCRE_CONFIG_STACKRECURSE
The output is an integer that is set to one if internal recursion when
@@ -861,25 +868,26 @@ COMPILING A PATTERN
If errptr is NULL, pcre_compile() returns NULL immediately. Otherwise,
if compilation of a pattern fails, pcre_compile() returns NULL, and
sets the variable pointed to by errptr to point to a textual error mes-
- sage. The offset from the start of the pattern to the character where
- the error was discovered is placed in the variable pointed to by
- erroffset, which must not be NULL. If it is, an immediate error is
+ sage. This is a static string that is part of the library. You must not
+ try to free it. The offset from the start of the pattern to the charac-
+ ter where the error was discovered is placed in the variable pointed to
+ by erroffset, which must not be NULL. If it is, an immediate error is
given.
- If pcre_compile2() is used instead of pcre_compile(), and the error-
- codeptr argument is not NULL, a non-zero error code number is returned
- via this argument in the event of an error. This is in addition to the
+ If pcre_compile2() is used instead of pcre_compile(), and the error-
+ codeptr argument is not NULL, a non-zero error code number is returned
+ via this argument in the event of an error. This is in addition to the
textual error message. Error codes and messages are listed below.
- If the final argument, tableptr, is NULL, PCRE uses a default set of
- character tables that are built when PCRE is compiled, using the
- default C locale. Otherwise, tableptr must be an address that is the
- result of a call to pcre_maketables(). This value is stored with the
- compiled pattern, and used again by pcre_exec(), unless another table
+ If the final argument, tableptr, is NULL, PCRE uses a default set of
+ character tables that are built when PCRE is compiled, using the
+ default C locale. Otherwise, tableptr must be an address that is the
+ result of a call to pcre_maketables(). This value is stored with the
+ compiled pattern, and used again by pcre_exec(), unless another table
pointer is passed to it. For more discussion, see the section on locale
support below.
- This code fragment shows a typical straightforward call to pcre_com-
+ This code fragment shows a typical straightforward call to pcre_com-
pile():
pcre *re;
@@ -892,145 +900,145 @@ COMPILING A PATTERN
&erroffset, /* for error offset */
NULL); /* use default character tables */
- The following names for option bits are defined in the pcre.h header
+ The following names for option bits are defined in the pcre.h header
file:
PCRE_ANCHORED
If this bit is set, the pattern is forced to be "anchored", that is, it
- is constrained to match only at the first matching point in the string
- that is being searched (the "subject string"). This effect can also be
- achieved by appropriate constructs in the pattern itself, which is the
+ is constrained to match only at the first matching point in the string
+ that is being searched (the "subject string"). This effect can also be
+ achieved by appropriate constructs in the pattern itself, which is the
only way to do it in Perl.
PCRE_AUTO_CALLOUT
If this bit is set, pcre_compile() automatically inserts callout items,
- all with number 255, before each pattern item. For discussion of the
+ all with number 255, before each pattern item. For discussion of the
callout facility, see the pcrecallout documentation.
PCRE_CASELESS
- If this bit is set, letters in the pattern match both upper and lower
- case letters. It is equivalent to Perl's /i option, and it can be
- changed within a pattern by a (?i) option setting. In UTF-8 mode, PCRE
- always understands the concept of case for characters whose values are
- less than 128, so caseless matching is always possible. For characters
- with higher values, the concept of case is supported if PCRE is com-
- piled with Unicode property support, but not otherwise. If you want to
- use caseless matching for characters 128 and above, you must ensure
- that PCRE is compiled with Unicode property support as well as with
+ If this bit is set, letters in the pattern match both upper and lower
+ case letters. It is equivalent to Perl's /i option, and it can be
+ changed within a pattern by a (?i) option setting. In UTF-8 mode, PCRE
+ always understands the concept of case for characters whose values are
+ less than 128, so caseless matching is always possible. For characters
+ with higher values, the concept of case is supported if PCRE is com-
+ piled with Unicode property support, but not otherwise. If you want to
+ use caseless matching for characters 128 and above, you must ensure
+ that PCRE is compiled with Unicode property support as well as with
UTF-8 support.
PCRE_DOLLAR_ENDONLY
- If this bit is set, a dollar metacharacter in the pattern matches only
- at the end of the subject string. Without this option, a dollar also
- matches immediately before the final character if it is a newline (but
- not before any other newlines). The PCRE_DOLLAR_ENDONLY option is
+ If this bit is set, a dollar metacharacter in the pattern matches only
+ at the end of the subject string. Without this option, a dollar also
+ matches immediately before the final character if it is a newline (but
+ not before any other newlines). The PCRE_DOLLAR_ENDONLY option is
ignored if PCRE_MULTILINE is set. There is no equivalent to this option
in Perl, and no way to set it within a pattern.
PCRE_DOTALL
If this bit is set, a dot metacharater in the pattern matches all char-
- acters, including newlines. Without it, newlines are excluded. This
- option is equivalent to Perl's /s option, and it can be changed within
- a pattern by a (?s) option setting. A negative class such as [^a]
- always matches a newline character, independent of the setting of this
+ acters, including newlines. Without it, newlines are excluded. This
+ option is equivalent to Perl's /s option, and it can be changed within
+ a pattern by a (?s) option setting. A negative class such as [^a]
+ always matches a newline character, independent of the setting of this
option.
PCRE_EXTENDED
- If this bit is set, whitespace data characters in the pattern are
+ If this bit is set, whitespace data characters in the pattern are
totally ignored except when escaped or inside a character class. White-
space does not include the VT character (code 11). In addition, charac-
ters between an unescaped # outside a character class and the next new-
- line character, inclusive, are also ignored. This is equivalent to
- Perl's /x option, and it can be changed within a pattern by a (?x)
+ line character, inclusive, are also ignored. This is equivalent to
+ Perl's /x option, and it can be changed within a pattern by a (?x)
option setting.
- This option makes it possible to include comments inside complicated
- patterns. Note, however, that this applies only to data characters.
- Whitespace characters may never appear within special character
- sequences in a pattern, for example within the sequence (?( which
+ This option makes it possible to include comments inside complicated
+ patterns. Note, however, that this applies only to data characters.
+ Whitespace characters may never appear within special character
+ sequences in a pattern, for example within the sequence (?( which
introduces a conditional subpattern.
PCRE_EXTRA
- This option was invented in order to turn on additional functionality
- of PCRE that is incompatible with Perl, but it is currently of very
- little use. When set, any backslash in a pattern that is followed by a
- letter that has no special meaning causes an error, thus reserving
- these combinations for future expansion. By default, as in Perl, a
- backslash followed by a letter with no special meaning is treated as a
- literal. There are at present no other features controlled by this
+ This option was invented in order to turn on additional functionality
+ of PCRE that is incompatible with Perl, but it is currently of very
+ little use. When set, any backslash in a pattern that is followed by a
+ letter that has no special meaning causes an error, thus reserving
+ these combinations for future expansion. By default, as in Perl, a
+ backslash followed by a letter with no special meaning is treated as a
+ literal. There are at present no other features controlled by this
option. It can also be set by a (?X) option setting within a pattern.
PCRE_FIRSTLINE
- If this option is set, an unanchored pattern is required to match
- before or at the first newline character in the subject string, though
+ If this option is set, an unanchored pattern is required to match
+ before or at the first newline character in the subject string, though
the matched text may continue over the newline.
PCRE_MULTILINE
- By default, PCRE treats the subject string as consisting of a single
- line of characters (even if it actually contains newlines). The "start
- of line" metacharacter (^) matches only at the start of the string,
- while the "end of line" metacharacter ($) matches only at the end of
+ By default, PCRE treats the subject string as consisting of a single
+ line of characters (even if it actually contains newlines). The "start
+ of line" metacharacter (^) matches only at the start of the string,
+ while the "end of line" metacharacter ($) matches only at the end of
the string, or before a terminating newline (unless PCRE_DOLLAR_ENDONLY
is set). This is the same as Perl.
- When PCRE_MULTILINE it is set, the "start of line" and "end of line"
- constructs match immediately following or immediately before any new-
- line in the subject string, respectively, as well as at the very start
- and end. This is equivalent to Perl's /m option, and it can be changed
+ When PCRE_MULTILINE it is set, the "start of line" and "end of line"
+ constructs match immediately following or immediately before any new-
+ line in the subject string, respectively, as well as at the very start
+ and end. This is equivalent to Perl's /m option, and it can be changed
within a pattern by a (?m) option setting. If there are no "\n" charac-
- ters in a subject string, or no occurrences of ^ or $ in a pattern,
+ ters in a subject string, or no occurrences of ^ or $ in a pattern,
setting PCRE_MULTILINE has no effect.
PCRE_NO_AUTO_CAPTURE
If this option is set, it disables the use of numbered capturing paren-
- theses in the pattern. Any opening parenthesis that is not followed by
- ? behaves as if it were followed by ?: but named parentheses can still
- be used for capturing (and they acquire numbers in the usual way).
+ theses in the pattern. Any opening parenthesis that is not followed by
+ ? behaves as if it were followed by ?: but named parentheses can still
+ be used for capturing (and they acquire numbers in the usual way).
There is no equivalent of this option in Perl.
PCRE_UNGREEDY
- This option inverts the "greediness" of the quantifiers so that they
- are not greedy by default, but become greedy if followed by "?". It is
- not compatible with Perl. It can also be set by a (?U) option setting
+ This option inverts the "greediness" of the quantifiers so that they
+ are not greedy by default, but become greedy if followed by "?". It is
+ not compatible with Perl. It can also be set by a (?U) option setting
within the pattern.
PCRE_UTF8
- This option causes PCRE to regard both the pattern and the subject as
- strings of UTF-8 characters instead of single-byte character strings.
- However, it is available only when PCRE is built to include UTF-8 sup-
- port. If not, the use of this option provokes an error. Details of how
- this option changes the behaviour of PCRE are given in the section on
+ This option causes PCRE to regard both the pattern and the subject as
+ strings of UTF-8 characters instead of single-byte character strings.
+ However, it is available only when PCRE is built to include UTF-8 sup-
+ port. If not, the use of this option provokes an error. Details of how
+ this option changes the behaviour of PCRE are given in the section on
UTF-8 support in the main pcre page.
PCRE_NO_UTF8_CHECK
When PCRE_UTF8 is set, the validity of the pattern as a UTF-8 string is
- automatically checked. If an invalid UTF-8 sequence of bytes is found,
- pcre_compile() returns an error. If you already know that your pattern
- is valid, and you want to skip this check for performance reasons, you
- can set the PCRE_NO_UTF8_CHECK option. When it is set, the effect of
+ automatically checked. If an invalid UTF-8 sequence of bytes is found,
+ pcre_compile() returns an error. If you already know that your pattern
+ is valid, and you want to skip this check for performance reasons, you
+ can set the PCRE_NO_UTF8_CHECK option. When it is set, the effect of
passing an invalid UTF-8 string as a pattern is undefined. It may cause
- your program to crash. Note that this option can also be passed to
- pcre_exec() and pcre_dfa_exec(), to suppress the UTF-8 validity check-
+ your program to crash. Note that this option can also be passed to
+ pcre_exec() and pcre_dfa_exec(), to suppress the UTF-8 validity check-
ing of subject strings.
COMPILATION ERROR CODES
- The following table lists the error codes than may be returned by
- pcre_compile2(), along with the error messages that may be returned by
+ The following table lists the error codes than may be returned by
+ pcre_compile2(), along with the error messages that may be returned by
both compiling functions.
0 no error
@@ -1088,32 +1096,33 @@ STUDYING A PATTERN
pcre_extra *pcre_study(const pcre *code, int options
const char **errptr);
- If a compiled pattern is going to be used several times, it is worth
+ If a compiled pattern is going to be used several times, it is worth
spending more time analyzing it in order to speed up the time taken for
- matching. The function pcre_study() takes a pointer to a compiled pat-
+ matching. The function pcre_study() takes a pointer to a compiled pat-
tern as its first argument. If studying the pattern produces additional
- information that will help speed up matching, pcre_study() returns a
- pointer to a pcre_extra block, in which the study_data field points to
+ information that will help speed up matching, pcre_study() returns a
+ pointer to a pcre_extra block, in which the study_data field points to
the results of the study.
The returned value from pcre_study() can be passed directly to
- pcre_exec(). However, a pcre_extra block also contains other fields
- that can be set by the caller before the block is passed; these are
+ pcre_exec(). However, a pcre_extra block also contains other fields
+ that can be set by the caller before the block is passed; these are
described below in the section on matching a pattern.
- If studying the pattern does not produce any additional information
+ If studying the pattern does not produce any additional information
pcre_study() returns NULL. In that circumstance, if the calling program
- wants to pass any of the other fields to pcre_exec(), it must set up
+ wants to pass any of the other fields to pcre_exec(), it must set up
its own pcre_extra block.
- The second argument of pcre_study() contains option bits. At present,
+ The second argument of pcre_study() contains option bits. At present,
no options are defined, and this argument should always be zero.
- The third argument for pcre_study() is a pointer for an error message.
- If studying succeeds (even if no data is returned), the variable it
- points to is set to NULL. Otherwise it points to a textual error mes-
- sage. You should therefore test the error pointer for NULL after call-
- ing pcre_study(), to be sure that it has run successfully.
+ The third argument for pcre_study() is a pointer for an error message.
+ If studying succeeds (even if no data is returned), the variable it
+ points to is set to NULL. Otherwise it is set to point to a textual
+ error message. This is a static string that is part of the library. You
+ must not try to free it. You should test the error pointer for NULL
+ after calling pcre_study(), to be sure that it has run successfully.
This is a typical call to pcre_study():
@@ -1135,40 +1144,41 @@ LOCALE SUPPORT
by character value. When running in UTF-8 mode, this applies only to
characters with codes less than 128. Higher-valued codes never match
escapes such as \w or \d, but can be tested with \p if PCRE is built
- with Unicode character property support.
-
- An internal set of tables is created in the default C locale when PCRE
- is built. This is used when the final argument of pcre_compile() is
- NULL, and is sufficient for many applications. An alternative set of
- tables can, however, be supplied. These may be created in a different
- locale from the default. As more and more applications change to using
+ with Unicode character property support. The use of locales with Uni-
+ code is discouraged.
+
+ An internal set of tables is created in the default C locale when PCRE
+ is built. This is used when the final argument of pcre_compile() is
+ NULL, and is sufficient for many applications. An alternative set of
+ tables can, however, be supplied. These may be created in a different
+ locale from the default. As more and more applications change to using
Unicode, the need for this locale support is expected to die away.
- External tables are built by calling the pcre_maketables() function,
- which has no arguments, in the relevant locale. The result can then be
- passed to pcre_compile() or pcre_exec() as often as necessary. For
- example, to build and use tables that are appropriate for the French
- locale (where accented characters with values greater than 128 are
+ External tables are built by calling the pcre_maketables() function,
+ which has no arguments, in the relevant locale. The result can then be
+ passed to pcre_compile() or pcre_exec() as often as necessary. For
+ example, to build and use tables that are appropriate for the French
+ locale (where accented characters with values greater than 128 are
treated as letters), the following code could be used:
setlocale(LC_CTYPE, "fr_FR");
tables = pcre_maketables();
re = pcre_compile(..., tables);
- When pcre_maketables() runs, the tables are built in memory that is
- obtained via pcre_malloc. It is the caller's responsibility to ensure
- that the memory containing the tables remains available for as long as
+ When pcre_maketables() runs, the tables are built in memory that is
+ obtained via pcre_malloc. It is the caller's responsibility to ensure
+ that the memory containing the tables remains available for as long as
it is needed.
The pointer that is passed to pcre_compile() is saved with the compiled
- pattern, and the same tables are used via this pointer by pcre_study()
+ pattern, and the same tables are used via this pointer by pcre_study()
and normally also by pcre_exec(). Thus, by default, for any single pat-
tern, compilation, studying and matching all happen in the same locale,
but different patterns can be compiled in different locales.
- It is possible to pass a table pointer or NULL (indicating the use of
- the internal tables) to pcre_exec(). Although not intended for this
- purpose, this facility could be used to match a pattern in a different
+ It is possible to pass a table pointer or NULL (indicating the use of
+ the internal tables) to pcre_exec(). Although not intended for this
+ purpose, this facility could be used to match a pattern in a different
locale from the one in which it was compiled. Passing table pointers at
run time is discussed below in the section on matching a pattern.
@@ -1178,15 +1188,15 @@ INFORMATION ABOUT A PATTERN
int pcre_fullinfo(const pcre *code, const pcre_extra *extra,
int what, void *where);
- The pcre_fullinfo() function returns information about a compiled pat-
+ The pcre_fullinfo() function returns information about a compiled pat-
tern. It replaces the obsolete pcre_info() function, which is neverthe-
less retained for backwards compability (and is documented below).
- The first argument for pcre_fullinfo() is a pointer to the compiled
- pattern. The second argument is the result of pcre_study(), or NULL if
- the pattern was not studied. The third argument specifies which piece
- of information is required, and the fourth argument is a pointer to a
- variable to receive the data. The yield of the function is zero for
+ The first argument for pcre_fullinfo() is a pointer to the compiled
+ pattern. The second argument is the result of pcre_study(), or NULL if
+ the pattern was not studied. The third argument specifies which piece
+ of information is required, and the fourth argument is a pointer to a
+ variable to receive the data. The yield of the function is zero for
success, or one of the following negative numbers:
PCRE_ERROR_NULL the argument code was NULL
@@ -1194,9 +1204,9 @@ INFORMATION ABOUT A PATTERN
PCRE_ERROR_BADMAGIC the "magic number" was not found
PCRE_ERROR_BADOPTION the value of what was invalid
- The "magic number" is placed at the start of each compiled pattern as
- an simple check against passing an arbitrary memory pointer. Here is a
- typical call of pcre_fullinfo(), to obtain the length of the compiled
+ The "magic number" is placed at the start of each compiled pattern as
+ an simple check against passing an arbitrary memory pointer. Here is a
+ typical call of pcre_fullinfo(), to obtain the length of the compiled
pattern:
int rc;
@@ -1207,64 +1217,64 @@ INFORMATION ABOUT A PATTERN
PCRE_INFO_SIZE, /* what is required */
&length); /* where to put the data */
- The possible values for the third argument are defined in pcre.h, and
+ The possible values for the third argument are defined in pcre.h, and
are as follows:
PCRE_INFO_BACKREFMAX
- Return the number of the highest back reference in the pattern. The
- fourth argument should point to an int variable. Zero is returned if
+ Return the number of the highest back reference in the pattern. The
+ fourth argument should point to an int variable. Zero is returned if
there are no back references.
PCRE_INFO_CAPTURECOUNT
- Return the number of capturing subpatterns in the pattern. The fourth
+ Return the number of capturing subpatterns in the pattern. The fourth
argument should point to an int variable.
PCRE_INFO_DEFAULT_TABLES
- Return a pointer to the internal default character tables within PCRE.
- The fourth argument should point to an unsigned char * variable. This
+ Return a pointer to the internal default character tables within PCRE.
+ The fourth argument should point to an unsigned char * variable. This
information call is provided for internal use by the pcre_study() func-
- tion. External callers can cause PCRE to use its internal tables by
+ tion. External callers can cause PCRE to use its internal tables by
passing a NULL table pointer.
PCRE_INFO_FIRSTBYTE
- Return information about the first byte of any matched string, for a
- non-anchored pattern. (This option used to be called
- PCRE_INFO_FIRSTCHAR; the old name is still recognized for backwards
+ Return information about the first byte of any matched string, for a
+ non-anchored pattern. (This option used to be called
+ PCRE_INFO_FIRSTCHAR; the old name is still recognized for backwards
compatibility.)
- If there is a fixed first byte, for example, from a pattern such as
- (cat|cow|coyote), it is returned in the integer pointed to by where.
+ If there is a fixed first byte, for example, from a pattern such as
+ (cat|cow|coyote), it is returned in the integer pointed to by where.
Otherwise, if either
- (a) the pattern was compiled with the PCRE_MULTILINE option, and every
+ (a) the pattern was compiled with the PCRE_MULTILINE option, and every
branch starts with "^", or
(b) every branch of the pattern starts with ".*" and PCRE_DOTALL is not
set (if it were set, the pattern would be anchored),
- -1 is returned, indicating that the pattern matches only at the start
- of a subject string or after any newline within the string. Otherwise
+ -1 is returned, indicating that the pattern matches only at the start
+ of a subject string or after any newline within the string. Otherwise
-2 is returned. For anchored patterns, -2 is returned.
PCRE_INFO_FIRSTTABLE
- If the pattern was studied, and this resulted in the construction of a
+ If the pattern was studied, and this resulted in the construction of a
256-bit table indicating a fixed set of bytes for the first byte in any
- matching string, a pointer to the table is returned. Otherwise NULL is
- returned. The fourth argument should point to an unsigned char * vari-
+ matching string, a pointer to the table is returned. Otherwise NULL is
+ returned. The fourth argument should point to an unsigned char * vari-
able.
PCRE_INFO_LASTLITERAL
- Return the value of the rightmost literal byte that must exist in any
- matched string, other than at its start, if such a byte has been
+ Return the value of the rightmost literal byte that must exist in any
+ matched string, other than at its start, if such a byte has been
recorded. The fourth argument should point to an int variable. If there
- is no such byte, -1 is returned. For anchored patterns, a last literal
- byte is recorded only if it follows something of variable length. For
+ is no such byte, -1 is returned. For anchored patterns, a last literal
+ byte is recorded only if it follows something of variable length. For
example, for the pattern /^a\d+z\d+/ the returned value is "z", but for
/^a\dz\d/ the returned value is -1.
@@ -1272,32 +1282,32 @@ INFORMATION ABOUT A PATTERN
PCRE_INFO_NAMEENTRYSIZE
PCRE_INFO_NAMETABLE
- PCRE supports the use of named as well as numbered capturing parenthe-
- ses. The names are just an additional way of identifying the parenthe-
+ PCRE supports the use of named as well as numbered capturing parenthe-
+ ses. The names are just an additional way of identifying the parenthe-
ses, which still acquire numbers. A convenience function called
- pcre_get_named_substring() is provided for extracting an individual
- captured substring by name. It is also possible to extract the data
- directly, by first converting the name to a number in order to access
- the correct pointers in the output vector (described with pcre_exec()
- below). To do the conversion, you need to use the name-to-number map,
+ pcre_get_named_substring() is provided for extracting an individual
+ captured substring by name. It is also possible to extract the data
+ directly, by first converting the name to a number in order to access
+ the correct pointers in the output vector (described with pcre_exec()
+ below). To do the conversion, you need to use the name-to-number map,
which is described by these three values.
The map consists of a number of fixed-size entries. PCRE_INFO_NAMECOUNT
gives the number of entries, and PCRE_INFO_NAMEENTRYSIZE gives the size
- of each entry; both of these return an int value. The entry size
- depends on the length of the longest name. PCRE_INFO_NAMETABLE returns
- a pointer to the first entry of the table (a pointer to char). The
+ of each entry; both of these return an int value. The entry size
+ depends on the length of the longest name. PCRE_INFO_NAMETABLE returns
+ a pointer to the first entry of the table (a pointer to char). The
first two bytes of each entry are the number of the capturing parenthe-
- sis, most significant byte first. The rest of the entry is the corre-
- sponding name, zero terminated. The names are in alphabetical order.
- For example, consider the following pattern (assume PCRE_EXTENDED is
+ sis, most significant byte first. The rest of the entry is the corre-
+ sponding name, zero terminated. The names are in alphabetical order.
+ For example, consider the following pattern (assume PCRE_EXTENDED is
set, so white space - including newlines - is ignored):
(?P<date> (?P<year>(\d\d)?\d\d) -
(?P<month>\d\d) - (?P<day>\d\d) )
- There are four named subpatterns, so the table has four entries, and
- each entry in the table is eight bytes long. The table is as follows,
+ There are four named subpatterns, so the table has four entries, and
+ each entry in the table is eight bytes long. The table is as follows,
with non-printing bytes shows in hexadecimal, and undefined bytes shown
as ??:
@@ -1306,18 +1316,18 @@ INFORMATION ABOUT A PATTERN
00 04 m o n t h 00
00 02 y e a r 00 ??
- When writing code to extract data from named subpatterns using the
+ When writing code to extract data from named subpatterns using the
name-to-number map, remember that the length of each entry is likely to
be different for each compiled pattern.
PCRE_INFO_OPTIONS
- Return a copy of the options with which the pattern was compiled. The
- fourth argument should point to an unsigned long int variable. These
+ Return a copy of the options with which the pattern was compiled. The
+ fourth argument should point to an unsigned long int variable. These
option bits are those specified in the call to pcre_compile(), modified
by any top-level option settings within the pattern itself.
- A pattern is automatically anchored by PCRE if all of its top-level
+ A pattern is automatically anchored by PCRE if all of its top-level
alternatives begin with one of the following:
^ unless PCRE_MULTILINE is set
@@ -1331,7 +1341,7 @@ INFORMATION ABOUT A PATTERN
PCRE_INFO_SIZE
- Return the size of the compiled pattern, that is, the value that was
+ Return the size of the compiled pattern, that is, the value that was
passed as the argument to pcre_malloc() when PCRE was getting memory in
which to place the compiled data. The fourth argument should point to a
size_t variable.
@@ -1339,9 +1349,9 @@ INFORMATION ABOUT A PATTERN
PCRE_INFO_STUDYSIZE
Return the size of the data block pointed to by the study_data field in
- a pcre_extra block. That is, it is the value that was passed to
+ a pcre_extra block. That is, it is the value that was passed to
pcre_malloc() when PCRE was getting memory into which to place the data
- created by pcre_study(). The fourth argument should point to a size_t
+ created by pcre_study(). The fourth argument should point to a size_t
variable.
@@ -1349,21 +1359,21 @@ OBSOLETE INFO FUNCTION
int pcre_info(const pcre *code, int *optptr, int *firstcharptr);
- The pcre_info() function is now obsolete because its interface is too
- restrictive to return all the available data about a compiled pattern.
- New programs should use pcre_fullinfo() instead. The yield of
- pcre_info() is the number of capturing subpatterns, or one of the fol-
+ The pcre_info() function is now obsolete because its interface is too
+ restrictive to return all the available data about a compiled pattern.
+ New programs should use pcre_fullinfo() instead. The yield of
+ pcre_info() is the number of capturing subpatterns, or one of the fol-
lowing negative numbers:
PCRE_ERROR_NULL the argument code was NULL
PCRE_ERROR_BADMAGIC the "magic number" was not found
- If the optptr argument is not NULL, a copy of the options with which
- the pattern was compiled is placed in the integer it points to (see
+ If the optptr argument is not NULL, a copy of the options with which
+ the pattern was compiled is placed in the integer it points to (see
PCRE_INFO_OPTIONS above).
- If the pattern is not anchored and the firstcharptr argument is not
- NULL, it is used to pass back information about the first character of
+ If the pattern is not anchored and the firstcharptr argument is not
+ NULL, it is used to pass back information about the first character of
any matched string (see PCRE_INFO_FIRSTBYTE above).
@@ -1371,21 +1381,21 @@ REFERENCE COUNTS
int pcre_refcount(pcre *code, int adjust);
- The pcre_refcount() function is used to maintain a reference count in
+ The pcre_refcount() function is used to maintain a reference count in
the data block that contains a compiled pattern. It is provided for the
- benefit of applications that operate in an object-oriented manner,
+ benefit of applications that operate in an object-oriented manner,
where different parts of the application may be using the same compiled
pattern, but you want to free the block when they are all done.
When a pattern is compiled, the reference count field is initialized to
- zero. It is changed only by calling this function, whose action is to
- add the adjust value (which may be positive or negative) to it. The
+ zero. It is changed only by calling this function, whose action is to
+ add the adjust value (which may be positive or negative) to it. The
yield of the function is the new value. However, the value of the count
- is constrained to lie between 0 and 65535, inclusive. If the new value
+ is constrained to lie between 0 and 65535, inclusive. If the new value
is outside these limits, it is forced to the appropriate limit value.
- Except when it is zero, the reference count is not correctly preserved
- if a pattern is compiled on one host and then transferred to a host
+ Except when it is zero, the reference count is not correctly preserved
+ if a pattern is compiled on one host and then transferred to a host
whose byte-order is different. (This seems a highly unlikely scenario.)
@@ -1395,18 +1405,18 @@ MATCHING A PATTERN: THE TRADITIONAL FUNCTION
const char *subject, int length, int startoffset,
int options, int *ovector, int ovecsize);
- The function pcre_exec() is called to match a subject string against a
- compiled pattern, which is passed in the code argument. If the pattern
+ The function pcre_exec() is called to match a subject string against a
+ compiled pattern, which is passed in the code argument. If the pattern
has been studied, the result of the study should be passed in the extra
- argument. This function is the main matching facility of the library,
+ argument. This function is the main matching facility of the library,
and it operates in a Perl-like manner. For specialist use there is also
- an alternative matching function, which is described below in the sec-
+ an alternative matching function, which is described below in the sec-
tion about the pcre_dfa_exec() function.
- In most applications, the pattern will have been compiled (and option-
- ally studied) in the same process that calls pcre_exec(). However, it
+ In most applications, the pattern will have been compiled (and option-
+ ally studied) in the same process that calls pcre_exec(). However, it
is possible to save compiled patterns and study data, and then use them
- later in different processes, possibly even on different hosts. For a
+ later in different processes, possibly even on different hosts. For a
discussion about this, see the pcreprecompile documentation.
Here is an example of a simple call to pcre_exec():
@@ -1425,249 +1435,268 @@ MATCHING A PATTERN: THE TRADITIONAL FUNCTION
Extra data for pcre_exec()
- If the extra argument is not NULL, it must point to a pcre_extra data
- block. The pcre_study() function returns such a block (when it doesn't
- return NULL), but you can also create one for yourself, and pass addi-
- tional information in it. The fields in a pcre_extra block are as fol-
- lows:
+ If the extra argument is not NULL, it must point to a pcre_extra data
+ block. The pcre_study() function returns such a block (when it doesn't
+ return NULL), but you can also create one for yourself, and pass addi-
+ tional information in it. The pcre_extra block contains the following
+ fields (not necessarily in this order):
unsigned long int flags;
void *study_data;
unsigned long int match_limit;
+ unsigned long int match_limit_recursion;
void *callout_data;
const unsigned char *tables;
- The flags field is a bitmap that specifies which of the other fields
+ The flags field is a bitmap that specifies which of the other fields
are set. The flag bits are:
PCRE_EXTRA_STUDY_DATA
PCRE_EXTRA_MATCH_LIMIT
+ PCRE_EXTRA_MATCH_LIMIT_RECURSION
PCRE_EXTRA_CALLOUT_DATA
PCRE_EXTRA_TABLES
- Other flag bits should be set to zero. The study_data field is set in
- the pcre_extra block that is returned by pcre_study(), together with
+ Other flag bits should be set to zero. The study_data field is set in
+ the pcre_extra block that is returned by pcre_study(), together with
the appropriate flag bit. You should not set this yourself, but you may
- add to the block by setting the other fields and their corresponding
+ add to the block by setting the other fields and their corresponding
flag bits.
The match_limit field provides a means of preventing PCRE from using up
- a vast amount of resources when running patterns that are not going to
- match, but which have a very large number of possibilities in their
- search trees. The classic example is the use of nested unlimited
+ a vast amount of resources when running patterns that are not going to
+ match, but which have a very large number of possibilities in their
+ search trees. The classic example is the use of nested unlimited
repeats.
- Internally, PCRE uses a function called match() which it calls repeat-
- edly (sometimes recursively). The limit is imposed on the number of
- times this function is called during a match, which has the effect of
- limiting the amount of recursion and backtracking that can take place.
- For patterns that are not anchored, the count starts from zero for each
- position in the subject string.
-
- The default limit for the library can be set when PCRE is built; the
- default default is 10 million, which handles all but the most extreme
- cases. You can reduce the default by suppling pcre_exec() with a
- pcre_extra block in which match_limit is set to a smaller value, and
- PCRE_EXTRA_MATCH_LIMIT is set in the flags field. If the limit is
+ Internally, PCRE uses a function called match() which it calls repeat-
+ edly (sometimes recursively). The limit set by match_limit is imposed
+ on the number of times this function is called during a match, which
+ has the effect of limiting the amount of backtracking that can take
+ place. For patterns that are not anchored, the count restarts from zero
+ for each position in the subject string.
+
+ The default value for the limit can be set when PCRE is built; the
+ default default is 10 million, which handles all but the most extreme
+ cases. You can override the default by suppling pcre_exec() with a
+ pcre_extra block in which match_limit is set, and
+ PCRE_EXTRA_MATCH_LIMIT is set in the flags field. If the limit is
exceeded, pcre_exec() returns PCRE_ERROR_MATCHLIMIT.
- The pcre_callout field is used in conjunction with the "callout" fea-
+ The match_limit_recursion field is similar to match_limit, but instead
+ of limiting the total number of times that match() is called, it limits
+ the depth of recursion. The recursion depth is a smaller number than
+ the total number of calls, because not all calls to match() are recur-
+ sive. This limit is of use only if it is set smaller than match_limit.
+
+ Limiting the recursion depth limits the amount of stack that can be
+ used, or, when PCRE has been compiled to use memory on the heap instead
+ of the stack, the amount of heap memory that can be used.
+
+ The default value for match_limit_recursion can be set when PCRE is
+ built; the default default is the same value as the default for
+ match_limit. You can override the default by suppling pcre_exec() with
+ a pcre_extra block in which match_limit_recursion is set, and
+ PCRE_EXTRA_MATCH_LIMIT_RECURSION is set in the flags field. If the
+ limit is exceeded, pcre_exec() returns PCRE_ERROR_RECURSIONLIMIT.
+
+ The pcre_callout field is used in conjunction with the "callout" fea-
ture, which is described in the pcrecallout documentation.
- The tables field is used to pass a character tables pointer to
- pcre_exec(); this overrides the value that is stored with the compiled
- pattern. A non-NULL value is stored with the compiled pattern only if
- custom tables were supplied to pcre_compile() via its tableptr argu-
+ The tables field is used to pass a character tables pointer to
+ pcre_exec(); this overrides the value that is stored with the compiled
+ pattern. A non-NULL value is stored with the compiled pattern only if
+ custom tables were supplied to pcre_compile() via its tableptr argu-
ment. If NULL is passed to pcre_exec() using this mechanism, it forces
- PCRE's internal tables to be used. This facility is helpful when re-
- using patterns that have been saved after compiling with an external
- set of tables, because the external tables might be at a different
- address when pcre_exec() is called. See the pcreprecompile documenta-
+ PCRE's internal tables to be used. This facility is helpful when re-
+ using patterns that have been saved after compiling with an external
+ set of tables, because the external tables might be at a different
+ address when pcre_exec() is called. See the pcreprecompile documenta-
tion for a discussion of saving compiled patterns for later use.
Option bits for pcre_exec()
- The unused bits of the options argument for pcre_exec() must be zero.
- The only bits that may be set are PCRE_ANCHORED, PCRE_NOTBOL,
+ The unused bits of the options argument for pcre_exec() must be zero.
+ The only bits that may be set are PCRE_ANCHORED, PCRE_NOTBOL,
PCRE_NOTEOL, PCRE_NOTEMPTY, PCRE_NO_UTF8_CHECK and PCRE_PARTIAL.
PCRE_ANCHORED
- The PCRE_ANCHORED option limits pcre_exec() to matching at the first
- matching position. If a pattern was compiled with PCRE_ANCHORED, or
- turned out to be anchored by virtue of its contents, it cannot be made
+ The PCRE_ANCHORED option limits pcre_exec() to matching at the first
+ matching position. If a pattern was compiled with PCRE_ANCHORED, or
+ turned out to be anchored by virtue of its contents, it cannot be made
unachored at matching time.
PCRE_NOTBOL
This option specifies that first character of the subject string is not
- the beginning of a line, so the circumflex metacharacter should not
- match before it. Setting this without PCRE_MULTILINE (at compile time)
- causes circumflex never to match. This option affects only the behav-
+ the beginning of a line, so the circumflex metacharacter should not
+ match before it. Setting this without PCRE_MULTILINE (at compile time)
+ causes circumflex never to match. This option affects only the behav-
iour of the circumflex metacharacter. It does not affect \A.
PCRE_NOTEOL
This option specifies that the end of the subject string is not the end
- of a line, so the dollar metacharacter should not match it nor (except
- in multiline mode) a newline immediately before it. Setting this with-
+ of a line, so the dollar metacharacter should not match it nor (except
+ in multiline mode) a newline immediately before it. Setting this with-
out PCRE_MULTILINE (at compile time) causes dollar never to match. This
- option affects only the behaviour of the dollar metacharacter. It does
+ option affects only the behaviour of the dollar metacharacter. It does
not affect \Z or \z.
PCRE_NOTEMPTY
An empty string is not considered to be a valid match if this option is
- set. If there are alternatives in the pattern, they are tried. If all
- the alternatives match the empty string, the entire match fails. For
+ set. If there are alternatives in the pattern, they are tried. If all
+ the alternatives match the empty string, the entire match fails. For
example, if the pattern
a?b?
- is applied to a string not beginning with "a" or "b", it matches the
- empty string at the start of the subject. With PCRE_NOTEMPTY set, this
+ is applied to a string not beginning with "a" or "b", it matches the
+ empty string at the start of the subject. With PCRE_NOTEMPTY set, this
match is not valid, so PCRE searches further into the string for occur-
rences of "a" or "b".
Perl has no direct equivalent of PCRE_NOTEMPTY, but it does make a spe-
- cial case of a pattern match of the empty string within its split()
- function, and when using the /g modifier. It is possible to emulate
+ cial case of a pattern match of the empty string within its split()
+ function, and when using the /g modifier. It is possible to emulate
Perl's behaviour after matching a null string by first trying the match
again at the same offset with PCRE_NOTEMPTY and PCRE_ANCHORED, and then
- if that fails by advancing the starting offset (see below) and trying
+ if that fails by advancing the starting offset (see below) and trying
an ordinary match again. There is some code that demonstrates how to do
this in the pcredemo.c sample program.
PCRE_NO_UTF8_CHECK
When PCRE_UTF8 is set at compile time, the validity of the subject as a
- UTF-8 string is automatically checked when pcre_exec() is subsequently
- called. The value of startoffset is also checked to ensure that it
- points to the start of a UTF-8 character. If an invalid UTF-8 sequence
+ UTF-8 string is automatically checked when pcre_exec() is subsequently
+ called. The value of startoffset is also checked to ensure that it
+ points to the start of a UTF-8 character. If an invalid UTF-8 sequence
of bytes is found, pcre_exec() returns the error PCRE_ERROR_BADUTF8. If
- startoffset contains an invalid value, PCRE_ERROR_BADUTF8_OFFSET is
+ startoffset contains an invalid value, PCRE_ERROR_BADUTF8_OFFSET is
returned.
- If you already know that your subject is valid, and you want to skip
- these checks for performance reasons, you can set the
- PCRE_NO_UTF8_CHECK option when calling pcre_exec(). You might want to
- do this for the second and subsequent calls to pcre_exec() if you are
- making repeated calls to find all the matches in a single subject
- string. However, you should be sure that the value of startoffset
- points to the start of a UTF-8 character. When PCRE_NO_UTF8_CHECK is
- set, the effect of passing an invalid UTF-8 string as a subject, or a
- value of startoffset that does not point to the start of a UTF-8 char-
+ If you already know that your subject is valid, and you want to skip
+ these checks for performance reasons, you can set the
+ PCRE_NO_UTF8_CHECK option when calling pcre_exec(). You might want to
+ do this for the second and subsequent calls to pcre_exec() if you are
+ making repeated calls to find all the matches in a single subject
+ string. However, you should be sure that the value of startoffset
+ points to the start of a UTF-8 character. When PCRE_NO_UTF8_CHECK is
+ set, the effect of passing an invalid UTF-8 string as a subject, or a
+ value of startoffset that does not point to the start of a UTF-8 char-
acter, is undefined. Your program may crash.
PCRE_PARTIAL
- This option turns on the partial matching feature. If the subject
- string fails to match the pattern, but at some point during the match-
- ing process the end of the subject was reached (that is, the subject
- partially matches the pattern and the failure to match occurred only
- because there were not enough subject characters), pcre_exec() returns
- PCRE_ERROR_PARTIAL instead of PCRE_ERROR_NOMATCH. When PCRE_PARTIAL is
- used, there are restrictions on what may appear in the pattern. These
+ This option turns on the partial matching feature. If the subject
+ string fails to match the pattern, but at some point during the match-
+ ing process the end of the subject was reached (that is, the subject
+ partially matches the pattern and the failure to match occurred only
+ because there were not enough subject characters), pcre_exec() returns
+ PCRE_ERROR_PARTIAL instead of PCRE_ERROR_NOMATCH. When PCRE_PARTIAL is
+ used, there are restrictions on what may appear in the pattern. These
are discussed in the pcrepartial documentation.
The string to be matched by pcre_exec()
- The subject string is passed to pcre_exec() as a pointer in subject, a
- length in length, and a starting byte offset in startoffset. In UTF-8
- mode, the byte offset must point to the start of a UTF-8 character.
- Unlike the pattern string, the subject may contain binary zero bytes.
- When the starting offset is zero, the search for a match starts at the
+ The subject string is passed to pcre_exec() as a pointer in subject, a
+ length in length, and a starting byte offset in startoffset. In UTF-8
+ mode, the byte offset must point to the start of a UTF-8 character.
+ Unlike the pattern string, the subject may contain binary zero bytes.
+ When the starting offset is zero, the search for a match starts at the
beginning of the subject, and this is by far the most common case.
- A non-zero starting offset is useful when searching for another match
- in the same subject by calling pcre_exec() again after a previous suc-
- cess. Setting startoffset differs from just passing over a shortened
- string and setting PCRE_NOTBOL in the case of a pattern that begins
+ A non-zero starting offset is useful when searching for another match
+ in the same subject by calling pcre_exec() again after a previous suc-
+ cess. Setting startoffset differs from just passing over a shortened
+ string and setting PCRE_NOTBOL in the case of a pattern that begins
with any kind of lookbehind. For example, consider the pattern
\Biss\B
- which finds occurrences of "iss" in the middle of words. (\B matches
- only if the current position in the subject is not a word boundary.)
- When applied to the string "Mississipi" the first call to pcre_exec()
- finds the first occurrence. If pcre_exec() is called again with just
- the remainder of the subject, namely "issipi", it does not match,
+ which finds occurrences of "iss" in the middle of words. (\B matches
+ only if the current position in the subject is not a word boundary.)
+ When applied to the string "Mississipi" the first call to pcre_exec()
+ finds the first occurrence. If pcre_exec() is called again with just
+ the remainder of the subject, namely "issipi", it does not match,
because \B is always false at the start of the subject, which is deemed
- to be a word boundary. However, if pcre_exec() is passed the entire
+ to be a word boundary. However, if pcre_exec() is passed the entire
string again, but with startoffset set to 4, it finds the second occur-
- rence of "iss" because it is able to look behind the starting point to
+ rence of "iss" because it is able to look behind the starting point to
discover that it is preceded by a letter.
- If a non-zero starting offset is passed when the pattern is anchored,
+ If a non-zero starting offset is passed when the pattern is anchored,
one attempt to match at the given offset is made. This can only succeed
- if the pattern does not require the match to be at the start of the
+ if the pattern does not require the match to be at the start of the
subject.
How pcre_exec() returns captured substrings
- In general, a pattern matches a certain portion of the subject, and in
- addition, further substrings from the subject may be picked out by
- parts of the pattern. Following the usage in Jeffrey Friedl's book,
- this is called "capturing" in what follows, and the phrase "capturing
- subpattern" is used for a fragment of a pattern that picks out a sub-
- string. PCRE supports several other kinds of parenthesized subpattern
+ In general, a pattern matches a certain portion of the subject, and in
+ addition, further substrings from the subject may be picked out by
+ parts of the pattern. Following the usage in Jeffrey Friedl's book,
+ this is called "capturing" in what follows, and the phrase "capturing
+ subpattern" is used for a fragment of a pattern that picks out a sub-
+ string. PCRE supports several other kinds of parenthesized subpattern
that do not cause substrings to be captured.
- Captured substrings are returned to the caller via a vector of integer
- offsets whose address is passed in ovector. The number of elements in
- the vector is passed in ovecsize, which must be a non-negative number.
+ Captured substrings are returned to the caller via a vector of integer
+ offsets whose address is passed in ovector. The number of elements in
+ the vector is passed in ovecsize, which must be a non-negative number.
Note: this argument is NOT the size of ovector in bytes.
- The first two-thirds of the vector is used to pass back captured sub-
- strings, each substring using a pair of integers. The remaining third
- of the vector is used as workspace by pcre_exec() while matching cap-
- turing subpatterns, and is not available for passing back information.
- The length passed in ovecsize should always be a multiple of three. If
+ The first two-thirds of the vector is used to pass back captured sub-
+ strings, each substring using a pair of integers. The remaining third
+ of the vector is used as workspace by pcre_exec() while matching cap-
+ turing subpatterns, and is not available for passing back information.
+ The length passed in ovecsize should always be a multiple of three. If
it is not, it is rounded down.
- When a match is successful, information about captured substrings is
- returned in pairs of integers, starting at the beginning of ovector,
- and continuing up to two-thirds of its length at the most. The first
+ When a match is successful, information about captured substrings is
+ returned in pairs of integers, starting at the beginning of ovector,
+ and continuing up to two-thirds of its length at the most. The first
element of a pair is set to the offset of the first character in a sub-
- string, and the second is set to the offset of the first character
- after the end of a substring. The first pair, ovector[0] and ovec-
- tor[1], identify the portion of the subject string matched by the
- entire pattern. The next pair is used for the first capturing subpat-
- tern, and so on. The value returned by pcre_exec() is the number of
- pairs that have been set. If there are no capturing subpatterns, the
- return value from a successful match is 1, indicating that just the
+ string, and the second is set to the offset of the first character
+ after the end of a substring. The first pair, ovector[0] and ovec-
+ tor[1], identify the portion of the subject string matched by the
+ entire pattern. The next pair is used for the first capturing subpat-
+ tern, and so on. The value returned by pcre_exec() is the number of
+ pairs that have been set. If there are no capturing subpatterns, the
+ return value from a successful match is 1, indicating that just the
first pair of offsets has been set.
- Some convenience functions are provided for extracting the captured
- substrings as separate strings. These are described in the following
+ Some convenience functions are provided for extracting the captured
+ substrings as separate strings. These are described in the following
section.
- It is possible for an capturing subpattern number n+1 to match some
- part of the subject when subpattern n has not been used at all. For
+ It is possible for an capturing subpattern number n+1 to match some
+ part of the subject when subpattern n has not been used at all. For
example, if the string "abc" is matched against the pattern (a|(z))(bc)
- subpatterns 1 and 3 are matched, but 2 is not. When this happens, both
+ subpatterns 1 and 3 are matched, but 2 is not. When this happens, both
offset values corresponding to the unused subpattern are set to -1.
If a capturing subpattern is matched repeatedly, it is the last portion
of the string that it matched that is returned.
- If the vector is too small to hold all the captured substring offsets,
+ If the vector is too small to hold all the captured substring offsets,
it is used as far as possible (up to two-thirds of its length), and the
- function returns a value of zero. In particular, if the substring off-
+ function returns a value of zero. In particular, if the substring off-
sets are not of interest, pcre_exec() may be called with ovector passed
- as NULL and ovecsize as zero. However, if the pattern contains back
- references and the ovector is not big enough to remember the related
- substrings, PCRE has to get additional memory for use during matching.
+ as NULL and ovecsize as zero. However, if the pattern contains back
+ references and the ovector is not big enough to remember the related
+ substrings, PCRE has to get additional memory for use during matching.
Thus it is usually advisable to supply an ovector.
- Note that pcre_info() can be used to find out how many capturing sub-
+ Note that pcre_info() can be used to find out how many capturing sub-
patterns there are in a compiled pattern. The smallest size for ovector
- that will allow for n captured substrings, in addition to the offsets
+ that will allow for n captured substrings, in addition to the offsets
of the substring matched by the whole pattern, is (n+1)*3.
Return values from pcre_exec()
- If pcre_exec() fails, it returns a negative number. The following are
+ If pcre_exec() fails, it returns a negative number. The following are
defined in the header file:
PCRE_ERROR_NOMATCH (-1)
@@ -1676,7 +1705,7 @@ MATCHING A PATTERN: THE TRADITIONAL FUNCTION
PCRE_ERROR_NULL (-2)
- Either code or subject was passed as NULL, or ovector was NULL and
+ Either code or subject was passed as NULL, or ovector was NULL and
ovecsize was not zero.
PCRE_ERROR_BADOPTION (-3)
@@ -1685,74 +1714,80 @@ MATCHING A PATTERN: THE TRADITIONAL FUNCTION
PCRE_ERROR_BADMAGIC (-4)
- PCRE stores a 4-byte "magic number" at the start of the compiled code,
+ PCRE stores a 4-byte "magic number" at the start of the compiled code,
to catch the case when it is passed a junk pointer and to detect when a
pattern that was compiled in an environment of one endianness is run in
- an environment with the other endianness. This is the error that PCRE
+ an environment with the other endianness. This is the error that PCRE
gives when the magic number is not present.
PCRE_ERROR_UNKNOWN_NODE (-5)
While running the pattern match, an unknown item was encountered in the
- compiled pattern. This error could be caused by a bug in PCRE or by
+ compiled pattern. This error could be caused by a bug in PCRE or by
overwriting of the compiled pattern.
PCRE_ERROR_NOMEMORY (-6)
- If a pattern contains back references, but the ovector that is passed
+ If a pattern contains back references, but the ovector that is passed
to pcre_exec() is not big enough to remember the referenced substrings,
- PCRE gets a block of memory at the start of matching to use for this
- purpose. If the call via pcre_malloc() fails, this error is given. The
+ PCRE gets a block of memory at the start of matching to use for this
+ purpose. If the call via pcre_malloc() fails, this error is given. The
memory is automatically freed at the end of matching.
PCRE_ERROR_NOSUBSTRING (-7)
- This error is used by the pcre_copy_substring(), pcre_get_substring(),
+ This error is used by the pcre_copy_substring(), pcre_get_substring(),
and pcre_get_substring_list() functions (see below). It is never
returned by pcre_exec().
PCRE_ERROR_MATCHLIMIT (-8)
- The recursion and backtracking limit, as specified by the match_limit
- field in a pcre_extra structure (or defaulted) was reached. See the
+ The backtracking limit, as specified by the match_limit field in a
+ pcre_extra structure (or defaulted) was reached. See the description
+ above.
+
+ PCRE_ERROR_RECURSIONLIMIT (-21)
+
+ The internal recursion limit, as specified by the match_limit_recursion
+ field in a pcre_extra structure (or defaulted) was reached. See the
description above.
PCRE_ERROR_CALLOUT (-9)
This error is never generated by pcre_exec() itself. It is provided for
- use by callout functions that want to yield a distinctive error code.
+ use by callout functions that want to yield a distinctive error code.
See the pcrecallout documentation for details.
PCRE_ERROR_BADUTF8 (-10)
- A string that contains an invalid UTF-8 byte sequence was passed as a
+ A string that contains an invalid UTF-8 byte sequence was passed as a
subject.
PCRE_ERROR_BADUTF8_OFFSET (-11)
The UTF-8 byte sequence that was passed as a subject was valid, but the
- value of startoffset did not point to the beginning of a UTF-8 charac-
+ value of startoffset did not point to the beginning of a UTF-8 charac-
ter.
PCRE_ERROR_PARTIAL (-12)
- The subject string did not match, but it did match partially. See the
+ The subject string did not match, but it did match partially. See the
pcrepartial documentation for details of partial matching.
PCRE_ERROR_BADPARTIAL (-13)
- The PCRE_PARTIAL option was used with a compiled pattern containing
- items that are not supported for partial matching. See the pcrepartial
+ The PCRE_PARTIAL option was used with a compiled pattern containing
+ items that are not supported for partial matching. See the pcrepartial
documentation for details of partial matching.
PCRE_ERROR_INTERNAL (-14)
- An unexpected internal error has occurred. This error could be caused
+ An unexpected internal error has occurred. This error could be caused
by a bug in PCRE or by overwriting of the compiled pattern.
PCRE_ERROR_BADCOUNT (-15)
- This error is given if the value of the ovecsize argument is negative.
+ This error is given if the value of the ovecsize argument is negative.
EXTRACTING CAPTURED SUBSTRINGS BY NUMBER
@@ -1768,71 +1803,71 @@ EXTRACTING CAPTURED SUBSTRINGS BY NUMBER
int pcre_get_substring_list(const char *subject,
int *ovector, int stringcount, const char ***listptr);
- Captured substrings can be accessed directly by using the offsets
- returned by pcre_exec() in ovector. For convenience, the functions
+ Captured substrings can be accessed directly by using the offsets
+ returned by pcre_exec() in ovector. For convenience, the functions
pcre_copy_substring(), pcre_get_substring(), and pcre_get_sub-
- string_list() are provided for extracting captured substrings as new,
- separate, zero-terminated strings. These functions identify substrings
- by number. The next section describes functions for extracting named
- substrings. A substring that contains a binary zero is correctly
- extracted and has a further zero added on the end, but the result is
+ string_list() are provided for extracting captured substrings as new,
+ separate, zero-terminated strings. These functions identify substrings
+ by number. The next section describes functions for extracting named
+ substrings. A substring that contains a binary zero is correctly
+ extracted and has a further zero added on the end, but the result is
not, of course, a C string.
- The first three arguments are the same for all three of these func-
- tions: subject is the subject string that has just been successfully
+ The first three arguments are the same for all three of these func-
+ tions: subject is the subject string that has just been successfully
matched, ovector is a pointer to the vector of integer offsets that was
passed to pcre_exec(), and stringcount is the number of substrings that
- were captured by the match, including the substring that matched the
+ were captured by the match, including the substring that matched the
entire regular expression. This is the value returned by pcre_exec() if
- it is greater than zero. If pcre_exec() returned zero, indicating that
- it ran out of space in ovector, the value passed as stringcount should
+ it is greater than zero. If pcre_exec() returned zero, indicating that
+ it ran out of space in ovector, the value passed as stringcount should
be the number of elements in the vector divided by three.
- The functions pcre_copy_substring() and pcre_get_substring() extract a
- single substring, whose number is given as stringnumber. A value of
- zero extracts the substring that matched the entire pattern, whereas
- higher values extract the captured substrings. For pcre_copy_sub-
- string(), the string is placed in buffer, whose length is given by
- buffersize, while for pcre_get_substring() a new block of memory is
- obtained via pcre_malloc, and its address is returned via stringptr.
- The yield of the function is the length of the string, not including
+ The functions pcre_copy_substring() and pcre_get_substring() extract a
+ single substring, whose number is given as stringnumber. A value of
+ zero extracts the substring that matched the entire pattern, whereas
+ higher values extract the captured substrings. For pcre_copy_sub-
+ string(), the string is placed in buffer, whose length is given by
+ buffersize, while for pcre_get_substring() a new block of memory is
+ obtained via pcre_malloc, and its address is returned via stringptr.
+ The yield of the function is the length of the string, not including
the terminating zero, or one of
PCRE_ERROR_NOMEMORY (-6)
- The buffer was too small for pcre_copy_substring(), or the attempt to
+ The buffer was too small for pcre_copy_substring(), or the attempt to
get memory failed for pcre_get_substring().
PCRE_ERROR_NOSUBSTRING (-7)
There is no substring whose number is stringnumber.
- The pcre_get_substring_list() function extracts all available sub-
- strings and builds a list of pointers to them. All this is done in a
+ The pcre_get_substring_list() function extracts all available sub-
+ strings and builds a list of pointers to them. All this is done in a
single block of memory that is obtained via pcre_malloc. The address of
- the memory block is returned via listptr, which is also the start of
- the list of string pointers. The end of the list is marked by a NULL
+ the memory block is returned via listptr, which is also the start of
+ the list of string pointers. The end of the list is marked by a NULL
pointer. The yield of the function is zero if all went well, or
PCRE_ERROR_NOMEMORY (-6)
if the attempt to get the memory block failed.
- When any of these functions encounter a substring that is unset, which
- can happen when capturing subpattern number n+1 matches some part of
- the subject, but subpattern n has not been used at all, they return an
+ When any of these functions encounter a substring that is unset, which
+ can happen when capturing subpattern number n+1 matches some part of
+ the subject, but subpattern n has not been used at all, they return an
empty string. This can be distinguished from a genuine zero-length sub-
- string by inspecting the appropriate offset in ovector, which is nega-
+ string by inspecting the appropriate offset in ovector, which is nega-
tive for unset substrings.
- The two convenience functions pcre_free_substring() and pcre_free_sub-
- string_list() can be used to free the memory returned by a previous
+ The two convenience functions pcre_free_substring() and pcre_free_sub-
+ string_list() can be used to free the memory returned by a previous
call of pcre_get_substring() or pcre_get_substring_list(), respec-
- tively. They do nothing more than call the function pointed to by
- pcre_free, which of course could be called directly from a C program.
- However, PCRE is used in some situations where it is linked via a spe-
+ tively. They do nothing more than call the function pointed to by
+ pcre_free, which of course could be called directly from a C program.
+ However, PCRE is used in some situations where it is linked via a spe-
cial interface to another programming language which cannot use
- pcre_free directly; it is for these cases that the functions are pro-
+ pcre_free directly; it is for these cases that the functions are pro-
vided.
@@ -1851,52 +1886,52 @@ EXTRACTING CAPTURED SUBSTRINGS BY NAME
int stringcount, const char *stringname,
const char **stringptr);
- To extract a substring by name, you first have to find associated num-
+ To extract a substring by name, you first have to find associated num-
ber. For example, for this pattern
(a+)b(?P<xxx>\d+)...
the number of the subpattern called "xxx" is 2. You can find the number
from the name by calling pcre_get_stringnumber(). The first argument is
- the compiled pattern, and the second is the name. The yield of the
- function is the subpattern number, or PCRE_ERROR_NOSUBSTRING (-7) if
+ the compiled pattern, and the second is the name. The yield of the
+ function is the subpattern number, or PCRE_ERROR_NOSUBSTRING (-7) if
there is no subpattern of that name.
Given the number, you can extract the substring directly, or use one of
the functions described in the previous section. For convenience, there
are also two functions that do the whole job.
- Most of the arguments of pcre_copy_named_substring() and
- pcre_get_named_substring() are the same as those for the similarly
- named functions that extract by number. As these are described in the
- previous section, they are not re-described here. There are just two
+ Most of the arguments of pcre_copy_named_substring() and
+ pcre_get_named_substring() are the same as those for the similarly
+ named functions that extract by number. As these are described in the
+ previous section, they are not re-described here. There are just two
differences:
- First, instead of a substring number, a substring name is given. Sec-
+ First, instead of a substring number, a substring name is given. Sec-
ond, there is an extra argument, given at the start, which is a pointer
- to the compiled pattern. This is needed in order to gain access to the
+ to the compiled pattern. This is needed in order to gain access to the
name-to-number translation table.
- These functions call pcre_get_stringnumber(), and if it succeeds, they
- then call pcre_copy_substring() or pcre_get_substring(), as appropri-
+ These functions call pcre_get_stringnumber(), and if it succeeds, they
+ then call pcre_copy_substring() or pcre_get_substring(), as appropri-
ate.
FINDING ALL POSSIBLE MATCHES
- The traditional matching function uses a similar algorithm to Perl,
+ The traditional matching function uses a similar algorithm to Perl,
which stops when it finds the first match, starting at a given point in
- the subject. If you want to find all possible matches, or the longest
- possible match, consider using the alternative matching function (see
- below) instead. If you cannot use the alternative function, but still
- need to find all possible matches, you can kludge it up by making use
+ the subject. If you want to find all possible matches, or the longest
+ possible match, consider using the alternative matching function (see
+ below) instead. If you cannot use the alternative function, but still
+ need to find all possible matches, you can kludge it up by making use
of the callout facility, which is described in the pcrecallout documen-
tation.
What you have to do is to insert a callout right at the end of the pat-
- tern. When your callout function is called, extract and save the cur-
- rent matched substring. Then return 1, which forces pcre_exec() to
- backtrack and try other alternatives. Ultimately, when it runs out of
+ tern. When your callout function is called, extract and save the cur-
+ rent matched substring. Then return 1, which forces pcre_exec() to
+ backtrack and try other alternatives. Ultimately, when it runs out of
matches, pcre_exec() will yield PCRE_ERROR_NOMATCH.
@@ -1907,32 +1942,32 @@ MATCHING A PATTERN: THE ALTERNATIVE FUNCTION
int options, int *ovector, int ovecsize,
int *workspace, int wscount);
- The function pcre_dfa_exec() is called to match a subject string
- against a compiled pattern, using a "DFA" matching algorithm. This has
- different characteristics to the normal algorithm, and is not compati-
+ The function pcre_dfa_exec() is called to match a subject string
+ against a compiled pattern, using a "DFA" matching algorithm. This has
+ different characteristics to the normal algorithm, and is not compati-
ble with Perl. Some of the features of PCRE patterns are not supported.
Nevertheless, there are times when this kind of matching can be useful.
- For a discussion of the two matching algorithms, see the pcrematching
+ For a discussion of the two matching algorithms, see the pcrematching
documentation.
- The arguments for the pcre_dfa_exec() function are the same as for
+ The arguments for the pcre_dfa_exec() function are the same as for
pcre_exec(), plus two extras. The ovector argument is used in a differ-
- ent way, and this is described below. The other common arguments are
- used in the same way as for pcre_exec(), so their description is not
+ ent way, and this is described below. The other common arguments are
+ used in the same way as for pcre_exec(), so their description is not
repeated here.
- The two additional arguments provide workspace for the function. The
- workspace vector should contain at least 20 elements. It is used for
+ The two additional arguments provide workspace for the function. The
+ workspace vector should contain at least 20 elements. It is used for
keeping track of multiple paths through the pattern tree. More
- workspace will be needed for patterns and subjects where there are a
+ workspace will be needed for patterns and subjects where there are a
lot of possible matches.
- Here is an example of a simple call to pcre_exec():
+ Here is an example of a simple call to pcre_dfa_exec():
int rc;
int ovector[10];
int wspace[20];
- rc = pcre_exec(
+ rc = pcre_dfa_exec(
re, /* result of pcre_compile() */
NULL, /* we didn't study the pattern */
"some string", /* the subject string */
@@ -1946,47 +1981,47 @@ MATCHING A PATTERN: THE ALTERNATIVE FUNCTION
Option bits for pcre_dfa_exec()
- The unused bits of the options argument for pcre_dfa_exec() must be
- zero. The only bits that may be set are PCRE_ANCHORED, PCRE_NOTBOL,
- PCRE_NOTEOL, PCRE_NOTEMPTY, PCRE_NO_UTF8_CHECK, PCRE_PARTIAL,
- PCRE_DFA_SHORTEST, and PCRE_DFA_RESTART. All but the last three of
- these are the same as for pcre_exec(), so their description is not
+ The unused bits of the options argument for pcre_dfa_exec() must be
+ zero. The only bits that may be set are PCRE_ANCHORED, PCRE_NOTBOL,
+ PCRE_NOTEOL, PCRE_NOTEMPTY, PCRE_NO_UTF8_CHECK, PCRE_PARTIAL,
+ PCRE_DFA_SHORTEST, and PCRE_DFA_RESTART. All but the last three of
+ these are the same as for pcre_exec(), so their description is not
repeated here.
PCRE_PARTIAL
- This has the same general effect as it does for pcre_exec(), but the
- details are slightly different. When PCRE_PARTIAL is set for
- pcre_dfa_exec(), the return code PCRE_ERROR_NOMATCH is converted into
- PCRE_ERROR_PARTIAL if the end of the subject is reached, there have
+ This has the same general effect as it does for pcre_exec(), but the
+ details are slightly different. When PCRE_PARTIAL is set for
+ pcre_dfa_exec(), the return code PCRE_ERROR_NOMATCH is converted into
+ PCRE_ERROR_PARTIAL if the end of the subject is reached, there have
been no complete matches, but there is still at least one matching pos-
- sibility. The portion of the string that provided the partial match is
+ sibility. The portion of the string that provided the partial match is
set as the first matching string.
PCRE_DFA_SHORTEST
- Setting the PCRE_DFA_SHORTEST option causes the matching algorithm to
- stop as soon as it has found one match. Because of the way the DFA
+ Setting the PCRE_DFA_SHORTEST option causes the matching algorithm to
+ stop as soon as it has found one match. Because of the way the DFA
algorithm works, this is necessarily the shortest possible match at the
first possible matching point in the subject string.
PCRE_DFA_RESTART
- When pcre_dfa_exec() is called with the PCRE_PARTIAL option, and
- returns a partial match, it is possible to call it again, with addi-
- tional subject characters, and have it continue with the same match.
- The PCRE_DFA_RESTART option requests this action; when it is set, the
- workspace and wscount options must reference the same vector as before
- because data about the match so far is left in them after a partial
- match. There is more discussion of this facility in the pcrepartial
+ When pcre_dfa_exec() is called with the PCRE_PARTIAL option, and
+ returns a partial match, it is possible to call it again, with addi-
+ tional subject characters, and have it continue with the same match.
+ The PCRE_DFA_RESTART option requests this action; when it is set, the
+ workspace and wscount options must reference the same vector as before
+ because data about the match so far is left in them after a partial
+ match. There is more discussion of this facility in the pcrepartial
documentation.
Successful returns from pcre_dfa_exec()
- When pcre_dfa_exec() succeeds, it may have matched more than one sub-
+ When pcre_dfa_exec() succeeds, it may have matched more than one sub-
string in the subject. Note, however, that all the matches from one run
- of the function start at the same point in the subject. The shorter
- matches are all initial substrings of the longer matches. For example,
+ of the function start at the same point in the subject. The shorter
+ matches are all initial substrings of the longer matches. For example,
if the pattern
<.*>
@@ -2001,59 +2036,59 @@ MATCHING A PATTERN: THE ALTERNATIVE FUNCTION
<something> <something else>
<something> <something else> <something further>
- On success, the yield of the function is a number greater than zero,
- which is the number of matched substrings. The substrings themselves
- are returned in ovector. Each string uses two elements; the first is
- the offset to the start, and the second is the offset to the end. All
+ On success, the yield of the function is a number greater than zero,
+ which is the number of matched substrings. The substrings themselves
+ are returned in ovector. Each string uses two elements; the first is
+ the offset to the start, and the second is the offset to the end. All
the strings have the same start offset. (Space could have been saved by
- giving this only once, but it was decided to retain some compatibility
- with the way pcre_exec() returns data, even though the meaning of the
+ giving this only once, but it was decided to retain some compatibility
+ with the way pcre_exec() returns data, even though the meaning of the
strings is different.)
The strings are returned in reverse order of length; that is, the long-
- est matching string is given first. If there were too many matches to
- fit into ovector, the yield of the function is zero, and the vector is
+ est matching string is given first. If there were too many matches to
+ fit into ovector, the yield of the function is zero, and the vector is
filled with the longest matches.
Error returns from pcre_dfa_exec()
- The pcre_dfa_exec() function returns a negative number when it fails.
- Many of the errors are the same as for pcre_exec(), and these are
- described above. There are in addition the following errors that are
+ The pcre_dfa_exec() function returns a negative number when it fails.
+ Many of the errors are the same as for pcre_exec(), and these are
+ described above. There are in addition the following errors that are
specific to pcre_dfa_exec():
PCRE_ERROR_DFA_UITEM (-16)
- This return is given if pcre_dfa_exec() encounters an item in the pat-
- tern that it does not support, for instance, the use of \C or a back
+ This return is given if pcre_dfa_exec() encounters an item in the pat-
+ tern that it does not support, for instance, the use of \C or a back
reference.
PCRE_ERROR_DFA_UCOND (-17)
- This return is given if pcre_dfa_exec() encounters a condition item in
- a pattern that uses a back reference for the condition. This is not
+ This return is given if pcre_dfa_exec() encounters a condition item in
+ a pattern that uses a back reference for the condition. This is not
supported.
PCRE_ERROR_DFA_UMLIMIT (-18)
- This return is given if pcre_dfa_exec() is called with an extra block
+ This return is given if pcre_dfa_exec() is called with an extra block
that contains a setting of the match_limit field. This is not supported
(it is meaningless).
PCRE_ERROR_DFA_WSSIZE (-19)
- This return is given if pcre_dfa_exec() runs out of space in the
+ This return is given if pcre_dfa_exec() runs out of space in the
workspace vector.
PCRE_ERROR_DFA_RECURSE (-20)
- When a recursive subpattern is processed, the matching function calls
- itself recursively, using private vectors for ovector and workspace.
- This error is given if the output vector is not large enough. This
+ When a recursive subpattern is processed, the matching function calls
+ itself recursively, using private vectors for ovector and workspace.
+ This error is given if the output vector is not large enough. This
should be extremely rare, as a vector of size 1000 is used.
-Last updated: 16 May 2005
-Copyright (c) 1997-2005 University of Cambridge.
+Last updated: 18 January 2006
+Copyright (c) 1997-2006 University of Cambridge.
------------------------------------------------------------------------------
@@ -2229,35 +2264,37 @@ DIFFERENCES BETWEEN PCRE AND PERL
handle regular expressions. The differences described here are with
respect to Perl 5.8.
- 1. PCRE does not have full UTF-8 support. Details of what it does have
- are given in the section on UTF-8 support in the main pcre page.
+ 1. PCRE has only a subset of Perl's UTF-8 and Unicode support. Details
+ of what it does have are given in the section on UTF-8 support in the
+ main pcre page.
2. PCRE does not allow repeat quantifiers on lookahead assertions. Perl
- permits them, but they do not mean what you might think. For example,
+ permits them, but they do not mean what you might think. For example,
(?!a){3} does not assert that the next three characters are not "a". It
just asserts that the next character is not "a" three times.
- 3. Capturing subpatterns that occur inside negative lookahead asser-
- tions are counted, but their entries in the offsets vector are never
- set. Perl sets its numerical variables from any such patterns that are
+ 3. Capturing subpatterns that occur inside negative lookahead asser-
+ tions are counted, but their entries in the offsets vector are never
+ set. Perl sets its numerical variables from any such patterns that are
matched before the assertion fails to match something (thereby succeed-
- ing), but only if the negative lookahead assertion contains just one
+ ing), but only if the negative lookahead assertion contains just one
branch.
- 4. Though binary zero characters are supported in the subject string,
+ 4. Though binary zero characters are supported in the subject string,
they are not allowed in a pattern string because it is passed as a nor-
mal C string, terminated by zero. The escape sequence \0 can be used in
the pattern to represent a binary zero.
- 5. The following Perl escape sequences are not supported: \l, \u, \L,
+ 5. The following Perl escape sequences are not supported: \l, \u, \L,
\U, and \N. In fact these are implemented by Perl's general string-han-
- dling and are not part of its pattern matching engine. If any of these
+ dling and are not part of its pattern matching engine. If any of these
are encountered by PCRE, an error is generated.
- 6. The Perl escape sequences \p, \P, and \X are supported only if PCRE
- is built with Unicode character property support. The properties that
- can be tested with \p and \P are limited to the general category prop-
- erties such as Lu and Nd.
+ 6. The Perl escape sequences \p, \P, and \X are supported only if PCRE
+ is built with Unicode character property support. The properties that
+ can be tested with \p and \P are limited to the general category prop-
+ erties such as Lu and Nd, script names such as Greek or Han, and the
+ derived properties Any and L&.
7. PCRE does support the \Q...\E escape for quoting substrings. Charac-
ters in between are treated as literals. This is slightly different
@@ -2330,8 +2367,8 @@ DIFFERENCES BETWEEN PCRE AND PERL
(n) The alternative matching function (pcre_dfa_exec()) matches in a
different way and is not Perl-compatible.
-Last updated: 28 February 2005
-Copyright (c) 1997-2005 University of Cambridge.
+Last updated: 24 January 2006
+Copyright (c) 1997-2006 University of Cambridge.
------------------------------------------------------------------------------
@@ -2477,7 +2514,7 @@ BACKSLASH
\t tab (hex 09)
\ddd character with octal code ddd, or backreference
\xhh character with hex code hh
- \x{hhh..} character with hex code hhh... (UTF-8 mode only)
+ \x{hhh..} character with hex code hhh..
The precise effect of \cx is as follows: if x is a lower case letter,
it is converted to upper case. Then bit 6 of the character (hex 40) is
@@ -2485,38 +2522,37 @@ BACKSLASH
becomes hex 7B.
After \x, from zero to two hexadecimal digits are read (letters can be
- in upper or lower case). In UTF-8 mode, any number of hexadecimal dig-
- its may appear between \x{ and }, but the value of the character code
- must be less than 2**31 (that is, the maximum hexadecimal value is
- 7FFFFFFF). If characters other than hexadecimal digits appear between
- \x{ and }, or if there is no terminating }, this form of escape is not
- recognized. Instead, the initial \x will be interpreted as a basic
- hexadecimal escape, with no following digits, giving a character whose
- value is zero.
+ in upper or lower case). Any number of hexadecimal digits may appear
+ between \x{ and }, but the value of the character code must be less
+ than 256 in non-UTF-8 mode, and less than 2**31 in UTF-8 mode (that is,
+ the maximum hexadecimal value is 7FFFFFFF). If characters other than
+ hexadecimal digits appear between \x{ and }, or if there is no termi-
+ nating }, this form of escape is not recognized. Instead, the initial
+ \x will be interpreted as a basic hexadecimal escape, with no following
+ digits, giving a character whose value is zero.
Characters whose value is less than 256 can be defined by either of the
- two syntaxes for \x when PCRE is in UTF-8 mode. There is no difference
- in the way they are handled. For example, \xdc is exactly the same as
- \x{dc}.
-
- After \0 up to two further octal digits are read. In both cases, if
- there are fewer than two digits, just those that are present are used.
- Thus the sequence \0\x\07 specifies two binary zeros followed by a BEL
- character (code value 7). Make sure you supply two digits after the
- initial zero if the pattern character that follows is itself an octal
+ two syntaxes for \x. There is no difference in the way they are han-
+ dled. For example, \xdc is exactly the same as \x{dc}.
+
+ After \0 up to two further octal digits are read. In both cases, if
+ there are fewer than two digits, just those that are present are used.
+ Thus the sequence \0\x\07 specifies two binary zeros followed by a BEL
+ character (code value 7). Make sure you supply two digits after the
+ initial zero if the pattern character that follows is itself an octal
digit.
The handling of a backslash followed by a digit other than 0 is compli-
cated. Outside a character class, PCRE reads it and any following dig-
- its as a decimal number. If the number is less than 10, or if there
+ its as a decimal number. If the number is less than 10, or if there
have been at least that many previous capturing left parentheses in the
- expression, the entire sequence is taken as a back reference. A
- description of how this works is given later, following the discussion
+ expression, the entire sequence is taken as a back reference. A
+ description of how this works is given later, following the discussion
of parenthesized subpatterns.
- Inside a character class, or if the decimal number is greater than 9
- and there have not been that many capturing subpatterns, PCRE re-reads
- up to three octal digits following the backslash, and generates a sin-
+ Inside a character class, or if the decimal number is greater than 9
+ and there have not been that many capturing subpatterns, PCRE re-reads
+ up to three octal digits following the backslash, and generates a sin-
gle byte from the least significant 8 bits of the value. Any subsequent
digits stand for themselves. For example:
@@ -2535,19 +2571,19 @@ BACKSLASH
\81 is either a back reference, or a binary zero
followed by the two characters "8" and "1"
- Note that octal values of 100 or greater must not be introduced by a
+ Note that octal values of 100 or greater must not be introduced by a
leading zero, because no more than three octal digits are ever read.
- All the sequences that define a single byte value or a single UTF-8
+ All the sequences that define a single byte value or a single UTF-8
character (in UTF-8 mode) can be used both inside and outside character
- classes. In addition, inside a character class, the sequence \b is
+ classes. In addition, inside a character class, the sequence \b is
interpreted as the backspace character (hex 08), and the sequence \X is
- interpreted as the character "X". Outside a character class, these
+ interpreted as the character "X". Outside a character class, these
sequences have different meanings (see below).
Generic character types
- The third use of backslash is for specifying generic character types.
+ The third use of backslash is for specifying generic character types.
The following are always recognized:
\d any decimal digit
@@ -2558,56 +2594,81 @@ BACKSLASH
\W any "non-word" character
Each pair of escape sequences partitions the complete set of characters
- into two disjoint sets. Any given character matches one, and only one,
+ into two disjoint sets. Any given character matches one, and only one,
of each pair.
These character type sequences can appear both inside and outside char-
- acter classes. They each match one character of the appropriate type.
- If the current matching point is at the end of the subject string, all
+ acter classes. They each match one character of the appropriate type.
+ If the current matching point is at the end of the subject string, all
of them fail, since there is no character to match.
- For compatibility with Perl, \s does not match the VT character (code
- 11). This makes it different from the the POSIX "space" class. The \s
+ For compatibility with Perl, \s does not match the VT character (code
+ 11). This makes it different from the the POSIX "space" class. The \s
characters are HT (9), LF (10), FF (12), CR (13), and space (32).
A "word" character is an underscore or any character less than 256 that
- is a letter or digit. The definition of letters and digits is con-
- trolled by PCRE's low-valued character tables, and may vary if locale-
- specific matching is taking place (see "Locale support" in the pcreapi
- page). For example, in the "fr_FR" (French) locale, some character
- codes greater than 128 are used for accented letters, and these are
+ is a letter or digit. The definition of letters and digits is con-
+ trolled by PCRE's low-valued character tables, and may vary if locale-
+ specific matching is taking place (see "Locale support" in the pcreapi
+ page). For example, in the "fr_FR" (French) locale, some character
+ codes greater than 128 are used for accented letters, and these are
matched by \w.
- In UTF-8 mode, characters with values greater than 128 never match \d,
+ In UTF-8 mode, characters with values greater than 128 never match \d,
\s, or \w, and always match \D, \S, and \W. This is true even when Uni-
- code character property support is available.
+ code character property support is available. The use of locales with
+ Unicode is discouraged.
Unicode character properties
When PCRE is built with Unicode character property support, three addi-
- tional escape sequences to match generic character types are available
+ tional escape sequences to match character properties are available
when UTF-8 mode is selected. They are:
- \p{xx} a character with the xx property
- \P{xx} a character without the xx property
- \X an extended Unicode sequence
+ \p{xx} a character with the xx property
+ \P{xx} a character without the xx property
+ \X an extended Unicode sequence
The property names represented by xx above are limited to the Unicode
- general category properties. Each character has exactly one such prop-
- erty, specified by a two-letter abbreviation. For compatibility with
- Perl, negation can be specified by including a circumflex between the
- opening brace and the property name. For example, \p{^Lu} is the same
- as \P{Lu}.
-
- If only one letter is specified with \p or \P, it includes all the
- properties that start with that letter. In this case, in the absence of
- negation, the curly brackets in the escape sequence are optional; these
- two examples have the same effect:
+ script names, the general category properties, and "Any", which matches
+ any character (including newline). Other properties such as "InMusical-
+ Symbols" are not currently supported by PCRE. Note that \P{Any} does
+ not match any characters, so always causes a match failure.
+
+ Sets of Unicode characters are defined as belonging to certain scripts.
+ A character from one of these sets can be matched using a script name.
+ For example:
+
+ \p{Greek}
+ \P{Han}
+
+ Those that are not part of an identified script are lumped together as
+ "Common". The current list of scripts is:
+
+ Arabic, Armenian, Bengali, Bopomofo, Braille, Buginese, Buhid, Cana-
+ dian_Aboriginal, Cherokee, Common, Coptic, Cypriot, Cyrillic, Deseret,
+ Devanagari, Ethiopic, Georgian, Glagolitic, Gothic, Greek, Gujarati,
+ Gurmukhi, Han, Hangul, Hanunoo, Hebrew, Hiragana, Inherited, Kannada,
+ Katakana, Kharoshthi, Khmer, Lao, Latin, Limbu, Linear_B, Malayalam,
+ Mongolian, Myanmar, New_Tai_Lue, Ogham, Old_Italic, Old_Persian, Oriya,
+ Osmanya, Runic, Shavian, Sinhala, Syloti_Nagri, Syriac, Tagalog, Tag-
+ banwa, Tai_Le, Tamil, Telugu, Thaana, Thai, Tibetan, Tifinagh,
+ Ugaritic, Yi.
+
+ Each character has exactly one general category property, specified by
+ a two-letter abbreviation. For compatibility with Perl, negation can be
+ specified by including a circumflex between the opening brace and the
+ property name. For example, \p{^Lu} is the same as \P{Lu}.
+
+ If only one letter is specified with \p or \P, it includes all the gen-
+ eral category properties that start with that letter. In this case, in
+ the absence of negation, the curly brackets in the escape sequence are
+ optional; these two examples have the same effect:
\p{L}
\pL
- The following property codes are supported:
+ The following general category property codes are supported:
C Other
Cc Control
@@ -2653,8 +2714,17 @@ BACKSLASH
Zp Paragraph separator
Zs Space separator
- Extended properties such as "Greek" or "InMusicalSymbols" are not sup-
- ported by PCRE.
+ The special property L& is also supported: it matches a character that
+ has the Lu, Ll, or Lt property, in other words, a letter that is not
+ classified as a modifier or "other".
+
+ The long synonyms for these properties that Perl supports (such as
+ \p{Letter}) are not supported by PCRE. Nor is is permitted to prefix
+ any of these properties with "Is".
+
+ No character that is in the Unicode table has the Cn (unassigned) prop-
+ erty. Instead, this property is assumed for any code point that is not
+ in the Unicode table.
Specifying caseless matching does not affect these escape sequences.
For example, \p{Lu} always matches only upper case letters.
@@ -3633,15 +3703,19 @@ RECURSIVE PATTERNS
tion.) The special item (?R) is a recursive call of the entire regular
expression.
- For example, this PCRE pattern solves the nested parentheses problem
- (assume the PCRE_EXTENDED option is set so that white space is
- ignored):
+ A recursive subpattern call is always treated as an atomic group. That
+ is, once it has matched some of the subject string, it is never re-
+ entered, even if it contains untried alternatives and there is a subse-
+ quent matching failure.
+
+ This PCRE pattern solves the nested parentheses problem (assume the
+ PCRE_EXTENDED option is set so that white space is ignored):
\( ( (?>[^()]+) | (?R) )* \)
First it matches an opening parenthesis. Then it matches any number of
substrings which can either be a sequence of non-parentheses, or a
- recursive match of the pattern itself (that is a correctly parenthe-
+ recursive match of the pattern itself (that is, a correctly parenthe-
sized substring). Finally there is a closing parenthesis.
If this were part of a larger pattern, you would not want to recurse
@@ -3725,43 +3799,48 @@ SUBPATTERNS AS SUBROUTINES
two strings. Such references must, however, follow the subpattern to
which they refer.
+ Like recursive subpatterns, a "subroutine" call is always treated as an
+ atomic group. That is, once it has matched some of the subject string,
+ it is never re-entered, even if it contains untried alternatives and
+ there is a subsequent matching failure.
+
CALLOUTS
Perl has a feature whereby using the sequence (?{...}) causes arbitrary
- Perl code to be obeyed in the middle of matching a regular expression.
+ Perl code to be obeyed in the middle of matching a regular expression.
This makes it possible, amongst other things, to extract different sub-
strings that match the same pair of parentheses when there is a repeti-
tion.
PCRE provides a similar feature, but of course it cannot obey arbitrary
Perl code. The feature is called "callout". The caller of PCRE provides
- an external function by putting its entry point in the global variable
- pcre_callout. By default, this variable contains NULL, which disables
+ an external function by putting its entry point in the global variable
+ pcre_callout. By default, this variable contains NULL, which disables
all calling out.
- Within a regular expression, (?C) indicates the points at which the
- external function is to be called. If you want to identify different
- callout points, you can put a number less than 256 after the letter C.
- The default value is zero. For example, this pattern has two callout
+ Within a regular expression, (?C) indicates the points at which the
+ external function is to be called. If you want to identify different
+ callout points, you can put a number less than 256 after the letter C.
+ The default value is zero. For example, this pattern has two callout
points:
(?C1)abc(?C2)def
If the PCRE_AUTO_CALLOUT flag is passed to pcre_compile(), callouts are
- automatically installed before each item in the pattern. They are all
+ automatically installed before each item in the pattern. They are all
numbered 255.
During matching, when PCRE reaches a callout point (and pcre_callout is
- set), the external function is called. It is provided with the number
- of the callout, the position in the pattern, and, optionally, one item
- of data originally supplied by the caller of pcre_exec(). The callout
- function may cause matching to proceed, to backtrack, or to fail alto-
+ set), the external function is called. It is provided with the number
+ of the callout, the position in the pattern, and, optionally, one item
+ of data originally supplied by the caller of pcre_exec(). The callout
+ function may cause matching to proceed, to backtrack, or to fail alto-
gether. A complete description of the interface to the callout function
is given in the pcrecallout documentation.
-Last updated: 28 February 2005
-Copyright (c) 1997-2005 University of Cambridge.
+Last updated: 24 January 2006
+Copyright (c) 1997-2006 University of Cambridge.
------------------------------------------------------------------------------
@@ -3851,16 +3930,16 @@ EXAMPLE OF PARTIAL MATCHING USING PCRETEST
uses the date example quoted above:
re> /^\d?\d(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)\d\d$/
- data> 25jun04P
+ data> 25jun04\P
0: 25jun04
1: jun
- data> 25dec3P
+ data> 25dec3\P
Partial match
- data> 3juP
+ data> 3ju\P
Partial match
- data> 3jujP
+ data> 3juj\P
No match
- data> jP
+ data> j\P
No match
The first data string is matched completely, so pcretest shows the
@@ -3950,8 +4029,27 @@ MULTI-SEGMENT MATCHING WITH pcre_dfa_exec()
Because of this phenomenon, it does not usually make sense to end a
pattern that is going to be matched in this way with a variable repeat.
-Last updated: 28 February 2005
-Copyright (c) 1997-2005 University of Cambridge.
+ 4. Patterns that contain alternatives at the top level which do not all
+ start with the same pattern item may not work as expected. For example,
+ consider this pattern:
+
+ 1234|3789
+
+ If the first part of the subject is "ABC123", a partial match of the
+ first alternative is found at offset 3. There is no partial match for
+ the second alternative, because such a match does not start at the same
+ point in the subject string. Attempting to continue with the string
+ "789" does not yield a match because only those alternatives that match
+ at one point in the subject are remembered. The problem arises because
+ the start of the second alternative matches within the first alterna-
+ tive. There is no problem with anchored patterns or patterns such as:
+
+ 1234|ABCD
+
+ where no string can be a partial match for both alternatives.
+
+Last updated: 16 January 2006
+Copyright (c) 1997-2006 University of Cambridge.
------------------------------------------------------------------------------
@@ -4065,8 +4163,12 @@ COMPATIBILITY WITH DIFFERENT PCRE RELEASES
them for release 5.0. However, from now on, it should be possible to
make changes in a compatible manner.
-Last updated: 28 February 2005
-Copyright (c) 1997-2005 University of Cambridge.
+ Notwithstanding the above, if you have any saved patterns in UTF-8 mode
+ that use \p or \P that were compiled with any release up to and includ-
+ ing 6.4, you will have to recompile them for release 6.5 and above.
+
+Last updated: 01 February 2006
+Copyright (c) 1997-2006 University of Cambridge.
------------------------------------------------------------------------------
@@ -4191,11 +4293,11 @@ DESCRIPTION
functions call the native ones, it is also necessary to add -lpcre.
I have implemented only those option bits that can be reasonably mapped
- to PCRE native options. In addition, the options REG_EXTENDED and
- REG_NOSUB are defined with the value zero. They have no effect, but
- since programs that are written to the POSIX interface often use them,
- this makes it easier to slot in PCRE as a replacement library. Other
- POSIX options are not even defined.
+ to PCRE native options. In addition, the option REG_EXTENDED is defined
+ with the value zero. This has no effect, but since programs that are
+ written to the POSIX interface often use it, this makes it easier to
+ slot in PCRE as a replacement library. Other POSIX options are not even
+ defined.
When PCRE is called via these functions, it is only the API that is
POSIX-like in style. The syntax and semantics of the regular expres-
@@ -4220,27 +4322,43 @@ COMPILING A PATTERN
form. The pattern is a C string terminated by a binary zero, and is
passed in the argument pattern. The preg argument is a pointer to a
regex_t structure that is used as a base for storing information about
- the compiled expression.
+ the compiled regular expression.
The argument cflags is either zero, or contains one or more of the bits
defined by the following macros:
REG_DOTALL
- The PCRE_DOTALL option is set when the expression is passed for compi-
- lation to the native function. Note that REG_DOTALL is not part of the
- POSIX standard.
+ The PCRE_DOTALL option is set when the regular expression is passed for
+ compilation to the native function. Note that REG_DOTALL is not part of
+ the POSIX standard.
REG_ICASE
- The PCRE_CASELESS option is set when the expression is passed for com-
- pilation to the native function.
+ The PCRE_CASELESS option is set when the regular expression is passed
+ for compilation to the native function.
REG_NEWLINE
- The PCRE_MULTILINE option is set when the expression is passed for com-
- pilation to the native function. Note that this does not mimic the
- defined POSIX behaviour for REG_NEWLINE (see the following section).
+ The PCRE_MULTILINE option is set when the regular expression is passed
+ for compilation to the native function. Note that this does not mimic
+ the defined POSIX behaviour for REG_NEWLINE (see the following sec-
+ tion).
+
+ REG_NOSUB
+
+ The PCRE_NO_AUTO_CAPTURE option is set when the regular expression is
+ passed for compilation to the native function. In addition, when a pat-
+ tern that is compiled with this flag is passed to regexec() for match-
+ ing, the nmatch and pmatch arguments are ignored, and no captured
+ strings are returned.
+
+ REG_UTF8
+
+ The PCRE_UTF8 option is set when the regular expression is passed for
+ compilation to the native function. This causes the pattern itself and
+ all data strings used for matching it to be treated as UTF-8 strings.
+ Note that REG_UTF8 is not part of the POSIX standard.
In the absence of these flags, no options are passed to the native
function. This means the the regex is compiled with PCRE default
@@ -4307,15 +4425,19 @@ MATCHING A PATTERN
The PCRE_NOTEOL option is set when calling the underlying PCRE matching
function.
- The portion of the string that was matched, and also any captured sub-
- strings, are returned via the pmatch argument, which points to an array
- of nmatch structures of type regmatch_t, containing the members rm_so
- and rm_eo. These contain the offset to the first character of each sub-
- string and the offset to the first character after the end of each sub-
- string, respectively. The 0th element of the vector relates to the
- entire portion of string that was matched; subsequent elements relate
- to the capturing subpatterns of the regular expression. Unused entries
- in the array have both structure members set to -1.
+ If the pattern was compiled with the REG_NOSUB flag, no data about any
+ matched strings is returned. The nmatch and pmatch arguments of
+ regexec() are ignored.
+
+ Otherwise,the portion of the string that was matched, and also any cap-
+ tured substrings, are returned via the pmatch argument, which points to
+ an array of nmatch structures of type regmatch_t, containing the mem-
+ bers rm_so and rm_eo. These contain the offset to the first character
+ of each substring and the offset to the first character after the end
+ of each substring, respectively. The 0th element of the vector relates
+ to the entire portion of string that was matched; subsequent elements
+ relate to the capturing subpatterns of the regular expression. Unused
+ entries in the array have both structure members set to -1.
A successful match yields a zero return; various error codes are
defined in the header file, of which REG_NOMATCH is the "expected"
@@ -4346,8 +4468,8 @@ AUTHOR
University Computing Service,
Cambridge CB2 3QG, England.
-Last updated: 28 February 2005
-Copyright (c) 1997-2005 University of Cambridge.
+Last updated: 16 January 2006
+Copyright (c) 1997-2006 University of Cambridge.
------------------------------------------------------------------------------
@@ -4520,13 +4642,17 @@ PASSING MODIFIERS TO THE REGULAR EXPRESSION ENGINE
RE_Options & set_caseless(bool)
- which sets or unsets the modifier. Moreover, PCRE_CONFIG_MATCH_LIMIT
- can be accessed through the set_match_limit() and match_limit() member
+ which sets or unsets the modifier. Moreover, PCRE_EXTRA_MATCH_LIMIT can
+ be accessed through the set_match_limit() and match_limit() member
functions. Setting match_limit to a non-zero value will limit the exe-
cution of pcre to keep it from doing bad things like blowing the stack
or taking an eternity to return a result. A value of 5000 is good
enough to stop stack blowup in a 2MB thread stack. Setting match_limit
- to zero disables match limiting.
+ to zero disables match limiting. Alternatively, you can call
+ match_limit_recursion() which uses PCRE_EXTRA_MATCH_LIMIT_RECURSION to
+ limit how much PCRE recurses. match_limit() limits the number of
+ matches PCRE does; match_limit_recursion() limits the depth of internal
+ recursion, and therefore the amount of stack that is used.
Normally, to pass one or more modifiers to a RE class, you declare a
RE_Options object, set the appropriate options, and pass this object to
diff --git a/doc/pcre_config.3 b/doc/pcre_config.3
index 5f51a46..bf0e021 100644
--- a/doc/pcre_config.3
+++ b/doc/pcre_config.3
@@ -24,6 +24,8 @@ The available codes are:
.sp
PCRE_CONFIG_LINK_SIZE Internal link size: 2, 3, or 4
PCRE_CONFIG_MATCH_LIMIT Internal resource limit
+ PCRE_CONFIG_MATCH_LIMIT_RECURSION
+ Internal recursion depth limit
PCRE_CONFIG_NEWLINE Value of the newline character
PCRE_CONFIG_POSIX_MALLOC_THRESHOLD
Threshold of return slots, above
diff --git a/doc/pcre_dfa_exec.3 b/doc/pcre_dfa_exec.3
index a661fe2..d58de40 100644
--- a/doc/pcre_dfa_exec.3
+++ b/doc/pcre_dfa_exec.3
@@ -61,13 +61,15 @@ A \fBpcre_extra\fP structure contains the following fields:
.sp
\fIflags\fP Bits indicating which fields are set
\fIstudy_data\fP Opaque data from \fBpcre_study()\fP
- \fImatch_limit\fP Limit on internal recursion
+ \fImatch_limit\fP Limit on internal resource use
+ \fImatch_limit_recursion\fP Limit on internal recursion depth
\fIcallout_data\fP Opaque data passed back to callouts
\fItables\fP Points to character tables or is NULL
.sp
The flag bits are PCRE_EXTRA_STUDY_DATA, PCRE_EXTRA_MATCH_LIMIT,
-PCRE_EXTRA_CALLOUT_DATA, and PCRE_EXTRA_TABLES. For DFA matching, the
-\fImatch_limit\fP field is not used, and must not be set.
+PCRE_EXTRA_MATCH_LIMIT_RECURSION, PCRE_EXTRA_CALLOUT_DATA, and
+PCRE_EXTRA_TABLES. For DFA matching, the \fImatch_limit\fP and
+\fImatch_limit_recursion\fP fields are not used, and must not be set.
.P
There is a complete description of the PCRE native API in the
.\" HREF
diff --git a/doc/pcre_exec.3 b/doc/pcre_exec.3
index 78ce188..a9c076e 100644
--- a/doc/pcre_exec.3
+++ b/doc/pcre_exec.3
@@ -50,12 +50,14 @@ A \fBpcre_extra\fP structure contains the following fields:
.sp
\fIflags\fP Bits indicating which fields are set
\fIstudy_data\fP Opaque data from \fBpcre_study()\fP
- \fImatch_limit\fP Limit on internal recursion
+ \fImatch_limit\fP Limit on internal resource use
+ \fImatch_limit_recursion\fP Limit on internal recursion depth
\fIcallout_data\fP Opaque data passed back to callouts
\fItables\fP Points to character tables or is NULL
.sp
The flag bits are PCRE_EXTRA_STUDY_DATA, PCRE_EXTRA_MATCH_LIMIT,
-PCRE_EXTRA_CALLOUT_DATA, and PCRE_EXTRA_TABLES.
+PCRE_EXTRA_MATCH_LIMIT_RECURSION, PCRE_EXTRA_CALLOUT_DATA, and
+PCRE_EXTRA_TABLES.
.P
There is a complete description of the PCRE native API in the
.\" HREF
diff --git a/doc/pcreapi.3 b/doc/pcreapi.3
index 4f8114a..1f830b6 100644
--- a/doc/pcreapi.3
+++ b/doc/pcreapi.3
@@ -309,6 +309,12 @@ The output is an integer that gives the default limit for the number of
internal matching function calls in a \fBpcre_exec()\fP execution. Further
details are given with \fBpcre_exec()\fP below.
.sp
+ PCRE_CONFIG_MATCH_LIMIT_RECURSION
+.sp
+The output is an integer that gives the default limit for the depth of
+recursion when calling the internal matching function in a \fBpcre_exec()\fP
+execution. Further details are given with \fBpcre_exec()\fP below.
+.sp
PCRE_CONFIG_STACKRECURSE
.sp
The output is an integer that is set to one if internal recursion when running
@@ -370,8 +376,9 @@ time.
If \fIerrptr\fP is NULL, \fBpcre_compile()\fP returns NULL immediately.
Otherwise, if compilation of a pattern fails, \fBpcre_compile()\fP returns
NULL, and sets the variable pointed to by \fIerrptr\fP to point to a textual
-error message. The offset from the start of the pattern to the character where
-the error was discovered is placed in the variable pointed to by
+error message. This is a static string that is part of the library. You must
+not try to free it. The offset from the start of the pattern to the character
+where the error was discovered is placed in the variable pointed to by
\fIerroffset\fP, which must not be NULL. If it is, an immediate error is given.
.P
If \fBpcre_compile2()\fP is used instead of \fBpcre_compile()\fP, and the
@@ -631,9 +638,10 @@ options are defined, and this argument should always be zero.
.P
The third argument for \fBpcre_study()\fP is a pointer for an error message. If
studying succeeds (even if no data is returned), the variable it points to is
-set to NULL. Otherwise it points to a textual error message. You should
-therefore test the error pointer for NULL after calling \fBpcre_study()\fP, to
-be sure that it has run successfully.
+set to NULL. Otherwise it is set to point to a textual error message. This is a
+static string that is part of the library. You must not try to free it. You
+should test the error pointer for NULL after calling \fBpcre_study()\fP, to be
+sure that it has run successfully.
.P
This is a typical call to \fBpcre_study\fP():
.sp
@@ -657,7 +665,7 @@ digits, or whatever, by reference to a set of tables, indexed by character
value. When running in UTF-8 mode, this applies only to characters with codes
less than 128. Higher-valued codes never match escapes such as \ew or \ed, but
can be tested with \ep if PCRE is built with Unicode character property
-support.
+support. The use of locales with Unicode is discouraged.
.P
An internal set of tables is created in the default C locale when PCRE is
built. This is used when the final argument of \fBpcre_compile()\fP is NULL,
@@ -964,12 +972,13 @@ Here is an example of a simple call to \fBpcre_exec()\fP:
If the \fIextra\fP argument is not NULL, it must point to a \fBpcre_extra\fP
data block. The \fBpcre_study()\fP function returns such a block (when it
doesn't return NULL), but you can also create one for yourself, and pass
-additional information in it. The fields in a \fBpcre_extra\fP block are as
-follows:
+additional information in it. The \fBpcre_extra\fP block contains the following
+fields (not necessarily in this order):
.sp
unsigned long int \fIflags\fP;
void *\fIstudy_data\fP;
unsigned long int \fImatch_limit\fP;
+ unsigned long int \fImatch_limit_recursion\fP;
void *\fIcallout_data\fP;
const unsigned char *\fItables\fP;
.sp
@@ -978,6 +987,7 @@ are set. The flag bits are:
.sp
PCRE_EXTRA_STUDY_DATA
PCRE_EXTRA_MATCH_LIMIT
+ PCRE_EXTRA_MATCH_LIMIT_RECURSION
PCRE_EXTRA_CALLOUT_DATA
PCRE_EXTRA_TABLES
.sp
@@ -992,17 +1002,35 @@ but which have a very large number of possibilities in their search trees. The
classic example is the use of nested unlimited repeats.
.P
Internally, PCRE uses a function called \fBmatch()\fP which it calls repeatedly
-(sometimes recursively). The limit is imposed on the number of times this
-function is called during a match, which has the effect of limiting the amount
-of recursion and backtracking that can take place. For patterns that are not
-anchored, the count starts from zero for each position in the subject string.
+(sometimes recursively). The limit set by \fImatch_limit\fP is imposed on the
+number of times this function is called during a match, which has the effect of
+limiting the amount of backtracking that can take place. For patterns that are
+not anchored, the count restarts from zero for each position in the subject
+string.
.P
-The default limit for the library can be set when PCRE is built; the default
+The default value for the limit can be set when PCRE is built; the default
default is 10 million, which handles all but the most extreme cases. You can
-reduce the default by suppling \fBpcre_exec()\fP with a \fBpcre_extra\fP block
-in which \fImatch_limit\fP is set to a smaller value, and
-PCRE_EXTRA_MATCH_LIMIT is set in the \fIflags\fP field. If the limit is
-exceeded, \fBpcre_exec()\fP returns PCRE_ERROR_MATCHLIMIT.
+override the default by suppling \fBpcre_exec()\fP with a \fBpcre_extra\fP
+block in which \fImatch_limit\fP is set, and PCRE_EXTRA_MATCH_LIMIT is set in
+the \fIflags\fP field. If the limit is exceeded, \fBpcre_exec()\fP returns
+PCRE_ERROR_MATCHLIMIT.
+.P
+The \fImatch_limit_recursion\fP field is similar to \fImatch_limit\fP, but
+instead of limiting the total number of times that \fBmatch()\fP is called, it
+limits the depth of recursion. The recursion depth is a smaller number than the
+total number of calls, because not all calls to \fBmatch()\fP are recursive.
+This limit is of use only if it is set smaller than \fImatch_limit\fP.
+.P
+Limiting the recursion depth limits the amount of stack that can be used, or,
+when PCRE has been compiled to use memory on the heap instead of the stack, the
+amount of heap memory that can be used.
+.P
+The default value for \fImatch_limit_recursion\fP can be set when PCRE is
+built; the default default is the same value as the default for
+\fImatch_limit\fP. You can override the default by suppling \fBpcre_exec()\fP
+with a \fBpcre_extra\fP block in which \fImatch_limit_recursion\fP is set, and
+PCRE_EXTRA_MATCH_LIMIT_RECURSION is set in the \fIflags\fP field. If the limit
+is exceeded, \fBpcre_exec()\fP returns PCRE_ERROR_RECURSIONLIMIT.
.P
The \fIpcre_callout\fP field is used in conjunction with the "callout" feature,
which is described in the
@@ -1250,7 +1278,13 @@ below). It is never returned by \fBpcre_exec()\fP.
.sp
PCRE_ERROR_MATCHLIMIT (-8)
.sp
-The recursion and backtracking limit, as specified by the \fImatch_limit\fP
+The backtracking limit, as specified by the \fImatch_limit\fP field in a
+\fBpcre_extra\fP structure (or defaulted) was reached. See the description
+above.
+.sp
+ PCRE_ERROR_RECURSIONLIMIT (-21)
+.sp
+The internal recursion limit, as specified by the \fImatch_limit_recursion\fP
field in a \fBpcre_extra\fP structure (or defaulted) was reached. See the
description above.
.sp
@@ -1499,12 +1533,12 @@ vector should contain at least 20 elements. It is used for keeping track of
multiple paths through the pattern tree. More workspace will be needed for
patterns and subjects where there are a lot of possible matches.
.P
-Here is an example of a simple call to \fBpcre_exec()\fP:
+Here is an example of a simple call to \fBpcre_dfa_exec()\fP:
.sp
int rc;
int ovector[10];
int wspace[20];
- rc = pcre_exec(
+ rc = pcre_dfa_exec(
re, /* result of pcre_compile() */
NULL, /* we didn't study the pattern */
"some string", /* the subject string */
@@ -1631,6 +1665,6 @@ error is given if the output vector is not large enough. This should be
extremely rare, as a vector of size 1000 is used.
.P
.in 0
-Last updated: 16 May 2005
+Last updated: 18 January 2006
.br
-Copyright (c) 1997-2005 University of Cambridge.
+Copyright (c) 1997-2006 University of Cambridge.
diff --git a/doc/pcrecompat.3 b/doc/pcrecompat.3
index 9594fa9..ee4923c 100644
--- a/doc/pcrecompat.3
+++ b/doc/pcrecompat.3
@@ -8,8 +8,8 @@ This document describes the differences in the ways that PCRE and Perl handle
regular expressions. The differences described here are with respect to Perl
5.8.
.P
-1. PCRE does not have full UTF-8 support. Details of what it does have are
-given in the
+1. PCRE has only a subset of Perl's UTF-8 and Unicode support. Details of what
+it does have are given in the
.\" HTML <a href="pcre.html#utf8support">
.\" </a>
section on UTF-8 support
@@ -44,7 +44,8 @@ encountered by PCRE, an error is generated.
6. The Perl escape sequences \ep, \eP, and \eX are supported only if PCRE is
built with Unicode character property support. The properties that can be
tested with \ep and \eP are limited to the general category properties such as
-Lu and Nd.
+Lu and Nd, script names such as Greek or Han, and the derived properties Any
+and L&.
.P
7. PCRE does support the \eQ...\eE escape for quoting substrings. Characters in
between are treated as literals. This is slightly different from Perl in that $
@@ -119,6 +120,6 @@ different hosts that have the other endianness.
different way and is not Perl-compatible.
.P
.in 0
-Last updated: 28 February 2005
+Last updated: 24 January 2006
.br
-Copyright (c) 1997-2005 University of Cambridge.
+Copyright (c) 1997-2006 University of Cambridge.
diff --git a/doc/pcrecpp.3 b/doc/pcrecpp.3
index 78ac564..e1cec6d 100644
--- a/doc/pcrecpp.3
+++ b/doc/pcrecpp.3
@@ -168,13 +168,17 @@ which returns true if the modifier is set, and
.sp
RE_Options & set_caseless(bool)
.sp
-which sets or unsets the modifier. Moreover, PCRE_CONFIG_MATCH_LIMIT can be
+which sets or unsets the modifier. Moreover, PCRE_EXTRA_MATCH_LIMIT can be
accessed through the \fBset_match_limit()\fR and \fBmatch_limit()\fR member
functions. Setting \fImatch_limit\fR to a non-zero value will limit the
execution of pcre to keep it from doing bad things like blowing the stack or
taking an eternity to return a result. A value of 5000 is good enough to stop
stack blowup in a 2MB thread stack. Setting \fImatch_limit\fR to zero disables
-match limiting.
+match limiting. Alternatively, you can call \fBmatch_limit_recursion()\fP
+which uses PCRE_EXTRA_MATCH_LIMIT_RECURSION to limit how much PCRE
+recurses. \fBmatch_limit()\fP limits the number of matches PCRE does;
+\fBmatch_limit_recursion()\fP limits the depth of internal recursion, and
+therefore the amount of stack that is used.
.P
Normally, to pass one or more modifiers to a RE class, you declare
a \fIRE_Options\fR object, set the appropriate options, and pass this
diff --git a/doc/pcregrep.1 b/doc/pcregrep.1
index f1244e4..1dfe310 100644
--- a/doc/pcregrep.1
+++ b/doc/pcregrep.1
@@ -2,7 +2,7 @@
.SH NAME
pcregrep - a grep with Perl-compatible regular expressions.
.SH SYNOPSIS
-.B pcregrep [options] [long options] [pattern] [file1 file2 ...]
+.B pcregrep [options] [long options] [pattern] [path1 path2 ...]
.
.SH DESCRIPTION
.rs
@@ -16,8 +16,22 @@ patterns that are compatible with the regular expressions of Perl 5. See
for a full description of syntax and semantics of the regular expressions that
PCRE supports.
.P
-A pattern must be specified on the command line unless the \fB-f\fP option is
-used (see below).
+Patterns, whether supplied on the command line or in a separate file, are given
+without delimiters. For example:
+.sp
+ pcregrep Thursday /etc/motd
+.sp
+If you attempt to use delimiters (for example, by surrounding a pattern with
+slashes, as is common in Perl scripts), they are interpreted as part of the
+pattern. Quotes can of course be used on the command line because they are
+interpreted by the shell, and indeed they are required if a pattern contains
+white space or shell metacharacters.
+.P
+The first argument that follows any option settings is treated as the single
+pattern to be matched when neither \fB-e\fP nor \fB-f\fP is present.
+Conversely, when one or both of these options are used to specify patterns, all
+arguments are treated as path names. At least one of \fB-e\fP, \fB-f\fP, or an
+argument pattern must be provided.
.P
If no files are specified, \fBpcregrep\fP reads the standard input. The
standard input can also be referenced by a name consisting of a single hyphen.
@@ -26,45 +40,97 @@ For example:
pcregrep some-pattern /file1 - /file3
.sp
By default, each line that matches the pattern is copied to the standard
-output, and if there is more than one file, the file name is printed before
-each line of output. However, there are options that can change how
+output, and if there is more than one file, the file name is output at the
+start of each line. However, there are options that can change how
\fBpcregrep\fP behaves. In particular, the \fB-M\fP option makes it possible to
search for patterns that span line boundaries.
.P
Patterns are limited to 8K or BUFSIZ characters, whichever is the greater.
BUFSIZ is defined in \fB<stdio.h>\fP.
+.P
+If the \fBLC_ALL\fP or \fBLC_CTYPE\fP environment variable is set,
+\fBpcregrep\fP uses the value to set a locale when calling the PCRE library.
+The \fB--locale\fP option can be used to override this.
.
.SH OPTIONS
.rs
.TP 10
\fB--\fP
This terminate the list of options. It is useful if the next item on the
-command line starts with a hyphen, but is not an option.
+command line starts with a hyphen but is not an option. This allows for the
+processing of patterns and filenames that start with hyphens.
.TP
-\fB-A\fP \fInumber\fP
-Print \fInumber\fP lines of context after each matching line. If file names
-and/or line numbers are being printed, a hyphen separator is used instead of a
-colon for the context lines. A line containing "--" is printed between each
+\fB-A\fP \fInumber\fP, \fB--after-context=\fP\fInumber\fP
+Output \fInumber\fP lines of context after each matching line. If filenames
+and/or line numbers are being output, a hyphen separator is used instead of a
+colon for the context lines. A line containing "--" is output between each
group of lines, unless they are in fact contiguous in the input file. The value
of \fInumber\fP is expected to be relatively small. However, \fBpcregrep\fP
-guarantees to have up to 8K of following text available for context printing.
+guarantees to have up to 8K of following text available for context output.
.TP
-\fB-B\fP \fInumber\fP
-Print \fInumber\fP lines of context before each matching line. If file names
-and/or line numbers are being printed, a hyphen separator is used instead of a
-colon for the context lines. A line containing "--" is printed between each
+\fB-B\fP \fInumber\fP, \fB--before-context=\fP\fInumber\fP
+Output \fInumber\fP lines of context before each matching line. If filenames
+and/or line numbers are being output, a hyphen separator is used instead of a
+colon for the context lines. A line containing "--" is output between each
group of lines, unless they are in fact contiguous in the input file. The value
of \fInumber\fP is expected to be relatively small. However, \fBpcregrep\fP
-guarantees to have up to 8K of preceding text available for context printing.
+guarantees to have up to 8K of preceding text available for context output.
.TP
-\fB-C\fP \fInumber\fP
-Print \fInumber\fP lines of context both before and after each matching line.
+\fB-C\fP \fInumber\fP, \fB--context=\fP\fInumber\fP
+Output \fInumber\fP lines of context both before and after each matching line.
This is equivalent to setting both \fB-A\fP and \fB-B\fP to the same value.
.TP
-\fB-c\fP
-Do not print individual lines; instead just print a count of the number of
-lines that would otherwise have been printed. If several files are given, a
-count is printed for each of them.
+\fB-c\fP, \fB--count\fP
+Do not output individual lines; instead just output a count of the number of
+lines that would otherwise have been output. If several files are given, a
+count is output for each of them. In this mode, the \fB-A\fP, \fB-B\fP, and
+\fB-C\fP options are ignored.
+.TP
+\fB--colour\fP, \fB--color\fP
+If this option is given without any data, it is equivalent to "--colour=auto".
+If data is required, it must be given in the same shell item, separated by an
+equals sign.
+.TP
+\fB--colour=\fP\fIvalue\fP, \fB--color=\fP\fIvalue\fP
+This option specifies under what circumstances the part of a line that matched
+a pattern should be coloured in the output. The value may be "never" (the
+default), "always", or "auto". In the latter case, colouring happens only if
+the standard output is connected to a terminal. The colour can be specified by
+setting the environment variable PCREGREP_COLOUR or PCREGREP_COLOR. The value
+of this variable should be a string of two numbers, separated by a semicolon.
+They are copied directly into the control string for setting colour on a
+terminal, so it is your responsibility to ensure that they make sense. If
+neither of the environment variables is set, the default is "1;31", which gives
+red.
+.TP
+\fB-D\fP \fIaction\fP, \fB--devices=\fP\fIaction\fP
+If an input path is not a regular file or a directory, "action" specifies how
+it is to be processed. Valid values are "read" (the default) or "skip"
+(silently skip the path).
+.TP
+\fB-d\fP \fIaction\fP, \fB--directories=\fP\fIaction\fP
+If an input path is a directory, "action" specifies how it is to be processed.
+Valid values are "read" (the default), "recurse" (equivalent to the \fB-r\fP
+option), or "skip" (silently skip the path). In the default case, directories
+are read as if they were ordinary files. In some operating systems the effect
+of reading a directory like this is an immediate end-of-file.
+.TP
+\fB-e\fP \fIpattern\fP, \fB--regex=\fP\fIpattern\fP,
+\fB--regexp=\fP\fIpattern\fP Specify a pattern to be matched. This option can
+be used multiple times in order to specify several patterns. It can also be
+used as a way of specifying a single pattern that starts with a hyphen. When
+\fB-e\fP is used, no argument pattern is taken from the command line; all
+arguments are treated as file names. There is an overall maximum of 100
+patterns. They are applied to each line in the order in which they are defined
+until one matches (or fails to match if \fB-v\fP is used). If \fB-f\fP is used
+with \fB-e\fP, the command line patterns are matched first, followed by the
+patterns from the file, independent of the order in which these options are
+specified. Note that multiple use of \fB-e\fP is not the same as a single
+pattern with alternatives. For example, X|Y finds the first character in a line
+that is X or Y, whereas if the two patterns are given separately,
+\fBpcregrep\fP finds X if it is present, even if it follows Y in the line. It
+finds Y only if there is no X in the line. This really matters only if you are
+using \fB-o\fP to show the portion of the line that matched.
.TP
\fB--exclude\fP=\fIpattern\fP
When \fBpcregrep\fP is searching the files in a directory as a consequence of
@@ -73,43 +139,74 @@ are excluded. The pattern is a PCRE regular expression. If a file name matches
both \fB--include\fP and \fB--exclude\fP, it is excluded. There is no short
form for this option.
.TP
-\fB-f\fP\fIfilename\fP
-Read a number of patterns from the file, one per line, and match all of them
-against each line of input. A line is output if any of the patterns match it.
-When \fB-f\fP is used, no pattern is taken from the command line; all arguments
-are treated as file names. There is a maximum of 100 patterns. Trailing white
-space is removed, and blank lines are ignored. An empty file contains no
-patterns and therefore matches nothing.
+\fB-F\fP, \fB--fixed-strings\fP
+Interpret each pattern as a list of fixed strings, separated by newlines,
+instead of as a regular expression. The \fB-w\fP (match as a word) and \fB-x\fP
+(match whole line) options can be used with \fB-F\fP. They apply to each of the
+fixed strings. A line is selected if any of the fixed strings are found in it
+(subject to \fB-w\fP or \fB-x\fP, if present).
+.TP
+\fB-f\fP \fIfilename\fP, \fB--file=\fP\fIfilename\fP
+Read a number of patterns from the file, one per line, and match them against
+each line of input. A data line is output if any of the patterns match it. The
+filename can be given as "-" to refer to the standard input. When \fB-f\fP is
+used, patterns specified on the command line using \fB-e\fP may also be
+present; they are tested before the file's patterns. However, no other pattern
+is taken from the command line; all arguments are treated as file names. There
+is an overall maximum of 100 patterns. Trailing white space is removed from
+each line, and blank lines are ignored. An empty file contains no patterns and
+therefore matches nothing.
.TP
-\fB-h\fP
-Suppress printing of filenames when searching multiple files.
+\fB-H\fP, \fB--with-filename\fP
+Force the inclusion of the filename at the start of output lines when searching
+a single file. By default, the filename is not shown in this case. For matching
+lines, the filename is followed by a colon and a space; for context lines, a
+hyphen separator is used. If a line number is also being output, it follows the
+file name without a space.
.TP
-\fB-i\fP
+\fB-h\fP, \fB--no-filename\fP
+Suppress the output filenames when searching multiple files. By default,
+filenames are shown when multiple files are searched. For matching lines, the
+filename is followed by a colon and a space; for context lines, a hyphen
+separator is used. If a line number is also being output, it follows the file
+name without a space.
+.TP
+\fB--help\fP
+Output a brief help message and exit.
+.TP
+\fB-i\fP, \fB--ignore-case\fP
Ignore upper/lower case distinctions during comparisons.
.TP
\fB--include\fP=\fIpattern\fP
When \fBpcregrep\fP is searching the files in a directory as a consequence of
-the \fB-r\fP (recursive search) option, only files whose names match the
+the \fB-r\fP (recursive search) option, only those files whose names match the
pattern are included. The pattern is a PCRE regular expression. If a file name
matches both \fB--include\fP and \fB--exclude\fP, it is excluded. There is no
short form for this option.
.TP
-\fB-L\fP
-Instead of printing lines from the files, just print the names of the files
-that do not contain any lines that would have been printed. Each file name is
-printed once, on a separate line.
+\fB-L\fP, \fB--files-without-match\fP
+Instead of outputting lines from the files, just output the names of the files
+that do not contain any lines that would have been output. Each file name is
+output once, on a separate line.
.TP
-\fB-l\fP
-Instead of printing lines from the files, just print the names of the files
-containing lines that would have been printed. Each file name is printed
-once, on a separate line.
+\fB-l\fP, \fB--files-with-matches\fP
+Instead of outputting lines from the files, just output the names of the files
+containing lines that would have been output. Each file name is output
+once, on a separate line. Searching stops as soon as a matching line is found
+in a file.
.TP
\fB--label\fP=\fIname\fP
This option supplies a name to be used for the standard input when file names
-are being printed. If not supplied, "(standard input)" is used. There is no
+are being output. If not supplied, "(standard input)" is used. There is no
short form for this option.
.TP
-\fB-M\fP
+\fB--locale\fP=\fIlocale-name\fP
+This option specifies a locale to be used for pattern matching. It overrides
+the value in the \fBLC_ALL\fP or \fBLC_CTYPE\fP environment variables. If no
+locale is specified, the PCRE library's default (usually the "C" locale) is
+used. There is no short form for this option.
+.TP
+\fB-M\fP, \fB--multiline\fP
Allow patterns to match more than one line. When this option is given, patterns
may usefully contain literal newline characters and internal occurrences of ^
and $ characters. The output for any one match may consist of more than one
@@ -121,74 +218,74 @@ that \fBpcregrep\fP buffers the input file as it scans it. However,
the previous 8K characters (or all the previous characters, if fewer than 8K)
are guaranteed to be available for lookbehind assertions.
.TP
-\fB-n\fP
-Precede each line by its line number in the file.
+\fB-n\fP, \fB--line-number\fP
+Precede each output line by its line number in the file, followed by a colon
+and a space for matching lines or a hyphen and a space for context lines. If
+the filename is also being output, it precedes the line number.
.TP
-\fB-q\fP
-Work quietly, that is, display nothing except error messages.
-The exit status indicates whether or not any matches were found.
+\fB-o\fP, \fB--only-matching\fP
+Show only the part of the line that matched a pattern. In this mode, no
+context is shown. That is, the \fB-A\fP, \fB-B\fP, and \fB-C\fP options are
+ignored.
.TP
-\fB-r\fP
+\fB-q\fP, \fB--quiet\fP
+Work quietly, that is, display nothing except error messages. The exit
+status indicates whether or not any matches were found.
+.TP
+\fB-r\fP, \fB--recursive\fP
If any given path is a directory, recursively scan the files it contains,
-taking note of any \fB--include\fP and \fB--exclude\fP settings. Without
-\fB-r\fP a directory is scanned as a normal file.
+taking note of any \fB--include\fP and \fB--exclude\fP settings. By default, a
+directory is read as a normal file; in some operating systems this gives an
+immediate end-of-file. This option is a shorthand for setting the \fB-d\fP
+option to "recurse".
.TP
-\fB-s\fP
+\fB-s\fP, \fB--no-messages\fP
Suppress error messages about non-existent or unreadable files. Such files are
quietly skipped. However, the return code is still 2, even if matches were
found in other files.
.TP
-\fB-u\fP
+\fB-u\fP, \fB--utf-8\fP
Operate in UTF-8 mode. This option is available only if PCRE has been compiled
-with UTF-8 support. Both the pattern and each subject line must be valid
-strings of UTF-8 characters.
+with UTF-8 support. Both patterns and subject lines must be valid strings of
+UTF-8 characters.
.TP
-\fB-V\fP
+\fB-V\fP, \fB--version\fP
Write the version numbers of \fBpcregrep\fP and the PCRE library that is being
used to the standard error stream.
.TP
-\fB-v\fP
-Invert the sense of the match, so that lines which do \fInot\fP match the
-pattern are the ones that are found.
+\fB-v\fP, \fB--invert-match\fP
+Invert the sense of the match, so that lines which do \fInot\fP match any of
+the patterns are the ones that are found.
.TP
-\fB-w\fP
-Force the pattern to match only whole words. This is equivalent to having \eb
+\fB-w\fP, \fB--word-regex\fP, \fB--word-regexp\fP
+Force the patterns to match only whole words. This is equivalent to having \eb
at the start and end of the pattern.
.TP
-\fB-x\fP
-Force the pattern to be anchored (it must start matching at the beginning of
-the line) and in addition, require it to match the entire line. This is
+\fB-x\fP, \fB--line-regex\fP, \fP--line-regexp\fP
+Force the patterns to be anchored (each must start matching at the beginning of
+a line) and in addition, require them to match entire lines. This is
equivalent to having ^ and $ characters at the start and end of each
-alternative branch in the regular expression.
+alternative branch in every pattern.
+.
.
-.SH "LONG OPTIONS"
+.SH "ENVIRONMENT VARIABLES"
.rs
.sp
-Long forms of all the options are available, as in GNU grep. They are shown in
-the following table:
+The environment variables \fBLC_ALL\fP and \fBLC_CTYPE\fP are examined, in that
+order, for a locale. The first one that is set is used. This can be overridden
+by the \fB--locale\fP option. If no locale is set, the PCRE library's default
+(usually the "C" locale) is used.
+.
+.
+.SH "OPTIONS COMPATIBILITY"
+.rs
.sp
- -A --after-context
- -B --before-context
- -C --context
- -c --count
- --exclude (no short form)
- -f --file
- -h --no-filename
- --help (no short form)
- -i --ignore-case
- --include (no short form)
- -L --files-without-match
- -l --files-with-matches
- --label (no short form)
- -n --line-number
- -r --recursive
- -q --quiet
- -s --no-messages
- -u --utf-8
- -V --version
- -v --invert-match
- -x --line-regex
- -x --line-regexp
+The majority of short and long forms of \fBpcregrep\fP's options are the same
+as in the GNU \fBgrep\fP program. Any long option of the form
+\fB--xxx-regexp\fP (GNU terminology) is also available as \fB--xxx-regex\fP
+(PCRE terminology). However, the \fB--locale\fP, \fB-M\fP, \fB--multiline\fP,
+\fB-u\fP, and \fB--utf-8\fP options are specific to \fBpcregrep\fP.
+.
.
.SH "OPTIONS WITH DATA"
.rs
@@ -201,20 +298,43 @@ command line item. For example:
-f /some/file
.sp
If a long form option is used, the data may appear in the same command line
-item, separated by an = character, or it may appear in the next command line
-item. For example:
+item, separated by an equals character, or (with one exception) it may appear
+in the next command line item. For example:
.sp
--file=/some/file
--file /some/file
.sp
+Note, however, that if you want to supply a file name beginning with ~ as data
+in a shell command, and have the shell expand ~ to a home directory, you must
+separate the file name from the option, because the shell does not treat ~
+specially unless it is at the start of an item.
+.P
+The exception to the above is the \fB--colour\fP (or \fB--color\fP) option,
+for which the data is optional. If this option does have data, it must be given
+in the first form, using an equals character. Otherwise it will be assumed that
+it has no data.
+.
+.
+.SH MATCHING ERRORS
+.rs
+.sp
+It is possible to supply a regular expression that takes a very long time to
+fail to match certain lines. Such patterns normally involve nested indefinite
+repeats, for example: (a+)*\ed when matched against a line of a's with no final
+digit. The PCRE matching function has a resource limit that causes it to abort
+in these circumstances. If this happens, \fBpcregrep\fP outputs an error
+message and the line that caused the problem to the standard error stream. If
+there are more than 20 such errors, \fBpcregrep\fP gives up.
+.
.
.SH DIAGNOSTICS
.rs
.sp
Exit status is 0 if any matches were found, 1 if no matches were found, and 2
for syntax errors and non-existent or inacessible files (even if matches were
-found in other files). Using the \fB-s\fP option to suppress error messages
-about inaccessble files does not affect the return code.
+found in other files) or too many matching errors. Using the \fB-s\fP option to
+suppress error messages about inaccessble files does not affect the return
+code.
.
.
.SH AUTHOR
@@ -227,6 +347,6 @@ University Computing Service
Cambridge CB2 3QG, England.
.P
.in 0
-Last updated: 16 May 2005
+Last updated: 23 January 2006
.br
-Copyright (c) 1997-2005 University of Cambridge.
+Copyright (c) 1997-2006 University of Cambridge.
diff --git a/doc/pcregrep.txt b/doc/pcregrep.txt
index e8083a1..dc123a1 100644
--- a/doc/pcregrep.txt
+++ b/doc/pcregrep.txt
@@ -6,7 +6,7 @@ NAME
SYNOPSIS
- pcregrep [options] [long options] [pattern] [file1 file2 ...]
+ pcregrep [options] [long options] [pattern] [path1 path2 ...]
DESCRIPTION
@@ -17,8 +17,22 @@ DESCRIPTION
Perl 5. See pcrepattern for a full description of syntax and semantics
of the regular expressions that PCRE supports.
- A pattern must be specified on the command line unless the -f option is
- used (see below).
+ Patterns, whether supplied on the command line or in a separate file,
+ are given without delimiters. For example:
+
+ pcregrep Thursday /etc/motd
+
+ If you attempt to use delimiters (for example, by surrounding a pattern
+ with slashes, as is common in Perl scripts), they are interpreted as
+ part of the pattern. Quotes can of course be used on the command line
+ because they are interpreted by the shell, and indeed they are required
+ if a pattern contains white space or shell metacharacters.
+
+ The first argument that follows any option settings is treated as the
+ single pattern to be matched when neither -e nor -f is present. Con-
+ versely, when one or both of these options are used to specify pat-
+ terns, all arguments are treated as path names. At least one of -e, -f,
+ or an argument pattern must be provided.
If no files are specified, pcregrep reads the standard input. The stan-
dard input can also be referenced by a name consisting of a single
@@ -27,47 +41,109 @@ DESCRIPTION
pcregrep some-pattern /file1 - /file3
By default, each line that matches the pattern is copied to the stan-
- dard output, and if there is more than one file, the file name is
- printed before each line of output. However, there are options that can
+ dard output, and if there is more than one file, the file name is out-
+ put at the start of each line. However, there are options that can
change how pcregrep behaves. In particular, the -M option makes it pos-
sible to search for patterns that span line boundaries.
Patterns are limited to 8K or BUFSIZ characters, whichever is the
greater. BUFSIZ is defined in <stdio.h>.
+ If the LC_ALL or LC_CTYPE environment variable is set, pcregrep uses
+ the value to set a locale when calling the PCRE library. The --locale
+ option can be used to override this.
+
OPTIONS
-- This terminate the list of options. It is useful if the next
- item on the command line starts with a hyphen, but is not an
- option.
+ item on the command line starts with a hyphen but is not an
+ option. This allows for the processing of patterns and file-
+ names that start with hyphens.
+
+ -A number, --after-context=number
+ Output number lines of context after each matching line. If
+ filenames and/or line numbers are being output, a hyphen sep-
+ arator is used instead of a colon for the context lines. A
+ line containing "--" is output between each group of lines,
+ unless they are in fact contiguous in the input file. The
+ value of number is expected to be relatively small. However,
+ pcregrep guarantees to have up to 8K of following text avail-
+ able for context output.
- -A number Print number lines of context after each matching line. If
- file names and/or line numbers are being printed, a hyphen
- separator is used instead of a colon for the context lines. A
- line containing "--" is printed between each group of lines,
+ -B number, --before-context=number
+ Output number lines of context before each matching line. If
+ filenames and/or line numbers are being output, a hyphen sep-
+ arator is used instead of a colon for the context lines. A
+ line containing "--" is output between each group of lines,
unless they are in fact contiguous in the input file. The
value of number is expected to be relatively small. However,
- pcregrep guarantees to have up to 8K of following text avail-
- able for context printing.
-
- -B number Print number lines of context before each matching line. If
- file names and/or line numbers are being printed, a hyphen
- separator is used instead of a colon for the context lines. A
- line containing "--" is printed between each group of lines,
- unless they are in fact contiguous in the input file. The
- value of number is expected to be relatively small. However,
pcregrep guarantees to have up to 8K of preceding text avail-
- able for context printing.
+ able for context output.
- -C number Print number lines of context both before and after each
- matching line. This is equivalent to setting both -A and -B
+ -C number, --context=number
+ Output number lines of context both before and after each
+ matching line. This is equivalent to setting both -A and -B
to the same value.
- -c Do not print individual lines; instead just print a count of
- the number of lines that would otherwise have been printed.
- If several files are given, a count is printed for each of
- them.
+ -c, --count
+ Do not output individual lines; instead just output a count
+ of the number of lines that would otherwise have been output.
+ If several files are given, a count is output for each of
+ them. In this mode, the -A, -B, and -C options are ignored.
+
+ --colour, --color
+ If this option is given without any data, it is equivalent to
+ "--colour=auto". If data is required, it must be given in
+ the same shell item, separated by an equals sign.
+
+ --colour=value, --color=value
+ This option specifies under what circumstances the part of a
+ line that matched a pattern should be coloured in the output.
+ The value may be "never" (the default), "always", or "auto".
+ In the latter case, colouring happens only if the standard
+ output is connected to a terminal. The colour can be speci-
+ fied by setting the environment variable PCREGREP_COLOUR or
+ PCREGREP_COLOR. The value of this variable should be a string
+ of two numbers, separated by a semicolon. They are copied
+ directly into the control string for setting colour on a ter-
+ minal, so it is your responsibility to ensure that they make
+ sense. If neither of the environment variables is set, the
+ default is "1;31", which gives red.
+
+ -D action, --devices=action
+ If an input path is not a regular file or a directory,
+ "action" specifies how it is to be processed. Valid values
+ are "read" (the default) or "skip" (silently skip the path).
+
+ -d action, --directories=action
+ If an input path is a directory, "action" specifies how it is
+ to be processed. Valid values are "read" (the default),
+ "recurse" (equivalent to the -r option), or "skip" (silently
+ skip the path). In the default case, directories are read as
+ if they were ordinary files. In some operating systems the
+ effect of reading a directory like this is an immediate end-
+ of-file.
+
+ -e pattern, --regex=pattern,
+ --regexp=pattern Specify a pattern to be matched. This option
+ can be used multiple times in order to specify several pat-
+ terns. It can also be used as a way of specifying a single
+ pattern that starts with a hyphen. When -e is used, no argu-
+ ment pattern is taken from the command line; all arguments
+ are treated as file names. There is an overall maximum of 100
+ patterns. They are applied to each line in the order in which
+ they are defined until one matches (or fails to match if -v
+ is used). If -f is used with -e, the command line patterns
+ are matched first, followed by the patterns from the file,
+ independent of the order in which these options are speci-
+ fied. Note that multiple use of -e is not the same as a sin-
+ gle pattern with alternatives. For example, X|Y finds the
+ first character in a line that is X or Y, whereas if the two
+ patterns are given separately, pcregrep finds X if it is
+ present, even if it follows Y in the line. It finds Y only if
+ there is no X in the line. This really matters only if you
+ are using -o to show the portion of the line that matched.
--exclude=pattern
When pcregrep is searching the files in a directory as a con-
@@ -77,117 +153,165 @@ OPTIONS
--exclude, it is excluded. There is no short form for this
option.
- -ffilename
- Read a number of patterns from the file, one per line, and
- match all of them against each line of input. A line is out-
- put if any of the patterns match it. When -f is used, no
+ -F, --fixed-strings
+ Interpret each pattern as a list of fixed strings, separated
+ by newlines, instead of as a regular expression. The -w
+ (match as a word) and -x (match whole line) options can be
+ used with -F. They apply to each of the fixed strings. A line
+ is selected if any of the fixed strings are found in it (sub-
+ ject to -w or -x, if present).
+
+ -f filename, --file=filename
+ Read a number of patterns from the file, one per line, and
+ match them against each line of input. A data line is output
+ if any of the patterns match it. The filename can be given as
+ "-" to refer to the standard input. When -f is used, patterns
+ specified on the command line using -e may also be present;
+ they are tested before the file's patterns. However, no other
pattern is taken from the command line; all arguments are
- treated as file names. There is a maximum of 100 patterns.
- Trailing white space is removed, and blank lines are ignored.
- An empty file contains no patterns and therefore matches
- nothing.
-
- -h Suppress printing of filenames when searching multiple files.
-
- -i Ignore upper/lower case distinctions during comparisons.
+ treated as file names. There is an overall maximum of 100
+ patterns. Trailing white space is removed from each line, and
+ blank lines are ignored. An empty file contains no patterns
+ and therefore matches nothing.
+
+ -H, --with-filename
+ Force the inclusion of the filename at the start of output
+ lines when searching a single file. By default, the filename
+ is not shown in this case. For matching lines, the filename
+ is followed by a colon and a space; for context lines, a
+ hyphen separator is used. If a line number is also being out-
+ put, it follows the file name without a space.
+
+ -h, --no-filename
+ Suppress the output filenames when searching multiple files.
+ By default, filenames are shown when multiple files are
+ searched. For matching lines, the filename is followed by a
+ colon and a space; for context lines, a hyphen separator is
+ used. If a line number is also being output, it follows the
+ file name without a space.
+
+ --help Output a brief help message and exit.
+
+ -i, --ignore-case
+ Ignore upper/lower case distinctions during comparisons.
--include=pattern
When pcregrep is searching the files in a directory as a con-
- sequence of the -r (recursive search) option, only files
- whose names match the pattern are included. The pattern is a
- PCRE regular expression. If a file name matches both
- --include and --exclude, it is excluded. There is no short
+ sequence of the -r (recursive search) option, only those
+ files whose names match the pattern are included. The pattern
+ is a PCRE regular expression. If a file name matches both
+ --include and --exclude, it is excluded. There is no short
form for this option.
- -L Instead of printing lines from the files, just print the
- names of the files that do not contain any lines that would
- have been printed. Each file name is printed once, on a sepa-
+ -L, --files-without-match
+ Instead of outputting lines from the files, just output the
+ names of the files that do not contain any lines that would
+ have been output. Each file name is output once, on a sepa-
rate line.
- -l Instead of printing lines from the files, just print the
- names of the files containing lines that would have been
- printed. Each file name is printed once, on a separate line.
+ -l, --files-with-matches
+ Instead of outputting lines from the files, just output the
+ names of the files containing lines that would have been out-
+ put. Each file name is output once, on a separate line.
+ Searching stops as soon as a matching line is found in a
+ file.
--label=name
This option supplies a name to be used for the standard input
- when file names are being printed. If not supplied, "(stan-
- dard input)" is used. There is no short form for this option.
-
- -M Allow patterns to match more than one line. When this option
+ when file names are being output. If not supplied, "(standard
+ input)" is used. There is no short form for this option.
+
+ --locale=locale-name
+ This option specifies a locale to be used for pattern match-
+ ing. It overrides the value in the LC_ALL or LC_CTYPE envi-
+ ronment variables. If no locale is specified, the PCRE
+ library's default (usually the "C" locale) is used. There is
+ no short form for this option.
+
+ -M, --multiline
+ Allow patterns to match more than one line. When this option
is given, patterns may usefully contain literal newline char-
- acters and internal occurrences of ^ and $ characters. The
- output for any one match may consist of more than one line.
- When this option is set, the PCRE library is called in "mul-
- tiline" mode. There is a limit to the number of lines that
- can be matched, imposed by the way that pcregrep buffers the
- input file as it scans it. However, pcregrep ensures that at
+ acters and internal occurrences of ^ and $ characters. The
+ output for any one match may consist of more than one line.
+ When this option is set, the PCRE library is called in "mul-
+ tiline" mode. There is a limit to the number of lines that
+ can be matched, imposed by the way that pcregrep buffers the
+ input file as it scans it. However, pcregrep ensures that at
least 8K characters or the rest of the document (whichever is
- the shorter) are available for forward matching, and simi-
+ the shorter) are available for forward matching, and simi-
larly the previous 8K characters (or all the previous charac-
- ters, if fewer than 8K) are guaranteed to be available for
+ ters, if fewer than 8K) are guaranteed to be available for
lookbehind assertions.
- -n Precede each line by its line number in the file.
+ -n, --line-number
+ Precede each output line by its line number in the file, fol-
+ lowed by a colon and a space for matching lines or a hyphen
+ and a space for context lines. If the filename is also being
+ output, it precedes the line number.
+
+ -o, --only-matching
+ Show only the part of the line that matched a pattern. In
+ this mode, no context is shown. That is, the -A, -B, and -C
+ options are ignored.
- -q Work quietly, that is, display nothing except error messages.
+ -q, --quiet
+ Work quietly, that is, display nothing except error messages.
The exit status indicates whether or not any matches were
found.
- -r If any given path is a directory, recursively scan the files
+ -r, --recursive
+ If any given path is a directory, recursively scan the files
it contains, taking note of any --include and --exclude set-
- tings. Without -r a directory is scanned as a normal file.
-
- -s Suppress error messages about non-existent or unreadable
- files. Such files are quietly skipped. However, the return
+ tings. By default, a directory is read as a normal file; in
+ some operating systems this gives an immediate end-of-file.
+ This option is a shorthand for setting the -d option to
+ "recurse".
+
+ -s, --no-messages
+ Suppress error messages about non-existent or unreadable
+ files. Such files are quietly skipped. However, the return
code is still 2, even if matches were found in other files.
- -u Operate in UTF-8 mode. This option is available only if PCRE
- has been compiled with UTF-8 support. Both the pattern and
- each subject line must be valid strings of UTF-8 characters.
+ -u, --utf-8
+ Operate in UTF-8 mode. This option is available only if PCRE
+ has been compiled with UTF-8 support. Both patterns and sub-
+ ject lines must be valid strings of UTF-8 characters.
- -V Write the version numbers of pcregrep and the PCRE library
+ -V, --version
+ Write the version numbers of pcregrep and the PCRE library
that is being used to the standard error stream.
- -v Invert the sense of the match, so that lines which do not
- match the pattern are the ones that are found.
+ -v, --invert-match
+ Invert the sense of the match, so that lines which do not
+ match any of the patterns are the ones that are found.
- -w Force the pattern to match only whole words. This is equiva-
+ -w, --word-regex, --word-regexp
+ Force the patterns to match only whole words. This is equiva-
lent to having \b at the start and end of the pattern.
- -x Force the pattern to be anchored (it must start matching at
- the beginning of the line) and in addition, require it to
- match the entire line. This is equivalent to having ^ and $
+ -x, --line-regex, --line-regexp
+ Force the patterns to be anchored (each must start matching
+ at the beginning of a line) and in addition, require them to
+ match entire lines. This is equivalent to having ^ and $
characters at the start and end of each alternative branch in
- the regular expression.
-
-
-LONG OPTIONS
-
- Long forms of all the options are available, as in GNU grep. They are
- shown in the following table:
-
- -A --after-context
- -B --before-context
- -C --context
- -c --count
- --exclude (no short form)
- -f --file
- -h --no-filename
- --help (no short form)
- -i --ignore-case
- --include (no short form)
- -L --files-without-match
- -l --files-with-matches
- --label (no short form)
- -n --line-number
- -r --recursive
- -q --quiet
- -s --no-messages
- -u --utf-8
- -V --version
- -v --invert-match
- -x --line-regex
- -x --line-regexp
+ every pattern.
+
+
+ENVIRONMENT VARIABLES
+
+ The environment variables LC_ALL and LC_CTYPE are examined, in that
+ order, for a locale. The first one that is set is used. This can be
+ overridden by the --locale option. If no locale is set, the PCRE
+ library's default (usually the "C" locale) is used.
+
+
+OPTIONS COMPATIBILITY
+
+ The majority of short and long forms of pcregrep's options are the same
+ as in the GNU grep program. Any long option of the form --xxx-regexp
+ (GNU terminology) is also available as --xxx-regex (PCRE terminology).
+ However, the --locale, -M, --multiline, -u, and --utf-8 options are
+ specific to pcregrep.
OPTIONS WITH DATA
@@ -200,19 +324,42 @@ OPTIONS WITH DATA
-f /some/file
If a long form option is used, the data may appear in the same command
- line item, separated by an = character, or it may appear in the next
- command line item. For example:
+ line item, separated by an equals character, or (with one exception) it
+ may appear in the next command line item. For example:
--file=/some/file
--file /some/file
+ Note, however, that if you want to supply a file name beginning with ~
+ as data in a shell command, and have the shell expand ~ to a home
+ directory, you must separate the file name from the option, because the
+ shell does not treat ~ specially unless it is at the start of an item.
+
+ The exception to the above is the --colour (or --color) option, for
+ which the data is optional. If this option does have data, it must be
+ given in the first form, using an equals character. Otherwise it will
+ be assumed that it has no data.
+
+
+MATCHING ERRORS
+
+ It is possible to supply a regular expression that takes a very long
+ time to fail to match certain lines. Such patterns normally involve
+ nested indefinite repeats, for example: (a+)*\d when matched against a
+ line of a's with no final digit. The PCRE matching function has a
+ resource limit that causes it to abort in these circumstances. If this
+ happens, pcregrep outputs an error message and the line that caused the
+ problem to the standard error stream. If there are more than 20 such
+ errors, pcregrep gives up.
+
DIAGNOSTICS
Exit status is 0 if any matches were found, 1 if no matches were found,
and 2 for syntax errors and non-existent or inacessible files (even if
- matches were found in other files). Using the -s option to suppress
- error messages about inaccessble files does not affect the return code.
+ matches were found in other files) or too many matching errors. Using
+ the -s option to suppress error messages about inaccessble files does
+ not affect the return code.
AUTHOR
@@ -221,5 +368,5 @@ AUTHOR
University Computing Service
Cambridge CB2 3QG, England.
-Last updated: 16 May 2005
-Copyright (c) 1997-2005 University of Cambridge.
+Last updated: 23 January 2006
+Copyright (c) 1997-2006 University of Cambridge.
diff --git a/doc/pcrepartial.3 b/doc/pcrepartial.3
index 66fd18d..c4e0aca 100644
--- a/doc/pcrepartial.3
+++ b/doc/pcrepartial.3
@@ -81,16 +81,16 @@ PCRE_PARTIAL flag is used for the match. Here is a run of \fBpcretest\fP that
uses the date example quoted above:
.sp
re> /^\ed?\ed(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)\ed\ed$/
- data> 25jun04\P
+ data> 25jun04\eP
0: 25jun04
1: jun
- data> 25dec3\P
+ data> 25dec3\eP
Partial match
- data> 3ju\P
+ data> 3ju\eP
Partial match
- data> 3juj\P
+ data> 3juj\eP
No match
- data> j\P
+ data> j\eP
No match
.sp
The first data string is matched completely, so \fBpcretest\fP shows the
@@ -175,10 +175,29 @@ hand, if "dogsbody" is presented as a single string, both matches are found.
.P
Because of this phenomenon, it does not usually make sense to end a pattern
that is going to be matched in this way with a variable repeat.
+.P
+4. Patterns that contain alternatives at the top level which do not all
+start with the same pattern item may not work as expected. For example,
+consider this pattern:
+.sp
+ 1234|3789
+.sp
+If the first part of the subject is "ABC123", a partial match of the first
+alternative is found at offset 3. There is no partial match for the second
+alternative, because such a match does not start at the same point in the
+subject string. Attempting to continue with the string "789" does not yield a
+match because only those alternatives that match at one point in the subject
+are remembered. The problem arises because the start of the second alternative
+matches within the first alternative. There is no problem with anchored
+patterns or patterns such as:
+.sp
+ 1234|ABCD
+.sp
+where no string can be a partial match for both alternatives.
.
.
.P
.in 0
-Last updated: 28 February 2005
+Last updated: 16 January 2006
.br
-Copyright (c) 1997-2005 University of Cambridge.
+Copyright (c) 1997-2006 University of Cambridge.
diff --git a/doc/pcrepattern.3 b/doc/pcrepattern.3
index 84c2ee5..3763b82 100644
--- a/doc/pcrepattern.3
+++ b/doc/pcrepattern.3
@@ -148,7 +148,7 @@ represents:
\et tab (hex 09)
\eddd character with octal code ddd, or backreference
\exhh character with hex code hh
- \ex{hhh..} character with hex code hhh... (UTF-8 mode only)
+ \ex{hhh..} character with hex code hhh..
.sp
The precise effect of \ecx is as follows: if x is a lower case letter, it
is converted to upper case. Then bit 6 of the character (hex 40) is inverted.
@@ -156,17 +156,17 @@ Thus \ecz becomes hex 1A, but \ec{ becomes hex 3B, while \ec; becomes hex
7B.
.P
After \ex, from zero to two hexadecimal digits are read (letters can be in
-upper or lower case). In UTF-8 mode, any number of hexadecimal digits may
-appear between \ex{ and }, but the value of the character code must be less
-than 2**31 (that is, the maximum hexadecimal value is 7FFFFFFF). If characters
-other than hexadecimal digits appear between \ex{ and }, or if there is no
-terminating }, this form of escape is not recognized. Instead, the initial
-\ex will be interpreted as a basic hexadecimal escape, with no following
-digits, giving a character whose value is zero.
+upper or lower case). Any number of hexadecimal digits may appear between \ex{
+and }, but the value of the character code must be less than 256 in non-UTF-8
+mode, and less than 2**31 in UTF-8 mode (that is, the maximum hexadecimal value
+is 7FFFFFFF). If characters other than hexadecimal digits appear between \ex{
+and }, or if there is no terminating }, this form of escape is not recognized.
+Instead, the initial \ex will be interpreted as a basic hexadecimal escape,
+with no following digits, giving a character whose value is zero.
.P
Characters whose value is less than 256 can be defined by either of the two
-syntaxes for \ex when PCRE is in UTF-8 mode. There is no difference in the
-way they are handled. For example, \exdc is exactly the same as \ex{dc}.
+syntaxes for \ex. There is no difference in the way they are handled. For
+example, \exdc is exactly the same as \ex{dc}.
.P
After \e0 up to two further octal digits are read. In both cases, if there
are fewer than two digits, just those that are present are used. Thus the
@@ -272,7 +272,8 @@ greater than 128 are used for accented letters, and these are matched by \ew.
.P
In UTF-8 mode, characters with values greater than 128 never match \ed, \es, or
\ew, and always match \eD, \eS, and \eW. This is true even when Unicode
-character property support is available.
+character property support is available. The use of locales with Unicode is
+discouraged.
.
.
.\" HTML <a name="uniextseq"></a>
@@ -280,28 +281,105 @@ character property support is available.
.rs
.sp
When PCRE is built with Unicode character property support, three additional
-escape sequences to match generic character types are available when UTF-8 mode
+escape sequences to match character properties are available when UTF-8 mode
is selected. They are:
.sp
- \ep{\fIxx\fP} a character with the \fIxx\fP property
- \eP{\fIxx\fP} a character without the \fIxx\fP property
- \eX an extended Unicode sequence
-.sp
-The property names represented by \fIxx\fP above are limited to the
-Unicode general category properties. Each character has exactly one such
-property, specified by a two-letter abbreviation. For compatibility with Perl,
-negation can be specified by including a circumflex between the opening brace
-and the property name. For example, \ep{^Lu} is the same as \eP{Lu}.
-.P
-If only one letter is specified with \ep or \eP, it includes all the properties
-that start with that letter. In this case, in the absence of negation, the
-curly brackets in the escape sequence are optional; these two examples have
-the same effect:
+ \ep{\fIxx\fP} a character with the \fIxx\fP property
+ \eP{\fIxx\fP} a character without the \fIxx\fP property
+ \eX an extended Unicode sequence
+.sp
+The property names represented by \fIxx\fP above are limited to the Unicode
+script names, the general category properties, and "Any", which matches any
+character (including newline). Other properties such as "InMusicalSymbols" are
+not currently supported by PCRE. Note that \eP{Any} does not match any
+characters, so always causes a match failure.
+.P
+Sets of Unicode characters are defined as belonging to certain scripts. A
+character from one of these sets can be matched using a script name. For
+example:
+.sp
+ \ep{Greek}
+ \eP{Han}
+.sp
+Those that are not part of an identified script are lumped together as
+"Common". The current list of scripts is:
+.P
+Arabic,
+Armenian,
+Bengali,
+Bopomofo,
+Braille,
+Buginese,
+Buhid,
+Canadian_Aboriginal,
+Cherokee,
+Common,
+Coptic,
+Cypriot,
+Cyrillic,
+Deseret,
+Devanagari,
+Ethiopic,
+Georgian,
+Glagolitic,
+Gothic,
+Greek,
+Gujarati,
+Gurmukhi,
+Han,
+Hangul,
+Hanunoo,
+Hebrew,
+Hiragana,
+Inherited,
+Kannada,
+Katakana,
+Kharoshthi,
+Khmer,
+Lao,
+Latin,
+Limbu,
+Linear_B,
+Malayalam,
+Mongolian,
+Myanmar,
+New_Tai_Lue,
+Ogham,
+Old_Italic,
+Old_Persian,
+Oriya,
+Osmanya,
+Runic,
+Shavian,
+Sinhala,
+Syloti_Nagri,
+Syriac,
+Tagalog,
+Tagbanwa,
+Tai_Le,
+Tamil,
+Telugu,
+Thaana,
+Thai,
+Tibetan,
+Tifinagh,
+Ugaritic,
+Yi.
+.P
+Each character has exactly one general category property, specified by a
+two-letter abbreviation. For compatibility with Perl, negation can be specified
+by including a circumflex between the opening brace and the property name. For
+example, \ep{^Lu} is the same as \eP{Lu}.
+.P
+If only one letter is specified with \ep or \eP, it includes all the general
+category properties that start with that letter. In this case, in the absence
+of negation, the curly brackets in the escape sequence are optional; these two
+examples have the same effect:
.sp
\ep{L}
\epL
.sp
-The following property codes are supported:
+The following general category property codes are supported:
.sp
C Other
Cc Control
@@ -347,8 +425,17 @@ The following property codes are supported:
Zp Paragraph separator
Zs Space separator
.sp
-Extended properties such as "Greek" or "InMusicalSymbols" are not supported by
-PCRE.
+The special property L& is also supported: it matches a character that has
+the Lu, Ll, or Lt property, in other words, a letter that is not classified as
+a modifier or "other".
+.P
+The long synonyms for these properties that Perl supports (such as \ep{Letter})
+are not supported by PCRE. Nor is is permitted to prefix any of these
+properties with "Is".
+.P
+No character that is in the Unicode table has the Cn (unassigned) property.
+Instead, this property is assumed for any code point that is not in the
+Unicode table.
.P
Specifying caseless matching does not affect these escape sequences. For
example, \ep{Lu} always matches only upper case letters.
@@ -1346,14 +1433,18 @@ number, provided that it occurs inside that subpattern. (If not, it is a
"subroutine" call, which is described in the next section.) The special item
(?R) is a recursive call of the entire regular expression.
.P
-For example, this PCRE pattern solves the nested parentheses problem (assume
-the PCRE_EXTENDED option is set so that white space is ignored):
+A recursive subpattern call is always treated as an atomic group. That is, once
+it has matched some of the subject string, it is never re-entered, even if
+it contains untried alternatives and there is a subsequent matching failure.
+.P
+This PCRE pattern solves the nested parentheses problem (assume the
+PCRE_EXTENDED option is set so that white space is ignored):
.sp
\e( ( (?>[^()]+) | (?R) )* \e)
.sp
First it matches an opening parenthesis. Then it matches any number of
substrings which can either be a sequence of non-parentheses, or a recursive
-match of the pattern itself (that is a correctly parenthesized substring).
+match of the pattern itself (that is, a correctly parenthesized substring).
Finally there is a closing parenthesis.
.P
If this were part of a larger pattern, you would not want to recurse the entire
@@ -1437,6 +1528,11 @@ matches "sense and sensibility" and "response and responsibility", but not
is used, it does match "sense and responsibility" as well as the other two
strings. Such references must, however, follow the subpattern to which they
refer.
+.P
+Like recursive subpatterns, a "subroutine" call is always treated as an atomic
+group. That is, once it has matched some of the subject string, it is never
+re-entered, even if it contains untried alternatives and there is a subsequent
+matching failure.
.
.
.SH CALLOUTS
@@ -1475,6 +1571,6 @@ description of the interface to the callout function is given in the
documentation.
.P
.in 0
-Last updated: 28 February 2005
+Last updated: 24 January 2006
.br
-Copyright (c) 1997-2005 University of Cambridge.
+Copyright (c) 1997-2006 University of Cambridge.
diff --git a/doc/pcreposix.3 b/doc/pcreposix.3
index 173ef03..0e9c860 100644
--- a/doc/pcreposix.3
+++ b/doc/pcreposix.3
@@ -44,10 +44,10 @@ command for linking an application that uses them. Because the POSIX functions
call the native ones, it is also necessary to add \fB-lpcre\fP.
.P
I have implemented only those option bits that can be reasonably mapped to PCRE
-native options. In addition, the options REG_EXTENDED and REG_NOSUB are defined
-with the value zero. They have no effect, but since programs that are written
-to the POSIX interface often use them, this makes it easier to slot in PCRE as
-a replacement library. Other POSIX options are not even defined.
+native options. In addition, the option REG_EXTENDED is defined with the value
+zero. This has no effect, but since programs that are written to the POSIX
+interface often use it, this makes it easier to slot in PCRE as a replacement
+library. Other POSIX options are not even defined.
.P
When PCRE is called via these functions, it is only the API that is POSIX-like
in style. The syntax and semantics of the regular expressions themselves are
@@ -71,26 +71,42 @@ The function \fBregcomp()\fP is called to compile a pattern into an
internal form. The pattern is a C string terminated by a binary zero, and
is passed in the argument \fIpattern\fP. The \fIpreg\fP argument is a pointer
to a \fBregex_t\fP structure that is used as a base for storing information
-about the compiled expression.
+about the compiled regular expression.
.P
The argument \fIcflags\fP is either zero, or contains one or more of the bits
defined by the following macros:
.sp
REG_DOTALL
.sp
-The PCRE_DOTALL option is set when the expression is passed for compilation to
-the native function. Note that REG_DOTALL is not part of the POSIX standard.
+The PCRE_DOTALL option is set when the regular expression is passed for
+compilation to the native function. Note that REG_DOTALL is not part of the
+POSIX standard.
.sp
REG_ICASE
.sp
-The PCRE_CASELESS option is set when the expression is passed for compilation
-to the native function.
+The PCRE_CASELESS option is set when the regular expression is passed for
+compilation to the native function.
.sp
REG_NEWLINE
.sp
-The PCRE_MULTILINE option is set when the expression is passed for compilation
-to the native function. Note that this does \fInot\fP mimic the defined POSIX
-behaviour for REG_NEWLINE (see the following section).
+The PCRE_MULTILINE option is set when the regular expression is passed for
+compilation to the native function. Note that this does \fInot\fP mimic the
+defined POSIX behaviour for REG_NEWLINE (see the following section).
+.sp
+ REG_NOSUB
+.sp
+The PCRE_NO_AUTO_CAPTURE option is set when the regular expression is passed
+for compilation to the native function. In addition, when a pattern that is
+compiled with this flag is passed to \fBregexec()\fP for matching, the
+\fInmatch\fP and \fIpmatch\fP arguments are ignored, and no captured strings
+are returned.
+.sp
+ REG_UTF8
+.sp
+The PCRE_UTF8 option is set when the regular expression is passed for
+compilation to the native function. This causes the pattern itself and all data
+strings used for matching it to be treated as UTF-8 strings. Note that REG_UTF8
+is not part of the POSIX standard.
.P
In the absence of these flags, no options are passed to the native function.
This means the the regex is compiled with PCRE default semantics. In
@@ -158,15 +174,19 @@ function.
The PCRE_NOTEOL option is set when calling the underlying PCRE matching
function.
.P
-The portion of the string that was matched, and also any captured substrings,
-are returned via the \fIpmatch\fP argument, which points to an array of
-\fInmatch\fP structures of type \fIregmatch_t\fP, containing the members
-\fIrm_so\fP and \fIrm_eo\fP. These contain the offset to the first character of
-each substring and the offset to the first character after the end of each
-substring, respectively. The 0th element of the vector relates to the entire
-portion of \fIstring\fP that was matched; subsequent elements relate to the
-capturing subpatterns of the regular expression. Unused entries in the array
-have both structure members set to -1.
+If the pattern was compiled with the REG_NOSUB flag, no data about any matched
+strings is returned. The \fInmatch\fP and \fIpmatch\fP arguments of
+\fBregexec()\fP are ignored.
+.P
+Otherwise,the portion of the string that was matched, and also any captured
+substrings, are returned via the \fIpmatch\fP argument, which points to an
+array of \fInmatch\fP structures of type \fIregmatch_t\fP, containing the
+members \fIrm_so\fP and \fIrm_eo\fP. These contain the offset to the first
+character of each substring and the offset to the first character after the end
+of each substring, respectively. The 0th element of the vector relates to the
+entire portion of \fIstring\fP that was matched; subsequent elements relate to
+the capturing subpatterns of the regular expression. Unused entries in the
+array have both structure members set to -1.
.P
A successful match yields a zero return; various error codes are defined in the
header file, of which REG_NOMATCH is the "expected" failure code.
@@ -201,6 +221,6 @@ University Computing Service,
Cambridge CB2 3QG, England.
.P
.in 0
-Last updated: 28 February 2005
+Last updated: 16 January 2006
.br
-Copyright (c) 1997-2005 University of Cambridge.
+Copyright (c) 1997-2006 University of Cambridge.
diff --git a/doc/pcreprecompile.3 b/doc/pcreprecompile.3
index 7cf89de..556fa7f 100644
--- a/doc/pcreprecompile.3
+++ b/doc/pcreprecompile.3
@@ -121,7 +121,11 @@ that were compiled with previous releases (not a facility that was previously
advertised), you will have to recompile them for release 5.0. However, from now
on, it should be possible to make changes in a compatible manner.
.P
+Notwithstanding the above, if you have any saved patterns in UTF-8 mode that
+use \ep or \eP that were compiled with any release up to and including 6.4, you
+will have to recompile them for release 6.5 and above.
+.P
.in 0
-Last updated: 28 February 2005
+Last updated: 01 February 2006
.br
-Copyright (c) 1997-2005 University of Cambridge.
+Copyright (c) 1997-2006 University of Cambridge.
diff --git a/doc/pcretest.1 b/doc/pcretest.1
index 336abcf..4295112 100644
--- a/doc/pcretest.1
+++ b/doc/pcretest.1
@@ -59,6 +59,9 @@ Behave as if each regex has the \fB/P\fP modifier; the POSIX wrapper API is
used to call PCRE. None of the other options has any effect when \fB-p\fP is
set.
.TP 10
+\fP-q\fP
+Do not output the version number of \fBpcretest\fP at the start of execution.
+.TP 10
\fB-t\fP
Run each compile, study, and match many times with a timer, and output
resulting time per compile or match (in milliseconds). Do not set \fB-m\fP with
@@ -276,7 +279,8 @@ recognized:
.\" JOIN
\eL call pcre_get_substringlist() after a
successful match
- \eM discover the minimum MATCH_LIMIT setting
+ \eM discover the minimum MATCH_LIMIT and
+ MATCH_LIMIT_RECURSION settings
\eN pass the PCRE_NOTEMPTY option to \fBpcre_exec()\fP
.\" JOIN
\eOdd set the size of the output vector passed to
@@ -298,21 +302,25 @@ very last character is a backslash, it is ignored. This gives a way of passing
an empty line as data, since a real empty line terminates the data input.
.P
If \eM is present, \fBpcretest\fP calls \fBpcre_exec()\fP several times, with
-different values in the \fImatch_limit\fP field of the \fBpcre_extra\fP data
-structure, until it finds the minimum number that is needed for
-\fBpcre_exec()\fP to complete. This number is a measure of the amount of
-recursion and backtracking that takes place, and checking it out can be
-instructive. For most simple matches, the number is quite small, but for
-patterns with very large numbers of matching possibilities, it can become large
-very quickly with increasing length of subject string.
+different values in the \fImatch_limit\fP and \fImatch_limit_recursion\fP
+fields of the \fBpcre_extra\fP data structure, until it finds the minimum
+numbers for each parameter that allow \fBpcre_exec()\fP to complete. The
+\fImatch_limit\fP number is a measure of the amount of backtracking that takes
+place, and checking it out can be instructive. For most simple matches, the
+number is quite small, but for patterns with very large numbers of matching
+possibilities, it can become large very quickly with increasing length of
+subject string. The \fImatch_limit_recursion\fP number is a measure of how much
+stack (or, if PCRE is compiled with NO_RECURSE, how much heap) memory is needed
+to complete the match attempt.
.P
When \eO is used, the value specified may be higher or lower than the size set
by the \fB-O\fP command line option (or defaulted to 45); \eO applies only to
the call of \fBpcre_exec()\fP for the line in which it appears.
.P
If the \fB/P\fP modifier was present on the pattern, causing the POSIX wrapper
-API to be used, only \eB and \eZ have any effect, causing REG_NOTBOL and
-REG_NOTEOL to be passed to \fBregexec()\fP respectively.
+API to be used, the only option-setting sequences that have any effect are \eB
+and \eZ, causing REG_NOTBOL and REG_NOTEOL, respectively, to be passed to
+\fBregexec()\fP.
.P
The use of \ex{hh...} to represent UTF-8 characters is not dependent on the use
of the \fB/8\fP modifier on the pattern. It is recognized always. There may be
@@ -568,6 +576,6 @@ University Computing Service,
Cambridge CB2 3QG, England.
.P
.in 0
-Last updated: 28 February 2005
+Last updated: 18 January 2006
.br
-Copyright (c) 1997-2005 University of Cambridge.
+Copyright (c) 1997-2006 University of Cambridge.
diff --git a/doc/pcretest.txt b/doc/pcretest.txt
index 2af49e7..2380460 100644
--- a/doc/pcretest.txt
+++ b/doc/pcretest.txt
@@ -50,74 +50,77 @@ OPTIONS
per API is used to call PCRE. None of the other options has
any effect when -p is set.
- -t Run each compile, study, and match many times with a timer,
- and output resulting time per compile or match (in millisec-
- onds). Do not set -m with -t, because you will then get the
- size output a zillion times, and the timing will be dis-
+ -q Do not output the version number of pcretest at the start of
+ execution.
+
+ -t Run each compile, study, and match many times with a timer,
+ and output resulting time per compile or match (in millisec-
+ onds). Do not set -m with -t, because you will then get the
+ size output a zillion times, and the timing will be dis-
torted.
DESCRIPTION
- If pcretest is given two filename arguments, it reads from the first
+ If pcretest is given two filename arguments, it reads from the first
and writes to the second. If it is given only one filename argument, it
- reads from that file and writes to stdout. Otherwise, it reads from
- stdin and writes to stdout, and prompts for each line of input, using
+ reads from that file and writes to stdout. Otherwise, it reads from
+ stdin and writes to stdout, and prompts for each line of input, using
"re>" to prompt for regular expressions, and "data>" to prompt for data
lines.
The program handles any number of sets of input on a single input file.
- Each set starts with a regular expression, and continues with any num-
+ Each set starts with a regular expression, and continues with any num-
ber of data lines to be matched against the pattern.
- Each data line is matched separately and independently. If you want to
- do multiple-line matches, you have to use the \n escape sequence in a
- single line of input to encode the newline characters. The maximum
+ Each data line is matched separately and independently. If you want to
+ do multiple-line matches, you have to use the \n escape sequence in a
+ single line of input to encode the newline characters. The maximum
length of data line is 30,000 characters.
- An empty line signals the end of the data lines, at which point a new
- regular expression is read. The regular expressions are given enclosed
+ An empty line signals the end of the data lines, at which point a new
+ regular expression is read. The regular expressions are given enclosed
in any non-alphanumeric delimiters other than backslash, for example
/(a|bc)x+yz/
- White space before the initial delimiter is ignored. A regular expres-
- sion may be continued over several input lines, in which case the new-
- line characters are included within it. It is possible to include the
+ White space before the initial delimiter is ignored. A regular expres-
+ sion may be continued over several input lines, in which case the new-
+ line characters are included within it. It is possible to include the
delimiter within the pattern by escaping it, for example
/abc\/def/
- If you do so, the escape and the delimiter form part of the pattern,
- but since delimiters are always non-alphanumeric, this does not affect
- its interpretation. If the terminating delimiter is immediately fol-
+ If you do so, the escape and the delimiter form part of the pattern,
+ but since delimiters are always non-alphanumeric, this does not affect
+ its interpretation. If the terminating delimiter is immediately fol-
lowed by a backslash, for example,
/abc/\
- then a backslash is added to the end of the pattern. This is done to
- provide a way of testing the error condition that arises if a pattern
+ then a backslash is added to the end of the pattern. This is done to
+ provide a way of testing the error condition that arises if a pattern
finishes with a backslash, because
/abc\/
- is interpreted as the first line of a pattern that starts with "abc/",
+ is interpreted as the first line of a pattern that starts with "abc/",
causing pcretest to read the next line as a continuation of the regular
expression.
PATTERN MODIFIERS
- A pattern may be followed by any number of modifiers, which are mostly
- single characters. Following Perl usage, these are referred to below
- as, for example, "the /i modifier", even though the delimiter of the
- pattern need not always be a slash, and no slash is used when writing
- modifiers. Whitespace may appear between the final pattern delimiter
+ A pattern may be followed by any number of modifiers, which are mostly
+ single characters. Following Perl usage, these are referred to below
+ as, for example, "the /i modifier", even though the delimiter of the
+ pattern need not always be a slash, and no slash is used when writing
+ modifiers. Whitespace may appear between the final pattern delimiter
and the first modifier, and between the modifiers themselves.
The /i, /m, /s, and /x modifiers set the PCRE_CASELESS, PCRE_MULTILINE,
- PCRE_DOTALL, or PCRE_EXTENDED options, respectively, when pcre_com-
- pile() is called. These four modifier letters have the same effect as
+ PCRE_DOTALL, or PCRE_EXTENDED options, respectively, when pcre_com-
+ pile() is called. These four modifier letters have the same effect as
they do in Perl. For example:
/caseless/i
@@ -133,91 +136,91 @@ PATTERN MODIFIERS
/U PCRE_UNGREEDY
/X PCRE_EXTRA
- Searching for all possible matches within each subject string can be
- requested by the /g or /G modifier. After finding a match, PCRE is
+ Searching for all possible matches within each subject string can be
+ requested by the /g or /G modifier. After finding a match, PCRE is
called again to search the remainder of the subject string. The differ-
ence between /g and /G is that the former uses the startoffset argument
- to pcre_exec() to start searching at a new point within the entire
- string (which is in effect what Perl does), whereas the latter passes
- over a shortened substring. This makes a difference to the matching
+ to pcre_exec() to start searching at a new point within the entire
+ string (which is in effect what Perl does), whereas the latter passes
+ over a shortened substring. This makes a difference to the matching
process if the pattern begins with a lookbehind assertion (including \b
or \B).
- If any call to pcre_exec() in a /g or /G sequence matches an empty
- string, the next call is done with the PCRE_NOTEMPTY and PCRE_ANCHORED
- flags set in order to search for another, non-empty, match at the same
- point. If this second match fails, the start offset is advanced by
- one, and the normal match is retried. This imitates the way Perl han-
+ If any call to pcre_exec() in a /g or /G sequence matches an empty
+ string, the next call is done with the PCRE_NOTEMPTY and PCRE_ANCHORED
+ flags set in order to search for another, non-empty, match at the same
+ point. If this second match fails, the start offset is advanced by
+ one, and the normal match is retried. This imitates the way Perl han-
dles such cases when using the /g modifier or the split() function.
There are yet more modifiers for controlling the way pcretest operates.
- The /+ modifier requests that as well as outputting the substring that
- matched the entire pattern, pcretest should in addition output the
- remainder of the subject string. This is useful for tests where the
+ The /+ modifier requests that as well as outputting the substring that
+ matched the entire pattern, pcretest should in addition output the
+ remainder of the subject string. This is useful for tests where the
subject contains multiple copies of the same substring.
- The /L modifier must be followed directly by the name of a locale, for
+ The /L modifier must be followed directly by the name of a locale, for
example,
/pattern/Lfr_FR
For this reason, it must be the last modifier. The given locale is set,
- pcre_maketables() is called to build a set of character tables for the
- locale, and this is then passed to pcre_compile() when compiling the
- regular expression. Without an /L modifier, NULL is passed as the
- tables pointer; that is, /L applies only to the expression on which it
+ pcre_maketables() is called to build a set of character tables for the
+ locale, and this is then passed to pcre_compile() when compiling the
+ regular expression. Without an /L modifier, NULL is passed as the
+ tables pointer; that is, /L applies only to the expression on which it
appears.
- The /I modifier requests that pcretest output information about the
- compiled pattern (whether it is anchored, has a fixed first character,
- and so on). It does this by calling pcre_fullinfo() after compiling a
- pattern. If the pattern is studied, the results of that are also out-
+ The /I modifier requests that pcretest output information about the
+ compiled pattern (whether it is anchored, has a fixed first character,
+ and so on). It does this by calling pcre_fullinfo() after compiling a
+ pattern. If the pattern is studied, the results of that are also out-
put.
The /D modifier is a PCRE debugging feature, which also assumes /I. It
- causes the internal form of compiled regular expressions to be output
+ causes the internal form of compiled regular expressions to be output
after compilation. If the pattern was studied, the information returned
is also output.
The /F modifier causes pcretest to flip the byte order of the fields in
- the compiled pattern that contain 2-byte and 4-byte numbers. This
- facility is for testing the feature in PCRE that allows it to execute
+ the compiled pattern that contain 2-byte and 4-byte numbers. This
+ facility is for testing the feature in PCRE that allows it to execute
patterns that were compiled on a host with a different endianness. This
- feature is not available when the POSIX interface to PCRE is being
- used, that is, when the /P pattern modifier is specified. See also the
+ feature is not available when the POSIX interface to PCRE is being
+ used, that is, when the /P pattern modifier is specified. See also the
section about saving and reloading compiled patterns below.
- The /S modifier causes pcre_study() to be called after the expression
+ The /S modifier causes pcre_study() to be called after the expression
has been compiled, and the results used when the expression is matched.
- The /M modifier causes the size of memory block used to hold the com-
+ The /M modifier causes the size of memory block used to hold the com-
piled pattern to be output.
- The /P modifier causes pcretest to call PCRE via the POSIX wrapper API
- rather than its native API. When this is done, all other modifiers
- except /i, /m, and /+ are ignored. REG_ICASE is set if /i is present,
- and REG_NEWLINE is set if /m is present. The wrapper functions force
- PCRE_DOLLAR_ENDONLY always, and PCRE_DOTALL unless REG_NEWLINE is set.
+ The /P modifier causes pcretest to call PCRE via the POSIX wrapper API
+ rather than its native API. When this is done, all other modifiers
+ except /i, /m, and /+ are ignored. REG_ICASE is set if /i is present,
+ and REG_NEWLINE is set if /m is present. The wrapper functions force
+ PCRE_DOLLAR_ENDONLY always, and PCRE_DOTALL unless REG_NEWLINE is set.
- The /8 modifier causes pcretest to call PCRE with the PCRE_UTF8 option
- set. This turns on support for UTF-8 character handling in PCRE, pro-
- vided that it was compiled with this support enabled. This modifier
+ The /8 modifier causes pcretest to call PCRE with the PCRE_UTF8 option
+ set. This turns on support for UTF-8 character handling in PCRE, pro-
+ vided that it was compiled with this support enabled. This modifier
also causes any non-printing characters in output strings to be printed
using the \x{hh...} notation if they are valid UTF-8 sequences.
- If the /? modifier is used with /8, it causes pcretest to call
- pcre_compile() with the PCRE_NO_UTF8_CHECK option, to suppress the
+ If the /? modifier is used with /8, it causes pcretest to call
+ pcre_compile() with the PCRE_NO_UTF8_CHECK option, to suppress the
checking of the string for UTF-8 validity.
DATA LINES
- Before each data line is passed to pcre_exec(), leading and trailing
- whitespace is removed, and it is then scanned for \ escapes. Some of
- these are pretty esoteric features, intended for checking out some of
- the more complicated features of PCRE. If you are just testing "ordi-
- nary" regular expressions, you probably don't need any of these. The
+ Before each data line is passed to pcre_exec(), leading and trailing
+ whitespace is removed, and it is then scanned for \ escapes. Some of
+ these are pretty esoteric features, intended for checking out some of
+ the more complicated features of PCRE. If you are just testing "ordi-
+ nary" regular expressions, you probably don't need any of these. The
following escapes are recognized:
\a alarm (= BEL)
@@ -257,7 +260,8 @@ DATA LINES
ated by next non-alphanumeric character)
\L call pcre_get_substringlist() after a
successful match
- \M discover the minimum MATCH_LIMIT setting
+ \M discover the minimum MATCH_LIMIT and
+ MATCH_LIMIT_RECURSION settings
\N pass the PCRE_NOTEMPTY option to pcre_exec()
\Odd set the size of the output vector passed to
pcre_exec() to dd (any number of digits)
@@ -271,59 +275,63 @@ DATA LINES
\>dd start the match at offset dd (any number of digits);
this sets the startoffset argument for pcre_exec()
- A backslash followed by anything else just escapes the anything else.
- If the very last character is a backslash, it is ignored. This gives a
- way of passing an empty line as data, since a real empty line termi-
+ A backslash followed by anything else just escapes the anything else.
+ If the very last character is a backslash, it is ignored. This gives a
+ way of passing an empty line as data, since a real empty line termi-
nates the data input.
- If \M is present, pcretest calls pcre_exec() several times, with dif-
- ferent values in the match_limit field of the pcre_extra data struc-
- ture, until it finds the minimum number that is needed for pcre_exec()
- to complete. This number is a measure of the amount of recursion and
- backtracking that takes place, and checking it out can be instructive.
- For most simple matches, the number is quite small, but for patterns
- with very large numbers of matching possibilities, it can become large
- very quickly with increasing length of subject string.
+ If \M is present, pcretest calls pcre_exec() several times, with dif-
+ ferent values in the match_limit and match_limit_recursion fields of
+ the pcre_extra data structure, until it finds the minimum numbers for
+ each parameter that allow pcre_exec() to complete. The match_limit num-
+ ber is a measure of the amount of backtracking that takes place, and
+ checking it out can be instructive. For most simple matches, the number
+ is quite small, but for patterns with very large numbers of matching
+ possibilities, it can become large very quickly with increasing length
+ of subject string. The match_limit_recursion number is a measure of how
+ much stack (or, if PCRE is compiled with NO_RECURSE, how much heap)
+ memory is needed to complete the match attempt.
When \O is used, the value specified may be higher or lower than the
size set by the -O command line option (or defaulted to 45); \O applies
only to the call of pcre_exec() for the line in which it appears.
If the /P modifier was present on the pattern, causing the POSIX wrap-
- per API to be used, only \B and \Z have any effect, causing REG_NOTBOL
- and REG_NOTEOL to be passed to regexec() respectively.
+ per API to be used, the only option-setting sequences that have any
+ effect are \B and \Z, causing REG_NOTBOL and REG_NOTEOL, respectively,
+ to be passed to regexec().
- The use of \x{hh...} to represent UTF-8 characters is not dependent on
- the use of the /8 modifier on the pattern. It is recognized always.
- There may be any number of hexadecimal digits inside the braces. The
- result is from one to six bytes, encoded according to the UTF-8 rules.
+ The use of \x{hh...} to represent UTF-8 characters is not dependent on
+ the use of the /8 modifier on the pattern. It is recognized always.
+ There may be any number of hexadecimal digits inside the braces. The
+ result is from one to six bytes, encoded according to the UTF-8 rules.
THE ALTERNATIVE MATCHING FUNCTION
- By default, pcretest uses the standard PCRE matching function,
+ By default, pcretest uses the standard PCRE matching function,
pcre_exec() to match each data line. From release 6.0, PCRE supports an
- alternative matching function, pcre_dfa_test(), which operates in a
- different way, and has some restrictions. The differences between the
+ alternative matching function, pcre_dfa_test(), which operates in a
+ different way, and has some restrictions. The differences between the
two functions are described in the pcrematching documentation.
- If a data line contains the \D escape sequence, or if the command line
- contains the -dfa option, the alternative matching function is called.
+ If a data line contains the \D escape sequence, or if the command line
+ contains the -dfa option, the alternative matching function is called.
This function finds all possible matches at a given point. If, however,
- the \F escape sequence is present in the data line, it stops after the
+ the \F escape sequence is present in the data line, it stops after the
first match is found. This is always the shortest possible match.
DEFAULT OUTPUT FROM PCRETEST
- This section describes the output when the normal matching function,
+ This section describes the output when the normal matching function,
pcre_exec(), is being used.
When a match succeeds, pcretest outputs the list of captured substrings
- that pcre_exec() returns, starting with number 0 for the string that
+ that pcre_exec() returns, starting with number 0 for the string that
matched the whole pattern. Otherwise, it outputs "No match" or "Partial
- match" when pcre_exec() returns PCRE_ERROR_NOMATCH or PCRE_ERROR_PAR-
- TIAL, respectively, and otherwise the PCRE negative error number. Here
+ match" when pcre_exec() returns PCRE_ERROR_NOMATCH or PCRE_ERROR_PAR-
+ TIAL, respectively, and otherwise the PCRE negative error number. Here
is an example of an interactive pcretest run.
$ pcretest
@@ -336,10 +344,10 @@ DEFAULT OUTPUT FROM PCRETEST
data> xyz
No match
- If the strings contain any non-printing characters, they are output as
- \0x escapes, or as \x{...} escapes if the /8 modifier was present on
- the pattern. If the pattern has the /+ modifier, the output for sub-
- string 0 is followed by the the rest of the subject string, identified
+ If the strings contain any non-printing characters, they are output as
+ \0x escapes, or as \x{...} escapes if the /8 modifier was present on
+ the pattern. If the pattern has the /+ modifier, the output for sub-
+ string 0 is followed by the the rest of the subject string, identified
by "0+" like this:
re> /cat/+
@@ -347,7 +355,7 @@ DEFAULT OUTPUT FROM PCRETEST
0: cat
0+ aract
- If the pattern has the /g or /G modifier, the results of successive
+ If the pattern has the /g or /G modifier, the results of successive
matching attempts are output in sequence, like this:
re> /\Bi(\w\w)/g
@@ -361,23 +369,23 @@ DEFAULT OUTPUT FROM PCRETEST
"No match" is output only if the first match attempt fails.
- If any of the sequences \C, \G, or \L are present in a data line that
- is successfully matched, the substrings extracted by the convenience
+ If any of the sequences \C, \G, or \L are present in a data line that
+ is successfully matched, the substrings extracted by the convenience
functions are output with C, G, or L after the string number instead of
a colon. This is in addition to the normal full list. The string length
- (that is, the return from the extraction function) is given in paren-
+ (that is, the return from the extraction function) is given in paren-
theses after each string for \C and \G.
- Note that while patterns can be continued over several lines (a plain
+ Note that while patterns can be continued over several lines (a plain
">" prompt is used for continuations), data lines may not. However new-
lines can be included in data by means of the \n escape.
OUTPUT FROM THE ALTERNATIVE MATCHING FUNCTION
- When the alternative matching function, pcre_dfa_exec(), is used (by
- means of the \D escape sequence or the -dfa command line option), the
- output consists of a list of all the matches that start at the first
+ When the alternative matching function, pcre_dfa_exec(), is used (by
+ means of the \D escape sequence or the -dfa command line option), the
+ output consists of a list of all the matches that start at the first
point in the subject where there is at least one match. For example:
re> /(tang|tangerine|tan)/
@@ -386,10 +394,10 @@ OUTPUT FROM THE ALTERNATIVE MATCHING FUNCTION
1: tang
2: tan
- (Using the normal matching function on this data finds only "tang".)
- The longest matching string is always given first (and numbered zero).
+ (Using the normal matching function on this data finds only "tang".)
+ The longest matching string is always given first (and numbered zero).
- If /gP is present on the pattern, the search for further matches
+ If /gP is present on the pattern, the search for further matches
resumes at the end of the longest match. For example:
re> /(tang|tangerine|tan)/g
@@ -401,16 +409,16 @@ OUTPUT FROM THE ALTERNATIVE MATCHING FUNCTION
1: tan
0: tan
- Since the matching function does not support substring capture, the
- escape sequences that are concerned with captured substrings are not
+ Since the matching function does not support substring capture, the
+ escape sequences that are concerned with captured substrings are not
relevant.
RESTARTING AFTER A PARTIAL MATCH
When the alternative matching function has given the PCRE_ERROR_PARTIAL
- return, indicating that the subject partially matched the pattern, you
- can restart the match with additional subject data by means of the \R
+ return, indicating that the subject partially matched the pattern, you
+ can restart the match with additional subject data by means of the \R
escape sequence. For example:
re> /^?(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)$/
@@ -419,30 +427,30 @@ RESTARTING AFTER A PARTIAL MATCH
data> n05\R\D
0: n05
- For further information about partial matching, see the pcrepartial
+ For further information about partial matching, see the pcrepartial
documentation.
CALLOUTS
- If the pattern contains any callout requests, pcretest's callout func-
- tion is called during matching. This works with both matching func-
+ If the pattern contains any callout requests, pcretest's callout func-
+ tion is called during matching. This works with both matching func-
tions. By default, the called function displays the callout number, the
- start and current positions in the text at the callout time, and the
+ start and current positions in the text at the callout time, and the
next pattern item to be tested. For example, the output
--->pqrabcdef
0 ^ ^ \d
- indicates that callout number 0 occurred for a match attempt starting
- at the fourth character of the subject string, when the pointer was at
- the seventh character of the data, and when the next pattern item was
- \d. Just one circumflex is output if the start and current positions
+ indicates that callout number 0 occurred for a match attempt starting
+ at the fourth character of the subject string, when the pointer was at
+ the seventh character of the data, and when the next pattern item was
+ \d. Just one circumflex is output if the start and current positions
are the same.
Callouts numbered 255 are assumed to be automatic callouts, inserted as
- a result of the /C pattern modifier. In this case, instead of showing
- the callout number, the offset in the pattern, preceded by a plus, is
+ a result of the /C pattern modifier. In this case, instead of showing
+ the callout number, the offset in the pattern, preceded by a plus, is
output. For example:
re> /\d?[A-E]\*/C
@@ -454,68 +462,68 @@ CALLOUTS
+10 ^ ^
0: E*
- The callout function in pcretest returns zero (carry on matching) by
- default, but you can use a \C item in a data line (as described above)
+ The callout function in pcretest returns zero (carry on matching) by
+ default, but you can use a \C item in a data line (as described above)
to change this.
- Inserting callouts can be helpful when using pcretest to check compli-
- cated regular expressions. For further information about callouts, see
+ Inserting callouts can be helpful when using pcretest to check compli-
+ cated regular expressions. For further information about callouts, see
the pcrecallout documentation.
SAVING AND RELOADING COMPILED PATTERNS
- The facilities described in this section are not available when the
+ The facilities described in this section are not available when the
POSIX inteface to PCRE is being used, that is, when the /P pattern mod-
ifier is specified.
When the POSIX interface is not in use, you can cause pcretest to write
- a compiled pattern to a file, by following the modifiers with > and a
+ a compiled pattern to a file, by following the modifiers with > and a
file name. For example:
/pattern/im >/some/file
- See the pcreprecompile documentation for a discussion about saving and
+ See the pcreprecompile documentation for a discussion about saving and
re-using compiled patterns.
- The data that is written is binary. The first eight bytes are the
- length of the compiled pattern data followed by the length of the
- optional study data, each written as four bytes in big-endian order
- (most significant byte first). If there is no study data (either the
+ The data that is written is binary. The first eight bytes are the
+ length of the compiled pattern data followed by the length of the
+ optional study data, each written as four bytes in big-endian order
+ (most significant byte first). If there is no study data (either the
pattern was not studied, or studying did not return any data), the sec-
- ond length is zero. The lengths are followed by an exact copy of the
+ ond length is zero. The lengths are followed by an exact copy of the
compiled pattern. If there is additional study data, this follows imme-
- diately after the compiled pattern. After writing the file, pcretest
+ diately after the compiled pattern. After writing the file, pcretest
expects to read a new pattern.
A saved pattern can be reloaded into pcretest by specifing < and a file
- name instead of a pattern. The name of the file must not contain a <
- character, as otherwise pcretest will interpret the line as a pattern
+ name instead of a pattern. The name of the file must not contain a <
+ character, as otherwise pcretest will interpret the line as a pattern
delimited by < characters. For example:
re> </some/file
Compiled regex loaded from /some/file
No study data
- When the pattern has been loaded, pcretest proceeds to read data lines
+ When the pattern has been loaded, pcretest proceeds to read data lines
in the usual way.
- You can copy a file written by pcretest to a different host and reload
- it there, even if the new host has opposite endianness to the one on
- which the pattern was compiled. For example, you can compile on an i86
+ You can copy a file written by pcretest to a different host and reload
+ it there, even if the new host has opposite endianness to the one on
+ which the pattern was compiled. For example, you can compile on an i86
machine and run on a SPARC machine.
- File names for saving and reloading can be absolute or relative, but
- note that the shell facility of expanding a file name that starts with
+ File names for saving and reloading can be absolute or relative, but
+ note that the shell facility of expanding a file name that starts with
a tilde (~) is not available.
- The ability to save and reload files in pcretest is intended for test-
- ing and experimentation. It is not intended for production use because
- only a single pattern can be written to a file. Furthermore, there is
- no facility for supplying custom character tables for use with a
- reloaded pattern. If the original pattern was compiled with custom
- tables, an attempt to match a subject string using a reloaded pattern
- is likely to cause pcretest to crash. Finally, if you attempt to load
+ The ability to save and reload files in pcretest is intended for test-
+ ing and experimentation. It is not intended for production use because
+ only a single pattern can be written to a file. Furthermore, there is
+ no facility for supplying custom character tables for use with a
+ reloaded pattern. If the original pattern was compiled with custom
+ tables, an attempt to match a subject string using a reloaded pattern
+ is likely to cause pcretest to crash. Finally, if you attempt to load
a file that is not in the correct format, the result is undefined.
@@ -525,5 +533,5 @@ AUTHOR
University Computing Service,
Cambridge CB2 3QG, England.
-Last updated: 28 February 2005
-Copyright (c) 1997-2005 University of Cambridge.
+Last updated: 18 January 2006
+Copyright (c) 1997-2006 University of Cambridge.
diff --git a/ltmain.sh b/ltmain.sh
index ed4b44a..8f7a6ac 100644
--- a/ltmain.sh
+++ b/ltmain.sh
@@ -46,8 +46,8 @@ EXIT_FAILURE=1
PROGRAM=ltmain.sh
PACKAGE=libtool
-VERSION=1.5.18
-TIMESTAMP=" (1.1220.2.246 2005/05/16 10:00:18)"
+VERSION=1.5.22
+TIMESTAMP=" (1.1220.2.365 2005/12/18 22:14:06)"
# See if we are running on zsh, and set the options which allow our
# commands through without removal of \ escapes.
@@ -98,14 +98,15 @@ rm="rm -f"
Xsed="${SED}"' -e 1s/^X//'
sed_quote_subst='s/\([\\`\\"$\\\\]\)/\\\1/g'
# test EBCDIC or ASCII
-case `echo A|tr A '\301'` in
- A) # EBCDIC based system
- SP2NL="tr '\100' '\n'"
- NL2SP="tr '\r\n' '\100\100'"
+case `echo X|tr X '\101'` in
+ A) # ASCII based system
+ # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr
+ SP2NL='tr \040 \012'
+ NL2SP='tr \015\012 \040\040'
;;
- *) # Assume ASCII based system
- SP2NL="tr '\040' '\012'"
- NL2SP="tr '\015\012' '\040\040'"
+ *) # EBCDIC based system
+ SP2NL='tr \100 \n'
+ NL2SP='tr \r\n \100\100'
;;
esac
@@ -141,9 +142,10 @@ run=
show="$echo"
show_help=
execute_dlfiles=
+duplicate_deps=no
+preserve_args=
lo2o="s/\\.lo\$/.${objext}/"
o2lo="s/\\.${objext}\$/.lo/"
-quote_scanset='[[~#^*{};<>?'"'"' ]'
if test -z "$max_cmd_len"; then
i=0
@@ -173,6 +175,43 @@ fi
# Shell function definitions:
# This seems to be the best place for them
+# func_mktempdir [string]
+# Make a temporary directory that won't clash with other running
+# libtool processes, and avoids race conditions if possible. If
+# given, STRING is the basename for that directory.
+func_mktempdir ()
+{
+ my_template="${TMPDIR-/tmp}/${1-$progname}"
+
+ if test "$run" = ":"; then
+ # Return a directory name, but don't create it in dry-run mode
+ my_tmpdir="${my_template}-$$"
+ else
+
+ # If mktemp works, use that first and foremost
+ my_tmpdir=`mktemp -d "${my_template}-XXXXXXXX" 2>/dev/null`
+
+ if test ! -d "$my_tmpdir"; then
+ # Failing that, at least try and use $RANDOM to avoid a race
+ my_tmpdir="${my_template}-${RANDOM-0}$$"
+
+ save_mktempdir_umask=`umask`
+ umask 0077
+ $mkdir "$my_tmpdir"
+ umask $save_mktempdir_umask
+ fi
+
+ # If we're not in dry-run mode, bomb out on failure
+ test -d "$my_tmpdir" || {
+ $echo "cannot create temporary directory \`$my_tmpdir'" 1>&2
+ exit $EXIT_FAILURE
+ }
+ fi
+
+ $echo "X$my_tmpdir" | $Xsed
+}
+
+
# func_win32_libid arg
# return the library type of file 'arg'
#
@@ -191,12 +230,11 @@ func_win32_libid ()
if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null | \
$EGREP -e 'file format pe-i386(.*architecture: i386)?' >/dev/null ; then
win32_nmres=`eval $NM -f posix -A $1 | \
- sed -n -e '1,100{/ I /{x;/import/!{s/^/import/;h;p;};x;};}'`
- if test "X$win32_nmres" = "Ximport" ; then
- win32_libid_type="x86 archive import"
- else
- win32_libid_type="x86 archive static"
- fi
+ $SED -n -e '1,100{/ I /{s,.*,import,;p;q;};}'`
+ case $win32_nmres in
+ import*) win32_libid_type="x86 archive import";;
+ *) win32_libid_type="x86 archive static";;
+ esac
fi
;;
*DLL*)
@@ -226,7 +264,7 @@ func_infer_tag ()
CC_quoted=
for arg in $CC; do
case $arg in
- *$quote_scanset* | *]* | *\|* | *\&* | *\(* | *\)* | "")
+ *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
arg="\"$arg\""
;;
esac
@@ -247,7 +285,7 @@ func_infer_tag ()
for arg in $CC; do
# Double-quote args containing other shell metacharacters.
case $arg in
- *$quote_scanset* | *]* | *\|* | *\&* | *\(* | *\)* | "")
+ *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
arg="\"$arg\""
;;
esac
@@ -257,6 +295,9 @@ func_infer_tag ()
trimedcc=`echo ${CC} | $SED -e "s/${host}-//g"`
# and sometimes libtool has CC=<HOST>-gcc but user does CC=gcc
extendcc=${host}-${CC}
+ # and sometimes libtool has CC=<OLDHOST>-gcc but user has CC=<NEWHOST>-gcc
+ # (Gentoo-specific hack because we always export $CHOST)
+ mungedcc=${CHOST-${host}}-${trimedcc}
case "$@ " in
"cc "* | " cc "* | "${host}-cc "* | " ${host}-cc "*|\
"gcc "* | " gcc "* | "${host}-gcc "* | " ${host}-gcc "*)
@@ -264,6 +305,7 @@ func_infer_tag ()
break ;;
"$trimedcc "* | " $trimedcc "* | "`$echo $trimedcc` "* | " `$echo $trimedcc` "*|\
"$extendcc "* | " $extendcc "* | "`$echo $extendcc` "* | " `$echo $extendcc` "*|\
+ "$mungedcc "* | " $mungedcc "* | "`$echo $mungedcc` "* | " `$echo $mungedcc` "*|\
" $CC "* | "$CC "* | " `$echo $CC` "* | "`$echo $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$echo $CC_quoted` "* | "`$echo $CC_quoted` "*)
# The compiler in the base compile command matches
# the one in the tagged configuration.
@@ -339,9 +381,9 @@ func_extract_archives ()
$run ${rm}r "$my_xdir"
$show "$mkdir $my_xdir"
$run $mkdir "$my_xdir"
- status=$?
- if test "$status" -ne 0 && test ! -d "$my_xdir"; then
- exit $status
+ exit_status=$?
+ if test "$exit_status" -ne 0 && test ! -d "$my_xdir"; then
+ exit $exit_status
fi
case $host in
*-darwin*)
@@ -381,7 +423,7 @@ func_extract_archives ()
func_extract_an_archive "$my_xdir" "$my_xabs"
fi # $darwin_arches
fi # $run
- ;;
+ ;;
*)
func_extract_an_archive "$my_xdir" "$my_xabs"
;;
@@ -396,6 +438,8 @@ func_extract_archives ()
# Darwin sucks
eval std_shrext=\"$shrext_cmds\"
+disable_libs=no
+
# Parse our command line options once, thoroughly.
while test "$#" -gt 0
do
@@ -512,7 +556,11 @@ do
preserve_args="$preserve_args $arg"
;;
- --tag) prevopt="--tag" prev=tag ;;
+ --tag)
+ prevopt="--tag"
+ prev=tag
+ preserve_args="$preserve_args --tag"
+ ;;
--tag=*)
set tag "$optarg" ${1+"$@"}
shift
@@ -544,6 +592,18 @@ if test -n "$prevopt"; then
exit $EXIT_FAILURE
fi
+case $disable_libs in
+no)
+ ;;
+shared)
+ build_libtool_libs=no
+ build_old_libs=yes
+ ;;
+static)
+ build_old_libs=`case $build_libtool_libs in yes) echo no;; *) echo yes;; esac`
+ ;;
+esac
+
# If this variable is set in any of the actions, the command in it
# will be execed at the end. This prevents here-documents from being
# left over by shells.
@@ -620,7 +680,7 @@ if test -z "$show_help"; then
for arg
do
- case "$arg_mode" in
+ case $arg_mode in
arg )
# do not "continue". Instead, add this to base_compile
lastarg="$arg"
@@ -671,7 +731,7 @@ if test -z "$show_help"; then
# Many Bourne shells cannot handle close brackets correctly
# in scan sets, so we specify it separately.
case $arg in
- *$quote_scanset* | *]* | *\|* | *\&* | *\(* | *\)* | "")
+ *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
arg="\"$arg\""
;;
esac
@@ -706,7 +766,7 @@ if test -z "$show_help"; then
# in scan sets (worked around with variable expansion),
# and furthermore cannot handle '|' '&' '(' ')' in scan sets
# at all, so we specify them separately.
- *$quote_scanset* | *]* | *\|* | *\&* | *\(* | *\)* | "")
+ *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
lastarg="\"$lastarg\""
;;
esac
@@ -781,13 +841,12 @@ if test -z "$show_help"; then
qlibobj=`$echo "X$libobj" | $Xsed -e "$sed_quote_subst"`
case $qlibobj in
- *$quote_scanset* | *]* | *\|* | *\&* | *\(* | *\)* | "")
+ *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
qlibobj="\"$qlibobj\"" ;;
esac
- if test "X$libobj" != "X$qlibobj"; then
- $echo "$modename: libobj name \`$libobj' may not contain shell special characters."
- exit $EXIT_FAILURE
- fi
+ test "X$libobj" != "X$qlibobj" \
+ && $echo "X$libobj" | grep '[]~#^*{};<>?"'"'"' &()|`$[]' \
+ && $echo "$modename: libobj name \`$libobj' may not contain shell special characters."
objname=`$echo "X$obj" | $Xsed -e 's%^.*/%%'`
xdir=`$echo "X$obj" | $Xsed -e 's%/[^/]*$%%'`
if test "X$xdir" = "X$obj"; then
@@ -868,7 +927,7 @@ compiler."
fi
qsrcfile=`$echo "X$srcfile" | $Xsed -e "$sed_quote_subst"`
case $qsrcfile in
- *$quote_scanset* | *]* | *\|* | *\&* | *\(* | *\)* | "")
+ *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
qsrcfile="\"$qsrcfile\"" ;;
esac
@@ -901,9 +960,9 @@ EOF
if test ! -d "${xdir}$objdir"; then
$show "$mkdir ${xdir}$objdir"
$run $mkdir ${xdir}$objdir
- status=$?
- if test "$status" -ne 0 && test ! -d "${xdir}$objdir"; then
- exit $status
+ exit_status=$?
+ if test "$exit_status" -ne 0 && test ! -d "${xdir}$objdir"; then
+ exit $exit_status
fi
fi
@@ -1106,6 +1165,7 @@ EOF
no_install=no
objs=
non_pic_objects=
+ notinst_path= # paths that contain not-installed libtool libraries
precious_files_regex=
prefer_static_libs=no
preload=no
@@ -1134,14 +1194,15 @@ EOF
if test -n "$link_static_flag"; then
dlopen_self=$dlopen_self_static
fi
+ prefer_static_libs=yes
else
if test -z "$pic_flag" && test -n "$link_static_flag"; then
dlopen_self=$dlopen_self_static
fi
+ prefer_static_libs=built
fi
build_libtool_libs=no
build_old_libs=yes
- prefer_static_libs=yes
break
;;
esac
@@ -1155,7 +1216,7 @@ EOF
arg="$1"
shift
case $arg in
- *$quote_scanset* | *]* | *\|* | *\&* | *\(* | *\)* | "")
+ *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
qarg=\"`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`\" ### testsuite: skip nested quoting test
;;
*) qarg=$arg ;;
@@ -1316,6 +1377,11 @@ EOF
if test -z "$pic_object" || test "$pic_object" = none ; then
arg="$non_pic_object"
fi
+ else
+ # If the PIC object exists, use it instead.
+ # $xdir was prepended to $pic_object above.
+ non_pic_object="$pic_object"
+ non_pic_objects="$non_pic_objects $non_pic_object"
fi
else
# Only an error if not doing a dry-run.
@@ -1399,8 +1465,8 @@ EOF
prev=
continue
;;
- darwin_framework)
- compiler_flags="$compiler_flags $arg"
+ darwin_framework|darwin_framework_skip)
+ test "$prev" = "darwin_framework" && compiler_flags="$compiler_flags $arg"
compile_command="$compile_command $arg"
finalize_command="$finalize_command $arg"
prev=
@@ -1464,13 +1530,17 @@ EOF
continue
;;
- -framework)
- prev=darwin_framework
- compiler_flags="$compiler_flags $arg"
+ -framework|-arch|-isysroot)
+ case " $CC " in
+ *" ${arg} ${1} "* | *" ${arg} ${1} "*)
+ prev=darwin_framework_skip ;;
+ *) compiler_flags="$compiler_flags $arg"
+ prev=darwin_framework ;;
+ esac
compile_command="$compile_command $arg"
finalize_command="$finalize_command $arg"
- continue
- ;;
+ continue
+ ;;
-inst-prefix-dir)
prev=inst_prefix
@@ -1498,7 +1568,8 @@ EOF
absdir=`cd "$dir" && pwd`
if test -z "$absdir"; then
$echo "$modename: cannot determine absolute directory name of \`$dir'" 1>&2
- exit $EXIT_FAILURE
+ absdir="$dir"
+ notinst_path="$notinst_path $dir"
fi
dir="$absdir"
;;
@@ -1512,10 +1583,15 @@ EOF
esac
case $host in
*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*)
+ testbindir=`$echo "X$dir" | $Xsed -e 's*/lib$*/bin*'`
case :$dllsearchpath: in
*":$dir:"*) ;;
*) dllsearchpath="$dllsearchpath:$dir";;
esac
+ case :$dllsearchpath: in
+ *":$testbindir:"*) ;;
+ *) dllsearchpath="$dllsearchpath:$testbindir";;
+ esac
;;
esac
continue
@@ -1524,11 +1600,11 @@ EOF
-l*)
if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then
case $host in
- *-*-cygwin* | *-*-pw32* | *-*-beos*)
+ *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos*)
# These systems don't actually have a C or math library (as such)
continue
;;
- *-*-mingw* | *-*-os2*)
+ *-*-os2*)
# These systems don't actually have a C library (as such)
test "X$arg" = "X-lc" && continue
;;
@@ -1540,6 +1616,15 @@ EOF
# Rhapsody C and math libraries are in the System framework
deplibs="$deplibs -framework System"
continue
+ ;;
+ *-*-sco3.2v5* | *-*-sco5v6*)
+ # Causes problems with __ctype
+ test "X$arg" = "X-lc" && continue
+ ;;
+ *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*)
+ # Compiler inserts libc in the correct place for threads to work
+ test "X$arg" = "X-lc" && continue
+ ;;
esac
elif test "X$arg" = "X-lc_r"; then
case $host in
@@ -1581,21 +1666,24 @@ EOF
# +DA*, +DD* enable 64-bit mode on the HP compiler
# -q* pass through compiler args for the IBM compiler
# -m* pass through architecture-specific compiler args for GCC
- -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*)
+ # -m*, -t[45]*, -txscale* pass through architecture-specific
+ # compiler args for GCC
+ # -pg pass through profiling flag for GCC
+ # @file GCC response files
+ -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*|-pg| \
+ -t[45]*|-txscale*|@*)
# Unknown arguments in both finalize_command and compile_command need
# to be aesthetically quoted because they are evaled later.
arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
case $arg in
- *$quote_scanset* | *]* | *\|* | *\&* | *\(* | *\)* | "")
+ *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
arg="\"$arg\""
;;
esac
compile_command="$compile_command $arg"
finalize_command="$finalize_command $arg"
- if test "$with_gcc" = "yes" ; then
- compiler_flags="$compiler_flags $arg"
- fi
+ compiler_flags="$compiler_flags $arg"
continue
;;
@@ -1703,7 +1791,7 @@ EOF
for flag in $args; do
IFS="$save_ifs"
case $flag in
- *$quote_scanset* | *]* | *\|* | *\&* | *\(* | *\)* | "")
+ *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
flag="\"$flag\""
;;
esac
@@ -1721,7 +1809,7 @@ EOF
for flag in $args; do
IFS="$save_ifs"
case $flag in
- *$quote_scanset* | *]* | *\|* | *\&* | *\(* | *\)* | "")
+ *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
flag="\"$flag\""
;;
esac
@@ -1748,18 +1836,13 @@ EOF
continue
;;
- -Kthread | -mthreads | -mt | -pthread | -pthreads | -threads | -qthreaded | -kthread )
- compiler_flags="$compiler_flags $arg"
- continue
- ;;
-
# Some other compiler flag.
-* | +*)
# Unknown arguments in both finalize_command and compile_command need
# to be aesthetically quoted because they are evaled later.
arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
case $arg in
- *$quote_scanset* | *]* | *\|* | *\&* | *\(* | *\)* | "")
+ *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
arg="\"$arg\""
;;
esac
@@ -1838,6 +1921,11 @@ EOF
if test -z "$pic_object" || test "$pic_object" = none ; then
arg="$non_pic_object"
fi
+ else
+ # If the PIC object exists, use it instead.
+ # $xdir was prepended to $pic_object above.
+ non_pic_object="$pic_object"
+ non_pic_objects="$non_pic_objects $non_pic_object"
fi
else
# Only an error if not doing a dry-run.
@@ -1893,7 +1981,7 @@ EOF
# to be aesthetically quoted because they are evaled later.
arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
case $arg in
- *$quote_scanset* | *]* | *\|* | *\&* | *\(* | *\)* | "")
+ *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
arg="\"$arg\""
;;
esac
@@ -1943,9 +2031,9 @@ EOF
if test ! -d "$output_objdir"; then
$show "$mkdir $output_objdir"
$run $mkdir $output_objdir
- status=$?
- if test "$status" -ne 0 && test ! -d "$output_objdir"; then
- exit $status
+ exit_status=$?
+ if test "$exit_status" -ne 0 && test ! -d "$output_objdir"; then
+ exit $exit_status
fi
fi
@@ -2008,7 +2096,6 @@ EOF
newlib_search_path=
need_relink=no # whether we're linking any uninstalled libtool libraries
notinst_deplibs= # not-installed libtool libraries
- notinst_path= # paths that contain not-installed libtool libraries
case $linkmode in
lib)
passes="conv link"
@@ -2244,7 +2331,7 @@ EOF
esac # case $deplib
if test "$found" = yes || test -f "$lib"; then :
else
- $echo "$modename: cannot find the library \`$lib'" 1>&2
+ $echo "$modename: cannot find the library \`$lib' or unhandled argument \`$deplib'" 1>&2
exit $EXIT_FAILURE
fi
@@ -2458,7 +2545,7 @@ EOF
case "$temp_rpath " in
*" $dir "*) ;;
*" $absdir "*) ;;
- *) temp_rpath="$temp_rpath $dir" ;;
+ *) temp_rpath="$temp_rpath $absdir" ;;
esac
fi
@@ -2495,8 +2582,12 @@ EOF
fi
link_static=no # Whether the deplib will be linked statically
+ use_static_libs=$prefer_static_libs
+ if test "$use_static_libs" = built && test "$installed" = yes ; then
+ use_static_libs=no
+ fi
if test -n "$library_names" &&
- { test "$prefer_static_libs" = no || test -z "$old_library"; }; then
+ { test "$use_static_libs" = no || test -z "$old_library"; }; then
if test "$installed" = no; then
notinst_deplibs="$notinst_deplibs $lib"
need_relink=yes
@@ -2609,11 +2700,15 @@ EOF
if test "$hardcode_direct" = no; then
add="$dir/$linklib"
case $host in
- *-*-sco3.2v5* ) add_dir="-L$dir" ;;
+ *-*-sco3.2v5.0.[024]*) add_dir="-L$dir" ;;
+ *-*-sysv4*uw2*) add_dir="-L$dir" ;;
+ *-*-sysv5OpenUNIX* | *-*-sysv5UnixWare7.[01].[10]* | \
+ *-*-unixware7*) add_dir="-L$dir" ;;
*-*-darwin* )
# if the lib is a module then we can not link against
# it, someone is ignoring the new warnings I added
- if /usr/bin/file -L $add 2> /dev/null | $EGREP "bundle" >/dev/null ; then
+ if /usr/bin/file -L $add 2> /dev/null |
+ $EGREP ": [^:]* bundle" >/dev/null ; then
$echo "** Warning, lib $linklib is a module, not a shared library"
if test -z "$old_library" ; then
$echo
@@ -2644,7 +2739,7 @@ EOF
add_dir="-L$dir"
# Try looking first in the location we're being installed to.
if test -n "$inst_prefix_dir"; then
- case "$libdir" in
+ case $libdir in
[\\/]*)
add_dir="$add_dir -L$inst_prefix_dir$libdir"
;;
@@ -2717,7 +2812,7 @@ EOF
add_dir="-L$libdir"
# Try looking first in the location we're being installed to.
if test -n "$inst_prefix_dir"; then
- case "$libdir" in
+ case $libdir in
[\\/]*)
add_dir="$add_dir -L$inst_prefix_dir$libdir"
;;
@@ -2778,8 +2873,6 @@ EOF
fi
fi
else
- convenience="$convenience $dir/$old_library"
- old_convenience="$old_convenience $dir/$old_library"
deplibs="$dir/$old_library $deplibs"
link_static=yes
fi
@@ -3366,9 +3459,9 @@ EOF
# Eliminate all temporary directories.
for path in $notinst_path; do
- lib_search_path=`$echo "$lib_search_path " | ${SED} -e 's% $path % %g'`
- deplibs=`$echo "$deplibs " | ${SED} -e 's% -L$path % %g'`
- dependency_libs=`$echo "$dependency_libs " | ${SED} -e 's% -L$path % %g'`
+ lib_search_path=`$echo "$lib_search_path " | ${SED} -e "s% $path % %g"`
+ deplibs=`$echo "$deplibs " | ${SED} -e "s% -L$path % %g"`
+ dependency_libs=`$echo "$dependency_libs " | ${SED} -e "s% -L$path % %g"`
done
if test -n "$xrpath"; then
@@ -3421,7 +3514,12 @@ EOF
;;
*-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
# Do not include libc due to us having libc/libc_r.
- test "X$arg" = "X-lc" && continue
+ ;;
+ *-*-sco3.2v5* | *-*-sco5v6*)
+ # Causes problems with __ctype
+ ;;
+ *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*)
+ # Compiler inserts libc in the correct place for threads to work
;;
*)
# Add libc to deplibs on all other systems if necessary.
@@ -3465,11 +3563,11 @@ EOF
int main() { return 0; }
EOF
$rm conftest
- $LTCC -o conftest conftest.c $deplibs
+ $LTCC $LTCFLAGS -o conftest conftest.c $deplibs
if test "$?" -eq 0 ; then
ldd_output=`ldd conftest`
for i in $deplibs; do
- name="`expr $i : '-l\(.*\)'`"
+ name=`expr $i : '-l\(.*\)'`
# If $name is empty we are operating on a -L argument.
if test "$name" != "" && test "$name" -ne "0"; then
if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
@@ -3506,11 +3604,11 @@ EOF
# Error occurred in the first compile. Let's try to salvage
# the situation: Compile a separate program for each library.
for i in $deplibs; do
- name="`expr $i : '-l\(.*\)'`"
+ name=`expr $i : '-l\(.*\)'`
# If $name is empty we are operating on a -L argument.
if test "$name" != "" && test "$name" != "0"; then
$rm conftest
- $LTCC -o conftest conftest.c $i
+ $LTCC $LTCFLAGS -o conftest conftest.c $i
# Did it work?
if test "$?" -eq 0 ; then
ldd_output=`ldd conftest`
@@ -3558,7 +3656,7 @@ EOF
set dummy $deplibs_check_method
file_magic_regex=`expr "$deplibs_check_method" : "$2 \(.*\)"`
for a_deplib in $deplibs; do
- name="`expr $a_deplib : '-l\(.*\)'`"
+ name=`expr $a_deplib : '-l\(.*\)'`
# If $name is empty we are operating on a -L argument.
if test "$name" != "" && test "$name" != "0"; then
if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
@@ -3634,7 +3732,7 @@ EOF
set dummy $deplibs_check_method
match_pattern_regex=`expr "$deplibs_check_method" : "$2 \(.*\)"`
for a_deplib in $deplibs; do
- name="`expr $a_deplib : '-l\(.*\)'`"
+ name=`expr $a_deplib : '-l\(.*\)'`
# If $name is empty we are operating on a -L argument.
if test -n "$name" && test "$name" != "0"; then
if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
@@ -3764,6 +3862,35 @@ EOF
deplibs=$newdeplibs
fi
+
+ # move library search paths that coincide with paths to not yet
+ # installed libraries to the beginning of the library search list
+ new_libs=
+ for path in $notinst_path; do
+ case " $new_libs " in
+ *" -L$path/$objdir "*) ;;
+ *)
+ case " $deplibs " in
+ *" -L$path/$objdir "*)
+ new_libs="$new_libs -L$path/$objdir" ;;
+ esac
+ ;;
+ esac
+ done
+ for deplib in $deplibs; do
+ case $deplib in
+ -L*)
+ case " $new_libs " in
+ *" $deplib "*) ;;
+ *) new_libs="$new_libs $deplib" ;;
+ esac
+ ;;
+ *) new_libs="$new_libs $deplib" ;;
+ esac
+ done
+ deplibs="$new_libs"
+
+
# All the library-specific variables (install_libdir is set above).
library_names=
old_library=
@@ -3847,6 +3974,7 @@ EOF
fi
lib="$output_objdir/$realname"
+ linknames=
for link
do
linknames="$linknames $link"
@@ -3875,6 +4003,9 @@ EOF
# The command line is too long to execute in one step.
$show "using reloadable object file for export list..."
skipped_export=:
+ # Break out early, otherwise skipped_export may be
+ # set to false by a later but shorter cmd.
+ break
fi
done
IFS="$save_ifs"
@@ -3944,7 +4075,8 @@ EOF
fi
fi
- if test "X$skipped_export" != "X:" && len=`expr "X$test_cmds" : ".*"` &&
+ if test "X$skipped_export" != "X:" &&
+ len=`expr "X$test_cmds" : ".*" 2>/dev/null` &&
test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then
:
else
@@ -3979,7 +4111,7 @@ EOF
do
eval test_cmds=\"$reload_cmds $objlist $last_robj\"
if test "X$objlist" = X ||
- { len=`expr "X$test_cmds" : ".*"` &&
+ { len=`expr "X$test_cmds" : ".*" 2>/dev/null` &&
test "$len" -le "$max_cmd_len"; }; then
objlist="$objlist $obj"
else
@@ -4069,13 +4201,30 @@ EOF
IFS="$save_ifs"
eval cmd=\"$cmd\"
$show "$cmd"
- $run eval "$cmd" || exit $?
+ $run eval "$cmd" || {
+ lt_exit=$?
+
+ # Restore the uninstalled library and exit
+ if test "$mode" = relink; then
+ $run eval '(cd $output_objdir && $rm ${realname}T && $mv ${realname}U $realname)'
+ fi
+
+ exit $lt_exit
+ }
done
IFS="$save_ifs"
# Restore the uninstalled library and exit
if test "$mode" = relink; then
$run eval '(cd $output_objdir && $rm ${realname}T && $mv $realname ${realname}T && $mv "$realname"U $realname)' || exit $?
+
+ if test -n "$convenience"; then
+ if test -z "$whole_archive_flag_spec"; then
+ $show "${rm}r $gentop"
+ $run ${rm}r "$gentop"
+ fi
+ fi
+
exit $EXIT_SUCCESS
fi
@@ -4257,6 +4406,35 @@ EOF
;;
esac
+
+ # move library search paths that coincide with paths to not yet
+ # installed libraries to the beginning of the library search list
+ new_libs=
+ for path in $notinst_path; do
+ case " $new_libs " in
+ *" -L$path/$objdir "*) ;;
+ *)
+ case " $compile_deplibs " in
+ *" -L$path/$objdir "*)
+ new_libs="$new_libs -L$path/$objdir" ;;
+ esac
+ ;;
+ esac
+ done
+ for deplib in $compile_deplibs; do
+ case $deplib in
+ -L*)
+ case " $new_libs " in
+ *" $deplib "*) ;;
+ *) new_libs="$new_libs $deplib" ;;
+ esac
+ ;;
+ *) new_libs="$new_libs $deplib" ;;
+ esac
+ done
+ compile_deplibs="$new_libs"
+
+
compile_command="$compile_command $compile_deplibs"
finalize_command="$finalize_command $finalize_deplibs"
@@ -4301,10 +4479,15 @@ EOF
fi
case $host in
*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*)
+ testbindir=`$echo "X$libdir" | $Xsed -e 's*/lib$*/bin*'`
case :$dllsearchpath: in
*":$libdir:"*) ;;
*) dllsearchpath="$dllsearchpath:$libdir";;
esac
+ case :$dllsearchpath: in
+ *":$testbindir:"*) ;;
+ *) dllsearchpath="$dllsearchpath:$testbindir";;
+ esac
;;
esac
done
@@ -4420,11 +4603,23 @@ extern \"C\" {
if test -z "$export_symbols"; then
export_symbols="$output_objdir/$outputname.exp"
$run $rm $export_symbols
- $run eval "${SED} -n -e '/^: @PROGRAM@$/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"'
+ $run eval "${SED} -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"'
+ case $host in
+ *cygwin* | *mingw* )
+ $run eval "echo EXPORTS "'> "$output_objdir/$outputname.def"'
+ $run eval 'cat "$export_symbols" >> "$output_objdir/$outputname.def"'
+ ;;
+ esac
else
- $run eval "${SED} -e 's/\([ ][.*^$]\)/\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"'
+ $run eval "${SED} -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"'
$run eval 'grep -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T'
$run eval 'mv "$nlist"T "$nlist"'
+ case $host in
+ *cygwin* | *mingw* )
+ $run eval "echo EXPORTS "'> "$output_objdir/$outputname.def"'
+ $run eval 'cat "$nlist" >> "$output_objdir/$outputname.def"'
+ ;;
+ esac
fi
fi
@@ -4541,16 +4736,29 @@ static const void *lt_preloaded_setup() {
esac
# Now compile the dynamic symbol file.
- $show "(cd $output_objdir && $LTCC -c$no_builtin_flag$pic_flag_for_symtable \"$dlsyms\")"
- $run eval '(cd $output_objdir && $LTCC -c$no_builtin_flag$pic_flag_for_symtable "$dlsyms")' || exit $?
+ $show "(cd $output_objdir && $LTCC $LTCFLAGS -c$no_builtin_flag$pic_flag_for_symtable \"$dlsyms\")"
+ $run eval '(cd $output_objdir && $LTCC $LTCFLAGS -c$no_builtin_flag$pic_flag_for_symtable "$dlsyms")' || exit $?
# Clean up the generated files.
$show "$rm $output_objdir/$dlsyms $nlist ${nlist}S ${nlist}T"
$run $rm "$output_objdir/$dlsyms" "$nlist" "${nlist}S" "${nlist}T"
# Transform the symbol file into the correct name.
- compile_command=`$echo "X$compile_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%"`
- finalize_command=`$echo "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%"`
+ case $host in
+ *cygwin* | *mingw* )
+ if test -f "$output_objdir/${outputname}.def" ; then
+ compile_command=`$echo "X$compile_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}.def $output_objdir/${outputname}S.${objext}%"`
+ finalize_command=`$echo "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}.def $output_objdir/${outputname}S.${objext}%"`
+ else
+ compile_command=`$echo "X$compile_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%"`
+ finalize_command=`$echo "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%"`
+ fi
+ ;;
+ * )
+ compile_command=`$echo "X$compile_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%"`
+ finalize_command=`$echo "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%"`
+ ;;
+ esac
;;
*)
$echo "$modename: unknown suffix for \`$dlsyms'" 1>&2
@@ -4575,7 +4783,7 @@ static const void *lt_preloaded_setup() {
# We have no uninstalled library dependencies, so finalize right now.
$show "$link_command"
$run eval "$link_command"
- status=$?
+ exit_status=$?
# Delete the generated files.
if test -n "$dlsyms"; then
@@ -4583,7 +4791,7 @@ static const void *lt_preloaded_setup() {
$run $rm "$output_objdir/${outputname}S.${objext}"
fi
- exit $status
+ exit $exit_status
fi
if test -n "$shlibpath_var"; then
@@ -4723,10 +4931,12 @@ static const void *lt_preloaded_setup() {
esac
case $host in
*cygwin* | *mingw* )
- cwrappersource=`$echo ${objdir}/lt-${outputname}.c`
- cwrapper=`$echo ${output}.exe`
- $rm $cwrappersource $cwrapper
- trap "$rm $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15
+ output_name=`basename $output`
+ output_path=`dirname $output`
+ cwrappersource="$output_path/$objdir/lt-$output_name.c"
+ cwrapper="$output_path/$output_name.exe"
+ $rm $cwrappersource $cwrapper
+ trap "$rm $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15
cat > $cwrappersource <<EOF
@@ -4751,6 +4961,9 @@ EOF
#include <malloc.h>
#include <stdarg.h>
#include <assert.h>
+#include <string.h>
+#include <ctype.h>
+#include <sys/stat.h>
#if defined(PATH_MAX)
# define LT_PATHMAX PATH_MAX
@@ -4761,15 +4974,19 @@ EOF
#endif
#ifndef DIR_SEPARATOR
-#define DIR_SEPARATOR '/'
+# define DIR_SEPARATOR '/'
+# define PATH_SEPARATOR ':'
#endif
#if defined (_WIN32) || defined (__MSDOS__) || defined (__DJGPP__) || \
defined (__OS2__)
-#define HAVE_DOS_BASED_FILE_SYSTEM
-#ifndef DIR_SEPARATOR_2
-#define DIR_SEPARATOR_2 '\\'
-#endif
+# define HAVE_DOS_BASED_FILE_SYSTEM
+# ifndef DIR_SEPARATOR_2
+# define DIR_SEPARATOR_2 '\\'
+# endif
+# ifndef PATH_SEPARATOR_2
+# define PATH_SEPARATOR_2 ';'
+# endif
#endif
#ifndef DIR_SEPARATOR_2
@@ -4779,17 +4996,32 @@ EOF
(((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2))
#endif /* DIR_SEPARATOR_2 */
+#ifndef PATH_SEPARATOR_2
+# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR)
+#else /* PATH_SEPARATOR_2 */
+# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR_2)
+#endif /* PATH_SEPARATOR_2 */
+
#define XMALLOC(type, num) ((type *) xmalloc ((num) * sizeof(type)))
#define XFREE(stale) do { \
if (stale) { free ((void *) stale); stale = 0; } \
} while (0)
+/* -DDEBUG is fairly common in CFLAGS. */
+#undef DEBUG
+#if defined DEBUGWRAPPER
+# define DEBUG(format, ...) fprintf(stderr, format, __VA_ARGS__)
+#else
+# define DEBUG(format, ...)
+#endif
+
const char *program_name = NULL;
void * xmalloc (size_t num);
char * xstrdup (const char *string);
-char * basename (const char *name);
-char * fnqualify(const char *path);
+const char * base_name (const char *name);
+char * find_executable(const char *wrapper);
+int check_executable(const char *path);
char * strendzap(char *str, const char *pat);
void lt_fatal (const char *message, ...);
@@ -4799,29 +5031,51 @@ main (int argc, char *argv[])
char **newargz;
int i;
- program_name = (char *) xstrdup ((char *) basename (argv[0]));
+ program_name = (char *) xstrdup (base_name (argv[0]));
+ DEBUG("(main) argv[0] : %s\n",argv[0]);
+ DEBUG("(main) program_name : %s\n",program_name);
newargz = XMALLOC(char *, argc+2);
EOF
- cat >> $cwrappersource <<EOF
- newargz[0] = "$SHELL";
+ cat >> $cwrappersource <<EOF
+ newargz[0] = (char *) xstrdup("$SHELL");
EOF
- cat >> $cwrappersource <<"EOF"
- newargz[1] = fnqualify(argv[0]);
+ cat >> $cwrappersource <<"EOF"
+ newargz[1] = find_executable(argv[0]);
+ if (newargz[1] == NULL)
+ lt_fatal("Couldn't find %s", argv[0]);
+ DEBUG("(main) found exe at : %s\n",newargz[1]);
/* we know the script has the same name, without the .exe */
/* so make sure newargz[1] doesn't end in .exe */
strendzap(newargz[1],".exe");
for (i = 1; i < argc; i++)
newargz[i+1] = xstrdup(argv[i]);
newargz[argc+1] = NULL;
+
+ for (i=0; i<argc+1; i++)
+ {
+ DEBUG("(main) newargz[%d] : %s\n",i,newargz[i]);
+ ;
+ }
+
EOF
- cat >> $cwrappersource <<EOF
+ case $host_os in
+ mingw*)
+ cat >> $cwrappersource <<EOF
+ execv("$SHELL",(char const **)newargz);
+EOF
+ ;;
+ *)
+ cat >> $cwrappersource <<EOF
execv("$SHELL",newargz);
EOF
+ ;;
+ esac
- cat >> $cwrappersource <<"EOF"
+ cat >> $cwrappersource <<"EOF"
+ return 127;
}
void *
@@ -4841,48 +5095,148 @@ xstrdup (const char *string)
;
}
-char *
-basename (const char *name)
+const char *
+base_name (const char *name)
{
const char *base;
#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
/* Skip over the disk name in MSDOS pathnames. */
- if (isalpha (name[0]) && name[1] == ':')
+ if (isalpha ((unsigned char)name[0]) && name[1] == ':')
name += 2;
#endif
for (base = name; *name; name++)
if (IS_DIR_SEPARATOR (*name))
base = name + 1;
- return (char *) base;
+ return base;
}
+int
+check_executable(const char * path)
+{
+ struct stat st;
+
+ DEBUG("(check_executable) : %s\n", path ? (*path ? path : "EMPTY!") : "NULL!");
+ if ((!path) || (!*path))
+ return 0;
+
+ if ((stat (path, &st) >= 0) &&
+ (
+ /* MinGW & native WIN32 do not support S_IXOTH or S_IXGRP */
+#if defined (S_IXOTH)
+ ((st.st_mode & S_IXOTH) == S_IXOTH) ||
+#endif
+#if defined (S_IXGRP)
+ ((st.st_mode & S_IXGRP) == S_IXGRP) ||
+#endif
+ ((st.st_mode & S_IXUSR) == S_IXUSR))
+ )
+ return 1;
+ else
+ return 0;
+}
+
+/* Searches for the full path of the wrapper. Returns
+ newly allocated full path name if found, NULL otherwise */
char *
-fnqualify(const char *path)
+find_executable (const char* wrapper)
{
- size_t size;
- char *p;
+ int has_slash = 0;
+ const char* p;
+ const char* p_next;
+ /* static buffer for getcwd */
char tmp[LT_PATHMAX + 1];
+ int tmp_len;
+ char* concat_name;
+
+ DEBUG("(find_executable) : %s\n", wrapper ? (*wrapper ? wrapper : "EMPTY!") : "NULL!");
- assert(path != NULL);
+ if ((wrapper == NULL) || (*wrapper == '\0'))
+ return NULL;
- /* Is it qualified already? */
+ /* Absolute path? */
#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
- if (isalpha (path[0]) && path[1] == ':')
- return xstrdup (path);
+ if (isalpha ((unsigned char)wrapper[0]) && wrapper[1] == ':')
+ {
+ concat_name = xstrdup (wrapper);
+ if (check_executable(concat_name))
+ return concat_name;
+ XFREE(concat_name);
+ }
+ else
+ {
+#endif
+ if (IS_DIR_SEPARATOR (wrapper[0]))
+ {
+ concat_name = xstrdup (wrapper);
+ if (check_executable(concat_name))
+ return concat_name;
+ XFREE(concat_name);
+ }
+#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
+ }
#endif
- if (IS_DIR_SEPARATOR (path[0]))
- return xstrdup (path);
- /* prepend the current directory */
- /* doesn't handle '~' */
+ for (p = wrapper; *p; p++)
+ if (*p == '/')
+ {
+ has_slash = 1;
+ break;
+ }
+ if (!has_slash)
+ {
+ /* no slashes; search PATH */
+ const char* path = getenv ("PATH");
+ if (path != NULL)
+ {
+ for (p = path; *p; p = p_next)
+ {
+ const char* q;
+ size_t p_len;
+ for (q = p; *q; q++)
+ if (IS_PATH_SEPARATOR(*q))
+ break;
+ p_len = q - p;
+ p_next = (*q == '\0' ? q : q + 1);
+ if (p_len == 0)
+ {
+ /* empty path: current directory */
+ if (getcwd (tmp, LT_PATHMAX) == NULL)
+ lt_fatal ("getcwd failed");
+ tmp_len = strlen(tmp);
+ concat_name = XMALLOC(char, tmp_len + 1 + strlen(wrapper) + 1);
+ memcpy (concat_name, tmp, tmp_len);
+ concat_name[tmp_len] = '/';
+ strcpy (concat_name + tmp_len + 1, wrapper);
+ }
+ else
+ {
+ concat_name = XMALLOC(char, p_len + 1 + strlen(wrapper) + 1);
+ memcpy (concat_name, p, p_len);
+ concat_name[p_len] = '/';
+ strcpy (concat_name + p_len + 1, wrapper);
+ }
+ if (check_executable(concat_name))
+ return concat_name;
+ XFREE(concat_name);
+ }
+ }
+ /* not found in PATH; assume curdir */
+ }
+ /* Relative path | not found in path: prepend cwd */
if (getcwd (tmp, LT_PATHMAX) == NULL)
lt_fatal ("getcwd failed");
- size = strlen(tmp) + 1 + strlen(path) + 1; /* +2 for '/' and '\0' */
- p = XMALLOC(char, size);
- sprintf(p, "%s%c%s", tmp, DIR_SEPARATOR, path);
- return p;
+ tmp_len = strlen(tmp);
+ concat_name = XMALLOC(char, tmp_len + 1 + strlen(wrapper) + 1);
+ memcpy (concat_name, tmp, tmp_len);
+ concat_name[tmp_len] = '/';
+ strcpy (concat_name + tmp_len + 1, wrapper);
+
+ if (check_executable(concat_name))
+ return concat_name;
+ XFREE(concat_name);
+ return NULL;
}
char *
@@ -4926,16 +5280,16 @@ lt_fatal (const char *message, ...)
va_end (ap);
}
EOF
- # we should really use a build-platform specific compiler
- # here, but OTOH, the wrappers (shell script and this C one)
- # are only useful if you want to execute the "real" binary.
- # Since the "real" binary is built for $host, then this
- # wrapper might as well be built for $host, too.
- $run $LTCC -s -o $cwrapper $cwrappersource
- ;;
- esac
- $rm $output
- trap "$rm $output; exit $EXIT_FAILURE" 1 2 15
+ # we should really use a build-platform specific compiler
+ # here, but OTOH, the wrappers (shell script and this C one)
+ # are only useful if you want to execute the "real" binary.
+ # Since the "real" binary is built for $host, then this
+ # wrapper might as well be built for $host, too.
+ $run $LTCC $LTCFLAGS -s -o $cwrapper $cwrappersource
+ ;;
+ esac
+ $rm $output
+ trap "$rm $output; exit $EXIT_FAILURE" 1 2 15
$echo > $output "\
#! $SHELL
@@ -5080,18 +5434,23 @@ else
$echo >> $output "\
if test \"\$libtool_execute_magic\" != \"$magic\"; then
# Run the actual program with our arguments.
+
+ # Make sure env LD_LIBRARY_PATH does not mess us up
+ if test -n \"\${LD_LIBRARY_PATH+set}\"; then
+ export LD_LIBRARY_PATH=\$progdir:\$LD_LIBRARY_PATH
+ fi
"
case $host in
# Backslashes separate directories on plain windows
*-*-mingw | *-*-os2*)
$echo >> $output "\
- exec \$progdir\\\\\$program \${1+\"\$@\"}
+ exec \"\$progdir\\\\\$program\" \${1+\"\$@\"}
"
;;
*)
$echo >> $output "\
- exec \$progdir/\$program \${1+\"\$@\"}
+ exec \"\$progdir/\$program\" \${1+\"\$@\"}
"
;;
esac
@@ -5101,7 +5460,7 @@ else
fi
else
# The program doesn't exist.
- \$echo \"\$0: error: \$progdir/\$program does not exist\" 1>&2
+ \$echo \"\$0: error: \\\`\$progdir/\$program' does not exist\" 1>&2
\$echo \"This script is just a wrapper for \$program.\" 1>&2
$echo \"See the $PACKAGE documentation for more information.\" 1>&2
exit $EXIT_FAILURE
@@ -5165,9 +5524,9 @@ fi\
$run ${rm}r "$gentop"
$show "$mkdir $gentop"
$run $mkdir "$gentop"
- status=$?
- if test "$status" -ne 0 && test ! -d "$gentop"; then
- exit $status
+ exit_status=$?
+ if test "$exit_status" -ne 0 && test ! -d "$gentop"; then
+ exit $exit_status
fi
fi
@@ -5224,7 +5583,7 @@ fi\
oldobjs="$objlist $obj"
objlist="$objlist $obj"
eval test_cmds=\"$old_archive_cmds\"
- if len=`expr "X$test_cmds" : ".*"` &&
+ if len=`expr "X$test_cmds" : ".*" 2>/dev/null` &&
test "$len" -le "$max_cmd_len"; then
:
else
@@ -5334,10 +5693,10 @@ fi\
fi
# We do not want portage's build root ($S) present.
my_little_ninja_foo_2=`echo $deplib |$EGREP -e "$S"`
- if test -n "$my_little_ninja_foo_2" && test "$S"; then
- mynewdependency_lib=""
# We do not want portage's install root ($D) present.
my_little_ninja_foo_3=`echo $deplib |$EGREP -e "$D"`
+ if test -n "$my_little_ninja_foo_2" && test "$S"; then
+ mynewdependency_lib=""
elif test -n "$my_little_ninja_foo_3" && test "$D"; then
eval mynewdependency_lib=`echo "$deplib" |sed -e "s:$D:/:g" -e 's:/\+:/:g'`
else
@@ -5469,11 +5828,11 @@ relink_command=\"$relink_command\""
# install_prog (especially on Windows NT).
if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh ||
# Allow the use of GNU shtool's install command.
- $echo "X$nonopt" | $Xsed | grep shtool > /dev/null; then
+ $echo "X$nonopt" | grep shtool > /dev/null; then
# Aesthetically quote it.
arg=`$echo "X$nonopt" | $Xsed -e "$sed_quote_subst"`
case $arg in
- *$quote_scanset* | *]* | *\|* | *\&* | *\(* | *\)* | "")
+ *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
arg="\"$arg\""
;;
esac
@@ -5482,14 +5841,14 @@ relink_command=\"$relink_command\""
shift
else
install_prog=
- arg="$nonopt"
+ arg=$nonopt
fi
# The real first argument should be the name of the installation program.
# Aesthetically quote it.
arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
case $arg in
- *$quote_scanset* | *]* | *\|* | *\&* | *\(* | *\)* | "")
+ *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
arg="\"$arg\""
;;
esac
@@ -5507,28 +5866,31 @@ relink_command=\"$relink_command\""
do
if test -n "$dest"; then
files="$files $dest"
- dest="$arg"
+ dest=$arg
continue
fi
case $arg in
-d) isdir=yes ;;
- -f) prev="-f" ;;
- -g) prev="-g" ;;
- -m) prev="-m" ;;
- -o) prev="-o" ;;
+ -f)
+ case " $install_prog " in
+ *[\\\ /]cp\ *) ;;
+ *) prev=$arg ;;
+ esac
+ ;;
+ -g | -m | -o) prev=$arg ;;
-s)
stripme=" -s"
continue
;;
- -*) ;;
-
+ -*)
+ ;;
*)
# If the previous option needed an argument, then skip it.
if test -n "$prev"; then
prev=
else
- dest="$arg"
+ dest=$arg
continue
fi
;;
@@ -5537,7 +5899,7 @@ relink_command=\"$relink_command\""
# Aesthetically quote the argument.
arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
case $arg in
- *$quote_scanset* | *]* | *\|* | *\&* | *\(* | *\)* | "")
+ *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
arg="\"$arg\""
;;
esac
@@ -5706,11 +6068,14 @@ relink_command=\"$relink_command\""
if test "$#" -gt 0; then
# Delete the old symlinks, and create new ones.
+ # Try `ln -sf' first, because the `ln' binary might depend on
+ # the symlink we replace! Solaris /bin/ln does not understand -f,
+ # so we also need to try rm && ln -s.
for linkname
do
if test "$linkname" != "$realname"; then
- $show "(cd $destdir && $rm $linkname && $LN_S $realname $linkname)"
- $run eval "(cd $destdir && $rm $linkname && $LN_S $realname $linkname)"
+ $show "(cd $destdir && { $LN_S -f $realname $linkname || { $rm $linkname && $LN_S $realname $linkname; }; })"
+ $run eval "(cd $destdir && { $LN_S -f $realname $linkname || { $rm $linkname && $LN_S $realname $linkname; }; })"
fi
done
fi
@@ -5723,7 +6088,16 @@ relink_command=\"$relink_command\""
IFS="$save_ifs"
eval cmd=\"$cmd\"
$show "$cmd"
- $run eval "$cmd" || exit $?
+ $run eval "$cmd" || {
+ lt_exit=$?
+
+ # Restore the uninstalled library and exit
+ if test "$mode" = relink; then
+ $run eval '(cd $output_objdir && $rm ${realname}T && $mv ${realname}U $realname)'
+ fi
+
+ exit $lt_exit
+ }
done
IFS="$save_ifs"
fi
@@ -5817,17 +6191,15 @@ relink_command=\"$relink_command\""
notinst_deplibs=
relink_command=
- # To insure that "foo" is sourced, and not "foo.exe",
- # finese the cygwin/MSYS system by explicitly sourcing "foo."
- # which disallows the automatic-append-.exe behavior.
- case $build in
- *cygwin* | *mingw*) wrapperdot=${wrapper}. ;;
- *) wrapperdot=${wrapper} ;;
- esac
+ # Note that it is not necessary on cygwin/mingw to append a dot to
+ # foo even if both foo and FILE.exe exist: automatic-append-.exe
+ # behavior happens only for exec(3), not for open(2)! Also, sourcing
+ # `FILE.' does not work on cygwin managed mounts.
+ #
# If there is no directory component, then add one.
- case $file in
- */* | *\\*) . ${wrapperdot} ;;
- *) . ./${wrapperdot} ;;
+ case $wrapper in
+ */* | *\\*) . ${wrapper} ;;
+ *) . ./${wrapper} ;;
esac
# Check the variables that should have been set.
@@ -5855,34 +6227,21 @@ relink_command=\"$relink_command\""
done
relink_command=
- # To insure that "foo" is sourced, and not "foo.exe",
- # finese the cygwin/MSYS system by explicitly sourcing "foo."
- # which disallows the automatic-append-.exe behavior.
- case $build in
- *cygwin* | *mingw*) wrapperdot=${wrapper}. ;;
- *) wrapperdot=${wrapper} ;;
- esac
+ # Note that it is not necessary on cygwin/mingw to append a dot to
+ # foo even if both foo and FILE.exe exist: automatic-append-.exe
+ # behavior happens only for exec(3), not for open(2)! Also, sourcing
+ # `FILE.' does not work on cygwin managed mounts.
+ #
# If there is no directory component, then add one.
- case $file in
- */* | *\\*) . ${wrapperdot} ;;
- *) . ./${wrapperdot} ;;
+ case $wrapper in
+ */* | *\\*) . ${wrapper} ;;
+ *) . ./${wrapper} ;;
esac
outputname=
if test "$fast_install" = no && test -n "$relink_command"; then
if test "$finalize" = yes && test -z "$run"; then
- tmpdir="/tmp"
- test -n "$TMPDIR" && tmpdir="$TMPDIR"
- tmpdir="$tmpdir/libtool-$$"
- save_umask=`umask`
- umask 0077
- if $mkdir "$tmpdir"; then
- umask $save_umask
- else
- umask $save_umask
- $echo "$modename: error: cannot create temporary directory \`$tmpdir'" 1>&2
- continue
- fi
+ tmpdir=`func_mktempdir`
file=`$echo "X$file$stripped_ext" | $Xsed -e 's%^.*/%%'`
outputname="$tmpdir/$file"
# Replace the output file specification.
@@ -5906,7 +6265,7 @@ relink_command=\"$relink_command\""
fi
# remove .exe since cygwin /usr/bin/install will append another
- # one anyways
+ # one anyway
case $install_prog,$host in
*/usr/bin/install*,*cygwin*)
case $file:$destfile in
@@ -6006,7 +6365,7 @@ relink_command=\"$relink_command\""
# Exit here if they wanted silent mode.
test "$show" = : && exit $EXIT_SUCCESS
- $echo "----------------------------------------------------------------------"
+ $echo "X----------------------------------------------------------------------" | $Xsed
$echo "Libraries have been installed in:"
for libdir in $libdirs; do
$echo " $libdir"
@@ -6039,7 +6398,7 @@ relink_command=\"$relink_command\""
$echo
$echo "See any operating system documentation about shared libraries for"
$echo "more information, such as the ld(1) and ld.so(8) manual pages."
- $echo "----------------------------------------------------------------------"
+ $echo "X----------------------------------------------------------------------" | $Xsed
exit $EXIT_SUCCESS
;;
@@ -6256,9 +6615,17 @@ relink_command=\"$relink_command\""
rmfiles="$rmfiles $objdir/$n"
done
test -n "$old_library" && rmfiles="$rmfiles $objdir/$old_library"
- test "$mode" = clean && rmfiles="$rmfiles $objdir/$name $objdir/${name}i"
- if test "$mode" = uninstall; then
+ case "$mode" in
+ clean)
+ case " $library_names " in
+ # " " in the beginning catches empty $dlname
+ *" $dlname "*) ;;
+ *) rmfiles="$rmfiles $objdir/$dlname" ;;
+ esac
+ test -n "$libdir" && rmfiles="$rmfiles $objdir/$name $objdir/${name}i"
+ ;;
+ uninstall)
if test -n "$library_names"; then
# Do each command in the postuninstall commands.
cmds=$postuninstall_cmds
@@ -6291,7 +6658,8 @@ relink_command=\"$relink_command\""
IFS="$save_ifs"
fi
# FIXME: should reinstall the best remaining shared library.
- fi
+ ;;
+ esac
fi
;;
@@ -6590,12 +6958,11 @@ exit $?
# configuration. But we'll never go from static-only to shared-only.
# ### BEGIN LIBTOOL TAG CONFIG: disable-shared
-build_libtool_libs=no
-build_old_libs=yes
+disable_libs=shared
# ### END LIBTOOL TAG CONFIG: disable-shared
# ### BEGIN LIBTOOL TAG CONFIG: disable-static
-build_old_libs=`case $build_libtool_libs in yes) $echo no;; *) $echo yes;; esac`
+disable_libs=static
# ### END LIBTOOL TAG CONFIG: disable-static
# Local Variables:
diff --git a/pcre.def b/pcre.def
index adb5316..ec2c7b3 100644
--- a/pcre.def
+++ b/pcre.def
@@ -4,16 +4,22 @@ pcre_malloc DATA
pcre_free DATA
pcre_compile
+pcre_compile2
+pcre_config
+pcre_copy_named_substring
pcre_copy_substring
pcre_dfa_exec
pcre_exec
-pcre_get_substring
-pcre_get_substring_list
pcre_free_substring
pcre_free_substring_list
-pcre_info
pcre_fullinfo
+pcre_get_named_substring
+pcre_get_stringnumber
+pcre_get_substring
+pcre_get_substring_list
+pcre_info
pcre_maketables
+pcre_refcount
pcre_study
pcre_version
diff --git a/pcre.h.in b/pcre.h
index be1546c..2e526d6 100644
--- a/pcre.h.in
+++ b/pcre.h
@@ -2,8 +2,8 @@
* Perl-Compatible Regular Expressions *
*************************************************/
-/* In its original form, this is the .in file that is transformed by
-"configure" into pcre.h.
+/* This is the public header file for the PCRE library, to be #included by
+applications that call the PCRE functions.
Copyright (c) 1997-2005 University of Cambridge
@@ -39,12 +39,23 @@ POSSIBILITY OF SUCH DAMAGE.
#ifndef _PCRE_H
#define _PCRE_H
-/* The file pcre.h is build by "configure". Do not edit it; instead
-make changes to pcre.in. */
+/* The current PCRE version information. */
-#define PCRE_MAJOR @PCRE_MAJOR@
-#define PCRE_MINOR @PCRE_MINOR@
-#define PCRE_DATE @PCRE_DATE@
+/* NOTES FOR FUTURE MAINTAINERS: Do not use numbers with leading zeros, because
+they may be treated as octal constants. The PCRE_PRERELEASE feature is for
+identifying release candidates. It might be defined as -RC2, for example. In
+real releases, it should be defined empty. Do not change the alignment of these
+statments. The code in ./configure greps out the version numbers by using "cut"
+to get values from column 29 onwards. These are substituted into pcre-config
+and libpcre.pc. The values are not put into configure.ac and substituted here
+(which would simplify this issue) because that makes life harder for those who
+cannot run ./configure. As it now stands, this file need not be edited in that
+circumstance. */
+
+#define PCRE_MAJOR 6
+#define PCRE_MINOR 5
+#define PCRE_PRERELEASE
+#define PCRE_DATE 01-Feb-2006
/* Win32 uses DLL by default; it needs special stuff for exported functions. */
@@ -125,6 +136,7 @@ extern "C" {
#define PCRE_ERROR_DFA_UMLIMIT (-18)
#define PCRE_ERROR_DFA_WSSIZE (-19)
#define PCRE_ERROR_DFA_RECURSE (-20)
+#define PCRE_ERROR_RECURSIONLIMIT (-21)
/* Request types for pcre_fullinfo() */
@@ -142,7 +154,8 @@ extern "C" {
#define PCRE_INFO_STUDYSIZE 10
#define PCRE_INFO_DEFAULT_TABLES 11
-/* Request types for pcre_config() */
+/* Request types for pcre_config(). Do not re-arrange, in order to remain
+compatible. */
#define PCRE_CONFIG_UTF8 0
#define PCRE_CONFIG_NEWLINE 1
@@ -151,19 +164,30 @@ extern "C" {
#define PCRE_CONFIG_MATCH_LIMIT 4
#define PCRE_CONFIG_STACKRECURSE 5
#define PCRE_CONFIG_UNICODE_PROPERTIES 6
+#define PCRE_CONFIG_MATCH_LIMIT_RECURSION 7
-/* Bit flags for the pcre_extra structure */
+/* Bit flags for the pcre_extra structure. Do not re-arrange or redefine
+these bits, just add new ones on the end, in order to remain compatible. */
-#define PCRE_EXTRA_STUDY_DATA 0x0001
-#define PCRE_EXTRA_MATCH_LIMIT 0x0002
-#define PCRE_EXTRA_CALLOUT_DATA 0x0004
-#define PCRE_EXTRA_TABLES 0x0008
+#define PCRE_EXTRA_STUDY_DATA 0x0001
+#define PCRE_EXTRA_MATCH_LIMIT 0x0002
+#define PCRE_EXTRA_CALLOUT_DATA 0x0004
+#define PCRE_EXTRA_TABLES 0x0008
+#define PCRE_EXTRA_MATCH_LIMIT_RECURSION 0x0010
/* Types */
struct real_pcre; /* declaration; the definition is private */
typedef struct real_pcre pcre;
+/* When PCRE is compiled as a C++ library, the subject pointer type can be
+replaced with a custom type. For conventional use, the public interface is a
+const char *. */
+
+#ifndef PCRE_SPTR
+#define PCRE_SPTR const char *
+#endif
+
/* The structure for passing additional data to pcre_exec(). This is defined in
such as way as to be extensible. Always add new fields at the end, in order to
remain compatible. */
@@ -174,6 +198,7 @@ typedef struct pcre_extra {
unsigned long int match_limit; /* Maximum number of calls to match() */
void *callout_data; /* Data passed back in callouts */
const unsigned char *tables; /* Pointer to character tables */
+ unsigned long int match_limit_recursion; /* Max recursive calls to match() */
} pcre_extra;
/* The structure for passing out data via the pcre_callout_function. We use a
@@ -186,7 +211,7 @@ typedef struct pcre_callout_block {
/* ------------------------ Version 0 ------------------------------- */
int callout_number; /* Number compiled into pattern */
int *offset_vector; /* The offset vector */
- const char *subject; /* The subject being matched */
+ PCRE_SPTR subject; /* The subject being matched */
int subject_length; /* The length of the subject */
int start_match; /* Offset to start of this match attempt */
int current_position; /* Where we currently are in the subject */
@@ -232,7 +257,7 @@ PCRE_DATA_SCOPE int pcre_copy_substring(const char *, int *, int, int, char *,
int);
PCRE_DATA_SCOPE int pcre_dfa_exec(const pcre *, const pcre_extra *,
const char *, int, int, int, int *, int , int *, int);
-PCRE_DATA_SCOPE int pcre_exec(const pcre *, const pcre_extra *, const char *,
+PCRE_DATA_SCOPE int pcre_exec(const pcre *, const pcre_extra *, PCRE_SPTR,
int, int, int, int *, int);
PCRE_DATA_SCOPE void pcre_free_substring(const char *);
PCRE_DATA_SCOPE void pcre_free_substring_list(const char **);
diff --git a/pcre_compile.c b/pcre_compile.c
index 9850399..0bbc7f5 100644
--- a/pcre_compile.c
+++ b/pcre_compile.c
@@ -6,7 +6,7 @@
and semantics are as close as possible to those of the Perl 5 language.
Written by Philip Hazel
- Copyright (c) 1997-2005 University of Cambridge
+ Copyright (c) 1997-2006 University of Cambridge
-----------------------------------------------------------------------------
Redistribution and use in source and binary forms, with or without
@@ -116,7 +116,7 @@ static const short int escapes[] = {
/* Tables of names of POSIX character classes and their lengths. The list is
-terminated by a zero length entry. The first three must be alpha, upper, lower,
+terminated by a zero length entry. The first three must be alpha, lower, upper,
as this is assumed for handling case independence. */
static const char *const posix_names[] = {
@@ -127,25 +127,31 @@ static const char *const posix_names[] = {
static const uschar posix_name_lengths[] = {
5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 4, 6, 0 };
-/* Table of class bit maps for each POSIX class; up to three may be combined
-to form the class. The table for [:blank:] is dynamically modified to remove
-the vertical space characters. */
+/* Table of class bit maps for each POSIX class. Each class is formed from a
+base map, with an optional addition or removal of another map. Then, for some
+classes, there is some additional tweaking: for [:blank:] the vertical space
+characters are removed, and for [:alpha:] and [:alnum:] the underscore
+character is removed. The triples in the table consist of the base map offset,
+second map offset or -1 if no second map, and a non-negative value for map
+addition or a negative value for map subtraction (if there are two maps). The
+absolute value of the third field has these meanings: 0 => no tweaking, 1 =>
+remove vertical space characters, 2 => remove underscore. */
static const int posix_class_maps[] = {
- cbit_lower, cbit_upper, -1, /* alpha */
- cbit_lower, -1, -1, /* lower */
- cbit_upper, -1, -1, /* upper */
- cbit_digit, cbit_lower, cbit_upper, /* alnum */
- cbit_print, cbit_cntrl, -1, /* ascii */
- cbit_space, -1, -1, /* blank - a GNU extension */
- cbit_cntrl, -1, -1, /* cntrl */
- cbit_digit, -1, -1, /* digit */
- cbit_graph, -1, -1, /* graph */
- cbit_print, -1, -1, /* print */
- cbit_punct, -1, -1, /* punct */
- cbit_space, -1, -1, /* space */
- cbit_word, -1, -1, /* word - a Perl extension */
- cbit_xdigit,-1, -1 /* xdigit */
+ cbit_word, cbit_digit, -2, /* alpha */
+ cbit_lower, -1, 0, /* lower */
+ cbit_upper, -1, 0, /* upper */
+ cbit_word, -1, 2, /* alnum - word without underscore */
+ cbit_print, cbit_cntrl, 0, /* ascii */
+ cbit_space, -1, 1, /* blank - a GNU extension */
+ cbit_cntrl, -1, 0, /* cntrl */
+ cbit_digit, -1, 0, /* digit */
+ cbit_graph, -1, 0, /* graph */
+ cbit_print, -1, 0, /* print */
+ cbit_punct, -1, 0, /* punct */
+ cbit_space, -1, 0, /* space */
+ cbit_word, -1, 0, /* word - a Perl extension */
+ cbit_xdigit,-1, 0 /* xdigit */
};
@@ -371,12 +377,15 @@ static int
check_escape(const uschar **ptrptr, int *errorcodeptr, int bracount,
int options, BOOL isclass)
{
-const uschar *ptr = *ptrptr;
+BOOL utf8 = (options & PCRE_UTF8) != 0;
+const uschar *ptr = *ptrptr + 1;
int c, i;
+GETCHARINCTEST(c, ptr); /* Get character value, increment pointer */
+ptr--; /* Set pointer back to the last byte */
+
/* If backslash is at the end of the pattern, it's an error. */
-c = *(++ptr);
if (c == 0) *errorcodeptr = ERR1;
/* Non-alphamerics are literals. For digits or letters, do an initial lookup in
@@ -460,40 +469,44 @@ else
c &= 255; /* Take least significant 8 bits */
break;
- /* \x is complicated when UTF-8 is enabled. \x{ddd} is a character number
- which can be greater than 0xff, but only if the ddd are hex digits. */
+ /* \x is complicated. \x{ddd} is a character number which can be greater
+ than 0xff in utf8 mode, but only if the ddd are hex digits. If not, { is
+ treated as a data character. */
case 'x':
-#ifdef SUPPORT_UTF8
- if (ptr[1] == '{' && (options & PCRE_UTF8) != 0)
+ if (ptr[1] == '{')
{
const uschar *pt = ptr + 2;
- register int count = 0;
+ int count = 0;
+
c = 0;
while ((digitab[*pt] & ctype_xdigit) != 0)
{
- int cc = *pt++;
+ register int cc = *pt++;
+ if (c == 0 && cc == '0') continue; /* Leading zeroes */
count++;
+
#if !EBCDIC /* ASCII coding */
if (cc >= 'a') cc -= 32; /* Convert to upper case */
- c = c * 16 + cc - ((cc < 'A')? '0' : ('A' - 10));
+ c = (c << 4) + cc - ((cc < 'A')? '0' : ('A' - 10));
#else /* EBCDIC coding */
if (cc >= 'a' && cc <= 'z') cc += 64; /* Convert to upper case */
- c = c * 16 + cc - ((cc >= '0')? '0' : ('A' - 10));
+ c = (c << 4) + cc - ((cc >= '0')? '0' : ('A' - 10));
#endif
}
+
if (*pt == '}')
{
- if (c < 0 || count > 8) *errorcodeptr = ERR34;
+ if (c < 0 || count > (utf8? 8 : 2)) *errorcodeptr = ERR34;
ptr = pt;
break;
}
+
/* If the sequence of hex digits does not end with '}', then we don't
recognize this construct; fall through to the normal \x handling. */
}
-#endif
- /* Read just a single hex char */
+ /* Read just a single-byte hex-defined char */
c = 0;
while (i++ < 2 && (digitab[ptr[1]] & ctype_xdigit) != 0)
@@ -569,25 +582,26 @@ escape sequence.
Argument:
ptrptr points to the pattern position pointer
negptr points to a boolean that is set TRUE for negation else FALSE
+ dptr points to an int that is set to the detailed property value
errorcodeptr points to the error code variable
-Returns: value from ucp_type_table, or -1 for an invalid type
+Returns: type value from ucp_type_table, or -1 for an invalid type
*/
static int
-get_ucp(const uschar **ptrptr, BOOL *negptr, int *errorcodeptr)
+get_ucp(const uschar **ptrptr, BOOL *negptr, int *dptr, int *errorcodeptr)
{
int c, i, bot, top;
const uschar *ptr = *ptrptr;
-char name[4];
+char name[32];
c = *(++ptr);
if (c == 0) goto ERROR_RETURN;
*negptr = FALSE;
-/* \P or \p can be followed by a one- or two-character name in {}, optionally
-preceded by ^ for negation. */
+/* \P or \p can be followed by a name in {}, optionally preceded by ^ for
+negation. */
if (c == '{')
{
@@ -596,18 +610,14 @@ if (c == '{')
*negptr = TRUE;
ptr++;
}
- for (i = 0; i <= 2; i++)
+ for (i = 0; i < sizeof(name) - 1; i++)
{
c = *(++ptr);
if (c == 0) goto ERROR_RETURN;
if (c == '}') break;
name[i] = c;
}
- if (c !='}') /* Try to distinguish error cases */
- {
- while (*(++ptr) != 0 && *ptr != '}');
- if (*ptr == '}') goto UNKNOWN_RETURN; else goto ERROR_RETURN;
- }
+ if (c !='}') goto ERROR_RETURN;
name[i] = 0;
}
@@ -628,13 +638,16 @@ top = _pcre_utt_size;
while (bot < top)
{
- i = (bot + top)/2;
+ i = (bot + top) >> 1;
c = strcmp(name, _pcre_utt[i].name);
- if (c == 0) return _pcre_utt[i].value;
+ if (c == 0)
+ {
+ *dptr = _pcre_utt[i].value;
+ return _pcre_utt[i].type;
+ }
if (c > 0) bot = i + 1; else top = i;
}
-UNKNOWN_RETURN:
*errorcodeptr = ERR47;
*ptrptr = ptr;
return -1;
@@ -937,7 +950,7 @@ for (;;)
case OP_PROP:
case OP_NOTPROP:
- cc++;
+ cc += 2;
/* Fall through */
case OP_NOT_DIGIT:
@@ -1497,13 +1510,10 @@ Yield: TRUE when range returned; FALSE when no more
static BOOL
get_othercase_range(int *cptr, int d, int *ocptr, int *odptr)
{
-int c, chartype, othercase, next;
+int c, othercase, next;
for (c = *cptr; c <= d; c++)
- {
- if (_pcre_ucp_findchar(c, &chartype, &othercase) == ucp_L && othercase != 0)
- break;
- }
+ { if ((othercase = _pcre_ucp_othercase(c)) >= 0) break; }
if (c > d) return FALSE;
@@ -1512,9 +1522,7 @@ next = othercase + 1;
for (++c; c <= d; c++)
{
- if (_pcre_ucp_findchar(c, &chartype, &othercase) != ucp_L ||
- othercase != next)
- break;
+ if (_pcre_ucp_othercase(c) != next) break;
next++;
}
@@ -1731,11 +1739,11 @@ for (;; ptr++)
*code++ = OP_ANY;
break;
- /* Character classes. If the included characters are all < 255 in value, we
- build a 32-byte bitmap of the permitted characters, except in the special
- case where there is only one such character. For negated classes, we build
- the map as usual, then invert it at the end. However, we use a different
- opcode so that data characters > 255 can be handled correctly.
+ /* Character classes. If the included characters are all < 256, we build a
+ 32-byte bitmap of the permitted characters, except in the special case
+ where there is only one such character. For negated classes, we build the
+ map as usual, then invert it at the end. However, we use a different opcode
+ so that data characters > 255 can be handled correctly.
If the class contains characters outside the 0-255 range, a different
opcode is compiled. It may optionally have a bit map for characters < 256,
@@ -1826,8 +1834,9 @@ for (;; ptr++)
check_posix_syntax(ptr, &tempptr, cd))
{
BOOL local_negate = FALSE;
- int posix_class, i;
+ int posix_class, taboffset, tabopt;
register const uschar *cbits = cd->cbits;
+ uschar pbits[32];
if (ptr[1] != ':')
{
@@ -1856,32 +1865,46 @@ for (;; ptr++)
if ((options & PCRE_CASELESS) != 0 && posix_class <= 2)
posix_class = 0;
- /* Or into the map we are building up to 3 of the static class
- tables, or their negations. The [:blank:] class sets up the same
- chars as the [:space:] class (all white space). We remove the vertical
- white space chars afterwards. */
+ /* We build the bit map for the POSIX class in a chunk of local store
+ because we may be adding and subtracting from it, and we don't want to
+ subtract bits that may be in the main map already. At the end we or the
+ result into the bit map that is being built. */
posix_class *= 3;
- for (i = 0; i < 3; i++)
+
+ /* Copy in the first table (always present) */
+
+ memcpy(pbits, cbits + posix_class_maps[posix_class],
+ 32 * sizeof(uschar));
+
+ /* If there is a second table, add or remove it as required. */
+
+ taboffset = posix_class_maps[posix_class + 1];
+ tabopt = posix_class_maps[posix_class + 2];
+
+ if (taboffset >= 0)
{
- BOOL blankclass = strncmp((char *)ptr, "blank", 5) == 0;
- int taboffset = posix_class_maps[posix_class + i];
- if (taboffset < 0) break;
- if (local_negate)
- {
- if (i == 0)
- for (c = 0; c < 32; c++) classbits[c] |= ~cbits[c+taboffset];
- else
- for (c = 0; c < 32; c++) classbits[c] &= ~cbits[c+taboffset];
- if (blankclass) classbits[1] |= 0x3c;
- }
+ if (tabopt >= 0)
+ for (c = 0; c < 32; c++) pbits[c] |= cbits[c + taboffset];
else
- {
- for (c = 0; c < 32; c++) classbits[c] |= cbits[c+taboffset];
- if (blankclass) classbits[1] &= ~0x3c;
- }
+ for (c = 0; c < 32; c++) pbits[c] &= ~cbits[c + taboffset];
}
+ /* Not see if we need to remove any special characters. An option
+ value of 1 removes vertical space and 2 removes underscore. */
+
+ if (tabopt < 0) tabopt = -tabopt;
+ if (tabopt == 1) pbits[1] &= ~0x3c;
+ else if (tabopt == 2) pbits[11] &= 0x7f;
+
+ /* Add the POSIX table or its complement into the main table that is
+ being built and we are done. */
+
+ if (local_negate)
+ for (c = 0; c < 32; c++) classbits[c] |= ~pbits[c];
+ else
+ for (c = 0; c < 32; c++) classbits[c] |= pbits[c];
+
ptr = tempptr + 1;
class_charcount = 10; /* Set > 1; assumes more than 1 per class */
continue; /* End of POSIX syntax handling */
@@ -1948,12 +1971,14 @@ for (;; ptr++)
case ESC_P:
{
BOOL negated;
- int property = get_ucp(&ptr, &negated, errorcodeptr);
- if (property < 0) goto FAILED;
+ int pdata;
+ int ptype = get_ucp(&ptr, &negated, &pdata, errorcodeptr);
+ if (ptype < 0) goto FAILED;
class_utf8 = TRUE;
*class_utf8data++ = ((-c == ESC_p) != negated)?
XCL_PROP : XCL_NOTPROP;
- *class_utf8data++ = property;
+ *class_utf8data++ = ptype;
+ *class_utf8data++ = pdata;
class_charcount -= 2; /* Not a < 256 character */
}
continue;
@@ -2135,10 +2160,8 @@ for (;; ptr++)
#ifdef SUPPORT_UCP
if ((options & PCRE_CASELESS) != 0)
{
- int chartype;
int othercase;
- if (_pcre_ucp_findchar(c, &chartype, &othercase) >= 0 &&
- othercase > 0)
+ if ((othercase = _pcre_ucp_othercase(c)) >= 0)
{
*class_utf8data++ = XCL_SINGLE;
class_utf8data += _pcre_ord2utf8(othercase, class_utf8data);
@@ -2423,13 +2446,17 @@ for (;; ptr++)
else if (*previous < OP_EODN)
{
uschar *oldcode;
- int prop_type;
+ int prop_type, prop_value;
op_type = OP_TYPESTAR - OP_STAR; /* Use type opcodes */
c = *previous;
OUTPUT_SINGLE_REPEAT:
- prop_type = (*previous == OP_PROP || *previous == OP_NOTPROP)?
- previous[1] : -1;
+ if (*previous == OP_PROP || *previous == OP_NOTPROP)
+ {
+ prop_type = previous[1];
+ prop_value = previous[2];
+ }
+ else prop_type = prop_value = -1;
oldcode = code;
code = previous; /* Usually overwrite previous item */
@@ -2490,7 +2517,7 @@ for (;; ptr++)
/* If the maximum is unlimited, insert an OP_STAR. Before doing so,
we have to insert the character for the previous code. For a repeated
- Unicode property match, there is an extra byte that defines the
+ Unicode property match, there are two extra bytes that define the
required property. In UTF-8 mode, long characters have their length in
c, with the 0x80 bit as a flag. */
@@ -2506,7 +2533,11 @@ for (;; ptr++)
#endif
{
*code++ = c;
- if (prop_type >= 0) *code++ = prop_type;
+ if (prop_type >= 0)
+ {
+ *code++ = prop_type;
+ *code++ = prop_value;
+ }
}
*code++ = OP_STAR + repeat_type;
}
@@ -2525,7 +2556,11 @@ for (;; ptr++)
else
#endif
*code++ = c;
- if (prop_type >= 0) *code++ = prop_type;
+ if (prop_type >= 0)
+ {
+ *code++ = prop_type;
+ *code++ = prop_value;
+ }
repeat_max -= repeat_min;
*code++ = OP_UPTO + repeat_type;
PUT2INC(code, 0, repeat_max);
@@ -2544,11 +2579,15 @@ for (;; ptr++)
#endif
*code++ = c;
- /* For a repeated Unicode property match, there is an extra byte that
- defines the required property. */
+ /* For a repeated Unicode property match, there are two extra bytes that
+ define the required property. */
#ifdef SUPPORT_UCP
- if (prop_type >= 0) *code++ = prop_type;
+ if (prop_type >= 0)
+ {
+ *code++ = prop_type;
+ *code++ = prop_value;
+ }
#endif
}
@@ -3016,11 +3055,20 @@ for (;; ptr++)
goto FAILED;
}
- /* Insert the recursion/subroutine item */
+ /* Insert the recursion/subroutine item, automatically wrapped inside
+ "once" brackets. */
+
+ *code = OP_ONCE;
+ PUT(code, 1, 2 + 2*LINK_SIZE);
+ code += 1 + LINK_SIZE;
*code = OP_RECURSE;
PUT(code, 1, called - cd->start_code);
code += 1 + LINK_SIZE;
+
+ *code = OP_KET;
+ PUT(code, 1, 2 + 2*LINK_SIZE);
+ code += 1 + LINK_SIZE;
}
continue;
@@ -3290,10 +3338,12 @@ for (;; ptr++)
else if (-c == ESC_P || -c == ESC_p)
{
BOOL negated;
- int value = get_ucp(&ptr, &negated, errorcodeptr);
+ int pdata;
+ int ptype = get_ucp(&ptr, &negated, &pdata, errorcodeptr);
previous = code;
*code++ = ((-c == ESC_p) != negated)? OP_PROP : OP_NOTPROP;
- *code++ = value;
+ *code++ = ptype;
+ *code++ = pdata;
}
#endif
@@ -3848,7 +3898,7 @@ Returns: pointer to compiled data block, or NULL on error,
with errorptr and erroroffset set
*/
-PCRE_EXPORT pcre *
+PCRE_DATA_SCOPE pcre *
pcre_compile(const char *pattern, int options, const char **errorptr,
int *erroroffset, const unsigned char *tables)
{
@@ -3856,7 +3906,7 @@ return pcre_compile2(pattern, options, NULL, errorptr, erroroffset, tables);
}
-PCRE_EXPORT pcre *
+PCRE_DATA_SCOPE pcre *
pcre_compile2(const char *pattern, int options, int *errorcodeptr,
const char **errorptr, int *erroroffset, const unsigned char *tables)
{
@@ -4049,15 +4099,17 @@ while ((c = *(++ptr)) != 0)
#endif
/* \P and \p are for Unicode properties, but only when the support has
- been compiled. Each item needs 2 bytes. */
+ been compiled. Each item needs 3 bytes. */
else if (-c == ESC_P || -c == ESC_p)
{
#ifdef SUPPORT_UCP
BOOL negated;
- length += 2;
- lastitemlength = 2;
- if (get_ucp(&ptr, &negated, &errorcode) < 0) goto PCRE_ERROR_RETURN;
+ BOOL pdata;
+ length += 3;
+ lastitemlength = 3;
+ if (get_ucp(&ptr, &negated, &pdata, &errorcode) < 0)
+ goto PCRE_ERROR_RETURN;
continue;
#else
errorcode = ERR45;
@@ -4223,7 +4275,7 @@ while ((c = *(++ptr)) != 0)
class_utf8 = TRUE;
length += LINK_SIZE + 2;
}
- length += 2;
+ length += 3;
}
#endif
}
@@ -4486,7 +4538,7 @@ while ((c = *(++ptr)) != 0)
errorcode = ERR29;
goto PCRE_ERROR_RETURN;
}
- length += 1 + LINK_SIZE;
+ length += 3 + 3*LINK_SIZE; /* Allows for the automatic "once" */
/* If this item is quantified, it will get wrapped inside brackets so
as to use the code for quantified brackets. We jump down and use the
@@ -4542,6 +4594,7 @@ while ((c = *(++ptr)) != 0)
if (*ptr == '=' || *ptr == '>')
{
+ length += 2 + 2*LINK_SIZE; /* Allow for the automatic "once" */
while ((compile_block.ctypes[*(++ptr)] & ctype_word) != 0);
if (*ptr != ')')
{
@@ -5035,7 +5088,8 @@ if (re->options != 0)
if ((re->options & PCRE_FIRSTSET) != 0)
{
int ch = re->first_byte & 255;
- const char *caseless = ((re->first_byte & REQ_CASELESS) == 0)? "" : " (caseless)";
+ const char *caseless = ((re->first_byte & REQ_CASELESS) == 0)?
+ "" : " (caseless)";
if (isprint(ch)) printf("First char = %c%s\n", ch, caseless);
else printf("First char = \\x%02x%s\n", ch, caseless);
}
@@ -5043,7 +5097,8 @@ if ((re->options & PCRE_FIRSTSET) != 0)
if ((re->options & PCRE_REQCHSET) != 0)
{
int ch = re->req_byte & 255;
- const char *caseless = ((re->req_byte & REQ_CASELESS) == 0)? "" : " (caseless)";
+ const char *caseless = ((re->req_byte & REQ_CASELESS) == 0)?
+ "" : " (caseless)";
if (isprint(ch)) printf("Req char = %c%s\n", ch, caseless);
else printf("Req char = \\x%02x%s\n", ch, caseless);
}
diff --git a/pcre_config.c b/pcre_config.c
index 5538a70..29e6c1a 100644
--- a/pcre_config.c
+++ b/pcre_config.c
@@ -6,7 +6,7 @@
and semantics are as close as possible to those of the Perl 5 language.
Written by Philip Hazel
- Copyright (c) 1997-2005 University of Cambridge
+ Copyright (c) 1997-2006 University of Cambridge
-----------------------------------------------------------------------------
Redistribution and use in source and binary forms, with or without
@@ -58,7 +58,7 @@ Arguments:
Returns: 0 if data returned, negative on error
*/
-PCRE_EXPORT int
+PCRE_DATA_SCOPE int
pcre_config(int what, void *where)
{
switch (what)
@@ -95,6 +95,10 @@ switch (what)
*((unsigned int *)where) = MATCH_LIMIT;
break;
+ case PCRE_CONFIG_MATCH_LIMIT_RECURSION:
+ *((unsigned int *)where) = MATCH_LIMIT_RECURSION;
+ break;
+
case PCRE_CONFIG_STACKRECURSE:
#ifdef NO_RECURSE
*((int *)where) = 0;
diff --git a/pcre_dfa_exec.c b/pcre_dfa_exec.c
index c68f232..b5e01da 100644
--- a/pcre_dfa_exec.c
+++ b/pcre_dfa_exec.c
@@ -6,7 +6,7 @@
and semantics are as close as possible to those of the Perl 5 language.
Written by Philip Hazel
- Copyright (c) 1997-2005 University of Cambridge
+ Copyright (c) 1997-2006 University of Cambridge
-----------------------------------------------------------------------------
Redistribution and use in source and binary forms, with or without
@@ -288,7 +288,9 @@ const uschar *start_subject = md->start_subject;
const uschar *end_subject = md->end_subject;
const uschar *start_code = md->start_code;
+#ifdef SUPPORT_UTF8
BOOL utf8 = (md->poptions & PCRE_UTF8) != 0;
+#endif
rlevel++;
offsetcount &= (-2);
@@ -480,7 +482,7 @@ for (;;)
const uschar *code;
int state_offset = current_state->offset;
int count, codevalue;
- int chartype, othercase;
+ int chartype, script;
#ifdef DEBUG
printf ("%.*sProcessing state %d c=", rlevel*2-2, SP, state_offset);
@@ -757,19 +759,38 @@ for (;;)
case OP_NOTPROP:
if (clen > 0)
{
- int rqdtype, category;
- category = _pcre_ucp_findchar(c, &chartype, &othercase);
- rqdtype = code[1];
- if (rqdtype >= 128)
- {
- if ((rqdtype - 128 == category) == (codevalue == OP_PROP))
- { ADD_NEW(state_offset + 2, 0); }
- }
- else
+ BOOL OK;
+ int category = _pcre_ucp_findprop(c, &chartype, &script);
+ switch(code[1])
{
- if ((rqdtype == chartype) == (codevalue == OP_PROP))
- { ADD_NEW(state_offset + 2, 0); }
+ case PT_ANY:
+ OK = TRUE;
+ break;
+
+ case PT_LAMP:
+ OK = chartype == ucp_Lu || chartype == ucp_Ll || chartype == ucp_Lt;
+ break;
+
+ case PT_GC:
+ OK = category == code[2];
+ break;
+
+ case PT_PC:
+ OK = chartype == code[2];
+ break;
+
+ case PT_SC:
+ OK = script == code[2];
+ break;
+
+ /* Should never occur, but keep compilers from grumbling. */
+
+ default:
+ OK = codevalue != OP_PROP;
+ break;
}
+
+ if (OK == (codevalue == OP_PROP)) { ADD_NEW(state_offset + 3, 0); }
}
break;
#endif
@@ -862,14 +883,41 @@ for (;;)
case OP_PROP_EXTRA + OP_TYPEPLUS:
case OP_PROP_EXTRA + OP_TYPEMINPLUS:
count = current_state->count; /* Already matched */
- if (count > 0) { ADD_ACTIVE(state_offset + 3, 0); }
+ if (count > 0) { ADD_ACTIVE(state_offset + 4, 0); }
if (clen > 0)
{
- int category = _pcre_ucp_findchar(c, &chartype, &othercase);
- int rqdtype = code[2];
- if ((d == OP_PROP) ==
- (rqdtype == ((rqdtype >= 128)? (category + 128) : chartype)))
- { count++; ADD_NEW(state_offset, count); }
+ BOOL OK;
+ int category = _pcre_ucp_findprop(c, &chartype, &script);
+ switch(code[2])
+ {
+ case PT_ANY:
+ OK = TRUE;
+ break;
+
+ case PT_LAMP:
+ OK = chartype == ucp_Lu || chartype == ucp_Ll || chartype == ucp_Lt;
+ break;
+
+ case PT_GC:
+ OK = category == code[3];
+ break;
+
+ case PT_PC:
+ OK = chartype == code[3];
+ break;
+
+ case PT_SC:
+ OK = script == code[3];
+ break;
+
+ /* Should never occur, but keep compilers from grumbling. */
+
+ default:
+ OK = codevalue != OP_PROP;
+ break;
+ }
+
+ if (OK == (d == OP_PROP)) { count++; ADD_NEW(state_offset, count); }
}
break;
@@ -878,7 +926,7 @@ for (;;)
case OP_EXTUNI_EXTRA + OP_TYPEMINPLUS:
count = current_state->count; /* Already matched */
if (count > 0) { ADD_ACTIVE(state_offset + 2, 0); }
- if (clen > 0 && _pcre_ucp_findchar(c, &chartype, &othercase) != ucp_M)
+ if (clen > 0 && _pcre_ucp_findprop(c, &chartype, &script) != ucp_M)
{
const uschar *nptr = ptr + clen;
int ncount = 0;
@@ -887,7 +935,7 @@ for (;;)
int nd;
int ndlen = 1;
GETCHARLEN(nd, nptr, ndlen);
- if (_pcre_ucp_findchar(nd, &chartype, &othercase) != ucp_M) break;
+ if (_pcre_ucp_findprop(nd, &chartype, &script) != ucp_M) break;
ncount++;
nptr += ndlen;
}
@@ -899,7 +947,7 @@ for (;;)
/*-----------------------------------------------------------------*/
case OP_PROP_EXTRA + OP_TYPEQUERY:
case OP_PROP_EXTRA + OP_TYPEMINQUERY:
- count = 3;
+ count = 4;
goto QS1;
case OP_PROP_EXTRA + OP_TYPESTAR:
@@ -908,14 +956,41 @@ for (;;)
QS1:
- ADD_ACTIVE(state_offset + 3, 0);
+ ADD_ACTIVE(state_offset + 4, 0);
if (clen > 0)
{
- int category = _pcre_ucp_findchar(c, &chartype, &othercase);
- int rqdtype = code[2];
- if ((d == OP_PROP) ==
- (rqdtype == ((rqdtype >= 128)? (category + 128) : chartype)))
- { ADD_NEW(state_offset + count, 0); }
+ BOOL OK;
+ int category = _pcre_ucp_findprop(c, &chartype, &script);
+ switch(code[2])
+ {
+ case PT_ANY:
+ OK = TRUE;
+ break;
+
+ case PT_LAMP:
+ OK = chartype == ucp_Lu || chartype == ucp_Ll || chartype == ucp_Lt;
+ break;
+
+ case PT_GC:
+ OK = category == code[3];
+ break;
+
+ case PT_PC:
+ OK = chartype == code[3];
+ break;
+
+ case PT_SC:
+ OK = script == code[3];
+ break;
+
+ /* Should never occur, but keep compilers from grumbling. */
+
+ default:
+ OK = codevalue != OP_PROP;
+ break;
+ }
+
+ if (OK == (d == OP_PROP)) { ADD_NEW(state_offset + count, 0); }
}
break;
@@ -932,7 +1007,7 @@ for (;;)
QS2:
ADD_ACTIVE(state_offset + 2, 0);
- if (clen > 0 && _pcre_ucp_findchar(c, &chartype, &othercase) != ucp_M)
+ if (clen > 0 && _pcre_ucp_findprop(c, &chartype, &script) != ucp_M)
{
const uschar *nptr = ptr + clen;
int ncount = 0;
@@ -941,7 +1016,7 @@ for (;;)
int nd;
int ndlen = 1;
GETCHARLEN(nd, nptr, ndlen);
- if (_pcre_ucp_findchar(nd, &chartype, &othercase) != ucp_M) break;
+ if (_pcre_ucp_findprop(nd, &chartype, &script) != ucp_M) break;
ncount++;
nptr += ndlen;
}
@@ -954,17 +1029,45 @@ for (;;)
case OP_PROP_EXTRA + OP_TYPEUPTO:
case OP_PROP_EXTRA + OP_TYPEMINUPTO:
if (codevalue != OP_PROP_EXTRA + OP_TYPEEXACT)
- { ADD_ACTIVE(state_offset + 5, 0); }
+ { ADD_ACTIVE(state_offset + 6, 0); }
count = current_state->count; /* Number already matched */
if (clen > 0)
{
- int category = _pcre_ucp_findchar(c, &chartype, &othercase);
- int rqdtype = code[4];
- if ((d == OP_PROP) ==
- (rqdtype == ((rqdtype >= 128)? (category + 128) : chartype)))
+ BOOL OK;
+ int category = _pcre_ucp_findprop(c, &chartype, &script);
+ switch(code[4])
+ {
+ case PT_ANY:
+ OK = TRUE;
+ break;
+
+ case PT_LAMP:
+ OK = chartype == ucp_Lu || chartype == ucp_Ll || chartype == ucp_Lt;
+ break;
+
+ case PT_GC:
+ OK = category == code[5];
+ break;
+
+ case PT_PC:
+ OK = chartype == code[5];
+ break;
+
+ case PT_SC:
+ OK = script == code[5];
+ break;
+
+ /* Should never occur, but keep compilers from grumbling. */
+
+ default:
+ OK = codevalue != OP_PROP;
+ break;
+ }
+
+ if (OK == (d == OP_PROP))
{
if (++count >= GET2(code, 1))
- { ADD_NEW(state_offset + 5, 0); }
+ { ADD_NEW(state_offset + 6, 0); }
else
{ ADD_NEW(state_offset, count); }
}
@@ -978,7 +1081,7 @@ for (;;)
if (codevalue != OP_EXTUNI_EXTRA + OP_TYPEEXACT)
{ ADD_ACTIVE(state_offset + 4, 0); }
count = current_state->count; /* Number already matched */
- if (clen > 0 && _pcre_ucp_findchar(c, &chartype, &othercase) != ucp_M)
+ if (clen > 0 && _pcre_ucp_findprop(c, &chartype, &script) != ucp_M)
{
const uschar *nptr = ptr + clen;
int ncount = 0;
@@ -987,7 +1090,7 @@ for (;;)
int nd;
int ndlen = 1;
GETCHARLEN(nd, nptr, ndlen);
- if (_pcre_ucp_findchar(nd, &chartype, &othercase) != ucp_M) break;
+ if (_pcre_ucp_findprop(nd, &chartype, &script) != ucp_M) break;
ncount++;
nptr += ndlen;
}
@@ -1018,17 +1121,17 @@ for (;;)
{
if (c == d) { ADD_NEW(state_offset + dlen + 1, 0); } else
{
+ int othercase;
if (c < 128) othercase = fcc[c]; else
/* If we have Unicode property support, we can use it to test the
- other case of the character, if there is one. The result of
- _pcre_ucp_findchar() is < 0 if the char isn't found, and othercase is
- returned as zero if there isn't another case. */
+ other case of the character. */
#ifdef SUPPORT_UCP
- if (_pcre_ucp_findchar(c, &chartype, &othercase) < 0)
+ othercase = _pcre_ucp_othercase(c);
+#else
+ othercase = -1;
#endif
- othercase = -1;
if (d == othercase) { ADD_NEW(state_offset + dlen + 1, 0); }
}
@@ -1050,7 +1153,7 @@ for (;;)
to wait for them to pass before continuing. */
case OP_EXTUNI:
- if (clen > 0 && _pcre_ucp_findchar(c, &chartype, &othercase) != ucp_M)
+ if (clen > 0 && _pcre_ucp_findprop(c, &chartype, &script) != ucp_M)
{
const uschar *nptr = ptr + clen;
int ncount = 0;
@@ -1058,7 +1161,7 @@ for (;;)
{
int nclen = 1;
GETCHARLEN(c, nptr, nclen);
- if (_pcre_ucp_findchar(c, &chartype, &othercase) != ucp_M) break;
+ if (_pcre_ucp_findprop(c, &chartype, &script) != ucp_M) break;
ncount++;
nptr += nclen;
}
@@ -1093,10 +1196,10 @@ for (;;)
if ((ims & PCRE_CASELESS) != 0)
{
#ifdef SUPPORT_UTF8
- if (utf8 && c >= 128)
+ if (utf8 && d >= 128)
{
#ifdef SUPPORT_UCP
- if (_pcre_ucp_findchar(d, &chartype, &otherd) < 0) otherd = -1;
+ otherd = _pcre_ucp_othercase(d);
#endif /* SUPPORT_UCP */
}
else
@@ -1120,10 +1223,10 @@ for (;;)
if ((ims && PCRE_CASELESS) != 0)
{
#ifdef SUPPORT_UTF8
- if (utf8 && c >= 128)
+ if (utf8 && d >= 128)
{
#ifdef SUPPORT_UCP
- if (_pcre_ucp_findchar(c, &chartype, &otherd) < 0) otherd = -1;
+ otherd = _pcre_ucp_othercase(d);
#endif /* SUPPORT_UCP */
}
else
@@ -1147,10 +1250,10 @@ for (;;)
if ((ims && PCRE_CASELESS) != 0)
{
#ifdef SUPPORT_UTF8
- if (utf8 && c >= 128)
+ if (utf8 && d >= 128)
{
#ifdef SUPPORT_UCP
- if (_pcre_ucp_findchar(c, &chartype, &otherd) < 0) otherd = -1;
+ otherd = _pcre_ucp_othercase(d);
#endif /* SUPPORT_UCP */
}
else
@@ -1178,10 +1281,10 @@ for (;;)
if ((ims & PCRE_CASELESS) != 0)
{
#ifdef SUPPORT_UTF8
- if (utf8 && c >= 128)
+ if (utf8 && d >= 128)
{
#ifdef SUPPORT_UCP
- if (_pcre_ucp_findchar(d, &chartype, &otherd) < 0) otherd = -1;
+ otherd = _pcre_ucp_othercase(d);
#endif /* SUPPORT_UCP */
}
else
@@ -1519,7 +1622,7 @@ for (;;)
cb.version = 1; /* Version 1 of the callout block */
cb.callout_number = code[1];
cb.offset_vector = offsets;
- cb.subject = (char *)start_subject;
+ cb.subject = (PCRE_SPTR)start_subject;
cb.subject_length = end_subject - start_subject;
cb.start_match = current_subject - start_subject;
cb.current_position = ptr - start_subject;
@@ -1611,7 +1714,7 @@ Returns: > 0 => number of match offset pairs placed in offsets
< -1 => some kind of unexpected problem
*/
-PCRE_EXPORT int
+PCRE_DATA_SCOPE int
pcre_dfa_exec(const pcre *argument_re, const pcre_extra *extra_data,
const char *subject, int length, int start_offset, int options, int *offsets,
int offsetcount, int *workspace, int wscount)
@@ -1655,6 +1758,8 @@ if (extra_data != NULL)
if ((flags & PCRE_EXTRA_STUDY_DATA) != 0)
study = (const pcre_study_data *)extra_data->study_data;
if ((flags & PCRE_EXTRA_MATCH_LIMIT) != 0) return PCRE_ERROR_DFA_UMLIMIT;
+ if ((flags & PCRE_EXTRA_MATCH_LIMIT_RECURSION) != 0)
+ return PCRE_ERROR_DFA_UMLIMIT;
if ((flags & PCRE_EXTRA_CALLOUT_DATA) != 0)
match_block.callout_data = extra_data->callout_data;
if ((flags & PCRE_EXTRA_TABLES) != 0)
@@ -1680,7 +1785,9 @@ end_subject = (const unsigned char *)subject + length;
req_byte_ptr = current_subject - 1;
utf8 = (re->options & PCRE_UTF8) != 0;
-anchored = (options & PCRE_ANCHORED) != 0 || (re->options & PCRE_ANCHORED) != 0;
+
+anchored = (options & (PCRE_ANCHORED|PCRE_DFA_RESTART)) != 0 ||
+ (re->options & PCRE_ANCHORED) != 0;
/* The remaining fixed data for passing around. */
@@ -1771,9 +1878,9 @@ for (;;)
/* Advance to a unique first char if possible. If firstline is TRUE, the
start of the match is constrained to the first line of a multiline string.
- Implement this by temporarily adjusting end_subject so that we stop scanning
- at a newline. If the match fails at the newline, later code breaks this loop.
- */
+ Implement this by temporarily adjusting end_subject so that we stop
+ scanning at a newline. If the match fails at the newline, later code breaks
+ this loop. */
if (firstline)
{
diff --git a/pcre_exec.c b/pcre_exec.c
index 133b3a7..ecb3297 100644
--- a/pcre_exec.c
+++ b/pcre_exec.c
@@ -6,7 +6,7 @@
and semantics are as close as possible to those of the Perl 5 language.
Written by Philip Hazel
- Copyright (c) 1997-2005 University of Cambridge
+ Copyright (c) 1997-2006 University of Cambridge
-----------------------------------------------------------------------------
Redistribution and use in source and binary forms, with or without
@@ -54,7 +54,7 @@ are on the heap, not on the stack. */
typedef struct eptrblock {
struct eptrblock *epb_prev;
- const uschar *epb_saved_eptr;
+ USPTR epb_saved_eptr;
} eptrblock;
/* Flag bits for the match() function */
@@ -128,10 +128,10 @@ Returns: TRUE if matched
*/
static BOOL
-match_ref(int offset, register const uschar *eptr, int length, match_data *md,
+match_ref(int offset, register USPTR eptr, int length, match_data *md,
unsigned long int ims)
{
-const uschar *p = md->start_subject + md->offset_vector[offset];
+USPTR p = md->start_subject + md->offset_vector[offset];
#ifdef DEBUG
if (eptr >= md->end_subject)
@@ -169,32 +169,50 @@ return TRUE;
****************************************************************************
RECURSION IN THE match() FUNCTION
-The match() function is highly recursive. Some regular expressions can cause
-it to recurse thousands of times. I was writing for Unix, so I just let it
-call itself recursively. This uses the stack for saving everything that has
-to be saved for a recursive call. On Unix, the stack can be large, and this
-works fine.
+The match() function is highly recursive, though not every recursive call
+increases the recursive depth. Nevertheless, some regular expressions can cause
+it to recurse to a great depth. I was writing for Unix, so I just let it call
+itself recursively. This uses the stack for saving everything that has to be
+saved for a recursive call. On Unix, the stack can be large, and this works
+fine.
-It turns out that on non-Unix systems there are problems with programs that
-use a lot of stack. (This despite the fact that every last chip has oodles
-of memory these days, and techniques for extending the stack have been known
-for decades.) So....
+It turns out that on some non-Unix-like systems there are problems with
+programs that use a lot of stack. (This despite the fact that every last chip
+has oodles of memory these days, and techniques for extending the stack have
+been known for decades.) So....
There is a fudge, triggered by defining NO_RECURSE, which avoids recursive
calls by keeping local variables that need to be preserved in blocks of memory
-obtained from malloc instead instead of on the stack. Macros are used to
+obtained from malloc() instead instead of on the stack. Macros are used to
achieve this so that the actual code doesn't look very different to what it
always used to.
****************************************************************************
***************************************************************************/
-/* These versions of the macros use the stack, as normal */
+/* These versions of the macros use the stack, as normal. There are debugging
+versions and production versions. */
#ifndef NO_RECURSE
#define REGISTER register
-#define RMATCH(rx,ra,rb,rc,rd,re,rf,rg) rx = match(ra,rb,rc,rd,re,rf,rg)
+#ifdef DEBUG
+#define RMATCH(rx,ra,rb,rc,rd,re,rf,rg) \
+ { \
+ printf("match() called in line %d\n", __LINE__); \
+ rx = match(ra,rb,rc,rd,re,rf,rg,rdepth+1); \
+ printf("to line %d\n", __LINE__); \
+ }
+#define RRETURN(ra) \
+ { \
+ printf("match() returned %d from line %d ", ra, __LINE__); \
+ return ra; \
+ }
+#else
+#define RMATCH(rx,ra,rb,rc,rd,re,rf,rg) \
+ rx = match(ra,rb,rc,rd,re,rf,rg,rdepth+1)
#define RRETURN(ra) return ra
+#endif
+
#else
@@ -215,6 +233,7 @@ match(), which never changes. */
newframe->Xims = re;\
newframe->Xeptrb = rf;\
newframe->Xflags = rg;\
+ newframe->Xrdepth = frame->Xrdepth + 1;\
newframe->Xprevframe = frame;\
frame = newframe;\
DPRINTF(("restarting from line %d\n", __LINE__));\
@@ -256,6 +275,7 @@ typedef struct heapframe {
long int Xims;
eptrblock *Xeptrb;
int Xflags;
+ int Xrdepth;
/* Function local variables */
@@ -278,11 +298,11 @@ typedef struct heapframe {
#ifdef SUPPORT_UCP
int Xprop_type;
+ int Xprop_value;
int Xprop_fail_result;
int Xprop_category;
int Xprop_chartype;
- int Xprop_othercase;
- int Xprop_test_against;
+ int Xprop_script;
int *Xprop_test_variable;
#endif
@@ -343,17 +363,18 @@ Arguments:
flags can contain
match_condassert - this is an assertion condition
match_isgroup - this is the start of a bracketed group
+ rdepth the recursion depth
Returns: MATCH_MATCH if matched ) these values are >= 0
MATCH_NOMATCH if failed to match )
a negative PCRE_ERROR_xxx value if aborted by an error condition
- (e.g. stopped by recursion limit)
+ (e.g. stopped by repeated call or recursion limit)
*/
static int
-match(REGISTER const uschar *eptr, REGISTER const uschar *ecode,
+match(REGISTER USPTR eptr, REGISTER const uschar *ecode,
int offset_top, match_data *md, unsigned long int ims, eptrblock *eptrb,
- int flags)
+ int flags, int rdepth)
{
/* These variables do not need to be preserved over recursion in this function,
so they can be ordinary variables in all cases. Mark them with "register"
@@ -381,6 +402,7 @@ frame->Xoffset_top = offset_top;
frame->Xims = ims;
frame->Xeptrb = eptrb;
frame->Xflags = flags;
+frame->Xrdepth = rdepth;
/* This is where control jumps back to to effect "recursion" */
@@ -394,6 +416,7 @@ HEAP_RECURSE:
#define ims frame->Xims
#define eptrb frame->Xeptrb
#define flags frame->Xflags
+#define rdepth frame->Xrdepth
/* Ditto for the local variables */
@@ -418,11 +441,11 @@ HEAP_RECURSE:
#ifdef SUPPORT_UCP
#define prop_type frame->Xprop_type
+#define prop_value frame->Xprop_value
#define prop_fail_result frame->Xprop_fail_result
#define prop_category frame->Xprop_category
#define prop_chartype frame->Xprop_chartype
-#define prop_othercase frame->Xprop_othercase
-#define prop_test_against frame->Xprop_test_against
+#define prop_script frame->Xprop_script
#define prop_test_variable frame->Xprop_test_variable
#endif
@@ -452,20 +475,20 @@ i, and fc and c, can be the same variables. */
#define fc c
-#ifdef SUPPORT_UTF8 /* Many of these variables are used ony */
-const uschar *charptr; /* small blocks of the code. My normal */
-#endif /* style of coding would have declared */
-const uschar *callpat; /* them within each of those blocks. */
-const uschar *data; /* However, in order to accommodate the */
-const uschar *next; /* version of this code that uses an */
-const uschar *pp; /* external "stack" implemented on the */
-const uschar *prev; /* heap, it is easier to declare them */
-const uschar *saved_eptr; /* all here, so the declarations can */
- /* be cut out in a block. The only */
-recursion_info new_recursive; /* declarations within blocks below are */
- /* for variables that do not have to */
-BOOL cur_is_word; /* be preserved over a recursive call */
-BOOL condition; /* to RMATCH(). */
+#ifdef SUPPORT_UTF8 /* Many of these variables are used only */
+const uschar *charptr; /* in small blocks of the code. My normal */
+#endif /* style of coding would have declared */
+const uschar *callpat; /* them within each of those blocks. */
+const uschar *data; /* However, in order to accommodate the */
+const uschar *next; /* version of this code that uses an */
+USPTR pp; /* external "stack" implemented on the */
+const uschar *prev; /* heap, it is easier to declare them all */
+USPTR saved_eptr; /* here, so the declarations can be cut */
+ /* out in a block. The only declarations */
+recursion_info new_recursive; /* within blocks below are for variables */
+ /* that do not have to be preserved over */
+BOOL cur_is_word; /* a recursive call to RMATCH(). */
+BOOL condition;
BOOL minimize;
BOOL prev_is_word;
@@ -473,11 +496,11 @@ unsigned long int original_ims;
#ifdef SUPPORT_UCP
int prop_type;
+int prop_value;
int prop_fail_result;
int prop_category;
int prop_chartype;
-int prop_othercase;
-int prop_test_against;
+int prop_script;
int *prop_test_variable;
#endif
@@ -499,19 +522,24 @@ eptrblock newptrb;
variables. */
#ifdef SUPPORT_UCP
+prop_value = 0;
prop_fail_result = 0;
-prop_test_against = 0;
prop_test_variable = NULL;
#endif
-/* OK, now we can get on with the real code of the function. Recursion is
-specified by the macros RMATCH and RRETURN. When NO_RECURSE is *not* defined,
-these just turn into a recursive call to match() and a "return", respectively.
-However, RMATCH isn't like a function call because it's quite a complicated
-macro. It has to be used in one particular way. This shouldn't, however, impact
-performance when true recursion is being used. */
+/* OK, now we can get on with the real code of the function. Recursive calls
+are specified by the macro RMATCH and RRETURN is used to return. When
+NO_RECURSE is *not* defined, these just turn into a recursive call to match()
+and a "return", respectively (possibly with some debugging if DEBUG is
+defined). However, RMATCH isn't like a function call because it's quite a
+complicated macro. It has to be used in one particular way. This shouldn't,
+however, impact performance when true recursion is being used. */
+
+/* First check that we haven't called match() too many times, or that we
+haven't exceeded the recursive call limit. */
if (md->match_call_count++ >= md->match_limit) RRETURN(PCRE_ERROR_MATCHLIMIT);
+if (rdepth >= md->match_limit_recursion) RRETURN(PCRE_ERROR_RECURSIONLIMIT);
original_ims = ims; /* Save for resetting on ')' */
utf8 = md->utf8; /* Local copy of the flag */
@@ -681,7 +709,7 @@ for (;;)
if (md->recursive != NULL && md->recursive->group_num == 0)
{
recursion_info *rec = md->recursive;
- DPRINTF(("Hit the end in a (?0) recursion\n"));
+ DPRINTF(("End of pattern in a (?0) recursion\n"));
md->recursive = rec->prevrec;
memmove(md->offset_vector, rec->offset_save,
rec->saved_max * sizeof(int));
@@ -800,7 +828,7 @@ for (;;)
cb.version = 1; /* Version 1 of the callout block */
cb.callout_number = ecode[1];
cb.offset_vector = md->offset_vector;
- cb.subject = (const char *)md->start_subject;
+ cb.subject = (PCRE_SPTR)md->start_subject;
cb.subject_length = md->end_subject - md->start_subject;
cb.start_match = md->start_match - md->start_subject;
cb.current_position = eptr - md->start_subject;
@@ -882,12 +910,17 @@ for (;;)
eptrb, match_isgroup);
if (rrc == MATCH_MATCH)
{
+ DPRINTF(("Recursion matched\n"));
md->recursive = new_recursive.prevrec;
if (new_recursive.offset_save != stacksave)
(pcre_free)(new_recursive.offset_save);
RRETURN(MATCH_MATCH);
}
- else if (rrc != MATCH_NOMATCH) RRETURN(rrc);
+ else if (rrc != MATCH_NOMATCH)
+ {
+ DPRINTF(("Recursion gave error %d\n", rrc));
+ RRETURN(rrc);
+ }
md->recursive = &new_recursive;
memcpy(md->offset_vector, new_recursive.offset_save,
@@ -1352,23 +1385,43 @@ for (;;)
if (eptr >= md->end_subject) RRETURN(MATCH_NOMATCH);
GETCHARINCTEST(c, eptr);
{
- int chartype, rqdtype;
- int othercase;
- int category = _pcre_ucp_findchar(c, &chartype, &othercase);
+ int chartype, script;
+ int category = _pcre_ucp_findprop(c, &chartype, &script);
- rqdtype = *(++ecode);
- ecode++;
-
- if (rqdtype >= 128)
+ switch(ecode[1])
{
- if ((rqdtype - 128 != category) == (op == OP_PROP))
+ case PT_ANY:
+ if (op == OP_NOTPROP) RRETURN(MATCH_NOMATCH);
+ break;
+
+ case PT_LAMP:
+ if ((chartype == ucp_Lu ||
+ chartype == ucp_Ll ||
+ chartype == ucp_Lt) == (op == OP_NOTPROP))
RRETURN(MATCH_NOMATCH);
- }
- else
- {
- if ((rqdtype != chartype) == (op == OP_PROP))
+ break;
+
+ case PT_GC:
+ if ((ecode[2] != category) == (op == OP_PROP))
+ RRETURN(MATCH_NOMATCH);
+ break;
+
+ case PT_PC:
+ if ((ecode[2] != chartype) == (op == OP_PROP))
+ RRETURN(MATCH_NOMATCH);
+ break;
+
+ case PT_SC:
+ if ((ecode[2] != script) == (op == OP_PROP))
RRETURN(MATCH_NOMATCH);
+ break;
+
+ default:
+ RRETURN(PCRE_ERROR_INTERNAL);
+ break;
}
+
+ ecode += 3;
}
break;
@@ -1379,9 +1432,8 @@ for (;;)
if (eptr >= md->end_subject) RRETURN(MATCH_NOMATCH);
GETCHARINCTEST(c, eptr);
{
- int chartype;
- int othercase;
- int category = _pcre_ucp_findchar(c, &chartype, &othercase);
+ int chartype, script;
+ int category = _pcre_ucp_findprop(c, &chartype, &script);
if (category == ucp_M) RRETURN(MATCH_NOMATCH);
while (eptr < md->end_subject)
{
@@ -1390,7 +1442,7 @@ for (;;)
{
GETCHARLEN(c, eptr, len);
}
- category = _pcre_ucp_findchar(c, &chartype, &othercase);
+ category = _pcre_ucp_findprop(c, &chartype, &script);
if (category != ucp_M) break;
eptr += len;
}
@@ -1683,8 +1735,8 @@ for (;;)
while (eptr >= pp)
{
RMATCH(rrc, eptr, ecode, offset_top, md, ims, eptrb, 0);
- eptr--;
if (rrc != MATCH_NOMATCH) RRETURN(rrc);
+ eptr--;
}
}
@@ -1841,16 +1893,12 @@ for (;;)
ecode += length;
/* If we have Unicode property support, we can use it to test the other
- case of the character, if there is one. The result of _pcre_ucp_findchar() is
- < 0 if the char isn't found, and othercase is returned as zero if there
- isn't one. */
+ case of the character, if there is one. */
if (fc != dc)
{
#ifdef SUPPORT_UCP
- int chartype;
- int othercase;
- if (_pcre_ucp_findchar(fc, &chartype, &othercase) < 0 || dc != othercase)
+ if (dc != _pcre_ucp_othercase(fc))
#endif
RRETURN(MATCH_NOMATCH);
}
@@ -1918,10 +1966,9 @@ for (;;)
#ifdef SUPPORT_UCP
int othercase;
- int chartype;
if ((ims & PCRE_CASELESS) != 0 &&
- _pcre_ucp_findchar(fc, &chartype, &othercase) >= 0 &&
- othercase > 0)
+ (othercase = _pcre_ucp_othercase(fc)) >= 0 &&
+ othercase >= 0)
oclength = _pcre_ord2utf8(othercase, occhars);
#endif /* SUPPORT_UCP */
@@ -2408,16 +2455,7 @@ for (;;)
{
prop_fail_result = ctype == OP_NOTPROP;
prop_type = *ecode++;
- if (prop_type >= 128)
- {
- prop_test_against = prop_type - 128;
- prop_test_variable = &prop_category;
- }
- else
- {
- prop_test_against = prop_type;
- prop_test_variable = &prop_chartype;
- }
+ prop_value = *ecode++;
}
else prop_type = -1;
#endif
@@ -2434,14 +2472,68 @@ for (;;)
if (min > 0)
{
#ifdef SUPPORT_UCP
- if (prop_type > 0)
+ if (prop_type >= 0)
{
- for (i = 1; i <= min; i++)
+ switch(prop_type)
{
- GETCHARINC(c, eptr);
- prop_category = _pcre_ucp_findchar(c, &prop_chartype, &prop_othercase);
- if ((*prop_test_variable == prop_test_against) == prop_fail_result)
- RRETURN(MATCH_NOMATCH);
+ case PT_ANY:
+ if (prop_fail_result) RRETURN(MATCH_NOMATCH);
+ for (i = 1; i <= min; i++)
+ {
+ if (eptr >= md->end_subject) RRETURN(MATCH_NOMATCH);
+ GETCHARINC(c, eptr);
+ }
+ break;
+
+ case PT_LAMP:
+ for (i = 1; i <= min; i++)
+ {
+ if (eptr >= md->end_subject) RRETURN(MATCH_NOMATCH);
+ GETCHARINC(c, eptr);
+ prop_category = _pcre_ucp_findprop(c, &prop_chartype, &prop_script);
+ if ((prop_chartype == ucp_Lu ||
+ prop_chartype == ucp_Ll ||
+ prop_chartype == ucp_Lt) == prop_fail_result)
+ RRETURN(MATCH_NOMATCH);
+ }
+ break;
+
+ case PT_GC:
+ for (i = 1; i <= min; i++)
+ {
+ if (eptr >= md->end_subject) RRETURN(MATCH_NOMATCH);
+ GETCHARINC(c, eptr);
+ prop_category = _pcre_ucp_findprop(c, &prop_chartype, &prop_script);
+ if ((prop_category == prop_value) == prop_fail_result)
+ RRETURN(MATCH_NOMATCH);
+ }
+ break;
+
+ case PT_PC:
+ for (i = 1; i <= min; i++)
+ {
+ if (eptr >= md->end_subject) RRETURN(MATCH_NOMATCH);
+ GETCHARINC(c, eptr);
+ prop_category = _pcre_ucp_findprop(c, &prop_chartype, &prop_script);
+ if ((prop_chartype == prop_value) == prop_fail_result)
+ RRETURN(MATCH_NOMATCH);
+ }
+ break;
+
+ case PT_SC:
+ for (i = 1; i <= min; i++)
+ {
+ if (eptr >= md->end_subject) RRETURN(MATCH_NOMATCH);
+ GETCHARINC(c, eptr);
+ prop_category = _pcre_ucp_findprop(c, &prop_chartype, &prop_script);
+ if ((prop_script == prop_value) == prop_fail_result)
+ RRETURN(MATCH_NOMATCH);
+ }
+ break;
+
+ default:
+ RRETURN(PCRE_ERROR_INTERNAL);
+ break;
}
}
@@ -2453,7 +2545,7 @@ for (;;)
for (i = 1; i <= min; i++)
{
GETCHARINCTEST(c, eptr);
- prop_category = _pcre_ucp_findchar(c, &prop_chartype, &prop_othercase);
+ prop_category = _pcre_ucp_findprop(c, &prop_chartype, &prop_script);
if (prop_category == ucp_M) RRETURN(MATCH_NOMATCH);
while (eptr < md->end_subject)
{
@@ -2462,7 +2554,7 @@ for (;;)
{
GETCHARLEN(c, eptr, len);
}
- prop_category = _pcre_ucp_findchar(c, &prop_chartype, &prop_othercase);
+ prop_category = _pcre_ucp_findprop(c, &prop_chartype, &prop_script);
if (prop_category != ucp_M) break;
eptr += len;
}
@@ -2624,17 +2716,78 @@ for (;;)
if (minimize)
{
#ifdef SUPPORT_UCP
- if (prop_type > 0)
+ if (prop_type >= 0)
{
- for (fi = min;; fi++)
+ switch(prop_type)
{
- RMATCH(rrc, eptr, ecode, offset_top, md, ims, eptrb, 0);
- if (rrc != MATCH_NOMATCH) RRETURN(rrc);
- if (fi >= max || eptr >= md->end_subject) RRETURN(MATCH_NOMATCH);
- GETCHARINC(c, eptr);
- prop_category = _pcre_ucp_findchar(c, &prop_chartype, &prop_othercase);
- if ((*prop_test_variable == prop_test_against) == prop_fail_result)
- RRETURN(MATCH_NOMATCH);
+ case PT_ANY:
+ for (fi = min;; fi++)
+ {
+ RMATCH(rrc, eptr, ecode, offset_top, md, ims, eptrb, 0);
+ if (rrc != MATCH_NOMATCH) RRETURN(rrc);
+ if (fi >= max || eptr >= md->end_subject) RRETURN(MATCH_NOMATCH);
+ GETCHARINC(c, eptr);
+ if (prop_fail_result) RRETURN(MATCH_NOMATCH);
+ }
+ break;
+
+ case PT_LAMP:
+ for (fi = min;; fi++)
+ {
+ RMATCH(rrc, eptr, ecode, offset_top, md, ims, eptrb, 0);
+ if (rrc != MATCH_NOMATCH) RRETURN(rrc);
+ if (fi >= max || eptr >= md->end_subject) RRETURN(MATCH_NOMATCH);
+ GETCHARINC(c, eptr);
+ prop_category = _pcre_ucp_findprop(c, &prop_chartype, &prop_script);
+ if ((prop_chartype == ucp_Lu ||
+ prop_chartype == ucp_Ll ||
+ prop_chartype == ucp_Lt) == prop_fail_result)
+ RRETURN(MATCH_NOMATCH);
+ }
+ break;
+
+ case PT_GC:
+ for (fi = min;; fi++)
+ {
+ RMATCH(rrc, eptr, ecode, offset_top, md, ims, eptrb, 0);
+ if (rrc != MATCH_NOMATCH) RRETURN(rrc);
+ if (fi >= max || eptr >= md->end_subject) RRETURN(MATCH_NOMATCH);
+ GETCHARINC(c, eptr);
+ prop_category = _pcre_ucp_findprop(c, &prop_chartype, &prop_script);
+ if ((prop_category == prop_value) == prop_fail_result)
+ RRETURN(MATCH_NOMATCH);
+ }
+ break;
+
+ case PT_PC:
+ for (fi = min;; fi++)
+ {
+ RMATCH(rrc, eptr, ecode, offset_top, md, ims, eptrb, 0);
+ if (rrc != MATCH_NOMATCH) RRETURN(rrc);
+ if (fi >= max || eptr >= md->end_subject) RRETURN(MATCH_NOMATCH);
+ GETCHARINC(c, eptr);
+ prop_category = _pcre_ucp_findprop(c, &prop_chartype, &prop_script);
+ if ((prop_chartype == prop_value) == prop_fail_result)
+ RRETURN(MATCH_NOMATCH);
+ }
+ break;
+
+ case PT_SC:
+ for (fi = min;; fi++)
+ {
+ RMATCH(rrc, eptr, ecode, offset_top, md, ims, eptrb, 0);
+ if (rrc != MATCH_NOMATCH) RRETURN(rrc);
+ if (fi >= max || eptr >= md->end_subject) RRETURN(MATCH_NOMATCH);
+ GETCHARINC(c, eptr);
+ prop_category = _pcre_ucp_findprop(c, &prop_chartype, &prop_script);
+ if ((prop_script == prop_value) == prop_fail_result)
+ RRETURN(MATCH_NOMATCH);
+ }
+ break;
+
+ default:
+ RRETURN(PCRE_ERROR_INTERNAL);
+ break;
}
}
@@ -2649,7 +2802,7 @@ for (;;)
if (rrc != MATCH_NOMATCH) RRETURN(rrc);
if (fi >= max || eptr >= md->end_subject) RRETURN(MATCH_NOMATCH);
GETCHARINCTEST(c, eptr);
- prop_category = _pcre_ucp_findchar(c, &prop_chartype, &prop_othercase);
+ prop_category = _pcre_ucp_findprop(c, &prop_chartype, &prop_script);
if (prop_category == ucp_M) RRETURN(MATCH_NOMATCH);
while (eptr < md->end_subject)
{
@@ -2658,7 +2811,7 @@ for (;;)
{
GETCHARLEN(c, eptr, len);
}
- prop_category = _pcre_ucp_findchar(c, &prop_chartype, &prop_othercase);
+ prop_category = _pcre_ucp_findprop(c, &prop_chartype, &prop_script);
if (prop_category != ucp_M) break;
eptr += len;
}
@@ -2783,17 +2936,74 @@ for (;;)
pp = eptr; /* Remember where we started */
#ifdef SUPPORT_UCP
- if (prop_type > 0)
+ if (prop_type >= 0)
{
- for (i = min; i < max; i++)
+ switch(prop_type)
{
- int len = 1;
- if (eptr >= md->end_subject) break;
- GETCHARLEN(c, eptr, len);
- prop_category = _pcre_ucp_findchar(c, &prop_chartype, &prop_othercase);
- if ((*prop_test_variable == prop_test_against) == prop_fail_result)
- break;
- eptr+= len;
+ case PT_ANY:
+ for (i = min; i < max; i++)
+ {
+ int len = 1;
+ if (eptr >= md->end_subject) break;
+ GETCHARLEN(c, eptr, len);
+ if (prop_fail_result) break;
+ eptr+= len;
+ }
+ break;
+
+ case PT_LAMP:
+ for (i = min; i < max; i++)
+ {
+ int len = 1;
+ if (eptr >= md->end_subject) break;
+ GETCHARLEN(c, eptr, len);
+ prop_category = _pcre_ucp_findprop(c, &prop_chartype, &prop_script);
+ if ((prop_chartype == ucp_Lu ||
+ prop_chartype == ucp_Ll ||
+ prop_chartype == ucp_Lt) == prop_fail_result)
+ break;
+ eptr+= len;
+ }
+ break;
+
+ case PT_GC:
+ for (i = min; i < max; i++)
+ {
+ int len = 1;
+ if (eptr >= md->end_subject) break;
+ GETCHARLEN(c, eptr, len);
+ prop_category = _pcre_ucp_findprop(c, &prop_chartype, &prop_script);
+ if ((prop_category == prop_value) == prop_fail_result)
+ break;
+ eptr+= len;
+ }
+ break;
+
+ case PT_PC:
+ for (i = min; i < max; i++)
+ {
+ int len = 1;
+ if (eptr >= md->end_subject) break;
+ GETCHARLEN(c, eptr, len);
+ prop_category = _pcre_ucp_findprop(c, &prop_chartype, &prop_script);
+ if ((prop_chartype == prop_value) == prop_fail_result)
+ break;
+ eptr+= len;
+ }
+ break;
+
+ case PT_SC:
+ for (i = min; i < max; i++)
+ {
+ int len = 1;
+ if (eptr >= md->end_subject) break;
+ GETCHARLEN(c, eptr, len);
+ prop_category = _pcre_ucp_findprop(c, &prop_chartype, &prop_script);
+ if ((prop_script == prop_value) == prop_fail_result)
+ break;
+ eptr+= len;
+ }
+ break;
}
/* eptr is now past the end of the maximum run */
@@ -2816,7 +3026,7 @@ for (;;)
{
if (eptr >= md->end_subject) break;
GETCHARINCTEST(c, eptr);
- prop_category = _pcre_ucp_findchar(c, &prop_chartype, &prop_othercase);
+ prop_category = _pcre_ucp_findprop(c, &prop_chartype, &prop_script);
if (prop_category == ucp_M) break;
while (eptr < md->end_subject)
{
@@ -2825,7 +3035,7 @@ for (;;)
{
GETCHARLEN(c, eptr, len);
}
- prop_category = _pcre_ucp_findchar(c, &prop_chartype, &prop_othercase);
+ prop_category = _pcre_ucp_findprop(c, &prop_chartype, &prop_script);
if (prop_category != ucp_M) break;
eptr += len;
}
@@ -2846,7 +3056,7 @@ for (;;)
{
GETCHARLEN(c, eptr, len);
}
- prop_category = _pcre_ucp_findchar(c, &prop_chartype, &prop_othercase);
+ prop_category = _pcre_ucp_findprop(c, &prop_chartype, &prop_script);
if (prop_category != ucp_M) break;
eptr--;
}
@@ -3200,9 +3410,9 @@ Returns: > 0 => success; value is the number of elements filled in
< -1 => some kind of unexpected problem
*/
-PCRE_EXPORT int
+PCRE_DATA_SCOPE int
pcre_exec(const pcre *argument_re, const pcre_extra *extra_data,
- const char *subject, int length, int start_offset, int options, int *offsets,
+ PCRE_SPTR subject, int length, int start_offset, int options, int *offsets,
int offsetcount)
{
int rc, resetcount, ocount;
@@ -3219,9 +3429,9 @@ BOOL req_byte_caseless = FALSE;
match_data match_block;
const uschar *tables;
const uschar *start_bits = NULL;
-const uschar *start_match = (const uschar *)subject + start_offset;
-const uschar *end_subject;
-const uschar *req_byte_ptr = start_match - 1;
+USPTR start_match = (USPTR)subject + start_offset;
+USPTR end_subject;
+USPTR req_byte_ptr = start_match - 1;
pcre_study_data internal_study;
const pcre_study_data *study;
@@ -3242,6 +3452,7 @@ the default values. */
study = NULL;
match_block.match_limit = MATCH_LIMIT;
+match_block.match_limit_recursion = MATCH_LIMIT_RECURSION;
match_block.callout_data = NULL;
/* The table pointer is always in native byte order. */
@@ -3255,6 +3466,8 @@ if (extra_data != NULL)
study = (const pcre_study_data *)extra_data->study_data;
if ((flags & PCRE_EXTRA_MATCH_LIMIT) != 0)
match_block.match_limit = extra_data->match_limit;
+ if ((flags & PCRE_EXTRA_MATCH_LIMIT_RECURSION) != 0)
+ match_block.match_limit_recursion = extra_data->match_limit_recursion;
if ((flags & PCRE_EXTRA_CALLOUT_DATA) != 0)
match_block.callout_data = extra_data->callout_data;
if ((flags & PCRE_EXTRA_TABLES) != 0) tables = extra_data->tables;
@@ -3289,7 +3502,7 @@ firstline = (re->options & PCRE_FIRSTLINE) != 0;
match_block.start_code = (const uschar *)external_re + re->name_table_offset +
re->name_count * re->name_entry_size;
-match_block.start_subject = (const uschar *)subject;
+match_block.start_subject = (USPTR)subject;
match_block.start_offset = start_offset;
match_block.end_subject = match_block.start_subject + length;
end_subject = match_block.end_subject;
@@ -3415,7 +3628,7 @@ the loop runs just once. */
do
{
- const uschar *save_end_subject = end_subject;
+ USPTR save_end_subject = end_subject;
/* Reset the maximum number of extractions we might see. */
@@ -3434,7 +3647,7 @@ do
if (firstline)
{
- const uschar *t = start_match;
+ USPTR t = start_match;
while (t < save_end_subject && *t != '\n') t++;
end_subject = t;
}
@@ -3504,7 +3717,7 @@ do
end_subject - start_match < REQ_BYTE_MAX &&
!match_block.partial)
{
- register const uschar *p = start_match + ((first_byte >= 0)? 1 : 0);
+ register USPTR p = start_match + ((first_byte >= 0)? 1 : 0);
/* We don't need to repeat the search if we haven't yet reached the
place we found it at last time. */
@@ -3550,7 +3763,7 @@ do
match_block.match_call_count = 0;
rc = match(start_match, match_block.start_code, 2, &match_block, ims, NULL,
- match_isgroup);
+ match_isgroup, 0);
/* When the result is no match, if the subject's first character was a
newline and the PCRE_FIRSTLINE option is set, break (which will return
diff --git a/pcre_fullinfo.c b/pcre_fullinfo.c
index cd1a9a4..4a8edc6 100644
--- a/pcre_fullinfo.c
+++ b/pcre_fullinfo.c
@@ -6,7 +6,7 @@
and semantics are as close as possible to those of the Perl 5 language.
Written by Philip Hazel
- Copyright (c) 1997-2005 University of Cambridge
+ Copyright (c) 1997-2006 University of Cambridge
-----------------------------------------------------------------------------
Redistribution and use in source and binary forms, with or without
@@ -61,7 +61,7 @@ Arguments:
Returns: 0 if data returned, negative on error
*/
-PCRE_EXPORT int
+PCRE_DATA_SCOPE int
pcre_fullinfo(const pcre *argument_re, const pcre_extra *extra_data, int what,
void *where)
{
diff --git a/pcre_get.c b/pcre_get.c
index fc4a14a..674625a 100644
--- a/pcre_get.c
+++ b/pcre_get.c
@@ -6,7 +6,7 @@
and semantics are as close as possible to those of the Perl 5 language.
Written by Philip Hazel
- Copyright (c) 1997-2005 University of Cambridge
+ Copyright (c) 1997-2006 University of Cambridge
-----------------------------------------------------------------------------
Redistribution and use in source and binary forms, with or without
diff --git a/pcre_globals.c b/pcre_globals.c
index 1a83980..f829acf 100644
--- a/pcre_globals.c
+++ b/pcre_globals.c
@@ -6,7 +6,7 @@
and semantics are as close as possible to those of the Perl 5 language.
Written by Philip Hazel
- Copyright (c) 1997-2005 University of Cambridge
+ Copyright (c) 1997-2006 University of Cambridge
-----------------------------------------------------------------------------
Redistribution and use in source and binary forms, with or without
diff --git a/pcre_info.c b/pcre_info.c
index 18741b1..b318b93 100644
--- a/pcre_info.c
+++ b/pcre_info.c
@@ -6,7 +6,7 @@
and semantics are as close as possible to those of the Perl 5 language.
Written by Philip Hazel
- Copyright (c) 1997-2005 University of Cambridge
+ Copyright (c) 1997-2006 University of Cambridge
-----------------------------------------------------------------------------
Redistribution and use in source and binary forms, with or without
@@ -68,7 +68,7 @@ Returns: number of capturing subpatterns
or negative values on error
*/
-PCRE_EXPORT int
+PCRE_DATA_SCOPE int
pcre_info(const pcre *argument_re, int *optptr, int *first_byte)
{
real_pcre internal_re;
diff --git a/pcre_internal.h b/pcre_internal.h
index a56f43c..b78fca5 100644
--- a/pcre_internal.h
+++ b/pcre_internal.h
@@ -7,7 +7,7 @@
and semantics are as close as possible to those of the Perl 5 language.
Written by Philip Hazel
- Copyright (c) 1997-2005 University of Cambridge
+ Copyright (c) 1997-2006 University of Cambridge
-----------------------------------------------------------------------------
Redistribution and use in source and binary forms, with or without
@@ -114,6 +114,23 @@ Unix, where it is defined in sys/types, so use "uschar" instead. */
typedef unsigned char uschar;
+/* When PCRE is compiled as a C++ library, the subject pointer can be replaced
+with a custom type. This makes it possible, for example, to allow pcre_exec()
+to process subject strings that are discontinuous by using a smart pointer
+class. It must always be possible to inspect all of the subject string in
+pcre_exec() because of the way it backtracks. Two macros are required in the
+normal case, for sign-unspecified and unsigned char pointers. The former is
+used for the external interface and appears in pcre.h, which is why its name
+must begin with PCRE_. */
+
+#ifdef CUSTOM_SUBJECT_PTR
+#define PCRE_SPTR CUSTOM_SUBJECT_PTR
+#define USPTR CUSTOM_SUBJECT_PTR
+#else
+#define PCRE_SPTR const char *
+#define USPTR const unsigned char *
+#endif
+
/* Include the public PCRE header and the definitions of UCP character property
values. */
@@ -146,10 +163,11 @@ case in PCRE. */
void *
pcre_memmove(unsigned char *dest, const unsigned char *src, size_t n)
{
-int i;
+size_t i;
dest += n;
src += n;
for (i = 0; i < n; ++i) *(--dest) = *(--src);
+return dest;
}
#define memmove(a, b, c) pcre_memmove(a, b, c)
#endif /* not HAVE_BCOPY */
@@ -443,6 +461,26 @@ ESC_n is defined as yet another macro, which is set in config.h to either \n
#define ESC_tee '\t'
#endif
+/* Codes for different types of Unicode property */
+
+#define PT_ANY 0 /* Any property - matches all chars */
+#define PT_LAMP 1 /* L& - the union of Lu, Ll, Lt */
+#define PT_GC 2 /* General characteristic (e.g. L) */
+#define PT_PC 3 /* Particular characteristic (e.g. Lu) */
+#define PT_SC 4 /* Script (e.g. Han) */
+
+/* Flag bits and data types for the extended class (OP_XCLASS) for classes that
+contain UTF-8 characters with values greater than 255. */
+
+#define XCL_NOT 0x01 /* Flag: this is a negative class */
+#define XCL_MAP 0x02 /* Flag: a 32-byte map is present */
+
+#define XCL_END 0 /* Marks end of individual items */
+#define XCL_SINGLE 1 /* Single item (one multibyte char) follows */
+#define XCL_RANGE 2 /* A range (two multibyte chars) follows */
+#define XCL_PROP 3 /* Unicode property (2-byte property code follows) */
+#define XCL_NOTPROP 4 /* Unicode inverted property (ditto) */
+
/* These are escaped items that aren't just an encoding of a particular data
value such as \n. They must have non-zero values, as check_escape() returns
their negation. Also, they must appear in the same order as in the opcode
@@ -458,19 +496,6 @@ enum { ESC_A = 1, ESC_G, ESC_B, ESC_b, ESC_D, ESC_d, ESC_S, ESC_s, ESC_W,
ESC_w, ESC_dum1, ESC_C, ESC_P, ESC_p, ESC_X, ESC_Z, ESC_z, ESC_E,
ESC_Q, ESC_REF };
-/* Flag bits and data types for the extended class (OP_XCLASS) for classes that
-contain UTF-8 characters with values greater than 255. */
-
-#define XCL_NOT 0x01 /* Flag: this is a negative class */
-#define XCL_MAP 0x02 /* Flag: a 32-byte map is present */
-
-#define XCL_END 0 /* Marks end of individual items */
-#define XCL_SINGLE 1 /* Single item (one multibyte char) follows */
-#define XCL_RANGE 2 /* A range (two multibyte chars) follows */
-#define XCL_PROP 3 /* Unicode property (one property code) follows */
-#define XCL_NOTPROP 4 /* Unicode inverted property (ditto) */
-
-
/* Opcode table: OP_BRA must be last, as all values >= it are used for brackets
that extract substrings. Starting from 1 (i.e. after OP_END), the values up to
OP_EOD must correspond in order to the list of escapes immediately above.
@@ -634,7 +659,7 @@ in UTF-8 mode. The code that uses this table must know about such things. */
1, /* End */ \
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* \A, \G, \B, \B, \D, \d, \S, \s, \W, \w */ \
1, 1, /* Any, Anybyte */ \
- 2, 2, 1, /* NOTPROP, PROP, EXTUNI */ \
+ 3, 3, 1, /* NOTPROP, PROP, EXTUNI */ \
1, 1, 2, 1, 1, /* \Z, \z, Opt, ^, $ */ \
2, /* Char - the minimum length */ \
2, /* Charnc - the minimum length */ \
@@ -766,7 +791,7 @@ typedef struct recursion_info {
struct recursion_info *prevrec; /* Previous recursion record (or NULL) */
int group_num; /* Number of group that was called */
const uschar *after_call; /* "Return value": points after the call in the expr */
- const uschar *save_start; /* Old value of md->start_match */
+ USPTR save_start; /* Old value of md->start_match */
int *offset_save; /* Pointer to start of saved offsets */
int saved_max; /* Number of saved offsets */
} recursion_info;
@@ -785,8 +810,9 @@ struct heapframe;
doing traditional NFA matching, so that they are thread-safe. */
typedef struct match_data {
- unsigned long int match_call_count; /* As it says */
- unsigned long int match_limit;/* As it says */
+ unsigned long int match_call_count; /* As it says */
+ unsigned long int match_limit; /* As it says */
+ unsigned long int match_limit_recursion; /* As it says */
int *offset_vector; /* Offset vector */
int offset_end; /* One past the end */
int offset_max; /* The maximum usable for return data */
@@ -801,10 +827,10 @@ typedef struct match_data {
BOOL partial; /* PARTIAL flag */
BOOL hitend; /* Hit the end of the subject at some point */
const uschar *start_code; /* For use when recursing */
- const uschar *start_subject; /* Start of the subject string */
- const uschar *end_subject; /* End of the subject string */
- const uschar *start_match; /* Start of this match attempt */
- const uschar *end_match_ptr; /* Subject position at end match */
+ USPTR start_subject; /* Start of the subject string */
+ USPTR end_subject; /* End of the subject string */
+ USPTR start_match; /* Start of this match attempt */
+ USPTR end_match_ptr; /* Subject position at end match */
int end_offset_top; /* Highwater mark at end of match */
int capture_last; /* Most recent capture number */
int start_offset; /* The start offset value */
@@ -859,12 +885,13 @@ total length. */
#define ctypes_offset (cbits_offset + cbit_length)
#define tables_length (ctypes_offset + 256)
-/* Layout of the UCP type table that translates property names into codes for
-pcre_ucp_findchar(). */
+/* Layout of the UCP type table that translates property names into types and
+codes. */
typedef struct {
const char *name;
- int value;
+ pcre_uint16 type;
+ pcre_uint16 value;
} ucp_type_table;
@@ -895,7 +922,8 @@ sense, but are not part of the PCRE public API. */
extern int _pcre_ord2utf8(int, uschar *);
extern real_pcre * _pcre_try_flipped(const real_pcre *, real_pcre *,
const pcre_study_data *, pcre_study_data *);
-extern int _pcre_ucp_findchar(const int, int *, int *);
+extern int _pcre_ucp_findprop(const int, int *, int *);
+extern int _pcre_ucp_othercase(const int);
extern int _pcre_valid_utf8(const uschar *, int);
extern BOOL _pcre_xclass(int, const uschar *);
diff --git a/pcre_maketables.c b/pcre_maketables.c
index c4954b2..abc272f 100644
--- a/pcre_maketables.c
+++ b/pcre_maketables.c
@@ -6,7 +6,7 @@
and semantics are as close as possible to those of the Perl 5 language.
Written by Philip Hazel
- Copyright (c) 1997-2005 University of Cambridge
+ Copyright (c) 1997-2006 University of Cambridge
-----------------------------------------------------------------------------
Redistribution and use in source and binary forms, with or without
@@ -86,29 +86,22 @@ for (i = 0; i < 256; i++) *p++ = tolower(i);
for (i = 0; i < 256; i++) *p++ = islower(i)? toupper(i) : tolower(i);
-/* Then the character class tables. Don't try to be clever and save effort
-on exclusive ones - in some locales things may be different. Note that the
-table for "space" includes everything "isspace" gives, including VT in the
-default locale. This makes it work for the POSIX class [:space:]. */
+/* Then the character class tables. Don't try to be clever and save effort on
+exclusive ones - in some locales things may be different. Note that the table
+for "space" includes everything "isspace" gives, including VT in the default
+locale. This makes it work for the POSIX class [:space:]. Note also that it is
+possible for a character to be alnum or alpha without being lower or upper,
+such as "male and female ordinals" (\xAA and \xBA) in the fr_FR locale (at
+least under Debian Linux's locales as of 12/2005). So we must test for alnum
+specially. */
memset(p, 0, cbit_length);
for (i = 0; i < 256; i++)
{
- if (isdigit(i))
- {
- p[cbit_digit + i/8] |= 1 << (i&7);
- p[cbit_word + i/8] |= 1 << (i&7);
- }
- if (isupper(i))
- {
- p[cbit_upper + i/8] |= 1 << (i&7);
- p[cbit_word + i/8] |= 1 << (i&7);
- }
- if (islower(i))
- {
- p[cbit_lower + i/8] |= 1 << (i&7);
- p[cbit_word + i/8] |= 1 << (i&7);
- }
+ if (isdigit(i)) p[cbit_digit + i/8] |= 1 << (i&7);
+ if (isupper(i)) p[cbit_upper + i/8] |= 1 << (i&7);
+ if (islower(i)) p[cbit_lower + i/8] |= 1 << (i&7);
+ if (isalnum(i)) p[cbit_word + i/8] |= 1 << (i&7);
if (i == '_') p[cbit_word + i/8] |= 1 << (i&7);
if (isspace(i)) p[cbit_space + i/8] |= 1 << (i&7);
if (isxdigit(i))p[cbit_xdigit + i/8] |= 1 << (i&7);
diff --git a/pcre_ord2utf8.c b/pcre_ord2utf8.c
index 82fa3c7..fc4d6de 100644
--- a/pcre_ord2utf8.c
+++ b/pcre_ord2utf8.c
@@ -6,7 +6,7 @@
and semantics are as close as possible to those of the Perl 5 language.
Written by Philip Hazel
- Copyright (c) 1997-2005 University of Cambridge
+ Copyright (c) 1997-2006 University of Cambridge
-----------------------------------------------------------------------------
Redistribution and use in source and binary forms, with or without
@@ -59,7 +59,7 @@ Arguments:
Returns: number of characters placed in the buffer
*/
-PCRE_EXPORT int
+int
_pcre_ord2utf8(int cvalue, uschar *buffer)
{
register int i, j;
diff --git a/pcre_printint.src b/pcre_printint.src
index 410f920..34f52d1 100644
--- a/pcre_printint.src
+++ b/pcre_printint.src
@@ -101,16 +101,18 @@ else
*************************************************/
static const char *
-get_ucpname(int property)
+get_ucpname(int ptype, int pvalue)
{
#ifdef SUPPORT_UCP
int i;
for (i = _pcre_utt_size; i >= 0; i--)
{
- if (property == _pcre_utt[i].value) break;
+ if (ptype == _pcre_utt[i].type && pvalue == _pcre_utt[i].value) break;
}
return (i >= 0)? _pcre_utt[i].name : "??";
#else
+ptype = ptype; /* Avoid compiler warning */
+pvalue = pvalue;
return "??";
#endif
}
@@ -250,8 +252,8 @@ for(;;)
fprintf(f, "%s", OP_names[code[1]]);
if (code[1] == OP_PROP || code[1] == OP_NOTPROP)
{
- fprintf(f, " %s ", get_ucpname(code[2]));
- extra = 1;
+ fprintf(f, " %s ", get_ucpname(code[2], code[3]));
+ extra = 2;
}
}
else extra = print_char(f, code+1, utf8);
@@ -275,8 +277,8 @@ for(;;)
fprintf(f, " %s", OP_names[code[3]]);
if (code[3] == OP_PROP || code[3] == OP_NOTPROP)
{
- fprintf(f, " %s ", get_ucpname(code[4]));
- extra = 1;
+ fprintf(f, " %s ", get_ucpname(code[4], code[5]));
+ extra = 2;
}
fprintf(f, "{");
if (*code != OP_TYPEEXACT) fprintf(f, "0,");
@@ -326,7 +328,7 @@ for(;;)
case OP_PROP:
case OP_NOTPROP:
- fprintf(f, " %s %s", OP_names[*code], get_ucpname(code[1]));
+ fprintf(f, " %s %s", OP_names[*code], get_ucpname(code[1], code[2]));
break;
/* OP_XCLASS can only occur in UTF-8 mode. However, there's no harm in
@@ -389,11 +391,15 @@ for(;;)
{
if (ch == XCL_PROP)
{
- fprintf(f, "\\p{%s}", get_ucpname(*ccode++));
+ int ptype = *ccode++;
+ int pvalue = *ccode++;
+ fprintf(f, "\\p{%s}", get_ucpname(ptype, pvalue));
}
else if (ch == XCL_NOTPROP)
{
- fprintf(f, "\\P{%s}", get_ucpname(*ccode++));
+ int ptype = *ccode++;
+ int pvalue = *ccode++;
+ fprintf(f, "\\P{%s}", get_ucpname(ptype, pvalue));
}
else
{
@@ -435,6 +441,12 @@ for(;;)
if (*ccode == OP_CRMINRANGE) fprintf(f, "?");
extra += _pcre_OP_lengths[*ccode];
break;
+
+ /* Do nothing if it's not a repeat; this code stops picky compilers
+ warning about the lack of a default code path. */
+
+ default:
+ break;
}
}
break;
diff --git a/pcre_refcount.c b/pcre_refcount.c
index 79fde42..e696581 100644
--- a/pcre_refcount.c
+++ b/pcre_refcount.c
@@ -6,7 +6,7 @@
and semantics are as close as possible to those of the Perl 5 language.
Written by Philip Hazel
- Copyright (c) 1997-2005 University of Cambridge
+ Copyright (c) 1997-2006 University of Cambridge
-----------------------------------------------------------------------------
Redistribution and use in source and binary forms, with or without
@@ -63,7 +63,7 @@ Returns: the (possibly updated) count value (a non-negative number), or
a negative error number
*/
-PCRE_EXPORT int
+PCRE_DATA_SCOPE int
pcre_refcount(pcre *argument_re, int adjust)
{
real_pcre *re = (real_pcre *)argument_re;
diff --git a/pcre_scanner.cc b/pcre_scanner.cc
index 4a66fdf..29e0d84 100644
--- a/pcre_scanner.cc
+++ b/pcre_scanner.cc
@@ -30,7 +30,6 @@
// Author: Sanjay Ghemawat
#include <vector>
-#include <algorithm> // for count()
#include <assert.h>
#include "config.h"
#include "pcre_scanner.h"
@@ -90,7 +89,12 @@ void Scanner::EnableSkip() {
int Scanner::LineNumber() const {
// TODO: Make it more efficient by keeping track of the last point
// where we computed line numbers and counting newlines since then.
- return 1 + std::count(data_.data(), input_.data(), '\n');
+ // We could use std:count, but not all systems have it. :-(
+ int count = 1;
+ for (const char* p = data_.data(); p < input_.data(); ++p)
+ if (*p == '\n')
+ ++count;
+ return count;
}
int Scanner::Offset() const {
diff --git a/pcre_scanner_unittest.cc b/pcre_scanner_unittest.cc
index e000a07..756823c 100644
--- a/pcre_scanner_unittest.cc
+++ b/pcre_scanner_unittest.cc
@@ -68,6 +68,7 @@ static void TestScanner() {
s.Consume(re, &var, &number);
CHECK_EQ(var, "alpha");
CHECK_EQ(number, 1);
+ CHECK_EQ(s.LineNumber(), 3);
s.GetNextComments(&comments);
CHECK_EQ(comments.size(), 1);
CHECK_EQ(comments[0].as_string(), " // this sets alpha\n");
diff --git a/pcre_study.c b/pcre_study.c
index 58f2414..d3ea04f 100644
--- a/pcre_study.c
+++ b/pcre_study.c
@@ -6,7 +6,7 @@
and semantics are as close as possible to those of the Perl 5 language.
Written by Philip Hazel
- Copyright (c) 1997-2005 University of Cambridge
+ Copyright (c) 1997-2006 University of Cambridge
-----------------------------------------------------------------------------
Redistribution and use in source and binary forms, with or without
@@ -401,7 +401,7 @@ Returns: pointer to a pcre_extra block, with study_data filled in and the
NULL on error or if no optimization possible
*/
-PCRE_EXPORT pcre_extra *
+PCRE_DATA_SCOPE pcre_extra *
pcre_study(const pcre *external_re, int options, const char **errorptr)
{
uschar start_bits[32];
diff --git a/pcre_tables.c b/pcre_tables.c
index f91e881..480257c 100644
--- a/pcre_tables.c
+++ b/pcre_tables.c
@@ -6,7 +6,7 @@
and semantics are as close as possible to those of the Perl 5 language.
Written by Philip Hazel
- Copyright (c) 1997-2005 University of Cambridge
+ Copyright (c) 1997-2006 University of Cambridge
-----------------------------------------------------------------------------
Redistribution and use in source and binary forms, with or without
@@ -48,7 +48,7 @@ clashes with the library. */
/* Table of sizes for the fixed-length opcodes. It's defined in a macro so that
-the definition is next to the definition of the opcodes in internal.h. */
+the definition is next to the definition of the opcodes in pcre_internal.h. */
const uschar _pcre_OP_lengths[] = { OP_LENGTHS };
@@ -82,47 +82,110 @@ const uschar _pcre_utf8_table4[] = {
2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
3,3,3,3,3,3,3,3,4,4,4,4,5,5,5,5 };
-/* This table translates Unicode property names into code values for the
-ucp_findchar() function. */
+/* This table translates Unicode property names into type and code values. It
+is searched by binary chop, so must be in collating sequence of name. */
const ucp_type_table _pcre_utt[] = {
- { "C", 128 + ucp_C },
- { "Cc", ucp_Cc },
- { "Cf", ucp_Cf },
- { "Cn", ucp_Cn },
- { "Co", ucp_Co },
- { "Cs", ucp_Cs },
- { "L", 128 + ucp_L },
- { "Ll", ucp_Ll },
- { "Lm", ucp_Lm },
- { "Lo", ucp_Lo },
- { "Lt", ucp_Lt },
- { "Lu", ucp_Lu },
- { "M", 128 + ucp_M },
- { "Mc", ucp_Mc },
- { "Me", ucp_Me },
- { "Mn", ucp_Mn },
- { "N", 128 + ucp_N },
- { "Nd", ucp_Nd },
- { "Nl", ucp_Nl },
- { "No", ucp_No },
- { "P", 128 + ucp_P },
- { "Pc", ucp_Pc },
- { "Pd", ucp_Pd },
- { "Pe", ucp_Pe },
- { "Pf", ucp_Pf },
- { "Pi", ucp_Pi },
- { "Po", ucp_Po },
- { "Ps", ucp_Ps },
- { "S", 128 + ucp_S },
- { "Sc", ucp_Sc },
- { "Sk", ucp_Sk },
- { "Sm", ucp_Sm },
- { "So", ucp_So },
- { "Z", 128 + ucp_Z },
- { "Zl", ucp_Zl },
- { "Zp", ucp_Zp },
- { "Zs", ucp_Zs }
+ { "Any", PT_ANY, 0 },
+ { "Arabic", PT_SC, ucp_Arabic },
+ { "Armenian", PT_SC, ucp_Armenian },
+ { "Bengali", PT_SC, ucp_Bengali },
+ { "Bopomofo", PT_SC, ucp_Bopomofo },
+ { "Braille", PT_SC, ucp_Braille },
+ { "Buginese", PT_SC, ucp_Buginese },
+ { "Buhid", PT_SC, ucp_Buhid },
+ { "C", PT_GC, ucp_C },
+ { "Canadian_Aboriginal", PT_SC, ucp_Canadian_Aboriginal },
+ { "Cc", PT_PC, ucp_Cc },
+ { "Cf", PT_PC, ucp_Cf },
+ { "Cherokee", PT_SC, ucp_Cherokee },
+ { "Cn", PT_PC, ucp_Cn },
+ { "Co", PT_PC, ucp_Co },
+ { "Common", PT_SC, ucp_Common },
+ { "Coptic", PT_SC, ucp_Coptic },
+ { "Cs", PT_PC, ucp_Cs },
+ { "Cypriot", PT_SC, ucp_Cypriot },
+ { "Cyrillic", PT_SC, ucp_Cyrillic },
+ { "Deseret", PT_SC, ucp_Deseret },
+ { "Devanagari", PT_SC, ucp_Devanagari },
+ { "Ethiopic", PT_SC, ucp_Ethiopic },
+ { "Georgian", PT_SC, ucp_Georgian },
+ { "Glagolitic", PT_SC, ucp_Glagolitic },
+ { "Gothic", PT_SC, ucp_Gothic },
+ { "Greek", PT_SC, ucp_Greek },
+ { "Gujarati", PT_SC, ucp_Gujarati },
+ { "Gurmukhi", PT_SC, ucp_Gurmukhi },
+ { "Han", PT_SC, ucp_Han },
+ { "Hangul", PT_SC, ucp_Hangul },
+ { "Hanunoo", PT_SC, ucp_Hanunoo },
+ { "Hebrew", PT_SC, ucp_Hebrew },
+ { "Hiragana", PT_SC, ucp_Hiragana },
+ { "Inherited", PT_SC, ucp_Inherited },
+ { "Kannada", PT_SC, ucp_Kannada },
+ { "Katakana", PT_SC, ucp_Katakana },
+ { "Kharoshthi", PT_SC, ucp_Kharoshthi },
+ { "Khmer", PT_SC, ucp_Khmer },
+ { "L", PT_GC, ucp_L },
+ { "L&", PT_LAMP, 0 },
+ { "Lao", PT_SC, ucp_Lao },
+ { "Latin", PT_SC, ucp_Latin },
+ { "Limbu", PT_SC, ucp_Limbu },
+ { "Linear_B", PT_SC, ucp_Linear_B },
+ { "Ll", PT_PC, ucp_Ll },
+ { "Lm", PT_PC, ucp_Lm },
+ { "Lo", PT_PC, ucp_Lo },
+ { "Lt", PT_PC, ucp_Lt },
+ { "Lu", PT_PC, ucp_Lu },
+ { "M", PT_GC, ucp_M },
+ { "Malayalam", PT_SC, ucp_Malayalam },
+ { "Mc", PT_PC, ucp_Mc },
+ { "Me", PT_PC, ucp_Me },
+ { "Mn", PT_PC, ucp_Mn },
+ { "Mongolian", PT_SC, ucp_Mongolian },
+ { "Myanmar", PT_SC, ucp_Myanmar },
+ { "N", PT_GC, ucp_N },
+ { "Nd", PT_PC, ucp_Nd },
+ { "New_Tai_Lue", PT_SC, ucp_New_Tai_Lue },
+ { "Nl", PT_PC, ucp_Nl },
+ { "No", PT_PC, ucp_No },
+ { "Ogham", PT_SC, ucp_Ogham },
+ { "Old_Italic", PT_SC, ucp_Old_Italic },
+ { "Old_Persian", PT_SC, ucp_Old_Persian },
+ { "Oriya", PT_SC, ucp_Oriya },
+ { "Osmanya", PT_SC, ucp_Osmanya },
+ { "P", PT_GC, ucp_P },
+ { "Pc", PT_PC, ucp_Pc },
+ { "Pd", PT_PC, ucp_Pd },
+ { "Pe", PT_PC, ucp_Pe },
+ { "Pf", PT_PC, ucp_Pf },
+ { "Pi", PT_PC, ucp_Pi },
+ { "Po", PT_PC, ucp_Po },
+ { "Ps", PT_PC, ucp_Ps },
+ { "Runic", PT_SC, ucp_Runic },
+ { "S", PT_GC, ucp_S },
+ { "Sc", PT_PC, ucp_Sc },
+ { "Shavian", PT_SC, ucp_Shavian },
+ { "Sinhala", PT_SC, ucp_Sinhala },
+ { "Sk", PT_PC, ucp_Sk },
+ { "Sm", PT_PC, ucp_Sm },
+ { "So", PT_PC, ucp_So },
+ { "Syloti_Nagri", PT_SC, ucp_Syloti_Nagri },
+ { "Syriac", PT_SC, ucp_Syriac },
+ { "Tagalog", PT_SC, ucp_Tagalog },
+ { "Tagbanwa", PT_SC, ucp_Tagbanwa },
+ { "Tai_Le", PT_SC, ucp_Tai_Le },
+ { "Tamil", PT_SC, ucp_Tamil },
+ { "Telugu", PT_SC, ucp_Telugu },
+ { "Thaana", PT_SC, ucp_Thaana },
+ { "Thai", PT_SC, ucp_Thai },
+ { "Tibetan", PT_SC, ucp_Tibetan },
+ { "Tifinagh", PT_SC, ucp_Tifinagh },
+ { "Ugaritic", PT_SC, ucp_Ugaritic },
+ { "Yi", PT_SC, ucp_Yi },
+ { "Z", PT_GC, ucp_Z },
+ { "Zl", PT_PC, ucp_Zl },
+ { "Zp", PT_PC, ucp_Zp },
+ { "Zs", PT_PC, ucp_Zs }
};
const int _pcre_utt_size = sizeof(_pcre_utt)/sizeof(ucp_type_table);
diff --git a/pcre_try_flipped.c b/pcre_try_flipped.c
index 536eb05..7174cb6 100644
--- a/pcre_try_flipped.c
+++ b/pcre_try_flipped.c
@@ -6,7 +6,7 @@
and semantics are as close as possible to those of the Perl 5 language.
Written by Philip Hazel
- Copyright (c) 1997-2005 University of Cambridge
+ Copyright (c) 1997-2006 University of Cambridge
-----------------------------------------------------------------------------
Redistribution and use in source and binary forms, with or without
@@ -94,7 +94,7 @@ Returns: the new block if is is indeed a byte-flipped regex
NULL if it is not
*/
-PCRE_EXPORT real_pcre *
+real_pcre *
_pcre_try_flipped(const real_pcre *re, real_pcre *internal_re,
const pcre_study_data *study, pcre_study_data *internal_study)
{
diff --git a/pcre_ucp_findchar.c b/pcre_ucp_findchar.c
deleted file mode 100644
index b9a4c97..0000000
--- a/pcre_ucp_findchar.c
+++ /dev/null
@@ -1,161 +0,0 @@
-/*************************************************
-* Perl-Compatible Regular Expressions *
-*************************************************/
-
-/* PCRE is a library of functions to support regular expressions whose syntax
-and semantics are as close as possible to those of the Perl 5 language.
-
- Written by Philip Hazel
- Copyright (c) 1997-2005 University of Cambridge
-
------------------------------------------------------------------------------
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are met:
-
- * Redistributions of source code must retain the above copyright notice,
- this list of conditions and the following disclaimer.
-
- * Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
- * Neither the name of the University of Cambridge nor the names of its
- contributors may be used to endorse or promote products derived from
- this software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGE.
------------------------------------------------------------------------------
-*/
-
-
-/* This module compiles code for supporting the use of Unicode character
-properties. We use the (embryonic at the time of writing) UCP library, by
-including some of its files, copies of which have been put in the PCRE
-distribution. The actual search function is reproduced here, with its name
-changed. */
-
-
-#include "pcre_internal.h"
-
-#include "ucp.h" /* Category definitions */
-#include "ucpinternal.h" /* Internal table details */
-#include "ucptable.c" /* The table itself */
-
-
-
-/*************************************************
-* Search table and return data *
-*************************************************/
-
-/* Two values are returned: the category is ucp_C, ucp_L, etc. The detailed
-character type is ucp_Lu, ucp_Nd, etc.
-
-Arguments:
- c the character value
- type_ptr the detailed character type is returned here
- case_ptr for letters, the opposite case is returned here, if there
- is one, else zero
-
-Returns: the character type category or -1 if not found
-*/
-
-PCRE_EXPORT int
-_pcre_ucp_findchar(const int c, int *type_ptr, int *case_ptr)
-{
-cnode *node = ucp_table;
-register int cc = c;
-int case_offset;
-
-for (;;)
- {
- register int d = node->f1 | ((node->f0 & f0_chhmask) << 16);
- if (cc == d) break;
- if (cc < d)
- {
- if ((node->f0 & f0_leftexists) == 0) return -1;
- node ++;
- }
- else
- {
- register int roffset = (node->f2 & f2_rightmask) >> f2_rightshift;
- if (roffset == 0) return -1;
- node += 1 << (roffset - 1);
- }
- }
-
-switch ((*type_ptr = ((node->f0 & f0_typemask) >> f0_typeshift)))
- {
- case ucp_Cc:
- case ucp_Cf:
- case ucp_Cn:
- case ucp_Co:
- case ucp_Cs:
- return ucp_C;
- break;
-
- case ucp_Ll:
- case ucp_Lu:
- case_offset = node->f2 & f2_casemask;
- if ((case_offset & 0x0100) != 0) case_offset |= 0xfffff000;
- *case_ptr = (case_offset == 0)? 0 : cc + case_offset;
- return ucp_L;
-
- case ucp_Lm:
- case ucp_Lo:
- case ucp_Lt:
- *case_ptr = 0;
- return ucp_L;
- break;
-
- case ucp_Mc:
- case ucp_Me:
- case ucp_Mn:
- return ucp_M;
- break;
-
- case ucp_Nd:
- case ucp_Nl:
- case ucp_No:
- return ucp_N;
- break;
-
- case ucp_Pc:
- case ucp_Pd:
- case ucp_Pe:
- case ucp_Pf:
- case ucp_Pi:
- case ucp_Ps:
- case ucp_Po:
- return ucp_P;
- break;
-
- case ucp_Sc:
- case ucp_Sk:
- case ucp_Sm:
- case ucp_So:
- return ucp_S;
- break;
-
- case ucp_Zl:
- case ucp_Zp:
- case ucp_Zs:
- return ucp_Z;
- break;
-
- default: /* "Should never happen" */
- return -1;
- break;
- }
-}
-
-/* End of pcre_ucp_findchar.c */
diff --git a/pcre_ucp_searchfuncs.c b/pcre_ucp_searchfuncs.c
new file mode 100644
index 0000000..ac964ca
--- /dev/null
+++ b/pcre_ucp_searchfuncs.c
@@ -0,0 +1,175 @@
+/*************************************************
+* Perl-Compatible Regular Expressions *
+*************************************************/
+
+/* PCRE is a library of functions to support regular expressions whose syntax
+and semantics are as close as possible to those of the Perl 5 language.
+
+ Written by Philip Hazel
+ Copyright (c) 1997-2006 University of Cambridge
+
+-----------------------------------------------------------------------------
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+
+ * Neither the name of the University of Cambridge nor the names of its
+ contributors may be used to endorse or promote products derived from
+ this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGE.
+-----------------------------------------------------------------------------
+*/
+
+
+/* This module contains code for searching the table of Unicode character
+properties. */
+
+#include "pcre_internal.h"
+
+#include "ucp.h" /* Category definitions */
+#include "ucpinternal.h" /* Internal table details */
+#include "ucptable.c" /* The table itself */
+
+
+/* Table to translate from particular type value to the general value. */
+
+static int ucp_gentype[] = {
+ ucp_C, ucp_C, ucp_C, ucp_C, ucp_C, /* Cc, Cf, Cn, Co, Cs */
+ ucp_L, ucp_L, ucp_L, ucp_L, ucp_L, /* Ll, Lu, Lm, Lo, Lt */
+ ucp_M, ucp_M, ucp_M, /* Mc, Me, Mn */
+ ucp_N, ucp_N, ucp_N, /* Nd, Nl, No */
+ ucp_P, ucp_P, ucp_P, ucp_P, ucp_P, /* Pc, Pd, Pe, Pf, Pi */
+ ucp_P, ucp_P, /* Ps, Po */
+ ucp_S, ucp_S, ucp_S, ucp_S, /* Sc, Sk, Sm, So */
+ ucp_Z, ucp_Z, ucp_Z /* Zl, Zp, Zs */
+};
+
+
+
+/*************************************************
+* Search table and return type *
+*************************************************/
+
+/* Three values are returned: the category is ucp_C, ucp_L, etc. The detailed
+character type is ucp_Lu, ucp_Nd, etc. The script is ucp_Latin, etc.
+
+Arguments:
+ c the character value
+ type_ptr the detailed character type is returned here
+ script_ptr the script is returned here
+
+Returns: the character type category
+*/
+
+int
+_pcre_ucp_findprop(const int c, int *type_ptr, int *script_ptr)
+{
+int bot = 0;
+int top = sizeof(ucp_table)/sizeof(cnode);
+int mid;
+
+/* The table is searched using a binary chop. You might think that using
+intermediate variables to hold some of the common expressions would speed
+things up, but tests with gcc 3.4.4 on Linux showed that, on the contrary, it
+makes things a lot slower. */
+
+for (;;)
+ {
+ if (top <= bot)
+ {
+ *type_ptr = ucp_Cn;
+ *script_ptr = ucp_Common;
+ return ucp_C;
+ }
+ mid = (bot + top) >> 1;
+ if (c == (ucp_table[mid].f0 & f0_charmask)) break;
+ if (c < (ucp_table[mid].f0 & f0_charmask)) top = mid;
+ else
+ {
+ if ((ucp_table[mid].f0 & f0_rangeflag) != 0 &&
+ c <= (ucp_table[mid].f0 & f0_charmask) +
+ (ucp_table[mid].f1 & f1_rangemask)) break;
+ bot = mid + 1;
+ }
+ }
+
+/* Found an entry in the table. Set the script and detailed type values, and
+return the general type. */
+
+*script_ptr = (ucp_table[mid].f0 & f0_scriptmask) >> f0_scriptshift;
+*type_ptr = (ucp_table[mid].f1 & f1_typemask) >> f1_typeshift;
+
+return ucp_gentype[*type_ptr];
+}
+
+
+
+/*************************************************
+* Search table and return other case *
+*************************************************/
+
+/* If the given character is a letter, and there is another case for the
+letter, return the other case. Otherwise, return -1.
+
+Arguments:
+ c the character value
+
+Returns: the other case or -1 if none
+*/
+
+int
+_pcre_ucp_othercase(const int c)
+{
+int bot = 0;
+int top = sizeof(ucp_table)/sizeof(cnode);
+int mid, offset;
+
+/* The table is searched using a binary chop. You might think that using
+intermediate variables to hold some of the common expressions would speed
+things up, but tests with gcc 3.4.4 on Linux showed that, on the contrary, it
+makes things a lot slower. */
+
+for (;;)
+ {
+ if (top <= bot) return -1;
+ mid = (bot + top) >> 1;
+ if (c == (ucp_table[mid].f0 & f0_charmask)) break;
+ if (c < (ucp_table[mid].f0 & f0_charmask)) top = mid;
+ else
+ {
+ if ((ucp_table[mid].f0 & f0_rangeflag) != 0 &&
+ c <= (ucp_table[mid].f0 & f0_charmask) +
+ (ucp_table[mid].f1 & f1_rangemask)) break;
+ bot = mid + 1;
+ }
+ }
+
+/* Found an entry in the table. Return -1 for a range entry. Otherwise return
+the other case if there is one, else -1. */
+
+if ((ucp_table[mid].f0 & f0_rangeflag) != 0) return -1;
+
+offset = ucp_table[mid].f1 & f1_casemask;
+if ((offset & f1_caseneg) != 0) offset |= f1_caseneg;
+return (offset == 0)? -1 : c + offset;
+}
+
+
+/* End of pcre_ucp_searchfuncs.c */
diff --git a/pcre_valid_utf8.c b/pcre_valid_utf8.c
index 2fe3bbb..1c6094a 100644
--- a/pcre_valid_utf8.c
+++ b/pcre_valid_utf8.c
@@ -6,7 +6,7 @@
and semantics are as close as possible to those of the Perl 5 language.
Written by Philip Hazel
- Copyright (c) 1997-2005 University of Cambridge
+ Copyright (c) 1997-2006 University of Cambridge
-----------------------------------------------------------------------------
Redistribution and use in source and binary forms, with or without
@@ -63,7 +63,7 @@ Returns: < 0 if the string is a valid UTF-8 string
>= 0 otherwise; the value is the offset of the bad byte
*/
-PCRE_EXPORT int
+int
_pcre_valid_utf8(const uschar *string, int length)
{
register const uschar *p;
diff --git a/pcre_version.c b/pcre_version.c
index 2d3080a..c2aad4d 100644
--- a/pcre_version.c
+++ b/pcre_version.c
@@ -6,7 +6,7 @@
and semantics are as close as possible to those of the Perl 5 language.
Written by Philip Hazel
- Copyright (c) 1997-2005 University of Cambridge
+ Copyright (c) 1997-2006 University of Cambridge
-----------------------------------------------------------------------------
Redistribution and use in source and binary forms, with or without
@@ -52,10 +52,13 @@ string that identifies the PCRE version that is in use. */
#define STRING(a) # a
#define XSTRING(s) STRING(s)
-PCRE_EXPORT const char *
+PCRE_DATA_SCOPE const char *
pcre_version(void)
{
-return XSTRING(PCRE_MAJOR) "." XSTRING(PCRE_MINOR) " " XSTRING(PCRE_DATE);
+return XSTRING(PCRE_MAJOR)
+ "." XSTRING(PCRE_MINOR)
+ XSTRING(PCRE_PRERELEASE)
+ " " XSTRING(PCRE_DATE);
}
/* End of pcre_version.c */
diff --git a/pcre_xclass.c b/pcre_xclass.c
index 4a4f895..57c514b 100644
--- a/pcre_xclass.c
+++ b/pcre_xclass.c
@@ -6,7 +6,7 @@
and semantics are as close as possible to those of the Perl 5 language.
Written by Philip Hazel
- Copyright (c) 1997-2005 University of Cambridge
+ Copyright (c) 1997-2006 University of Cambridge
-----------------------------------------------------------------------------
Redistribution and use in source and binary forms, with or without
@@ -60,7 +60,7 @@ Arguments:
Returns: TRUE if character matches, else FALSE
*/
-PCRE_EXPORT BOOL
+BOOL
_pcre_xclass(int c, const uschar *data)
{
int t;
@@ -100,17 +100,40 @@ while ((t = *data++) != XCL_END)
#ifdef SUPPORT_UCP
else /* XCL_PROP & XCL_NOTPROP */
{
- int chartype, othercase;
- int rqdtype = *data++;
- int category = _pcre_ucp_findchar(c, &chartype, &othercase);
- if (rqdtype >= 128)
- {
- if ((rqdtype - 128 == category) == (t == XCL_PROP)) return !negated;
- }
- else
+ int chartype, script;
+ int category = _pcre_ucp_findprop(c, &chartype, &script);
+
+ switch(*data)
{
- if ((rqdtype == chartype) == (t == XCL_PROP)) return !negated;
+ case PT_ANY:
+ if (t == XCL_PROP) return !negated;
+ break;
+
+ case PT_LAMP:
+ if ((chartype == ucp_Lu || chartype == ucp_Ll || chartype == ucp_Lt) ==
+ (t == XCL_PROP)) return !negated;
+ break;
+
+ case PT_GC:
+ if ((data[1] == category) == (t == XCL_PROP)) return !negated;
+ break;
+
+ case PT_PC:
+ if ((data[1] == chartype) == (t == XCL_PROP)) return !negated;
+ break;
+
+ case PT_SC:
+ if ((data[1] == script) == (t == XCL_PROP)) return !negated;
+ break;
+
+ /* This should never occur, but compilers may mutter if there is no
+ default. */
+
+ default:
+ return FALSE;
}
+
+ data += 2;
}
#endif /* SUPPORT_UCP */
}
diff --git a/pcrecpp.cc b/pcrecpp.cc
index 0ffd221..70d59a2 100644
--- a/pcrecpp.cc
+++ b/pcrecpp.cc
@@ -397,12 +397,16 @@ int RE::TryMatch(const StringPiece& text,
pcre_extra extra = { 0 };
if (options_.match_limit() > 0) {
- extra.flags = PCRE_EXTRA_MATCH_LIMIT;
+ extra.flags |= PCRE_EXTRA_MATCH_LIMIT;
extra.match_limit = options_.match_limit();
}
+ if (options_.match_limit_recursion() > 0) {
+ extra.flags |= PCRE_EXTRA_MATCH_LIMIT_RECURSION;
+ extra.match_limit_recursion = options_.match_limit_recursion();
+ }
int rc = pcre_exec(re, // The regular expression object
&extra,
- text.data(),
+ (text.data() == NULL) ? "" : text.data(),
text.size(),
startpos,
(anchor == UNANCHORED) ? 0 : PCRE_ANCHORED,
@@ -449,11 +453,16 @@ bool RE::DoMatchImpl(const StringPiece& text,
*consumed = vec[1];
- if (args == NULL) {
+ if (n == 0 || args == NULL) {
// We are not interested in results
return true;
}
+ if (NumberOfCapturingGroups() < n) {
+ // RE has fewer capturing groups than number of arg pointers passed in
+ return false;
+ }
+
// If we got here, we must have matched the whole pattern.
// We do not need (can not do) any more checks on the value of 'matches' here
// -- see the comment for TryMatch.
@@ -517,7 +526,7 @@ bool RE::Rewrite(string *out, const StringPiece &rewrite,
// Return the number of capturing subpatterns, or -1 if the
// regexp wasn't valid on construction.
-int RE::NumberOfCapturingGroups() {
+int RE::NumberOfCapturingGroups() const {
if (re_partial_ == NULL) return -1;
int result;
@@ -613,6 +622,7 @@ bool Arg::parse_ulong_radix(const char* str,
if (n == 0) return false;
char buf[kMaxNumberLength+1];
str = TerminateNumber(buf, str, n);
+ if (str[0] == '-') return false; // strtoul() on a negative number?!
char* end;
errno = 0;
unsigned long r = strtoul(str, &end, radix);
@@ -702,6 +712,7 @@ bool Arg::parse_ulonglong_radix(const char* str,
if (n == 0) return false;
char buf[kMaxNumberLength+1];
str = TerminateNumber(buf, str, n);
+ if (str[0] == '-') return false; // strtoull() on a negative number?!
char* end;
errno = 0;
#if defined HAVE_STRTOQ
diff --git a/pcrecpp.h.in b/pcrecpp.h
index f30d04e..5916d86 100644
--- a/pcrecpp.h.in
+++ b/pcrecpp.h
@@ -30,8 +30,8 @@
// Author: Sanjay Ghemawat
// Support for PCRE_XXX modifiers added by Giuseppe Maxia, July 2005
-#ifndef _PCRE_REGEXP_H
-#define _PCRE_REGEXP_H
+#ifndef _PCRECPP_H
+#define _PCRECPP_H
// C++ interface to the pcre regular-expression library. RE supports
// Perl-style regular expressions (with extensions like \d, \w, \s,
@@ -196,13 +196,16 @@
// RE_Options & set_caseless(bool),
// which sets or unsets the modifier.
//
-// Moreover, PCRE_CONFIG_MATCH_LIMIT can be accessed through the
+// Moreover, PCRE_EXTRA_MATCH_LIMIT can be accessed through the
// set_match_limit() and match_limit() member functions.
// Setting match_limit to a non-zero value will limit the executation of
// pcre to keep it from doing bad things like blowing the stack or taking
// an eternity to return a result. A value of 5000 is good enough to stop
// stack blowup in a 2MB thread stack. Setting match_limit to zero will
-// disable match limiting.
+// disable match limiting. Alternately, you can set match_limit_recursion()
+// which uses PCRE_EXTRA_MATCH_LIMIT_RECURSION to limit how much pcre
+// recurses. match_limit() caps the number of matches pcre does;
+// match_limit_recrusion() caps the depth of recursion.
//
// Normally, to pass one or more modifiers to a RE class, you declare
// a RE_Options object, set the appropriate options, and pass this
@@ -322,6 +325,7 @@
#include <string>
+#include <pcrecpparg.h> // defines the Arg class
// These aren't technically needed here, but we include them
// anyway so folks who include pcrecpp.h don't have to include
// all these other header files as well.
@@ -338,18 +342,18 @@ namespace pcrecpp {
(all_options_ & o) == o
// We convert user-passed pointers into special Arg objects
-class Arg;
extern Arg no_arg;
/***** Compiling regular expressions: the RE class *****/
// RE_Options allow you to set options to be passed along to pcre,
// along with other options we put on top of pcre.
-// Only 9 modifiers, plus match_limit are supported now.
+// Only 9 modifiers, plus match_limit and match_limit_recursion,
+// are supported now.
class RE_Options {
public:
// constructor
- RE_Options() : match_limit_(0), all_options_(0) {}
+ RE_Options() : match_limit_(0), match_limit_recursion_(0), all_options_(0) {}
// alternative constructor.
// To facilitate transfer of legacy code from C programs
@@ -359,7 +363,8 @@ class RE_Options {
// But new code is better off doing
// RE(pattern,
// RE_Options().set_caseless(true).set_multiline(true)).PartialMatch(str);
- RE_Options(int option_flags) : match_limit_(0), all_options_ (option_flags) {}
+ RE_Options(int option_flags) : match_limit_(0), match_limit_recursion_(0),
+ all_options_(option_flags) {}
// we're fine with the default destructor, copy constructor, etc.
// accessors and mutators
@@ -369,6 +374,12 @@ class RE_Options {
return *this;
}
+ int match_limit_recursion() const { return match_limit_recursion_; };
+ RE_Options &set_match_limit_recursion(int limit) {
+ match_limit_recursion_ = limit;
+ return *this;
+ }
+
bool caseless() const {
return PCRE_IS_SET(PCRE_CASELESS);
}
@@ -444,6 +455,7 @@ class RE_Options {
private:
int match_limit_;
+ int match_limit_recursion_;
int all_options_;
};
@@ -595,7 +607,7 @@ class RE {
// Return the number of capturing subpatterns, or -1 if the
// regexp wasn't valid on construction.
- int NumberOfCapturingGroups();
+ int NumberOfCapturingGroups() const;
private:
@@ -643,7 +655,6 @@ class RE {
pcre* re_full_; // For full matches
pcre* re_partial_; // For partial matches
const string* error_; // Error indicator (or points to empty string)
- int match_limit_; // limit on execution resources
// Don't allow the default copy or assignment constructors --
// they're expensive and too easy to do by accident.
@@ -651,136 +662,6 @@ class RE {
void operator=(const RE&);
};
-
-/***** Implementation details *****/
-
-// Hex/Octal/Binary?
-
-// Special class for parsing into objects that define a ParseFrom() method
-template <class T>
-class _RE_MatchObject {
- public:
- static inline bool Parse(const char* str, int n, void* dest) {
- T* object = reinterpret_cast<T*>(dest);
- return object->ParseFrom(str, n);
- }
-};
-
-class Arg {
- public:
- // Empty constructor so we can declare arrays of Arg
- Arg();
-
- // Constructor specially designed for NULL arguments
- Arg(void*);
-
- typedef bool (*Parser)(const char* str, int n, void* dest);
-
-// Type-specific parsers
-#define PCRE_MAKE_PARSER(type,name) \
- Arg(type* p) : arg_(p), parser_(name) { } \
- Arg(type* p, Parser parser) : arg_(p), parser_(parser) { }
-
-
- PCRE_MAKE_PARSER(char, parse_char);
- PCRE_MAKE_PARSER(unsigned char, parse_uchar);
- PCRE_MAKE_PARSER(short, parse_short);
- PCRE_MAKE_PARSER(unsigned short, parse_ushort);
- PCRE_MAKE_PARSER(int, parse_int);
- PCRE_MAKE_PARSER(unsigned int, parse_uint);
- PCRE_MAKE_PARSER(long, parse_long);
- PCRE_MAKE_PARSER(unsigned long, parse_ulong);
-#if @pcre_have_long_long@
- PCRE_MAKE_PARSER(long long, parse_longlong);
-#endif
-#if @pcre_have_ulong_long@
- PCRE_MAKE_PARSER(unsigned long long, parse_ulonglong);
-#endif
- PCRE_MAKE_PARSER(float, parse_float);
- PCRE_MAKE_PARSER(double, parse_double);
- PCRE_MAKE_PARSER(string, parse_string);
- PCRE_MAKE_PARSER(StringPiece, parse_stringpiece);
-
-#undef PCRE_MAKE_PARSER
-
- // Generic constructor
- template <class T> Arg(T*, Parser parser);
- // Generic constructor template
- template <class T> Arg(T* p)
- : arg_(p), parser_(_RE_MatchObject<T>::Parse) {
- }
-
- // Parse the data
- bool Parse(const char* str, int n) const;
-
- private:
- void* arg_;
- Parser parser_;
-
- static bool parse_null (const char* str, int n, void* dest);
- static bool parse_char (const char* str, int n, void* dest);
- static bool parse_uchar (const char* str, int n, void* dest);
- static bool parse_float (const char* str, int n, void* dest);
- static bool parse_double (const char* str, int n, void* dest);
- static bool parse_string (const char* str, int n, void* dest);
- static bool parse_stringpiece (const char* str, int n, void* dest);
-
-#define PCRE_DECLARE_INTEGER_PARSER(name) \
- private: \
- static bool parse_ ## name(const char* str, int n, void* dest); \
- static bool parse_ ## name ## _radix( \
- const char* str, int n, void* dest, int radix); \
- public: \
- static bool parse_ ## name ## _hex(const char* str, int n, void* dest); \
- static bool parse_ ## name ## _octal(const char* str, int n, void* dest); \
- static bool parse_ ## name ## _cradix(const char* str, int n, void* dest)
-
- PCRE_DECLARE_INTEGER_PARSER(short);
- PCRE_DECLARE_INTEGER_PARSER(ushort);
- PCRE_DECLARE_INTEGER_PARSER(int);
- PCRE_DECLARE_INTEGER_PARSER(uint);
- PCRE_DECLARE_INTEGER_PARSER(long);
- PCRE_DECLARE_INTEGER_PARSER(ulong);
- PCRE_DECLARE_INTEGER_PARSER(longlong);
- PCRE_DECLARE_INTEGER_PARSER(ulonglong);
-
-#undef PCRE_DECLARE_INTEGER_PARSER
-};
-
-inline Arg::Arg() : arg_(NULL), parser_(parse_null) { }
-inline Arg::Arg(void* p) : arg_(p), parser_(parse_null) { }
-
-inline bool Arg::Parse(const char* str, int n) const {
- return (*parser_)(str, n, arg_);
-}
-
-// This part of the parser, appropriate only for ints, deals with bases
-#define MAKE_INTEGER_PARSER(type, name) \
- inline Arg Hex(type* ptr) { \
- return Arg(ptr, Arg::parse_ ## name ## _hex); } \
- inline Arg Octal(type* ptr) { \
- return Arg(ptr, Arg::parse_ ## name ## _octal); } \
- inline Arg CRadix(type* ptr) { \
- return Arg(ptr, Arg::parse_ ## name ## _cradix); }
-
-MAKE_INTEGER_PARSER(short, short);
-MAKE_INTEGER_PARSER(unsigned short, ushort);
-MAKE_INTEGER_PARSER(int, int);
-MAKE_INTEGER_PARSER(unsigned int, uint);
-MAKE_INTEGER_PARSER(long, long);
-MAKE_INTEGER_PARSER(unsigned long, ulong);
-#if @pcre_have_long_long@
-MAKE_INTEGER_PARSER(long long, longlong);
-#endif
-#if @pcre_have_ulong_long@
-MAKE_INTEGER_PARSER(unsigned long long, ulonglong);
-#endif
-
-#undef PCRE_IS_SET
-#undef PCRE_SET_OR_CLEAR
-#undef MAKE_INTEGER_PARSER
-
} // namespace pcrecpp
-
-#endif /* _PCRE_REGEXP_H */
+#endif /* _PCRECPP_H */
diff --git a/pcrecpp_unittest.cc b/pcrecpp_unittest.cc
index 6a03744..ba808bc 100644
--- a/pcrecpp_unittest.cc
+++ b/pcrecpp_unittest.cc
@@ -348,21 +348,46 @@ static void TestMatchNumberPeculiarity() {
CHECK_EQ(a, "");
}
-static void TestRecursion(int size, const char *pattern, int match_limit) {
+static void TestRecursion() {
printf("Testing recursion\n");
- // Fill up a string repeating the pattern given
- string domain;
- domain.resize(size);
- int patlen = strlen(pattern);
- for (int i = 0; i < size; ++i) {
- domain[i] = pattern[i % patlen];
- }
- // Just make sure it doesn't crash due to too much recursion.
- RE_Options options;
- options.set_match_limit(match_limit);
- RE re("([a-zA-Z0-9]|-)+(\\.([a-zA-Z0-9]|-)+)*(\\.)?", options);
- re.FullMatch(domain);
+ // Get one string that passes (sometimes), one that never does.
+ string text_good("abcdefghijk");
+ string text_bad("acdefghijkl");
+
+ // According to pcretest, matching text_good against (\w+)*b
+ // requires match_limit of at least 8192, and match_recursion_limit
+ // of at least 37.
+
+ RE_Options options_ml;
+ options_ml.set_match_limit(8192);
+ RE re("(\\w+)*b", options_ml);
+ CHECK(re.PartialMatch(text_good) == true);
+ CHECK(re.PartialMatch(text_bad) == false);
+ CHECK(re.FullMatch(text_good) == false);
+ CHECK(re.FullMatch(text_bad) == false);
+
+ options_ml.set_match_limit(1024);
+ RE re2("(\\w+)*b", options_ml);
+ CHECK(re2.PartialMatch(text_good) == false); // because of match_limit
+ CHECK(re2.PartialMatch(text_bad) == false);
+ CHECK(re2.FullMatch(text_good) == false);
+ CHECK(re2.FullMatch(text_bad) == false);
+
+ RE_Options options_mlr;
+ options_mlr.set_match_limit_recursion(50);
+ RE re3("(\\w+)*b", options_mlr);
+ CHECK(re3.PartialMatch(text_good) == true);
+ CHECK(re3.PartialMatch(text_bad) == false);
+ CHECK(re3.FullMatch(text_good) == false);
+ CHECK(re3.FullMatch(text_bad) == false);
+
+ options_mlr.set_match_limit_recursion(10);
+ RE re4("(\\w+)*b", options_mlr);
+ CHECK(re4.PartialMatch(text_good) == false);
+ CHECK(re4.PartialMatch(text_bad) == false);
+ CHECK(re4.FullMatch(text_good) == false);
+ CHECK(re4.FullMatch(text_bad) == false);
}
//
@@ -1021,14 +1046,8 @@ int main(int argc, char** argv) {
CHECK(!re.error().empty());
}
- // Test that recursion is stopped: there will be some errors reported
- int matchlimit = 5000;
- int bytes = 15 * 1024; // enough to crash if there was no match limit
- TestRecursion(bytes, ".", matchlimit);
- TestRecursion(bytes, "a", matchlimit);
- TestRecursion(bytes, "a.", matchlimit);
- TestRecursion(bytes, "ab.", matchlimit);
- TestRecursion(bytes, "abc.", matchlimit);
+ // Test that recursion is stopped
+ TestRecursion();
// Test Options
if (getenv("VERBOSE_TEST") != NULL)
diff --git a/pcrecpparg.h.in b/pcrecpparg.h.in
new file mode 100644
index 0000000..ad17296
--- /dev/null
+++ b/pcrecpparg.h.in
@@ -0,0 +1,171 @@
+// Copyright (c) 2005, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+// * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+//
+// Author: Sanjay Ghemawat
+
+#ifndef _PCRECPPARG_H
+#define _PCRECPPARG_H
+
+#include <stdlib.h> // for NULL
+#include <string>
+
+namespace pcrecpp {
+
+class StringPiece;
+
+// Hex/Octal/Binary?
+
+// Special class for parsing into objects that define a ParseFrom() method
+template <class T>
+class _RE_MatchObject {
+ public:
+ static inline bool Parse(const char* str, int n, void* dest) {
+ T* object = reinterpret_cast<T*>(dest);
+ return object->ParseFrom(str, n);
+ }
+};
+
+class Arg {
+ public:
+ // Empty constructor so we can declare arrays of Arg
+ Arg();
+
+ // Constructor specially designed for NULL arguments
+ Arg(void*);
+
+ typedef bool (*Parser)(const char* str, int n, void* dest);
+
+// Type-specific parsers
+#define PCRE_MAKE_PARSER(type,name) \
+ Arg(type* p) : arg_(p), parser_(name) { } \
+ Arg(type* p, Parser parser) : arg_(p), parser_(parser) { }
+
+
+ PCRE_MAKE_PARSER(char, parse_char);
+ PCRE_MAKE_PARSER(unsigned char, parse_uchar);
+ PCRE_MAKE_PARSER(short, parse_short);
+ PCRE_MAKE_PARSER(unsigned short, parse_ushort);
+ PCRE_MAKE_PARSER(int, parse_int);
+ PCRE_MAKE_PARSER(unsigned int, parse_uint);
+ PCRE_MAKE_PARSER(long, parse_long);
+ PCRE_MAKE_PARSER(unsigned long, parse_ulong);
+#if @pcre_have_long_long@
+ PCRE_MAKE_PARSER(long long, parse_longlong);
+#endif
+#if @pcre_have_ulong_long@
+ PCRE_MAKE_PARSER(unsigned long long, parse_ulonglong);
+#endif
+ PCRE_MAKE_PARSER(float, parse_float);
+ PCRE_MAKE_PARSER(double, parse_double);
+ PCRE_MAKE_PARSER(std::string, parse_string);
+ PCRE_MAKE_PARSER(StringPiece, parse_stringpiece);
+
+#undef PCRE_MAKE_PARSER
+
+ // Generic constructor
+ template <class T> Arg(T*, Parser parser);
+ // Generic constructor template
+ template <class T> Arg(T* p)
+ : arg_(p), parser_(_RE_MatchObject<T>::Parse) {
+ }
+
+ // Parse the data
+ bool Parse(const char* str, int n) const;
+
+ private:
+ void* arg_;
+ Parser parser_;
+
+ static bool parse_null (const char* str, int n, void* dest);
+ static bool parse_char (const char* str, int n, void* dest);
+ static bool parse_uchar (const char* str, int n, void* dest);
+ static bool parse_float (const char* str, int n, void* dest);
+ static bool parse_double (const char* str, int n, void* dest);
+ static bool parse_string (const char* str, int n, void* dest);
+ static bool parse_stringpiece (const char* str, int n, void* dest);
+
+#define PCRE_DECLARE_INTEGER_PARSER(name) \
+ private: \
+ static bool parse_ ## name(const char* str, int n, void* dest); \
+ static bool parse_ ## name ## _radix( \
+ const char* str, int n, void* dest, int radix); \
+ public: \
+ static bool parse_ ## name ## _hex(const char* str, int n, void* dest); \
+ static bool parse_ ## name ## _octal(const char* str, int n, void* dest); \
+ static bool parse_ ## name ## _cradix(const char* str, int n, void* dest)
+
+ PCRE_DECLARE_INTEGER_PARSER(short);
+ PCRE_DECLARE_INTEGER_PARSER(ushort);
+ PCRE_DECLARE_INTEGER_PARSER(int);
+ PCRE_DECLARE_INTEGER_PARSER(uint);
+ PCRE_DECLARE_INTEGER_PARSER(long);
+ PCRE_DECLARE_INTEGER_PARSER(ulong);
+ PCRE_DECLARE_INTEGER_PARSER(longlong);
+ PCRE_DECLARE_INTEGER_PARSER(ulonglong);
+
+#undef PCRE_DECLARE_INTEGER_PARSER
+};
+
+inline Arg::Arg() : arg_(NULL), parser_(parse_null) { }
+inline Arg::Arg(void* p) : arg_(p), parser_(parse_null) { }
+
+inline bool Arg::Parse(const char* str, int n) const {
+ return (*parser_)(str, n, arg_);
+}
+
+// This part of the parser, appropriate only for ints, deals with bases
+#define MAKE_INTEGER_PARSER(type, name) \
+ inline Arg Hex(type* ptr) { \
+ return Arg(ptr, Arg::parse_ ## name ## _hex); } \
+ inline Arg Octal(type* ptr) { \
+ return Arg(ptr, Arg::parse_ ## name ## _octal); } \
+ inline Arg CRadix(type* ptr) { \
+ return Arg(ptr, Arg::parse_ ## name ## _cradix); }
+
+MAKE_INTEGER_PARSER(short, short);
+MAKE_INTEGER_PARSER(unsigned short, ushort);
+MAKE_INTEGER_PARSER(int, int);
+MAKE_INTEGER_PARSER(unsigned int, uint);
+MAKE_INTEGER_PARSER(long, long);
+MAKE_INTEGER_PARSER(unsigned long, ulong);
+#if @pcre_have_long_long@
+MAKE_INTEGER_PARSER(long long, longlong);
+#endif
+#if @pcre_have_ulong_long@
+MAKE_INTEGER_PARSER(unsigned long long, ulonglong);
+#endif
+
+#undef PCRE_IS_SET
+#undef PCRE_SET_OR_CLEAR
+#undef MAKE_INTEGER_PARSER
+
+} // namespace pcrecpp
+
+
+#endif /* _PCRECPPARG_H */
diff --git a/pcregrep.c b/pcregrep.c
index d390ae5..a61be10 100644
--- a/pcregrep.c
+++ b/pcregrep.c
@@ -6,7 +6,7 @@
its pattern matching. On a Unix or Win32 system it can recurse into
directories.
- Copyright (c) 1997-2005 University of Cambridge
+ Copyright (c) 1997-2006 University of Cambridge
-----------------------------------------------------------------------------
Redistribution and use in source and binary forms, with or without
@@ -38,6 +38,7 @@ POSSIBILITY OF SUCH DAMAGE.
*/
#include <ctype.h>
+#include <locale.h>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
@@ -55,7 +56,7 @@ POSSIBILITY OF SUCH DAMAGE.
typedef int BOOL;
-#define VERSION "4.1 05-Sep-2005"
+#define VERSION "4.2 09-Jan-2006"
#define MAX_PATTERN_COUNT 100
#if BUFSIZ > 8192
@@ -65,13 +66,46 @@ typedef int BOOL;
#endif
+/* Values for the "filenames" variable, which specifies options for file name
+output. The order is important; it is assumed that a file name is wanted for
+all values greater than FN_DEFAULT. */
+
+enum { FN_NONE, FN_DEFAULT, FN_ONLY, FN_NOMATCH_ONLY, FN_FORCE };
+
+/* Actions for the -d and -D options */
+
+enum { dee_READ, dee_SKIP, dee_RECURSE };
+enum { DEE_READ, DEE_SKIP };
+
+/* Actions for special processing options (flag bits) */
+
+#define PO_WORD_MATCH 0x0001
+#define PO_LINE_MATCH 0x0002
+#define PO_FIXED_STRINGS 0x0004
+
+
/*************************************************
* Global variables *
*************************************************/
+/* Jeffrey Friedl has some debugging requirements that are not part of the
+regular code. */
+
+#ifdef JFRIEDL_DEBUG
+static int S_arg = -1;
+#endif
+
+static char *colour_string = (char *)"1;31";
+static char *colour_option = NULL;
+static char *dee_option = NULL;
+static char *DEE_option = NULL;
static char *pattern_filename = NULL;
static char *stdin_name = (char *)"(standard input)";
+static char *locale = NULL;
+
+static const unsigned char *pcretables = NULL;
+
static int pattern_count = 0;
static pcre **pattern_list;
static pcre_extra **hints_list;
@@ -85,24 +119,26 @@ static pcre *exclude_compiled = NULL;
static int after_context = 0;
static int before_context = 0;
static int both_context = 0;
+static int dee_action = dee_READ;
+static int DEE_action = DEE_READ;
+static int error_count = 0;
+static int filenames = FN_DEFAULT;
+static int process_options = 0;
static BOOL count_only = FALSE;
-static BOOL filenames = TRUE;
-static BOOL filenames_only = FALSE;
-static BOOL filenames_nomatch_only = FALSE;
+static BOOL do_colour = FALSE;
static BOOL hyphenpending = FALSE;
static BOOL invert = FALSE;
static BOOL multiline = FALSE;
static BOOL number = FALSE;
+static BOOL only_matching = FALSE;
static BOOL quiet = FALSE;
-static BOOL recurse = FALSE;
static BOOL silent = FALSE;
-static BOOL whole_lines = FALSE;
-static BOOL word_match = FALSE;
/* Structure for options and list of them */
-enum { OP_NODATA, OP_STRING, OP_NUMBER };
+enum { OP_NODATA, OP_STRING, OP_OP_STRING, OP_NUMBER, OP_OP_NUMBER,
+ OP_PATLIST };
typedef struct option_item {
int type;
@@ -112,42 +148,76 @@ typedef struct option_item {
const char *help_text;
} option_item;
+/* Options without a single-letter equivalent get a negative value. This can be
+used to identify them. */
+
+#define N_COLOUR (-1)
+#define N_EXCLUDE (-2)
+#define N_HELP (-3)
+#define N_INCLUDE (-4)
+#define N_LABEL (-5)
+#define N_LOCALE (-6)
+#define N_NULL (-7)
+
static option_item optionlist[] = {
- { OP_NODATA, -1, NULL, "", " terminate options" },
- { OP_NODATA, -1, NULL, "help", "display this help and exit" },
- { OP_NUMBER, 'A', &after_context, "after-context=number", "set number of following context lines" },
- { OP_NUMBER, 'B', &before_context, "before-context=number", "set number of prior context lines" },
- { OP_NUMBER, 'C', &both_context, "context=number", "set number of context lines, before & after" },
- { OP_NODATA, 'c', NULL, "count", "print only a count of matching lines per FILE" },
- { OP_STRING, 'f', &pattern_filename, "file=path", "read patterns from file" },
- { OP_NODATA, 'h', NULL, "no-filename", "suppress the prefixing filename on output" },
- { OP_NODATA, 'i', NULL, "ignore-case", "ignore case distinctions" },
- { OP_NODATA, 'l', NULL, "files-with-matches", "print only FILE names containing matches" },
- { OP_NODATA, 'L', NULL, "files-without-match","print only FILE names not containing matches" },
- { OP_STRING, -1, &stdin_name, "label=name", "set name for standard input" },
- { OP_NODATA, 'M', NULL, "multiline", "run in multiline mode" },
- { OP_NODATA, 'n', NULL, "line-number", "print line number with output lines" },
- { OP_NODATA, 'q', NULL, "quiet", "suppress output, just set return code" },
- { OP_NODATA, 'r', NULL, "recursive", "recursively scan sub-directories" },
- { OP_STRING, -1, &exclude_pattern, "exclude=pattern","exclude matching files when recursing" },
- { OP_STRING, -1, &include_pattern, "include=pattern","include matching files when recursing" },
- { OP_NODATA, 's', NULL, "no-messages", "suppress error messages" },
- { OP_NODATA, 'u', NULL, "utf-8", "use UTF-8 mode" },
- { OP_NODATA, 'V', NULL, "version", "print version information and exit" },
- { OP_NODATA, 'v', NULL, "invert-match", "select non-matching lines" },
- { OP_NODATA, 'w', NULL, "word-regex(p)", "force PATTERN to match only as a word" },
- { OP_NODATA, 'x', NULL, "line-regex(p)", "force PATTERN to match only whole lines" },
- { OP_NODATA, 0, NULL, NULL, NULL }
+ { OP_NODATA, N_NULL, NULL, "", " terminate options" },
+ { OP_NODATA, N_HELP, NULL, "help", "display this help and exit" },
+ { OP_NUMBER, 'A', &after_context, "after-context=number", "set number of following context lines" },
+ { OP_NUMBER, 'B', &before_context, "before-context=number", "set number of prior context lines" },
+ { OP_OP_STRING, N_COLOUR, &colour_option, "color=option", "matched text color option" },
+ { OP_NUMBER, 'C', &both_context, "context=number", "set number of context lines, before & after" },
+ { OP_NODATA, 'c', NULL, "count", "print only a count of matching lines per FILE" },
+ { OP_OP_STRING, N_COLOUR, &colour_option, "colour=option", "matched text colour option" },
+ { OP_STRING, 'D', &DEE_option, "devices=action","how to handle devices, FIFOs, and sockets" },
+ { OP_STRING, 'd', &dee_option, "directories=action", "how to handle directories" },
+ { OP_PATLIST, 'e', NULL, "regex(p)", "specify pattern (may be used more than once)" },
+ { OP_NODATA, 'F', NULL, "fixed_strings", "patterns are sets of newline-separated strings" },
+ { OP_STRING, 'f', &pattern_filename, "file=path", "read patterns from file" },
+ { OP_NODATA, 'H', NULL, "with-filename", "force the prefixing filename on output" },
+ { OP_NODATA, 'h', NULL, "no-filename", "suppress the prefixing filename on output" },
+ { OP_NODATA, 'i', NULL, "ignore-case", "ignore case distinctions" },
+ { OP_NODATA, 'l', NULL, "files-with-matches", "print only FILE names containing matches" },
+ { OP_NODATA, 'L', NULL, "files-without-match","print only FILE names not containing matches" },
+ { OP_STRING, N_LABEL, &stdin_name, "label=name", "set name for standard input" },
+ { OP_STRING, N_LOCALE, &locale, "locale=locale", "use the named locale" },
+ { OP_NODATA, 'M', NULL, "multiline", "run in multiline mode" },
+ { OP_NODATA, 'n', NULL, "line-number", "print line number with output lines" },
+ { OP_NODATA, 'o', NULL, "only-matching", "show only the part of the line that matched" },
+ { OP_NODATA, 'q', NULL, "quiet", "suppress output, just set return code" },
+ { OP_NODATA, 'r', NULL, "recursive", "recursively scan sub-directories" },
+ { OP_STRING, N_EXCLUDE,&exclude_pattern, "exclude=pattern","exclude matching files when recursing" },
+ { OP_STRING, N_INCLUDE,&include_pattern, "include=pattern","include matching files when recursing" },
+#ifdef JFRIEDL_DEBUG
+ { OP_OP_NUMBER, 'S', &S_arg, "jeffS", "replace matched (sub)string with X" },
+#endif
+ { OP_NODATA, 's', NULL, "no-messages", "suppress error messages" },
+ { OP_NODATA, 'u', NULL, "utf-8", "use UTF-8 mode" },
+ { OP_NODATA, 'V', NULL, "version", "print version information and exit" },
+ { OP_NODATA, 'v', NULL, "invert-match", "select non-matching lines" },
+ { OP_NODATA, 'w', NULL, "word-regex(p)", "force patterns to match only as words" },
+ { OP_NODATA, 'x', NULL, "line-regex(p)", "force patterns to match only whole lines" },
+ { OP_NODATA, 0, NULL, NULL, NULL }
};
+/* Tables for prefixing and suffixing patterns, according to the -w, -x, and -F
+options. These set the 1, 2, and 4 bits in process_options, respectively. Note
+that the combination of -w and -x has the same effect as -x on its own, so we
+can treat them as the same. */
+
+static const char *prefix[] = {
+ "", "\\b", "^(?:", "^(?:", "\\Q", "\\b\\Q", "^(?:\\Q", "^(?:\\Q" };
+
+static const char *suffix[] = {
+ "", "\\b", ")$", ")$", "\\E", "\\E\\b", "\\E)$", "\\E)$" };
+
+
/*************************************************
-* Functions for directory scanning *
+* OS-specific functions *
*************************************************/
/* These functions are defined so that they can be made system specific,
-although at present the only ones are for Unix, Win32, and for "no directory
-recursion support". */
+although at present the only ones are for Unix, Win32, and for "no support". */
/************* Directory scanning in Unix ***********/
@@ -194,6 +264,27 @@ closedir(dir);
}
+/************* Test for regular file in Unix **********/
+
+static int
+isregfile(char *filename)
+{
+struct stat statbuf;
+if (stat(filename, &statbuf) < 0)
+ return 1; /* In the expectation that opening as a file will fail */
+return (statbuf.st_mode & S_IFMT) == S_IFREG;
+}
+
+
+/************* Test stdout for being a terminal in Unix **********/
+
+static BOOL
+is_stdout_tty(void)
+{
+return isatty(fileno(stdout));
+}
+
+
/************* Directory scanning in Win32 ***********/
/* I (Philip Hazel) have no means of testing this code. It was contributed by
@@ -292,6 +383,28 @@ free(dir);
}
+/************* Test for regular file in Win32 **********/
+
+/* I don't know how to do this, or if it can be done; assume all paths are
+regular if they are not directories. */
+
+int isregfile(char *filename)
+{
+return !isdirectory(filename)
+}
+
+
+/************* Test stdout for being a terminal in Win32 **********/
+
+/* I don't know how to do this; assume never */
+
+static BOOL
+is_stdout_tty(void)
+{
+FALSE;
+}
+
+
/************* Directory scanning when we can't do it ***********/
/* The type is void, and apart from isdirectory(), the functions do nothing. */
@@ -300,11 +413,28 @@ free(dir);
typedef void directory_type;
-int isdirectory(char *filename) { return FALSE; }
+int isdirectory(char *filename) { return 0; }
directory_type * opendirectory(char *filename) {}
char *readdirectory(directory_type *dir) {}
void closedirectory(directory_type *dir) {}
+
+/************* Test for regular when we can't do it **********/
+
+/* Assume all files are regular. */
+
+int isregfile(char *filename) { return 1; }
+
+
+/************* Test stdout for being a terminal when we can't do it **********/
+
+static BOOL
+is_stdout_tty(void)
+{
+return FALSE;
+}
+
+
#endif
@@ -336,7 +466,8 @@ return sys_errlist[n];
*************************************************/
/* This is called if we are about to lose said lines because of buffer filling,
-and at the end of the file.
+and at the end of the file. The data in the line is written using fwrite() so
+that a binary zero does not terminate it.
Arguments:
lastmatchnumber the number of the last matching line, plus one
@@ -359,7 +490,7 @@ if (after_context > 0 && lastmatchnumber > 0)
if (printname != NULL) fprintf(stdout, "%s-", printname);
if (number) fprintf(stdout, "%d-", lastmatchnumber++);
while (*pp != '\n') pp++;
- fprintf(stdout, "%.*s", pp - lastmatchrestart + 1, lastmatchrestart);
+ fwrite(lastmatchrestart, 1, pp - lastmatchrestart + 1, stdout);
lastmatchrestart = pp + 1;
}
hyphenpending = TRUE;
@@ -418,6 +549,7 @@ way, the buffer is shifted left and re-filled. */
while (ptr < endptr)
{
int i;
+ int mrc = 0;
BOOL match = FALSE;
char *t = ptr;
size_t length, linelength;
@@ -436,30 +568,77 @@ while (ptr < endptr)
/* Run through all the patterns until one matches. Note that we don't include
the final newline in the subject string. */
- for (i = 0; !match && i < pattern_count; i++)
+ for (i = 0; i < pattern_count; i++)
{
- match = pcre_exec(pattern_list[i], hints_list[i], ptr, length, 0, 0,
- offsets, 99) >= 0;
+ mrc = pcre_exec(pattern_list[i], hints_list[i], ptr, length, 0, 0,
+ offsets, 99);
+ if (mrc >= 0) { match = TRUE; break; }
+ if (mrc != PCRE_ERROR_NOMATCH)
+ {
+ fprintf(stderr, "pcregrep: pcre_exec() error %d while matching ", mrc);
+ if (pattern_count > 1) fprintf(stderr, "pattern number %d to ", i+1);
+ fprintf(stderr, "this line:\n");
+ fwrite(ptr, 1, linelength, stderr); /* In case binary zero included */
+ fprintf(stderr, "\n");
+ if (error_count == 0 &&
+ (mrc == PCRE_ERROR_MATCHLIMIT || mrc == PCRE_ERROR_RECURSIONLIMIT))
+ {
+ fprintf(stderr, "pcregrep: error %d means that a resource limit "
+ "was exceeded\n", mrc);
+ fprintf(stderr, "pcregrep: check your regex for nested unlimited loops\n");
+ }
+ if (error_count++ > 20)
+ {
+ fprintf(stderr, "pcregrep: too many errors - abandoned\n");
+ exit(2);
+ }
+ match = invert; /* No more matching; don't show the line again */
+ break;
+ }
}
- /* If it's a match or a not-match (as required), print what's wanted. */
+ /* If it's a match or a not-match (as required), do what's wanted. */
if (match != invert)
{
BOOL hyphenprinted = FALSE;
- if (filenames_nomatch_only) return 1;
+ /* We've failed if we want a file that doesn't have any matches. */
+
+ if (filenames == FN_NOMATCH_ONLY) return 1;
+
+ /* Just count if just counting is wanted. */
if (count_only) count++;
- else if (filenames_only)
+ /* If all we want is a file name, there is no need to scan any more lines
+ in the file. */
+
+ else if (filenames == FN_ONLY)
{
fprintf(stdout, "%s\n", printname);
return 0;
}
+ /* Likewise, if all we want is a yes/no answer. */
+
else if (quiet) return 0;
+ /* The --only-matching option prints just the substring that matched, and
+ does not pring any context. */
+
+ else if (only_matching)
+ {
+ if (printname != NULL) fprintf(stdout, "%s:", printname);
+ if (number) fprintf(stdout, "%d:", linenumber);
+ fwrite(ptr + offsets[0], 1, offsets[1] - offsets[0], stdout);
+ fprintf(stdout, "\n");
+ }
+
+ /* This is the default case when none of the above options is set. We print
+ the matching lines(s), possibly preceded and/or followed by other lines of
+ context. */
+
else
{
/* See if there is a requirement to print some "after" lines from a
@@ -478,7 +657,8 @@ while (ptr < endptr)
}
/* It is important to advance lastmatchrestart during this printing so
- that it interacts correctly with any "before" printing below. */
+ that it interacts correctly with any "before" printing below. Print
+ each line's data using fwrite() in case there are binary zeroes. */
while (lastmatchrestart < p)
{
@@ -486,7 +666,7 @@ while (ptr < endptr)
if (printname != NULL) fprintf(stdout, "%s-", printname);
if (number) fprintf(stdout, "%d-", lastmatchnumber++);
while (*pp != '\n') pp++;
- fprintf(stdout, "%.*s", pp - lastmatchrestart + 1, lastmatchrestart);
+ fwrite(lastmatchrestart, 1, pp - lastmatchrestart + 1, stdout);
lastmatchrestart = pp + 1;
}
if (lastmatchrestart != ptr) hyphenpending = TRUE;
@@ -510,8 +690,9 @@ while (ptr < endptr)
char *p = ptr;
while (p > buffer && (lastmatchnumber == 0 || p > lastmatchrestart) &&
- linecount++ < before_context)
+ linecount < before_context)
{
+ linecount++;
p--;
while (p > buffer && p[-1] != '\n') p--;
}
@@ -525,7 +706,7 @@ while (ptr < endptr)
if (printname != NULL) fprintf(stdout, "%s-", printname);
if (number) fprintf(stdout, "%d-", linenumber - linecount--);
while (*pp != '\n') pp++;
- fprintf(stdout, "%.*s", pp - p + 1, p);
+ fwrite(p, 1, pp - p + 1, stdout); /* In case binary zero */
p = pp + 1;
}
}
@@ -553,9 +734,42 @@ while (ptr < endptr)
linelength = endmatch - ptr;
}
- fprintf(stdout, "%.*s\n", linelength, ptr);
+ /*** NOTE: Use only fwrite() to output the data line, so that binary
+ zeroes are treated as just another data character. */
+
+ /* This extra option, for Jeffrey Friedl's debugging requirements,
+ replaces the matched string, or a specific captured string if it exists,
+ with X. When this happens, colouring is ignored. */
+
+#ifdef JFRIEDL_DEBUG
+ if (S_arg >= 0 && S_arg < mrc)
+ {
+ int first = S_arg * 2;
+ int last = first + 1;
+ fwrite(ptr, 1, offsets[first], stdout);
+ fprintf(stdout, "X");
+ fwrite(ptr + offsets[last], 1, linelength - offsets[last], stdout);
+ }
+ else
+#endif
+
+ /* We have to split the line(s) up if colouring. */
+
+ if (do_colour)
+ {
+ fwrite(ptr, 1, offsets[0], stdout);
+ fprintf(stdout, "%c[%sm", 0x1b, colour_string);
+ fwrite(ptr + offsets[0], 1, offsets[1] - offsets[0], stdout);
+ fprintf(stdout, "%c[00m", 0x1b);
+ fwrite(ptr + offsets[1], 1, linelength - offsets[1], stdout);
+ }
+ else fwrite(ptr, 1, linelength, stdout);
+
+ fprintf(stdout, "\n");
}
+ /* End of doing what has to be done for a match */
+
rc = 0; /* Had some success */
/* Remember where the last match happened for after_context. We remember
@@ -601,13 +815,16 @@ while (ptr < endptr)
/* End of file; print final "after" lines if wanted; do_after_lines sets
hyphenpending if it prints something. */
-do_after_lines(lastmatchnumber, lastmatchrestart, endptr, printname);
-hyphenpending |= endhyphenpending;
+if (!only_matching && !count_only)
+ {
+ do_after_lines(lastmatchnumber, lastmatchrestart, endptr, printname);
+ hyphenpending |= endhyphenpending;
+ }
/* Print the file name if we are looking for those without matches and there
were none. If we found a match, we won't have got this far. */
-if (filenames_nomatch_only)
+if (filenames == FN_NOMATCH_ONLY)
{
fprintf(stdout, "%s\n", printname);
return 0;
@@ -635,9 +852,7 @@ recursing; if it's a file, grep it.
Arguments:
pathname the path to investigate
- dir_recurse TRUE if recursing is wanted (-r)
- show_filenames TRUE if file names are wanted for multiple files, except
- for the only file at top level when not filenames_only
+ dir_recurse TRUE if recursing is wanted (-r or -drecurse)
only_one_at_top TRUE if the path is the only one at toplevel
Returns: 0 if there was at least one match
@@ -648,69 +863,77 @@ However, file opening failures are suppressed if "silent" is set.
*/
static int
-grep_or_recurse(char *pathname, BOOL dir_recurse, BOOL show_filenames,
- BOOL only_one_at_top)
+grep_or_recurse(char *pathname, BOOL dir_recurse, BOOL only_one_at_top)
{
int rc = 1;
int sep;
FILE *in;
-char *printname;
/* If the file name is "-" we scan stdin */
if (strcmp(pathname, "-") == 0)
{
return pcregrep(stdin,
- (filenames_only || filenames_nomatch_only ||
- (show_filenames && !only_one_at_top))?
+ (filenames > FN_DEFAULT || (filenames == FN_DEFAULT && !only_one_at_top))?
stdin_name : NULL);
}
-/* If the file is a directory and we are recursing, scan each file within it,
-subject to any include or exclude patterns that were set. The scanning code is
-localized so it can be made system-specific. */
-if ((sep = isdirectory(pathname)) != 0 && dir_recurse)
- {
- char buffer[1024];
- char *nextfile;
- directory_type *dir = opendirectory(pathname);
+/* If the file is a directory, skip if skipping or if we are recursing, scan
+each file within it, subject to any include or exclude patterns that were set.
+The scanning code is localized so it can be made system-specific. */
- if (dir == NULL)
+if ((sep = isdirectory(pathname)) != 0)
+ {
+ if (dee_action == dee_SKIP) return 1;
+ if (dee_action == dee_RECURSE)
{
- if (!silent)
- fprintf(stderr, "pcregrep: Failed to open directory %s: %s\n", pathname,
- strerror(errno));
- return 2;
- }
+ char buffer[1024];
+ char *nextfile;
+ directory_type *dir = opendirectory(pathname);
- while ((nextfile = readdirectory(dir)) != NULL)
- {
- int frc, blen;
- sprintf(buffer, "%.512s%c%.128s", pathname, sep, nextfile);
- blen = strlen(buffer);
+ if (dir == NULL)
+ {
+ if (!silent)
+ fprintf(stderr, "pcregrep: Failed to open directory %s: %s\n", pathname,
+ strerror(errno));
+ return 2;
+ }
+
+ while ((nextfile = readdirectory(dir)) != NULL)
+ {
+ int frc, blen;
+ sprintf(buffer, "%.512s%c%.128s", pathname, sep, nextfile);
+ blen = strlen(buffer);
- if (exclude_compiled != NULL &&
- pcre_exec(exclude_compiled, NULL, buffer, blen, 0, 0, NULL, 0) >= 0)
- continue;
+ if (exclude_compiled != NULL &&
+ pcre_exec(exclude_compiled, NULL, buffer, blen, 0, 0, NULL, 0) >= 0)
+ continue;
- if (include_compiled != NULL &&
- pcre_exec(include_compiled, NULL, buffer, blen, 0, 0, NULL, 0) < 0)
- continue;
+ if (include_compiled != NULL &&
+ pcre_exec(include_compiled, NULL, buffer, blen, 0, 0, NULL, 0) < 0)
+ continue;
- frc = grep_or_recurse(buffer, dir_recurse, TRUE, FALSE);
- if (frc > 1) rc = frc;
- else if (frc == 0 && rc == 1) rc = 0;
- }
+ frc = grep_or_recurse(buffer, dir_recurse, FALSE);
+ if (frc > 1) rc = frc;
+ else if (frc == 0 && rc == 1) rc = 0;
+ }
- closedirectory(dir);
- return rc;
+ closedirectory(dir);
+ return rc;
+ }
}
-/* If the file is not a directory, or we are not recursing, scan it. If this is
-the first and only argument at top level, we don't show the file name (unless
-we are only showing the file name). Otherwise, control is via the
-show_filenames variable. */
+/* If the file is not a directory and not a regular file, skip it if that's
+been requested. */
+
+else if (!isregfile(pathname) && DEE_action == DEE_SKIP) return 1;
+
+/* Control reaches here if we have a regular file, or if we have a directory
+and recursion or skipping was not requested, or if we have anything else and
+skipping was not requested. The scan proceeds. If this is the first and only
+argument at top level, we don't show the file name, unless we are only showing
+the file name, or the filename was forced (-H). */
in = fopen(pathname, "r");
if (in == NULL)
@@ -721,10 +944,8 @@ if (in == NULL)
return 2;
}
-printname = (filenames_only || filenames_nomatch_only ||
- (show_filenames && !only_one_at_top))? pathname : NULL;
-
-rc = pcregrep(in, printname);
+rc = pcregrep(in, (filenames > FN_DEFAULT ||
+ (filenames == FN_DEFAULT && !only_one_at_top))? pathname : NULL);
fclose(in);
return rc;
@@ -740,7 +961,13 @@ return rc;
static int
usage(int rc)
{
-fprintf(stderr, "Usage: pcregrep [-LMVcfhilnqrsvwx] [long-options] [pattern] [file1 file2 ...]\n");
+option_item *op;
+fprintf(stderr, "Usage: pcregrep [-");
+for (op = optionlist; op->one_char != 0; op++)
+ {
+ if (op->one_char > 0) fprintf(stderr, "%c", op->one_char);
+ }
+fprintf(stderr, "] [long options] [pattern] [files]\n");
fprintf(stderr, "Type `pcregrep --help' for more information.\n");
return rc;
}
@@ -759,8 +986,8 @@ option_item *op;
printf("Usage: pcregrep [OPTION]... [PATTERN] [FILE1 FILE2 ...]\n");
printf("Search for PATTERN in each FILE or standard input.\n");
-printf("PATTERN must be present if -f is not used.\n");
-printf("\"-\" can be used as a file name to mean STDIN.\n");
+printf("PATTERN must be present if neither -e nor -f is used.\n");
+printf("\"-\" can be used as a file name to mean STDIN.\n\n");
printf("Example: pcregrep -i 'hello.*world' menu.h main.c\n\n");
printf("Options:\n");
@@ -796,21 +1023,24 @@ handle_option(int letter, int options)
{
switch(letter)
{
- case -1: help(); exit(0);
+ case N_HELP: help(); exit(0);
case 'c': count_only = TRUE; break;
- case 'h': filenames = FALSE; break;
+ case 'F': process_options |= PO_FIXED_STRINGS; break;
+ case 'H': filenames = FN_FORCE; break;
+ case 'h': filenames = FN_NONE; break;
case 'i': options |= PCRE_CASELESS; break;
- case 'l': filenames_only = TRUE; break;
- case 'L': filenames_nomatch_only = TRUE; break;
+ case 'l': filenames = FN_ONLY; break;
+ case 'L': filenames = FN_NOMATCH_ONLY; break;
case 'M': multiline = TRUE; options |= PCRE_MULTILINE|PCRE_FIRSTLINE; break;
case 'n': number = TRUE; break;
+ case 'o': only_matching = TRUE; break;
case 'q': quiet = TRUE; break;
- case 'r': recurse = TRUE; break;
+ case 'r': dee_action = dee_RECURSE; break;
case 's': silent = TRUE; break;
case 'u': options |= PCRE_UTF8; break;
case 'v': invert = TRUE; break;
- case 'w': word_match = TRUE; break;
- case 'x': whole_lines = TRUE; break;
+ case 'w': process_options |= PO_WORD_MATCH; break;
+ case 'x': process_options |= PO_LINE_MATCH; break;
case 'V':
fprintf(stderr, "pcregrep version %s using ", VERSION);
@@ -830,6 +1060,134 @@ return options;
/*************************************************
+* Construct printed ordinal *
+*************************************************/
+
+/* This turns a number into "1st", "3rd", etc. */
+
+static char *
+ordin(int n)
+{
+static char buffer[8];
+char *p = buffer;
+sprintf(p, "%d", n);
+while (*p != 0) p++;
+switch (n%10)
+ {
+ case 1: strcpy(p, "st"); break;
+ case 2: strcpy(p, "nd"); break;
+ case 3: strcpy(p, "rd"); break;
+ default: strcpy(p, "th"); break;
+ }
+return buffer;
+}
+
+
+
+/*************************************************
+* Compile a single pattern *
+*************************************************/
+
+/* When the -F option has been used, this is called for each substring.
+Otherwise it's called for each supplied pattern.
+
+Arguments:
+ pattern the pattern string
+ options the PCRE options
+ filename the file name, or NULL for a command-line pattern
+ count 0 if this is the only command line pattern, or
+ number of the command line pattern, or
+ linenumber for a pattern from a file
+
+Returns: TRUE on success, FALSE after an error
+*/
+
+static BOOL
+compile_single_pattern(char *pattern, int options, char *filename, int count)
+{
+char buffer[MBUFTHIRD + 16];
+const char *error;
+int errptr;
+
+if (pattern_count >= MAX_PATTERN_COUNT)
+ {
+ fprintf(stderr, "pcregrep: Too many %spatterns (max %d)\n",
+ (filename == NULL)? "command-line " : "", MAX_PATTERN_COUNT);
+ return FALSE;
+ }
+
+sprintf(buffer, "%s%.*s%s", prefix[process_options], MBUFTHIRD, pattern,
+ suffix[process_options]);
+pattern_list[pattern_count] =
+ pcre_compile(buffer, options, &error, &errptr, pcretables);
+if (pattern_list[pattern_count++] != NULL) return TRUE;
+
+/* Handle compile errors */
+
+errptr -= (int)strlen(prefix[process_options]);
+if (errptr > (int)strlen(pattern)) errptr = (int)strlen(pattern);
+
+if (filename == NULL)
+ {
+ if (count == 0)
+ fprintf(stderr, "pcregrep: Error in command-line regex "
+ "at offset %d: %s\n", errptr, error);
+ else
+ fprintf(stderr, "pcregrep: Error in %s command-line regex "
+ "at offset %d: %s\n", ordin(count), errptr, error);
+ }
+else
+ {
+ fprintf(stderr, "pcregrep: Error in regex in line %d of %s "
+ "at offset %d: %s\n", count, filename, errptr, error);
+ }
+
+return FALSE;
+}
+
+
+
+/*************************************************
+* Compile one supplied pattern *
+*************************************************/
+
+/* When the -F option has been used, each string may be a list of strings,
+separated by newlines. They will be matched literally.
+
+Arguments:
+ pattern the pattern string
+ options the PCRE options
+ filename the file name, or NULL for a command-line pattern
+ count 0 if this is the only command line pattern, or
+ number of the command line pattern, or
+ linenumber for a pattern from a file
+
+Returns: TRUE on success, FALSE after an error
+*/
+
+static BOOL
+compile_pattern(char *pattern, int options, char *filename, int count)
+{
+if ((process_options & PO_FIXED_STRINGS) != 0)
+ {
+ char buffer[MBUFTHIRD];
+ for(;;)
+ {
+ char *p = strchr(pattern, '\n');
+ if (p == NULL)
+ return compile_single_pattern(pattern, options, filename, count);
+ sprintf(buffer, "%.*s", p - pattern, pattern);
+ pattern = p + 1;
+ if (!compile_single_pattern(buffer, options, filename, count))
+ return FALSE;
+ }
+ }
+else return compile_single_pattern(pattern, options, filename, count);
+}
+
+
+
+/*************************************************
* Main program *
*************************************************/
@@ -840,10 +1198,13 @@ main(int argc, char **argv)
{
int i, j;
int rc = 1;
-int options = 0;
+int pcre_options = 0;
+int cmd_pattern_count = 0;
int errptr;
-const char *error;
BOOL only_one_at_top;
+char *patterns[MAX_PATTERN_COUNT];
+const char *locale_from = "--locale";
+const char *error;
/* Process the options */
@@ -857,11 +1218,11 @@ for (i = 1; i < argc; i++)
if (argv[i][0] != '-') break;
/* If we hit an argument that is just "-", it may be a reference to STDIN,
- but only if we have previously had -f to define the patterns. */
+ but only if we have previously had -e or -f to define the patterns. */
if (argv[i][1] == 0)
{
- if (pattern_filename != NULL) break;
+ if (pattern_filename != NULL || pattern_count > 0) break;
else exit(usage(2));
}
@@ -883,9 +1244,9 @@ for (i = 1; i < argc; i++)
/* Some long options have data that follows after =, for example file=name.
Some options have variations in the long name spelling: specifically, we
allow "regexp" because GNU grep allows it, though I personally go along
- with Jeff Friedl in preferring "regex" without the "p". These options are
- entered in the table as "regex(p)". No option is in both these categories,
- fortunately. */
+ with Jeffrey Friedl and Larry Wall in preferring "regex" without the "p".
+ These options are entered in the table as "regex(p)". No option is in both
+ these categories, fortunately. */
for (op = optionlist; op->one_char != 0; op++)
{
@@ -955,42 +1316,94 @@ for (i = 1; i < argc; i++)
option_data = s+1;
break;
}
- options = handle_option(*s++, options);
+ pcre_options = handle_option(*s++, pcre_options);
}
}
- /* At this point we should have op pointing to a matched option */
+ /* At this point we should have op pointing to a matched option. If the type
+ is NO_DATA, it means that there is no data, and the option might set
+ something in the PCRE options. */
if (op->type == OP_NODATA)
- options = handle_option(op->one_char, options);
- else
{
- if (*option_data == 0)
+ pcre_options = handle_option(op->one_char, pcre_options);
+ continue;
+ }
+
+ /* If the option type is OP_OP_STRING or OP_OP_NUMBER, it's an option that
+ either has a value or defaults to something. It cannot have data in a
+ separate item. At the moment, the only such options are "colo(u)r" and
+ Jeffrey Friedl's special debugging option. */
+
+ if (*option_data == 0 &&
+ (op->type == OP_OP_STRING || op->type == OP_OP_NUMBER))
+ {
+ switch (op->one_char)
{
- if (i >= argc - 1 || longopwasequals)
- {
- fprintf(stderr, "pcregrep: Data missing after %s\n", argv[i]);
- exit(usage(2));
- }
- option_data = argv[++i];
+ case N_COLOUR:
+ colour_option = (char *)"auto";
+ break;
+#ifdef JFRIEDL_DEBUG
+ case 'S':
+ S_arg = 0;
+ break;
+#endif
}
+ continue;
+ }
+
+ /* Otherwise, find the data string for the option. */
- if (op->type == OP_STRING) *((char **)op->dataptr) = option_data; else
+ if (*option_data == 0)
+ {
+ if (i >= argc - 1 || longopwasequals)
{
- char *endptr;
- int n = strtoul(option_data, &endptr, 10);
- if (*endptr != 0)
+ fprintf(stderr, "pcregrep: Data missing after %s\n", argv[i]);
+ exit(usage(2));
+ }
+ option_data = argv[++i];
+ }
+
+ /* If the option type is OP_PATLIST, it's the -e option, which can be called
+ multiple times to create a list of patterns. */
+
+ if (op->type == OP_PATLIST)
+ {
+ if (cmd_pattern_count >= MAX_PATTERN_COUNT)
+ {
+ fprintf(stderr, "pcregrep: Too many command-line patterns (max %d)\n",
+ MAX_PATTERN_COUNT);
+ return 2;
+ }
+ patterns[cmd_pattern_count++] = option_data;
+ }
+
+ /* Otherwise, deal with single string or numeric data values. */
+
+ else if (op->type != OP_NUMBER && op->type != OP_OP_NUMBER)
+ {
+ *((char **)op->dataptr) = option_data;
+ }
+ else
+ {
+ char *endptr;
+ int n = strtoul(option_data, &endptr, 10);
+ if (*endptr != 0)
+ {
+ if (longop)
{
- if (longop)
- fprintf(stderr, "pcregrep: Malformed number \"%s\" after --%s\n",
- option_data, op->long_name);
- else
- fprintf(stderr, "pcregrep: Malformed number \"%s\" after -%c\n",
- option_data, op->one_char);
- exit(usage(2));
+ char *equals = strchr(op->long_name, '=');
+ int nlen = (equals == NULL)? (int)strlen(op->long_name) :
+ equals - op->long_name;
+ fprintf(stderr, "pcregrep: Malformed number \"%s\" after --%.*s\n",
+ option_data, nlen, op->long_name);
}
- *((int *)op->dataptr) = n;
+ else
+ fprintf(stderr, "pcregrep: Malformed number \"%s\" after -%c\n",
+ option_data, op->one_char);
+ exit(usage(2));
}
+ *((int *)op->dataptr) = n;
}
}
@@ -1003,102 +1416,158 @@ if (both_context > 0)
if (before_context == 0) before_context = both_context;
}
-pattern_list = (pcre **)malloc(MAX_PATTERN_COUNT * sizeof(pcre *));
-hints_list = (pcre_extra **)malloc(MAX_PATTERN_COUNT * sizeof(pcre_extra *));
+/* If a locale has not been provided as an option, see if the LC_CTYPE or
+LC_ALL environment variable is set, and if so, use it. */
-if (pattern_list == NULL || hints_list == NULL)
+if (locale == NULL)
{
- fprintf(stderr, "pcregrep: malloc failed\n");
- return 2;
+ locale = getenv("LC_ALL");
+ locale_from = "LCC_ALL";
}
-/* Compile the regular expression(s). */
-
-if (pattern_filename != NULL)
+if (locale == NULL)
{
- FILE *f = fopen(pattern_filename, "r");
- char buffer[MBUFTHIRD + 16];
- char *rdstart;
- int adjust = 0;
+ locale = getenv("LC_CTYPE");
+ locale_from = "LC_CTYPE";
+ }
- if (f == NULL)
+/* If a locale has been provided, set it, and generate the tables the PCRE
+needs. Otherwise, pcretables==NULL, which causes the use of default tables. */
+
+if (locale != NULL)
+ {
+ if (setlocale(LC_CTYPE, locale) == NULL)
{
- fprintf(stderr, "pcregrep: Failed to open %s: %s\n", pattern_filename,
- strerror(errno));
+ fprintf(stderr, "pcregrep: Failed to set locale %s (obtained from %s)\n",
+ locale, locale_from);
return 2;
}
+ pcretables = pcre_maketables();
+ }
- if (whole_lines)
+/* Sort out colouring */
+
+if (colour_option != NULL && strcmp(colour_option, "never") != 0)
+ {
+ if (strcmp(colour_option, "always") == 0) do_colour = TRUE;
+ else if (strcmp(colour_option, "auto") == 0) do_colour = is_stdout_tty();
+ else
{
- strcpy(buffer, "^(?:");
- adjust = 4;
+ fprintf(stderr, "pcregrep: Unknown colour setting \"%s\"\n",
+ colour_option);
+ return 2;
}
- else if (word_match)
+ if (do_colour)
{
- strcpy(buffer, "\\b");
- adjust = 2;
+ char *cs = getenv("PCREGREP_COLOUR");
+ if (cs == NULL) cs = getenv("PCREGREP_COLOR");
+ if (cs != NULL) colour_string = cs;
}
+ }
+
+/* Interpret the text values for -d and -D */
- rdstart = buffer + adjust;
- while (fgets(rdstart, MBUFTHIRD, f) != NULL)
+if (dee_option != NULL)
+ {
+ if (strcmp(dee_option, "read") == 0) dee_action = dee_READ;
+ else if (strcmp(dee_option, "recurse") == 0) dee_action = dee_RECURSE;
+ else if (strcmp(dee_option, "skip") == 0) dee_action = dee_SKIP;
+ else
{
- char *s = rdstart + (int)strlen(rdstart);
- if (pattern_count >= MAX_PATTERN_COUNT)
- {
- fprintf(stderr, "pcregrep: Too many patterns in file (max %d)\n",
- MAX_PATTERN_COUNT);
- return 2;
- }
- while (s > rdstart && isspace((unsigned char)(s[-1]))) s--;
- if (s == rdstart) continue;
- if (whole_lines) strcpy(s, ")$");
- else if (word_match)strcpy(s, "\\b");
- else *s = 0;
- pattern_list[pattern_count] = pcre_compile(buffer, options, &error,
- &errptr, NULL);
- if (pattern_list[pattern_count++] == NULL)
- {
- fprintf(stderr, "pcregrep: Error in regex number %d at offset %d: %s\n",
- pattern_count, errptr - adjust, error);
- return 2;
- }
+ fprintf(stderr, "pcregrep: Invalid value \"%s\" for -d\n", dee_option);
+ return 2;
+ }
+ }
+
+if (DEE_option != NULL)
+ {
+ if (strcmp(DEE_option, "read") == 0) DEE_action = DEE_READ;
+ else if (strcmp(DEE_option, "skip") == 0) DEE_action = DEE_SKIP;
+ else
+ {
+ fprintf(stderr, "pcregrep: Invalid value \"%s\" for -D\n", DEE_option);
+ return 2;
}
- fclose(f);
}
-/* If no file name, a single regex must be given inline. */
+/* Check the value for Jeff Friedl's debugging option. */
-else
+#ifdef JFRIEDL_DEBUG
+if (S_arg > 9)
+ {
+ fprintf(stderr, "pcregrep: bad value for -S option\n");
+ return 2;
+ }
+#endif
+
+/* Get memory to store the pattern and hints lists. */
+
+pattern_list = (pcre **)malloc(MAX_PATTERN_COUNT * sizeof(pcre *));
+hints_list = (pcre_extra **)malloc(MAX_PATTERN_COUNT * sizeof(pcre_extra *));
+
+if (pattern_list == NULL || hints_list == NULL)
{
- char buffer[MBUFTHIRD + 16];
- char *pat;
- int adjust = 0;
+ fprintf(stderr, "pcregrep: malloc failed\n");
+ return 2;
+ }
+/* If no patterns were provided by -e, and there is no file provided by -f,
+the first argument is the one and only pattern, and it must exist. */
+
+if (cmd_pattern_count == 0 && pattern_filename == NULL)
+ {
if (i >= argc) return usage(2);
+ patterns[cmd_pattern_count++] = argv[i++];
+ }
+
+/* Compile the patterns that were provided on the command line, either by
+multiple uses of -e or as a single unkeyed pattern. */
- if (whole_lines)
+for (j = 0; j < cmd_pattern_count; j++)
+ {
+ if (!compile_pattern(patterns[j], pcre_options, NULL,
+ (j == 0 && cmd_pattern_count == 1)? 0 : j + 1))
+ return 2;
+ }
+
+/* Compile the regular expressions that are provided in a file. */
+
+if (pattern_filename != NULL)
+ {
+ int linenumber = 0;
+ FILE *f;
+ char *filename;
+ char buffer[MBUFTHIRD];
+
+ if (strcmp(pattern_filename, "-") == 0)
{
- sprintf(buffer, "^(?:%.*s)$", MBUFTHIRD, argv[i++]);
- pat = buffer;
- adjust = 4;
+ f = stdin;
+ filename = stdin_name;
}
- else if (word_match)
+ else
{
- sprintf(buffer, "\\b%.*s\\b", MBUFTHIRD, argv[i++]);
- pat = buffer;
- adjust = 2;
+ f = fopen(pattern_filename, "r");
+ if (f == NULL)
+ {
+ fprintf(stderr, "pcregrep: Failed to open %s: %s\n", pattern_filename,
+ strerror(errno));
+ return 2;
+ }
+ filename = pattern_filename;
}
- else pat = argv[i++];
-
- pattern_list[0] = pcre_compile(pat, options, &error, &errptr, NULL);
- if (pattern_list[0] == NULL)
+ while (fgets(buffer, MBUFTHIRD, f) != NULL)
{
- fprintf(stderr, "pcregrep: Error in regex at offset %d: %s\n",
- errptr - adjust, error);
- return 2;
+ char *s = buffer + (int)strlen(buffer);
+ while (s > buffer && isspace((unsigned char)(s[-1]))) s--;
+ *s = 0;
+ linenumber++;
+ if (buffer[0] == 0) continue; /* Skip blank lines */
+ if (!compile_pattern(buffer, pcre_options, filename, linenumber))
+ return 2;
}
- pattern_count++;
+
+ if (f != stdin) fclose(f);
}
/* Study the regular expressions, as we will be running them many times */
@@ -1119,7 +1588,8 @@ for (j = 0; j < pattern_count; j++)
if (exclude_pattern != NULL)
{
- exclude_compiled = pcre_compile(exclude_pattern, 0, &error, &errptr, NULL);
+ exclude_compiled = pcre_compile(exclude_pattern, 0, &error, &errptr,
+ pcretables);
if (exclude_compiled == NULL)
{
fprintf(stderr, "pcregrep: Error in 'exclude' regex at offset %d: %s\n",
@@ -1130,7 +1600,8 @@ if (exclude_pattern != NULL)
if (include_pattern != NULL)
{
- include_compiled = pcre_compile(include_pattern, 0, &error, &errptr, NULL);
+ include_compiled = pcre_compile(include_pattern, 0, &error, &errptr,
+ pcretables);
if (include_compiled == NULL)
{
fprintf(stderr, "pcregrep: Error in 'include' regex at offset %d: %s\n",
@@ -1139,21 +1610,22 @@ if (include_pattern != NULL)
}
}
-/* If there are no further arguments, do the business on stdin and exit */
+/* If there are no further arguments, do the business on stdin and exit. */
-if (i >= argc) return pcregrep(stdin,
- (filenames_only || filenames_nomatch_only)? stdin_name : NULL);
+if (i >= argc)
+ return pcregrep(stdin, (filenames > FN_DEFAULT)? stdin_name : NULL);
/* Otherwise, work through the remaining arguments as files or directories.
Pass in the fact that there is only one argument at top level - this suppresses
-the file name if the argument is not a directory and filenames_only is not set.
-*/
+the file name if the argument is not a directory and filenames are not
+otherwise forced. */
-only_one_at_top = (i == argc - 1);
+only_one_at_top = i == argc - 1; /* Catch initial value of i */
for (; i < argc; i++)
{
- int frc = grep_or_recurse(argv[i], recurse, filenames, only_one_at_top);
+ int frc = grep_or_recurse(argv[i], dee_action == dee_RECURSE,
+ only_one_at_top);
if (frc > 1) rc = frc;
else if (frc == 0 && rc == 1) rc = 0;
}
diff --git a/pcreposix.c b/pcreposix.c
index c8f25ad..cbb1ff8 100644
--- a/pcreposix.c
+++ b/pcreposix.c
@@ -6,7 +6,7 @@
and semantics are as close as possible to those of the Perl 5 language.
Written by Philip Hazel
- Copyright (c) 1997-2005 University of Cambridge
+ Copyright (c) 1997-2006 University of Cambridge
-----------------------------------------------------------------------------
Redistribution and use in source and binary forms, with or without
@@ -131,7 +131,7 @@ static const char *const pstring[] = {
* Translate error code to string *
*************************************************/
-PCRE_EXPORT size_t
+PCRE_DATA_SCOPE size_t
regerror(int errcode, const regex_t *preg, char *errbuf, size_t errbuf_size)
{
const char *message, *addmessage;
@@ -166,7 +166,7 @@ return length + addlength;
* Free store held by a regex *
*************************************************/
-PCRE_EXPORT void
+PCRE_DATA_SCOPE void
regfree(regex_t *preg)
{
(pcre_free)(preg->re_pcre);
@@ -189,7 +189,7 @@ Returns: 0 on success
various non-zero codes on failure
*/
-PCRE_EXPORT int
+PCRE_DATA_SCOPE int
regcomp(regex_t *preg, const char *pattern, int cflags)
{
const char *errorptr;
@@ -197,9 +197,11 @@ int erroffset;
int errorcode;
int options = 0;
-if ((cflags & REG_ICASE) != 0) options |= PCRE_CASELESS;
+if ((cflags & REG_ICASE) != 0) options |= PCRE_CASELESS;
if ((cflags & REG_NEWLINE) != 0) options |= PCRE_MULTILINE;
-if ((cflags & REG_DOTALL) != 0) options |= PCRE_DOTALL;
+if ((cflags & REG_DOTALL) != 0) options |= PCRE_DOTALL;
+if ((cflags & REG_NOSUB) != 0) options |= PCRE_NO_AUTO_CAPTURE;
+if ((cflags & REG_UTF8) != 0) options |= PCRE_UTF8;
preg->re_pcre = pcre_compile2(pattern, options, &errorcode, &errorptr,
&erroffset, NULL);
@@ -223,9 +225,13 @@ substring, so we have to get and release working store instead of just using
the POSIX structures as was done in earlier releases when PCRE needed only 2
ints. However, if the number of possible capturing brackets is small, use a
block of store on the stack, to reduce the use of malloc/free. The threshold is
-in a macro that can be changed at configure time. */
+in a macro that can be changed at configure time.
-PCRE_EXPORT int
+If REG_NOSUB was specified at compile time, the PCRE_NO_AUTO_CAPTURE flag will
+be set. When this is the case, the nmatch and pmatch arguments are ignored, and
+the only result is yes/no/error. */
+
+PCRE_DATA_SCOPE int
regexec(const regex_t *preg, const char *string, size_t nmatch,
regmatch_t pmatch[], int eflags)
{
@@ -234,13 +240,20 @@ int options = 0;
int *ovector = NULL;
int small_ovector[POSIX_MALLOC_THRESHOLD * 3];
BOOL allocated_ovector = FALSE;
+BOOL nosub =
+ (((const pcre *)preg->re_pcre)->options & PCRE_NO_AUTO_CAPTURE) != 0;
if ((eflags & REG_NOTBOL) != 0) options |= PCRE_NOTBOL;
if ((eflags & REG_NOTEOL) != 0) options |= PCRE_NOTEOL;
((regex_t *)preg)->re_erroffset = (size_t)(-1); /* Only has meaning after compile */
-if (nmatch > 0)
+/* When no string data is being returned, ensure that nmatch is zero.
+Otherwise, ensure the vector for holding the return data is large enough. */
+
+if (nosub) nmatch = 0;
+
+else if (nmatch > 0)
{
if (nmatch <= POSIX_MALLOC_THRESHOLD)
{
@@ -248,6 +261,7 @@ if (nmatch > 0)
}
else
{
+ if (nmatch > INT_MAX/(sizeof(int) * 3)) return REG_ESPACE;
ovector = (int *)malloc(sizeof(int) * nmatch * 3);
if (ovector == NULL) return REG_ESPACE;
allocated_ovector = TRUE;
@@ -262,13 +276,16 @@ if (rc == 0) rc = nmatch; /* All captured slots were filled in */
if (rc >= 0)
{
size_t i;
- for (i = 0; i < (size_t)rc; i++)
+ if (!nosub)
{
- pmatch[i].rm_so = ovector[i*2];
- pmatch[i].rm_eo = ovector[i*2+1];
+ for (i = 0; i < (size_t)rc; i++)
+ {
+ pmatch[i].rm_so = ovector[i*2];
+ pmatch[i].rm_eo = ovector[i*2+1];
+ }
+ if (allocated_ovector) free(ovector);
+ for (; i < nmatch; i++) pmatch[i].rm_so = pmatch[i].rm_eo = -1;
}
- if (allocated_ovector) free(ovector);
- for (; i < nmatch; i++) pmatch[i].rm_so = pmatch[i].rm_eo = -1;
return 0;
}
diff --git a/pcreposix.h b/pcreposix.h
index 4f1b1ab..525dc2f 100644
--- a/pcreposix.h
+++ b/pcreposix.h
@@ -9,7 +9,7 @@
Compatible Regular Expression library. It defines the things POSIX says should
be there. I hope.
- Copyright (c) 1997-2005 University of Cambridge
+ Copyright (c) 1997-2006 University of Cambridge
-----------------------------------------------------------------------------
Redistribution and use in source and binary forms, with or without
@@ -50,22 +50,20 @@ POSSIBILITY OF SUCH DAMAGE.
extern "C" {
#endif
-/* Options defined by POSIX. */
+/* Options, mostly defined by POSIX, but with a couple of extras. */
-#define REG_ICASE 0x01
-#define REG_NEWLINE 0x02
-#define REG_NOTBOL 0x04
-#define REG_NOTEOL 0x08
+#define REG_ICASE 0x0001
+#define REG_NEWLINE 0x0002
+#define REG_NOTBOL 0x0004
+#define REG_NOTEOL 0x0008
+#define REG_DOTALL 0x0010 /* NOT defined by POSIX. */
+#define REG_NOSUB 0x0020
+#define REG_UTF8 0x0040 /* NOT defined by POSIX. */
-/* Additional options, not defined by POSIX, but somebody wanted them. */
-
-#define REG_DOTALL 0x10
-
-/* These are not used by PCRE, but by defining them we make it easier
+/* This is not used by PCRE, but by defining it we make it easier
to slot PCRE into existing programs that make POSIX calls. */
#define REG_EXTENDED 0
-#define REG_NOSUB 0
/* Error values. Not all these are relevant or used by the wrapper. */
@@ -109,10 +107,11 @@ typedef struct {
/* The functions */
-extern int regcomp(regex_t *, const char *, int);
-extern int regexec(const regex_t *, const char *, size_t, regmatch_t *, int);
-extern size_t regerror(int, const regex_t *, char *, size_t);
-extern void regfree(regex_t *);
+PCRE_DATA_SCOPE int regcomp(regex_t *, const char *, int);
+PCRE_DATA_SCOPE int regexec(const regex_t *, const char *, size_t,
+ regmatch_t *, int);
+PCRE_DATA_SCOPE size_t regerror(int, const regex_t *, char *, size_t);
+PCRE_DATA_SCOPE void regfree(regex_t *);
#ifdef __cplusplus
} /* extern "C" */
diff --git a/pcretest.c b/pcretest.c
index 4a7c1fd..f5c6cdd 100644
--- a/pcretest.c
+++ b/pcretest.c
@@ -475,6 +475,57 @@ return ((value & 0x000000ff) << 24) |
/*************************************************
+* Check match or recursion limit *
+*************************************************/
+
+static int
+check_match_limit(pcre *re, pcre_extra *extra, uschar *bptr, int len,
+ int start_offset, int options, int *use_offsets, int use_size_offsets,
+ int flag, unsigned long int *limit, int errnumber, const char *msg)
+{
+int count;
+int min = 0;
+int mid = 64;
+int max = -1;
+
+extra->flags |= flag;
+
+for (;;)
+ {
+ *limit = mid;
+
+ count = pcre_exec(re, extra, (char *)bptr, len, start_offset, options,
+ use_offsets, use_size_offsets);
+
+ if (count == errnumber)
+ {
+ /* fprintf(outfile, "Testing %s limit = %d\n", msg, mid); */
+ min = mid;
+ mid = (mid == max - 1)? max : (max > 0)? (min + max)/2 : mid*2;
+ }
+
+ else if (count >= 0 || count == PCRE_ERROR_NOMATCH ||
+ count == PCRE_ERROR_PARTIAL)
+ {
+ if (mid == min + 1)
+ {
+ fprintf(outfile, "Minimum %s limit = %d\n", msg, mid);
+ break;
+ }
+ /* fprintf(outfile, "Testing %s limit = %d\n", msg, mid); */
+ max = mid;
+ mid = (min + mid)/2;
+ }
+ else break; /* Some other error */
+ }
+
+extra->flags &= ~flag;
+return count;
+}
+
+
+
+/*************************************************
* Main Program *
*************************************************/
@@ -491,6 +542,7 @@ int op = 1;
int timeit = 0;
int showinfo = 0;
int showstore = 0;
+int quiet = 0;
int size_offsets = 45;
int size_offsets_max;
int *offsets = NULL;
@@ -531,6 +583,7 @@ while (argc > 1 && argv[op][0] == '-')
if (strcmp(argv[op], "-s") == 0 || strcmp(argv[op], "-m") == 0)
showstore = 1;
else if (strcmp(argv[op], "-t") == 0) timeit = 1;
+ else if (strcmp(argv[op], "-q") == 0) quiet = 1;
else if (strcmp(argv[op], "-i") == 0) showinfo = 1;
else if (strcmp(argv[op], "-d") == 0) showinfo = debug = 1;
#if !defined NODFA
@@ -563,6 +616,8 @@ while (argc > 1 && argv[op][0] == '-')
printf(" POSIX malloc threshold = %d\n", rc);
(void)pcre_config(PCRE_CONFIG_MATCH_LIMIT, &rc);
printf(" Default match limit = %d\n", rc);
+ (void)pcre_config(PCRE_CONFIG_MATCH_LIMIT_RECURSION, &rc);
+ printf(" Default recursion depth limit = %d\n", rc);
(void)pcre_config(PCRE_CONFIG_STACKRECURSE, &rc);
printf(" Match recursion uses %s\n", rc? "stack" : "heap");
exit(0);
@@ -634,9 +689,9 @@ pcre_free = new_free;
pcre_stack_malloc = stack_malloc;
pcre_stack_free = stack_free;
-/* Heading line, then prompt for first regex if stdin */
+/* Heading line unless quiet, then prompt for first regex if stdin */
-fprintf(outfile, "PCRE version %s\n\n", pcre_version());
+if (!quiet) fprintf(outfile, "PCRE version %s\n\n", pcre_version());
/* Main loop */
@@ -896,6 +951,9 @@ while (!done)
if ((options & PCRE_CASELESS) != 0) cflags |= REG_ICASE;
if ((options & PCRE_MULTILINE) != 0) cflags |= REG_NEWLINE;
if ((options & PCRE_DOTALL) != 0) cflags |= REG_DOTALL;
+ if ((options & PCRE_NO_AUTO_CAPTURE) != 0) cflags |= REG_NOSUB;
+ if ((options & PCRE_UTF8) != 0) cflags |= REG_UTF8;
+
rc = regcomp(&preg, (char *)p, cflags);
/* Compilation failed; go back for another re, skipping to blank line
@@ -1111,7 +1169,7 @@ while (!done)
fprintf(outfile, "Partial matching not supported\n");
if (get_options == 0) fprintf(outfile, "No options\n");
- else fprintf(outfile, "Options:%s%s%s%s%s%s%s%s%s%s%s\n",
+ else fprintf(outfile, "Options:%s%s%s%s%s%s%s%s%s%s%s%s\n",
((get_options & PCRE_ANCHORED) != 0)? " anchored" : "",
((get_options & PCRE_CASELESS) != 0)? " caseless" : "",
((get_options & PCRE_EXTENDED) != 0)? " extended" : "",
@@ -1121,6 +1179,7 @@ while (!done)
((get_options & PCRE_DOLLAR_ENDONLY) != 0)? " dollar_endonly" : "",
((get_options & PCRE_EXTRA) != 0)? " extra" : "",
((get_options & PCRE_UNGREEDY) != 0)? " ungreedy" : "",
+ ((get_options & PCRE_NO_AUTO_CAPTURE) != 0)? " no_auto_capture" : "",
((get_options & PCRE_UTF8) != 0)? " utf8" : "",
((get_options & PCRE_NO_UTF8_CHECK) != 0)? " no_utf8_check" : "");
@@ -1266,8 +1325,8 @@ while (!done)
for (;;)
{
- unsigned char *q;
- unsigned char *bptr = dbuffer;
+ uschar *q;
+ uschar *bptr = dbuffer;
int *use_offsets = offsets;
int use_size_offsets = size_offsets;
int callout_data = 0;
@@ -1555,6 +1614,11 @@ while (!done)
(void)regerror(rc, &preg, (char *)buffer, BUFFER_SIZE);
fprintf(outfile, "No match: POSIX code %d: %s\n", rc, buffer);
}
+ else if ((((const pcre *)preg.re_pcre)->options & PCRE_NO_AUTO_CAPTURE)
+ != 0)
+ {
+ fprintf(outfile, "Matched with REG_NOSUB\n");
+ }
else
{
size_t i;
@@ -1615,48 +1679,26 @@ while (!done)
}
/* If find_match_limit is set, we want to do repeated matches with
- varying limits in order to find the minimum value. */
+ varying limits in order to find the minimum value for the match limit and
+ for the recursion limit. */
if (find_match_limit)
{
- int min = 0;
- int mid = 64;
- int max = -1;
-
if (extra == NULL)
{
extra = (pcre_extra *)malloc(sizeof(pcre_extra));
extra->flags = 0;
}
- extra->flags |= PCRE_EXTRA_MATCH_LIMIT;
- for (;;)
- {
- extra->match_limit = mid;
- count = pcre_exec(re, extra, (char *)bptr, len, start_offset,
- options | g_notempty, use_offsets, use_size_offsets);
- if (count == PCRE_ERROR_MATCHLIMIT)
- {
- /* fprintf(outfile, "Testing match limit = %d\n", mid); */
- min = mid;
- mid = (mid == max - 1)? max : (max > 0)? (min + max)/2 : mid*2;
- }
- else if (count >= 0 || count == PCRE_ERROR_NOMATCH ||
- count == PCRE_ERROR_PARTIAL)
- {
- if (mid == min + 1)
- {
- fprintf(outfile, "Minimum match limit = %d\n", mid);
- break;
- }
- /* fprintf(outfile, "Testing match limit = %d\n", mid); */
- max = mid;
- mid = (min + mid)/2;
- }
- else break; /* Some other error */
- }
+ count = check_match_limit(re, extra, bptr, len, start_offset,
+ options|g_notempty, use_offsets, use_size_offsets,
+ PCRE_EXTRA_MATCH_LIMIT, &(extra->match_limit),
+ PCRE_ERROR_MATCHLIMIT, "match()");
- extra->flags &= ~PCRE_EXTRA_MATCH_LIMIT;
+ count = check_match_limit(re, extra, bptr, len, start_offset,
+ options|g_notempty, use_offsets, use_size_offsets,
+ PCRE_EXTRA_MATCH_LIMIT_RECURSION, &(extra->match_limit_recursion),
+ PCRE_ERROR_RECURSIONLIMIT, "match() recursion");
}
/* If callout_data is set, use the interface with additional data */
diff --git a/perltest b/perltest
index 44afbea..f94e4b3 100755
--- a/perltest
+++ b/perltest
@@ -7,6 +7,8 @@
# "use utf8" lines in order to to UTF-8 stuff (and you mustn't uncomment them
# for non-UTF-8 use).
+use locale;
+
# Function for turning a string into a string of printing chars. There are
# currently problems with UTF-8 strings; this fudges round them.
diff --git a/testdata/grepinput b/testdata/grepinput
index 2a89c2e..ed33f86 100644
--- a/testdata/grepinput
+++ b/testdata/grepinput
@@ -583,6 +583,27 @@ jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick
brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
-------------------------------------------------------------------------------
-Check up on PATTERN near the end.
+aaaaa0
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+bbbbbb
+cccccccccccccccccccccccccccccccccccccccccc
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+eeeee
+aaaaa2
+ffffffffff
+
+This is a line before the binary zero.
+This line contains a binary zero here >
+This is a line after the binary zero.
+
+ABOVE the elephant
+ABOVE
+ABOVE theatre
+AB.VE
+AB.VE the turtle
+
+PUT NEW DATA ABOVE THIS LINE.
+=============================
+Check up on PATTERN near the end.
This is the last line of this file.
diff --git a/testdata/greplist b/testdata/greplist
index bb2705e..1434ae9 100644
--- a/testdata/greplist
+++ b/testdata/greplist
@@ -1,4 +1,7 @@
This is a file of patterns for testing the -f option. Don't include any blank
-lines because they will match everything!
+lines because they will match everything! This is no longer true, so have one.
+
pattern
line by itself
+
+End of the list of patterns.
diff --git a/testdata/grepoutput b/testdata/grepoutput
index 2ea9a91..0c34a32 100644
--- a/testdata/grepoutput
+++ b/testdata/grepoutput
@@ -1,4 +1,3 @@
-pcregrep version 4.1 05-Sep-2005 using PCRE version 6.4 05-Sep-2005
---------------------------- Test 1 ------------------------------
PATTERN at the start of a line.
In the middle of a line, PATTERN appears.
@@ -9,21 +8,21 @@ PATTERN at the start of a line.
7:PATTERN at the start of a line.
8:In the middle of a line, PATTERN appears.
10:This pattern is in lower case.
-586:Check up on PATTERN near the end.
+608:Check up on PATTERN near the end.
---------------------------- Test 4 ------------------------------
4
---------------------------- Test 5 ------------------------------
./testdata/grepinput:7:PATTERN at the start of a line.
./testdata/grepinput:8:In the middle of a line, PATTERN appears.
./testdata/grepinput:10:This pattern is in lower case.
-./testdata/grepinput:586:Check up on PATTERN near the end.
+./testdata/grepinput:608:Check up on PATTERN near the end.
./testdata/grepinputx:3:Here is the pattern again.
./testdata/grepinputx:5:Pattern
---------------------------- Test 6 ------------------------------
7:PATTERN at the start of a line.
8:In the middle of a line, PATTERN appears.
10:This pattern is in lower case.
-586:Check up on PATTERN near the end.
+608:Check up on PATTERN near the end.
3:Here is the pattern again.
5:Pattern
---------------------------- Test 7 ------------------------------
@@ -85,7 +84,7 @@ That time it was on a line by itself.
---------------------------- Test 14 -----------------------------
./testdata/grepinputx:To pat or not to pat, that is the question.
---------------------------- Test 15 -----------------------------
-pcregrep: Error in regex at offset 4: nothing to repeat
+pcregrep: Error in command-line regex at offset 4: nothing to repeat
---------------------------- Test 16 -----------------------------
pcregrep: Failed to open ./testdata/nonexistfile: No such file or directory
---------------------------- Test 17 -----------------------------
@@ -114,14 +113,14 @@ of lines
36-sixteen
37-seventeen
---------------------------- Test 22 -----------------------------
-20-one
-21-two
-22-three
+21-one
+22-two
+23-three
24:four
--
-30-eleven
-31-twelve
-32-thirteen
+31-eleven
+32-twelve
+33-thirteen
34:fourteen
---------------------------- Test 23 -----------------------------
one
@@ -160,15 +159,15 @@ twenty
This is the last line of this file.
---------------------------- Test 25 -----------------------------
-14-
-15-complete pair
-16-of lines
-17-
-18-And there they were again, to check line numbers.
-19-
-20-one
-21-two
-22-three
+15-
+16-complete pair
+17-of lines
+18-
+19-And there they were again, to check line numbers.
+20-
+21-one
+22-two
+23-three
24:four
25-five
26-six
@@ -230,16 +229,16 @@ twenty
This is the last line of this file.
---------------------------- Test 28 -----------------------------
-13-of lines all by themselves.
-14-
-15-complete pair
-16-of lines
-17-
-18-And there they were again, to check line numbers.
-19-
-20-one
-21-two
-22-three
+14-of lines all by themselves.
+15-
+16-complete pair
+17-of lines
+18-
+19-And there they were again, to check line numbers.
+20-
+21-one
+22-two
+23-three
24:four
25-five
26-six
@@ -282,18 +281,18 @@ twenty
This is the last line of this file.
---------------------------- Test 30 -----------------------------
-./testdata/grepinput-3-features should be added at the end, because some of the tests involve the
-./testdata/grepinput-4-output of line numbers, and we don't want these to change.
-./testdata/grepinput-5-
+./testdata/grepinput-4-features should be added at the end, because some of the tests involve the
+./testdata/grepinput-5-output of line numbers, and we don't want these to change.
+./testdata/grepinput-6-
./testdata/grepinput:7:PATTERN at the start of a line.
./testdata/grepinput:8:In the middle of a line, PATTERN appears.
./testdata/grepinput-9-
./testdata/grepinput:10:This pattern is in lower case.
--
-./testdata/grepinput-582-brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
-./testdata/grepinput-583--------------------------------------------------------------------------------
-./testdata/grepinput-584-
-./testdata/grepinput:586:Check up on PATTERN near the end.
+./testdata/grepinput-605-PUT NEW DATA ABOVE THIS LINE.
+./testdata/grepinput-606-=============================
+./testdata/grepinput-607-
+./testdata/grepinput:608:Check up on PATTERN near the end.
--
./testdata/grepinputx-1-This is a second file of input for the pcregrep tests.
./testdata/grepinputx-2-
@@ -309,9 +308,8 @@ This is the last line of this file.
./testdata/grepinput-12-Here follows a whole lot of stuff that makes the file over 24K long.
./testdata/grepinput-13-
--
-./testdata/grepinput:586:Check up on PATTERN near the end.
-./testdata/grepinput-587-
-./testdata/grepinput-588-This is the last line of this file.
+./testdata/grepinput:608:Check up on PATTERN near the end.
+./testdata/grepinput-609-This is the last line of this file.
--
./testdata/grepinputx:3:Here is the pattern again.
./testdata/grepinputx-4-
@@ -332,3 +330,54 @@ RC=0
---------------------------- Test 36 -----------------------------
./testdata/grepinputx
RC=0
+---------------------------- Test 37 -----------------------------
+aaaaa0
+aaaaa2
+RC=0
+======== STDERR ========
+pcregrep: pcre_exec() error -8 while matching this line:
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+pcregrep: error -8 means that a resource limit was exceeded
+pcregrep: check your regex for nested unlimited loops
+pcregrep: pcre_exec() error -8 while matching this line:
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+---------------------------- Test 38 ------------------------------
+This line contains a binary zero here >
+---------------------------- Test 39 ------------------------------
+This is a line before the binary zero.
+This line contains a binary zero here >
+---------------------------- Test 40 ------------------------------
+This line contains a binary zero here >
+This is a line after the binary zero.
+---------------------------- Test 41 ------------------------------
+before the binary zero
+after the binary zero
+---------------------------- Test 41 ------------------------------
+./testdata/grepinput:595:before the binary zero
+./testdata/grepinput:597:after the binary zero
+---------------------------- Test 42 ------------------------------
+595:before
+596:zero
+597:after
+---------------------------- Test 43 ------------------------------
+595:before
+596:zero
+597:zero
+---------------------------- Test 44 ------------------------------
+10:pattern
+595:binary
+596:binary
+597:binary
+---------------------------- Test 45 ------------------------------
+pcregrep: Error in 2nd command-line regex at offset 9: missing )
+---------------------------- Test 46 ------------------------------
+AB.VE
+---------------------------- Test 47 ------------------------------
+ABOVE the elephant
+AB.VE
+AB.VE the turtle
+---------------------------- Test 48 ------------------------------
+ABOVE the elephant
+AB.VE
+AB.VE the turtle
+PUT NEW DATA ABOVE THIS LINE.
diff --git a/testdata/testinput2 b/testdata/testinput2
index befb65a..60d2db0 100644
--- a/testdata/testinput2
+++ b/testdata/testinput2
@@ -672,12 +672,18 @@
/^[[:^alpha:]]/D
+/[_[:alpha:]]/IS
+
/^[[:ascii:]]/D
/^[[:^ascii:]]/D
/^[[:blank:]]/D
+/^[[:^blank:]]/D
+
+/[\n\x0b\x0c\x0d[:blank:]]/IS
+
/^[[:cntrl:]]/D
/^[[:digit:]]/D
@@ -1450,4 +1456,38 @@
"(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)"
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+/[^()]*(?:\((?R)\)[^()]*)*/
+ (this(and)that
+ (this(and)that)
+ (this(and)that)stuff
+
+/[^()]*(?:\((?>(?R))\)[^()]*)*/
+ (this(and)that
+ (this(and)that)
+
+/[^()]*(?:\((?R)\))*[^()]*/
+ (this(and)that
+ (this(and)that)
+
+/(?:\((?R)\))*[^()]*/
+ (this(and)that
+ (this(and)that)
+ ((this))
+
+/(?:\((?R)\))|[^()]*/
+ (this(and)that
+ (this(and)that)
+ (this)
+ ((this))
+
+/a(b)c/PN
+ abc
+
+/a(?P<name>b)c/PN
+ abc
+
+/\x{100}/
+
+/\x{0000ff}/
+
/ End of testinput2 /
diff --git a/testdata/testinput3 b/testdata/testinput3
index c2abdbf..e6ac826 100644
--- a/testdata/testinput3
+++ b/testdata/testinput3
@@ -62,4 +62,30 @@
*** Failers
école
+/\W+/Lfr_FR
+ >>>\xaa<<<
+ >>>\xba<<<
+
+/[\W]+/Lfr_FR
+ >>>\xaa<<<
+ >>>\xba<<<
+
+/[^[:alpha:]]+/Lfr_FR
+ >>>\xaa<<<
+ >>>\xba<<<
+
+/\w+/Lfr_FR
+ >>>\xaa<<<
+ >>>\xba<<<
+
+/[\w]+/Lfr_FR
+ >>>\xaa<<<
+ >>>\xba<<<
+
+/[[:alpha:]]+/Lfr_FR
+ >>>\xaa<<<
+ >>>\xba<<<
+
+/[[:alpha:]][[:lower:]][[:upper:]]/DLfr_FR
+
/ End of testinput3 /
diff --git a/testdata/testinput4 b/testdata/testinput4
index c16e9d9..6e0099c 100644
--- a/testdata/testinput4
+++ b/testdata/testinput4
@@ -510,4 +510,7 @@
/^\x{85}$/8i
\x{85}
+/^\ሴ/8
+ ሴ
+
/ End of testinput4 /
diff --git a/testdata/testinput5 b/testdata/testinput5
index fe6ee3e..dc45445 100644
--- a/testdata/testinput5
+++ b/testdata/testinput5
@@ -260,4 +260,9 @@
/\w/8
\x{100}X
+/a\x{1234}b/P8
+ a\x{1234}b
+
+/^\ሴ/8D
+
/ End of testinput5 /
diff --git a/testdata/testinput6 b/testdata/testinput6
index 01a3947..a45920a 100644
--- a/testdata/testinput6
+++ b/testdata/testinput6
@@ -51,6 +51,7 @@
\x{09f}
/^\p{Cn}/8
+ \x{e0000}
** Failers
\x{09f}
@@ -77,9 +78,15 @@
/^\p{Lo}/8
\x{1bb}
+ \x{3400}
+ \x{3401}
+ \x{4d00}
+ \x{4db4}
+ \x{4db5}
** Failers
a
\x{2b0}
+ \x{4db6}
/^\p{Lt}/8
\x{1c5}
@@ -514,4 +521,221 @@
A\x{300}\x{301}B\x{300}C\x{300}\x{301}X
A\x{300}\x{301}B\x{300}C\x{300}\x{301}DA\x{300}X
+/^\p{Han}+/8
+ \x{2e81}\x{3007}\x{2f804}\x{31a0}
+ ** Failers
+ \x{2e7f}
+
+/^\P{Katakana}+/8
+ \x{3105}
+ ** Failers
+ \x{30ff}
+
+/^[\p{Arabic}]/8
+ \x{06e9}
+ \x{060b}
+ ** Failers
+ X\x{06e9}
+
+/^[\P{Yi}]/8
+ \x{2f800}
+ ** Failers
+ \x{a014}
+ \x{a4c6}
+
+/^\p{Any}X/8
+ AXYZ
+ \x{1234}XYZ
+ ** Failers
+ X
+
+/^\P{Any}X/8
+ ** Failers
+ AX
+
+/^\p{Any}?X/8
+ XYZ
+ AXYZ
+ \x{1234}XYZ
+ ** Failers
+ ABXYZ
+
+/^\P{Any}?X/8
+ XYZ
+ ** Failers
+ AXYZ
+ \x{1234}XYZ
+ ABXYZ
+
+/^\p{Any}+X/8
+ AXYZ
+ \x{1234}XYZ
+ A\x{1234}XYZ
+ ** Failers
+ XYZ
+
+/^\P{Any}+X/8
+ ** Failers
+ AXYZ
+ \x{1234}XYZ
+ A\x{1234}XYZ
+ XYZ
+
+/^\p{Any}*X/8
+ XYZ
+ AXYZ
+ \x{1234}XYZ
+ A\x{1234}XYZ
+ ** Failers
+
+/^\P{Any}*X/8
+ XYZ
+ ** Failers
+ AXYZ
+ \x{1234}XYZ
+ A\x{1234}XYZ
+
+/^[\p{Any}]X/8
+ AXYZ
+ \x{1234}XYZ
+ ** Failers
+ X
+
+/^[\P{Any}]X/8
+ ** Failers
+ AX
+
+/^[\p{Any}]?X/8
+ XYZ
+ AXYZ
+ \x{1234}XYZ
+ ** Failers
+ ABXYZ
+
+/^[\P{Any}]?X/8
+ XYZ
+ ** Failers
+ AXYZ
+ \x{1234}XYZ
+ ABXYZ
+
+/^[\p{Any}]+X/8
+ AXYZ
+ \x{1234}XYZ
+ A\x{1234}XYZ
+ ** Failers
+ XYZ
+
+/^[\P{Any}]+X/8
+ ** Failers
+ AXYZ
+ \x{1234}XYZ
+ A\x{1234}XYZ
+ XYZ
+
+/^[\p{Any}]*X/8
+ XYZ
+ AXYZ
+ \x{1234}XYZ
+ A\x{1234}XYZ
+ ** Failers
+
+/^[\P{Any}]*X/8
+ XYZ
+ ** Failers
+ AXYZ
+ \x{1234}XYZ
+ A\x{1234}XYZ
+
+/^\p{Any}{3,5}?/8
+ abcdefgh
+ \x{1234}\n\r\x{3456}xyz
+
+/^\p{Any}{3,5}/8
+ abcdefgh
+ \x{1234}\n\r\x{3456}xyz
+
+/^\P{Any}{3,5}?/8
+ ** Failers
+ abcdefgh
+ \x{1234}\n\r\x{3456}xyz
+
+/^\p{L&}X/8
+ AXY
+ aXY
+ \x{1c5}XY
+ ** Failers
+ \x{1bb}XY
+ \x{2b0}XY
+ !XY
+
+/^[\p{L&}]X/8
+ AXY
+ aXY
+ \x{1c5}XY
+ ** Failers
+ \x{1bb}XY
+ \x{2b0}XY
+ !XY
+
+/^\p{L&}+X/8
+ AXY
+ aXY
+ AbcdeXyz
+ \x{1c5}AbXY
+ abcDEXypqreXlmn
+ ** Failers
+ \x{1bb}XY
+ \x{2b0}XY
+ !XY
+
+/^[\p{L&}]+X/8
+ AXY
+ aXY
+ AbcdeXyz
+ \x{1c5}AbXY
+ abcDEXypqreXlmn
+ ** Failers
+ \x{1bb}XY
+ \x{2b0}XY
+ !XY
+
+/^\p{L&}+?X/8
+ AXY
+ aXY
+ AbcdeXyz
+ \x{1c5}AbXY
+ abcDEXypqreXlmn
+ ** Failers
+ \x{1bb}XY
+ \x{2b0}XY
+ !XY
+
+/^[\p{L&}]+?X/8
+ AXY
+ aXY
+ AbcdeXyz
+ \x{1c5}AbXY
+ abcDEXypqreXlmn
+ ** Failers
+ \x{1bb}XY
+ \x{2b0}XY
+ !XY
+
+/^\P{L&}X/8
+ !XY
+ \x{1bb}XY
+ \x{2b0}XY
+ ** Failers
+ \x{1c5}XY
+ AXY
+
+/^[\P{L&}]X/8
+ !XY
+ \x{1bb}XY
+ \x{2b0}XY
+ ** Failers
+ \x{1c5}XY
+ AXY
+
/ End of testinput6 /
diff --git a/testdata/testinput7 b/testdata/testinput7
index 4dd6037..0c7418e 100644
--- a/testdata/testinput7
+++ b/testdata/testinput7
@@ -483,10 +483,10 @@
/(?<=foo)bar/
xyzfo\P
- foob\R\P\>2
+ foob\P\>2
foobar...\R\P\>4
xyzfo\P
- foobar\R\>2
+ foobar\>2
*** Failers
xyzfo\P
obar\R
@@ -4010,4 +4010,12 @@
** Failers
line one\nthis is a line\nbreak in the second line
+/1234/
+ 123\P
+ a4\P\R
+
+/1234/
+ 123\P
+ 4\P\R
+
/ End of testinput7 /
diff --git a/testdata/testinput9 b/testdata/testinput9
index f18dd12..23d3d3e 100644
--- a/testdata/testinput9
+++ b/testdata/testinput9
@@ -596,4 +596,221 @@
\x{100}
\x{101}
+/^\p{Han}+/8
+ \x{2e81}\x{3007}\x{2f804}\x{31a0}
+ ** Failers
+ \x{2e7f}
+
+/^\P{Katakana}+/8
+ \x{3105}
+ ** Failers
+ \x{30ff}
+
+/^[\p{Arabic}]/8
+ \x{06e9}
+ \x{060b}
+ ** Failers
+ X\x{06e9}
+
+/^[\P{Yi}]/8
+ \x{2f800}
+ ** Failers
+ \x{a014}
+ \x{a4c6}
+
+/^\p{Any}X/8
+ AXYZ
+ \x{1234}XYZ
+ ** Failers
+ X
+
+/^\P{Any}X/8
+ ** Failers
+ AX
+
+/^\p{Any}?X/8
+ XYZ
+ AXYZ
+ \x{1234}XYZ
+ ** Failers
+ ABXYZ
+
+/^\P{Any}?X/8
+ XYZ
+ ** Failers
+ AXYZ
+ \x{1234}XYZ
+ ABXYZ
+
+/^\p{Any}+X/8
+ AXYZ
+ \x{1234}XYZ
+ A\x{1234}XYZ
+ ** Failers
+ XYZ
+
+/^\P{Any}+X/8
+ ** Failers
+ AXYZ
+ \x{1234}XYZ
+ A\x{1234}XYZ
+ XYZ
+
+/^\p{Any}*X/8
+ XYZ
+ AXYZ
+ \x{1234}XYZ
+ A\x{1234}XYZ
+ ** Failers
+
+/^\P{Any}*X/8
+ XYZ
+ ** Failers
+ AXYZ
+ \x{1234}XYZ
+ A\x{1234}XYZ
+
+/^[\p{Any}]X/8
+ AXYZ
+ \x{1234}XYZ
+ ** Failers
+ X
+
+/^[\P{Any}]X/8
+ ** Failers
+ AX
+
+/^[\p{Any}]?X/8
+ XYZ
+ AXYZ
+ \x{1234}XYZ
+ ** Failers
+ ABXYZ
+
+/^[\P{Any}]?X/8
+ XYZ
+ ** Failers
+ AXYZ
+ \x{1234}XYZ
+ ABXYZ
+
+/^[\p{Any}]+X/8
+ AXYZ
+ \x{1234}XYZ
+ A\x{1234}XYZ
+ ** Failers
+ XYZ
+
+/^[\P{Any}]+X/8
+ ** Failers
+ AXYZ
+ \x{1234}XYZ
+ A\x{1234}XYZ
+ XYZ
+
+/^[\p{Any}]*X/8
+ XYZ
+ AXYZ
+ \x{1234}XYZ
+ A\x{1234}XYZ
+ ** Failers
+
+/^[\P{Any}]*X/8
+ XYZ
+ ** Failers
+ AXYZ
+ \x{1234}XYZ
+ A\x{1234}XYZ
+
+/^\p{Any}{3,5}?/8
+ abcdefgh
+ \x{1234}\n\r\x{3456}xyz
+
+/^\p{Any}{3,5}/8
+ abcdefgh
+ \x{1234}\n\r\x{3456}xyz
+
+/^\P{Any}{3,5}?/8
+ ** Failers
+ abcdefgh
+ \x{1234}\n\r\x{3456}xyz
+
+/^\p{L&}X/8
+ AXY
+ aXY
+ \x{1c5}XY
+ ** Failers
+ \x{1bb}XY
+ \x{2b0}XY
+ !XY
+
+/^[\p{L&}]X/8
+ AXY
+ aXY
+ \x{1c5}XY
+ ** Failers
+ \x{1bb}XY
+ \x{2b0}XY
+ !XY
+
+/^\p{L&}+X/8
+ AXY
+ aXY
+ AbcdeXyz
+ \x{1c5}AbXY
+ abcDEXypqreXlmn
+ ** Failers
+ \x{1bb}XY
+ \x{2b0}XY
+ !XY
+
+/^[\p{L&}]+X/8
+ AXY
+ aXY
+ AbcdeXyz
+ \x{1c5}AbXY
+ abcDEXypqreXlmn
+ ** Failers
+ \x{1bb}XY
+ \x{2b0}XY
+ !XY
+
+/^\p{L&}+?X/8
+ AXY
+ aXY
+ AbcdeXyz
+ \x{1c5}AbXY
+ abcDEXypqreXlmn
+ ** Failers
+ \x{1bb}XY
+ \x{2b0}XY
+ !XY
+
+/^[\p{L&}]+?X/8
+ AXY
+ aXY
+ AbcdeXyz
+ \x{1c5}AbXY
+ abcDEXypqreXlmn
+ ** Failers
+ \x{1bb}XY
+ \x{2b0}XY
+ !XY
+
+/^\P{L&}X/8
+ !XY
+ \x{1bb}XY
+ \x{2b0}XY
+ ** Failers
+ \x{1c5}XY
+ AXY
+
+/^[\P{L&}]X/8
+ !XY
+ \x{1bb}XY
+ \x{2b0}XY
+ ** Failers
+ \x{1c5}XY
+ AXY
+
/ End /
diff --git a/testdata/testoutput1 b/testdata/testoutput1
index bb7eb55..3fdde0a 100644
--- a/testdata/testoutput1
+++ b/testdata/testoutput1
@@ -1,5 +1,3 @@
-PCRE version 6.4 05-Sep-2005
-
/the quick brown fox/
the quick brown fox
0: the quick brown fox
diff --git a/testdata/testoutput2 b/testdata/testoutput2
index 29dfa16..55adba0 100644
--- a/testdata/testoutput2
+++ b/testdata/testoutput2
@@ -1,5 +1,3 @@
-PCRE version 6.4 05-Sep-2005
-
/(a)b|/
Capturing subpattern count = 1
No options
@@ -1945,6 +1943,14 @@ Options: anchored
No first char
No need char
+/[_[:alpha:]]/IS
+Capturing subpattern count = 0
+No options
+No first char
+No need char
+Starting byte set: A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
+ _ a b c d e f g h i j k l m n o p q r s t u v w x y z
+
/^[[:ascii:]]/D
------------------------------------------------------------------
0 37 Bra 0
@@ -1984,6 +1990,26 @@ Options: anchored
No first char
No need char
+/^[[:^blank:]]/D
+------------------------------------------------------------------
+ 0 37 Bra 0
+ 3 ^
+ 4 [\x00-\x08\x0a-\x1f!-\xff]
+ 37 37 Ket
+ 40 End
+------------------------------------------------------------------
+Capturing subpattern count = 0
+Options: anchored
+No first char
+No need char
+
+/[\n\x0b\x0c\x0d[:blank:]]/IS
+Capturing subpattern count = 0
+No options
+No first char
+No need char
+Starting byte set: \x09 \x0a \x0b \x0c \x0d \x20
+
/^[[:cntrl:]]/D
------------------------------------------------------------------
0 37 Bra 0
@@ -3995,14 +4021,16 @@ Need char = '<'
/(a(?1)b)/D
------------------------------------------------------------------
- 0 16 Bra 0
- 3 10 Bra 1
+ 0 22 Bra 0
+ 3 16 Bra 1
6 a
- 8 3 Recurse
- 11 b
- 13 10 Ket
- 16 16 Ket
- 19 End
+ 8 6 Once
+ 11 3 Recurse
+ 14 6 Ket
+ 17 b
+ 19 16 Ket
+ 22 22 Ket
+ 25 End
------------------------------------------------------------------
Capturing subpattern count = 1
No options
@@ -4014,7 +4042,7 @@ Need char = 'b'
0 22 Bra 0
3 16 Bra 1
6 a
- 8 6 Bra 0
+ 8 6 Once
11 3 Recurse
14 6 KetRmax
17 b
@@ -4246,7 +4274,7 @@ Need char = 'a'
/(?P<a>a)...(?P=a)bbb(?P>a)d/D
------------------------------------------------------------------
- 0 28 Bra 0
+ 0 34 Bra 0
3 5 Bra 1
6 a
8 5 Ket
@@ -4255,10 +4283,12 @@ Need char = 'a'
13 Any
14 \1
17 bbb
- 23 3 Recurse
- 26 d
- 28 28 Ket
- 31 End
+ 23 6 Once
+ 26 3 Recurse
+ 29 6 Ket
+ 32 d
+ 34 34 Ket
+ 37 End
------------------------------------------------------------------
Capturing subpattern count = 1
Max back reference = 1
@@ -4418,7 +4448,7 @@ No need char
24 End
------------------------------------------------------------------
Capturing subpattern count = 0
-Options:
+Options: no_auto_capture
First char = 'a'
Need char = 'c'
abc
@@ -4439,7 +4469,7 @@ Need char = 'c'
Capturing subpattern count = 1
Named capturing subpatterns:
one 1
-Options:
+Options: no_auto_capture
First char = 'a'
Need char = 'c'
abc
@@ -4461,7 +4491,7 @@ Need char = 'c'
Capturing subpattern count = 1
Named capturing subpatterns:
named 1
-Options:
+Options: no_auto_capture
First char = 'a'
Need char = 'c'
@@ -4472,11 +4502,13 @@ No options
No first char
Need char = 'z'
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaazzbbbbbb\M
-Minimum match limit = 8
+Minimum match() limit = 8
+Minimum match() recursion limit = 7
0: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaazz
1: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaz\M
-Minimum match limit = 32768
+Minimum match() limit = 32768
+Minimum match() recursion limit = 43
No match
/(aaa(?C1)bbb|ab)/
@@ -4633,18 +4665,20 @@ Need char = ']'
/(a(b(?2)c))?/D
------------------------------------------------------------------
- 0 25 Bra 0
+ 0 31 Bra 0
3 Brazero
- 4 18 Bra 1
+ 4 24 Bra 1
7 a
- 9 10 Bra 2
+ 9 16 Bra 2
12 b
- 14 9 Recurse
- 17 c
- 19 10 Ket
- 22 18 Ket
- 25 25 Ket
- 28 End
+ 14 6 Once
+ 17 9 Recurse
+ 20 6 Ket
+ 23 c
+ 25 16 Ket
+ 28 24 Ket
+ 31 31 Ket
+ 34 End
------------------------------------------------------------------
Capturing subpattern count = 2
No options
@@ -4653,18 +4687,20 @@ No need char
/(a(b(?2)c))*/D
------------------------------------------------------------------
- 0 25 Bra 0
+ 0 31 Bra 0
3 Brazero
- 4 18 Bra 1
+ 4 24 Bra 1
7 a
- 9 10 Bra 2
+ 9 16 Bra 2
12 b
- 14 9 Recurse
- 17 c
- 19 10 Ket
- 22 18 KetRmax
- 25 25 Ket
- 28 End
+ 14 6 Once
+ 17 9 Recurse
+ 20 6 Ket
+ 23 c
+ 25 16 Ket
+ 28 24 KetRmax
+ 31 31 Ket
+ 34 End
------------------------------------------------------------------
Capturing subpattern count = 2
No options
@@ -4673,29 +4709,33 @@ No need char
/(a(b(?2)c)){0,2}/D
------------------------------------------------------------------
- 0 53 Bra 0
+ 0 65 Bra 0
3 Brazero
- 4 46 Bra 0
- 7 18 Bra 1
+ 4 58 Bra 0
+ 7 24 Bra 1
10 a
- 12 10 Bra 2
+ 12 16 Bra 2
15 b
- 17 12 Recurse
- 20 c
- 22 10 Ket
- 25 18 Ket
- 28 Brazero
- 29 18 Bra 1
- 32 a
- 34 10 Bra 2
- 37 b
- 39 12 Recurse
- 42 c
- 44 10 Ket
- 47 18 Ket
- 50 46 Ket
- 53 53 Ket
- 56 End
+ 17 6 Once
+ 20 12 Recurse
+ 23 6 Ket
+ 26 c
+ 28 16 Ket
+ 31 24 Ket
+ 34 Brazero
+ 35 24 Bra 1
+ 38 a
+ 40 16 Bra 2
+ 43 b
+ 45 6 Once
+ 48 12 Recurse
+ 51 6 Ket
+ 54 c
+ 56 16 Ket
+ 59 24 Ket
+ 62 58 Ket
+ 65 65 Ket
+ 68 End
------------------------------------------------------------------
Capturing subpattern count = 2
No options
@@ -5939,6 +5979,86 @@ Matched, but too many substrings
13: a
14: a
+/[^()]*(?:\((?R)\)[^()]*)*/
+Capturing subpattern count = 0
+Partial matching not supported
+No options
+No first char
+No need char
+ (this(and)that
+ 0:
+ (this(and)that)
+ 0: (this(and)that)
+ (this(and)that)stuff
+ 0: (this(and)that)stuff
+
+/[^()]*(?:\((?>(?R))\)[^()]*)*/
+Capturing subpattern count = 0
+Partial matching not supported
+No options
+No first char
+No need char
+ (this(and)that
+ 0:
+ (this(and)that)
+ 0: (this(and)that)
+
+/[^()]*(?:\((?R)\))*[^()]*/
+Capturing subpattern count = 0
+Partial matching not supported
+No options
+No first char
+No need char
+ (this(and)that
+ 0:
+ (this(and)that)
+ 0: (this(and)that)
+
+/(?:\((?R)\))*[^()]*/
+Capturing subpattern count = 0
+Partial matching not supported
+No options
+No first char
+No need char
+ (this(and)that
+ 0:
+ (this(and)that)
+ 0:
+ ((this))
+ 0: ((this))
+
+/(?:\((?R)\))|[^()]*/
+Capturing subpattern count = 0
+Partial matching not supported
+No options
+No first char
+No need char
+ (this(and)that
+ 0:
+ (this(and)that)
+ 0:
+ (this)
+ 0: (this)
+ ((this))
+ 0: ((this))
+
+/a(b)c/PN
+ abc
+Matched with REG_NOSUB
+
+/a(?P<name>b)c/PN
+ abc
+Matched with REG_NOSUB
+
+/\x{100}/
+Failed: character value in \x{...} sequence is too large at offset 6
+
+/\x{0000ff}/
+Capturing subpattern count = 0
+No options
+First char = 255
+No need char
+
/ End of testinput2 /
Capturing subpattern count = 0
No options
diff --git a/testdata/testoutput3 b/testdata/testoutput3
index af5ac53..06e2888 100644
--- a/testdata/testoutput3
+++ b/testdata/testoutput3
@@ -1,5 +1,3 @@
-PCRE version 6.4 05-Sep-2005
-
/^[\w]+/
*** Failers
No match
@@ -95,8 +93,8 @@ No first char
No need char
Starting byte set: 0 1 2 3 4 5 6 7 8 9 A B C D E F G H I J K L M N O P
Q R S T U V W X Y Z _ a b c d e f g h i j k l m n o p q r s t u v w x y z
- µ À Á Â Ã Ä Å Æ Ç È É Ê Ë Ì Í Î Ï Ð Ñ Ò Ó Ô Õ Ö Ø Ù Ú Û Ü Ý Þ ß à á â ã ä
- å æ ç è é ê ë ì í î ï ð ñ ò ó ô õ ö ø ù ú û ü ý þ ÿ
+ ª µ º À Á Â Ã Ä Å Æ Ç È É Ê Ë Ì Í Î Ï Ð Ñ Ò Ó Ô Õ Ö Ø Ù Ú Û Ü Ý Þ ß à á â
+ ã ä å æ ç è é ê ë ì í î ï ð ñ ò ó ô õ ö ø ù ú û ü ý þ ÿ
/^[\xc8-\xc9]/iLfr_FR
École
@@ -112,4 +110,54 @@ No match
école
No match
+/\W+/Lfr_FR
+ >>>\xaa<<<
+ 0: >>>
+ >>>\xba<<<
+ 0: >>>
+
+/[\W]+/Lfr_FR
+ >>>\xaa<<<
+ 0: >>>
+ >>>\xba<<<
+ 0: >>>
+
+/[^[:alpha:]]+/Lfr_FR
+ >>>\xaa<<<
+ 0: >>>
+ >>>\xba<<<
+ 0: >>>
+
+/\w+/Lfr_FR
+ >>>\xaa<<<
+ 0: ª
+ >>>\xba<<<
+ 0: º
+
+/[\w]+/Lfr_FR
+ >>>\xaa<<<
+ 0: ª
+ >>>\xba<<<
+ 0: º
+
+/[[:alpha:]]+/Lfr_FR
+ >>>\xaa<<<
+ 0: ª
+ >>>\xba<<<
+ 0: º
+
+/[[:alpha:]][[:lower:]][[:upper:]]/DLfr_FR
+------------------------------------------------------------------
+ 0 102 Bra 0
+ 3 [A-Za-zªµºÀ-ÖØ-öø-ÿ]
+ 36 [a-zµß-öø-ÿ]
+ 69 [A-ZÀ-ÖØ-Þ]
+102 102 Ket
+105 End
+------------------------------------------------------------------
+Capturing subpattern count = 0
+No options
+No first char
+No need char
+
/ End of testinput3 /
diff --git a/testdata/testoutput4 b/testdata/testoutput4
index 41f888f..1b98f86 100644
--- a/testdata/testoutput4
+++ b/testdata/testoutput4
@@ -1,5 +1,3 @@
-PCRE version 6.4 05-Sep-2005
-
/-- Do not use the \x{} construct except with patterns that have the --/
/-- /8 option set, because PCRE doesn't recognize them as UTF-8 unless --/
No match
@@ -900,4 +898,8 @@ No match
\x{85}
0: \x{85}
+/^\ሴ/8
+ ሴ
+ 0: \x{1234}
+
/ End of testinput4 /
diff --git a/testdata/testoutput5 b/testdata/testoutput5
index da697db..533fd84 100644
--- a/testdata/testoutput5
+++ b/testdata/testoutput5
@@ -1,5 +1,3 @@
-PCRE version 6.4 05-Sep-2005
-
/\x{100}/8DM
Memory allocation (code space): 10
------------------------------------------------------------------
@@ -645,12 +643,14 @@ Need char = 'A'
/\x{100}*\d(?R)/8D
------------------------------------------------------------------
- 0 10 Bra 0
+ 0 16 Bra 0
3 \x{100}*
6 \d
- 7 0 Recurse
- 10 10 Ket
- 13 End
+ 7 6 Once
+ 10 0 Recurse
+ 13 6 Ket
+ 16 16 Ket
+ 19 End
------------------------------------------------------------------
Capturing subpattern count = 0
Partial matching not supported
@@ -660,10 +660,10 @@ No need char
/[^\x{c4}]/D
------------------------------------------------------------------
- 0 36 Bra 0
- 3 [\x01-35-bd-z|~-\xff] (neg)
- 36 36 Ket
- 39 End
+ 0 5 Bra 0
+ 3 [^\xc4]
+ 5 5 Ket
+ 8 End
------------------------------------------------------------------
Capturing subpattern count = 0
No options
@@ -912,14 +912,16 @@ No match
/\x{100}abc(xyz(?1))/8D
------------------------------------------------------------------
- 0 27 Bra 0
+ 0 33 Bra 0
3 \x{100}abc
- 12 12 Bra 1
+ 12 18 Bra 1
15 xyz
- 21 12 Recurse
- 24 12 Ket
- 27 27 Ket
- 30 End
+ 21 6 Once
+ 24 12 Recurse
+ 27 6 Ket
+ 30 18 Ket
+ 33 33 Ket
+ 36 End
------------------------------------------------------------------
Capturing subpattern count = 1
Options: utf8
@@ -928,15 +930,17 @@ Need char = 'z'
/[^\x{100}]abc(xyz(?1))/8D
------------------------------------------------------------------
- 0 32 Bra 0
+ 0 38 Bra 0
3 [^\x{100}]
11 abc
- 17 12 Bra 1
+ 17 18 Bra 1
20 xyz
- 26 17 Recurse
- 29 12 Ket
- 32 32 Ket
- 35 End
+ 26 6 Once
+ 29 17 Recurse
+ 32 6 Ket
+ 35 18 Ket
+ 38 38 Ket
+ 41 End
------------------------------------------------------------------
Capturing subpattern count = 1
Options: utf8
@@ -945,15 +949,17 @@ Need char = 'z'
/[ab\x{100}]abc(xyz(?1))/8D
------------------------------------------------------------------
- 0 64 Bra 0
+ 0 70 Bra 0
3 [ab\x{100}]
43 abc
- 49 12 Bra 1
+ 49 18 Bra 1
52 xyz
- 58 49 Recurse
- 61 12 Ket
- 64 64 Ket
- 67 End
+ 58 6 Once
+ 61 49 Recurse
+ 64 6 Ket
+ 67 18 Ket
+ 70 70 Ket
+ 73 End
------------------------------------------------------------------
Capturing subpattern count = 1
Options: utf8
@@ -962,18 +968,20 @@ Need char = 'z'
/(\x{100}(b(?2)c))?/D8
------------------------------------------------------------------
- 0 26 Bra 0
+ 0 32 Bra 0
3 Brazero
- 4 19 Bra 1
+ 4 25 Bra 1
7 \x{100}
- 10 10 Bra 2
+ 10 16 Bra 2
13 b
- 15 10 Recurse
- 18 c
- 20 10 Ket
- 23 19 Ket
- 26 26 Ket
- 29 End
+ 15 6 Once
+ 18 10 Recurse
+ 21 6 Ket
+ 24 c
+ 26 16 Ket
+ 29 25 Ket
+ 32 32 Ket
+ 35 End
------------------------------------------------------------------
Capturing subpattern count = 2
Options: utf8
@@ -982,29 +990,33 @@ No need char
/(\x{100}(b(?2)c)){0,2}/D8
------------------------------------------------------------------
- 0 55 Bra 0
+ 0 67 Bra 0
3 Brazero
- 4 48 Bra 0
- 7 19 Bra 1
+ 4 60 Bra 0
+ 7 25 Bra 1
10 \x{100}
- 13 10 Bra 2
+ 13 16 Bra 2
16 b
- 18 13 Recurse
- 21 c
- 23 10 Ket
- 26 19 Ket
- 29 Brazero
- 30 19 Bra 1
- 33 \x{100}
- 36 10 Bra 2
- 39 b
- 41 13 Recurse
- 44 c
- 46 10 Ket
- 49 19 Ket
- 52 48 Ket
- 55 55 Ket
- 58 End
+ 18 6 Once
+ 21 13 Recurse
+ 24 6 Ket
+ 27 c
+ 29 16 Ket
+ 32 25 Ket
+ 35 Brazero
+ 36 25 Bra 1
+ 39 \x{100}
+ 42 16 Bra 2
+ 45 b
+ 47 6 Once
+ 50 13 Recurse
+ 53 6 Ket
+ 56 c
+ 58 16 Ket
+ 61 25 Ket
+ 64 60 Ket
+ 67 67 Ket
+ 70 End
------------------------------------------------------------------
Capturing subpattern count = 2
Options: utf8
@@ -1013,18 +1025,20 @@ No need char
/(\x{100}(b(?1)c))?/D8
------------------------------------------------------------------
- 0 26 Bra 0
+ 0 32 Bra 0
3 Brazero
- 4 19 Bra 1
+ 4 25 Bra 1
7 \x{100}
- 10 10 Bra 2
+ 10 16 Bra 2
13 b
- 15 4 Recurse
- 18 c
- 20 10 Ket
- 23 19 Ket
- 26 26 Ket
- 29 End
+ 15 6 Once
+ 18 4 Recurse
+ 21 6 Ket
+ 24 c
+ 26 16 Ket
+ 29 25 Ket
+ 32 32 Ket
+ 35 End
------------------------------------------------------------------
Capturing subpattern count = 2
Options: utf8
@@ -1033,29 +1047,33 @@ No need char
/(\x{100}(b(?1)c)){0,2}/D8
------------------------------------------------------------------
- 0 55 Bra 0
+ 0 67 Bra 0
3 Brazero
- 4 48 Bra 0
- 7 19 Bra 1
+ 4 60 Bra 0
+ 7 25 Bra 1
10 \x{100}
- 13 10 Bra 2
+ 13 16 Bra 2
16 b
- 18 7 Recurse
- 21 c
- 23 10 Ket
- 26 19 Ket
- 29 Brazero
- 30 19 Bra 1
- 33 \x{100}
- 36 10 Bra 2
- 39 b
- 41 7 Recurse
- 44 c
- 46 10 Ket
- 49 19 Ket
- 52 48 Ket
- 55 55 Ket
- 58 End
+ 18 6 Once
+ 21 7 Recurse
+ 24 6 Ket
+ 27 c
+ 29 16 Ket
+ 32 25 Ket
+ 35 Brazero
+ 36 25 Bra 1
+ 39 \x{100}
+ 42 16 Bra 2
+ 45 b
+ 47 6 Once
+ 50 7 Recurse
+ 53 6 Ket
+ 56 c
+ 58 16 Ket
+ 61 25 Ket
+ 64 60 Ket
+ 67 67 Ket
+ 70 End
------------------------------------------------------------------
Capturing subpattern count = 2
Options: utf8
@@ -1072,4 +1090,21 @@ No need char
\x{100}X
0: X
+/a\x{1234}b/P8
+ a\x{1234}b
+ 0: a\x{1234}b
+
+/^\ሴ/8D
+------------------------------------------------------------------
+ 0 8 Bra 0
+ 3 ^
+ 4 \x{1234}
+ 8 8 Ket
+ 11 End
+------------------------------------------------------------------
+Capturing subpattern count = 0
+Options: anchored utf8
+No first char
+No need char
+
/ End of testinput5 /
diff --git a/testdata/testoutput6 b/testdata/testoutput6
index 1a8d96d..87833bd 100644
--- a/testdata/testoutput6
+++ b/testdata/testoutput6
@@ -1,5 +1,3 @@
-PCRE version 6.4 05-Sep-2005
-
/^\pC\pL\pM\pN\pP\pS\pZ</8
\x7f\x{c0}\x{30f}\x{660}\x{66c}\x{f01}\x{1680}<
0: \x{7f}\x{c0}\x{30f}\x{660}\x{66c}\x{f01}\x{1680}<
@@ -85,6 +83,8 @@ No match
No match
/^\p{Cn}/8
+ \x{e0000}
+ 0: \x{e0000}
** Failers
No match
\x{09f}
@@ -127,12 +127,24 @@ No match
/^\p{Lo}/8
\x{1bb}
0: \x{1bb}
+ \x{3400}
+ 0: \x{3400}
+ \x{3401}
+ 0: \x{3401}
+ \x{4d00}
+ 0: \x{4d00}
+ \x{4db4}
+ 0: \x{4db4}
+ \x{4db5}
+ 0: \x{4db5}
** Failers
No match
a
No match
\x{2b0}
No match
+ \x{4db6}
+No match
/^\p{Lt}/8
\x{1c5}
@@ -538,10 +550,10 @@ No match
/[\p{L}]/D
------------------------------------------------------------------
- 0 10 Bra 0
+ 0 11 Bra 0
3 [\p{L}]
- 10 10 Ket
- 13 End
+ 11 11 Ket
+ 14 End
------------------------------------------------------------------
Capturing subpattern count = 0
No options
@@ -550,10 +562,10 @@ No need char
/[\p{^L}]/D
------------------------------------------------------------------
- 0 10 Bra 0
+ 0 11 Bra 0
3 [\P{L}]
- 10 10 Ket
- 13 End
+ 11 11 Ket
+ 14 End
------------------------------------------------------------------
Capturing subpattern count = 0
No options
@@ -562,10 +574,10 @@ No need char
/[\P{L}]/D
------------------------------------------------------------------
- 0 10 Bra 0
+ 0 11 Bra 0
3 [\P{L}]
- 10 10 Ket
- 13 End
+ 11 11 Ket
+ 14 End
------------------------------------------------------------------
Capturing subpattern count = 0
No options
@@ -574,10 +586,10 @@ No need char
/[\P{^L}]/D
------------------------------------------------------------------
- 0 10 Bra 0
+ 0 11 Bra 0
3 [\p{L}]
- 10 10 Ket
- 13 End
+ 11 11 Ket
+ 14 End
------------------------------------------------------------------
Capturing subpattern count = 0
No options
@@ -586,10 +598,10 @@ No need char
/[abc\p{L}\x{0660}]/8D
------------------------------------------------------------------
- 0 45 Bra 0
+ 0 46 Bra 0
3 [a-c\p{L}\x{660}]
- 45 45 Ket
- 48 End
+ 46 46 Ket
+ 49 End
------------------------------------------------------------------
Capturing subpattern count = 0
Options: utf8
@@ -597,12 +609,12 @@ No first char
No need char
/[\p{Nd}]/8DM
-Memory allocation (code space): 46
+Memory allocation (code space): 47
------------------------------------------------------------------
- 0 10 Bra 0
+ 0 11 Bra 0
3 [\p{Nd}]
- 10 10 Ket
- 13 End
+ 11 11 Ket
+ 14 End
------------------------------------------------------------------
Capturing subpattern count = 0
Options: utf8
@@ -612,12 +624,12 @@ No need char
0: 1
/[\p{Nd}+-]+/8DM
-Memory allocation (code space): 47
+Memory allocation (code space): 48
------------------------------------------------------------------
- 0 43 Bra 0
+ 0 44 Bra 0
3 [+\-\p{Nd}]+
- 43 43 Ket
- 46 End
+ 44 44 Ket
+ 47 End
------------------------------------------------------------------
Capturing subpattern count = 0
Partial matching not supported
@@ -1010,4 +1022,376 @@ No match
0: A\x{300}\x{301}B\x{300}C
1: C
+/^\p{Han}+/8
+ \x{2e81}\x{3007}\x{2f804}\x{31a0}
+ 0: \x{2e81}\x{3007}\x{2f804}
+ ** Failers
+No match
+ \x{2e7f}
+No match
+
+/^\P{Katakana}+/8
+ \x{3105}
+ 0: \x{3105}
+ ** Failers
+ 0: ** Failers
+ \x{30ff}
+No match
+
+/^[\p{Arabic}]/8
+ \x{06e9}
+ 0: \x{6e9}
+ \x{060b}
+ 0: \x{60b}
+ ** Failers
+No match
+ X\x{06e9}
+No match
+
+/^[\P{Yi}]/8
+ \x{2f800}
+ 0: \x{2f800}
+ ** Failers
+ 0: *
+ \x{a014}
+No match
+ \x{a4c6}
+No match
+
+/^\p{Any}X/8
+ AXYZ
+ 0: AX
+ \x{1234}XYZ
+ 0: \x{1234}X
+ ** Failers
+No match
+ X
+No match
+
+/^\P{Any}X/8
+ ** Failers
+No match
+ AX
+No match
+
+/^\p{Any}?X/8
+ XYZ
+ 0: X
+ AXYZ
+ 0: AX
+ \x{1234}XYZ
+ 0: \x{1234}X
+ ** Failers
+No match
+ ABXYZ
+No match
+
+/^\P{Any}?X/8
+ XYZ
+ 0: X
+ ** Failers
+No match
+ AXYZ
+No match
+ \x{1234}XYZ
+No match
+ ABXYZ
+No match
+
+/^\p{Any}+X/8
+ AXYZ
+ 0: AX
+ \x{1234}XYZ
+ 0: \x{1234}X
+ A\x{1234}XYZ
+ 0: A\x{1234}X
+ ** Failers
+No match
+ XYZ
+No match
+
+/^\P{Any}+X/8
+ ** Failers
+No match
+ AXYZ
+No match
+ \x{1234}XYZ
+No match
+ A\x{1234}XYZ
+No match
+ XYZ
+No match
+
+/^\p{Any}*X/8
+ XYZ
+ 0: X
+ AXYZ
+ 0: AX
+ \x{1234}XYZ
+ 0: \x{1234}X
+ A\x{1234}XYZ
+ 0: A\x{1234}X
+ ** Failers
+No match
+
+/^\P{Any}*X/8
+ XYZ
+ 0: X
+ ** Failers
+No match
+ AXYZ
+No match
+ \x{1234}XYZ
+No match
+ A\x{1234}XYZ
+No match
+
+/^[\p{Any}]X/8
+ AXYZ
+ 0: AX
+ \x{1234}XYZ
+ 0: \x{1234}X
+ ** Failers
+No match
+ X
+No match
+
+/^[\P{Any}]X/8
+ ** Failers
+No match
+ AX
+No match
+
+/^[\p{Any}]?X/8
+ XYZ
+ 0: X
+ AXYZ
+ 0: AX
+ \x{1234}XYZ
+ 0: \x{1234}X
+ ** Failers
+No match
+ ABXYZ
+No match
+
+/^[\P{Any}]?X/8
+ XYZ
+ 0: X
+ ** Failers
+No match
+ AXYZ
+No match
+ \x{1234}XYZ
+No match
+ ABXYZ
+No match
+
+/^[\p{Any}]+X/8
+ AXYZ
+ 0: AX
+ \x{1234}XYZ
+ 0: \x{1234}X
+ A\x{1234}XYZ
+ 0: A\x{1234}X
+ ** Failers
+No match
+ XYZ
+No match
+
+/^[\P{Any}]+X/8
+ ** Failers
+No match
+ AXYZ
+No match
+ \x{1234}XYZ
+No match
+ A\x{1234}XYZ
+No match
+ XYZ
+No match
+
+/^[\p{Any}]*X/8
+ XYZ
+ 0: X
+ AXYZ
+ 0: AX
+ \x{1234}XYZ
+ 0: \x{1234}X
+ A\x{1234}XYZ
+ 0: A\x{1234}X
+ ** Failers
+No match
+
+/^[\P{Any}]*X/8
+ XYZ
+ 0: X
+ ** Failers
+No match
+ AXYZ
+No match
+ \x{1234}XYZ
+No match
+ A\x{1234}XYZ
+No match
+
+/^\p{Any}{3,5}?/8
+ abcdefgh
+ 0: abc
+ \x{1234}\n\r\x{3456}xyz
+ 0: \x{1234}\x{0a}\x{0d}
+
+/^\p{Any}{3,5}/8
+ abcdefgh
+ 0: abcde
+ \x{1234}\n\r\x{3456}xyz
+ 0: \x{1234}\x{0a}\x{0d}\x{3456}x
+
+/^\P{Any}{3,5}?/8
+ ** Failers
+No match
+ abcdefgh
+No match
+ \x{1234}\n\r\x{3456}xyz
+No match
+
+/^\p{L&}X/8
+ AXY
+ 0: AX
+ aXY
+ 0: aX
+ \x{1c5}XY
+ 0: \x{1c5}X
+ ** Failers
+No match
+ \x{1bb}XY
+No match
+ \x{2b0}XY
+No match
+ !XY
+No match
+
+/^[\p{L&}]X/8
+ AXY
+ 0: AX
+ aXY
+ 0: aX
+ \x{1c5}XY
+ 0: \x{1c5}X
+ ** Failers
+No match
+ \x{1bb}XY
+No match
+ \x{2b0}XY
+No match
+ !XY
+No match
+
+/^\p{L&}+X/8
+ AXY
+ 0: AX
+ aXY
+ 0: aX
+ AbcdeXyz
+ 0: AbcdeX
+ \x{1c5}AbXY
+ 0: \x{1c5}AbX
+ abcDEXypqreXlmn
+ 0: abcDEXypqreX
+ ** Failers
+No match
+ \x{1bb}XY
+No match
+ \x{2b0}XY
+No match
+ !XY
+No match
+
+/^[\p{L&}]+X/8
+ AXY
+ 0: AX
+ aXY
+ 0: aX
+ AbcdeXyz
+ 0: AbcdeX
+ \x{1c5}AbXY
+ 0: \x{1c5}AbX
+ abcDEXypqreXlmn
+ 0: abcDEXypqreX
+ ** Failers
+No match
+ \x{1bb}XY
+No match
+ \x{2b0}XY
+No match
+ !XY
+No match
+
+/^\p{L&}+?X/8
+ AXY
+ 0: AX
+ aXY
+ 0: aX
+ AbcdeXyz
+ 0: AbcdeX
+ \x{1c5}AbXY
+ 0: \x{1c5}AbX
+ abcDEXypqreXlmn
+ 0: abcDEX
+ ** Failers
+No match
+ \x{1bb}XY
+No match
+ \x{2b0}XY
+No match
+ !XY
+No match
+
+/^[\p{L&}]+?X/8
+ AXY
+ 0: AX
+ aXY
+ 0: aX
+ AbcdeXyz
+ 0: AbcdeX
+ \x{1c5}AbXY
+ 0: \x{1c5}AbX
+ abcDEXypqreXlmn
+ 0: abcDEX
+ ** Failers
+No match
+ \x{1bb}XY
+No match
+ \x{2b0}XY
+No match
+ !XY
+No match
+
+/^\P{L&}X/8
+ !XY
+ 0: !X
+ \x{1bb}XY
+ 0: \x{1bb}X
+ \x{2b0}XY
+ 0: \x{2b0}X
+ ** Failers
+No match
+ \x{1c5}XY
+No match
+ AXY
+No match
+
+/^[\P{L&}]X/8
+ !XY
+ 0: !X
+ \x{1bb}XY
+ 0: \x{1bb}X
+ \x{2b0}XY
+ 0: \x{2b0}X
+ ** Failers
+No match
+ \x{1c5}XY
+No match
+ AXY
+No match
+
/ End of testinput6 /
diff --git a/testdata/testoutput7 b/testdata/testoutput7
index eda8b16..b50abee 100644
--- a/testdata/testoutput7
+++ b/testdata/testoutput7
@@ -1,5 +1,3 @@
-PCRE version 6.4 05-Sep-2005
-
/abc/
abc
0: abc
@@ -675,7 +673,6 @@ No match
/^(a*\w|ab)=(?1)/
ab=ab
0: ab=ab
- 1: ab=a
/^([^()]|\((?1)*\))*$/
abc
@@ -983,13 +980,13 @@ Partial match: abc
/(?<=foo)bar/
xyzfo\P
No match
- foob\R\P\>2
+ foob\P\>2
Partial match: b
foobar...\R\P\>4
0: ar
xyzfo\P
No match
- foobar\R\>2
+ foobar\>2
0: bar
*** Failers
No match
@@ -6513,4 +6510,16 @@ No match
line one\nthis is a line\nbreak in the second line
No match
+/1234/
+ 123\P
+Partial match: 123
+ a4\P\R
+No match
+
+/1234/
+ 123\P
+Partial match: 123
+ 4\P\R
+ 0: 4
+
/ End of testinput7 /
diff --git a/testdata/testoutput8 b/testdata/testoutput8
index 99b375e..72e7673 100644
--- a/testdata/testoutput8
+++ b/testdata/testoutput8
@@ -1,5 +1,3 @@
-PCRE version 6.4 05-Sep-2005
-
/-- Do not use the \x{} construct except with patterns that have the --/
/-- /8 option set, because PCRE doesn't recognize them as UTF-8 unless --/
No match
diff --git a/testdata/testoutput9 b/testdata/testoutput9
index 2598a74..000e2b9 100644
--- a/testdata/testoutput9
+++ b/testdata/testoutput9
@@ -1,5 +1,3 @@
-PCRE version 6.4 05-Sep-2005
-
/\pL\P{Nd}/8
AB
0: AB
@@ -1231,4 +1229,399 @@ No match
\x{101}
0: \x{101}
+/^\p{Han}+/8
+ \x{2e81}\x{3007}\x{2f804}\x{31a0}
+ 0: \x{2e81}\x{3007}\x{2f804}
+ 1: \x{2e81}\x{3007}
+ 2: \x{2e81}
+ ** Failers
+No match
+ \x{2e7f}
+No match
+
+/^\P{Katakana}+/8
+ \x{3105}
+ 0: \x{3105}
+ ** Failers
+ 0: ** Failers
+ 1: ** Failer
+ 2: ** Faile
+ 3: ** Fail
+ 4: ** Fai
+ 5: ** Fa
+ 6: ** F
+ 7: **
+ 8: **
+ 9: *
+ \x{30ff}
+No match
+
+/^[\p{Arabic}]/8
+ \x{06e9}
+ 0: \x{6e9}
+ \x{060b}
+ 0: \x{60b}
+ ** Failers
+No match
+ X\x{06e9}
+No match
+
+/^[\P{Yi}]/8
+ \x{2f800}
+ 0: \x{2f800}
+ ** Failers
+ 0: *
+ \x{a014}
+No match
+ \x{a4c6}
+No match
+
+/^\p{Any}X/8
+ AXYZ
+ 0: AX
+ \x{1234}XYZ
+ 0: \x{1234}X
+ ** Failers
+No match
+ X
+No match
+
+/^\P{Any}X/8
+ ** Failers
+No match
+ AX
+No match
+
+/^\p{Any}?X/8
+ XYZ
+ 0: X
+ AXYZ
+ 0: AX
+ \x{1234}XYZ
+ 0: \x{1234}X
+ ** Failers
+No match
+ ABXYZ
+No match
+
+/^\P{Any}?X/8
+ XYZ
+ 0: X
+ ** Failers
+No match
+ AXYZ
+No match
+ \x{1234}XYZ
+No match
+ ABXYZ
+No match
+
+/^\p{Any}+X/8
+ AXYZ
+ 0: AX
+ \x{1234}XYZ
+ 0: \x{1234}X
+ A\x{1234}XYZ
+ 0: A\x{1234}X
+ ** Failers
+No match
+ XYZ
+No match
+
+/^\P{Any}+X/8
+ ** Failers
+No match
+ AXYZ
+No match
+ \x{1234}XYZ
+No match
+ A\x{1234}XYZ
+No match
+ XYZ
+No match
+
+/^\p{Any}*X/8
+ XYZ
+ 0: X
+ AXYZ
+ 0: AX
+ \x{1234}XYZ
+ 0: \x{1234}X
+ A\x{1234}XYZ
+ 0: A\x{1234}X
+ ** Failers
+No match
+
+/^\P{Any}*X/8
+ XYZ
+ 0: X
+ ** Failers
+No match
+ AXYZ
+No match
+ \x{1234}XYZ
+No match
+ A\x{1234}XYZ
+No match
+
+/^[\p{Any}]X/8
+ AXYZ
+ 0: AX
+ \x{1234}XYZ
+ 0: \x{1234}X
+ ** Failers
+No match
+ X
+No match
+
+/^[\P{Any}]X/8
+ ** Failers
+No match
+ AX
+No match
+
+/^[\p{Any}]?X/8
+ XYZ
+ 0: X
+ AXYZ
+ 0: AX
+ \x{1234}XYZ
+ 0: \x{1234}X
+ ** Failers
+No match
+ ABXYZ
+No match
+
+/^[\P{Any}]?X/8
+ XYZ
+ 0: X
+ ** Failers
+No match
+ AXYZ
+No match
+ \x{1234}XYZ
+No match
+ ABXYZ
+No match
+
+/^[\p{Any}]+X/8
+ AXYZ
+ 0: AX
+ \x{1234}XYZ
+ 0: \x{1234}X
+ A\x{1234}XYZ
+ 0: A\x{1234}X
+ ** Failers
+No match
+ XYZ
+No match
+
+/^[\P{Any}]+X/8
+ ** Failers
+No match
+ AXYZ
+No match
+ \x{1234}XYZ
+No match
+ A\x{1234}XYZ
+No match
+ XYZ
+No match
+
+/^[\p{Any}]*X/8
+ XYZ
+ 0: X
+ AXYZ
+ 0: AX
+ \x{1234}XYZ
+ 0: \x{1234}X
+ A\x{1234}XYZ
+ 0: A\x{1234}X
+ ** Failers
+No match
+
+/^[\P{Any}]*X/8
+ XYZ
+ 0: X
+ ** Failers
+No match
+ AXYZ
+No match
+ \x{1234}XYZ
+No match
+ A\x{1234}XYZ
+No match
+
+/^\p{Any}{3,5}?/8
+ abcdefgh
+ 0: abcde
+ 1: abcd
+ 2: abc
+ \x{1234}\n\r\x{3456}xyz
+ 0: \x{1234}\x{0a}\x{0d}\x{3456}x
+ 1: \x{1234}\x{0a}\x{0d}\x{3456}
+ 2: \x{1234}\x{0a}\x{0d}
+
+/^\p{Any}{3,5}/8
+ abcdefgh
+ 0: abcde
+ 1: abcd
+ 2: abc
+ \x{1234}\n\r\x{3456}xyz
+ 0: \x{1234}\x{0a}\x{0d}\x{3456}x
+ 1: \x{1234}\x{0a}\x{0d}\x{3456}
+ 2: \x{1234}\x{0a}\x{0d}
+
+/^\P{Any}{3,5}?/8
+ ** Failers
+No match
+ abcdefgh
+No match
+ \x{1234}\n\r\x{3456}xyz
+No match
+
+/^\p{L&}X/8
+ AXY
+ 0: AX
+ aXY
+ 0: aX
+ \x{1c5}XY
+ 0: \x{1c5}X
+ ** Failers
+No match
+ \x{1bb}XY
+No match
+ \x{2b0}XY
+No match
+ !XY
+No match
+
+/^[\p{L&}]X/8
+ AXY
+ 0: AX
+ aXY
+ 0: aX
+ \x{1c5}XY
+ 0: \x{1c5}X
+ ** Failers
+No match
+ \x{1bb}XY
+No match
+ \x{2b0}XY
+No match
+ !XY
+No match
+
+/^\p{L&}+X/8
+ AXY
+ 0: AX
+ aXY
+ 0: aX
+ AbcdeXyz
+ 0: AbcdeX
+ \x{1c5}AbXY
+ 0: \x{1c5}AbX
+ abcDEXypqreXlmn
+ 0: abcDEXypqreX
+ 1: abcDEX
+ ** Failers
+No match
+ \x{1bb}XY
+No match
+ \x{2b0}XY
+No match
+ !XY
+No match
+
+/^[\p{L&}]+X/8
+ AXY
+ 0: AX
+ aXY
+ 0: aX
+ AbcdeXyz
+ 0: AbcdeX
+ \x{1c5}AbXY
+ 0: \x{1c5}AbX
+ abcDEXypqreXlmn
+ 0: abcDEXypqreX
+ 1: abcDEX
+ ** Failers
+No match
+ \x{1bb}XY
+No match
+ \x{2b0}XY
+No match
+ !XY
+No match
+
+/^\p{L&}+?X/8
+ AXY
+ 0: AX
+ aXY
+ 0: aX
+ AbcdeXyz
+ 0: AbcdeX
+ \x{1c5}AbXY
+ 0: \x{1c5}AbX
+ abcDEXypqreXlmn
+ 0: abcDEXypqreX
+ 1: abcDEX
+ ** Failers
+No match
+ \x{1bb}XY
+No match
+ \x{2b0}XY
+No match
+ !XY
+No match
+
+/^[\p{L&}]+?X/8
+ AXY
+ 0: AX
+ aXY
+ 0: aX
+ AbcdeXyz
+ 0: AbcdeX
+ \x{1c5}AbXY
+ 0: \x{1c5}AbX
+ abcDEXypqreXlmn
+ 0: abcDEXypqreX
+ 1: abcDEX
+ ** Failers
+No match
+ \x{1bb}XY
+No match
+ \x{2b0}XY
+No match
+ !XY
+No match
+
+/^\P{L&}X/8
+ !XY
+ 0: !X
+ \x{1bb}XY
+ 0: \x{1bb}X
+ \x{2b0}XY
+ 0: \x{2b0}X
+ ** Failers
+No match
+ \x{1c5}XY
+No match
+ AXY
+No match
+
+/^[\P{L&}]X/8
+ !XY
+ 0: !X
+ \x{1bb}XY
+ 0: \x{1bb}X
+ \x{2b0}XY
+ 0: \x{2b0}X
+ ** Failers
+No match
+ \x{1c5}XY
+No match
+ AXY
+No match
+
/ End /
diff --git a/ucp.h b/ucp.h
index b216e0e..1ca23c9 100644
--- a/ucp.h
+++ b/ucp.h
@@ -1,12 +1,14 @@
/*************************************************
-* libucp - Unicode Property Table handler *
+* Unicode Property Table handler *
*************************************************/
-
#ifndef _UCP_H
#define _UCP_H
-/* These are the character categories that are returned by ucp_findchar */
+/* This file contains definitions of the property values that are returned by
+the function _pcre_ucp_findprop(). */
+
+/* These are the general character categories. */
enum {
ucp_C, /* Other */
@@ -18,7 +20,7 @@ enum {
ucp_Z /* Separator */
};
-/* These are the detailed character types that are returned by ucp_findchar */
+/* These are the particular character types. */
enum {
ucp_Cc, /* Control */
@@ -53,6 +55,72 @@ enum {
ucp_Zs /* Space separator */
};
+/* These are the script identifications. */
+
+enum {
+ ucp_Arabic,
+ ucp_Armenian,
+ ucp_Bengali,
+ ucp_Bopomofo,
+ ucp_Braille,
+ ucp_Buginese,
+ ucp_Buhid,
+ ucp_Canadian_Aboriginal,
+ ucp_Cherokee,
+ ucp_Common,
+ ucp_Coptic,
+ ucp_Cypriot,
+ ucp_Cyrillic,
+ ucp_Deseret,
+ ucp_Devanagari,
+ ucp_Ethiopic,
+ ucp_Georgian,
+ ucp_Glagolitic,
+ ucp_Gothic,
+ ucp_Greek,
+ ucp_Gujarati,
+ ucp_Gurmukhi,
+ ucp_Han,
+ ucp_Hangul,
+ ucp_Hanunoo,
+ ucp_Hebrew,
+ ucp_Hiragana,
+ ucp_Inherited,
+ ucp_Kannada,
+ ucp_Katakana,
+ ucp_Kharoshthi,
+ ucp_Khmer,
+ ucp_Lao,
+ ucp_Latin,
+ ucp_Limbu,
+ ucp_Linear_B,
+ ucp_Malayalam,
+ ucp_Mongolian,
+ ucp_Myanmar,
+ ucp_New_Tai_Lue,
+ ucp_Ogham,
+ ucp_Old_Italic,
+ ucp_Old_Persian,
+ ucp_Oriya,
+ ucp_Osmanya,
+ ucp_Runic,
+ ucp_Shavian,
+ ucp_Sinhala,
+ ucp_Syloti_Nagri,
+ ucp_Syriac,
+ ucp_Tagalog,
+ ucp_Tagbanwa,
+ ucp_Tai_Le,
+ ucp_Tamil,
+ ucp_Telugu,
+ ucp_Thaana,
+ ucp_Thai,
+ ucp_Tibetan,
+ ucp_Tifinagh,
+ ucp_Ugaritic,
+ ucp_Yi
+};
+
#endif
/* End of ucp.h */
diff --git a/ucpinternal.h b/ucpinternal.h
index faefb03..16dfbe9 100644
--- a/ucpinternal.h
+++ b/ucpinternal.h
@@ -1,91 +1,87 @@
/*************************************************
-* libucp - Unicode Property Table handler *
+* Unicode Property Table handler *
*************************************************/
-/* Internal header file defining the layout of compact nodes in the tree. */
+/* Internal header file defining the layout of the bits in each pair of 32-bit
+words that form a data item in the table. */
typedef struct cnode {
- unsigned short int f0;
- unsigned short int f1;
- unsigned short int f2;
+ pcre_uint32 f0;
+ pcre_uint32 f1;
} cnode;
/* Things for the f0 field */
-#define f0_leftexists 0x8000 /* Left child exists */
-#define f0_typemask 0x3f00 /* Type bits */
-#define f0_typeshift 8 /* Type shift */
-#define f0_chhmask 0x00ff /* Character high bits */
+#define f0_scriptmask 0xff000000 /* Mask for script field */
+#define f0_scriptshift 24 /* Shift for script value */
+#define f0_rangeflag 0x00f00000 /* Flag for a range item */
+#define f0_charmask 0x001fffff /* Mask for code point value */
-/* Things for the f2 field */
+/* Things for the f1 field */
-#define f2_rightmask 0xf000 /* Mask for right offset bits */
-#define f2_rightshift 12 /* Shift for right offset */
-#define f2_casemask 0x0fff /* Mask for case offset */
+#define f1_typemask 0xfc000000 /* Mask for char type field */
+#define f1_typeshift 26 /* Shift for the type field */
+#define f1_rangemask 0x0000ffff /* Mask for a range offset */
+#define f1_casemask 0x0000ffff /* Mask for a case offset */
+#define f1_caseneg 0xffff8000 /* Bits for negation */
-/* The tree consists of a vector of structures of type cnode, with the root
-node as the first element. The three short ints (16-bits) are used as follows:
+/* The data consists of a vector of structures of type cnode. The two unsigned
+32-bit integers are used as follows:
-(f0) (1) The 0x8000 bit of f0 is set if a left child exists. The child's node
- is the next node in the vector.
- (2) The 0x4000 bits of f0 is spare.
- (3) The 0x3f00 bits of f0 contain the character type; this is a number
- defined by the enumeration in ucp.h (e.g. ucp_Lu).
- (4) The bottom 8 bits of f0 contain the most significant byte of the
- character's 24-bit codepoint.
+(f0) (1) The most significant byte holds the script number. The numbers are
+ defined by the enum in ucp.h.
-(f1) (1) The f1 field contains the two least significant bytes of the
- codepoint.
+ (2) The 0x00800000 bit is set if this entry defines a range of characters.
+ It is not set if this entry defines a single character
-(f2) (1) The 0xf000 bits of f2 contain zero if there is no right child of this
- node. Otherwise, they contain one plus the exponent of the power of
- two of the offset to the right node (e.g. a value of 3 means 8). The
- units of the offset are node items.
+ (3) The 0x00600000 bits are spare.
- (2) The 0x0fff bits of f2 contain the signed offset from this character to
- its alternate cased value. They are zero if there is no such
- character.
+ (4) The 0x001fffff bits contain the code point. No Unicode code point will
+ ever be greater than 0x0010ffff, so this should be OK for ever.
+(f1) (1) The 0xfc000000 bits contain the character type number. The numbers are
+ defined by an enum in ucp.h.
------------------------------------------------------------------------------
-||.|.| type (6) | ms char (8) || ls char (16) ||....| case offset (12) ||
------------------------------------------------------------------------------
- | | |
- | |-> spare |
- | exponent of right
- |-> left child exists child offset
+ (2) The 0x03ff0000 bits are spare.
+ (3) The 0x0000ffff bits contain EITHER the unsigned offset to the top of
+ range if this entry defines a range, OR the *signed* offset to the
+ character's "other case" partner if this entry defines a single
+ character. There is no partner if the value is zero.
-The upper/lower casing information is set only for characters that come in
-pairs. There are (at present) four non-one-to-one mappings in the Unicode data.
-These are ignored. They are:
+-------------------------------------------------------------------------------
+| script (8) |.|.|.| codepoint (21) || type (6) |.|.| spare (8) | offset (16) |
+-------------------------------------------------------------------------------
+ | | | | |
+ | | |-> spare | |-> spare
+ | | |
+ | |-> spare |-> spare
+ |
+ |-> range flag
- 1FBE Greek Prosgegrammeni (lower, with upper -> capital iota)
- 2126 Ohm
- 212A Kelvin
- 212B Angstrom
+The upper/lower casing information is set only for characters that come in
+pairs. The non-one-to-one mappings in the Unicode data are ignored.
-Certainly for the last three, having an alternate case would seem to be a
-mistake. I don't know any Greek, so cannot comment on the first one.
+When searching the data, proceed as follows:
+(1) Set up for a binary chop search.
-When searching the tree, proceed as follows:
+(2) If the top is not greater than the bottom, the character is not in the
+ table. Its type must therefore be "Cn" ("Undefined").
-(1) Start at the first node.
+(3) Find the middle vector element.
-(2) Extract the character value from f1 and the bottom 8 bits of f0;
+(4) Extract the code point and compare. If equal, we are done.
-(3) Compare with the character being sought. If equal, we are done.
+(5) If the test character is smaller, set the top to the current point, and
+ goto (2).
-(4) If the test character is smaller, inspect the f0_leftexists flag. If it is
- not set, the character is not in the tree. If it is set, move to the next
- node, and go to (2).
+(6) If the current entry defines a range, compute the last character by adding
+ the offset, and see if the test character is within the range. If it is,
+ we are done.
-(5) If the test character is bigger, extract the f2_rightmask bits from f2, and
- shift them right by f2_rightshift. If the result is zero, the character is
- not in the tree. Otherwise, calculate the number of nodes to skip by
- shifting the value 1 left by this number minus one. Go to (2).
+(7) Otherwise, set the bottom to one element past the current point and goto
+ (2).
*/
-
-/* End of internal.h */
+/* End of ucpinternal.h */
diff --git a/ucptable.c b/ucptable.c
index 7fb3a12..ae665b3 100644
--- a/ucptable.c
+++ b/ucptable.c
@@ -1,15105 +1,2968 @@
/* This source module is automatically generated from the Unicode
-property table. See internal.h for a description of the layout. */
+property table. See ucpinternal.h for a description of the layout. */
static cnode ucp_table[] = {
- { 0x9a00, 0x2f1f, 0xe000 },
- { 0x8700, 0x1558, 0xd000 },
- { 0x8700, 0x0a99, 0xc000 },
- { 0x8500, 0x0435, 0xbfe0 },
- { 0x8500, 0x01ff, 0xafff },
- { 0x8500, 0x00ff, 0x9079 },
- { 0x8000, 0x007f, 0x8000 },
- { 0x9500, 0x003f, 0x7000 },
- { 0x8000, 0x001f, 0x6000 },
- { 0x8000, 0x000f, 0x5000 },
- { 0x8000, 0x0007, 0x4000 },
- { 0x8000, 0x0003, 0x3000 },
- { 0x8000, 0x0001, 0x2000 },
- { 0x0000, 0x0000, 0x0000 },
- { 0x0000, 0x0002, 0x0000 },
- { 0x8000, 0x0005, 0x2000 },
- { 0x0000, 0x0004, 0x0000 },
- { 0x0000, 0x0006, 0x0000 },
- { 0x8000, 0x000b, 0x3000 },
- { 0x8000, 0x0009, 0x2000 },
- { 0x0000, 0x0008, 0x0000 },
- { 0x0000, 0x000a, 0x0000 },
- { 0x8000, 0x000d, 0x2000 },
- { 0x0000, 0x000c, 0x0000 },
- { 0x0000, 0x000e, 0x0000 },
- { 0x8000, 0x0017, 0x4000 },
- { 0x8000, 0x0013, 0x3000 },
- { 0x8000, 0x0011, 0x2000 },
- { 0x0000, 0x0010, 0x0000 },
- { 0x0000, 0x0012, 0x0000 },
- { 0x8000, 0x0015, 0x2000 },
- { 0x0000, 0x0014, 0x0000 },
- { 0x0000, 0x0016, 0x0000 },
- { 0x8000, 0x001b, 0x3000 },
- { 0x8000, 0x0019, 0x2000 },
- { 0x0000, 0x0018, 0x0000 },
- { 0x0000, 0x001a, 0x0000 },
- { 0x8000, 0x001d, 0x2000 },
- { 0x0000, 0x001c, 0x0000 },
- { 0x0000, 0x001e, 0x0000 },
- { 0x9500, 0x002f, 0x5000 },
- { 0x9500, 0x0027, 0x4000 },
- { 0x9500, 0x0023, 0x3000 },
- { 0x9500, 0x0021, 0x2000 },
- { 0x1d00, 0x0020, 0x0000 },
- { 0x1500, 0x0022, 0x0000 },
- { 0x9500, 0x0025, 0x2000 },
- { 0x1700, 0x0024, 0x0000 },
- { 0x1500, 0x0026, 0x0000 },
- { 0x9900, 0x002b, 0x3000 },
- { 0x9200, 0x0029, 0x2000 },
- { 0x1600, 0x0028, 0x0000 },
- { 0x1500, 0x002a, 0x0000 },
- { 0x9100, 0x002d, 0x2000 },
- { 0x1500, 0x002c, 0x0000 },
- { 0x1500, 0x002e, 0x0000 },
- { 0x8d00, 0x0037, 0x4000 },
- { 0x8d00, 0x0033, 0x3000 },
- { 0x8d00, 0x0031, 0x2000 },
- { 0x0d00, 0x0030, 0x0000 },
- { 0x0d00, 0x0032, 0x0000 },
- { 0x8d00, 0x0035, 0x2000 },
- { 0x0d00, 0x0034, 0x0000 },
- { 0x0d00, 0x0036, 0x0000 },
- { 0x9500, 0x003b, 0x3000 },
- { 0x8d00, 0x0039, 0x2000 },
- { 0x0d00, 0x0038, 0x0000 },
- { 0x1500, 0x003a, 0x0000 },
- { 0x9900, 0x003d, 0x2000 },
- { 0x1900, 0x003c, 0x0000 },
- { 0x1900, 0x003e, 0x0000 },
- { 0x9000, 0x005f, 0x6000 },
- { 0x8900, 0x004f, 0x5020 },
- { 0x8900, 0x0047, 0x4020 },
- { 0x8900, 0x0043, 0x3020 },
- { 0x8900, 0x0041, 0x2020 },
- { 0x1500, 0x0040, 0x0000 },
- { 0x0900, 0x0042, 0x0020 },
- { 0x8900, 0x0045, 0x2020 },
- { 0x0900, 0x0044, 0x0020 },
- { 0x0900, 0x0046, 0x0020 },
- { 0x8900, 0x004b, 0x3020 },
- { 0x8900, 0x0049, 0x2020 },
- { 0x0900, 0x0048, 0x0020 },
- { 0x0900, 0x004a, 0x0020 },
- { 0x8900, 0x004d, 0x2020 },
- { 0x0900, 0x004c, 0x0020 },
- { 0x0900, 0x004e, 0x0020 },
- { 0x8900, 0x0057, 0x4020 },
- { 0x8900, 0x0053, 0x3020 },
- { 0x8900, 0x0051, 0x2020 },
- { 0x0900, 0x0050, 0x0020 },
- { 0x0900, 0x0052, 0x0020 },
- { 0x8900, 0x0055, 0x2020 },
- { 0x0900, 0x0054, 0x0020 },
- { 0x0900, 0x0056, 0x0020 },
- { 0x9600, 0x005b, 0x3000 },
- { 0x8900, 0x0059, 0x2020 },
- { 0x0900, 0x0058, 0x0020 },
- { 0x0900, 0x005a, 0x0020 },
- { 0x9200, 0x005d, 0x2000 },
- { 0x1500, 0x005c, 0x0000 },
- { 0x1800, 0x005e, 0x0000 },
- { 0x8500, 0x006f, 0x5fe0 },
- { 0x8500, 0x0067, 0x4fe0 },
- { 0x8500, 0x0063, 0x3fe0 },
- { 0x8500, 0x0061, 0x2fe0 },
- { 0x1800, 0x0060, 0x0000 },
- { 0x0500, 0x0062, 0x0fe0 },
- { 0x8500, 0x0065, 0x2fe0 },
- { 0x0500, 0x0064, 0x0fe0 },
- { 0x0500, 0x0066, 0x0fe0 },
- { 0x8500, 0x006b, 0x3fe0 },
- { 0x8500, 0x0069, 0x2fe0 },
- { 0x0500, 0x0068, 0x0fe0 },
- { 0x0500, 0x006a, 0x0fe0 },
- { 0x8500, 0x006d, 0x2fe0 },
- { 0x0500, 0x006c, 0x0fe0 },
- { 0x0500, 0x006e, 0x0fe0 },
- { 0x8500, 0x0077, 0x4fe0 },
- { 0x8500, 0x0073, 0x3fe0 },
- { 0x8500, 0x0071, 0x2fe0 },
- { 0x0500, 0x0070, 0x0fe0 },
- { 0x0500, 0x0072, 0x0fe0 },
- { 0x8500, 0x0075, 0x2fe0 },
- { 0x0500, 0x0074, 0x0fe0 },
- { 0x0500, 0x0076, 0x0fe0 },
- { 0x9600, 0x007b, 0x3000 },
- { 0x8500, 0x0079, 0x2fe0 },
- { 0x0500, 0x0078, 0x0fe0 },
- { 0x0500, 0x007a, 0x0fe0 },
- { 0x9200, 0x007d, 0x2000 },
- { 0x1900, 0x007c, 0x0000 },
- { 0x1900, 0x007e, 0x0000 },
- { 0x9500, 0x00bf, 0x7000 },
- { 0x8000, 0x009f, 0x6000 },
- { 0x8000, 0x008f, 0x5000 },
- { 0x8000, 0x0087, 0x4000 },
- { 0x8000, 0x0083, 0x3000 },
- { 0x8000, 0x0081, 0x2000 },
- { 0x0000, 0x0080, 0x0000 },
- { 0x0000, 0x0082, 0x0000 },
- { 0x8000, 0x0085, 0x2000 },
- { 0x0000, 0x0084, 0x0000 },
- { 0x0000, 0x0086, 0x0000 },
- { 0x8000, 0x008b, 0x3000 },
- { 0x8000, 0x0089, 0x2000 },
- { 0x0000, 0x0088, 0x0000 },
- { 0x0000, 0x008a, 0x0000 },
- { 0x8000, 0x008d, 0x2000 },
- { 0x0000, 0x008c, 0x0000 },
- { 0x0000, 0x008e, 0x0000 },
- { 0x8000, 0x0097, 0x4000 },
- { 0x8000, 0x0093, 0x3000 },
- { 0x8000, 0x0091, 0x2000 },
- { 0x0000, 0x0090, 0x0000 },
- { 0x0000, 0x0092, 0x0000 },
- { 0x8000, 0x0095, 0x2000 },
- { 0x0000, 0x0094, 0x0000 },
- { 0x0000, 0x0096, 0x0000 },
- { 0x8000, 0x009b, 0x3000 },
- { 0x8000, 0x0099, 0x2000 },
- { 0x0000, 0x0098, 0x0000 },
- { 0x0000, 0x009a, 0x0000 },
- { 0x8000, 0x009d, 0x2000 },
- { 0x0000, 0x009c, 0x0000 },
- { 0x0000, 0x009e, 0x0000 },
- { 0x9800, 0x00af, 0x5000 },
- { 0x9a00, 0x00a7, 0x4000 },
- { 0x9700, 0x00a3, 0x3000 },
- { 0x9500, 0x00a1, 0x2000 },
- { 0x1d00, 0x00a0, 0x0000 },
- { 0x1700, 0x00a2, 0x0000 },
- { 0x9700, 0x00a5, 0x2000 },
- { 0x1700, 0x00a4, 0x0000 },
- { 0x1a00, 0x00a6, 0x0000 },
- { 0x9400, 0x00ab, 0x3000 },
- { 0x9a00, 0x00a9, 0x2000 },
- { 0x1800, 0x00a8, 0x0000 },
- { 0x0500, 0x00aa, 0x0000 },
- { 0x8100, 0x00ad, 0x2000 },
- { 0x1900, 0x00ac, 0x0000 },
- { 0x1a00, 0x00ae, 0x0000 },
- { 0x9500, 0x00b7, 0x4000 },
- { 0x8f00, 0x00b3, 0x3000 },
- { 0x9900, 0x00b1, 0x2000 },
- { 0x1a00, 0x00b0, 0x0000 },
- { 0x0f00, 0x00b2, 0x0000 },
- { 0x8500, 0x00b5, 0x22e7 },
- { 0x1800, 0x00b4, 0x0000 },
- { 0x1a00, 0x00b6, 0x0000 },
- { 0x9300, 0x00bb, 0x3000 },
- { 0x8f00, 0x00b9, 0x2000 },
- { 0x1800, 0x00b8, 0x0000 },
- { 0x0500, 0x00ba, 0x0000 },
- { 0x8f00, 0x00bd, 0x2000 },
- { 0x0f00, 0x00bc, 0x0000 },
- { 0x0f00, 0x00be, 0x0000 },
- { 0x8500, 0x00df, 0x6000 },
- { 0x8900, 0x00cf, 0x5020 },
- { 0x8900, 0x00c7, 0x4020 },
- { 0x8900, 0x00c3, 0x3020 },
- { 0x8900, 0x00c1, 0x2020 },
- { 0x0900, 0x00c0, 0x0020 },
- { 0x0900, 0x00c2, 0x0020 },
- { 0x8900, 0x00c5, 0x2020 },
- { 0x0900, 0x00c4, 0x0020 },
- { 0x0900, 0x00c6, 0x0020 },
- { 0x8900, 0x00cb, 0x3020 },
- { 0x8900, 0x00c9, 0x2020 },
- { 0x0900, 0x00c8, 0x0020 },
- { 0x0900, 0x00ca, 0x0020 },
- { 0x8900, 0x00cd, 0x2020 },
- { 0x0900, 0x00cc, 0x0020 },
- { 0x0900, 0x00ce, 0x0020 },
- { 0x9900, 0x00d7, 0x4000 },
- { 0x8900, 0x00d3, 0x3020 },
- { 0x8900, 0x00d1, 0x2020 },
- { 0x0900, 0x00d0, 0x0020 },
- { 0x0900, 0x00d2, 0x0020 },
- { 0x8900, 0x00d5, 0x2020 },
- { 0x0900, 0x00d4, 0x0020 },
- { 0x0900, 0x00d6, 0x0020 },
- { 0x8900, 0x00db, 0x3020 },
- { 0x8900, 0x00d9, 0x2020 },
- { 0x0900, 0x00d8, 0x0020 },
- { 0x0900, 0x00da, 0x0020 },
- { 0x8900, 0x00dd, 0x2020 },
- { 0x0900, 0x00dc, 0x0020 },
- { 0x0900, 0x00de, 0x0020 },
- { 0x8500, 0x00ef, 0x5fe0 },
- { 0x8500, 0x00e7, 0x4fe0 },
- { 0x8500, 0x00e3, 0x3fe0 },
- { 0x8500, 0x00e1, 0x2fe0 },
- { 0x0500, 0x00e0, 0x0fe0 },
- { 0x0500, 0x00e2, 0x0fe0 },
- { 0x8500, 0x00e5, 0x2fe0 },
- { 0x0500, 0x00e4, 0x0fe0 },
- { 0x0500, 0x00e6, 0x0fe0 },
- { 0x8500, 0x00eb, 0x3fe0 },
- { 0x8500, 0x00e9, 0x2fe0 },
- { 0x0500, 0x00e8, 0x0fe0 },
- { 0x0500, 0x00ea, 0x0fe0 },
- { 0x8500, 0x00ed, 0x2fe0 },
- { 0x0500, 0x00ec, 0x0fe0 },
- { 0x0500, 0x00ee, 0x0fe0 },
- { 0x9900, 0x00f7, 0x4000 },
- { 0x8500, 0x00f3, 0x3fe0 },
- { 0x8500, 0x00f1, 0x2fe0 },
- { 0x0500, 0x00f0, 0x0fe0 },
- { 0x0500, 0x00f2, 0x0fe0 },
- { 0x8500, 0x00f5, 0x2fe0 },
- { 0x0500, 0x00f4, 0x0fe0 },
- { 0x0500, 0x00f6, 0x0fe0 },
- { 0x8500, 0x00fb, 0x3fe0 },
- { 0x8500, 0x00f9, 0x2fe0 },
- { 0x0500, 0x00f8, 0x0fe0 },
- { 0x0500, 0x00fa, 0x0fe0 },
- { 0x8500, 0x00fd, 0x2fe0 },
- { 0x0500, 0x00fc, 0x0fe0 },
- { 0x0500, 0x00fe, 0x0fe0 },
- { 0x8500, 0x017f, 0x8ed4 },
- { 0x8900, 0x013f, 0x7001 },
- { 0x8500, 0x011f, 0x6fff },
- { 0x8500, 0x010f, 0x5fff },
- { 0x8500, 0x0107, 0x4fff },
- { 0x8500, 0x0103, 0x3fff },
- { 0x8500, 0x0101, 0x2fff },
- { 0x0900, 0x0100, 0x0001 },
- { 0x0900, 0x0102, 0x0001 },
- { 0x8500, 0x0105, 0x2fff },
- { 0x0900, 0x0104, 0x0001 },
- { 0x0900, 0x0106, 0x0001 },
- { 0x8500, 0x010b, 0x3fff },
- { 0x8500, 0x0109, 0x2fff },
- { 0x0900, 0x0108, 0x0001 },
- { 0x0900, 0x010a, 0x0001 },
- { 0x8500, 0x010d, 0x2fff },
- { 0x0900, 0x010c, 0x0001 },
- { 0x0900, 0x010e, 0x0001 },
- { 0x8500, 0x0117, 0x4fff },
- { 0x8500, 0x0113, 0x3fff },
- { 0x8500, 0x0111, 0x2fff },
- { 0x0900, 0x0110, 0x0001 },
- { 0x0900, 0x0112, 0x0001 },
- { 0x8500, 0x0115, 0x2fff },
- { 0x0900, 0x0114, 0x0001 },
- { 0x0900, 0x0116, 0x0001 },
- { 0x8500, 0x011b, 0x3fff },
- { 0x8500, 0x0119, 0x2fff },
- { 0x0900, 0x0118, 0x0001 },
- { 0x0900, 0x011a, 0x0001 },
- { 0x8500, 0x011d, 0x2fff },
- { 0x0900, 0x011c, 0x0001 },
- { 0x0900, 0x011e, 0x0001 },
- { 0x8500, 0x012f, 0x5fff },
- { 0x8500, 0x0127, 0x4fff },
- { 0x8500, 0x0123, 0x3fff },
- { 0x8500, 0x0121, 0x2fff },
- { 0x0900, 0x0120, 0x0001 },
- { 0x0900, 0x0122, 0x0001 },
- { 0x8500, 0x0125, 0x2fff },
- { 0x0900, 0x0124, 0x0001 },
- { 0x0900, 0x0126, 0x0001 },
- { 0x8500, 0x012b, 0x3fff },
- { 0x8500, 0x0129, 0x2fff },
- { 0x0900, 0x0128, 0x0001 },
- { 0x0900, 0x012a, 0x0001 },
- { 0x8500, 0x012d, 0x2fff },
- { 0x0900, 0x012c, 0x0001 },
- { 0x0900, 0x012e, 0x0001 },
- { 0x8500, 0x0137, 0x4fff },
- { 0x8500, 0x0133, 0x3fff },
- { 0x8500, 0x0131, 0x2f18 },
- { 0x0900, 0x0130, 0x0f39 },
- { 0x0900, 0x0132, 0x0001 },
- { 0x8500, 0x0135, 0x2fff },
- { 0x0900, 0x0134, 0x0001 },
- { 0x0900, 0x0136, 0x0001 },
- { 0x8900, 0x013b, 0x3001 },
- { 0x8900, 0x0139, 0x2001 },
- { 0x0500, 0x0138, 0x0000 },
- { 0x0500, 0x013a, 0x0fff },
- { 0x8900, 0x013d, 0x2001 },
- { 0x0500, 0x013c, 0x0fff },
- { 0x0500, 0x013e, 0x0fff },
- { 0x8500, 0x015f, 0x6fff },
- { 0x8500, 0x014f, 0x5fff },
- { 0x8900, 0x0147, 0x4001 },
- { 0x8900, 0x0143, 0x3001 },
- { 0x8900, 0x0141, 0x2001 },
- { 0x0500, 0x0140, 0x0fff },
- { 0x0500, 0x0142, 0x0fff },
- { 0x8900, 0x0145, 0x2001 },
- { 0x0500, 0x0144, 0x0fff },
- { 0x0500, 0x0146, 0x0fff },
- { 0x8500, 0x014b, 0x3fff },
- { 0x8500, 0x0149, 0x2000 },
- { 0x0500, 0x0148, 0x0fff },
- { 0x0900, 0x014a, 0x0001 },
- { 0x8500, 0x014d, 0x2fff },
- { 0x0900, 0x014c, 0x0001 },
- { 0x0900, 0x014e, 0x0001 },
- { 0x8500, 0x0157, 0x4fff },
- { 0x8500, 0x0153, 0x3fff },
- { 0x8500, 0x0151, 0x2fff },
- { 0x0900, 0x0150, 0x0001 },
- { 0x0900, 0x0152, 0x0001 },
- { 0x8500, 0x0155, 0x2fff },
- { 0x0900, 0x0154, 0x0001 },
- { 0x0900, 0x0156, 0x0001 },
- { 0x8500, 0x015b, 0x3fff },
- { 0x8500, 0x0159, 0x2fff },
- { 0x0900, 0x0158, 0x0001 },
- { 0x0900, 0x015a, 0x0001 },
- { 0x8500, 0x015d, 0x2fff },
- { 0x0900, 0x015c, 0x0001 },
- { 0x0900, 0x015e, 0x0001 },
- { 0x8500, 0x016f, 0x5fff },
- { 0x8500, 0x0167, 0x4fff },
- { 0x8500, 0x0163, 0x3fff },
- { 0x8500, 0x0161, 0x2fff },
- { 0x0900, 0x0160, 0x0001 },
- { 0x0900, 0x0162, 0x0001 },
- { 0x8500, 0x0165, 0x2fff },
- { 0x0900, 0x0164, 0x0001 },
- { 0x0900, 0x0166, 0x0001 },
- { 0x8500, 0x016b, 0x3fff },
- { 0x8500, 0x0169, 0x2fff },
- { 0x0900, 0x0168, 0x0001 },
- { 0x0900, 0x016a, 0x0001 },
- { 0x8500, 0x016d, 0x2fff },
- { 0x0900, 0x016c, 0x0001 },
- { 0x0900, 0x016e, 0x0001 },
- { 0x8500, 0x0177, 0x4fff },
- { 0x8500, 0x0173, 0x3fff },
- { 0x8500, 0x0171, 0x2fff },
- { 0x0900, 0x0170, 0x0001 },
- { 0x0900, 0x0172, 0x0001 },
- { 0x8500, 0x0175, 0x2fff },
- { 0x0900, 0x0174, 0x0001 },
- { 0x0900, 0x0176, 0x0001 },
- { 0x8900, 0x017b, 0x3001 },
- { 0x8900, 0x0179, 0x2001 },
- { 0x0900, 0x0178, 0x0f87 },
- { 0x0500, 0x017a, 0x0fff },
- { 0x8900, 0x017d, 0x2001 },
- { 0x0500, 0x017c, 0x0fff },
- { 0x0500, 0x017e, 0x0fff },
- { 0x8500, 0x01bf, 0x7038 },
- { 0x8900, 0x019f, 0x60d6 },
- { 0x8900, 0x018f, 0x50ca },
- { 0x8900, 0x0187, 0x4001 },
- { 0x8500, 0x0183, 0x3fff },
- { 0x8900, 0x0181, 0x20d2 },
- { 0x0500, 0x0180, 0x0000 },
- { 0x0900, 0x0182, 0x0001 },
- { 0x8500, 0x0185, 0x2fff },
- { 0x0900, 0x0184, 0x0001 },
- { 0x0900, 0x0186, 0x00ce },
- { 0x8900, 0x018b, 0x3001 },
- { 0x8900, 0x0189, 0x20cd },
- { 0x0500, 0x0188, 0x0fff },
- { 0x0900, 0x018a, 0x00cd },
- { 0x8500, 0x018d, 0x2000 },
- { 0x0500, 0x018c, 0x0fff },
- { 0x0900, 0x018e, 0x004f },
- { 0x8900, 0x0197, 0x40d1 },
- { 0x8900, 0x0193, 0x30cd },
- { 0x8900, 0x0191, 0x2001 },
- { 0x0900, 0x0190, 0x00cb },
- { 0x0500, 0x0192, 0x0fff },
- { 0x8500, 0x0195, 0x2061 },
- { 0x0900, 0x0194, 0x00cf },
- { 0x0900, 0x0196, 0x00d3 },
- { 0x8500, 0x019b, 0x3000 },
- { 0x8500, 0x0199, 0x2fff },
- { 0x0900, 0x0198, 0x0001 },
- { 0x0500, 0x019a, 0x0000 },
- { 0x8900, 0x019d, 0x20d5 },
- { 0x0900, 0x019c, 0x00d3 },
- { 0x0500, 0x019e, 0x0082 },
- { 0x8900, 0x01af, 0x5001 },
- { 0x8900, 0x01a7, 0x4001 },
- { 0x8500, 0x01a3, 0x3fff },
- { 0x8500, 0x01a1, 0x2fff },
- { 0x0900, 0x01a0, 0x0001 },
- { 0x0900, 0x01a2, 0x0001 },
- { 0x8500, 0x01a5, 0x2fff },
- { 0x0900, 0x01a4, 0x0001 },
- { 0x0900, 0x01a6, 0x00da },
- { 0x8500, 0x01ab, 0x3000 },
- { 0x8900, 0x01a9, 0x20da },
- { 0x0500, 0x01a8, 0x0fff },
- { 0x0500, 0x01aa, 0x0000 },
- { 0x8500, 0x01ad, 0x2fff },
- { 0x0900, 0x01ac, 0x0001 },
- { 0x0900, 0x01ae, 0x00da },
- { 0x8900, 0x01b7, 0x40db },
- { 0x8900, 0x01b3, 0x3001 },
- { 0x8900, 0x01b1, 0x20d9 },
- { 0x0500, 0x01b0, 0x0fff },
- { 0x0900, 0x01b2, 0x00d9 },
- { 0x8900, 0x01b5, 0x2001 },
- { 0x0500, 0x01b4, 0x0fff },
- { 0x0500, 0x01b6, 0x0fff },
- { 0x8700, 0x01bb, 0x3000 },
- { 0x8500, 0x01b9, 0x2fff },
- { 0x0900, 0x01b8, 0x0001 },
- { 0x0500, 0x01ba, 0x0000 },
- { 0x8500, 0x01bd, 0x2fff },
- { 0x0900, 0x01bc, 0x0001 },
- { 0x0500, 0x01be, 0x0000 },
- { 0x8500, 0x01df, 0x6fff },
- { 0x8900, 0x01cf, 0x5001 },
- { 0x8900, 0x01c7, 0x4002 },
- { 0x8700, 0x01c3, 0x3000 },
- { 0x8700, 0x01c1, 0x2000 },
- { 0x0700, 0x01c0, 0x0000 },
- { 0x0700, 0x01c2, 0x0000 },
- { 0x8800, 0x01c5, 0x2000 },
- { 0x0900, 0x01c4, 0x0002 },
- { 0x0500, 0x01c6, 0x0ffe },
- { 0x8800, 0x01cb, 0x3000 },
- { 0x8500, 0x01c9, 0x2ffe },
- { 0x0800, 0x01c8, 0x0000 },
- { 0x0900, 0x01ca, 0x0002 },
- { 0x8900, 0x01cd, 0x2001 },
- { 0x0500, 0x01cc, 0x0ffe },
- { 0x0500, 0x01ce, 0x0fff },
- { 0x8900, 0x01d7, 0x4001 },
- { 0x8900, 0x01d3, 0x3001 },
- { 0x8900, 0x01d1, 0x2001 },
- { 0x0500, 0x01d0, 0x0fff },
- { 0x0500, 0x01d2, 0x0fff },
- { 0x8900, 0x01d5, 0x2001 },
- { 0x0500, 0x01d4, 0x0fff },
- { 0x0500, 0x01d6, 0x0fff },
- { 0x8900, 0x01db, 0x3001 },
- { 0x8900, 0x01d9, 0x2001 },
- { 0x0500, 0x01d8, 0x0fff },
- { 0x0500, 0x01da, 0x0fff },
- { 0x8500, 0x01dd, 0x2fb1 },
- { 0x0500, 0x01dc, 0x0fff },
- { 0x0900, 0x01de, 0x0001 },
- { 0x8500, 0x01ef, 0x5fff },
- { 0x8500, 0x01e7, 0x4fff },
- { 0x8500, 0x01e3, 0x3fff },
- { 0x8500, 0x01e1, 0x2fff },
- { 0x0900, 0x01e0, 0x0001 },
- { 0x0900, 0x01e2, 0x0001 },
- { 0x8500, 0x01e5, 0x2fff },
- { 0x0900, 0x01e4, 0x0001 },
- { 0x0900, 0x01e6, 0x0001 },
- { 0x8500, 0x01eb, 0x3fff },
- { 0x8500, 0x01e9, 0x2fff },
- { 0x0900, 0x01e8, 0x0001 },
- { 0x0900, 0x01ea, 0x0001 },
- { 0x8500, 0x01ed, 0x2fff },
- { 0x0900, 0x01ec, 0x0001 },
- { 0x0900, 0x01ee, 0x0001 },
- { 0x8900, 0x01f7, 0x4fc8 },
- { 0x8500, 0x01f3, 0x3ffe },
- { 0x8900, 0x01f1, 0x2002 },
- { 0x0500, 0x01f0, 0x0000 },
- { 0x0800, 0x01f2, 0x0000 },
- { 0x8500, 0x01f5, 0x2fff },
- { 0x0900, 0x01f4, 0x0001 },
- { 0x0900, 0x01f6, 0x0f9f },
- { 0x8500, 0x01fb, 0x3fff },
- { 0x8500, 0x01f9, 0x2fff },
- { 0x0900, 0x01f8, 0x0001 },
- { 0x0900, 0x01fa, 0x0001 },
- { 0x8500, 0x01fd, 0x2fff },
- { 0x0900, 0x01fc, 0x0001 },
- { 0x0900, 0x01fe, 0x0001 },
- { 0x8c00, 0x0318, 0x9000 },
- { 0x8500, 0x0298, 0x8000 },
- { 0x8500, 0x0258, 0x7000 },
- { 0x8500, 0x021f, 0x6fff },
- { 0x8500, 0x020f, 0x5fff },
- { 0x8500, 0x0207, 0x4fff },
- { 0x8500, 0x0203, 0x3fff },
- { 0x8500, 0x0201, 0x2fff },
- { 0x0900, 0x0200, 0x0001 },
- { 0x0900, 0x0202, 0x0001 },
- { 0x8500, 0x0205, 0x2fff },
- { 0x0900, 0x0204, 0x0001 },
- { 0x0900, 0x0206, 0x0001 },
- { 0x8500, 0x020b, 0x3fff },
- { 0x8500, 0x0209, 0x2fff },
- { 0x0900, 0x0208, 0x0001 },
- { 0x0900, 0x020a, 0x0001 },
- { 0x8500, 0x020d, 0x2fff },
- { 0x0900, 0x020c, 0x0001 },
- { 0x0900, 0x020e, 0x0001 },
- { 0x8500, 0x0217, 0x4fff },
- { 0x8500, 0x0213, 0x3fff },
- { 0x8500, 0x0211, 0x2fff },
- { 0x0900, 0x0210, 0x0001 },
- { 0x0900, 0x0212, 0x0001 },
- { 0x8500, 0x0215, 0x2fff },
- { 0x0900, 0x0214, 0x0001 },
- { 0x0900, 0x0216, 0x0001 },
- { 0x8500, 0x021b, 0x3fff },
- { 0x8500, 0x0219, 0x2fff },
- { 0x0900, 0x0218, 0x0001 },
- { 0x0900, 0x021a, 0x0001 },
- { 0x8500, 0x021d, 0x2fff },
- { 0x0900, 0x021c, 0x0001 },
- { 0x0900, 0x021e, 0x0001 },
- { 0x8500, 0x022f, 0x5fff },
- { 0x8500, 0x0227, 0x4fff },
- { 0x8500, 0x0223, 0x3fff },
- { 0x8500, 0x0221, 0x2000 },
- { 0x0900, 0x0220, 0x0f7e },
- { 0x0900, 0x0222, 0x0001 },
- { 0x8500, 0x0225, 0x2fff },
- { 0x0900, 0x0224, 0x0001 },
- { 0x0900, 0x0226, 0x0001 },
- { 0x8500, 0x022b, 0x3fff },
- { 0x8500, 0x0229, 0x2fff },
- { 0x0900, 0x0228, 0x0001 },
- { 0x0900, 0x022a, 0x0001 },
- { 0x8500, 0x022d, 0x2fff },
- { 0x0900, 0x022c, 0x0001 },
- { 0x0900, 0x022e, 0x0001 },
- { 0x8500, 0x0250, 0x4000 },
- { 0x8500, 0x0233, 0x3fff },
- { 0x8500, 0x0231, 0x2fff },
- { 0x0900, 0x0230, 0x0001 },
- { 0x0900, 0x0232, 0x0001 },
- { 0x8500, 0x0235, 0x2000 },
- { 0x0500, 0x0234, 0x0000 },
- { 0x0500, 0x0236, 0x0000 },
- { 0x8500, 0x0254, 0x3f32 },
- { 0x8500, 0x0252, 0x2000 },
- { 0x0500, 0x0251, 0x0000 },
- { 0x0500, 0x0253, 0x0f2e },
- { 0x8500, 0x0256, 0x2f33 },
- { 0x0500, 0x0255, 0x0000 },
- { 0x0500, 0x0257, 0x0f33 },
- { 0x8500, 0x0278, 0x6000 },
- { 0x8500, 0x0268, 0x5f2f },
- { 0x8500, 0x0260, 0x4f33 },
- { 0x8500, 0x025c, 0x3000 },
- { 0x8500, 0x025a, 0x2000 },
- { 0x0500, 0x0259, 0x0f36 },
- { 0x0500, 0x025b, 0x0f35 },
- { 0x8500, 0x025e, 0x2000 },
- { 0x0500, 0x025d, 0x0000 },
- { 0x0500, 0x025f, 0x0000 },
- { 0x8500, 0x0264, 0x3000 },
- { 0x8500, 0x0262, 0x2000 },
- { 0x0500, 0x0261, 0x0000 },
- { 0x0500, 0x0263, 0x0f31 },
- { 0x8500, 0x0266, 0x2000 },
- { 0x0500, 0x0265, 0x0000 },
- { 0x0500, 0x0267, 0x0000 },
- { 0x8500, 0x0270, 0x4000 },
- { 0x8500, 0x026c, 0x3000 },
- { 0x8500, 0x026a, 0x2000 },
- { 0x0500, 0x0269, 0x0f2d },
- { 0x0500, 0x026b, 0x0000 },
- { 0x8500, 0x026e, 0x2000 },
- { 0x0500, 0x026d, 0x0000 },
- { 0x0500, 0x026f, 0x0f2d },
- { 0x8500, 0x0274, 0x3000 },
- { 0x8500, 0x0272, 0x2f2b },
- { 0x0500, 0x0271, 0x0000 },
- { 0x0500, 0x0273, 0x0000 },
- { 0x8500, 0x0276, 0x2000 },
- { 0x0500, 0x0275, 0x0f2a },
- { 0x0500, 0x0277, 0x0000 },
- { 0x8500, 0x0288, 0x5f26 },
- { 0x8500, 0x0280, 0x4f26 },
- { 0x8500, 0x027c, 0x3000 },
- { 0x8500, 0x027a, 0x2000 },
- { 0x0500, 0x0279, 0x0000 },
- { 0x0500, 0x027b, 0x0000 },
- { 0x8500, 0x027e, 0x2000 },
- { 0x0500, 0x027d, 0x0000 },
- { 0x0500, 0x027f, 0x0000 },
- { 0x8500, 0x0284, 0x3000 },
- { 0x8500, 0x0282, 0x2000 },
- { 0x0500, 0x0281, 0x0000 },
- { 0x0500, 0x0283, 0x0f26 },
- { 0x8500, 0x0286, 0x2000 },
- { 0x0500, 0x0285, 0x0000 },
- { 0x0500, 0x0287, 0x0000 },
- { 0x8500, 0x0290, 0x4000 },
- { 0x8500, 0x028c, 0x3000 },
- { 0x8500, 0x028a, 0x2f27 },
- { 0x0500, 0x0289, 0x0000 },
- { 0x0500, 0x028b, 0x0f27 },
- { 0x8500, 0x028e, 0x2000 },
- { 0x0500, 0x028d, 0x0000 },
- { 0x0500, 0x028f, 0x0000 },
- { 0x8500, 0x0294, 0x3000 },
- { 0x8500, 0x0292, 0x2f25 },
- { 0x0500, 0x0291, 0x0000 },
- { 0x0500, 0x0293, 0x0000 },
- { 0x8500, 0x0296, 0x2000 },
- { 0x0500, 0x0295, 0x0000 },
- { 0x0500, 0x0297, 0x0000 },
- { 0x9800, 0x02d8, 0x7000 },
- { 0x8600, 0x02b8, 0x6000 },
- { 0x8500, 0x02a8, 0x5000 },
- { 0x8500, 0x02a0, 0x4000 },
- { 0x8500, 0x029c, 0x3000 },
- { 0x8500, 0x029a, 0x2000 },
- { 0x0500, 0x0299, 0x0000 },
- { 0x0500, 0x029b, 0x0000 },
- { 0x8500, 0x029e, 0x2000 },
- { 0x0500, 0x029d, 0x0000 },
- { 0x0500, 0x029f, 0x0000 },
- { 0x8500, 0x02a4, 0x3000 },
- { 0x8500, 0x02a2, 0x2000 },
- { 0x0500, 0x02a1, 0x0000 },
- { 0x0500, 0x02a3, 0x0000 },
- { 0x8500, 0x02a6, 0x2000 },
- { 0x0500, 0x02a5, 0x0000 },
- { 0x0500, 0x02a7, 0x0000 },
- { 0x8600, 0x02b0, 0x4000 },
- { 0x8500, 0x02ac, 0x3000 },
- { 0x8500, 0x02aa, 0x2000 },
- { 0x0500, 0x02a9, 0x0000 },
- { 0x0500, 0x02ab, 0x0000 },
- { 0x8500, 0x02ae, 0x2000 },
- { 0x0500, 0x02ad, 0x0000 },
- { 0x0500, 0x02af, 0x0000 },
- { 0x8600, 0x02b4, 0x3000 },
- { 0x8600, 0x02b2, 0x2000 },
- { 0x0600, 0x02b1, 0x0000 },
- { 0x0600, 0x02b3, 0x0000 },
- { 0x8600, 0x02b6, 0x2000 },
- { 0x0600, 0x02b5, 0x0000 },
- { 0x0600, 0x02b7, 0x0000 },
- { 0x8600, 0x02c8, 0x5000 },
- { 0x8600, 0x02c0, 0x4000 },
- { 0x8600, 0x02bc, 0x3000 },
- { 0x8600, 0x02ba, 0x2000 },
- { 0x0600, 0x02b9, 0x0000 },
- { 0x0600, 0x02bb, 0x0000 },
- { 0x8600, 0x02be, 0x2000 },
- { 0x0600, 0x02bd, 0x0000 },
- { 0x0600, 0x02bf, 0x0000 },
- { 0x9800, 0x02c4, 0x3000 },
- { 0x9800, 0x02c2, 0x2000 },
- { 0x0600, 0x02c1, 0x0000 },
- { 0x1800, 0x02c3, 0x0000 },
- { 0x8600, 0x02c6, 0x2000 },
- { 0x1800, 0x02c5, 0x0000 },
- { 0x0600, 0x02c7, 0x0000 },
- { 0x8600, 0x02d0, 0x4000 },
- { 0x8600, 0x02cc, 0x3000 },
- { 0x8600, 0x02ca, 0x2000 },
- { 0x0600, 0x02c9, 0x0000 },
- { 0x0600, 0x02cb, 0x0000 },
- { 0x8600, 0x02ce, 0x2000 },
- { 0x0600, 0x02cd, 0x0000 },
- { 0x0600, 0x02cf, 0x0000 },
- { 0x9800, 0x02d4, 0x3000 },
- { 0x9800, 0x02d2, 0x2000 },
- { 0x0600, 0x02d1, 0x0000 },
- { 0x1800, 0x02d3, 0x0000 },
- { 0x9800, 0x02d6, 0x2000 },
- { 0x1800, 0x02d5, 0x0000 },
- { 0x1800, 0x02d7, 0x0000 },
- { 0x9800, 0x02f8, 0x6000 },
- { 0x9800, 0x02e8, 0x5000 },
- { 0x8600, 0x02e0, 0x4000 },
- { 0x9800, 0x02dc, 0x3000 },
- { 0x9800, 0x02da, 0x2000 },
- { 0x1800, 0x02d9, 0x0000 },
- { 0x1800, 0x02db, 0x0000 },
- { 0x9800, 0x02de, 0x2000 },
- { 0x1800, 0x02dd, 0x0000 },
- { 0x1800, 0x02df, 0x0000 },
- { 0x8600, 0x02e4, 0x3000 },
- { 0x8600, 0x02e2, 0x2000 },
- { 0x0600, 0x02e1, 0x0000 },
- { 0x0600, 0x02e3, 0x0000 },
- { 0x9800, 0x02e6, 0x2000 },
- { 0x1800, 0x02e5, 0x0000 },
- { 0x1800, 0x02e7, 0x0000 },
- { 0x9800, 0x02f0, 0x4000 },
- { 0x9800, 0x02ec, 0x3000 },
- { 0x9800, 0x02ea, 0x2000 },
- { 0x1800, 0x02e9, 0x0000 },
- { 0x1800, 0x02eb, 0x0000 },
- { 0x8600, 0x02ee, 0x2000 },
- { 0x1800, 0x02ed, 0x0000 },
- { 0x1800, 0x02ef, 0x0000 },
- { 0x9800, 0x02f4, 0x3000 },
- { 0x9800, 0x02f2, 0x2000 },
- { 0x1800, 0x02f1, 0x0000 },
- { 0x1800, 0x02f3, 0x0000 },
- { 0x9800, 0x02f6, 0x2000 },
- { 0x1800, 0x02f5, 0x0000 },
- { 0x1800, 0x02f7, 0x0000 },
- { 0x8c00, 0x0308, 0x5000 },
- { 0x8c00, 0x0300, 0x4000 },
- { 0x9800, 0x02fc, 0x3000 },
- { 0x9800, 0x02fa, 0x2000 },
- { 0x1800, 0x02f9, 0x0000 },
- { 0x1800, 0x02fb, 0x0000 },
- { 0x9800, 0x02fe, 0x2000 },
- { 0x1800, 0x02fd, 0x0000 },
- { 0x1800, 0x02ff, 0x0000 },
- { 0x8c00, 0x0304, 0x3000 },
- { 0x8c00, 0x0302, 0x2000 },
- { 0x0c00, 0x0301, 0x0000 },
- { 0x0c00, 0x0303, 0x0000 },
- { 0x8c00, 0x0306, 0x2000 },
- { 0x0c00, 0x0305, 0x0000 },
- { 0x0c00, 0x0307, 0x0000 },
- { 0x8c00, 0x0310, 0x4000 },
- { 0x8c00, 0x030c, 0x3000 },
- { 0x8c00, 0x030a, 0x2000 },
- { 0x0c00, 0x0309, 0x0000 },
- { 0x0c00, 0x030b, 0x0000 },
- { 0x8c00, 0x030e, 0x2000 },
- { 0x0c00, 0x030d, 0x0000 },
- { 0x0c00, 0x030f, 0x0000 },
- { 0x8c00, 0x0314, 0x3000 },
- { 0x8c00, 0x0312, 0x2000 },
- { 0x0c00, 0x0311, 0x0000 },
- { 0x0c00, 0x0313, 0x0000 },
- { 0x8c00, 0x0316, 0x2000 },
- { 0x0c00, 0x0315, 0x0000 },
- { 0x0c00, 0x0317, 0x0000 },
- { 0x8500, 0x03b0, 0x8000 },
- { 0x8c00, 0x035d, 0x7000 },
- { 0x8c00, 0x0338, 0x6000 },
- { 0x8c00, 0x0328, 0x5000 },
- { 0x8c00, 0x0320, 0x4000 },
- { 0x8c00, 0x031c, 0x3000 },
- { 0x8c00, 0x031a, 0x2000 },
- { 0x0c00, 0x0319, 0x0000 },
- { 0x0c00, 0x031b, 0x0000 },
- { 0x8c00, 0x031e, 0x2000 },
- { 0x0c00, 0x031d, 0x0000 },
- { 0x0c00, 0x031f, 0x0000 },
- { 0x8c00, 0x0324, 0x3000 },
- { 0x8c00, 0x0322, 0x2000 },
- { 0x0c00, 0x0321, 0x0000 },
- { 0x0c00, 0x0323, 0x0000 },
- { 0x8c00, 0x0326, 0x2000 },
- { 0x0c00, 0x0325, 0x0000 },
- { 0x0c00, 0x0327, 0x0000 },
- { 0x8c00, 0x0330, 0x4000 },
- { 0x8c00, 0x032c, 0x3000 },
- { 0x8c00, 0x032a, 0x2000 },
- { 0x0c00, 0x0329, 0x0000 },
- { 0x0c00, 0x032b, 0x0000 },
- { 0x8c00, 0x032e, 0x2000 },
- { 0x0c00, 0x032d, 0x0000 },
- { 0x0c00, 0x032f, 0x0000 },
- { 0x8c00, 0x0334, 0x3000 },
- { 0x8c00, 0x0332, 0x2000 },
- { 0x0c00, 0x0331, 0x0000 },
- { 0x0c00, 0x0333, 0x0000 },
- { 0x8c00, 0x0336, 0x2000 },
- { 0x0c00, 0x0335, 0x0000 },
- { 0x0c00, 0x0337, 0x0000 },
- { 0x8c00, 0x0348, 0x5000 },
- { 0x8c00, 0x0340, 0x4000 },
- { 0x8c00, 0x033c, 0x3000 },
- { 0x8c00, 0x033a, 0x2000 },
- { 0x0c00, 0x0339, 0x0000 },
- { 0x0c00, 0x033b, 0x0000 },
- { 0x8c00, 0x033e, 0x2000 },
- { 0x0c00, 0x033d, 0x0000 },
- { 0x0c00, 0x033f, 0x0000 },
- { 0x8c00, 0x0344, 0x3000 },
- { 0x8c00, 0x0342, 0x2000 },
- { 0x0c00, 0x0341, 0x0000 },
- { 0x0c00, 0x0343, 0x0000 },
- { 0x8c00, 0x0346, 0x2000 },
- { 0x0c00, 0x0345, 0x0000 },
- { 0x0c00, 0x0347, 0x0000 },
- { 0x8c00, 0x0350, 0x4000 },
- { 0x8c00, 0x034c, 0x3000 },
- { 0x8c00, 0x034a, 0x2000 },
- { 0x0c00, 0x0349, 0x0000 },
- { 0x0c00, 0x034b, 0x0000 },
- { 0x8c00, 0x034e, 0x2000 },
- { 0x0c00, 0x034d, 0x0000 },
- { 0x0c00, 0x034f, 0x0000 },
- { 0x8c00, 0x0354, 0x3000 },
- { 0x8c00, 0x0352, 0x2000 },
- { 0x0c00, 0x0351, 0x0000 },
- { 0x0c00, 0x0353, 0x0000 },
- { 0x8c00, 0x0356, 0x2000 },
- { 0x0c00, 0x0355, 0x0000 },
- { 0x0c00, 0x0357, 0x0000 },
- { 0x8900, 0x038f, 0x603f },
- { 0x8c00, 0x036d, 0x5000 },
- { 0x8c00, 0x0365, 0x4000 },
- { 0x8c00, 0x0361, 0x3000 },
- { 0x8c00, 0x035f, 0x2000 },
- { 0x0c00, 0x035e, 0x0000 },
- { 0x0c00, 0x0360, 0x0000 },
- { 0x8c00, 0x0363, 0x2000 },
- { 0x0c00, 0x0362, 0x0000 },
- { 0x0c00, 0x0364, 0x0000 },
- { 0x8c00, 0x0369, 0x3000 },
- { 0x8c00, 0x0367, 0x2000 },
- { 0x0c00, 0x0366, 0x0000 },
- { 0x0c00, 0x0368, 0x0000 },
- { 0x8c00, 0x036b, 0x2000 },
- { 0x0c00, 0x036a, 0x0000 },
- { 0x0c00, 0x036c, 0x0000 },
- { 0x9800, 0x0385, 0x4000 },
- { 0x9800, 0x0375, 0x3000 },
- { 0x8c00, 0x036f, 0x2000 },
- { 0x0c00, 0x036e, 0x0000 },
- { 0x1800, 0x0374, 0x0000 },
- { 0x9500, 0x037e, 0x2000 },
- { 0x0600, 0x037a, 0x0000 },
- { 0x1800, 0x0384, 0x0000 },
- { 0x8900, 0x0389, 0x3025 },
- { 0x9500, 0x0387, 0x2000 },
- { 0x0900, 0x0386, 0x0026 },
- { 0x0900, 0x0388, 0x0025 },
- { 0x8900, 0x038c, 0x2040 },
- { 0x0900, 0x038a, 0x0025 },
- { 0x0900, 0x038e, 0x003f },
- { 0x8900, 0x039f, 0x5020 },
- { 0x8900, 0x0397, 0x4020 },
- { 0x8900, 0x0393, 0x3020 },
- { 0x8900, 0x0391, 0x2020 },
- { 0x0500, 0x0390, 0x0000 },
- { 0x0900, 0x0392, 0x0020 },
- { 0x8900, 0x0395, 0x2020 },
- { 0x0900, 0x0394, 0x0020 },
- { 0x0900, 0x0396, 0x0020 },
- { 0x8900, 0x039b, 0x3020 },
- { 0x8900, 0x0399, 0x2020 },
- { 0x0900, 0x0398, 0x0020 },
- { 0x0900, 0x039a, 0x0020 },
- { 0x8900, 0x039d, 0x2020 },
- { 0x0900, 0x039c, 0x0020 },
- { 0x0900, 0x039e, 0x0020 },
- { 0x8900, 0x03a8, 0x4020 },
- { 0x8900, 0x03a4, 0x3020 },
- { 0x8900, 0x03a1, 0x2020 },
- { 0x0900, 0x03a0, 0x0020 },
- { 0x0900, 0x03a3, 0x0020 },
- { 0x8900, 0x03a6, 0x2020 },
- { 0x0900, 0x03a5, 0x0020 },
- { 0x0900, 0x03a7, 0x0020 },
- { 0x8500, 0x03ac, 0x3fda },
- { 0x8900, 0x03aa, 0x2020 },
- { 0x0900, 0x03a9, 0x0020 },
- { 0x0900, 0x03ab, 0x0020 },
- { 0x8500, 0x03ae, 0x2fdb },
- { 0x0500, 0x03ad, 0x0fdb },
- { 0x0500, 0x03af, 0x0fdb },
- { 0x8500, 0x03f1, 0x7fb0 },
- { 0x8500, 0x03d1, 0x6fc7 },
- { 0x8500, 0x03c0, 0x5fe0 },
- { 0x8500, 0x03b8, 0x4fe0 },
- { 0x8500, 0x03b4, 0x3fe0 },
- { 0x8500, 0x03b2, 0x2fe0 },
- { 0x0500, 0x03b1, 0x0fe0 },
- { 0x0500, 0x03b3, 0x0fe0 },
- { 0x8500, 0x03b6, 0x2fe0 },
- { 0x0500, 0x03b5, 0x0fe0 },
- { 0x0500, 0x03b7, 0x0fe0 },
- { 0x8500, 0x03bc, 0x3fe0 },
- { 0x8500, 0x03ba, 0x2fe0 },
- { 0x0500, 0x03b9, 0x0fe0 },
- { 0x0500, 0x03bb, 0x0fe0 },
- { 0x8500, 0x03be, 0x2fe0 },
- { 0x0500, 0x03bd, 0x0fe0 },
- { 0x0500, 0x03bf, 0x0fe0 },
- { 0x8500, 0x03c8, 0x4fe0 },
- { 0x8500, 0x03c4, 0x3fe0 },
- { 0x8500, 0x03c2, 0x2fe1 },
- { 0x0500, 0x03c1, 0x0fe0 },
- { 0x0500, 0x03c3, 0x0fe0 },
- { 0x8500, 0x03c6, 0x2fe0 },
- { 0x0500, 0x03c5, 0x0fe0 },
- { 0x0500, 0x03c7, 0x0fe0 },
- { 0x8500, 0x03cc, 0x3fc0 },
- { 0x8500, 0x03ca, 0x2fe0 },
- { 0x0500, 0x03c9, 0x0fe0 },
- { 0x0500, 0x03cb, 0x0fe0 },
- { 0x8500, 0x03ce, 0x2fc1 },
- { 0x0500, 0x03cd, 0x0fc1 },
- { 0x0500, 0x03d0, 0x0fc2 },
- { 0x8500, 0x03e1, 0x5fff },
- { 0x8500, 0x03d9, 0x4fff },
- { 0x8500, 0x03d5, 0x3fd1 },
- { 0x8900, 0x03d3, 0x2000 },
- { 0x0900, 0x03d2, 0x0000 },
- { 0x0900, 0x03d4, 0x0000 },
- { 0x8500, 0x03d7, 0x2000 },
- { 0x0500, 0x03d6, 0x0fca },
- { 0x0900, 0x03d8, 0x0001 },
- { 0x8500, 0x03dd, 0x3fff },
- { 0x8500, 0x03db, 0x2fff },
- { 0x0900, 0x03da, 0x0001 },
- { 0x0900, 0x03dc, 0x0001 },
- { 0x8500, 0x03df, 0x2fff },
- { 0x0900, 0x03de, 0x0001 },
- { 0x0900, 0x03e0, 0x0001 },
- { 0x8500, 0x03e9, 0x4fff },
- { 0x8500, 0x03e5, 0x3fff },
- { 0x8500, 0x03e3, 0x2fff },
- { 0x0900, 0x03e2, 0x0001 },
- { 0x0900, 0x03e4, 0x0001 },
- { 0x8500, 0x03e7, 0x2fff },
- { 0x0900, 0x03e6, 0x0001 },
- { 0x0900, 0x03e8, 0x0001 },
- { 0x8500, 0x03ed, 0x3fff },
- { 0x8500, 0x03eb, 0x2fff },
- { 0x0900, 0x03ea, 0x0001 },
- { 0x0900, 0x03ec, 0x0001 },
- { 0x8500, 0x03ef, 0x2fff },
- { 0x0900, 0x03ee, 0x0001 },
- { 0x0500, 0x03f0, 0x0faa },
- { 0x8900, 0x0415, 0x6020 },
- { 0x8900, 0x0405, 0x5050 },
- { 0x8900, 0x03f9, 0x4ff9 },
- { 0x8500, 0x03f5, 0x3fa0 },
- { 0x8500, 0x03f3, 0x2000 },
- { 0x0500, 0x03f2, 0x0007 },
- { 0x0900, 0x03f4, 0x0fc4 },
- { 0x8900, 0x03f7, 0x2001 },
- { 0x1900, 0x03f6, 0x0000 },
- { 0x0500, 0x03f8, 0x0fff },
- { 0x8900, 0x0401, 0x3050 },
- { 0x8500, 0x03fb, 0x2fff },
- { 0x0900, 0x03fa, 0x0001 },
- { 0x0900, 0x0400, 0x0050 },
- { 0x8900, 0x0403, 0x2050 },
- { 0x0900, 0x0402, 0x0050 },
- { 0x0900, 0x0404, 0x0050 },
- { 0x8900, 0x040d, 0x4050 },
- { 0x8900, 0x0409, 0x3050 },
- { 0x8900, 0x0407, 0x2050 },
- { 0x0900, 0x0406, 0x0050 },
- { 0x0900, 0x0408, 0x0050 },
- { 0x8900, 0x040b, 0x2050 },
- { 0x0900, 0x040a, 0x0050 },
- { 0x0900, 0x040c, 0x0050 },
- { 0x8900, 0x0411, 0x3020 },
- { 0x8900, 0x040f, 0x2050 },
- { 0x0900, 0x040e, 0x0050 },
- { 0x0900, 0x0410, 0x0020 },
- { 0x8900, 0x0413, 0x2020 },
- { 0x0900, 0x0412, 0x0020 },
- { 0x0900, 0x0414, 0x0020 },
- { 0x8900, 0x0425, 0x5020 },
- { 0x8900, 0x041d, 0x4020 },
- { 0x8900, 0x0419, 0x3020 },
- { 0x8900, 0x0417, 0x2020 },
- { 0x0900, 0x0416, 0x0020 },
- { 0x0900, 0x0418, 0x0020 },
- { 0x8900, 0x041b, 0x2020 },
- { 0x0900, 0x041a, 0x0020 },
- { 0x0900, 0x041c, 0x0020 },
- { 0x8900, 0x0421, 0x3020 },
- { 0x8900, 0x041f, 0x2020 },
- { 0x0900, 0x041e, 0x0020 },
- { 0x0900, 0x0420, 0x0020 },
- { 0x8900, 0x0423, 0x2020 },
- { 0x0900, 0x0422, 0x0020 },
- { 0x0900, 0x0424, 0x0020 },
- { 0x8900, 0x042d, 0x4020 },
- { 0x8900, 0x0429, 0x3020 },
- { 0x8900, 0x0427, 0x2020 },
- { 0x0900, 0x0426, 0x0020 },
- { 0x0900, 0x0428, 0x0020 },
- { 0x8900, 0x042b, 0x2020 },
- { 0x0900, 0x042a, 0x0020 },
- { 0x0900, 0x042c, 0x0020 },
- { 0x8500, 0x0431, 0x3fe0 },
- { 0x8900, 0x042f, 0x2020 },
- { 0x0900, 0x042e, 0x0020 },
- { 0x0500, 0x0430, 0x0fe0 },
- { 0x8500, 0x0433, 0x2fe0 },
- { 0x0500, 0x0432, 0x0fe0 },
- { 0x0500, 0x0434, 0x0fe0 },
- { 0x8700, 0x06a4, 0xa000 },
- { 0x8500, 0x0563, 0x9fd0 },
- { 0x8900, 0x04b6, 0x8001 },
- { 0x8500, 0x0475, 0x7fff },
- { 0x8500, 0x0455, 0x6fb0 },
- { 0x8500, 0x0445, 0x5fe0 },
- { 0x8500, 0x043d, 0x4fe0 },
- { 0x8500, 0x0439, 0x3fe0 },
- { 0x8500, 0x0437, 0x2fe0 },
- { 0x0500, 0x0436, 0x0fe0 },
- { 0x0500, 0x0438, 0x0fe0 },
- { 0x8500, 0x043b, 0x2fe0 },
- { 0x0500, 0x043a, 0x0fe0 },
- { 0x0500, 0x043c, 0x0fe0 },
- { 0x8500, 0x0441, 0x3fe0 },
- { 0x8500, 0x043f, 0x2fe0 },
- { 0x0500, 0x043e, 0x0fe0 },
- { 0x0500, 0x0440, 0x0fe0 },
- { 0x8500, 0x0443, 0x2fe0 },
- { 0x0500, 0x0442, 0x0fe0 },
- { 0x0500, 0x0444, 0x0fe0 },
- { 0x8500, 0x044d, 0x4fe0 },
- { 0x8500, 0x0449, 0x3fe0 },
- { 0x8500, 0x0447, 0x2fe0 },
- { 0x0500, 0x0446, 0x0fe0 },
- { 0x0500, 0x0448, 0x0fe0 },
- { 0x8500, 0x044b, 0x2fe0 },
- { 0x0500, 0x044a, 0x0fe0 },
- { 0x0500, 0x044c, 0x0fe0 },
- { 0x8500, 0x0451, 0x3fb0 },
- { 0x8500, 0x044f, 0x2fe0 },
- { 0x0500, 0x044e, 0x0fe0 },
- { 0x0500, 0x0450, 0x0fb0 },
- { 0x8500, 0x0453, 0x2fb0 },
- { 0x0500, 0x0452, 0x0fb0 },
- { 0x0500, 0x0454, 0x0fb0 },
- { 0x8500, 0x0465, 0x5fff },
- { 0x8500, 0x045d, 0x4fb0 },
- { 0x8500, 0x0459, 0x3fb0 },
- { 0x8500, 0x0457, 0x2fb0 },
- { 0x0500, 0x0456, 0x0fb0 },
- { 0x0500, 0x0458, 0x0fb0 },
- { 0x8500, 0x045b, 0x2fb0 },
- { 0x0500, 0x045a, 0x0fb0 },
- { 0x0500, 0x045c, 0x0fb0 },
- { 0x8500, 0x0461, 0x3fff },
- { 0x8500, 0x045f, 0x2fb0 },
- { 0x0500, 0x045e, 0x0fb0 },
- { 0x0900, 0x0460, 0x0001 },
- { 0x8500, 0x0463, 0x2fff },
- { 0x0900, 0x0462, 0x0001 },
- { 0x0900, 0x0464, 0x0001 },
- { 0x8500, 0x046d, 0x4fff },
- { 0x8500, 0x0469, 0x3fff },
- { 0x8500, 0x0467, 0x2fff },
- { 0x0900, 0x0466, 0x0001 },
- { 0x0900, 0x0468, 0x0001 },
- { 0x8500, 0x046b, 0x2fff },
- { 0x0900, 0x046a, 0x0001 },
- { 0x0900, 0x046c, 0x0001 },
- { 0x8500, 0x0471, 0x3fff },
- { 0x8500, 0x046f, 0x2fff },
- { 0x0900, 0x046e, 0x0001 },
- { 0x0900, 0x0470, 0x0001 },
- { 0x8500, 0x0473, 0x2fff },
- { 0x0900, 0x0472, 0x0001 },
- { 0x0900, 0x0474, 0x0001 },
- { 0x8900, 0x0496, 0x6001 },
- { 0x8c00, 0x0485, 0x5000 },
- { 0x8500, 0x047d, 0x4fff },
- { 0x8500, 0x0479, 0x3fff },
- { 0x8500, 0x0477, 0x2fff },
- { 0x0900, 0x0476, 0x0001 },
- { 0x0900, 0x0478, 0x0001 },
- { 0x8500, 0x047b, 0x2fff },
- { 0x0900, 0x047a, 0x0001 },
- { 0x0900, 0x047c, 0x0001 },
- { 0x8500, 0x0481, 0x3fff },
- { 0x8500, 0x047f, 0x2fff },
- { 0x0900, 0x047e, 0x0001 },
- { 0x0900, 0x0480, 0x0001 },
- { 0x8c00, 0x0483, 0x2000 },
- { 0x1a00, 0x0482, 0x0000 },
- { 0x0c00, 0x0484, 0x0000 },
- { 0x8900, 0x048e, 0x4001 },
- { 0x8900, 0x048a, 0x3001 },
- { 0x8b00, 0x0488, 0x2000 },
- { 0x0c00, 0x0486, 0x0000 },
- { 0x0b00, 0x0489, 0x0000 },
- { 0x8900, 0x048c, 0x2001 },
- { 0x0500, 0x048b, 0x0fff },
- { 0x0500, 0x048d, 0x0fff },
- { 0x8900, 0x0492, 0x3001 },
- { 0x8900, 0x0490, 0x2001 },
- { 0x0500, 0x048f, 0x0fff },
- { 0x0500, 0x0491, 0x0fff },
- { 0x8900, 0x0494, 0x2001 },
- { 0x0500, 0x0493, 0x0fff },
- { 0x0500, 0x0495, 0x0fff },
- { 0x8900, 0x04a6, 0x5001 },
- { 0x8900, 0x049e, 0x4001 },
- { 0x8900, 0x049a, 0x3001 },
- { 0x8900, 0x0498, 0x2001 },
- { 0x0500, 0x0497, 0x0fff },
- { 0x0500, 0x0499, 0x0fff },
- { 0x8900, 0x049c, 0x2001 },
- { 0x0500, 0x049b, 0x0fff },
- { 0x0500, 0x049d, 0x0fff },
- { 0x8900, 0x04a2, 0x3001 },
- { 0x8900, 0x04a0, 0x2001 },
- { 0x0500, 0x049f, 0x0fff },
- { 0x0500, 0x04a1, 0x0fff },
- { 0x8900, 0x04a4, 0x2001 },
- { 0x0500, 0x04a3, 0x0fff },
- { 0x0500, 0x04a5, 0x0fff },
- { 0x8900, 0x04ae, 0x4001 },
- { 0x8900, 0x04aa, 0x3001 },
- { 0x8900, 0x04a8, 0x2001 },
- { 0x0500, 0x04a7, 0x0fff },
- { 0x0500, 0x04a9, 0x0fff },
- { 0x8900, 0x04ac, 0x2001 },
- { 0x0500, 0x04ab, 0x0fff },
- { 0x0500, 0x04ad, 0x0fff },
- { 0x8900, 0x04b2, 0x3001 },
- { 0x8900, 0x04b0, 0x2001 },
- { 0x0500, 0x04af, 0x0fff },
- { 0x0500, 0x04b1, 0x0fff },
- { 0x8900, 0x04b4, 0x2001 },
- { 0x0500, 0x04b3, 0x0fff },
- { 0x0500, 0x04b5, 0x0fff },
- { 0x8500, 0x04f9, 0x7fff },
- { 0x8500, 0x04d7, 0x6fff },
- { 0x8500, 0x04c6, 0x5fff },
- { 0x8900, 0x04be, 0x4001 },
- { 0x8900, 0x04ba, 0x3001 },
- { 0x8900, 0x04b8, 0x2001 },
- { 0x0500, 0x04b7, 0x0fff },
- { 0x0500, 0x04b9, 0x0fff },
- { 0x8900, 0x04bc, 0x2001 },
- { 0x0500, 0x04bb, 0x0fff },
- { 0x0500, 0x04bd, 0x0fff },
- { 0x8500, 0x04c2, 0x3fff },
- { 0x8900, 0x04c0, 0x2000 },
- { 0x0500, 0x04bf, 0x0fff },
- { 0x0900, 0x04c1, 0x0001 },
- { 0x8500, 0x04c4, 0x2fff },
- { 0x0900, 0x04c3, 0x0001 },
- { 0x0900, 0x04c5, 0x0001 },
- { 0x8500, 0x04ce, 0x4fff },
- { 0x8500, 0x04ca, 0x3fff },
- { 0x8500, 0x04c8, 0x2fff },
- { 0x0900, 0x04c7, 0x0001 },
- { 0x0900, 0x04c9, 0x0001 },
- { 0x8500, 0x04cc, 0x2fff },
- { 0x0900, 0x04cb, 0x0001 },
- { 0x0900, 0x04cd, 0x0001 },
- { 0x8500, 0x04d3, 0x3fff },
- { 0x8500, 0x04d1, 0x2fff },
- { 0x0900, 0x04d0, 0x0001 },
- { 0x0900, 0x04d2, 0x0001 },
- { 0x8500, 0x04d5, 0x2fff },
- { 0x0900, 0x04d4, 0x0001 },
- { 0x0900, 0x04d6, 0x0001 },
- { 0x8500, 0x04e7, 0x5fff },
- { 0x8500, 0x04df, 0x4fff },
- { 0x8500, 0x04db, 0x3fff },
- { 0x8500, 0x04d9, 0x2fff },
- { 0x0900, 0x04d8, 0x0001 },
- { 0x0900, 0x04da, 0x0001 },
- { 0x8500, 0x04dd, 0x2fff },
- { 0x0900, 0x04dc, 0x0001 },
- { 0x0900, 0x04de, 0x0001 },
- { 0x8500, 0x04e3, 0x3fff },
- { 0x8500, 0x04e1, 0x2fff },
- { 0x0900, 0x04e0, 0x0001 },
- { 0x0900, 0x04e2, 0x0001 },
- { 0x8500, 0x04e5, 0x2fff },
- { 0x0900, 0x04e4, 0x0001 },
- { 0x0900, 0x04e6, 0x0001 },
- { 0x8500, 0x04ef, 0x4fff },
- { 0x8500, 0x04eb, 0x3fff },
- { 0x8500, 0x04e9, 0x2fff },
- { 0x0900, 0x04e8, 0x0001 },
- { 0x0900, 0x04ea, 0x0001 },
- { 0x8500, 0x04ed, 0x2fff },
- { 0x0900, 0x04ec, 0x0001 },
- { 0x0900, 0x04ee, 0x0001 },
- { 0x8500, 0x04f3, 0x3fff },
- { 0x8500, 0x04f1, 0x2fff },
- { 0x0900, 0x04f0, 0x0001 },
- { 0x0900, 0x04f2, 0x0001 },
- { 0x8500, 0x04f5, 0x2fff },
- { 0x0900, 0x04f4, 0x0001 },
- { 0x0900, 0x04f8, 0x0001 },
- { 0x8900, 0x0540, 0x6030 },
- { 0x8500, 0x050f, 0x5fff },
- { 0x8500, 0x0507, 0x4fff },
- { 0x8500, 0x0503, 0x3fff },
- { 0x8500, 0x0501, 0x2fff },
- { 0x0900, 0x0500, 0x0001 },
- { 0x0900, 0x0502, 0x0001 },
- { 0x8500, 0x0505, 0x2fff },
- { 0x0900, 0x0504, 0x0001 },
- { 0x0900, 0x0506, 0x0001 },
- { 0x8500, 0x050b, 0x3fff },
- { 0x8500, 0x0509, 0x2fff },
- { 0x0900, 0x0508, 0x0001 },
- { 0x0900, 0x050a, 0x0001 },
- { 0x8500, 0x050d, 0x2fff },
- { 0x0900, 0x050c, 0x0001 },
- { 0x0900, 0x050e, 0x0001 },
- { 0x8900, 0x0538, 0x4030 },
- { 0x8900, 0x0534, 0x3030 },
- { 0x8900, 0x0532, 0x2030 },
- { 0x0900, 0x0531, 0x0030 },
- { 0x0900, 0x0533, 0x0030 },
- { 0x8900, 0x0536, 0x2030 },
- { 0x0900, 0x0535, 0x0030 },
- { 0x0900, 0x0537, 0x0030 },
- { 0x8900, 0x053c, 0x3030 },
- { 0x8900, 0x053a, 0x2030 },
- { 0x0900, 0x0539, 0x0030 },
- { 0x0900, 0x053b, 0x0030 },
- { 0x8900, 0x053e, 0x2030 },
- { 0x0900, 0x053d, 0x0030 },
- { 0x0900, 0x053f, 0x0030 },
- { 0x8900, 0x0550, 0x5030 },
- { 0x8900, 0x0548, 0x4030 },
- { 0x8900, 0x0544, 0x3030 },
- { 0x8900, 0x0542, 0x2030 },
- { 0x0900, 0x0541, 0x0030 },
- { 0x0900, 0x0543, 0x0030 },
- { 0x8900, 0x0546, 0x2030 },
- { 0x0900, 0x0545, 0x0030 },
- { 0x0900, 0x0547, 0x0030 },
- { 0x8900, 0x054c, 0x3030 },
- { 0x8900, 0x054a, 0x2030 },
- { 0x0900, 0x0549, 0x0030 },
- { 0x0900, 0x054b, 0x0030 },
- { 0x8900, 0x054e, 0x2030 },
- { 0x0900, 0x054d, 0x0030 },
- { 0x0900, 0x054f, 0x0030 },
- { 0x9500, 0x055a, 0x4000 },
- { 0x8900, 0x0554, 0x3030 },
- { 0x8900, 0x0552, 0x2030 },
- { 0x0900, 0x0551, 0x0030 },
- { 0x0900, 0x0553, 0x0030 },
- { 0x8900, 0x0556, 0x2030 },
- { 0x0900, 0x0555, 0x0030 },
- { 0x0600, 0x0559, 0x0000 },
- { 0x9500, 0x055e, 0x3000 },
- { 0x9500, 0x055c, 0x2000 },
- { 0x1500, 0x055b, 0x0000 },
- { 0x1500, 0x055d, 0x0000 },
- { 0x8500, 0x0561, 0x2fd0 },
- { 0x1500, 0x055f, 0x0000 },
- { 0x0500, 0x0562, 0x0fd0 },
- { 0x9a00, 0x060f, 0x8000 },
- { 0x8c00, 0x05ab, 0x7000 },
- { 0x8500, 0x0583, 0x6fd0 },
- { 0x8500, 0x0573, 0x5fd0 },
- { 0x8500, 0x056b, 0x4fd0 },
- { 0x8500, 0x0567, 0x3fd0 },
- { 0x8500, 0x0565, 0x2fd0 },
- { 0x0500, 0x0564, 0x0fd0 },
- { 0x0500, 0x0566, 0x0fd0 },
- { 0x8500, 0x0569, 0x2fd0 },
- { 0x0500, 0x0568, 0x0fd0 },
- { 0x0500, 0x056a, 0x0fd0 },
- { 0x8500, 0x056f, 0x3fd0 },
- { 0x8500, 0x056d, 0x2fd0 },
- { 0x0500, 0x056c, 0x0fd0 },
- { 0x0500, 0x056e, 0x0fd0 },
- { 0x8500, 0x0571, 0x2fd0 },
- { 0x0500, 0x0570, 0x0fd0 },
- { 0x0500, 0x0572, 0x0fd0 },
- { 0x8500, 0x057b, 0x4fd0 },
- { 0x8500, 0x0577, 0x3fd0 },
- { 0x8500, 0x0575, 0x2fd0 },
- { 0x0500, 0x0574, 0x0fd0 },
- { 0x0500, 0x0576, 0x0fd0 },
- { 0x8500, 0x0579, 0x2fd0 },
- { 0x0500, 0x0578, 0x0fd0 },
- { 0x0500, 0x057a, 0x0fd0 },
- { 0x8500, 0x057f, 0x3fd0 },
- { 0x8500, 0x057d, 0x2fd0 },
- { 0x0500, 0x057c, 0x0fd0 },
- { 0x0500, 0x057e, 0x0fd0 },
- { 0x8500, 0x0581, 0x2fd0 },
- { 0x0500, 0x0580, 0x0fd0 },
- { 0x0500, 0x0582, 0x0fd0 },
- { 0x8c00, 0x059a, 0x5000 },
- { 0x8c00, 0x0592, 0x4000 },
- { 0x8500, 0x0587, 0x3000 },
- { 0x8500, 0x0585, 0x2fd0 },
- { 0x0500, 0x0584, 0x0fd0 },
- { 0x0500, 0x0586, 0x0fd0 },
- { 0x9100, 0x058a, 0x2000 },
- { 0x1500, 0x0589, 0x0000 },
- { 0x0c00, 0x0591, 0x0000 },
- { 0x8c00, 0x0596, 0x3000 },
- { 0x8c00, 0x0594, 0x2000 },
- { 0x0c00, 0x0593, 0x0000 },
- { 0x0c00, 0x0595, 0x0000 },
- { 0x8c00, 0x0598, 0x2000 },
- { 0x0c00, 0x0597, 0x0000 },
- { 0x0c00, 0x0599, 0x0000 },
- { 0x8c00, 0x05a3, 0x4000 },
- { 0x8c00, 0x059e, 0x3000 },
- { 0x8c00, 0x059c, 0x2000 },
- { 0x0c00, 0x059b, 0x0000 },
- { 0x0c00, 0x059d, 0x0000 },
- { 0x8c00, 0x05a0, 0x2000 },
- { 0x0c00, 0x059f, 0x0000 },
- { 0x0c00, 0x05a1, 0x0000 },
- { 0x8c00, 0x05a7, 0x3000 },
- { 0x8c00, 0x05a5, 0x2000 },
- { 0x0c00, 0x05a4, 0x0000 },
- { 0x0c00, 0x05a6, 0x0000 },
- { 0x8c00, 0x05a9, 0x2000 },
- { 0x0c00, 0x05a8, 0x0000 },
- { 0x0c00, 0x05aa, 0x0000 },
- { 0x8700, 0x05d7, 0x6000 },
- { 0x8c00, 0x05bc, 0x5000 },
- { 0x8c00, 0x05b3, 0x4000 },
- { 0x8c00, 0x05af, 0x3000 },
- { 0x8c00, 0x05ad, 0x2000 },
- { 0x0c00, 0x05ac, 0x0000 },
- { 0x0c00, 0x05ae, 0x0000 },
- { 0x8c00, 0x05b1, 0x2000 },
- { 0x0c00, 0x05b0, 0x0000 },
- { 0x0c00, 0x05b2, 0x0000 },
- { 0x8c00, 0x05b7, 0x3000 },
- { 0x8c00, 0x05b5, 0x2000 },
- { 0x0c00, 0x05b4, 0x0000 },
- { 0x0c00, 0x05b6, 0x0000 },
- { 0x8c00, 0x05b9, 0x2000 },
- { 0x0c00, 0x05b8, 0x0000 },
- { 0x0c00, 0x05bb, 0x0000 },
- { 0x8c00, 0x05c4, 0x4000 },
- { 0x9500, 0x05c0, 0x3000 },
- { 0x9500, 0x05be, 0x2000 },
- { 0x0c00, 0x05bd, 0x0000 },
- { 0x0c00, 0x05bf, 0x0000 },
- { 0x8c00, 0x05c2, 0x2000 },
- { 0x0c00, 0x05c1, 0x0000 },
- { 0x1500, 0x05c3, 0x0000 },
- { 0x8700, 0x05d3, 0x3000 },
- { 0x8700, 0x05d1, 0x2000 },
- { 0x0700, 0x05d0, 0x0000 },
- { 0x0700, 0x05d2, 0x0000 },
- { 0x8700, 0x05d5, 0x2000 },
- { 0x0700, 0x05d4, 0x0000 },
- { 0x0700, 0x05d6, 0x0000 },
- { 0x8700, 0x05e7, 0x5000 },
- { 0x8700, 0x05df, 0x4000 },
- { 0x8700, 0x05db, 0x3000 },
- { 0x8700, 0x05d9, 0x2000 },
- { 0x0700, 0x05d8, 0x0000 },
- { 0x0700, 0x05da, 0x0000 },
- { 0x8700, 0x05dd, 0x2000 },
- { 0x0700, 0x05dc, 0x0000 },
- { 0x0700, 0x05de, 0x0000 },
- { 0x8700, 0x05e3, 0x3000 },
- { 0x8700, 0x05e1, 0x2000 },
- { 0x0700, 0x05e0, 0x0000 },
- { 0x0700, 0x05e2, 0x0000 },
- { 0x8700, 0x05e5, 0x2000 },
- { 0x0700, 0x05e4, 0x0000 },
- { 0x0700, 0x05e6, 0x0000 },
- { 0x9500, 0x05f4, 0x4000 },
- { 0x8700, 0x05f0, 0x3000 },
- { 0x8700, 0x05e9, 0x2000 },
- { 0x0700, 0x05e8, 0x0000 },
- { 0x0700, 0x05ea, 0x0000 },
- { 0x8700, 0x05f2, 0x2000 },
- { 0x0700, 0x05f1, 0x0000 },
- { 0x1500, 0x05f3, 0x0000 },
- { 0x8100, 0x0603, 0x3000 },
- { 0x8100, 0x0601, 0x2000 },
- { 0x0100, 0x0600, 0x0000 },
- { 0x0100, 0x0602, 0x0000 },
- { 0x9500, 0x060d, 0x2000 },
- { 0x1500, 0x060c, 0x0000 },
- { 0x1a00, 0x060e, 0x0000 },
- { 0x8d00, 0x0664, 0x7000 },
- { 0x8700, 0x0638, 0x6000 },
- { 0x8700, 0x0628, 0x5000 },
- { 0x9500, 0x061f, 0x4000 },
- { 0x8c00, 0x0613, 0x3000 },
- { 0x8c00, 0x0611, 0x2000 },
- { 0x0c00, 0x0610, 0x0000 },
- { 0x0c00, 0x0612, 0x0000 },
- { 0x8c00, 0x0615, 0x2000 },
- { 0x0c00, 0x0614, 0x0000 },
- { 0x1500, 0x061b, 0x0000 },
- { 0x8700, 0x0624, 0x3000 },
- { 0x8700, 0x0622, 0x2000 },
- { 0x0700, 0x0621, 0x0000 },
- { 0x0700, 0x0623, 0x0000 },
- { 0x8700, 0x0626, 0x2000 },
- { 0x0700, 0x0625, 0x0000 },
- { 0x0700, 0x0627, 0x0000 },
- { 0x8700, 0x0630, 0x4000 },
- { 0x8700, 0x062c, 0x3000 },
- { 0x8700, 0x062a, 0x2000 },
- { 0x0700, 0x0629, 0x0000 },
- { 0x0700, 0x062b, 0x0000 },
- { 0x8700, 0x062e, 0x2000 },
- { 0x0700, 0x062d, 0x0000 },
- { 0x0700, 0x062f, 0x0000 },
- { 0x8700, 0x0634, 0x3000 },
- { 0x8700, 0x0632, 0x2000 },
- { 0x0700, 0x0631, 0x0000 },
- { 0x0700, 0x0633, 0x0000 },
- { 0x8700, 0x0636, 0x2000 },
- { 0x0700, 0x0635, 0x0000 },
- { 0x0700, 0x0637, 0x0000 },
- { 0x8c00, 0x064d, 0x5000 },
- { 0x8700, 0x0645, 0x4000 },
- { 0x8700, 0x0641, 0x3000 },
- { 0x8700, 0x063a, 0x2000 },
- { 0x0700, 0x0639, 0x0000 },
- { 0x0600, 0x0640, 0x0000 },
- { 0x8700, 0x0643, 0x2000 },
- { 0x0700, 0x0642, 0x0000 },
- { 0x0700, 0x0644, 0x0000 },
- { 0x8700, 0x0649, 0x3000 },
- { 0x8700, 0x0647, 0x2000 },
- { 0x0700, 0x0646, 0x0000 },
- { 0x0700, 0x0648, 0x0000 },
- { 0x8c00, 0x064b, 0x2000 },
- { 0x0700, 0x064a, 0x0000 },
- { 0x0c00, 0x064c, 0x0000 },
- { 0x8c00, 0x0655, 0x4000 },
- { 0x8c00, 0x0651, 0x3000 },
- { 0x8c00, 0x064f, 0x2000 },
- { 0x0c00, 0x064e, 0x0000 },
- { 0x0c00, 0x0650, 0x0000 },
- { 0x8c00, 0x0653, 0x2000 },
- { 0x0c00, 0x0652, 0x0000 },
- { 0x0c00, 0x0654, 0x0000 },
- { 0x8d00, 0x0660, 0x3000 },
- { 0x8c00, 0x0657, 0x2000 },
- { 0x0c00, 0x0656, 0x0000 },
- { 0x0c00, 0x0658, 0x0000 },
- { 0x8d00, 0x0662, 0x2000 },
- { 0x0d00, 0x0661, 0x0000 },
- { 0x0d00, 0x0663, 0x0000 },
- { 0x8700, 0x0684, 0x6000 },
- { 0x8700, 0x0674, 0x5000 },
- { 0x9500, 0x066c, 0x4000 },
- { 0x8d00, 0x0668, 0x3000 },
- { 0x8d00, 0x0666, 0x2000 },
- { 0x0d00, 0x0665, 0x0000 },
- { 0x0d00, 0x0667, 0x0000 },
- { 0x9500, 0x066a, 0x2000 },
- { 0x0d00, 0x0669, 0x0000 },
- { 0x1500, 0x066b, 0x0000 },
- { 0x8c00, 0x0670, 0x3000 },
- { 0x8700, 0x066e, 0x2000 },
- { 0x1500, 0x066d, 0x0000 },
- { 0x0700, 0x066f, 0x0000 },
- { 0x8700, 0x0672, 0x2000 },
- { 0x0700, 0x0671, 0x0000 },
- { 0x0700, 0x0673, 0x0000 },
- { 0x8700, 0x067c, 0x4000 },
- { 0x8700, 0x0678, 0x3000 },
- { 0x8700, 0x0676, 0x2000 },
- { 0x0700, 0x0675, 0x0000 },
- { 0x0700, 0x0677, 0x0000 },
- { 0x8700, 0x067a, 0x2000 },
- { 0x0700, 0x0679, 0x0000 },
- { 0x0700, 0x067b, 0x0000 },
- { 0x8700, 0x0680, 0x3000 },
- { 0x8700, 0x067e, 0x2000 },
- { 0x0700, 0x067d, 0x0000 },
- { 0x0700, 0x067f, 0x0000 },
- { 0x8700, 0x0682, 0x2000 },
- { 0x0700, 0x0681, 0x0000 },
- { 0x0700, 0x0683, 0x0000 },
- { 0x8700, 0x0694, 0x5000 },
- { 0x8700, 0x068c, 0x4000 },
- { 0x8700, 0x0688, 0x3000 },
- { 0x8700, 0x0686, 0x2000 },
- { 0x0700, 0x0685, 0x0000 },
- { 0x0700, 0x0687, 0x0000 },
- { 0x8700, 0x068a, 0x2000 },
- { 0x0700, 0x0689, 0x0000 },
- { 0x0700, 0x068b, 0x0000 },
- { 0x8700, 0x0690, 0x3000 },
- { 0x8700, 0x068e, 0x2000 },
- { 0x0700, 0x068d, 0x0000 },
- { 0x0700, 0x068f, 0x0000 },
- { 0x8700, 0x0692, 0x2000 },
- { 0x0700, 0x0691, 0x0000 },
- { 0x0700, 0x0693, 0x0000 },
- { 0x8700, 0x069c, 0x4000 },
- { 0x8700, 0x0698, 0x3000 },
- { 0x8700, 0x0696, 0x2000 },
- { 0x0700, 0x0695, 0x0000 },
- { 0x0700, 0x0697, 0x0000 },
- { 0x8700, 0x069a, 0x2000 },
- { 0x0700, 0x0699, 0x0000 },
- { 0x0700, 0x069b, 0x0000 },
- { 0x8700, 0x06a0, 0x3000 },
- { 0x8700, 0x069e, 0x2000 },
- { 0x0700, 0x069d, 0x0000 },
- { 0x0700, 0x069f, 0x0000 },
- { 0x8700, 0x06a2, 0x2000 },
- { 0x0700, 0x06a1, 0x0000 },
- { 0x0700, 0x06a3, 0x0000 },
- { 0x8700, 0x0926, 0x9000 },
- { 0x8700, 0x0725, 0x8000 },
- { 0x8c00, 0x06e4, 0x7000 },
- { 0x8700, 0x06c4, 0x6000 },
- { 0x8700, 0x06b4, 0x5000 },
- { 0x8700, 0x06ac, 0x4000 },
- { 0x8700, 0x06a8, 0x3000 },
- { 0x8700, 0x06a6, 0x2000 },
- { 0x0700, 0x06a5, 0x0000 },
- { 0x0700, 0x06a7, 0x0000 },
- { 0x8700, 0x06aa, 0x2000 },
- { 0x0700, 0x06a9, 0x0000 },
- { 0x0700, 0x06ab, 0x0000 },
- { 0x8700, 0x06b0, 0x3000 },
- { 0x8700, 0x06ae, 0x2000 },
- { 0x0700, 0x06ad, 0x0000 },
- { 0x0700, 0x06af, 0x0000 },
- { 0x8700, 0x06b2, 0x2000 },
- { 0x0700, 0x06b1, 0x0000 },
- { 0x0700, 0x06b3, 0x0000 },
- { 0x8700, 0x06bc, 0x4000 },
- { 0x8700, 0x06b8, 0x3000 },
- { 0x8700, 0x06b6, 0x2000 },
- { 0x0700, 0x06b5, 0x0000 },
- { 0x0700, 0x06b7, 0x0000 },
- { 0x8700, 0x06ba, 0x2000 },
- { 0x0700, 0x06b9, 0x0000 },
- { 0x0700, 0x06bb, 0x0000 },
- { 0x8700, 0x06c0, 0x3000 },
- { 0x8700, 0x06be, 0x2000 },
- { 0x0700, 0x06bd, 0x0000 },
- { 0x0700, 0x06bf, 0x0000 },
- { 0x8700, 0x06c2, 0x2000 },
- { 0x0700, 0x06c1, 0x0000 },
- { 0x0700, 0x06c3, 0x0000 },
- { 0x9500, 0x06d4, 0x5000 },
- { 0x8700, 0x06cc, 0x4000 },
- { 0x8700, 0x06c8, 0x3000 },
- { 0x8700, 0x06c6, 0x2000 },
- { 0x0700, 0x06c5, 0x0000 },
- { 0x0700, 0x06c7, 0x0000 },
- { 0x8700, 0x06ca, 0x2000 },
- { 0x0700, 0x06c9, 0x0000 },
- { 0x0700, 0x06cb, 0x0000 },
- { 0x8700, 0x06d0, 0x3000 },
- { 0x8700, 0x06ce, 0x2000 },
- { 0x0700, 0x06cd, 0x0000 },
- { 0x0700, 0x06cf, 0x0000 },
- { 0x8700, 0x06d2, 0x2000 },
- { 0x0700, 0x06d1, 0x0000 },
- { 0x0700, 0x06d3, 0x0000 },
- { 0x8c00, 0x06dc, 0x4000 },
- { 0x8c00, 0x06d8, 0x3000 },
- { 0x8c00, 0x06d6, 0x2000 },
- { 0x0700, 0x06d5, 0x0000 },
- { 0x0c00, 0x06d7, 0x0000 },
- { 0x8c00, 0x06da, 0x2000 },
- { 0x0c00, 0x06d9, 0x0000 },
- { 0x0c00, 0x06db, 0x0000 },
- { 0x8c00, 0x06e0, 0x3000 },
- { 0x8b00, 0x06de, 0x2000 },
- { 0x0100, 0x06dd, 0x0000 },
- { 0x0c00, 0x06df, 0x0000 },
- { 0x8c00, 0x06e2, 0x2000 },
- { 0x0c00, 0x06e1, 0x0000 },
- { 0x0c00, 0x06e3, 0x0000 },
- { 0x9500, 0x0704, 0x6000 },
- { 0x8d00, 0x06f4, 0x5000 },
- { 0x8c00, 0x06ec, 0x4000 },
- { 0x8c00, 0x06e8, 0x3000 },
- { 0x8600, 0x06e6, 0x2000 },
- { 0x0600, 0x06e5, 0x0000 },
- { 0x0c00, 0x06e7, 0x0000 },
- { 0x8c00, 0x06ea, 0x2000 },
- { 0x1a00, 0x06e9, 0x0000 },
- { 0x0c00, 0x06eb, 0x0000 },
- { 0x8d00, 0x06f0, 0x3000 },
- { 0x8700, 0x06ee, 0x2000 },
- { 0x0c00, 0x06ed, 0x0000 },
- { 0x0700, 0x06ef, 0x0000 },
- { 0x8d00, 0x06f2, 0x2000 },
- { 0x0d00, 0x06f1, 0x0000 },
- { 0x0d00, 0x06f3, 0x0000 },
- { 0x8700, 0x06fc, 0x4000 },
- { 0x8d00, 0x06f8, 0x3000 },
- { 0x8d00, 0x06f6, 0x2000 },
- { 0x0d00, 0x06f5, 0x0000 },
- { 0x0d00, 0x06f7, 0x0000 },
- { 0x8700, 0x06fa, 0x2000 },
- { 0x0d00, 0x06f9, 0x0000 },
- { 0x0700, 0x06fb, 0x0000 },
- { 0x9500, 0x0700, 0x3000 },
- { 0x9a00, 0x06fe, 0x2000 },
- { 0x1a00, 0x06fd, 0x0000 },
- { 0x0700, 0x06ff, 0x0000 },
- { 0x9500, 0x0702, 0x2000 },
- { 0x1500, 0x0701, 0x0000 },
- { 0x1500, 0x0703, 0x0000 },
- { 0x8700, 0x0715, 0x5000 },
- { 0x9500, 0x070c, 0x4000 },
- { 0x9500, 0x0708, 0x3000 },
- { 0x9500, 0x0706, 0x2000 },
- { 0x1500, 0x0705, 0x0000 },
- { 0x1500, 0x0707, 0x0000 },
- { 0x9500, 0x070a, 0x2000 },
- { 0x1500, 0x0709, 0x0000 },
- { 0x1500, 0x070b, 0x0000 },
- { 0x8c00, 0x0711, 0x3000 },
- { 0x8100, 0x070f, 0x2000 },
- { 0x1500, 0x070d, 0x0000 },
- { 0x0700, 0x0710, 0x0000 },
- { 0x8700, 0x0713, 0x2000 },
- { 0x0700, 0x0712, 0x0000 },
- { 0x0700, 0x0714, 0x0000 },
- { 0x8700, 0x071d, 0x4000 },
- { 0x8700, 0x0719, 0x3000 },
- { 0x8700, 0x0717, 0x2000 },
- { 0x0700, 0x0716, 0x0000 },
- { 0x0700, 0x0718, 0x0000 },
- { 0x8700, 0x071b, 0x2000 },
- { 0x0700, 0x071a, 0x0000 },
- { 0x0700, 0x071c, 0x0000 },
- { 0x8700, 0x0721, 0x3000 },
- { 0x8700, 0x071f, 0x2000 },
- { 0x0700, 0x071e, 0x0000 },
- { 0x0700, 0x0720, 0x0000 },
- { 0x8700, 0x0723, 0x2000 },
- { 0x0700, 0x0722, 0x0000 },
- { 0x0700, 0x0724, 0x0000 },
- { 0x8700, 0x0797, 0x7000 },
- { 0x8c00, 0x0745, 0x6000 },
- { 0x8c00, 0x0735, 0x5000 },
- { 0x8700, 0x072d, 0x4000 },
- { 0x8700, 0x0729, 0x3000 },
- { 0x8700, 0x0727, 0x2000 },
- { 0x0700, 0x0726, 0x0000 },
- { 0x0700, 0x0728, 0x0000 },
- { 0x8700, 0x072b, 0x2000 },
- { 0x0700, 0x072a, 0x0000 },
- { 0x0700, 0x072c, 0x0000 },
- { 0x8c00, 0x0731, 0x3000 },
- { 0x8700, 0x072f, 0x2000 },
- { 0x0700, 0x072e, 0x0000 },
- { 0x0c00, 0x0730, 0x0000 },
- { 0x8c00, 0x0733, 0x2000 },
- { 0x0c00, 0x0732, 0x0000 },
- { 0x0c00, 0x0734, 0x0000 },
- { 0x8c00, 0x073d, 0x4000 },
- { 0x8c00, 0x0739, 0x3000 },
- { 0x8c00, 0x0737, 0x2000 },
- { 0x0c00, 0x0736, 0x0000 },
- { 0x0c00, 0x0738, 0x0000 },
- { 0x8c00, 0x073b, 0x2000 },
- { 0x0c00, 0x073a, 0x0000 },
- { 0x0c00, 0x073c, 0x0000 },
- { 0x8c00, 0x0741, 0x3000 },
- { 0x8c00, 0x073f, 0x2000 },
- { 0x0c00, 0x073e, 0x0000 },
- { 0x0c00, 0x0740, 0x0000 },
- { 0x8c00, 0x0743, 0x2000 },
- { 0x0c00, 0x0742, 0x0000 },
- { 0x0c00, 0x0744, 0x0000 },
- { 0x8700, 0x0787, 0x5000 },
- { 0x8700, 0x074f, 0x4000 },
- { 0x8c00, 0x0749, 0x3000 },
- { 0x8c00, 0x0747, 0x2000 },
- { 0x0c00, 0x0746, 0x0000 },
- { 0x0c00, 0x0748, 0x0000 },
- { 0x8700, 0x074d, 0x2000 },
- { 0x0c00, 0x074a, 0x0000 },
- { 0x0700, 0x074e, 0x0000 },
- { 0x8700, 0x0783, 0x3000 },
- { 0x8700, 0x0781, 0x2000 },
- { 0x0700, 0x0780, 0x0000 },
- { 0x0700, 0x0782, 0x0000 },
- { 0x8700, 0x0785, 0x2000 },
- { 0x0700, 0x0784, 0x0000 },
- { 0x0700, 0x0786, 0x0000 },
- { 0x8700, 0x078f, 0x4000 },
- { 0x8700, 0x078b, 0x3000 },
- { 0x8700, 0x0789, 0x2000 },
- { 0x0700, 0x0788, 0x0000 },
- { 0x0700, 0x078a, 0x0000 },
- { 0x8700, 0x078d, 0x2000 },
- { 0x0700, 0x078c, 0x0000 },
- { 0x0700, 0x078e, 0x0000 },
- { 0x8700, 0x0793, 0x3000 },
- { 0x8700, 0x0791, 0x2000 },
- { 0x0700, 0x0790, 0x0000 },
- { 0x0700, 0x0792, 0x0000 },
- { 0x8700, 0x0795, 0x2000 },
- { 0x0700, 0x0794, 0x0000 },
- { 0x0700, 0x0796, 0x0000 },
- { 0x8700, 0x0906, 0x6000 },
- { 0x8c00, 0x07a7, 0x5000 },
- { 0x8700, 0x079f, 0x4000 },
- { 0x8700, 0x079b, 0x3000 },
- { 0x8700, 0x0799, 0x2000 },
- { 0x0700, 0x0798, 0x0000 },
- { 0x0700, 0x079a, 0x0000 },
- { 0x8700, 0x079d, 0x2000 },
- { 0x0700, 0x079c, 0x0000 },
- { 0x0700, 0x079e, 0x0000 },
- { 0x8700, 0x07a3, 0x3000 },
- { 0x8700, 0x07a1, 0x2000 },
- { 0x0700, 0x07a0, 0x0000 },
- { 0x0700, 0x07a2, 0x0000 },
- { 0x8700, 0x07a5, 0x2000 },
- { 0x0700, 0x07a4, 0x0000 },
- { 0x0c00, 0x07a6, 0x0000 },
- { 0x8c00, 0x07af, 0x4000 },
- { 0x8c00, 0x07ab, 0x3000 },
- { 0x8c00, 0x07a9, 0x2000 },
- { 0x0c00, 0x07a8, 0x0000 },
- { 0x0c00, 0x07aa, 0x0000 },
- { 0x8c00, 0x07ad, 0x2000 },
- { 0x0c00, 0x07ac, 0x0000 },
- { 0x0c00, 0x07ae, 0x0000 },
- { 0x8c00, 0x0902, 0x3000 },
- { 0x8700, 0x07b1, 0x2000 },
- { 0x0c00, 0x07b0, 0x0000 },
- { 0x0c00, 0x0901, 0x0000 },
- { 0x8700, 0x0904, 0x2000 },
- { 0x0a00, 0x0903, 0x0000 },
- { 0x0700, 0x0905, 0x0000 },
- { 0x8700, 0x0916, 0x5000 },
- { 0x8700, 0x090e, 0x4000 },
- { 0x8700, 0x090a, 0x3000 },
- { 0x8700, 0x0908, 0x2000 },
- { 0x0700, 0x0907, 0x0000 },
- { 0x0700, 0x0909, 0x0000 },
- { 0x8700, 0x090c, 0x2000 },
- { 0x0700, 0x090b, 0x0000 },
- { 0x0700, 0x090d, 0x0000 },
- { 0x8700, 0x0912, 0x3000 },
- { 0x8700, 0x0910, 0x2000 },
- { 0x0700, 0x090f, 0x0000 },
- { 0x0700, 0x0911, 0x0000 },
- { 0x8700, 0x0914, 0x2000 },
- { 0x0700, 0x0913, 0x0000 },
- { 0x0700, 0x0915, 0x0000 },
- { 0x8700, 0x091e, 0x4000 },
- { 0x8700, 0x091a, 0x3000 },
- { 0x8700, 0x0918, 0x2000 },
- { 0x0700, 0x0917, 0x0000 },
- { 0x0700, 0x0919, 0x0000 },
- { 0x8700, 0x091c, 0x2000 },
- { 0x0700, 0x091b, 0x0000 },
- { 0x0700, 0x091d, 0x0000 },
- { 0x8700, 0x0922, 0x3000 },
- { 0x8700, 0x0920, 0x2000 },
- { 0x0700, 0x091f, 0x0000 },
- { 0x0700, 0x0921, 0x0000 },
- { 0x8700, 0x0924, 0x2000 },
- { 0x0700, 0x0923, 0x0000 },
- { 0x0700, 0x0925, 0x0000 },
- { 0x8c00, 0x09cd, 0x8000 },
- { 0x8d00, 0x096d, 0x7000 },
- { 0x8c00, 0x0948, 0x6000 },
- { 0x8700, 0x0936, 0x5000 },
- { 0x8700, 0x092e, 0x4000 },
- { 0x8700, 0x092a, 0x3000 },
- { 0x8700, 0x0928, 0x2000 },
- { 0x0700, 0x0927, 0x0000 },
- { 0x0700, 0x0929, 0x0000 },
- { 0x8700, 0x092c, 0x2000 },
- { 0x0700, 0x092b, 0x0000 },
- { 0x0700, 0x092d, 0x0000 },
- { 0x8700, 0x0932, 0x3000 },
- { 0x8700, 0x0930, 0x2000 },
- { 0x0700, 0x092f, 0x0000 },
- { 0x0700, 0x0931, 0x0000 },
- { 0x8700, 0x0934, 0x2000 },
- { 0x0700, 0x0933, 0x0000 },
- { 0x0700, 0x0935, 0x0000 },
- { 0x8a00, 0x0940, 0x4000 },
- { 0x8c00, 0x093c, 0x3000 },
- { 0x8700, 0x0938, 0x2000 },
- { 0x0700, 0x0937, 0x0000 },
- { 0x0700, 0x0939, 0x0000 },
- { 0x8a00, 0x093e, 0x2000 },
- { 0x0700, 0x093d, 0x0000 },
- { 0x0a00, 0x093f, 0x0000 },
- { 0x8c00, 0x0944, 0x3000 },
- { 0x8c00, 0x0942, 0x2000 },
- { 0x0c00, 0x0941, 0x0000 },
- { 0x0c00, 0x0943, 0x0000 },
- { 0x8c00, 0x0946, 0x2000 },
- { 0x0c00, 0x0945, 0x0000 },
- { 0x0c00, 0x0947, 0x0000 },
- { 0x8700, 0x095d, 0x5000 },
- { 0x8c00, 0x0952, 0x4000 },
- { 0x8a00, 0x094c, 0x3000 },
- { 0x8a00, 0x094a, 0x2000 },
- { 0x0a00, 0x0949, 0x0000 },
- { 0x0a00, 0x094b, 0x0000 },
- { 0x8700, 0x0950, 0x2000 },
- { 0x0c00, 0x094d, 0x0000 },
- { 0x0c00, 0x0951, 0x0000 },
- { 0x8700, 0x0959, 0x3000 },
- { 0x8c00, 0x0954, 0x2000 },
- { 0x0c00, 0x0953, 0x0000 },
- { 0x0700, 0x0958, 0x0000 },
- { 0x8700, 0x095b, 0x2000 },
- { 0x0700, 0x095a, 0x0000 },
- { 0x0700, 0x095c, 0x0000 },
- { 0x9500, 0x0965, 0x4000 },
- { 0x8700, 0x0961, 0x3000 },
- { 0x8700, 0x095f, 0x2000 },
- { 0x0700, 0x095e, 0x0000 },
- { 0x0700, 0x0960, 0x0000 },
- { 0x8c00, 0x0963, 0x2000 },
- { 0x0c00, 0x0962, 0x0000 },
- { 0x1500, 0x0964, 0x0000 },
- { 0x8d00, 0x0969, 0x3000 },
- { 0x8d00, 0x0967, 0x2000 },
- { 0x0d00, 0x0966, 0x0000 },
- { 0x0d00, 0x0968, 0x0000 },
- { 0x8d00, 0x096b, 0x2000 },
- { 0x0d00, 0x096a, 0x0000 },
- { 0x0d00, 0x096c, 0x0000 },
- { 0x8700, 0x09a2, 0x6000 },
- { 0x8700, 0x0990, 0x5000 },
- { 0x8700, 0x0986, 0x4000 },
- { 0x8c00, 0x0981, 0x3000 },
- { 0x8d00, 0x096f, 0x2000 },
- { 0x0d00, 0x096e, 0x0000 },
- { 0x1500, 0x0970, 0x0000 },
- { 0x8a00, 0x0983, 0x2000 },
- { 0x0a00, 0x0982, 0x0000 },
- { 0x0700, 0x0985, 0x0000 },
- { 0x8700, 0x098a, 0x3000 },
- { 0x8700, 0x0988, 0x2000 },
- { 0x0700, 0x0987, 0x0000 },
- { 0x0700, 0x0989, 0x0000 },
- { 0x8700, 0x098c, 0x2000 },
- { 0x0700, 0x098b, 0x0000 },
- { 0x0700, 0x098f, 0x0000 },
- { 0x8700, 0x099a, 0x4000 },
- { 0x8700, 0x0996, 0x3000 },
- { 0x8700, 0x0994, 0x2000 },
- { 0x0700, 0x0993, 0x0000 },
- { 0x0700, 0x0995, 0x0000 },
- { 0x8700, 0x0998, 0x2000 },
- { 0x0700, 0x0997, 0x0000 },
- { 0x0700, 0x0999, 0x0000 },
- { 0x8700, 0x099e, 0x3000 },
- { 0x8700, 0x099c, 0x2000 },
- { 0x0700, 0x099b, 0x0000 },
- { 0x0700, 0x099d, 0x0000 },
- { 0x8700, 0x09a0, 0x2000 },
- { 0x0700, 0x099f, 0x0000 },
- { 0x0700, 0x09a1, 0x0000 },
- { 0x8700, 0x09b7, 0x5000 },
- { 0x8700, 0x09ab, 0x4000 },
- { 0x8700, 0x09a6, 0x3000 },
- { 0x8700, 0x09a4, 0x2000 },
- { 0x0700, 0x09a3, 0x0000 },
- { 0x0700, 0x09a5, 0x0000 },
- { 0x8700, 0x09a8, 0x2000 },
- { 0x0700, 0x09a7, 0x0000 },
- { 0x0700, 0x09aa, 0x0000 },
- { 0x8700, 0x09af, 0x3000 },
- { 0x8700, 0x09ad, 0x2000 },
- { 0x0700, 0x09ac, 0x0000 },
- { 0x0700, 0x09ae, 0x0000 },
- { 0x8700, 0x09b2, 0x2000 },
- { 0x0700, 0x09b0, 0x0000 },
- { 0x0700, 0x09b6, 0x0000 },
- { 0x8c00, 0x09c1, 0x4000 },
- { 0x8700, 0x09bd, 0x3000 },
- { 0x8700, 0x09b9, 0x2000 },
- { 0x0700, 0x09b8, 0x0000 },
- { 0x0c00, 0x09bc, 0x0000 },
- { 0x8a00, 0x09bf, 0x2000 },
- { 0x0a00, 0x09be, 0x0000 },
- { 0x0a00, 0x09c0, 0x0000 },
- { 0x8a00, 0x09c7, 0x3000 },
- { 0x8c00, 0x09c3, 0x2000 },
- { 0x0c00, 0x09c2, 0x0000 },
- { 0x0c00, 0x09c4, 0x0000 },
- { 0x8a00, 0x09cb, 0x2000 },
- { 0x0a00, 0x09c8, 0x0000 },
- { 0x0a00, 0x09cc, 0x0000 },
- { 0x8700, 0x0a2b, 0x7000 },
- { 0x8a00, 0x0a03, 0x6000 },
- { 0x8d00, 0x09ed, 0x5000 },
- { 0x8c00, 0x09e3, 0x4000 },
- { 0x8700, 0x09df, 0x3000 },
- { 0x8700, 0x09dc, 0x2000 },
- { 0x0a00, 0x09d7, 0x0000 },
- { 0x0700, 0x09dd, 0x0000 },
- { 0x8700, 0x09e1, 0x2000 },
- { 0x0700, 0x09e0, 0x0000 },
- { 0x0c00, 0x09e2, 0x0000 },
- { 0x8d00, 0x09e9, 0x3000 },
- { 0x8d00, 0x09e7, 0x2000 },
- { 0x0d00, 0x09e6, 0x0000 },
- { 0x0d00, 0x09e8, 0x0000 },
- { 0x8d00, 0x09eb, 0x2000 },
- { 0x0d00, 0x09ea, 0x0000 },
- { 0x0d00, 0x09ec, 0x0000 },
- { 0x8f00, 0x09f5, 0x4000 },
- { 0x8700, 0x09f1, 0x3000 },
- { 0x8d00, 0x09ef, 0x2000 },
- { 0x0d00, 0x09ee, 0x0000 },
- { 0x0700, 0x09f0, 0x0000 },
- { 0x9700, 0x09f3, 0x2000 },
- { 0x1700, 0x09f2, 0x0000 },
- { 0x0f00, 0x09f4, 0x0000 },
- { 0x8f00, 0x09f9, 0x3000 },
- { 0x8f00, 0x09f7, 0x2000 },
- { 0x0f00, 0x09f6, 0x0000 },
- { 0x0f00, 0x09f8, 0x0000 },
- { 0x8c00, 0x0a01, 0x2000 },
- { 0x1a00, 0x09fa, 0x0000 },
- { 0x0c00, 0x0a02, 0x0000 },
- { 0x8700, 0x0a1a, 0x5000 },
- { 0x8700, 0x0a10, 0x4000 },
- { 0x8700, 0x0a08, 0x3000 },
- { 0x8700, 0x0a06, 0x2000 },
- { 0x0700, 0x0a05, 0x0000 },
- { 0x0700, 0x0a07, 0x0000 },
- { 0x8700, 0x0a0a, 0x2000 },
- { 0x0700, 0x0a09, 0x0000 },
- { 0x0700, 0x0a0f, 0x0000 },
- { 0x8700, 0x0a16, 0x3000 },
- { 0x8700, 0x0a14, 0x2000 },
- { 0x0700, 0x0a13, 0x0000 },
- { 0x0700, 0x0a15, 0x0000 },
- { 0x8700, 0x0a18, 0x2000 },
- { 0x0700, 0x0a17, 0x0000 },
- { 0x0700, 0x0a19, 0x0000 },
- { 0x8700, 0x0a22, 0x4000 },
- { 0x8700, 0x0a1e, 0x3000 },
- { 0x8700, 0x0a1c, 0x2000 },
- { 0x0700, 0x0a1b, 0x0000 },
- { 0x0700, 0x0a1d, 0x0000 },
- { 0x8700, 0x0a20, 0x2000 },
- { 0x0700, 0x0a1f, 0x0000 },
- { 0x0700, 0x0a21, 0x0000 },
- { 0x8700, 0x0a26, 0x3000 },
- { 0x8700, 0x0a24, 0x2000 },
- { 0x0700, 0x0a23, 0x0000 },
- { 0x0700, 0x0a25, 0x0000 },
- { 0x8700, 0x0a28, 0x2000 },
- { 0x0700, 0x0a27, 0x0000 },
- { 0x0700, 0x0a2a, 0x0000 },
- { 0x8d00, 0x0a6a, 0x6000 },
- { 0x8c00, 0x0a41, 0x5000 },
- { 0x8700, 0x0a35, 0x4000 },
- { 0x8700, 0x0a2f, 0x3000 },
- { 0x8700, 0x0a2d, 0x2000 },
- { 0x0700, 0x0a2c, 0x0000 },
- { 0x0700, 0x0a2e, 0x0000 },
- { 0x8700, 0x0a32, 0x2000 },
- { 0x0700, 0x0a30, 0x0000 },
- { 0x0700, 0x0a33, 0x0000 },
- { 0x8c00, 0x0a3c, 0x3000 },
- { 0x8700, 0x0a38, 0x2000 },
- { 0x0700, 0x0a36, 0x0000 },
- { 0x0700, 0x0a39, 0x0000 },
- { 0x8a00, 0x0a3f, 0x2000 },
- { 0x0a00, 0x0a3e, 0x0000 },
- { 0x0a00, 0x0a40, 0x0000 },
- { 0x8700, 0x0a5a, 0x4000 },
- { 0x8c00, 0x0a4b, 0x3000 },
- { 0x8c00, 0x0a47, 0x2000 },
- { 0x0c00, 0x0a42, 0x0000 },
- { 0x0c00, 0x0a48, 0x0000 },
- { 0x8c00, 0x0a4d, 0x2000 },
- { 0x0c00, 0x0a4c, 0x0000 },
- { 0x0700, 0x0a59, 0x0000 },
- { 0x8d00, 0x0a66, 0x3000 },
- { 0x8700, 0x0a5c, 0x2000 },
- { 0x0700, 0x0a5b, 0x0000 },
- { 0x0700, 0x0a5e, 0x0000 },
- { 0x8d00, 0x0a68, 0x2000 },
- { 0x0d00, 0x0a67, 0x0000 },
- { 0x0d00, 0x0a69, 0x0000 },
- { 0x8700, 0x0a87, 0x5000 },
- { 0x8700, 0x0a72, 0x4000 },
- { 0x8d00, 0x0a6e, 0x3000 },
- { 0x8d00, 0x0a6c, 0x2000 },
- { 0x0d00, 0x0a6b, 0x0000 },
- { 0x0d00, 0x0a6d, 0x0000 },
- { 0x8c00, 0x0a70, 0x2000 },
- { 0x0d00, 0x0a6f, 0x0000 },
- { 0x0c00, 0x0a71, 0x0000 },
- { 0x8c00, 0x0a82, 0x3000 },
- { 0x8700, 0x0a74, 0x2000 },
- { 0x0700, 0x0a73, 0x0000 },
- { 0x0c00, 0x0a81, 0x0000 },
- { 0x8700, 0x0a85, 0x2000 },
- { 0x0a00, 0x0a83, 0x0000 },
- { 0x0700, 0x0a86, 0x0000 },
- { 0x8700, 0x0a90, 0x4000 },
- { 0x8700, 0x0a8b, 0x3000 },
- { 0x8700, 0x0a89, 0x2000 },
- { 0x0700, 0x0a88, 0x0000 },
- { 0x0700, 0x0a8a, 0x0000 },
- { 0x8700, 0x0a8d, 0x2000 },
- { 0x0700, 0x0a8c, 0x0000 },
- { 0x0700, 0x0a8f, 0x0000 },
- { 0x8700, 0x0a95, 0x3000 },
- { 0x8700, 0x0a93, 0x2000 },
- { 0x0700, 0x0a91, 0x0000 },
- { 0x0700, 0x0a94, 0x0000 },
- { 0x8700, 0x0a97, 0x2000 },
- { 0x0700, 0x0a96, 0x0000 },
- { 0x0700, 0x0a98, 0x0000 },
- { 0x8700, 0x10ef, 0xb000 },
- { 0x8700, 0x0dc6, 0xa000 },
- { 0x8700, 0x0c31, 0x9000 },
- { 0x8700, 0x0b5f, 0x8000 },
- { 0x8a00, 0x0b03, 0x7000 },
- { 0x8a00, 0x0abe, 0x6000 },
- { 0x8700, 0x0aaa, 0x5000 },
- { 0x8700, 0x0aa1, 0x4000 },
- { 0x8700, 0x0a9d, 0x3000 },
- { 0x8700, 0x0a9b, 0x2000 },
- { 0x0700, 0x0a9a, 0x0000 },
- { 0x0700, 0x0a9c, 0x0000 },
- { 0x8700, 0x0a9f, 0x2000 },
- { 0x0700, 0x0a9e, 0x0000 },
- { 0x0700, 0x0aa0, 0x0000 },
- { 0x8700, 0x0aa5, 0x3000 },
- { 0x8700, 0x0aa3, 0x2000 },
- { 0x0700, 0x0aa2, 0x0000 },
- { 0x0700, 0x0aa4, 0x0000 },
- { 0x8700, 0x0aa7, 0x2000 },
- { 0x0700, 0x0aa6, 0x0000 },
- { 0x0700, 0x0aa8, 0x0000 },
- { 0x8700, 0x0ab3, 0x4000 },
- { 0x8700, 0x0aae, 0x3000 },
- { 0x8700, 0x0aac, 0x2000 },
- { 0x0700, 0x0aab, 0x0000 },
- { 0x0700, 0x0aad, 0x0000 },
- { 0x8700, 0x0ab0, 0x2000 },
- { 0x0700, 0x0aaf, 0x0000 },
- { 0x0700, 0x0ab2, 0x0000 },
- { 0x8700, 0x0ab8, 0x3000 },
- { 0x8700, 0x0ab6, 0x2000 },
- { 0x0700, 0x0ab5, 0x0000 },
- { 0x0700, 0x0ab7, 0x0000 },
- { 0x8c00, 0x0abc, 0x2000 },
- { 0x0700, 0x0ab9, 0x0000 },
- { 0x0700, 0x0abd, 0x0000 },
- { 0x8700, 0x0ae1, 0x5000 },
- { 0x8c00, 0x0ac7, 0x4000 },
- { 0x8c00, 0x0ac2, 0x3000 },
- { 0x8a00, 0x0ac0, 0x2000 },
- { 0x0a00, 0x0abf, 0x0000 },
- { 0x0c00, 0x0ac1, 0x0000 },
- { 0x8c00, 0x0ac4, 0x2000 },
- { 0x0c00, 0x0ac3, 0x0000 },
- { 0x0c00, 0x0ac5, 0x0000 },
- { 0x8a00, 0x0acc, 0x3000 },
- { 0x8a00, 0x0ac9, 0x2000 },
- { 0x0c00, 0x0ac8, 0x0000 },
- { 0x0a00, 0x0acb, 0x0000 },
- { 0x8700, 0x0ad0, 0x2000 },
- { 0x0c00, 0x0acd, 0x0000 },
- { 0x0700, 0x0ae0, 0x0000 },
- { 0x8d00, 0x0aeb, 0x4000 },
- { 0x8d00, 0x0ae7, 0x3000 },
- { 0x8c00, 0x0ae3, 0x2000 },
- { 0x0c00, 0x0ae2, 0x0000 },
- { 0x0d00, 0x0ae6, 0x0000 },
- { 0x8d00, 0x0ae9, 0x2000 },
- { 0x0d00, 0x0ae8, 0x0000 },
- { 0x0d00, 0x0aea, 0x0000 },
- { 0x8d00, 0x0aef, 0x3000 },
- { 0x8d00, 0x0aed, 0x2000 },
- { 0x0d00, 0x0aec, 0x0000 },
- { 0x0d00, 0x0aee, 0x0000 },
- { 0x8c00, 0x0b01, 0x2000 },
- { 0x1700, 0x0af1, 0x0000 },
- { 0x0a00, 0x0b02, 0x0000 },
- { 0x8700, 0x0b28, 0x6000 },
- { 0x8700, 0x0b18, 0x5000 },
- { 0x8700, 0x0b0c, 0x4000 },
- { 0x8700, 0x0b08, 0x3000 },
- { 0x8700, 0x0b06, 0x2000 },
- { 0x0700, 0x0b05, 0x0000 },
- { 0x0700, 0x0b07, 0x0000 },
- { 0x8700, 0x0b0a, 0x2000 },
- { 0x0700, 0x0b09, 0x0000 },
- { 0x0700, 0x0b0b, 0x0000 },
- { 0x8700, 0x0b14, 0x3000 },
- { 0x8700, 0x0b10, 0x2000 },
- { 0x0700, 0x0b0f, 0x0000 },
- { 0x0700, 0x0b13, 0x0000 },
- { 0x8700, 0x0b16, 0x2000 },
- { 0x0700, 0x0b15, 0x0000 },
- { 0x0700, 0x0b17, 0x0000 },
- { 0x8700, 0x0b20, 0x4000 },
- { 0x8700, 0x0b1c, 0x3000 },
- { 0x8700, 0x0b1a, 0x2000 },
- { 0x0700, 0x0b19, 0x0000 },
- { 0x0700, 0x0b1b, 0x0000 },
- { 0x8700, 0x0b1e, 0x2000 },
- { 0x0700, 0x0b1d, 0x0000 },
- { 0x0700, 0x0b1f, 0x0000 },
- { 0x8700, 0x0b24, 0x3000 },
- { 0x8700, 0x0b22, 0x2000 },
- { 0x0700, 0x0b21, 0x0000 },
- { 0x0700, 0x0b23, 0x0000 },
- { 0x8700, 0x0b26, 0x2000 },
- { 0x0700, 0x0b25, 0x0000 },
- { 0x0700, 0x0b27, 0x0000 },
- { 0x8700, 0x0b3d, 0x5000 },
- { 0x8700, 0x0b32, 0x4000 },
- { 0x8700, 0x0b2d, 0x3000 },
- { 0x8700, 0x0b2b, 0x2000 },
- { 0x0700, 0x0b2a, 0x0000 },
- { 0x0700, 0x0b2c, 0x0000 },
- { 0x8700, 0x0b2f, 0x2000 },
- { 0x0700, 0x0b2e, 0x0000 },
- { 0x0700, 0x0b30, 0x0000 },
- { 0x8700, 0x0b37, 0x3000 },
- { 0x8700, 0x0b35, 0x2000 },
- { 0x0700, 0x0b33, 0x0000 },
- { 0x0700, 0x0b36, 0x0000 },
- { 0x8700, 0x0b39, 0x2000 },
- { 0x0700, 0x0b38, 0x0000 },
- { 0x0c00, 0x0b3c, 0x0000 },
- { 0x8a00, 0x0b48, 0x4000 },
- { 0x8c00, 0x0b41, 0x3000 },
- { 0x8c00, 0x0b3f, 0x2000 },
- { 0x0a00, 0x0b3e, 0x0000 },
- { 0x0a00, 0x0b40, 0x0000 },
- { 0x8c00, 0x0b43, 0x2000 },
- { 0x0c00, 0x0b42, 0x0000 },
- { 0x0a00, 0x0b47, 0x0000 },
- { 0x8c00, 0x0b56, 0x3000 },
- { 0x8a00, 0x0b4c, 0x2000 },
- { 0x0a00, 0x0b4b, 0x0000 },
- { 0x0c00, 0x0b4d, 0x0000 },
- { 0x8700, 0x0b5c, 0x2000 },
- { 0x0a00, 0x0b57, 0x0000 },
- { 0x0700, 0x0b5d, 0x0000 },
- { 0x8d00, 0x0be7, 0x7000 },
- { 0x8700, 0x0b9c, 0x6000 },
- { 0x8700, 0x0b83, 0x5000 },
- { 0x8d00, 0x0b6b, 0x4000 },
- { 0x8d00, 0x0b67, 0x3000 },
- { 0x8700, 0x0b61, 0x2000 },
- { 0x0700, 0x0b60, 0x0000 },
- { 0x0d00, 0x0b66, 0x0000 },
- { 0x8d00, 0x0b69, 0x2000 },
- { 0x0d00, 0x0b68, 0x0000 },
- { 0x0d00, 0x0b6a, 0x0000 },
- { 0x8d00, 0x0b6f, 0x3000 },
- { 0x8d00, 0x0b6d, 0x2000 },
- { 0x0d00, 0x0b6c, 0x0000 },
- { 0x0d00, 0x0b6e, 0x0000 },
- { 0x8700, 0x0b71, 0x2000 },
- { 0x1a00, 0x0b70, 0x0000 },
- { 0x0c00, 0x0b82, 0x0000 },
- { 0x8700, 0x0b8f, 0x4000 },
- { 0x8700, 0x0b88, 0x3000 },
- { 0x8700, 0x0b86, 0x2000 },
- { 0x0700, 0x0b85, 0x0000 },
- { 0x0700, 0x0b87, 0x0000 },
- { 0x8700, 0x0b8a, 0x2000 },
- { 0x0700, 0x0b89, 0x0000 },
- { 0x0700, 0x0b8e, 0x0000 },
- { 0x8700, 0x0b94, 0x3000 },
- { 0x8700, 0x0b92, 0x2000 },
- { 0x0700, 0x0b90, 0x0000 },
- { 0x0700, 0x0b93, 0x0000 },
- { 0x8700, 0x0b99, 0x2000 },
- { 0x0700, 0x0b95, 0x0000 },
- { 0x0700, 0x0b9a, 0x0000 },
- { 0x8700, 0x0bb7, 0x5000 },
- { 0x8700, 0x0bae, 0x4000 },
- { 0x8700, 0x0ba4, 0x3000 },
- { 0x8700, 0x0b9f, 0x2000 },
- { 0x0700, 0x0b9e, 0x0000 },
- { 0x0700, 0x0ba3, 0x0000 },
- { 0x8700, 0x0ba9, 0x2000 },
- { 0x0700, 0x0ba8, 0x0000 },
- { 0x0700, 0x0baa, 0x0000 },
- { 0x8700, 0x0bb2, 0x3000 },
- { 0x8700, 0x0bb0, 0x2000 },
- { 0x0700, 0x0baf, 0x0000 },
- { 0x0700, 0x0bb1, 0x0000 },
- { 0x8700, 0x0bb4, 0x2000 },
- { 0x0700, 0x0bb3, 0x0000 },
- { 0x0700, 0x0bb5, 0x0000 },
- { 0x8a00, 0x0bc6, 0x4000 },
- { 0x8a00, 0x0bbf, 0x3000 },
- { 0x8700, 0x0bb9, 0x2000 },
- { 0x0700, 0x0bb8, 0x0000 },
- { 0x0a00, 0x0bbe, 0x0000 },
- { 0x8a00, 0x0bc1, 0x2000 },
- { 0x0c00, 0x0bc0, 0x0000 },
- { 0x0a00, 0x0bc2, 0x0000 },
- { 0x8a00, 0x0bcb, 0x3000 },
- { 0x8a00, 0x0bc8, 0x2000 },
- { 0x0a00, 0x0bc7, 0x0000 },
- { 0x0a00, 0x0bca, 0x0000 },
- { 0x8c00, 0x0bcd, 0x2000 },
- { 0x0a00, 0x0bcc, 0x0000 },
- { 0x0a00, 0x0bd7, 0x0000 },
- { 0x8700, 0x0c0f, 0x6000 },
- { 0x9a00, 0x0bf7, 0x5000 },
- { 0x8d00, 0x0bef, 0x4000 },
- { 0x8d00, 0x0beb, 0x3000 },
- { 0x8d00, 0x0be9, 0x2000 },
- { 0x0d00, 0x0be8, 0x0000 },
- { 0x0d00, 0x0bea, 0x0000 },
- { 0x8d00, 0x0bed, 0x2000 },
- { 0x0d00, 0x0bec, 0x0000 },
- { 0x0d00, 0x0bee, 0x0000 },
- { 0x9a00, 0x0bf3, 0x3000 },
- { 0x8f00, 0x0bf1, 0x2000 },
- { 0x0f00, 0x0bf0, 0x0000 },
- { 0x0f00, 0x0bf2, 0x0000 },
- { 0x9a00, 0x0bf5, 0x2000 },
- { 0x1a00, 0x0bf4, 0x0000 },
- { 0x1a00, 0x0bf6, 0x0000 },
- { 0x8700, 0x0c06, 0x4000 },
- { 0x8a00, 0x0c01, 0x3000 },
- { 0x9700, 0x0bf9, 0x2000 },
- { 0x1a00, 0x0bf8, 0x0000 },
- { 0x1a00, 0x0bfa, 0x0000 },
- { 0x8a00, 0x0c03, 0x2000 },
- { 0x0a00, 0x0c02, 0x0000 },
- { 0x0700, 0x0c05, 0x0000 },
- { 0x8700, 0x0c0a, 0x3000 },
- { 0x8700, 0x0c08, 0x2000 },
- { 0x0700, 0x0c07, 0x0000 },
- { 0x0700, 0x0c09, 0x0000 },
- { 0x8700, 0x0c0c, 0x2000 },
- { 0x0700, 0x0c0b, 0x0000 },
- { 0x0700, 0x0c0e, 0x0000 },
- { 0x8700, 0x0c20, 0x5000 },
- { 0x8700, 0x0c18, 0x4000 },
- { 0x8700, 0x0c14, 0x3000 },
- { 0x8700, 0x0c12, 0x2000 },
- { 0x0700, 0x0c10, 0x0000 },
- { 0x0700, 0x0c13, 0x0000 },
- { 0x8700, 0x0c16, 0x2000 },
- { 0x0700, 0x0c15, 0x0000 },
- { 0x0700, 0x0c17, 0x0000 },
- { 0x8700, 0x0c1c, 0x3000 },
- { 0x8700, 0x0c1a, 0x2000 },
- { 0x0700, 0x0c19, 0x0000 },
- { 0x0700, 0x0c1b, 0x0000 },
- { 0x8700, 0x0c1e, 0x2000 },
- { 0x0700, 0x0c1d, 0x0000 },
- { 0x0700, 0x0c1f, 0x0000 },
- { 0x8700, 0x0c28, 0x4000 },
- { 0x8700, 0x0c24, 0x3000 },
- { 0x8700, 0x0c22, 0x2000 },
- { 0x0700, 0x0c21, 0x0000 },
- { 0x0700, 0x0c23, 0x0000 },
- { 0x8700, 0x0c26, 0x2000 },
- { 0x0700, 0x0c25, 0x0000 },
- { 0x0700, 0x0c27, 0x0000 },
- { 0x8700, 0x0c2d, 0x3000 },
- { 0x8700, 0x0c2b, 0x2000 },
- { 0x0700, 0x0c2a, 0x0000 },
- { 0x0700, 0x0c2c, 0x0000 },
- { 0x8700, 0x0c2f, 0x2000 },
- { 0x0700, 0x0c2e, 0x0000 },
- { 0x0700, 0x0c30, 0x0000 },
- { 0x8700, 0x0d0e, 0x8000 },
- { 0x8700, 0x0ca1, 0x7000 },
- { 0x8d00, 0x0c6c, 0x6000 },
- { 0x8c00, 0x0c47, 0x5000 },
- { 0x8c00, 0x0c3e, 0x4000 },
- { 0x8700, 0x0c36, 0x3000 },
- { 0x8700, 0x0c33, 0x2000 },
- { 0x0700, 0x0c32, 0x0000 },
- { 0x0700, 0x0c35, 0x0000 },
- { 0x8700, 0x0c38, 0x2000 },
- { 0x0700, 0x0c37, 0x0000 },
- { 0x0700, 0x0c39, 0x0000 },
- { 0x8a00, 0x0c42, 0x3000 },
- { 0x8c00, 0x0c40, 0x2000 },
- { 0x0c00, 0x0c3f, 0x0000 },
- { 0x0a00, 0x0c41, 0x0000 },
- { 0x8a00, 0x0c44, 0x2000 },
- { 0x0a00, 0x0c43, 0x0000 },
- { 0x0c00, 0x0c46, 0x0000 },
- { 0x8700, 0x0c60, 0x4000 },
- { 0x8c00, 0x0c4c, 0x3000 },
- { 0x8c00, 0x0c4a, 0x2000 },
- { 0x0c00, 0x0c48, 0x0000 },
- { 0x0c00, 0x0c4b, 0x0000 },
- { 0x8c00, 0x0c55, 0x2000 },
- { 0x0c00, 0x0c4d, 0x0000 },
- { 0x0c00, 0x0c56, 0x0000 },
- { 0x8d00, 0x0c68, 0x3000 },
- { 0x8d00, 0x0c66, 0x2000 },
- { 0x0700, 0x0c61, 0x0000 },
- { 0x0d00, 0x0c67, 0x0000 },
- { 0x8d00, 0x0c6a, 0x2000 },
- { 0x0d00, 0x0c69, 0x0000 },
- { 0x0d00, 0x0c6b, 0x0000 },
- { 0x8700, 0x0c90, 0x5000 },
- { 0x8700, 0x0c87, 0x4000 },
- { 0x8a00, 0x0c82, 0x3000 },
- { 0x8d00, 0x0c6e, 0x2000 },
- { 0x0d00, 0x0c6d, 0x0000 },
- { 0x0d00, 0x0c6f, 0x0000 },
- { 0x8700, 0x0c85, 0x2000 },
- { 0x0a00, 0x0c83, 0x0000 },
- { 0x0700, 0x0c86, 0x0000 },
- { 0x8700, 0x0c8b, 0x3000 },
- { 0x8700, 0x0c89, 0x2000 },
- { 0x0700, 0x0c88, 0x0000 },
- { 0x0700, 0x0c8a, 0x0000 },
- { 0x8700, 0x0c8e, 0x2000 },
- { 0x0700, 0x0c8c, 0x0000 },
- { 0x0700, 0x0c8f, 0x0000 },
- { 0x8700, 0x0c99, 0x4000 },
- { 0x8700, 0x0c95, 0x3000 },
- { 0x8700, 0x0c93, 0x2000 },
- { 0x0700, 0x0c92, 0x0000 },
- { 0x0700, 0x0c94, 0x0000 },
- { 0x8700, 0x0c97, 0x2000 },
- { 0x0700, 0x0c96, 0x0000 },
- { 0x0700, 0x0c98, 0x0000 },
- { 0x8700, 0x0c9d, 0x3000 },
- { 0x8700, 0x0c9b, 0x2000 },
- { 0x0700, 0x0c9a, 0x0000 },
- { 0x0700, 0x0c9c, 0x0000 },
- { 0x8700, 0x0c9f, 0x2000 },
- { 0x0700, 0x0c9e, 0x0000 },
- { 0x0700, 0x0ca0, 0x0000 },
- { 0x8c00, 0x0cc6, 0x6000 },
- { 0x8700, 0x0cb2, 0x5000 },
- { 0x8700, 0x0caa, 0x4000 },
- { 0x8700, 0x0ca5, 0x3000 },
- { 0x8700, 0x0ca3, 0x2000 },
- { 0x0700, 0x0ca2, 0x0000 },
- { 0x0700, 0x0ca4, 0x0000 },
- { 0x8700, 0x0ca7, 0x2000 },
- { 0x0700, 0x0ca6, 0x0000 },
- { 0x0700, 0x0ca8, 0x0000 },
- { 0x8700, 0x0cae, 0x3000 },
- { 0x8700, 0x0cac, 0x2000 },
- { 0x0700, 0x0cab, 0x0000 },
- { 0x0700, 0x0cad, 0x0000 },
- { 0x8700, 0x0cb0, 0x2000 },
- { 0x0700, 0x0caf, 0x0000 },
- { 0x0700, 0x0cb1, 0x0000 },
- { 0x8700, 0x0cbd, 0x4000 },
- { 0x8700, 0x0cb7, 0x3000 },
- { 0x8700, 0x0cb5, 0x2000 },
- { 0x0700, 0x0cb3, 0x0000 },
- { 0x0700, 0x0cb6, 0x0000 },
- { 0x8700, 0x0cb9, 0x2000 },
- { 0x0700, 0x0cb8, 0x0000 },
- { 0x0c00, 0x0cbc, 0x0000 },
- { 0x8a00, 0x0cc1, 0x3000 },
- { 0x8c00, 0x0cbf, 0x2000 },
- { 0x0a00, 0x0cbe, 0x0000 },
- { 0x0a00, 0x0cc0, 0x0000 },
- { 0x8a00, 0x0cc3, 0x2000 },
- { 0x0a00, 0x0cc2, 0x0000 },
- { 0x0a00, 0x0cc4, 0x0000 },
- { 0x8d00, 0x0cea, 0x5000 },
- { 0x8a00, 0x0cd6, 0x4000 },
- { 0x8a00, 0x0ccb, 0x3000 },
- { 0x8a00, 0x0cc8, 0x2000 },
- { 0x0a00, 0x0cc7, 0x0000 },
- { 0x0a00, 0x0cca, 0x0000 },
- { 0x8c00, 0x0ccd, 0x2000 },
- { 0x0c00, 0x0ccc, 0x0000 },
- { 0x0a00, 0x0cd5, 0x0000 },
- { 0x8d00, 0x0ce6, 0x3000 },
- { 0x8700, 0x0ce0, 0x2000 },
- { 0x0700, 0x0cde, 0x0000 },
- { 0x0700, 0x0ce1, 0x0000 },
- { 0x8d00, 0x0ce8, 0x2000 },
- { 0x0d00, 0x0ce7, 0x0000 },
- { 0x0d00, 0x0ce9, 0x0000 },
- { 0x8700, 0x0d05, 0x4000 },
- { 0x8d00, 0x0cee, 0x3000 },
- { 0x8d00, 0x0cec, 0x2000 },
- { 0x0d00, 0x0ceb, 0x0000 },
- { 0x0d00, 0x0ced, 0x0000 },
- { 0x8a00, 0x0d02, 0x2000 },
- { 0x0d00, 0x0cef, 0x0000 },
- { 0x0a00, 0x0d03, 0x0000 },
- { 0x8700, 0x0d09, 0x3000 },
- { 0x8700, 0x0d07, 0x2000 },
- { 0x0700, 0x0d06, 0x0000 },
- { 0x0700, 0x0d08, 0x0000 },
- { 0x8700, 0x0d0b, 0x2000 },
- { 0x0700, 0x0d0a, 0x0000 },
- { 0x0700, 0x0d0c, 0x0000 },
- { 0x8d00, 0x0d6c, 0x7000 },
- { 0x8700, 0x0d30, 0x6000 },
- { 0x8700, 0x0d1f, 0x5000 },
- { 0x8700, 0x0d17, 0x4000 },
- { 0x8700, 0x0d13, 0x3000 },
- { 0x8700, 0x0d10, 0x2000 },
- { 0x0700, 0x0d0f, 0x0000 },
- { 0x0700, 0x0d12, 0x0000 },
- { 0x8700, 0x0d15, 0x2000 },
- { 0x0700, 0x0d14, 0x0000 },
- { 0x0700, 0x0d16, 0x0000 },
- { 0x8700, 0x0d1b, 0x3000 },
- { 0x8700, 0x0d19, 0x2000 },
- { 0x0700, 0x0d18, 0x0000 },
- { 0x0700, 0x0d1a, 0x0000 },
- { 0x8700, 0x0d1d, 0x2000 },
- { 0x0700, 0x0d1c, 0x0000 },
- { 0x0700, 0x0d1e, 0x0000 },
- { 0x8700, 0x0d27, 0x4000 },
- { 0x8700, 0x0d23, 0x3000 },
- { 0x8700, 0x0d21, 0x2000 },
- { 0x0700, 0x0d20, 0x0000 },
- { 0x0700, 0x0d22, 0x0000 },
- { 0x8700, 0x0d25, 0x2000 },
- { 0x0700, 0x0d24, 0x0000 },
- { 0x0700, 0x0d26, 0x0000 },
- { 0x8700, 0x0d2c, 0x3000 },
- { 0x8700, 0x0d2a, 0x2000 },
- { 0x0700, 0x0d28, 0x0000 },
- { 0x0700, 0x0d2b, 0x0000 },
- { 0x8700, 0x0d2e, 0x2000 },
- { 0x0700, 0x0d2d, 0x0000 },
- { 0x0700, 0x0d2f, 0x0000 },
- { 0x8a00, 0x0d46, 0x5000 },
- { 0x8700, 0x0d38, 0x4000 },
- { 0x8700, 0x0d34, 0x3000 },
- { 0x8700, 0x0d32, 0x2000 },
- { 0x0700, 0x0d31, 0x0000 },
- { 0x0700, 0x0d33, 0x0000 },
- { 0x8700, 0x0d36, 0x2000 },
- { 0x0700, 0x0d35, 0x0000 },
- { 0x0700, 0x0d37, 0x0000 },
- { 0x8a00, 0x0d40, 0x3000 },
- { 0x8a00, 0x0d3e, 0x2000 },
- { 0x0700, 0x0d39, 0x0000 },
- { 0x0a00, 0x0d3f, 0x0000 },
- { 0x8c00, 0x0d42, 0x2000 },
- { 0x0c00, 0x0d41, 0x0000 },
- { 0x0c00, 0x0d43, 0x0000 },
- { 0x8700, 0x0d60, 0x4000 },
- { 0x8a00, 0x0d4b, 0x3000 },
- { 0x8a00, 0x0d48, 0x2000 },
- { 0x0a00, 0x0d47, 0x0000 },
- { 0x0a00, 0x0d4a, 0x0000 },
- { 0x8c00, 0x0d4d, 0x2000 },
- { 0x0a00, 0x0d4c, 0x0000 },
- { 0x0a00, 0x0d57, 0x0000 },
- { 0x8d00, 0x0d68, 0x3000 },
- { 0x8d00, 0x0d66, 0x2000 },
- { 0x0700, 0x0d61, 0x0000 },
- { 0x0d00, 0x0d67, 0x0000 },
- { 0x8d00, 0x0d6a, 0x2000 },
- { 0x0d00, 0x0d69, 0x0000 },
- { 0x0d00, 0x0d6b, 0x0000 },
- { 0x8700, 0x0da2, 0x6000 },
- { 0x8700, 0x0d8f, 0x5000 },
- { 0x8700, 0x0d87, 0x4000 },
- { 0x8a00, 0x0d82, 0x3000 },
- { 0x8d00, 0x0d6e, 0x2000 },
- { 0x0d00, 0x0d6d, 0x0000 },
- { 0x0d00, 0x0d6f, 0x0000 },
- { 0x8700, 0x0d85, 0x2000 },
- { 0x0a00, 0x0d83, 0x0000 },
- { 0x0700, 0x0d86, 0x0000 },
- { 0x8700, 0x0d8b, 0x3000 },
- { 0x8700, 0x0d89, 0x2000 },
- { 0x0700, 0x0d88, 0x0000 },
- { 0x0700, 0x0d8a, 0x0000 },
- { 0x8700, 0x0d8d, 0x2000 },
- { 0x0700, 0x0d8c, 0x0000 },
- { 0x0700, 0x0d8e, 0x0000 },
- { 0x8700, 0x0d9a, 0x4000 },
- { 0x8700, 0x0d93, 0x3000 },
- { 0x8700, 0x0d91, 0x2000 },
- { 0x0700, 0x0d90, 0x0000 },
- { 0x0700, 0x0d92, 0x0000 },
- { 0x8700, 0x0d95, 0x2000 },
- { 0x0700, 0x0d94, 0x0000 },
- { 0x0700, 0x0d96, 0x0000 },
- { 0x8700, 0x0d9e, 0x3000 },
- { 0x8700, 0x0d9c, 0x2000 },
- { 0x0700, 0x0d9b, 0x0000 },
- { 0x0700, 0x0d9d, 0x0000 },
- { 0x8700, 0x0da0, 0x2000 },
- { 0x0700, 0x0d9f, 0x0000 },
- { 0x0700, 0x0da1, 0x0000 },
- { 0x8700, 0x0db3, 0x5000 },
- { 0x8700, 0x0daa, 0x4000 },
- { 0x8700, 0x0da6, 0x3000 },
- { 0x8700, 0x0da4, 0x2000 },
- { 0x0700, 0x0da3, 0x0000 },
- { 0x0700, 0x0da5, 0x0000 },
- { 0x8700, 0x0da8, 0x2000 },
- { 0x0700, 0x0da7, 0x0000 },
- { 0x0700, 0x0da9, 0x0000 },
- { 0x8700, 0x0dae, 0x3000 },
- { 0x8700, 0x0dac, 0x2000 },
- { 0x0700, 0x0dab, 0x0000 },
- { 0x0700, 0x0dad, 0x0000 },
- { 0x8700, 0x0db0, 0x2000 },
- { 0x0700, 0x0daf, 0x0000 },
- { 0x0700, 0x0db1, 0x0000 },
- { 0x8700, 0x0dbb, 0x4000 },
- { 0x8700, 0x0db7, 0x3000 },
- { 0x8700, 0x0db5, 0x2000 },
- { 0x0700, 0x0db4, 0x0000 },
- { 0x0700, 0x0db6, 0x0000 },
- { 0x8700, 0x0db9, 0x2000 },
- { 0x0700, 0x0db8, 0x0000 },
- { 0x0700, 0x0dba, 0x0000 },
- { 0x8700, 0x0dc2, 0x3000 },
- { 0x8700, 0x0dc0, 0x2000 },
- { 0x0700, 0x0dbd, 0x0000 },
- { 0x0700, 0x0dc1, 0x0000 },
- { 0x8700, 0x0dc4, 0x2000 },
- { 0x0700, 0x0dc3, 0x0000 },
- { 0x0700, 0x0dc5, 0x0000 },
- { 0x8700, 0x0f55, 0x9000 },
- { 0x8700, 0x0ea5, 0x8000 },
- { 0x8700, 0x0e2d, 0x7000 },
- { 0x8700, 0x0e0d, 0x6000 },
- { 0x8a00, 0x0ddf, 0x5000 },
- { 0x8c00, 0x0dd6, 0x4000 },
- { 0x8a00, 0x0dd1, 0x3000 },
- { 0x8a00, 0x0dcf, 0x2000 },
- { 0x0c00, 0x0dca, 0x0000 },
- { 0x0a00, 0x0dd0, 0x0000 },
- { 0x8c00, 0x0dd3, 0x2000 },
- { 0x0c00, 0x0dd2, 0x0000 },
- { 0x0c00, 0x0dd4, 0x0000 },
- { 0x8a00, 0x0ddb, 0x3000 },
- { 0x8a00, 0x0dd9, 0x2000 },
- { 0x0a00, 0x0dd8, 0x0000 },
- { 0x0a00, 0x0dda, 0x0000 },
- { 0x8a00, 0x0ddd, 0x2000 },
- { 0x0a00, 0x0ddc, 0x0000 },
- { 0x0a00, 0x0dde, 0x0000 },
- { 0x8700, 0x0e05, 0x4000 },
- { 0x8700, 0x0e01, 0x3000 },
- { 0x8a00, 0x0df3, 0x2000 },
- { 0x0a00, 0x0df2, 0x0000 },
- { 0x1500, 0x0df4, 0x0000 },
- { 0x8700, 0x0e03, 0x2000 },
- { 0x0700, 0x0e02, 0x0000 },
- { 0x0700, 0x0e04, 0x0000 },
- { 0x8700, 0x0e09, 0x3000 },
- { 0x8700, 0x0e07, 0x2000 },
- { 0x0700, 0x0e06, 0x0000 },
- { 0x0700, 0x0e08, 0x0000 },
- { 0x8700, 0x0e0b, 0x2000 },
- { 0x0700, 0x0e0a, 0x0000 },
- { 0x0700, 0x0e0c, 0x0000 },
- { 0x8700, 0x0e1d, 0x5000 },
- { 0x8700, 0x0e15, 0x4000 },
- { 0x8700, 0x0e11, 0x3000 },
- { 0x8700, 0x0e0f, 0x2000 },
- { 0x0700, 0x0e0e, 0x0000 },
- { 0x0700, 0x0e10, 0x0000 },
- { 0x8700, 0x0e13, 0x2000 },
- { 0x0700, 0x0e12, 0x0000 },
- { 0x0700, 0x0e14, 0x0000 },
- { 0x8700, 0x0e19, 0x3000 },
- { 0x8700, 0x0e17, 0x2000 },
- { 0x0700, 0x0e16, 0x0000 },
- { 0x0700, 0x0e18, 0x0000 },
- { 0x8700, 0x0e1b, 0x2000 },
- { 0x0700, 0x0e1a, 0x0000 },
- { 0x0700, 0x0e1c, 0x0000 },
- { 0x8700, 0x0e25, 0x4000 },
- { 0x8700, 0x0e21, 0x3000 },
- { 0x8700, 0x0e1f, 0x2000 },
- { 0x0700, 0x0e1e, 0x0000 },
- { 0x0700, 0x0e20, 0x0000 },
- { 0x8700, 0x0e23, 0x2000 },
- { 0x0700, 0x0e22, 0x0000 },
- { 0x0700, 0x0e24, 0x0000 },
- { 0x8700, 0x0e29, 0x3000 },
- { 0x8700, 0x0e27, 0x2000 },
- { 0x0700, 0x0e26, 0x0000 },
- { 0x0700, 0x0e28, 0x0000 },
- { 0x8700, 0x0e2b, 0x2000 },
- { 0x0700, 0x0e2a, 0x0000 },
- { 0x0700, 0x0e2c, 0x0000 },
- { 0x8d00, 0x0e51, 0x6000 },
- { 0x8700, 0x0e41, 0x5000 },
- { 0x8c00, 0x0e35, 0x4000 },
- { 0x8c00, 0x0e31, 0x3000 },
- { 0x8700, 0x0e2f, 0x2000 },
- { 0x0700, 0x0e2e, 0x0000 },
- { 0x0700, 0x0e30, 0x0000 },
- { 0x8700, 0x0e33, 0x2000 },
- { 0x0700, 0x0e32, 0x0000 },
- { 0x0c00, 0x0e34, 0x0000 },
- { 0x8c00, 0x0e39, 0x3000 },
- { 0x8c00, 0x0e37, 0x2000 },
- { 0x0c00, 0x0e36, 0x0000 },
- { 0x0c00, 0x0e38, 0x0000 },
- { 0x9700, 0x0e3f, 0x2000 },
- { 0x0c00, 0x0e3a, 0x0000 },
- { 0x0700, 0x0e40, 0x0000 },
- { 0x8c00, 0x0e49, 0x4000 },
- { 0x8700, 0x0e45, 0x3000 },
- { 0x8700, 0x0e43, 0x2000 },
- { 0x0700, 0x0e42, 0x0000 },
- { 0x0700, 0x0e44, 0x0000 },
- { 0x8c00, 0x0e47, 0x2000 },
- { 0x0600, 0x0e46, 0x0000 },
- { 0x0c00, 0x0e48, 0x0000 },
- { 0x8c00, 0x0e4d, 0x3000 },
- { 0x8c00, 0x0e4b, 0x2000 },
- { 0x0c00, 0x0e4a, 0x0000 },
- { 0x0c00, 0x0e4c, 0x0000 },
- { 0x9500, 0x0e4f, 0x2000 },
- { 0x0c00, 0x0e4e, 0x0000 },
- { 0x0d00, 0x0e50, 0x0000 },
- { 0x8700, 0x0e8a, 0x5000 },
- { 0x8d00, 0x0e59, 0x4000 },
- { 0x8d00, 0x0e55, 0x3000 },
- { 0x8d00, 0x0e53, 0x2000 },
- { 0x0d00, 0x0e52, 0x0000 },
- { 0x0d00, 0x0e54, 0x0000 },
- { 0x8d00, 0x0e57, 0x2000 },
- { 0x0d00, 0x0e56, 0x0000 },
- { 0x0d00, 0x0e58, 0x0000 },
- { 0x8700, 0x0e82, 0x3000 },
- { 0x9500, 0x0e5b, 0x2000 },
- { 0x1500, 0x0e5a, 0x0000 },
- { 0x0700, 0x0e81, 0x0000 },
- { 0x8700, 0x0e87, 0x2000 },
- { 0x0700, 0x0e84, 0x0000 },
- { 0x0700, 0x0e88, 0x0000 },
- { 0x8700, 0x0e9b, 0x4000 },
- { 0x8700, 0x0e96, 0x3000 },
- { 0x8700, 0x0e94, 0x2000 },
- { 0x0700, 0x0e8d, 0x0000 },
- { 0x0700, 0x0e95, 0x0000 },
- { 0x8700, 0x0e99, 0x2000 },
- { 0x0700, 0x0e97, 0x0000 },
- { 0x0700, 0x0e9a, 0x0000 },
- { 0x8700, 0x0e9f, 0x3000 },
- { 0x8700, 0x0e9d, 0x2000 },
- { 0x0700, 0x0e9c, 0x0000 },
- { 0x0700, 0x0e9e, 0x0000 },
- { 0x8700, 0x0ea2, 0x2000 },
- { 0x0700, 0x0ea1, 0x0000 },
- { 0x0700, 0x0ea3, 0x0000 },
- { 0x9a00, 0x0f14, 0x7000 },
- { 0x8d00, 0x0ed0, 0x6000 },
- { 0x8c00, 0x0eb9, 0x5000 },
- { 0x8c00, 0x0eb1, 0x4000 },
- { 0x8700, 0x0ead, 0x3000 },
- { 0x8700, 0x0eaa, 0x2000 },
- { 0x0700, 0x0ea7, 0x0000 },
- { 0x0700, 0x0eab, 0x0000 },
- { 0x8700, 0x0eaf, 0x2000 },
- { 0x0700, 0x0eae, 0x0000 },
- { 0x0700, 0x0eb0, 0x0000 },
- { 0x8c00, 0x0eb5, 0x3000 },
- { 0x8700, 0x0eb3, 0x2000 },
- { 0x0700, 0x0eb2, 0x0000 },
- { 0x0c00, 0x0eb4, 0x0000 },
- { 0x8c00, 0x0eb7, 0x2000 },
- { 0x0c00, 0x0eb6, 0x0000 },
- { 0x0c00, 0x0eb8, 0x0000 },
- { 0x8700, 0x0ec4, 0x4000 },
- { 0x8700, 0x0ec0, 0x3000 },
- { 0x8c00, 0x0ebc, 0x2000 },
- { 0x0c00, 0x0ebb, 0x0000 },
- { 0x0700, 0x0ebd, 0x0000 },
- { 0x8700, 0x0ec2, 0x2000 },
- { 0x0700, 0x0ec1, 0x0000 },
- { 0x0700, 0x0ec3, 0x0000 },
- { 0x8c00, 0x0eca, 0x3000 },
- { 0x8c00, 0x0ec8, 0x2000 },
- { 0x0600, 0x0ec6, 0x0000 },
- { 0x0c00, 0x0ec9, 0x0000 },
- { 0x8c00, 0x0ecc, 0x2000 },
- { 0x0c00, 0x0ecb, 0x0000 },
- { 0x0c00, 0x0ecd, 0x0000 },
- { 0x9500, 0x0f04, 0x5000 },
- { 0x8d00, 0x0ed8, 0x4000 },
- { 0x8d00, 0x0ed4, 0x3000 },
- { 0x8d00, 0x0ed2, 0x2000 },
- { 0x0d00, 0x0ed1, 0x0000 },
- { 0x0d00, 0x0ed3, 0x0000 },
- { 0x8d00, 0x0ed6, 0x2000 },
- { 0x0d00, 0x0ed5, 0x0000 },
- { 0x0d00, 0x0ed7, 0x0000 },
- { 0x8700, 0x0f00, 0x3000 },
- { 0x8700, 0x0edc, 0x2000 },
- { 0x0d00, 0x0ed9, 0x0000 },
- { 0x0700, 0x0edd, 0x0000 },
- { 0x9a00, 0x0f02, 0x2000 },
- { 0x1a00, 0x0f01, 0x0000 },
- { 0x1a00, 0x0f03, 0x0000 },
- { 0x9500, 0x0f0c, 0x4000 },
- { 0x9500, 0x0f08, 0x3000 },
- { 0x9500, 0x0f06, 0x2000 },
- { 0x1500, 0x0f05, 0x0000 },
- { 0x1500, 0x0f07, 0x0000 },
- { 0x9500, 0x0f0a, 0x2000 },
- { 0x1500, 0x0f09, 0x0000 },
- { 0x1500, 0x0f0b, 0x0000 },
- { 0x9500, 0x0f10, 0x3000 },
- { 0x9500, 0x0f0e, 0x2000 },
- { 0x1500, 0x0f0d, 0x0000 },
- { 0x1500, 0x0f0f, 0x0000 },
- { 0x9500, 0x0f12, 0x2000 },
- { 0x1500, 0x0f11, 0x0000 },
- { 0x1a00, 0x0f13, 0x0000 },
- { 0x9a00, 0x0f34, 0x6000 },
- { 0x8d00, 0x0f24, 0x5000 },
- { 0x9a00, 0x0f1c, 0x4000 },
- { 0x8c00, 0x0f18, 0x3000 },
- { 0x9a00, 0x0f16, 0x2000 },
- { 0x1a00, 0x0f15, 0x0000 },
- { 0x1a00, 0x0f17, 0x0000 },
- { 0x9a00, 0x0f1a, 0x2000 },
- { 0x0c00, 0x0f19, 0x0000 },
- { 0x1a00, 0x0f1b, 0x0000 },
- { 0x8d00, 0x0f20, 0x3000 },
- { 0x9a00, 0x0f1e, 0x2000 },
- { 0x1a00, 0x0f1d, 0x0000 },
- { 0x1a00, 0x0f1f, 0x0000 },
- { 0x8d00, 0x0f22, 0x2000 },
- { 0x0d00, 0x0f21, 0x0000 },
- { 0x0d00, 0x0f23, 0x0000 },
- { 0x8f00, 0x0f2c, 0x4000 },
- { 0x8d00, 0x0f28, 0x3000 },
- { 0x8d00, 0x0f26, 0x2000 },
- { 0x0d00, 0x0f25, 0x0000 },
- { 0x0d00, 0x0f27, 0x0000 },
- { 0x8f00, 0x0f2a, 0x2000 },
- { 0x0d00, 0x0f29, 0x0000 },
- { 0x0f00, 0x0f2b, 0x0000 },
- { 0x8f00, 0x0f30, 0x3000 },
- { 0x8f00, 0x0f2e, 0x2000 },
- { 0x0f00, 0x0f2d, 0x0000 },
- { 0x0f00, 0x0f2f, 0x0000 },
- { 0x8f00, 0x0f32, 0x2000 },
- { 0x0f00, 0x0f31, 0x0000 },
- { 0x0f00, 0x0f33, 0x0000 },
- { 0x8700, 0x0f44, 0x5000 },
- { 0x9600, 0x0f3c, 0x4000 },
- { 0x9a00, 0x0f38, 0x3000 },
- { 0x9a00, 0x0f36, 0x2000 },
- { 0x0c00, 0x0f35, 0x0000 },
- { 0x0c00, 0x0f37, 0x0000 },
- { 0x9600, 0x0f3a, 0x2000 },
- { 0x0c00, 0x0f39, 0x0000 },
- { 0x1200, 0x0f3b, 0x0000 },
- { 0x8700, 0x0f40, 0x3000 },
- { 0x8a00, 0x0f3e, 0x2000 },
- { 0x1200, 0x0f3d, 0x0000 },
- { 0x0a00, 0x0f3f, 0x0000 },
- { 0x8700, 0x0f42, 0x2000 },
- { 0x0700, 0x0f41, 0x0000 },
- { 0x0700, 0x0f43, 0x0000 },
- { 0x8700, 0x0f4d, 0x4000 },
- { 0x8700, 0x0f49, 0x3000 },
- { 0x8700, 0x0f46, 0x2000 },
- { 0x0700, 0x0f45, 0x0000 },
- { 0x0700, 0x0f47, 0x0000 },
- { 0x8700, 0x0f4b, 0x2000 },
- { 0x0700, 0x0f4a, 0x0000 },
- { 0x0700, 0x0f4c, 0x0000 },
- { 0x8700, 0x0f51, 0x3000 },
- { 0x8700, 0x0f4f, 0x2000 },
- { 0x0700, 0x0f4e, 0x0000 },
- { 0x0700, 0x0f50, 0x0000 },
- { 0x8700, 0x0f53, 0x2000 },
- { 0x0700, 0x0f52, 0x0000 },
- { 0x0700, 0x0f54, 0x0000 },
- { 0x8700, 0x1013, 0x8000 },
- { 0x8c00, 0x0fa0, 0x7000 },
- { 0x8c00, 0x0f7b, 0x6000 },
- { 0x8700, 0x0f65, 0x5000 },
- { 0x8700, 0x0f5d, 0x4000 },
- { 0x8700, 0x0f59, 0x3000 },
- { 0x8700, 0x0f57, 0x2000 },
- { 0x0700, 0x0f56, 0x0000 },
- { 0x0700, 0x0f58, 0x0000 },
- { 0x8700, 0x0f5b, 0x2000 },
- { 0x0700, 0x0f5a, 0x0000 },
- { 0x0700, 0x0f5c, 0x0000 },
- { 0x8700, 0x0f61, 0x3000 },
- { 0x8700, 0x0f5f, 0x2000 },
- { 0x0700, 0x0f5e, 0x0000 },
- { 0x0700, 0x0f60, 0x0000 },
- { 0x8700, 0x0f63, 0x2000 },
- { 0x0700, 0x0f62, 0x0000 },
- { 0x0700, 0x0f64, 0x0000 },
- { 0x8c00, 0x0f73, 0x4000 },
- { 0x8700, 0x0f69, 0x3000 },
- { 0x8700, 0x0f67, 0x2000 },
- { 0x0700, 0x0f66, 0x0000 },
- { 0x0700, 0x0f68, 0x0000 },
- { 0x8c00, 0x0f71, 0x2000 },
- { 0x0700, 0x0f6a, 0x0000 },
- { 0x0c00, 0x0f72, 0x0000 },
- { 0x8c00, 0x0f77, 0x3000 },
- { 0x8c00, 0x0f75, 0x2000 },
- { 0x0c00, 0x0f74, 0x0000 },
- { 0x0c00, 0x0f76, 0x0000 },
- { 0x8c00, 0x0f79, 0x2000 },
- { 0x0c00, 0x0f78, 0x0000 },
- { 0x0c00, 0x0f7a, 0x0000 },
- { 0x8700, 0x0f8b, 0x5000 },
- { 0x8c00, 0x0f83, 0x4000 },
- { 0x8a00, 0x0f7f, 0x3000 },
- { 0x8c00, 0x0f7d, 0x2000 },
- { 0x0c00, 0x0f7c, 0x0000 },
- { 0x0c00, 0x0f7e, 0x0000 },
- { 0x8c00, 0x0f81, 0x2000 },
- { 0x0c00, 0x0f80, 0x0000 },
- { 0x0c00, 0x0f82, 0x0000 },
- { 0x8c00, 0x0f87, 0x3000 },
- { 0x9500, 0x0f85, 0x2000 },
- { 0x0c00, 0x0f84, 0x0000 },
- { 0x0c00, 0x0f86, 0x0000 },
- { 0x8700, 0x0f89, 0x2000 },
- { 0x0700, 0x0f88, 0x0000 },
- { 0x0700, 0x0f8a, 0x0000 },
- { 0x8c00, 0x0f97, 0x4000 },
- { 0x8c00, 0x0f93, 0x3000 },
- { 0x8c00, 0x0f91, 0x2000 },
- { 0x0c00, 0x0f90, 0x0000 },
- { 0x0c00, 0x0f92, 0x0000 },
- { 0x8c00, 0x0f95, 0x2000 },
- { 0x0c00, 0x0f94, 0x0000 },
- { 0x0c00, 0x0f96, 0x0000 },
- { 0x8c00, 0x0f9c, 0x3000 },
- { 0x8c00, 0x0f9a, 0x2000 },
- { 0x0c00, 0x0f99, 0x0000 },
- { 0x0c00, 0x0f9b, 0x0000 },
- { 0x8c00, 0x0f9e, 0x2000 },
- { 0x0c00, 0x0f9d, 0x0000 },
- { 0x0c00, 0x0f9f, 0x0000 },
- { 0x9a00, 0x0fc1, 0x6000 },
- { 0x8c00, 0x0fb0, 0x5000 },
- { 0x8c00, 0x0fa8, 0x4000 },
- { 0x8c00, 0x0fa4, 0x3000 },
- { 0x8c00, 0x0fa2, 0x2000 },
- { 0x0c00, 0x0fa1, 0x0000 },
- { 0x0c00, 0x0fa3, 0x0000 },
- { 0x8c00, 0x0fa6, 0x2000 },
- { 0x0c00, 0x0fa5, 0x0000 },
- { 0x0c00, 0x0fa7, 0x0000 },
- { 0x8c00, 0x0fac, 0x3000 },
- { 0x8c00, 0x0faa, 0x2000 },
- { 0x0c00, 0x0fa9, 0x0000 },
- { 0x0c00, 0x0fab, 0x0000 },
- { 0x8c00, 0x0fae, 0x2000 },
- { 0x0c00, 0x0fad, 0x0000 },
- { 0x0c00, 0x0faf, 0x0000 },
- { 0x8c00, 0x0fb8, 0x4000 },
- { 0x8c00, 0x0fb4, 0x3000 },
- { 0x8c00, 0x0fb2, 0x2000 },
- { 0x0c00, 0x0fb1, 0x0000 },
- { 0x0c00, 0x0fb3, 0x0000 },
- { 0x8c00, 0x0fb6, 0x2000 },
- { 0x0c00, 0x0fb5, 0x0000 },
- { 0x0c00, 0x0fb7, 0x0000 },
- { 0x8c00, 0x0fbc, 0x3000 },
- { 0x8c00, 0x0fba, 0x2000 },
- { 0x0c00, 0x0fb9, 0x0000 },
- { 0x0c00, 0x0fbb, 0x0000 },
- { 0x9a00, 0x0fbf, 0x2000 },
- { 0x1a00, 0x0fbe, 0x0000 },
- { 0x1a00, 0x0fc0, 0x0000 },
- { 0x8700, 0x1003, 0x5000 },
- { 0x9a00, 0x0fc9, 0x4000 },
- { 0x9a00, 0x0fc5, 0x3000 },
- { 0x9a00, 0x0fc3, 0x2000 },
- { 0x1a00, 0x0fc2, 0x0000 },
- { 0x1a00, 0x0fc4, 0x0000 },
- { 0x9a00, 0x0fc7, 0x2000 },
- { 0x0c00, 0x0fc6, 0x0000 },
- { 0x1a00, 0x0fc8, 0x0000 },
- { 0x9a00, 0x0fcf, 0x3000 },
- { 0x9a00, 0x0fcb, 0x2000 },
- { 0x1a00, 0x0fca, 0x0000 },
- { 0x1a00, 0x0fcc, 0x0000 },
- { 0x8700, 0x1001, 0x2000 },
- { 0x0700, 0x1000, 0x0000 },
- { 0x0700, 0x1002, 0x0000 },
- { 0x8700, 0x100b, 0x4000 },
- { 0x8700, 0x1007, 0x3000 },
- { 0x8700, 0x1005, 0x2000 },
- { 0x0700, 0x1004, 0x0000 },
- { 0x0700, 0x1006, 0x0000 },
- { 0x8700, 0x1009, 0x2000 },
- { 0x0700, 0x1008, 0x0000 },
- { 0x0700, 0x100a, 0x0000 },
- { 0x8700, 0x100f, 0x3000 },
- { 0x8700, 0x100d, 0x2000 },
- { 0x0700, 0x100c, 0x0000 },
- { 0x0700, 0x100e, 0x0000 },
- { 0x8700, 0x1011, 0x2000 },
- { 0x0700, 0x1010, 0x0000 },
- { 0x0700, 0x1012, 0x0000 },
- { 0x8900, 0x10a5, 0x7000 },
- { 0x8c00, 0x1039, 0x6000 },
- { 0x8700, 0x1024, 0x5000 },
- { 0x8700, 0x101b, 0x4000 },
- { 0x8700, 0x1017, 0x3000 },
- { 0x8700, 0x1015, 0x2000 },
- { 0x0700, 0x1014, 0x0000 },
- { 0x0700, 0x1016, 0x0000 },
- { 0x8700, 0x1019, 0x2000 },
- { 0x0700, 0x1018, 0x0000 },
- { 0x0700, 0x101a, 0x0000 },
- { 0x8700, 0x101f, 0x3000 },
- { 0x8700, 0x101d, 0x2000 },
- { 0x0700, 0x101c, 0x0000 },
- { 0x0700, 0x101e, 0x0000 },
- { 0x8700, 0x1021, 0x2000 },
- { 0x0700, 0x1020, 0x0000 },
- { 0x0700, 0x1023, 0x0000 },
- { 0x8c00, 0x102e, 0x4000 },
- { 0x8700, 0x1029, 0x3000 },
- { 0x8700, 0x1026, 0x2000 },
- { 0x0700, 0x1025, 0x0000 },
- { 0x0700, 0x1027, 0x0000 },
- { 0x8a00, 0x102c, 0x2000 },
- { 0x0700, 0x102a, 0x0000 },
- { 0x0c00, 0x102d, 0x0000 },
- { 0x8c00, 0x1032, 0x3000 },
- { 0x8c00, 0x1030, 0x2000 },
- { 0x0c00, 0x102f, 0x0000 },
- { 0x0a00, 0x1031, 0x0000 },
- { 0x8c00, 0x1037, 0x2000 },
- { 0x0c00, 0x1036, 0x0000 },
- { 0x0a00, 0x1038, 0x0000 },
- { 0x9500, 0x104f, 0x5000 },
- { 0x8d00, 0x1047, 0x4000 },
- { 0x8d00, 0x1043, 0x3000 },
- { 0x8d00, 0x1041, 0x2000 },
- { 0x0d00, 0x1040, 0x0000 },
- { 0x0d00, 0x1042, 0x0000 },
- { 0x8d00, 0x1045, 0x2000 },
- { 0x0d00, 0x1044, 0x0000 },
- { 0x0d00, 0x1046, 0x0000 },
- { 0x9500, 0x104b, 0x3000 },
- { 0x8d00, 0x1049, 0x2000 },
- { 0x0d00, 0x1048, 0x0000 },
- { 0x1500, 0x104a, 0x0000 },
- { 0x9500, 0x104d, 0x2000 },
- { 0x1500, 0x104c, 0x0000 },
- { 0x1500, 0x104e, 0x0000 },
- { 0x8a00, 0x1057, 0x4000 },
- { 0x8700, 0x1053, 0x3000 },
- { 0x8700, 0x1051, 0x2000 },
- { 0x0700, 0x1050, 0x0000 },
- { 0x0700, 0x1052, 0x0000 },
- { 0x8700, 0x1055, 0x2000 },
- { 0x0700, 0x1054, 0x0000 },
- { 0x0a00, 0x1056, 0x0000 },
- { 0x8900, 0x10a1, 0x3000 },
- { 0x8c00, 0x1059, 0x2000 },
- { 0x0c00, 0x1058, 0x0000 },
- { 0x0900, 0x10a0, 0x0000 },
- { 0x8900, 0x10a3, 0x2000 },
- { 0x0900, 0x10a2, 0x0000 },
- { 0x0900, 0x10a4, 0x0000 },
- { 0x8900, 0x10c5, 0x6000 },
- { 0x8900, 0x10b5, 0x5000 },
- { 0x8900, 0x10ad, 0x4000 },
- { 0x8900, 0x10a9, 0x3000 },
- { 0x8900, 0x10a7, 0x2000 },
- { 0x0900, 0x10a6, 0x0000 },
- { 0x0900, 0x10a8, 0x0000 },
- { 0x8900, 0x10ab, 0x2000 },
- { 0x0900, 0x10aa, 0x0000 },
- { 0x0900, 0x10ac, 0x0000 },
- { 0x8900, 0x10b1, 0x3000 },
- { 0x8900, 0x10af, 0x2000 },
- { 0x0900, 0x10ae, 0x0000 },
- { 0x0900, 0x10b0, 0x0000 },
- { 0x8900, 0x10b3, 0x2000 },
- { 0x0900, 0x10b2, 0x0000 },
- { 0x0900, 0x10b4, 0x0000 },
- { 0x8900, 0x10bd, 0x4000 },
- { 0x8900, 0x10b9, 0x3000 },
- { 0x8900, 0x10b7, 0x2000 },
- { 0x0900, 0x10b6, 0x0000 },
- { 0x0900, 0x10b8, 0x0000 },
- { 0x8900, 0x10bb, 0x2000 },
- { 0x0900, 0x10ba, 0x0000 },
- { 0x0900, 0x10bc, 0x0000 },
- { 0x8900, 0x10c1, 0x3000 },
- { 0x8900, 0x10bf, 0x2000 },
- { 0x0900, 0x10be, 0x0000 },
- { 0x0900, 0x10c0, 0x0000 },
- { 0x8900, 0x10c3, 0x2000 },
- { 0x0900, 0x10c2, 0x0000 },
- { 0x0900, 0x10c4, 0x0000 },
- { 0x8700, 0x10df, 0x5000 },
- { 0x8700, 0x10d7, 0x4000 },
- { 0x8700, 0x10d3, 0x3000 },
- { 0x8700, 0x10d1, 0x2000 },
- { 0x0700, 0x10d0, 0x0000 },
- { 0x0700, 0x10d2, 0x0000 },
- { 0x8700, 0x10d5, 0x2000 },
- { 0x0700, 0x10d4, 0x0000 },
- { 0x0700, 0x10d6, 0x0000 },
- { 0x8700, 0x10db, 0x3000 },
- { 0x8700, 0x10d9, 0x2000 },
- { 0x0700, 0x10d8, 0x0000 },
- { 0x0700, 0x10da, 0x0000 },
- { 0x8700, 0x10dd, 0x2000 },
- { 0x0700, 0x10dc, 0x0000 },
- { 0x0700, 0x10de, 0x0000 },
- { 0x8700, 0x10e7, 0x4000 },
- { 0x8700, 0x10e3, 0x3000 },
- { 0x8700, 0x10e1, 0x2000 },
- { 0x0700, 0x10e0, 0x0000 },
- { 0x0700, 0x10e2, 0x0000 },
- { 0x8700, 0x10e5, 0x2000 },
- { 0x0700, 0x10e4, 0x0000 },
- { 0x0700, 0x10e6, 0x0000 },
- { 0x8700, 0x10eb, 0x3000 },
- { 0x8700, 0x10e9, 0x2000 },
- { 0x0700, 0x10e8, 0x0000 },
- { 0x0700, 0x10ea, 0x0000 },
- { 0x8700, 0x10ed, 0x2000 },
- { 0x0700, 0x10ec, 0x0000 },
- { 0x0700, 0x10ee, 0x0000 },
- { 0x8700, 0x1322, 0xa000 },
- { 0x8700, 0x1205, 0x9000 },
- { 0x8700, 0x117a, 0x8000 },
- { 0x8700, 0x1135, 0x7000 },
- { 0x8700, 0x1115, 0x6000 },
- { 0x8700, 0x1105, 0x5000 },
- { 0x8700, 0x10f7, 0x4000 },
- { 0x8700, 0x10f3, 0x3000 },
- { 0x8700, 0x10f1, 0x2000 },
- { 0x0700, 0x10f0, 0x0000 },
- { 0x0700, 0x10f2, 0x0000 },
- { 0x8700, 0x10f5, 0x2000 },
- { 0x0700, 0x10f4, 0x0000 },
- { 0x0700, 0x10f6, 0x0000 },
- { 0x8700, 0x1101, 0x3000 },
- { 0x9500, 0x10fb, 0x2000 },
- { 0x0700, 0x10f8, 0x0000 },
- { 0x0700, 0x1100, 0x0000 },
- { 0x8700, 0x1103, 0x2000 },
- { 0x0700, 0x1102, 0x0000 },
- { 0x0700, 0x1104, 0x0000 },
- { 0x8700, 0x110d, 0x4000 },
- { 0x8700, 0x1109, 0x3000 },
- { 0x8700, 0x1107, 0x2000 },
- { 0x0700, 0x1106, 0x0000 },
- { 0x0700, 0x1108, 0x0000 },
- { 0x8700, 0x110b, 0x2000 },
- { 0x0700, 0x110a, 0x0000 },
- { 0x0700, 0x110c, 0x0000 },
- { 0x8700, 0x1111, 0x3000 },
- { 0x8700, 0x110f, 0x2000 },
- { 0x0700, 0x110e, 0x0000 },
- { 0x0700, 0x1110, 0x0000 },
- { 0x8700, 0x1113, 0x2000 },
- { 0x0700, 0x1112, 0x0000 },
- { 0x0700, 0x1114, 0x0000 },
- { 0x8700, 0x1125, 0x5000 },
- { 0x8700, 0x111d, 0x4000 },
- { 0x8700, 0x1119, 0x3000 },
- { 0x8700, 0x1117, 0x2000 },
- { 0x0700, 0x1116, 0x0000 },
- { 0x0700, 0x1118, 0x0000 },
- { 0x8700, 0x111b, 0x2000 },
- { 0x0700, 0x111a, 0x0000 },
- { 0x0700, 0x111c, 0x0000 },
- { 0x8700, 0x1121, 0x3000 },
- { 0x8700, 0x111f, 0x2000 },
- { 0x0700, 0x111e, 0x0000 },
- { 0x0700, 0x1120, 0x0000 },
- { 0x8700, 0x1123, 0x2000 },
- { 0x0700, 0x1122, 0x0000 },
- { 0x0700, 0x1124, 0x0000 },
- { 0x8700, 0x112d, 0x4000 },
- { 0x8700, 0x1129, 0x3000 },
- { 0x8700, 0x1127, 0x2000 },
- { 0x0700, 0x1126, 0x0000 },
- { 0x0700, 0x1128, 0x0000 },
- { 0x8700, 0x112b, 0x2000 },
- { 0x0700, 0x112a, 0x0000 },
- { 0x0700, 0x112c, 0x0000 },
- { 0x8700, 0x1131, 0x3000 },
- { 0x8700, 0x112f, 0x2000 },
- { 0x0700, 0x112e, 0x0000 },
- { 0x0700, 0x1130, 0x0000 },
- { 0x8700, 0x1133, 0x2000 },
- { 0x0700, 0x1132, 0x0000 },
- { 0x0700, 0x1134, 0x0000 },
- { 0x8700, 0x1155, 0x6000 },
- { 0x8700, 0x1145, 0x5000 },
- { 0x8700, 0x113d, 0x4000 },
- { 0x8700, 0x1139, 0x3000 },
- { 0x8700, 0x1137, 0x2000 },
- { 0x0700, 0x1136, 0x0000 },
- { 0x0700, 0x1138, 0x0000 },
- { 0x8700, 0x113b, 0x2000 },
- { 0x0700, 0x113a, 0x0000 },
- { 0x0700, 0x113c, 0x0000 },
- { 0x8700, 0x1141, 0x3000 },
- { 0x8700, 0x113f, 0x2000 },
- { 0x0700, 0x113e, 0x0000 },
- { 0x0700, 0x1140, 0x0000 },
- { 0x8700, 0x1143, 0x2000 },
- { 0x0700, 0x1142, 0x0000 },
- { 0x0700, 0x1144, 0x0000 },
- { 0x8700, 0x114d, 0x4000 },
- { 0x8700, 0x1149, 0x3000 },
- { 0x8700, 0x1147, 0x2000 },
- { 0x0700, 0x1146, 0x0000 },
- { 0x0700, 0x1148, 0x0000 },
- { 0x8700, 0x114b, 0x2000 },
- { 0x0700, 0x114a, 0x0000 },
- { 0x0700, 0x114c, 0x0000 },
- { 0x8700, 0x1151, 0x3000 },
- { 0x8700, 0x114f, 0x2000 },
- { 0x0700, 0x114e, 0x0000 },
- { 0x0700, 0x1150, 0x0000 },
- { 0x8700, 0x1153, 0x2000 },
- { 0x0700, 0x1152, 0x0000 },
- { 0x0700, 0x1154, 0x0000 },
- { 0x8700, 0x116a, 0x5000 },
- { 0x8700, 0x1162, 0x4000 },
- { 0x8700, 0x1159, 0x3000 },
- { 0x8700, 0x1157, 0x2000 },
- { 0x0700, 0x1156, 0x0000 },
- { 0x0700, 0x1158, 0x0000 },
- { 0x8700, 0x1160, 0x2000 },
- { 0x0700, 0x115f, 0x0000 },
- { 0x0700, 0x1161, 0x0000 },
- { 0x8700, 0x1166, 0x3000 },
- { 0x8700, 0x1164, 0x2000 },
- { 0x0700, 0x1163, 0x0000 },
- { 0x0700, 0x1165, 0x0000 },
- { 0x8700, 0x1168, 0x2000 },
- { 0x0700, 0x1167, 0x0000 },
- { 0x0700, 0x1169, 0x0000 },
- { 0x8700, 0x1172, 0x4000 },
- { 0x8700, 0x116e, 0x3000 },
- { 0x8700, 0x116c, 0x2000 },
- { 0x0700, 0x116b, 0x0000 },
- { 0x0700, 0x116d, 0x0000 },
- { 0x8700, 0x1170, 0x2000 },
- { 0x0700, 0x116f, 0x0000 },
- { 0x0700, 0x1171, 0x0000 },
- { 0x8700, 0x1176, 0x3000 },
- { 0x8700, 0x1174, 0x2000 },
- { 0x0700, 0x1173, 0x0000 },
- { 0x0700, 0x1175, 0x0000 },
- { 0x8700, 0x1178, 0x2000 },
- { 0x0700, 0x1177, 0x0000 },
- { 0x0700, 0x1179, 0x0000 },
- { 0x8700, 0x11bf, 0x7000 },
- { 0x8700, 0x119a, 0x6000 },
- { 0x8700, 0x118a, 0x5000 },
- { 0x8700, 0x1182, 0x4000 },
- { 0x8700, 0x117e, 0x3000 },
- { 0x8700, 0x117c, 0x2000 },
- { 0x0700, 0x117b, 0x0000 },
- { 0x0700, 0x117d, 0x0000 },
- { 0x8700, 0x1180, 0x2000 },
- { 0x0700, 0x117f, 0x0000 },
- { 0x0700, 0x1181, 0x0000 },
- { 0x8700, 0x1186, 0x3000 },
- { 0x8700, 0x1184, 0x2000 },
- { 0x0700, 0x1183, 0x0000 },
- { 0x0700, 0x1185, 0x0000 },
- { 0x8700, 0x1188, 0x2000 },
- { 0x0700, 0x1187, 0x0000 },
- { 0x0700, 0x1189, 0x0000 },
- { 0x8700, 0x1192, 0x4000 },
- { 0x8700, 0x118e, 0x3000 },
- { 0x8700, 0x118c, 0x2000 },
- { 0x0700, 0x118b, 0x0000 },
- { 0x0700, 0x118d, 0x0000 },
- { 0x8700, 0x1190, 0x2000 },
- { 0x0700, 0x118f, 0x0000 },
- { 0x0700, 0x1191, 0x0000 },
- { 0x8700, 0x1196, 0x3000 },
- { 0x8700, 0x1194, 0x2000 },
- { 0x0700, 0x1193, 0x0000 },
- { 0x0700, 0x1195, 0x0000 },
- { 0x8700, 0x1198, 0x2000 },
- { 0x0700, 0x1197, 0x0000 },
- { 0x0700, 0x1199, 0x0000 },
- { 0x8700, 0x11af, 0x5000 },
- { 0x8700, 0x11a2, 0x4000 },
- { 0x8700, 0x119e, 0x3000 },
- { 0x8700, 0x119c, 0x2000 },
- { 0x0700, 0x119b, 0x0000 },
- { 0x0700, 0x119d, 0x0000 },
- { 0x8700, 0x11a0, 0x2000 },
- { 0x0700, 0x119f, 0x0000 },
- { 0x0700, 0x11a1, 0x0000 },
- { 0x8700, 0x11ab, 0x3000 },
- { 0x8700, 0x11a9, 0x2000 },
- { 0x0700, 0x11a8, 0x0000 },
- { 0x0700, 0x11aa, 0x0000 },
- { 0x8700, 0x11ad, 0x2000 },
- { 0x0700, 0x11ac, 0x0000 },
- { 0x0700, 0x11ae, 0x0000 },
- { 0x8700, 0x11b7, 0x4000 },
- { 0x8700, 0x11b3, 0x3000 },
- { 0x8700, 0x11b1, 0x2000 },
- { 0x0700, 0x11b0, 0x0000 },
- { 0x0700, 0x11b2, 0x0000 },
- { 0x8700, 0x11b5, 0x2000 },
- { 0x0700, 0x11b4, 0x0000 },
- { 0x0700, 0x11b6, 0x0000 },
- { 0x8700, 0x11bb, 0x3000 },
- { 0x8700, 0x11b9, 0x2000 },
- { 0x0700, 0x11b8, 0x0000 },
- { 0x0700, 0x11ba, 0x0000 },
- { 0x8700, 0x11bd, 0x2000 },
- { 0x0700, 0x11bc, 0x0000 },
- { 0x0700, 0x11be, 0x0000 },
- { 0x8700, 0x11df, 0x6000 },
- { 0x8700, 0x11cf, 0x5000 },
- { 0x8700, 0x11c7, 0x4000 },
- { 0x8700, 0x11c3, 0x3000 },
- { 0x8700, 0x11c1, 0x2000 },
- { 0x0700, 0x11c0, 0x0000 },
- { 0x0700, 0x11c2, 0x0000 },
- { 0x8700, 0x11c5, 0x2000 },
- { 0x0700, 0x11c4, 0x0000 },
- { 0x0700, 0x11c6, 0x0000 },
- { 0x8700, 0x11cb, 0x3000 },
- { 0x8700, 0x11c9, 0x2000 },
- { 0x0700, 0x11c8, 0x0000 },
- { 0x0700, 0x11ca, 0x0000 },
- { 0x8700, 0x11cd, 0x2000 },
- { 0x0700, 0x11cc, 0x0000 },
- { 0x0700, 0x11ce, 0x0000 },
- { 0x8700, 0x11d7, 0x4000 },
- { 0x8700, 0x11d3, 0x3000 },
- { 0x8700, 0x11d1, 0x2000 },
- { 0x0700, 0x11d0, 0x0000 },
- { 0x0700, 0x11d2, 0x0000 },
- { 0x8700, 0x11d5, 0x2000 },
- { 0x0700, 0x11d4, 0x0000 },
- { 0x0700, 0x11d6, 0x0000 },
- { 0x8700, 0x11db, 0x3000 },
- { 0x8700, 0x11d9, 0x2000 },
- { 0x0700, 0x11d8, 0x0000 },
- { 0x0700, 0x11da, 0x0000 },
- { 0x8700, 0x11dd, 0x2000 },
- { 0x0700, 0x11dc, 0x0000 },
- { 0x0700, 0x11de, 0x0000 },
- { 0x8700, 0x11ef, 0x5000 },
- { 0x8700, 0x11e7, 0x4000 },
- { 0x8700, 0x11e3, 0x3000 },
- { 0x8700, 0x11e1, 0x2000 },
- { 0x0700, 0x11e0, 0x0000 },
- { 0x0700, 0x11e2, 0x0000 },
- { 0x8700, 0x11e5, 0x2000 },
- { 0x0700, 0x11e4, 0x0000 },
- { 0x0700, 0x11e6, 0x0000 },
- { 0x8700, 0x11eb, 0x3000 },
- { 0x8700, 0x11e9, 0x2000 },
- { 0x0700, 0x11e8, 0x0000 },
- { 0x0700, 0x11ea, 0x0000 },
- { 0x8700, 0x11ed, 0x2000 },
- { 0x0700, 0x11ec, 0x0000 },
- { 0x0700, 0x11ee, 0x0000 },
- { 0x8700, 0x11f7, 0x4000 },
- { 0x8700, 0x11f3, 0x3000 },
- { 0x8700, 0x11f1, 0x2000 },
- { 0x0700, 0x11f0, 0x0000 },
- { 0x0700, 0x11f2, 0x0000 },
- { 0x8700, 0x11f5, 0x2000 },
- { 0x0700, 0x11f4, 0x0000 },
- { 0x0700, 0x11f6, 0x0000 },
- { 0x8700, 0x1201, 0x3000 },
- { 0x8700, 0x11f9, 0x2000 },
- { 0x0700, 0x11f8, 0x0000 },
- { 0x0700, 0x1200, 0x0000 },
- { 0x8700, 0x1203, 0x2000 },
- { 0x0700, 0x1202, 0x0000 },
- { 0x0700, 0x1204, 0x0000 },
- { 0x8700, 0x1292, 0x8000 },
- { 0x8700, 0x1246, 0x7000 },
- { 0x8700, 0x1226, 0x6000 },
- { 0x8700, 0x1216, 0x5000 },
- { 0x8700, 0x120e, 0x4000 },
- { 0x8700, 0x120a, 0x3000 },
- { 0x8700, 0x1208, 0x2000 },
- { 0x0700, 0x1206, 0x0000 },
- { 0x0700, 0x1209, 0x0000 },
- { 0x8700, 0x120c, 0x2000 },
- { 0x0700, 0x120b, 0x0000 },
- { 0x0700, 0x120d, 0x0000 },
- { 0x8700, 0x1212, 0x3000 },
- { 0x8700, 0x1210, 0x2000 },
- { 0x0700, 0x120f, 0x0000 },
- { 0x0700, 0x1211, 0x0000 },
- { 0x8700, 0x1214, 0x2000 },
- { 0x0700, 0x1213, 0x0000 },
- { 0x0700, 0x1215, 0x0000 },
- { 0x8700, 0x121e, 0x4000 },
- { 0x8700, 0x121a, 0x3000 },
- { 0x8700, 0x1218, 0x2000 },
- { 0x0700, 0x1217, 0x0000 },
- { 0x0700, 0x1219, 0x0000 },
- { 0x8700, 0x121c, 0x2000 },
- { 0x0700, 0x121b, 0x0000 },
- { 0x0700, 0x121d, 0x0000 },
- { 0x8700, 0x1222, 0x3000 },
- { 0x8700, 0x1220, 0x2000 },
- { 0x0700, 0x121f, 0x0000 },
- { 0x0700, 0x1221, 0x0000 },
- { 0x8700, 0x1224, 0x2000 },
- { 0x0700, 0x1223, 0x0000 },
- { 0x0700, 0x1225, 0x0000 },
- { 0x8700, 0x1236, 0x5000 },
- { 0x8700, 0x122e, 0x4000 },
- { 0x8700, 0x122a, 0x3000 },
- { 0x8700, 0x1228, 0x2000 },
- { 0x0700, 0x1227, 0x0000 },
- { 0x0700, 0x1229, 0x0000 },
- { 0x8700, 0x122c, 0x2000 },
- { 0x0700, 0x122b, 0x0000 },
- { 0x0700, 0x122d, 0x0000 },
- { 0x8700, 0x1232, 0x3000 },
- { 0x8700, 0x1230, 0x2000 },
- { 0x0700, 0x122f, 0x0000 },
- { 0x0700, 0x1231, 0x0000 },
- { 0x8700, 0x1234, 0x2000 },
- { 0x0700, 0x1233, 0x0000 },
- { 0x0700, 0x1235, 0x0000 },
- { 0x8700, 0x123e, 0x4000 },
- { 0x8700, 0x123a, 0x3000 },
- { 0x8700, 0x1238, 0x2000 },
- { 0x0700, 0x1237, 0x0000 },
- { 0x0700, 0x1239, 0x0000 },
- { 0x8700, 0x123c, 0x2000 },
- { 0x0700, 0x123b, 0x0000 },
- { 0x0700, 0x123d, 0x0000 },
- { 0x8700, 0x1242, 0x3000 },
- { 0x8700, 0x1240, 0x2000 },
- { 0x0700, 0x123f, 0x0000 },
- { 0x0700, 0x1241, 0x0000 },
- { 0x8700, 0x1244, 0x2000 },
- { 0x0700, 0x1243, 0x0000 },
- { 0x0700, 0x1245, 0x0000 },
- { 0x8700, 0x126e, 0x6000 },
- { 0x8700, 0x125c, 0x5000 },
- { 0x8700, 0x1252, 0x4000 },
- { 0x8700, 0x124c, 0x3000 },
- { 0x8700, 0x124a, 0x2000 },
- { 0x0700, 0x1248, 0x0000 },
- { 0x0700, 0x124b, 0x0000 },
- { 0x8700, 0x1250, 0x2000 },
- { 0x0700, 0x124d, 0x0000 },
- { 0x0700, 0x1251, 0x0000 },
- { 0x8700, 0x1256, 0x3000 },
- { 0x8700, 0x1254, 0x2000 },
- { 0x0700, 0x1253, 0x0000 },
- { 0x0700, 0x1255, 0x0000 },
- { 0x8700, 0x125a, 0x2000 },
- { 0x0700, 0x1258, 0x0000 },
- { 0x0700, 0x125b, 0x0000 },
- { 0x8700, 0x1266, 0x4000 },
- { 0x8700, 0x1262, 0x3000 },
- { 0x8700, 0x1260, 0x2000 },
- { 0x0700, 0x125d, 0x0000 },
- { 0x0700, 0x1261, 0x0000 },
- { 0x8700, 0x1264, 0x2000 },
- { 0x0700, 0x1263, 0x0000 },
- { 0x0700, 0x1265, 0x0000 },
- { 0x8700, 0x126a, 0x3000 },
- { 0x8700, 0x1268, 0x2000 },
- { 0x0700, 0x1267, 0x0000 },
- { 0x0700, 0x1269, 0x0000 },
- { 0x8700, 0x126c, 0x2000 },
- { 0x0700, 0x126b, 0x0000 },
- { 0x0700, 0x126d, 0x0000 },
- { 0x8700, 0x127e, 0x5000 },
- { 0x8700, 0x1276, 0x4000 },
- { 0x8700, 0x1272, 0x3000 },
- { 0x8700, 0x1270, 0x2000 },
- { 0x0700, 0x126f, 0x0000 },
- { 0x0700, 0x1271, 0x0000 },
- { 0x8700, 0x1274, 0x2000 },
- { 0x0700, 0x1273, 0x0000 },
- { 0x0700, 0x1275, 0x0000 },
- { 0x8700, 0x127a, 0x3000 },
- { 0x8700, 0x1278, 0x2000 },
- { 0x0700, 0x1277, 0x0000 },
- { 0x0700, 0x1279, 0x0000 },
- { 0x8700, 0x127c, 0x2000 },
- { 0x0700, 0x127b, 0x0000 },
- { 0x0700, 0x127d, 0x0000 },
- { 0x8700, 0x1286, 0x4000 },
- { 0x8700, 0x1282, 0x3000 },
- { 0x8700, 0x1280, 0x2000 },
- { 0x0700, 0x127f, 0x0000 },
- { 0x0700, 0x1281, 0x0000 },
- { 0x8700, 0x1284, 0x2000 },
- { 0x0700, 0x1283, 0x0000 },
- { 0x0700, 0x1285, 0x0000 },
- { 0x8700, 0x128c, 0x3000 },
- { 0x8700, 0x128a, 0x2000 },
- { 0x0700, 0x1288, 0x0000 },
- { 0x0700, 0x128b, 0x0000 },
- { 0x8700, 0x1290, 0x2000 },
- { 0x0700, 0x128d, 0x0000 },
- { 0x0700, 0x1291, 0x0000 },
- { 0x8700, 0x12dc, 0x7000 },
- { 0x8700, 0x12b4, 0x6000 },
- { 0x8700, 0x12a2, 0x5000 },
- { 0x8700, 0x129a, 0x4000 },
- { 0x8700, 0x1296, 0x3000 },
- { 0x8700, 0x1294, 0x2000 },
- { 0x0700, 0x1293, 0x0000 },
- { 0x0700, 0x1295, 0x0000 },
- { 0x8700, 0x1298, 0x2000 },
- { 0x0700, 0x1297, 0x0000 },
- { 0x0700, 0x1299, 0x0000 },
- { 0x8700, 0x129e, 0x3000 },
- { 0x8700, 0x129c, 0x2000 },
- { 0x0700, 0x129b, 0x0000 },
- { 0x0700, 0x129d, 0x0000 },
- { 0x8700, 0x12a0, 0x2000 },
- { 0x0700, 0x129f, 0x0000 },
- { 0x0700, 0x12a1, 0x0000 },
- { 0x8700, 0x12aa, 0x4000 },
- { 0x8700, 0x12a6, 0x3000 },
- { 0x8700, 0x12a4, 0x2000 },
- { 0x0700, 0x12a3, 0x0000 },
- { 0x0700, 0x12a5, 0x0000 },
- { 0x8700, 0x12a8, 0x2000 },
- { 0x0700, 0x12a7, 0x0000 },
- { 0x0700, 0x12a9, 0x0000 },
- { 0x8700, 0x12ae, 0x3000 },
- { 0x8700, 0x12ac, 0x2000 },
- { 0x0700, 0x12ab, 0x0000 },
- { 0x0700, 0x12ad, 0x0000 },
- { 0x8700, 0x12b2, 0x2000 },
- { 0x0700, 0x12b0, 0x0000 },
- { 0x0700, 0x12b3, 0x0000 },
- { 0x8700, 0x12ca, 0x5000 },
- { 0x8700, 0x12be, 0x4000 },
- { 0x8700, 0x12ba, 0x3000 },
- { 0x8700, 0x12b8, 0x2000 },
- { 0x0700, 0x12b5, 0x0000 },
- { 0x0700, 0x12b9, 0x0000 },
- { 0x8700, 0x12bc, 0x2000 },
- { 0x0700, 0x12bb, 0x0000 },
- { 0x0700, 0x12bd, 0x0000 },
- { 0x8700, 0x12c4, 0x3000 },
- { 0x8700, 0x12c2, 0x2000 },
- { 0x0700, 0x12c0, 0x0000 },
- { 0x0700, 0x12c3, 0x0000 },
- { 0x8700, 0x12c8, 0x2000 },
- { 0x0700, 0x12c5, 0x0000 },
- { 0x0700, 0x12c9, 0x0000 },
- { 0x8700, 0x12d3, 0x4000 },
- { 0x8700, 0x12ce, 0x3000 },
- { 0x8700, 0x12cc, 0x2000 },
- { 0x0700, 0x12cb, 0x0000 },
- { 0x0700, 0x12cd, 0x0000 },
- { 0x8700, 0x12d1, 0x2000 },
- { 0x0700, 0x12d0, 0x0000 },
- { 0x0700, 0x12d2, 0x0000 },
- { 0x8700, 0x12d8, 0x3000 },
- { 0x8700, 0x12d5, 0x2000 },
- { 0x0700, 0x12d4, 0x0000 },
- { 0x0700, 0x12d6, 0x0000 },
- { 0x8700, 0x12da, 0x2000 },
- { 0x0700, 0x12d9, 0x0000 },
- { 0x0700, 0x12db, 0x0000 },
- { 0x8700, 0x12fd, 0x6000 },
- { 0x8700, 0x12ec, 0x5000 },
- { 0x8700, 0x12e4, 0x4000 },
- { 0x8700, 0x12e0, 0x3000 },
- { 0x8700, 0x12de, 0x2000 },
- { 0x0700, 0x12dd, 0x0000 },
- { 0x0700, 0x12df, 0x0000 },
- { 0x8700, 0x12e2, 0x2000 },
- { 0x0700, 0x12e1, 0x0000 },
- { 0x0700, 0x12e3, 0x0000 },
- { 0x8700, 0x12e8, 0x3000 },
- { 0x8700, 0x12e6, 0x2000 },
- { 0x0700, 0x12e5, 0x0000 },
- { 0x0700, 0x12e7, 0x0000 },
- { 0x8700, 0x12ea, 0x2000 },
- { 0x0700, 0x12e9, 0x0000 },
- { 0x0700, 0x12eb, 0x0000 },
- { 0x8700, 0x12f5, 0x4000 },
- { 0x8700, 0x12f1, 0x3000 },
- { 0x8700, 0x12ee, 0x2000 },
- { 0x0700, 0x12ed, 0x0000 },
- { 0x0700, 0x12f0, 0x0000 },
- { 0x8700, 0x12f3, 0x2000 },
- { 0x0700, 0x12f2, 0x0000 },
- { 0x0700, 0x12f4, 0x0000 },
- { 0x8700, 0x12f9, 0x3000 },
- { 0x8700, 0x12f7, 0x2000 },
- { 0x0700, 0x12f6, 0x0000 },
- { 0x0700, 0x12f8, 0x0000 },
- { 0x8700, 0x12fb, 0x2000 },
- { 0x0700, 0x12fa, 0x0000 },
- { 0x0700, 0x12fc, 0x0000 },
- { 0x8700, 0x130d, 0x5000 },
- { 0x8700, 0x1305, 0x4000 },
- { 0x8700, 0x1301, 0x3000 },
- { 0x8700, 0x12ff, 0x2000 },
- { 0x0700, 0x12fe, 0x0000 },
- { 0x0700, 0x1300, 0x0000 },
- { 0x8700, 0x1303, 0x2000 },
- { 0x0700, 0x1302, 0x0000 },
- { 0x0700, 0x1304, 0x0000 },
- { 0x8700, 0x1309, 0x3000 },
- { 0x8700, 0x1307, 0x2000 },
- { 0x0700, 0x1306, 0x0000 },
- { 0x0700, 0x1308, 0x0000 },
- { 0x8700, 0x130b, 0x2000 },
- { 0x0700, 0x130a, 0x0000 },
- { 0x0700, 0x130c, 0x0000 },
- { 0x8700, 0x1319, 0x4000 },
- { 0x8700, 0x1313, 0x3000 },
- { 0x8700, 0x1310, 0x2000 },
- { 0x0700, 0x130e, 0x0000 },
- { 0x0700, 0x1312, 0x0000 },
- { 0x8700, 0x1315, 0x2000 },
- { 0x0700, 0x1314, 0x0000 },
- { 0x0700, 0x1318, 0x0000 },
- { 0x8700, 0x131d, 0x3000 },
- { 0x8700, 0x131b, 0x2000 },
- { 0x0700, 0x131a, 0x0000 },
- { 0x0700, 0x131c, 0x0000 },
- { 0x8700, 0x1320, 0x2000 },
- { 0x0700, 0x131e, 0x0000 },
- { 0x0700, 0x1321, 0x0000 },
- { 0x8700, 0x1458, 0x9000 },
- { 0x8700, 0x13cc, 0x8000 },
- { 0x8d00, 0x1369, 0x7000 },
- { 0x8700, 0x1342, 0x6000 },
- { 0x8700, 0x1332, 0x5000 },
- { 0x8700, 0x132a, 0x4000 },
- { 0x8700, 0x1326, 0x3000 },
- { 0x8700, 0x1324, 0x2000 },
- { 0x0700, 0x1323, 0x0000 },
- { 0x0700, 0x1325, 0x0000 },
- { 0x8700, 0x1328, 0x2000 },
- { 0x0700, 0x1327, 0x0000 },
- { 0x0700, 0x1329, 0x0000 },
- { 0x8700, 0x132e, 0x3000 },
- { 0x8700, 0x132c, 0x2000 },
- { 0x0700, 0x132b, 0x0000 },
- { 0x0700, 0x132d, 0x0000 },
- { 0x8700, 0x1330, 0x2000 },
- { 0x0700, 0x132f, 0x0000 },
- { 0x0700, 0x1331, 0x0000 },
- { 0x8700, 0x133a, 0x4000 },
- { 0x8700, 0x1336, 0x3000 },
- { 0x8700, 0x1334, 0x2000 },
- { 0x0700, 0x1333, 0x0000 },
- { 0x0700, 0x1335, 0x0000 },
- { 0x8700, 0x1338, 0x2000 },
- { 0x0700, 0x1337, 0x0000 },
- { 0x0700, 0x1339, 0x0000 },
- { 0x8700, 0x133e, 0x3000 },
- { 0x8700, 0x133c, 0x2000 },
- { 0x0700, 0x133b, 0x0000 },
- { 0x0700, 0x133d, 0x0000 },
- { 0x8700, 0x1340, 0x2000 },
- { 0x0700, 0x133f, 0x0000 },
- { 0x0700, 0x1341, 0x0000 },
- { 0x8700, 0x1353, 0x5000 },
- { 0x8700, 0x134b, 0x4000 },
- { 0x8700, 0x1346, 0x3000 },
- { 0x8700, 0x1344, 0x2000 },
- { 0x0700, 0x1343, 0x0000 },
- { 0x0700, 0x1345, 0x0000 },
- { 0x8700, 0x1349, 0x2000 },
- { 0x0700, 0x1348, 0x0000 },
- { 0x0700, 0x134a, 0x0000 },
- { 0x8700, 0x134f, 0x3000 },
- { 0x8700, 0x134d, 0x2000 },
- { 0x0700, 0x134c, 0x0000 },
- { 0x0700, 0x134e, 0x0000 },
- { 0x8700, 0x1351, 0x2000 },
- { 0x0700, 0x1350, 0x0000 },
- { 0x0700, 0x1352, 0x0000 },
- { 0x9500, 0x1361, 0x4000 },
- { 0x8700, 0x1357, 0x3000 },
- { 0x8700, 0x1355, 0x2000 },
- { 0x0700, 0x1354, 0x0000 },
- { 0x0700, 0x1356, 0x0000 },
- { 0x8700, 0x1359, 0x2000 },
- { 0x0700, 0x1358, 0x0000 },
- { 0x0700, 0x135a, 0x0000 },
- { 0x9500, 0x1365, 0x3000 },
- { 0x9500, 0x1363, 0x2000 },
- { 0x1500, 0x1362, 0x0000 },
- { 0x1500, 0x1364, 0x0000 },
- { 0x9500, 0x1367, 0x2000 },
- { 0x1500, 0x1366, 0x0000 },
- { 0x1500, 0x1368, 0x0000 },
- { 0x8700, 0x13ac, 0x6000 },
- { 0x8f00, 0x1379, 0x5000 },
- { 0x8d00, 0x1371, 0x4000 },
- { 0x8d00, 0x136d, 0x3000 },
- { 0x8d00, 0x136b, 0x2000 },
- { 0x0d00, 0x136a, 0x0000 },
- { 0x0d00, 0x136c, 0x0000 },
- { 0x8d00, 0x136f, 0x2000 },
- { 0x0d00, 0x136e, 0x0000 },
- { 0x0d00, 0x1370, 0x0000 },
- { 0x8f00, 0x1375, 0x3000 },
- { 0x8f00, 0x1373, 0x2000 },
- { 0x0f00, 0x1372, 0x0000 },
- { 0x0f00, 0x1374, 0x0000 },
- { 0x8f00, 0x1377, 0x2000 },
- { 0x0f00, 0x1376, 0x0000 },
- { 0x0f00, 0x1378, 0x0000 },
- { 0x8700, 0x13a4, 0x4000 },
- { 0x8700, 0x13a0, 0x3000 },
- { 0x8f00, 0x137b, 0x2000 },
- { 0x0f00, 0x137a, 0x0000 },
- { 0x0f00, 0x137c, 0x0000 },
- { 0x8700, 0x13a2, 0x2000 },
- { 0x0700, 0x13a1, 0x0000 },
- { 0x0700, 0x13a3, 0x0000 },
- { 0x8700, 0x13a8, 0x3000 },
- { 0x8700, 0x13a6, 0x2000 },
- { 0x0700, 0x13a5, 0x0000 },
- { 0x0700, 0x13a7, 0x0000 },
- { 0x8700, 0x13aa, 0x2000 },
- { 0x0700, 0x13a9, 0x0000 },
- { 0x0700, 0x13ab, 0x0000 },
- { 0x8700, 0x13bc, 0x5000 },
- { 0x8700, 0x13b4, 0x4000 },
- { 0x8700, 0x13b0, 0x3000 },
- { 0x8700, 0x13ae, 0x2000 },
- { 0x0700, 0x13ad, 0x0000 },
- { 0x0700, 0x13af, 0x0000 },
- { 0x8700, 0x13b2, 0x2000 },
- { 0x0700, 0x13b1, 0x0000 },
- { 0x0700, 0x13b3, 0x0000 },
- { 0x8700, 0x13b8, 0x3000 },
- { 0x8700, 0x13b6, 0x2000 },
- { 0x0700, 0x13b5, 0x0000 },
- { 0x0700, 0x13b7, 0x0000 },
- { 0x8700, 0x13ba, 0x2000 },
- { 0x0700, 0x13b9, 0x0000 },
- { 0x0700, 0x13bb, 0x0000 },
- { 0x8700, 0x13c4, 0x4000 },
- { 0x8700, 0x13c0, 0x3000 },
- { 0x8700, 0x13be, 0x2000 },
- { 0x0700, 0x13bd, 0x0000 },
- { 0x0700, 0x13bf, 0x0000 },
- { 0x8700, 0x13c2, 0x2000 },
- { 0x0700, 0x13c1, 0x0000 },
- { 0x0700, 0x13c3, 0x0000 },
- { 0x8700, 0x13c8, 0x3000 },
- { 0x8700, 0x13c6, 0x2000 },
- { 0x0700, 0x13c5, 0x0000 },
- { 0x0700, 0x13c7, 0x0000 },
- { 0x8700, 0x13ca, 0x2000 },
- { 0x0700, 0x13c9, 0x0000 },
- { 0x0700, 0x13cb, 0x0000 },
- { 0x8700, 0x1418, 0x7000 },
- { 0x8700, 0x13ec, 0x6000 },
- { 0x8700, 0x13dc, 0x5000 },
- { 0x8700, 0x13d4, 0x4000 },
- { 0x8700, 0x13d0, 0x3000 },
- { 0x8700, 0x13ce, 0x2000 },
- { 0x0700, 0x13cd, 0x0000 },
- { 0x0700, 0x13cf, 0x0000 },
- { 0x8700, 0x13d2, 0x2000 },
- { 0x0700, 0x13d1, 0x0000 },
- { 0x0700, 0x13d3, 0x0000 },
- { 0x8700, 0x13d8, 0x3000 },
- { 0x8700, 0x13d6, 0x2000 },
- { 0x0700, 0x13d5, 0x0000 },
- { 0x0700, 0x13d7, 0x0000 },
- { 0x8700, 0x13da, 0x2000 },
- { 0x0700, 0x13d9, 0x0000 },
- { 0x0700, 0x13db, 0x0000 },
- { 0x8700, 0x13e4, 0x4000 },
- { 0x8700, 0x13e0, 0x3000 },
- { 0x8700, 0x13de, 0x2000 },
- { 0x0700, 0x13dd, 0x0000 },
- { 0x0700, 0x13df, 0x0000 },
- { 0x8700, 0x13e2, 0x2000 },
- { 0x0700, 0x13e1, 0x0000 },
- { 0x0700, 0x13e3, 0x0000 },
- { 0x8700, 0x13e8, 0x3000 },
- { 0x8700, 0x13e6, 0x2000 },
- { 0x0700, 0x13e5, 0x0000 },
- { 0x0700, 0x13e7, 0x0000 },
- { 0x8700, 0x13ea, 0x2000 },
- { 0x0700, 0x13e9, 0x0000 },
- { 0x0700, 0x13eb, 0x0000 },
- { 0x8700, 0x1408, 0x5000 },
- { 0x8700, 0x13f4, 0x4000 },
- { 0x8700, 0x13f0, 0x3000 },
- { 0x8700, 0x13ee, 0x2000 },
- { 0x0700, 0x13ed, 0x0000 },
- { 0x0700, 0x13ef, 0x0000 },
- { 0x8700, 0x13f2, 0x2000 },
- { 0x0700, 0x13f1, 0x0000 },
- { 0x0700, 0x13f3, 0x0000 },
- { 0x8700, 0x1404, 0x3000 },
- { 0x8700, 0x1402, 0x2000 },
- { 0x0700, 0x1401, 0x0000 },
- { 0x0700, 0x1403, 0x0000 },
- { 0x8700, 0x1406, 0x2000 },
- { 0x0700, 0x1405, 0x0000 },
- { 0x0700, 0x1407, 0x0000 },
- { 0x8700, 0x1410, 0x4000 },
- { 0x8700, 0x140c, 0x3000 },
- { 0x8700, 0x140a, 0x2000 },
- { 0x0700, 0x1409, 0x0000 },
- { 0x0700, 0x140b, 0x0000 },
- { 0x8700, 0x140e, 0x2000 },
- { 0x0700, 0x140d, 0x0000 },
- { 0x0700, 0x140f, 0x0000 },
- { 0x8700, 0x1414, 0x3000 },
- { 0x8700, 0x1412, 0x2000 },
- { 0x0700, 0x1411, 0x0000 },
- { 0x0700, 0x1413, 0x0000 },
- { 0x8700, 0x1416, 0x2000 },
- { 0x0700, 0x1415, 0x0000 },
- { 0x0700, 0x1417, 0x0000 },
- { 0x8700, 0x1438, 0x6000 },
- { 0x8700, 0x1428, 0x5000 },
- { 0x8700, 0x1420, 0x4000 },
- { 0x8700, 0x141c, 0x3000 },
- { 0x8700, 0x141a, 0x2000 },
- { 0x0700, 0x1419, 0x0000 },
- { 0x0700, 0x141b, 0x0000 },
- { 0x8700, 0x141e, 0x2000 },
- { 0x0700, 0x141d, 0x0000 },
- { 0x0700, 0x141f, 0x0000 },
- { 0x8700, 0x1424, 0x3000 },
- { 0x8700, 0x1422, 0x2000 },
- { 0x0700, 0x1421, 0x0000 },
- { 0x0700, 0x1423, 0x0000 },
- { 0x8700, 0x1426, 0x2000 },
- { 0x0700, 0x1425, 0x0000 },
- { 0x0700, 0x1427, 0x0000 },
- { 0x8700, 0x1430, 0x4000 },
- { 0x8700, 0x142c, 0x3000 },
- { 0x8700, 0x142a, 0x2000 },
- { 0x0700, 0x1429, 0x0000 },
- { 0x0700, 0x142b, 0x0000 },
- { 0x8700, 0x142e, 0x2000 },
- { 0x0700, 0x142d, 0x0000 },
- { 0x0700, 0x142f, 0x0000 },
- { 0x8700, 0x1434, 0x3000 },
- { 0x8700, 0x1432, 0x2000 },
- { 0x0700, 0x1431, 0x0000 },
- { 0x0700, 0x1433, 0x0000 },
- { 0x8700, 0x1436, 0x2000 },
- { 0x0700, 0x1435, 0x0000 },
- { 0x0700, 0x1437, 0x0000 },
- { 0x8700, 0x1448, 0x5000 },
- { 0x8700, 0x1440, 0x4000 },
- { 0x8700, 0x143c, 0x3000 },
- { 0x8700, 0x143a, 0x2000 },
- { 0x0700, 0x1439, 0x0000 },
- { 0x0700, 0x143b, 0x0000 },
- { 0x8700, 0x143e, 0x2000 },
- { 0x0700, 0x143d, 0x0000 },
- { 0x0700, 0x143f, 0x0000 },
- { 0x8700, 0x1444, 0x3000 },
- { 0x8700, 0x1442, 0x2000 },
- { 0x0700, 0x1441, 0x0000 },
- { 0x0700, 0x1443, 0x0000 },
- { 0x8700, 0x1446, 0x2000 },
- { 0x0700, 0x1445, 0x0000 },
- { 0x0700, 0x1447, 0x0000 },
- { 0x8700, 0x1450, 0x4000 },
- { 0x8700, 0x144c, 0x3000 },
- { 0x8700, 0x144a, 0x2000 },
- { 0x0700, 0x1449, 0x0000 },
- { 0x0700, 0x144b, 0x0000 },
- { 0x8700, 0x144e, 0x2000 },
- { 0x0700, 0x144d, 0x0000 },
- { 0x0700, 0x144f, 0x0000 },
- { 0x8700, 0x1454, 0x3000 },
- { 0x8700, 0x1452, 0x2000 },
- { 0x0700, 0x1451, 0x0000 },
- { 0x0700, 0x1453, 0x0000 },
- { 0x8700, 0x1456, 0x2000 },
- { 0x0700, 0x1455, 0x0000 },
- { 0x0700, 0x1457, 0x0000 },
- { 0x8700, 0x14d8, 0x8000 },
- { 0x8700, 0x1498, 0x7000 },
- { 0x8700, 0x1478, 0x6000 },
- { 0x8700, 0x1468, 0x5000 },
- { 0x8700, 0x1460, 0x4000 },
- { 0x8700, 0x145c, 0x3000 },
- { 0x8700, 0x145a, 0x2000 },
- { 0x0700, 0x1459, 0x0000 },
- { 0x0700, 0x145b, 0x0000 },
- { 0x8700, 0x145e, 0x2000 },
- { 0x0700, 0x145d, 0x0000 },
- { 0x0700, 0x145f, 0x0000 },
- { 0x8700, 0x1464, 0x3000 },
- { 0x8700, 0x1462, 0x2000 },
- { 0x0700, 0x1461, 0x0000 },
- { 0x0700, 0x1463, 0x0000 },
- { 0x8700, 0x1466, 0x2000 },
- { 0x0700, 0x1465, 0x0000 },
- { 0x0700, 0x1467, 0x0000 },
- { 0x8700, 0x1470, 0x4000 },
- { 0x8700, 0x146c, 0x3000 },
- { 0x8700, 0x146a, 0x2000 },
- { 0x0700, 0x1469, 0x0000 },
- { 0x0700, 0x146b, 0x0000 },
- { 0x8700, 0x146e, 0x2000 },
- { 0x0700, 0x146d, 0x0000 },
- { 0x0700, 0x146f, 0x0000 },
- { 0x8700, 0x1474, 0x3000 },
- { 0x8700, 0x1472, 0x2000 },
- { 0x0700, 0x1471, 0x0000 },
- { 0x0700, 0x1473, 0x0000 },
- { 0x8700, 0x1476, 0x2000 },
- { 0x0700, 0x1475, 0x0000 },
- { 0x0700, 0x1477, 0x0000 },
- { 0x8700, 0x1488, 0x5000 },
- { 0x8700, 0x1480, 0x4000 },
- { 0x8700, 0x147c, 0x3000 },
- { 0x8700, 0x147a, 0x2000 },
- { 0x0700, 0x1479, 0x0000 },
- { 0x0700, 0x147b, 0x0000 },
- { 0x8700, 0x147e, 0x2000 },
- { 0x0700, 0x147d, 0x0000 },
- { 0x0700, 0x147f, 0x0000 },
- { 0x8700, 0x1484, 0x3000 },
- { 0x8700, 0x1482, 0x2000 },
- { 0x0700, 0x1481, 0x0000 },
- { 0x0700, 0x1483, 0x0000 },
- { 0x8700, 0x1486, 0x2000 },
- { 0x0700, 0x1485, 0x0000 },
- { 0x0700, 0x1487, 0x0000 },
- { 0x8700, 0x1490, 0x4000 },
- { 0x8700, 0x148c, 0x3000 },
- { 0x8700, 0x148a, 0x2000 },
- { 0x0700, 0x1489, 0x0000 },
- { 0x0700, 0x148b, 0x0000 },
- { 0x8700, 0x148e, 0x2000 },
- { 0x0700, 0x148d, 0x0000 },
- { 0x0700, 0x148f, 0x0000 },
- { 0x8700, 0x1494, 0x3000 },
- { 0x8700, 0x1492, 0x2000 },
- { 0x0700, 0x1491, 0x0000 },
- { 0x0700, 0x1493, 0x0000 },
- { 0x8700, 0x1496, 0x2000 },
- { 0x0700, 0x1495, 0x0000 },
- { 0x0700, 0x1497, 0x0000 },
- { 0x8700, 0x14b8, 0x6000 },
- { 0x8700, 0x14a8, 0x5000 },
- { 0x8700, 0x14a0, 0x4000 },
- { 0x8700, 0x149c, 0x3000 },
- { 0x8700, 0x149a, 0x2000 },
- { 0x0700, 0x1499, 0x0000 },
- { 0x0700, 0x149b, 0x0000 },
- { 0x8700, 0x149e, 0x2000 },
- { 0x0700, 0x149d, 0x0000 },
- { 0x0700, 0x149f, 0x0000 },
- { 0x8700, 0x14a4, 0x3000 },
- { 0x8700, 0x14a2, 0x2000 },
- { 0x0700, 0x14a1, 0x0000 },
- { 0x0700, 0x14a3, 0x0000 },
- { 0x8700, 0x14a6, 0x2000 },
- { 0x0700, 0x14a5, 0x0000 },
- { 0x0700, 0x14a7, 0x0000 },
- { 0x8700, 0x14b0, 0x4000 },
- { 0x8700, 0x14ac, 0x3000 },
- { 0x8700, 0x14aa, 0x2000 },
- { 0x0700, 0x14a9, 0x0000 },
- { 0x0700, 0x14ab, 0x0000 },
- { 0x8700, 0x14ae, 0x2000 },
- { 0x0700, 0x14ad, 0x0000 },
- { 0x0700, 0x14af, 0x0000 },
- { 0x8700, 0x14b4, 0x3000 },
- { 0x8700, 0x14b2, 0x2000 },
- { 0x0700, 0x14b1, 0x0000 },
- { 0x0700, 0x14b3, 0x0000 },
- { 0x8700, 0x14b6, 0x2000 },
- { 0x0700, 0x14b5, 0x0000 },
- { 0x0700, 0x14b7, 0x0000 },
- { 0x8700, 0x14c8, 0x5000 },
- { 0x8700, 0x14c0, 0x4000 },
- { 0x8700, 0x14bc, 0x3000 },
- { 0x8700, 0x14ba, 0x2000 },
- { 0x0700, 0x14b9, 0x0000 },
- { 0x0700, 0x14bb, 0x0000 },
- { 0x8700, 0x14be, 0x2000 },
- { 0x0700, 0x14bd, 0x0000 },
- { 0x0700, 0x14bf, 0x0000 },
- { 0x8700, 0x14c4, 0x3000 },
- { 0x8700, 0x14c2, 0x2000 },
- { 0x0700, 0x14c1, 0x0000 },
- { 0x0700, 0x14c3, 0x0000 },
- { 0x8700, 0x14c6, 0x2000 },
- { 0x0700, 0x14c5, 0x0000 },
- { 0x0700, 0x14c7, 0x0000 },
- { 0x8700, 0x14d0, 0x4000 },
- { 0x8700, 0x14cc, 0x3000 },
- { 0x8700, 0x14ca, 0x2000 },
- { 0x0700, 0x14c9, 0x0000 },
- { 0x0700, 0x14cb, 0x0000 },
- { 0x8700, 0x14ce, 0x2000 },
- { 0x0700, 0x14cd, 0x0000 },
- { 0x0700, 0x14cf, 0x0000 },
- { 0x8700, 0x14d4, 0x3000 },
- { 0x8700, 0x14d2, 0x2000 },
- { 0x0700, 0x14d1, 0x0000 },
- { 0x0700, 0x14d3, 0x0000 },
- { 0x8700, 0x14d6, 0x2000 },
- { 0x0700, 0x14d5, 0x0000 },
- { 0x0700, 0x14d7, 0x0000 },
- { 0x8700, 0x1518, 0x7000 },
- { 0x8700, 0x14f8, 0x6000 },
- { 0x8700, 0x14e8, 0x5000 },
- { 0x8700, 0x14e0, 0x4000 },
- { 0x8700, 0x14dc, 0x3000 },
- { 0x8700, 0x14da, 0x2000 },
- { 0x0700, 0x14d9, 0x0000 },
- { 0x0700, 0x14db, 0x0000 },
- { 0x8700, 0x14de, 0x2000 },
- { 0x0700, 0x14dd, 0x0000 },
- { 0x0700, 0x14df, 0x0000 },
- { 0x8700, 0x14e4, 0x3000 },
- { 0x8700, 0x14e2, 0x2000 },
- { 0x0700, 0x14e1, 0x0000 },
- { 0x0700, 0x14e3, 0x0000 },
- { 0x8700, 0x14e6, 0x2000 },
- { 0x0700, 0x14e5, 0x0000 },
- { 0x0700, 0x14e7, 0x0000 },
- { 0x8700, 0x14f0, 0x4000 },
- { 0x8700, 0x14ec, 0x3000 },
- { 0x8700, 0x14ea, 0x2000 },
- { 0x0700, 0x14e9, 0x0000 },
- { 0x0700, 0x14eb, 0x0000 },
- { 0x8700, 0x14ee, 0x2000 },
- { 0x0700, 0x14ed, 0x0000 },
- { 0x0700, 0x14ef, 0x0000 },
- { 0x8700, 0x14f4, 0x3000 },
- { 0x8700, 0x14f2, 0x2000 },
- { 0x0700, 0x14f1, 0x0000 },
- { 0x0700, 0x14f3, 0x0000 },
- { 0x8700, 0x14f6, 0x2000 },
- { 0x0700, 0x14f5, 0x0000 },
- { 0x0700, 0x14f7, 0x0000 },
- { 0x8700, 0x1508, 0x5000 },
- { 0x8700, 0x1500, 0x4000 },
- { 0x8700, 0x14fc, 0x3000 },
- { 0x8700, 0x14fa, 0x2000 },
- { 0x0700, 0x14f9, 0x0000 },
- { 0x0700, 0x14fb, 0x0000 },
- { 0x8700, 0x14fe, 0x2000 },
- { 0x0700, 0x14fd, 0x0000 },
- { 0x0700, 0x14ff, 0x0000 },
- { 0x8700, 0x1504, 0x3000 },
- { 0x8700, 0x1502, 0x2000 },
- { 0x0700, 0x1501, 0x0000 },
- { 0x0700, 0x1503, 0x0000 },
- { 0x8700, 0x1506, 0x2000 },
- { 0x0700, 0x1505, 0x0000 },
- { 0x0700, 0x1507, 0x0000 },
- { 0x8700, 0x1510, 0x4000 },
- { 0x8700, 0x150c, 0x3000 },
- { 0x8700, 0x150a, 0x2000 },
- { 0x0700, 0x1509, 0x0000 },
- { 0x0700, 0x150b, 0x0000 },
- { 0x8700, 0x150e, 0x2000 },
- { 0x0700, 0x150d, 0x0000 },
- { 0x0700, 0x150f, 0x0000 },
- { 0x8700, 0x1514, 0x3000 },
- { 0x8700, 0x1512, 0x2000 },
- { 0x0700, 0x1511, 0x0000 },
- { 0x0700, 0x1513, 0x0000 },
- { 0x8700, 0x1516, 0x2000 },
- { 0x0700, 0x1515, 0x0000 },
- { 0x0700, 0x1517, 0x0000 },
- { 0x8700, 0x1538, 0x6000 },
- { 0x8700, 0x1528, 0x5000 },
- { 0x8700, 0x1520, 0x4000 },
- { 0x8700, 0x151c, 0x3000 },
- { 0x8700, 0x151a, 0x2000 },
- { 0x0700, 0x1519, 0x0000 },
- { 0x0700, 0x151b, 0x0000 },
- { 0x8700, 0x151e, 0x2000 },
- { 0x0700, 0x151d, 0x0000 },
- { 0x0700, 0x151f, 0x0000 },
- { 0x8700, 0x1524, 0x3000 },
- { 0x8700, 0x1522, 0x2000 },
- { 0x0700, 0x1521, 0x0000 },
- { 0x0700, 0x1523, 0x0000 },
- { 0x8700, 0x1526, 0x2000 },
- { 0x0700, 0x1525, 0x0000 },
- { 0x0700, 0x1527, 0x0000 },
- { 0x8700, 0x1530, 0x4000 },
- { 0x8700, 0x152c, 0x3000 },
- { 0x8700, 0x152a, 0x2000 },
- { 0x0700, 0x1529, 0x0000 },
- { 0x0700, 0x152b, 0x0000 },
- { 0x8700, 0x152e, 0x2000 },
- { 0x0700, 0x152d, 0x0000 },
- { 0x0700, 0x152f, 0x0000 },
- { 0x8700, 0x1534, 0x3000 },
- { 0x8700, 0x1532, 0x2000 },
- { 0x0700, 0x1531, 0x0000 },
- { 0x0700, 0x1533, 0x0000 },
- { 0x8700, 0x1536, 0x2000 },
- { 0x0700, 0x1535, 0x0000 },
- { 0x0700, 0x1537, 0x0000 },
- { 0x8700, 0x1548, 0x5000 },
- { 0x8700, 0x1540, 0x4000 },
- { 0x8700, 0x153c, 0x3000 },
- { 0x8700, 0x153a, 0x2000 },
- { 0x0700, 0x1539, 0x0000 },
- { 0x0700, 0x153b, 0x0000 },
- { 0x8700, 0x153e, 0x2000 },
- { 0x0700, 0x153d, 0x0000 },
- { 0x0700, 0x153f, 0x0000 },
- { 0x8700, 0x1544, 0x3000 },
- { 0x8700, 0x1542, 0x2000 },
- { 0x0700, 0x1541, 0x0000 },
- { 0x0700, 0x1543, 0x0000 },
- { 0x8700, 0x1546, 0x2000 },
- { 0x0700, 0x1545, 0x0000 },
- { 0x0700, 0x1547, 0x0000 },
- { 0x8700, 0x1550, 0x4000 },
- { 0x8700, 0x154c, 0x3000 },
- { 0x8700, 0x154a, 0x2000 },
- { 0x0700, 0x1549, 0x0000 },
- { 0x0700, 0x154b, 0x0000 },
- { 0x8700, 0x154e, 0x2000 },
- { 0x0700, 0x154d, 0x0000 },
- { 0x0700, 0x154f, 0x0000 },
- { 0x8700, 0x1554, 0x3000 },
- { 0x8700, 0x1552, 0x2000 },
- { 0x0700, 0x1551, 0x0000 },
- { 0x0700, 0x1553, 0x0000 },
- { 0x8700, 0x1556, 0x2000 },
- { 0x0700, 0x1555, 0x0000 },
- { 0x0700, 0x1557, 0x0000 },
- { 0x9900, 0x22ae, 0xc000 },
- { 0x8900, 0x1e24, 0xb001 },
- { 0x8700, 0x17a2, 0xa000 },
- { 0x8700, 0x1658, 0x9000 },
- { 0x8700, 0x15d8, 0x8000 },
- { 0x8700, 0x1598, 0x7000 },
- { 0x8700, 0x1578, 0x6000 },
- { 0x8700, 0x1568, 0x5000 },
- { 0x8700, 0x1560, 0x4000 },
- { 0x8700, 0x155c, 0x3000 },
- { 0x8700, 0x155a, 0x2000 },
- { 0x0700, 0x1559, 0x0000 },
- { 0x0700, 0x155b, 0x0000 },
- { 0x8700, 0x155e, 0x2000 },
- { 0x0700, 0x155d, 0x0000 },
- { 0x0700, 0x155f, 0x0000 },
- { 0x8700, 0x1564, 0x3000 },
- { 0x8700, 0x1562, 0x2000 },
- { 0x0700, 0x1561, 0x0000 },
- { 0x0700, 0x1563, 0x0000 },
- { 0x8700, 0x1566, 0x2000 },
- { 0x0700, 0x1565, 0x0000 },
- { 0x0700, 0x1567, 0x0000 },
- { 0x8700, 0x1570, 0x4000 },
- { 0x8700, 0x156c, 0x3000 },
- { 0x8700, 0x156a, 0x2000 },
- { 0x0700, 0x1569, 0x0000 },
- { 0x0700, 0x156b, 0x0000 },
- { 0x8700, 0x156e, 0x2000 },
- { 0x0700, 0x156d, 0x0000 },
- { 0x0700, 0x156f, 0x0000 },
- { 0x8700, 0x1574, 0x3000 },
- { 0x8700, 0x1572, 0x2000 },
- { 0x0700, 0x1571, 0x0000 },
- { 0x0700, 0x1573, 0x0000 },
- { 0x8700, 0x1576, 0x2000 },
- { 0x0700, 0x1575, 0x0000 },
- { 0x0700, 0x1577, 0x0000 },
- { 0x8700, 0x1588, 0x5000 },
- { 0x8700, 0x1580, 0x4000 },
- { 0x8700, 0x157c, 0x3000 },
- { 0x8700, 0x157a, 0x2000 },
- { 0x0700, 0x1579, 0x0000 },
- { 0x0700, 0x157b, 0x0000 },
- { 0x8700, 0x157e, 0x2000 },
- { 0x0700, 0x157d, 0x0000 },
- { 0x0700, 0x157f, 0x0000 },
- { 0x8700, 0x1584, 0x3000 },
- { 0x8700, 0x1582, 0x2000 },
- { 0x0700, 0x1581, 0x0000 },
- { 0x0700, 0x1583, 0x0000 },
- { 0x8700, 0x1586, 0x2000 },
- { 0x0700, 0x1585, 0x0000 },
- { 0x0700, 0x1587, 0x0000 },
- { 0x8700, 0x1590, 0x4000 },
- { 0x8700, 0x158c, 0x3000 },
- { 0x8700, 0x158a, 0x2000 },
- { 0x0700, 0x1589, 0x0000 },
- { 0x0700, 0x158b, 0x0000 },
- { 0x8700, 0x158e, 0x2000 },
- { 0x0700, 0x158d, 0x0000 },
- { 0x0700, 0x158f, 0x0000 },
- { 0x8700, 0x1594, 0x3000 },
- { 0x8700, 0x1592, 0x2000 },
- { 0x0700, 0x1591, 0x0000 },
- { 0x0700, 0x1593, 0x0000 },
- { 0x8700, 0x1596, 0x2000 },
- { 0x0700, 0x1595, 0x0000 },
- { 0x0700, 0x1597, 0x0000 },
- { 0x8700, 0x15b8, 0x6000 },
- { 0x8700, 0x15a8, 0x5000 },
- { 0x8700, 0x15a0, 0x4000 },
- { 0x8700, 0x159c, 0x3000 },
- { 0x8700, 0x159a, 0x2000 },
- { 0x0700, 0x1599, 0x0000 },
- { 0x0700, 0x159b, 0x0000 },
- { 0x8700, 0x159e, 0x2000 },
- { 0x0700, 0x159d, 0x0000 },
- { 0x0700, 0x159f, 0x0000 },
- { 0x8700, 0x15a4, 0x3000 },
- { 0x8700, 0x15a2, 0x2000 },
- { 0x0700, 0x15a1, 0x0000 },
- { 0x0700, 0x15a3, 0x0000 },
- { 0x8700, 0x15a6, 0x2000 },
- { 0x0700, 0x15a5, 0x0000 },
- { 0x0700, 0x15a7, 0x0000 },
- { 0x8700, 0x15b0, 0x4000 },
- { 0x8700, 0x15ac, 0x3000 },
- { 0x8700, 0x15aa, 0x2000 },
- { 0x0700, 0x15a9, 0x0000 },
- { 0x0700, 0x15ab, 0x0000 },
- { 0x8700, 0x15ae, 0x2000 },
- { 0x0700, 0x15ad, 0x0000 },
- { 0x0700, 0x15af, 0x0000 },
- { 0x8700, 0x15b4, 0x3000 },
- { 0x8700, 0x15b2, 0x2000 },
- { 0x0700, 0x15b1, 0x0000 },
- { 0x0700, 0x15b3, 0x0000 },
- { 0x8700, 0x15b6, 0x2000 },
- { 0x0700, 0x15b5, 0x0000 },
- { 0x0700, 0x15b7, 0x0000 },
- { 0x8700, 0x15c8, 0x5000 },
- { 0x8700, 0x15c0, 0x4000 },
- { 0x8700, 0x15bc, 0x3000 },
- { 0x8700, 0x15ba, 0x2000 },
- { 0x0700, 0x15b9, 0x0000 },
- { 0x0700, 0x15bb, 0x0000 },
- { 0x8700, 0x15be, 0x2000 },
- { 0x0700, 0x15bd, 0x0000 },
- { 0x0700, 0x15bf, 0x0000 },
- { 0x8700, 0x15c4, 0x3000 },
- { 0x8700, 0x15c2, 0x2000 },
- { 0x0700, 0x15c1, 0x0000 },
- { 0x0700, 0x15c3, 0x0000 },
- { 0x8700, 0x15c6, 0x2000 },
- { 0x0700, 0x15c5, 0x0000 },
- { 0x0700, 0x15c7, 0x0000 },
- { 0x8700, 0x15d0, 0x4000 },
- { 0x8700, 0x15cc, 0x3000 },
- { 0x8700, 0x15ca, 0x2000 },
- { 0x0700, 0x15c9, 0x0000 },
- { 0x0700, 0x15cb, 0x0000 },
- { 0x8700, 0x15ce, 0x2000 },
- { 0x0700, 0x15cd, 0x0000 },
- { 0x0700, 0x15cf, 0x0000 },
- { 0x8700, 0x15d4, 0x3000 },
- { 0x8700, 0x15d2, 0x2000 },
- { 0x0700, 0x15d1, 0x0000 },
- { 0x0700, 0x15d3, 0x0000 },
- { 0x8700, 0x15d6, 0x2000 },
- { 0x0700, 0x15d5, 0x0000 },
- { 0x0700, 0x15d7, 0x0000 },
- { 0x8700, 0x1618, 0x7000 },
- { 0x8700, 0x15f8, 0x6000 },
- { 0x8700, 0x15e8, 0x5000 },
- { 0x8700, 0x15e0, 0x4000 },
- { 0x8700, 0x15dc, 0x3000 },
- { 0x8700, 0x15da, 0x2000 },
- { 0x0700, 0x15d9, 0x0000 },
- { 0x0700, 0x15db, 0x0000 },
- { 0x8700, 0x15de, 0x2000 },
- { 0x0700, 0x15dd, 0x0000 },
- { 0x0700, 0x15df, 0x0000 },
- { 0x8700, 0x15e4, 0x3000 },
- { 0x8700, 0x15e2, 0x2000 },
- { 0x0700, 0x15e1, 0x0000 },
- { 0x0700, 0x15e3, 0x0000 },
- { 0x8700, 0x15e6, 0x2000 },
- { 0x0700, 0x15e5, 0x0000 },
- { 0x0700, 0x15e7, 0x0000 },
- { 0x8700, 0x15f0, 0x4000 },
- { 0x8700, 0x15ec, 0x3000 },
- { 0x8700, 0x15ea, 0x2000 },
- { 0x0700, 0x15e9, 0x0000 },
- { 0x0700, 0x15eb, 0x0000 },
- { 0x8700, 0x15ee, 0x2000 },
- { 0x0700, 0x15ed, 0x0000 },
- { 0x0700, 0x15ef, 0x0000 },
- { 0x8700, 0x15f4, 0x3000 },
- { 0x8700, 0x15f2, 0x2000 },
- { 0x0700, 0x15f1, 0x0000 },
- { 0x0700, 0x15f3, 0x0000 },
- { 0x8700, 0x15f6, 0x2000 },
- { 0x0700, 0x15f5, 0x0000 },
- { 0x0700, 0x15f7, 0x0000 },
- { 0x8700, 0x1608, 0x5000 },
- { 0x8700, 0x1600, 0x4000 },
- { 0x8700, 0x15fc, 0x3000 },
- { 0x8700, 0x15fa, 0x2000 },
- { 0x0700, 0x15f9, 0x0000 },
- { 0x0700, 0x15fb, 0x0000 },
- { 0x8700, 0x15fe, 0x2000 },
- { 0x0700, 0x15fd, 0x0000 },
- { 0x0700, 0x15ff, 0x0000 },
- { 0x8700, 0x1604, 0x3000 },
- { 0x8700, 0x1602, 0x2000 },
- { 0x0700, 0x1601, 0x0000 },
- { 0x0700, 0x1603, 0x0000 },
- { 0x8700, 0x1606, 0x2000 },
- { 0x0700, 0x1605, 0x0000 },
- { 0x0700, 0x1607, 0x0000 },
- { 0x8700, 0x1610, 0x4000 },
- { 0x8700, 0x160c, 0x3000 },
- { 0x8700, 0x160a, 0x2000 },
- { 0x0700, 0x1609, 0x0000 },
- { 0x0700, 0x160b, 0x0000 },
- { 0x8700, 0x160e, 0x2000 },
- { 0x0700, 0x160d, 0x0000 },
- { 0x0700, 0x160f, 0x0000 },
- { 0x8700, 0x1614, 0x3000 },
- { 0x8700, 0x1612, 0x2000 },
- { 0x0700, 0x1611, 0x0000 },
- { 0x0700, 0x1613, 0x0000 },
- { 0x8700, 0x1616, 0x2000 },
- { 0x0700, 0x1615, 0x0000 },
- { 0x0700, 0x1617, 0x0000 },
- { 0x8700, 0x1638, 0x6000 },
- { 0x8700, 0x1628, 0x5000 },
- { 0x8700, 0x1620, 0x4000 },
- { 0x8700, 0x161c, 0x3000 },
- { 0x8700, 0x161a, 0x2000 },
- { 0x0700, 0x1619, 0x0000 },
- { 0x0700, 0x161b, 0x0000 },
- { 0x8700, 0x161e, 0x2000 },
- { 0x0700, 0x161d, 0x0000 },
- { 0x0700, 0x161f, 0x0000 },
- { 0x8700, 0x1624, 0x3000 },
- { 0x8700, 0x1622, 0x2000 },
- { 0x0700, 0x1621, 0x0000 },
- { 0x0700, 0x1623, 0x0000 },
- { 0x8700, 0x1626, 0x2000 },
- { 0x0700, 0x1625, 0x0000 },
- { 0x0700, 0x1627, 0x0000 },
- { 0x8700, 0x1630, 0x4000 },
- { 0x8700, 0x162c, 0x3000 },
- { 0x8700, 0x162a, 0x2000 },
- { 0x0700, 0x1629, 0x0000 },
- { 0x0700, 0x162b, 0x0000 },
- { 0x8700, 0x162e, 0x2000 },
- { 0x0700, 0x162d, 0x0000 },
- { 0x0700, 0x162f, 0x0000 },
- { 0x8700, 0x1634, 0x3000 },
- { 0x8700, 0x1632, 0x2000 },
- { 0x0700, 0x1631, 0x0000 },
- { 0x0700, 0x1633, 0x0000 },
- { 0x8700, 0x1636, 0x2000 },
- { 0x0700, 0x1635, 0x0000 },
- { 0x0700, 0x1637, 0x0000 },
- { 0x8700, 0x1648, 0x5000 },
- { 0x8700, 0x1640, 0x4000 },
- { 0x8700, 0x163c, 0x3000 },
- { 0x8700, 0x163a, 0x2000 },
- { 0x0700, 0x1639, 0x0000 },
- { 0x0700, 0x163b, 0x0000 },
- { 0x8700, 0x163e, 0x2000 },
- { 0x0700, 0x163d, 0x0000 },
- { 0x0700, 0x163f, 0x0000 },
- { 0x8700, 0x1644, 0x3000 },
- { 0x8700, 0x1642, 0x2000 },
- { 0x0700, 0x1641, 0x0000 },
- { 0x0700, 0x1643, 0x0000 },
- { 0x8700, 0x1646, 0x2000 },
- { 0x0700, 0x1645, 0x0000 },
- { 0x0700, 0x1647, 0x0000 },
- { 0x8700, 0x1650, 0x4000 },
- { 0x8700, 0x164c, 0x3000 },
- { 0x8700, 0x164a, 0x2000 },
- { 0x0700, 0x1649, 0x0000 },
- { 0x0700, 0x164b, 0x0000 },
- { 0x8700, 0x164e, 0x2000 },
- { 0x0700, 0x164d, 0x0000 },
- { 0x0700, 0x164f, 0x0000 },
- { 0x8700, 0x1654, 0x3000 },
- { 0x8700, 0x1652, 0x2000 },
- { 0x0700, 0x1651, 0x0000 },
- { 0x0700, 0x1653, 0x0000 },
- { 0x8700, 0x1656, 0x2000 },
- { 0x0700, 0x1655, 0x0000 },
- { 0x0700, 0x1657, 0x0000 },
- { 0x8700, 0x16e4, 0x8000 },
- { 0x8700, 0x16a4, 0x7000 },
- { 0x8700, 0x1681, 0x6000 },
- { 0x8700, 0x1668, 0x5000 },
- { 0x8700, 0x1660, 0x4000 },
- { 0x8700, 0x165c, 0x3000 },
- { 0x8700, 0x165a, 0x2000 },
- { 0x0700, 0x1659, 0x0000 },
- { 0x0700, 0x165b, 0x0000 },
- { 0x8700, 0x165e, 0x2000 },
- { 0x0700, 0x165d, 0x0000 },
- { 0x0700, 0x165f, 0x0000 },
- { 0x8700, 0x1664, 0x3000 },
- { 0x8700, 0x1662, 0x2000 },
- { 0x0700, 0x1661, 0x0000 },
- { 0x0700, 0x1663, 0x0000 },
- { 0x8700, 0x1666, 0x2000 },
- { 0x0700, 0x1665, 0x0000 },
- { 0x0700, 0x1667, 0x0000 },
- { 0x8700, 0x1670, 0x4000 },
- { 0x8700, 0x166c, 0x3000 },
- { 0x8700, 0x166a, 0x2000 },
- { 0x0700, 0x1669, 0x0000 },
- { 0x0700, 0x166b, 0x0000 },
- { 0x9500, 0x166e, 0x2000 },
- { 0x1500, 0x166d, 0x0000 },
- { 0x0700, 0x166f, 0x0000 },
- { 0x8700, 0x1674, 0x3000 },
- { 0x8700, 0x1672, 0x2000 },
- { 0x0700, 0x1671, 0x0000 },
- { 0x0700, 0x1673, 0x0000 },
- { 0x8700, 0x1676, 0x2000 },
- { 0x0700, 0x1675, 0x0000 },
- { 0x1d00, 0x1680, 0x0000 },
- { 0x8700, 0x1691, 0x5000 },
- { 0x8700, 0x1689, 0x4000 },
- { 0x8700, 0x1685, 0x3000 },
- { 0x8700, 0x1683, 0x2000 },
- { 0x0700, 0x1682, 0x0000 },
- { 0x0700, 0x1684, 0x0000 },
- { 0x8700, 0x1687, 0x2000 },
- { 0x0700, 0x1686, 0x0000 },
- { 0x0700, 0x1688, 0x0000 },
- { 0x8700, 0x168d, 0x3000 },
- { 0x8700, 0x168b, 0x2000 },
- { 0x0700, 0x168a, 0x0000 },
- { 0x0700, 0x168c, 0x0000 },
- { 0x8700, 0x168f, 0x2000 },
- { 0x0700, 0x168e, 0x0000 },
- { 0x0700, 0x1690, 0x0000 },
- { 0x8700, 0x1699, 0x4000 },
- { 0x8700, 0x1695, 0x3000 },
- { 0x8700, 0x1693, 0x2000 },
- { 0x0700, 0x1692, 0x0000 },
- { 0x0700, 0x1694, 0x0000 },
- { 0x8700, 0x1697, 0x2000 },
- { 0x0700, 0x1696, 0x0000 },
- { 0x0700, 0x1698, 0x0000 },
- { 0x8700, 0x16a0, 0x3000 },
- { 0x9600, 0x169b, 0x2000 },
- { 0x0700, 0x169a, 0x0000 },
- { 0x1200, 0x169c, 0x0000 },
- { 0x8700, 0x16a2, 0x2000 },
- { 0x0700, 0x16a1, 0x0000 },
- { 0x0700, 0x16a3, 0x0000 },
- { 0x8700, 0x16c4, 0x6000 },
- { 0x8700, 0x16b4, 0x5000 },
- { 0x8700, 0x16ac, 0x4000 },
- { 0x8700, 0x16a8, 0x3000 },
- { 0x8700, 0x16a6, 0x2000 },
- { 0x0700, 0x16a5, 0x0000 },
- { 0x0700, 0x16a7, 0x0000 },
- { 0x8700, 0x16aa, 0x2000 },
- { 0x0700, 0x16a9, 0x0000 },
- { 0x0700, 0x16ab, 0x0000 },
- { 0x8700, 0x16b0, 0x3000 },
- { 0x8700, 0x16ae, 0x2000 },
- { 0x0700, 0x16ad, 0x0000 },
- { 0x0700, 0x16af, 0x0000 },
- { 0x8700, 0x16b2, 0x2000 },
- { 0x0700, 0x16b1, 0x0000 },
- { 0x0700, 0x16b3, 0x0000 },
- { 0x8700, 0x16bc, 0x4000 },
- { 0x8700, 0x16b8, 0x3000 },
- { 0x8700, 0x16b6, 0x2000 },
- { 0x0700, 0x16b5, 0x0000 },
- { 0x0700, 0x16b7, 0x0000 },
- { 0x8700, 0x16ba, 0x2000 },
- { 0x0700, 0x16b9, 0x0000 },
- { 0x0700, 0x16bb, 0x0000 },
- { 0x8700, 0x16c0, 0x3000 },
- { 0x8700, 0x16be, 0x2000 },
- { 0x0700, 0x16bd, 0x0000 },
- { 0x0700, 0x16bf, 0x0000 },
- { 0x8700, 0x16c2, 0x2000 },
- { 0x0700, 0x16c1, 0x0000 },
- { 0x0700, 0x16c3, 0x0000 },
- { 0x8700, 0x16d4, 0x5000 },
- { 0x8700, 0x16cc, 0x4000 },
- { 0x8700, 0x16c8, 0x3000 },
- { 0x8700, 0x16c6, 0x2000 },
- { 0x0700, 0x16c5, 0x0000 },
- { 0x0700, 0x16c7, 0x0000 },
- { 0x8700, 0x16ca, 0x2000 },
- { 0x0700, 0x16c9, 0x0000 },
- { 0x0700, 0x16cb, 0x0000 },
- { 0x8700, 0x16d0, 0x3000 },
- { 0x8700, 0x16ce, 0x2000 },
- { 0x0700, 0x16cd, 0x0000 },
- { 0x0700, 0x16cf, 0x0000 },
- { 0x8700, 0x16d2, 0x2000 },
- { 0x0700, 0x16d1, 0x0000 },
- { 0x0700, 0x16d3, 0x0000 },
- { 0x8700, 0x16dc, 0x4000 },
- { 0x8700, 0x16d8, 0x3000 },
- { 0x8700, 0x16d6, 0x2000 },
- { 0x0700, 0x16d5, 0x0000 },
- { 0x0700, 0x16d7, 0x0000 },
- { 0x8700, 0x16da, 0x2000 },
- { 0x0700, 0x16d9, 0x0000 },
- { 0x0700, 0x16db, 0x0000 },
- { 0x8700, 0x16e0, 0x3000 },
- { 0x8700, 0x16de, 0x2000 },
- { 0x0700, 0x16dd, 0x0000 },
- { 0x0700, 0x16df, 0x0000 },
- { 0x8700, 0x16e2, 0x2000 },
- { 0x0700, 0x16e1, 0x0000 },
- { 0x0700, 0x16e3, 0x0000 },
- { 0x8700, 0x1748, 0x7000 },
- { 0x8c00, 0x1714, 0x6000 },
- { 0x8700, 0x1703, 0x5000 },
- { 0x9500, 0x16ec, 0x4000 },
- { 0x8700, 0x16e8, 0x3000 },
- { 0x8700, 0x16e6, 0x2000 },
- { 0x0700, 0x16e5, 0x0000 },
- { 0x0700, 0x16e7, 0x0000 },
- { 0x8700, 0x16ea, 0x2000 },
- { 0x0700, 0x16e9, 0x0000 },
- { 0x1500, 0x16eb, 0x0000 },
- { 0x8e00, 0x16f0, 0x3000 },
- { 0x8e00, 0x16ee, 0x2000 },
- { 0x1500, 0x16ed, 0x0000 },
- { 0x0e00, 0x16ef, 0x0000 },
- { 0x8700, 0x1701, 0x2000 },
- { 0x0700, 0x1700, 0x0000 },
- { 0x0700, 0x1702, 0x0000 },
- { 0x8700, 0x170b, 0x4000 },
- { 0x8700, 0x1707, 0x3000 },
- { 0x8700, 0x1705, 0x2000 },
- { 0x0700, 0x1704, 0x0000 },
- { 0x0700, 0x1706, 0x0000 },
- { 0x8700, 0x1709, 0x2000 },
- { 0x0700, 0x1708, 0x0000 },
- { 0x0700, 0x170a, 0x0000 },
- { 0x8700, 0x1710, 0x3000 },
- { 0x8700, 0x170e, 0x2000 },
- { 0x0700, 0x170c, 0x0000 },
- { 0x0700, 0x170f, 0x0000 },
- { 0x8c00, 0x1712, 0x2000 },
- { 0x0700, 0x1711, 0x0000 },
- { 0x0c00, 0x1713, 0x0000 },
- { 0x8700, 0x172f, 0x5000 },
- { 0x8700, 0x1727, 0x4000 },
- { 0x8700, 0x1723, 0x3000 },
- { 0x8700, 0x1721, 0x2000 },
- { 0x0700, 0x1720, 0x0000 },
- { 0x0700, 0x1722, 0x0000 },
- { 0x8700, 0x1725, 0x2000 },
- { 0x0700, 0x1724, 0x0000 },
- { 0x0700, 0x1726, 0x0000 },
- { 0x8700, 0x172b, 0x3000 },
- { 0x8700, 0x1729, 0x2000 },
- { 0x0700, 0x1728, 0x0000 },
- { 0x0700, 0x172a, 0x0000 },
- { 0x8700, 0x172d, 0x2000 },
- { 0x0700, 0x172c, 0x0000 },
- { 0x0700, 0x172e, 0x0000 },
- { 0x8700, 0x1740, 0x4000 },
- { 0x8c00, 0x1733, 0x3000 },
- { 0x8700, 0x1731, 0x2000 },
- { 0x0700, 0x1730, 0x0000 },
- { 0x0c00, 0x1732, 0x0000 },
- { 0x9500, 0x1735, 0x2000 },
- { 0x0c00, 0x1734, 0x0000 },
- { 0x1500, 0x1736, 0x0000 },
- { 0x8700, 0x1744, 0x3000 },
- { 0x8700, 0x1742, 0x2000 },
- { 0x0700, 0x1741, 0x0000 },
- { 0x0700, 0x1743, 0x0000 },
- { 0x8700, 0x1746, 0x2000 },
- { 0x0700, 0x1745, 0x0000 },
- { 0x0700, 0x1747, 0x0000 },
- { 0x8700, 0x1782, 0x6000 },
- { 0x8700, 0x1764, 0x5000 },
- { 0x8700, 0x1750, 0x4000 },
- { 0x8700, 0x174c, 0x3000 },
- { 0x8700, 0x174a, 0x2000 },
- { 0x0700, 0x1749, 0x0000 },
- { 0x0700, 0x174b, 0x0000 },
- { 0x8700, 0x174e, 0x2000 },
- { 0x0700, 0x174d, 0x0000 },
- { 0x0700, 0x174f, 0x0000 },
- { 0x8700, 0x1760, 0x3000 },
- { 0x8c00, 0x1752, 0x2000 },
- { 0x0700, 0x1751, 0x0000 },
- { 0x0c00, 0x1753, 0x0000 },
- { 0x8700, 0x1762, 0x2000 },
- { 0x0700, 0x1761, 0x0000 },
- { 0x0700, 0x1763, 0x0000 },
- { 0x8700, 0x176c, 0x4000 },
- { 0x8700, 0x1768, 0x3000 },
- { 0x8700, 0x1766, 0x2000 },
- { 0x0700, 0x1765, 0x0000 },
- { 0x0700, 0x1767, 0x0000 },
- { 0x8700, 0x176a, 0x2000 },
- { 0x0700, 0x1769, 0x0000 },
- { 0x0700, 0x176b, 0x0000 },
- { 0x8c00, 0x1772, 0x3000 },
- { 0x8700, 0x176f, 0x2000 },
- { 0x0700, 0x176e, 0x0000 },
- { 0x0700, 0x1770, 0x0000 },
- { 0x8700, 0x1780, 0x2000 },
- { 0x0c00, 0x1773, 0x0000 },
- { 0x0700, 0x1781, 0x0000 },
- { 0x8700, 0x1792, 0x5000 },
- { 0x8700, 0x178a, 0x4000 },
- { 0x8700, 0x1786, 0x3000 },
- { 0x8700, 0x1784, 0x2000 },
- { 0x0700, 0x1783, 0x0000 },
- { 0x0700, 0x1785, 0x0000 },
- { 0x8700, 0x1788, 0x2000 },
- { 0x0700, 0x1787, 0x0000 },
- { 0x0700, 0x1789, 0x0000 },
- { 0x8700, 0x178e, 0x3000 },
- { 0x8700, 0x178c, 0x2000 },
- { 0x0700, 0x178b, 0x0000 },
- { 0x0700, 0x178d, 0x0000 },
- { 0x8700, 0x1790, 0x2000 },
- { 0x0700, 0x178f, 0x0000 },
- { 0x0700, 0x1791, 0x0000 },
- { 0x8700, 0x179a, 0x4000 },
- { 0x8700, 0x1796, 0x3000 },
- { 0x8700, 0x1794, 0x2000 },
- { 0x0700, 0x1793, 0x0000 },
- { 0x0700, 0x1795, 0x0000 },
- { 0x8700, 0x1798, 0x2000 },
- { 0x0700, 0x1797, 0x0000 },
- { 0x0700, 0x1799, 0x0000 },
- { 0x8700, 0x179e, 0x3000 },
- { 0x8700, 0x179c, 0x2000 },
- { 0x0700, 0x179b, 0x0000 },
- { 0x0700, 0x179d, 0x0000 },
- { 0x8700, 0x17a0, 0x2000 },
- { 0x0700, 0x179f, 0x0000 },
- { 0x0700, 0x17a1, 0x0000 },
- { 0x8700, 0x1915, 0x9000 },
- { 0x8700, 0x1837, 0x8000 },
- { 0x8d00, 0x17e4, 0x7000 },
- { 0x8a00, 0x17c2, 0x6000 },
- { 0x8700, 0x17b2, 0x5000 },
- { 0x8700, 0x17aa, 0x4000 },
- { 0x8700, 0x17a6, 0x3000 },
- { 0x8700, 0x17a4, 0x2000 },
- { 0x0700, 0x17a3, 0x0000 },
- { 0x0700, 0x17a5, 0x0000 },
- { 0x8700, 0x17a8, 0x2000 },
- { 0x0700, 0x17a7, 0x0000 },
- { 0x0700, 0x17a9, 0x0000 },
- { 0x8700, 0x17ae, 0x3000 },
- { 0x8700, 0x17ac, 0x2000 },
- { 0x0700, 0x17ab, 0x0000 },
- { 0x0700, 0x17ad, 0x0000 },
- { 0x8700, 0x17b0, 0x2000 },
- { 0x0700, 0x17af, 0x0000 },
- { 0x0700, 0x17b1, 0x0000 },
- { 0x8c00, 0x17ba, 0x4000 },
- { 0x8a00, 0x17b6, 0x3000 },
- { 0x8100, 0x17b4, 0x2000 },
- { 0x0700, 0x17b3, 0x0000 },
- { 0x0100, 0x17b5, 0x0000 },
- { 0x8c00, 0x17b8, 0x2000 },
- { 0x0c00, 0x17b7, 0x0000 },
- { 0x0c00, 0x17b9, 0x0000 },
- { 0x8a00, 0x17be, 0x3000 },
- { 0x8c00, 0x17bc, 0x2000 },
- { 0x0c00, 0x17bb, 0x0000 },
- { 0x0c00, 0x17bd, 0x0000 },
- { 0x8a00, 0x17c0, 0x2000 },
- { 0x0a00, 0x17bf, 0x0000 },
- { 0x0a00, 0x17c1, 0x0000 },
- { 0x8c00, 0x17d2, 0x5000 },
- { 0x8c00, 0x17ca, 0x4000 },
- { 0x8c00, 0x17c6, 0x3000 },
- { 0x8a00, 0x17c4, 0x2000 },
- { 0x0a00, 0x17c3, 0x0000 },
- { 0x0a00, 0x17c5, 0x0000 },
- { 0x8a00, 0x17c8, 0x2000 },
- { 0x0a00, 0x17c7, 0x0000 },
- { 0x0c00, 0x17c9, 0x0000 },
- { 0x8c00, 0x17ce, 0x3000 },
- { 0x8c00, 0x17cc, 0x2000 },
- { 0x0c00, 0x17cb, 0x0000 },
- { 0x0c00, 0x17cd, 0x0000 },
- { 0x8c00, 0x17d0, 0x2000 },
- { 0x0c00, 0x17cf, 0x0000 },
- { 0x0c00, 0x17d1, 0x0000 },
- { 0x9500, 0x17da, 0x4000 },
- { 0x9500, 0x17d6, 0x3000 },
- { 0x9500, 0x17d4, 0x2000 },
- { 0x0c00, 0x17d3, 0x0000 },
- { 0x1500, 0x17d5, 0x0000 },
- { 0x9500, 0x17d8, 0x2000 },
- { 0x0600, 0x17d7, 0x0000 },
- { 0x1500, 0x17d9, 0x0000 },
- { 0x8d00, 0x17e0, 0x3000 },
- { 0x8700, 0x17dc, 0x2000 },
- { 0x1700, 0x17db, 0x0000 },
- { 0x0c00, 0x17dd, 0x0000 },
- { 0x8d00, 0x17e2, 0x2000 },
- { 0x0d00, 0x17e1, 0x0000 },
- { 0x0d00, 0x17e3, 0x0000 },
- { 0x8d00, 0x1811, 0x6000 },
- { 0x9500, 0x1800, 0x5000 },
- { 0x8f00, 0x17f2, 0x4000 },
- { 0x8d00, 0x17e8, 0x3000 },
- { 0x8d00, 0x17e6, 0x2000 },
- { 0x0d00, 0x17e5, 0x0000 },
- { 0x0d00, 0x17e7, 0x0000 },
- { 0x8f00, 0x17f0, 0x2000 },
- { 0x0d00, 0x17e9, 0x0000 },
- { 0x0f00, 0x17f1, 0x0000 },
- { 0x8f00, 0x17f6, 0x3000 },
- { 0x8f00, 0x17f4, 0x2000 },
- { 0x0f00, 0x17f3, 0x0000 },
- { 0x0f00, 0x17f5, 0x0000 },
- { 0x8f00, 0x17f8, 0x2000 },
- { 0x0f00, 0x17f7, 0x0000 },
- { 0x0f00, 0x17f9, 0x0000 },
- { 0x9500, 0x1808, 0x4000 },
- { 0x9500, 0x1804, 0x3000 },
- { 0x9500, 0x1802, 0x2000 },
- { 0x1500, 0x1801, 0x0000 },
- { 0x1500, 0x1803, 0x0000 },
- { 0x9100, 0x1806, 0x2000 },
- { 0x1500, 0x1805, 0x0000 },
- { 0x1500, 0x1807, 0x0000 },
- { 0x8c00, 0x180c, 0x3000 },
- { 0x9500, 0x180a, 0x2000 },
- { 0x1500, 0x1809, 0x0000 },
- { 0x0c00, 0x180b, 0x0000 },
- { 0x9d00, 0x180e, 0x2000 },
- { 0x0c00, 0x180d, 0x0000 },
- { 0x0d00, 0x1810, 0x0000 },
- { 0x8700, 0x1827, 0x5000 },
- { 0x8d00, 0x1819, 0x4000 },
- { 0x8d00, 0x1815, 0x3000 },
- { 0x8d00, 0x1813, 0x2000 },
- { 0x0d00, 0x1812, 0x0000 },
- { 0x0d00, 0x1814, 0x0000 },
- { 0x8d00, 0x1817, 0x2000 },
- { 0x0d00, 0x1816, 0x0000 },
- { 0x0d00, 0x1818, 0x0000 },
- { 0x8700, 0x1823, 0x3000 },
- { 0x8700, 0x1821, 0x2000 },
- { 0x0700, 0x1820, 0x0000 },
- { 0x0700, 0x1822, 0x0000 },
- { 0x8700, 0x1825, 0x2000 },
- { 0x0700, 0x1824, 0x0000 },
- { 0x0700, 0x1826, 0x0000 },
- { 0x8700, 0x182f, 0x4000 },
- { 0x8700, 0x182b, 0x3000 },
- { 0x8700, 0x1829, 0x2000 },
- { 0x0700, 0x1828, 0x0000 },
- { 0x0700, 0x182a, 0x0000 },
- { 0x8700, 0x182d, 0x2000 },
- { 0x0700, 0x182c, 0x0000 },
- { 0x0700, 0x182e, 0x0000 },
- { 0x8700, 0x1833, 0x3000 },
- { 0x8700, 0x1831, 0x2000 },
- { 0x0700, 0x1830, 0x0000 },
- { 0x0700, 0x1832, 0x0000 },
- { 0x8700, 0x1835, 0x2000 },
- { 0x0700, 0x1834, 0x0000 },
- { 0x0700, 0x1836, 0x0000 },
- { 0x8700, 0x1877, 0x7000 },
- { 0x8700, 0x1857, 0x6000 },
- { 0x8700, 0x1847, 0x5000 },
- { 0x8700, 0x183f, 0x4000 },
- { 0x8700, 0x183b, 0x3000 },
- { 0x8700, 0x1839, 0x2000 },
- { 0x0700, 0x1838, 0x0000 },
- { 0x0700, 0x183a, 0x0000 },
- { 0x8700, 0x183d, 0x2000 },
- { 0x0700, 0x183c, 0x0000 },
- { 0x0700, 0x183e, 0x0000 },
- { 0x8600, 0x1843, 0x3000 },
- { 0x8700, 0x1841, 0x2000 },
- { 0x0700, 0x1840, 0x0000 },
- { 0x0700, 0x1842, 0x0000 },
- { 0x8700, 0x1845, 0x2000 },
- { 0x0700, 0x1844, 0x0000 },
- { 0x0700, 0x1846, 0x0000 },
- { 0x8700, 0x184f, 0x4000 },
- { 0x8700, 0x184b, 0x3000 },
- { 0x8700, 0x1849, 0x2000 },
- { 0x0700, 0x1848, 0x0000 },
- { 0x0700, 0x184a, 0x0000 },
- { 0x8700, 0x184d, 0x2000 },
- { 0x0700, 0x184c, 0x0000 },
- { 0x0700, 0x184e, 0x0000 },
- { 0x8700, 0x1853, 0x3000 },
- { 0x8700, 0x1851, 0x2000 },
- { 0x0700, 0x1850, 0x0000 },
- { 0x0700, 0x1852, 0x0000 },
- { 0x8700, 0x1855, 0x2000 },
- { 0x0700, 0x1854, 0x0000 },
- { 0x0700, 0x1856, 0x0000 },
- { 0x8700, 0x1867, 0x5000 },
- { 0x8700, 0x185f, 0x4000 },
- { 0x8700, 0x185b, 0x3000 },
- { 0x8700, 0x1859, 0x2000 },
- { 0x0700, 0x1858, 0x0000 },
- { 0x0700, 0x185a, 0x0000 },
- { 0x8700, 0x185d, 0x2000 },
- { 0x0700, 0x185c, 0x0000 },
- { 0x0700, 0x185e, 0x0000 },
- { 0x8700, 0x1863, 0x3000 },
- { 0x8700, 0x1861, 0x2000 },
- { 0x0700, 0x1860, 0x0000 },
- { 0x0700, 0x1862, 0x0000 },
- { 0x8700, 0x1865, 0x2000 },
- { 0x0700, 0x1864, 0x0000 },
- { 0x0700, 0x1866, 0x0000 },
- { 0x8700, 0x186f, 0x4000 },
- { 0x8700, 0x186b, 0x3000 },
- { 0x8700, 0x1869, 0x2000 },
- { 0x0700, 0x1868, 0x0000 },
- { 0x0700, 0x186a, 0x0000 },
- { 0x8700, 0x186d, 0x2000 },
- { 0x0700, 0x186c, 0x0000 },
- { 0x0700, 0x186e, 0x0000 },
- { 0x8700, 0x1873, 0x3000 },
- { 0x8700, 0x1871, 0x2000 },
- { 0x0700, 0x1870, 0x0000 },
- { 0x0700, 0x1872, 0x0000 },
- { 0x8700, 0x1875, 0x2000 },
- { 0x0700, 0x1874, 0x0000 },
- { 0x0700, 0x1876, 0x0000 },
- { 0x8700, 0x189f, 0x6000 },
- { 0x8700, 0x188f, 0x5000 },
- { 0x8700, 0x1887, 0x4000 },
- { 0x8700, 0x1883, 0x3000 },
- { 0x8700, 0x1881, 0x2000 },
- { 0x0700, 0x1880, 0x0000 },
- { 0x0700, 0x1882, 0x0000 },
- { 0x8700, 0x1885, 0x2000 },
- { 0x0700, 0x1884, 0x0000 },
- { 0x0700, 0x1886, 0x0000 },
- { 0x8700, 0x188b, 0x3000 },
- { 0x8700, 0x1889, 0x2000 },
- { 0x0700, 0x1888, 0x0000 },
- { 0x0700, 0x188a, 0x0000 },
- { 0x8700, 0x188d, 0x2000 },
- { 0x0700, 0x188c, 0x0000 },
- { 0x0700, 0x188e, 0x0000 },
- { 0x8700, 0x1897, 0x4000 },
- { 0x8700, 0x1893, 0x3000 },
- { 0x8700, 0x1891, 0x2000 },
- { 0x0700, 0x1890, 0x0000 },
- { 0x0700, 0x1892, 0x0000 },
- { 0x8700, 0x1895, 0x2000 },
- { 0x0700, 0x1894, 0x0000 },
- { 0x0700, 0x1896, 0x0000 },
- { 0x8700, 0x189b, 0x3000 },
- { 0x8700, 0x1899, 0x2000 },
- { 0x0700, 0x1898, 0x0000 },
- { 0x0700, 0x189a, 0x0000 },
- { 0x8700, 0x189d, 0x2000 },
- { 0x0700, 0x189c, 0x0000 },
- { 0x0700, 0x189e, 0x0000 },
- { 0x8700, 0x1905, 0x5000 },
- { 0x8700, 0x18a7, 0x4000 },
- { 0x8700, 0x18a3, 0x3000 },
- { 0x8700, 0x18a1, 0x2000 },
- { 0x0700, 0x18a0, 0x0000 },
- { 0x0700, 0x18a2, 0x0000 },
- { 0x8700, 0x18a5, 0x2000 },
- { 0x0700, 0x18a4, 0x0000 },
- { 0x0700, 0x18a6, 0x0000 },
- { 0x8700, 0x1901, 0x3000 },
- { 0x8c00, 0x18a9, 0x2000 },
- { 0x0700, 0x18a8, 0x0000 },
- { 0x0700, 0x1900, 0x0000 },
- { 0x8700, 0x1903, 0x2000 },
- { 0x0700, 0x1902, 0x0000 },
- { 0x0700, 0x1904, 0x0000 },
- { 0x8700, 0x190d, 0x4000 },
- { 0x8700, 0x1909, 0x3000 },
- { 0x8700, 0x1907, 0x2000 },
- { 0x0700, 0x1906, 0x0000 },
- { 0x0700, 0x1908, 0x0000 },
- { 0x8700, 0x190b, 0x2000 },
- { 0x0700, 0x190a, 0x0000 },
- { 0x0700, 0x190c, 0x0000 },
- { 0x8700, 0x1911, 0x3000 },
- { 0x8700, 0x190f, 0x2000 },
- { 0x0700, 0x190e, 0x0000 },
- { 0x0700, 0x1910, 0x0000 },
- { 0x8700, 0x1913, 0x2000 },
- { 0x0700, 0x1912, 0x0000 },
- { 0x0700, 0x1914, 0x0000 },
- { 0x8500, 0x1d10, 0x8000 },
- { 0x8700, 0x1963, 0x7000 },
- { 0x9a00, 0x1940, 0x6000 },
- { 0x8c00, 0x1928, 0x5000 },
- { 0x8c00, 0x1920, 0x4000 },
- { 0x8700, 0x1919, 0x3000 },
- { 0x8700, 0x1917, 0x2000 },
- { 0x0700, 0x1916, 0x0000 },
- { 0x0700, 0x1918, 0x0000 },
- { 0x8700, 0x191b, 0x2000 },
- { 0x0700, 0x191a, 0x0000 },
- { 0x0700, 0x191c, 0x0000 },
- { 0x8a00, 0x1924, 0x3000 },
- { 0x8c00, 0x1922, 0x2000 },
- { 0x0c00, 0x1921, 0x0000 },
- { 0x0a00, 0x1923, 0x0000 },
- { 0x8a00, 0x1926, 0x2000 },
- { 0x0a00, 0x1925, 0x0000 },
- { 0x0c00, 0x1927, 0x0000 },
- { 0x8a00, 0x1934, 0x4000 },
- { 0x8a00, 0x1930, 0x3000 },
- { 0x8a00, 0x192a, 0x2000 },
- { 0x0a00, 0x1929, 0x0000 },
- { 0x0a00, 0x192b, 0x0000 },
- { 0x8c00, 0x1932, 0x2000 },
- { 0x0a00, 0x1931, 0x0000 },
- { 0x0a00, 0x1933, 0x0000 },
- { 0x8a00, 0x1938, 0x3000 },
- { 0x8a00, 0x1936, 0x2000 },
- { 0x0a00, 0x1935, 0x0000 },
- { 0x0a00, 0x1937, 0x0000 },
- { 0x8c00, 0x193a, 0x2000 },
- { 0x0c00, 0x1939, 0x0000 },
- { 0x0c00, 0x193b, 0x0000 },
- { 0x8700, 0x1953, 0x5000 },
- { 0x8d00, 0x194b, 0x4000 },
- { 0x8d00, 0x1947, 0x3000 },
- { 0x9500, 0x1945, 0x2000 },
- { 0x1500, 0x1944, 0x0000 },
- { 0x0d00, 0x1946, 0x0000 },
- { 0x8d00, 0x1949, 0x2000 },
- { 0x0d00, 0x1948, 0x0000 },
- { 0x0d00, 0x194a, 0x0000 },
- { 0x8d00, 0x194f, 0x3000 },
- { 0x8d00, 0x194d, 0x2000 },
- { 0x0d00, 0x194c, 0x0000 },
- { 0x0d00, 0x194e, 0x0000 },
- { 0x8700, 0x1951, 0x2000 },
- { 0x0700, 0x1950, 0x0000 },
- { 0x0700, 0x1952, 0x0000 },
- { 0x8700, 0x195b, 0x4000 },
- { 0x8700, 0x1957, 0x3000 },
- { 0x8700, 0x1955, 0x2000 },
- { 0x0700, 0x1954, 0x0000 },
- { 0x0700, 0x1956, 0x0000 },
- { 0x8700, 0x1959, 0x2000 },
- { 0x0700, 0x1958, 0x0000 },
- { 0x0700, 0x195a, 0x0000 },
- { 0x8700, 0x195f, 0x3000 },
- { 0x8700, 0x195d, 0x2000 },
- { 0x0700, 0x195c, 0x0000 },
- { 0x0700, 0x195e, 0x0000 },
- { 0x8700, 0x1961, 0x2000 },
- { 0x0700, 0x1960, 0x0000 },
- { 0x0700, 0x1962, 0x0000 },
- { 0x9a00, 0x19f0, 0x6000 },
- { 0x9a00, 0x19e0, 0x5000 },
- { 0x8700, 0x196b, 0x4000 },
- { 0x8700, 0x1967, 0x3000 },
- { 0x8700, 0x1965, 0x2000 },
- { 0x0700, 0x1964, 0x0000 },
- { 0x0700, 0x1966, 0x0000 },
- { 0x8700, 0x1969, 0x2000 },
- { 0x0700, 0x1968, 0x0000 },
- { 0x0700, 0x196a, 0x0000 },
- { 0x8700, 0x1971, 0x3000 },
- { 0x8700, 0x196d, 0x2000 },
- { 0x0700, 0x196c, 0x0000 },
- { 0x0700, 0x1970, 0x0000 },
- { 0x8700, 0x1973, 0x2000 },
- { 0x0700, 0x1972, 0x0000 },
- { 0x0700, 0x1974, 0x0000 },
- { 0x9a00, 0x19e8, 0x4000 },
- { 0x9a00, 0x19e4, 0x3000 },
- { 0x9a00, 0x19e2, 0x2000 },
- { 0x1a00, 0x19e1, 0x0000 },
- { 0x1a00, 0x19e3, 0x0000 },
- { 0x9a00, 0x19e6, 0x2000 },
- { 0x1a00, 0x19e5, 0x0000 },
- { 0x1a00, 0x19e7, 0x0000 },
- { 0x9a00, 0x19ec, 0x3000 },
- { 0x9a00, 0x19ea, 0x2000 },
- { 0x1a00, 0x19e9, 0x0000 },
- { 0x1a00, 0x19eb, 0x0000 },
- { 0x9a00, 0x19ee, 0x2000 },
- { 0x1a00, 0x19ed, 0x0000 },
- { 0x1a00, 0x19ef, 0x0000 },
- { 0x8500, 0x1d00, 0x5000 },
- { 0x9a00, 0x19f8, 0x4000 },
- { 0x9a00, 0x19f4, 0x3000 },
- { 0x9a00, 0x19f2, 0x2000 },
- { 0x1a00, 0x19f1, 0x0000 },
- { 0x1a00, 0x19f3, 0x0000 },
- { 0x9a00, 0x19f6, 0x2000 },
- { 0x1a00, 0x19f5, 0x0000 },
- { 0x1a00, 0x19f7, 0x0000 },
- { 0x9a00, 0x19fc, 0x3000 },
- { 0x9a00, 0x19fa, 0x2000 },
- { 0x1a00, 0x19f9, 0x0000 },
- { 0x1a00, 0x19fb, 0x0000 },
- { 0x9a00, 0x19fe, 0x2000 },
- { 0x1a00, 0x19fd, 0x0000 },
- { 0x1a00, 0x19ff, 0x0000 },
- { 0x8500, 0x1d08, 0x4000 },
- { 0x8500, 0x1d04, 0x3000 },
- { 0x8500, 0x1d02, 0x2000 },
- { 0x0500, 0x1d01, 0x0000 },
- { 0x0500, 0x1d03, 0x0000 },
- { 0x8500, 0x1d06, 0x2000 },
- { 0x0500, 0x1d05, 0x0000 },
- { 0x0500, 0x1d07, 0x0000 },
- { 0x8500, 0x1d0c, 0x3000 },
- { 0x8500, 0x1d0a, 0x2000 },
- { 0x0500, 0x1d09, 0x0000 },
- { 0x0500, 0x1d0b, 0x0000 },
- { 0x8500, 0x1d0e, 0x2000 },
- { 0x0500, 0x1d0d, 0x0000 },
- { 0x0500, 0x1d0f, 0x0000 },
- { 0x8600, 0x1d50, 0x7000 },
- { 0x8600, 0x1d30, 0x6000 },
- { 0x8500, 0x1d20, 0x5000 },
- { 0x8500, 0x1d18, 0x4000 },
- { 0x8500, 0x1d14, 0x3000 },
- { 0x8500, 0x1d12, 0x2000 },
- { 0x0500, 0x1d11, 0x0000 },
- { 0x0500, 0x1d13, 0x0000 },
- { 0x8500, 0x1d16, 0x2000 },
- { 0x0500, 0x1d15, 0x0000 },
- { 0x0500, 0x1d17, 0x0000 },
- { 0x8500, 0x1d1c, 0x3000 },
- { 0x8500, 0x1d1a, 0x2000 },
- { 0x0500, 0x1d19, 0x0000 },
- { 0x0500, 0x1d1b, 0x0000 },
- { 0x8500, 0x1d1e, 0x2000 },
- { 0x0500, 0x1d1d, 0x0000 },
- { 0x0500, 0x1d1f, 0x0000 },
- { 0x8500, 0x1d28, 0x4000 },
- { 0x8500, 0x1d24, 0x3000 },
- { 0x8500, 0x1d22, 0x2000 },
- { 0x0500, 0x1d21, 0x0000 },
- { 0x0500, 0x1d23, 0x0000 },
- { 0x8500, 0x1d26, 0x2000 },
- { 0x0500, 0x1d25, 0x0000 },
- { 0x0500, 0x1d27, 0x0000 },
- { 0x8600, 0x1d2c, 0x3000 },
- { 0x8500, 0x1d2a, 0x2000 },
- { 0x0500, 0x1d29, 0x0000 },
- { 0x0500, 0x1d2b, 0x0000 },
- { 0x8600, 0x1d2e, 0x2000 },
- { 0x0600, 0x1d2d, 0x0000 },
- { 0x0600, 0x1d2f, 0x0000 },
- { 0x8600, 0x1d40, 0x5000 },
- { 0x8600, 0x1d38, 0x4000 },
- { 0x8600, 0x1d34, 0x3000 },
- { 0x8600, 0x1d32, 0x2000 },
- { 0x0600, 0x1d31, 0x0000 },
- { 0x0600, 0x1d33, 0x0000 },
- { 0x8600, 0x1d36, 0x2000 },
- { 0x0600, 0x1d35, 0x0000 },
- { 0x0600, 0x1d37, 0x0000 },
- { 0x8600, 0x1d3c, 0x3000 },
- { 0x8600, 0x1d3a, 0x2000 },
- { 0x0600, 0x1d39, 0x0000 },
- { 0x0600, 0x1d3b, 0x0000 },
- { 0x8600, 0x1d3e, 0x2000 },
- { 0x0600, 0x1d3d, 0x0000 },
- { 0x0600, 0x1d3f, 0x0000 },
- { 0x8600, 0x1d48, 0x4000 },
- { 0x8600, 0x1d44, 0x3000 },
- { 0x8600, 0x1d42, 0x2000 },
- { 0x0600, 0x1d41, 0x0000 },
- { 0x0600, 0x1d43, 0x0000 },
- { 0x8600, 0x1d46, 0x2000 },
- { 0x0600, 0x1d45, 0x0000 },
- { 0x0600, 0x1d47, 0x0000 },
- { 0x8600, 0x1d4c, 0x3000 },
- { 0x8600, 0x1d4a, 0x2000 },
- { 0x0600, 0x1d49, 0x0000 },
- { 0x0600, 0x1d4b, 0x0000 },
- { 0x8600, 0x1d4e, 0x2000 },
- { 0x0600, 0x1d4d, 0x0000 },
- { 0x0600, 0x1d4f, 0x0000 },
- { 0x8900, 0x1e04, 0x6001 },
- { 0x8600, 0x1d60, 0x5000 },
- { 0x8600, 0x1d58, 0x4000 },
- { 0x8600, 0x1d54, 0x3000 },
- { 0x8600, 0x1d52, 0x2000 },
- { 0x0600, 0x1d51, 0x0000 },
- { 0x0600, 0x1d53, 0x0000 },
- { 0x8600, 0x1d56, 0x2000 },
- { 0x0600, 0x1d55, 0x0000 },
- { 0x0600, 0x1d57, 0x0000 },
- { 0x8600, 0x1d5c, 0x3000 },
- { 0x8600, 0x1d5a, 0x2000 },
- { 0x0600, 0x1d59, 0x0000 },
- { 0x0600, 0x1d5b, 0x0000 },
- { 0x8600, 0x1d5e, 0x2000 },
- { 0x0600, 0x1d5d, 0x0000 },
- { 0x0600, 0x1d5f, 0x0000 },
- { 0x8500, 0x1d68, 0x4000 },
- { 0x8500, 0x1d64, 0x3000 },
- { 0x8500, 0x1d62, 0x2000 },
- { 0x0600, 0x1d61, 0x0000 },
- { 0x0500, 0x1d63, 0x0000 },
- { 0x8500, 0x1d66, 0x2000 },
- { 0x0500, 0x1d65, 0x0000 },
- { 0x0500, 0x1d67, 0x0000 },
- { 0x8900, 0x1e00, 0x3001 },
- { 0x8500, 0x1d6a, 0x2000 },
- { 0x0500, 0x1d69, 0x0000 },
- { 0x0500, 0x1d6b, 0x0000 },
- { 0x8900, 0x1e02, 0x2001 },
- { 0x0500, 0x1e01, 0x0fff },
- { 0x0500, 0x1e03, 0x0fff },
- { 0x8900, 0x1e14, 0x5001 },
- { 0x8900, 0x1e0c, 0x4001 },
- { 0x8900, 0x1e08, 0x3001 },
- { 0x8900, 0x1e06, 0x2001 },
- { 0x0500, 0x1e05, 0x0fff },
- { 0x0500, 0x1e07, 0x0fff },
- { 0x8900, 0x1e0a, 0x2001 },
- { 0x0500, 0x1e09, 0x0fff },
- { 0x0500, 0x1e0b, 0x0fff },
- { 0x8900, 0x1e10, 0x3001 },
- { 0x8900, 0x1e0e, 0x2001 },
- { 0x0500, 0x1e0d, 0x0fff },
- { 0x0500, 0x1e0f, 0x0fff },
- { 0x8900, 0x1e12, 0x2001 },
- { 0x0500, 0x1e11, 0x0fff },
- { 0x0500, 0x1e13, 0x0fff },
- { 0x8900, 0x1e1c, 0x4001 },
- { 0x8900, 0x1e18, 0x3001 },
- { 0x8900, 0x1e16, 0x2001 },
- { 0x0500, 0x1e15, 0x0fff },
- { 0x0500, 0x1e17, 0x0fff },
- { 0x8900, 0x1e1a, 0x2001 },
- { 0x0500, 0x1e19, 0x0fff },
- { 0x0500, 0x1e1b, 0x0fff },
- { 0x8900, 0x1e20, 0x3001 },
- { 0x8900, 0x1e1e, 0x2001 },
- { 0x0500, 0x1e1d, 0x0fff },
- { 0x0500, 0x1e1f, 0x0fff },
- { 0x8900, 0x1e22, 0x2001 },
- { 0x0500, 0x1e21, 0x0fff },
- { 0x0500, 0x1e23, 0x0fff },
- { 0x9600, 0x2045, 0xa000 },
- { 0x8500, 0x1f32, 0x9008 },
- { 0x8900, 0x1ea8, 0x8001 },
- { 0x8900, 0x1e64, 0x7001 },
- { 0x8900, 0x1e44, 0x6001 },
- { 0x8900, 0x1e34, 0x5001 },
- { 0x8900, 0x1e2c, 0x4001 },
- { 0x8900, 0x1e28, 0x3001 },
- { 0x8900, 0x1e26, 0x2001 },
- { 0x0500, 0x1e25, 0x0fff },
- { 0x0500, 0x1e27, 0x0fff },
- { 0x8900, 0x1e2a, 0x2001 },
- { 0x0500, 0x1e29, 0x0fff },
- { 0x0500, 0x1e2b, 0x0fff },
- { 0x8900, 0x1e30, 0x3001 },
- { 0x8900, 0x1e2e, 0x2001 },
- { 0x0500, 0x1e2d, 0x0fff },
- { 0x0500, 0x1e2f, 0x0fff },
- { 0x8900, 0x1e32, 0x2001 },
- { 0x0500, 0x1e31, 0x0fff },
- { 0x0500, 0x1e33, 0x0fff },
- { 0x8900, 0x1e3c, 0x4001 },
- { 0x8900, 0x1e38, 0x3001 },
- { 0x8900, 0x1e36, 0x2001 },
- { 0x0500, 0x1e35, 0x0fff },
- { 0x0500, 0x1e37, 0x0fff },
- { 0x8900, 0x1e3a, 0x2001 },
- { 0x0500, 0x1e39, 0x0fff },
- { 0x0500, 0x1e3b, 0x0fff },
- { 0x8900, 0x1e40, 0x3001 },
- { 0x8900, 0x1e3e, 0x2001 },
- { 0x0500, 0x1e3d, 0x0fff },
- { 0x0500, 0x1e3f, 0x0fff },
- { 0x8900, 0x1e42, 0x2001 },
- { 0x0500, 0x1e41, 0x0fff },
- { 0x0500, 0x1e43, 0x0fff },
- { 0x8900, 0x1e54, 0x5001 },
- { 0x8900, 0x1e4c, 0x4001 },
- { 0x8900, 0x1e48, 0x3001 },
- { 0x8900, 0x1e46, 0x2001 },
- { 0x0500, 0x1e45, 0x0fff },
- { 0x0500, 0x1e47, 0x0fff },
- { 0x8900, 0x1e4a, 0x2001 },
- { 0x0500, 0x1e49, 0x0fff },
- { 0x0500, 0x1e4b, 0x0fff },
- { 0x8900, 0x1e50, 0x3001 },
- { 0x8900, 0x1e4e, 0x2001 },
- { 0x0500, 0x1e4d, 0x0fff },
- { 0x0500, 0x1e4f, 0x0fff },
- { 0x8900, 0x1e52, 0x2001 },
- { 0x0500, 0x1e51, 0x0fff },
- { 0x0500, 0x1e53, 0x0fff },
- { 0x8900, 0x1e5c, 0x4001 },
- { 0x8900, 0x1e58, 0x3001 },
- { 0x8900, 0x1e56, 0x2001 },
- { 0x0500, 0x1e55, 0x0fff },
- { 0x0500, 0x1e57, 0x0fff },
- { 0x8900, 0x1e5a, 0x2001 },
- { 0x0500, 0x1e59, 0x0fff },
- { 0x0500, 0x1e5b, 0x0fff },
- { 0x8900, 0x1e60, 0x3001 },
- { 0x8900, 0x1e5e, 0x2001 },
- { 0x0500, 0x1e5d, 0x0fff },
- { 0x0500, 0x1e5f, 0x0fff },
- { 0x8900, 0x1e62, 0x2001 },
- { 0x0500, 0x1e61, 0x0fff },
- { 0x0500, 0x1e63, 0x0fff },
- { 0x8900, 0x1e84, 0x6001 },
- { 0x8900, 0x1e74, 0x5001 },
- { 0x8900, 0x1e6c, 0x4001 },
- { 0x8900, 0x1e68, 0x3001 },
- { 0x8900, 0x1e66, 0x2001 },
- { 0x0500, 0x1e65, 0x0fff },
- { 0x0500, 0x1e67, 0x0fff },
- { 0x8900, 0x1e6a, 0x2001 },
- { 0x0500, 0x1e69, 0x0fff },
- { 0x0500, 0x1e6b, 0x0fff },
- { 0x8900, 0x1e70, 0x3001 },
- { 0x8900, 0x1e6e, 0x2001 },
- { 0x0500, 0x1e6d, 0x0fff },
- { 0x0500, 0x1e6f, 0x0fff },
- { 0x8900, 0x1e72, 0x2001 },
- { 0x0500, 0x1e71, 0x0fff },
- { 0x0500, 0x1e73, 0x0fff },
- { 0x8900, 0x1e7c, 0x4001 },
- { 0x8900, 0x1e78, 0x3001 },
- { 0x8900, 0x1e76, 0x2001 },
- { 0x0500, 0x1e75, 0x0fff },
- { 0x0500, 0x1e77, 0x0fff },
- { 0x8900, 0x1e7a, 0x2001 },
- { 0x0500, 0x1e79, 0x0fff },
- { 0x0500, 0x1e7b, 0x0fff },
- { 0x8900, 0x1e80, 0x3001 },
- { 0x8900, 0x1e7e, 0x2001 },
- { 0x0500, 0x1e7d, 0x0fff },
- { 0x0500, 0x1e7f, 0x0fff },
- { 0x8900, 0x1e82, 0x2001 },
- { 0x0500, 0x1e81, 0x0fff },
- { 0x0500, 0x1e83, 0x0fff },
- { 0x8900, 0x1e94, 0x5001 },
- { 0x8900, 0x1e8c, 0x4001 },
- { 0x8900, 0x1e88, 0x3001 },
- { 0x8900, 0x1e86, 0x2001 },
- { 0x0500, 0x1e85, 0x0fff },
- { 0x0500, 0x1e87, 0x0fff },
- { 0x8900, 0x1e8a, 0x2001 },
- { 0x0500, 0x1e89, 0x0fff },
- { 0x0500, 0x1e8b, 0x0fff },
- { 0x8900, 0x1e90, 0x3001 },
- { 0x8900, 0x1e8e, 0x2001 },
- { 0x0500, 0x1e8d, 0x0fff },
- { 0x0500, 0x1e8f, 0x0fff },
- { 0x8900, 0x1e92, 0x2001 },
- { 0x0500, 0x1e91, 0x0fff },
- { 0x0500, 0x1e93, 0x0fff },
- { 0x8900, 0x1ea0, 0x4001 },
- { 0x8500, 0x1e98, 0x3000 },
- { 0x8500, 0x1e96, 0x2000 },
- { 0x0500, 0x1e95, 0x0fff },
- { 0x0500, 0x1e97, 0x0000 },
- { 0x8500, 0x1e9a, 0x2000 },
- { 0x0500, 0x1e99, 0x0000 },
- { 0x0500, 0x1e9b, 0x0fc5 },
- { 0x8900, 0x1ea4, 0x3001 },
- { 0x8900, 0x1ea2, 0x2001 },
- { 0x0500, 0x1ea1, 0x0fff },
- { 0x0500, 0x1ea3, 0x0fff },
- { 0x8900, 0x1ea6, 0x2001 },
- { 0x0500, 0x1ea5, 0x0fff },
- { 0x0500, 0x1ea7, 0x0fff },
- { 0x8900, 0x1ee8, 0x7001 },
- { 0x8900, 0x1ec8, 0x6001 },
- { 0x8900, 0x1eb8, 0x5001 },
- { 0x8900, 0x1eb0, 0x4001 },
- { 0x8900, 0x1eac, 0x3001 },
- { 0x8900, 0x1eaa, 0x2001 },
- { 0x0500, 0x1ea9, 0x0fff },
- { 0x0500, 0x1eab, 0x0fff },
- { 0x8900, 0x1eae, 0x2001 },
- { 0x0500, 0x1ead, 0x0fff },
- { 0x0500, 0x1eaf, 0x0fff },
- { 0x8900, 0x1eb4, 0x3001 },
- { 0x8900, 0x1eb2, 0x2001 },
- { 0x0500, 0x1eb1, 0x0fff },
- { 0x0500, 0x1eb3, 0x0fff },
- { 0x8900, 0x1eb6, 0x2001 },
- { 0x0500, 0x1eb5, 0x0fff },
- { 0x0500, 0x1eb7, 0x0fff },
- { 0x8900, 0x1ec0, 0x4001 },
- { 0x8900, 0x1ebc, 0x3001 },
- { 0x8900, 0x1eba, 0x2001 },
- { 0x0500, 0x1eb9, 0x0fff },
- { 0x0500, 0x1ebb, 0x0fff },
- { 0x8900, 0x1ebe, 0x2001 },
- { 0x0500, 0x1ebd, 0x0fff },
- { 0x0500, 0x1ebf, 0x0fff },
- { 0x8900, 0x1ec4, 0x3001 },
- { 0x8900, 0x1ec2, 0x2001 },
- { 0x0500, 0x1ec1, 0x0fff },
- { 0x0500, 0x1ec3, 0x0fff },
- { 0x8900, 0x1ec6, 0x2001 },
- { 0x0500, 0x1ec5, 0x0fff },
- { 0x0500, 0x1ec7, 0x0fff },
- { 0x8900, 0x1ed8, 0x5001 },
- { 0x8900, 0x1ed0, 0x4001 },
- { 0x8900, 0x1ecc, 0x3001 },
- { 0x8900, 0x1eca, 0x2001 },
- { 0x0500, 0x1ec9, 0x0fff },
- { 0x0500, 0x1ecb, 0x0fff },
- { 0x8900, 0x1ece, 0x2001 },
- { 0x0500, 0x1ecd, 0x0fff },
- { 0x0500, 0x1ecf, 0x0fff },
- { 0x8900, 0x1ed4, 0x3001 },
- { 0x8900, 0x1ed2, 0x2001 },
- { 0x0500, 0x1ed1, 0x0fff },
- { 0x0500, 0x1ed3, 0x0fff },
- { 0x8900, 0x1ed6, 0x2001 },
- { 0x0500, 0x1ed5, 0x0fff },
- { 0x0500, 0x1ed7, 0x0fff },
- { 0x8900, 0x1ee0, 0x4001 },
- { 0x8900, 0x1edc, 0x3001 },
- { 0x8900, 0x1eda, 0x2001 },
- { 0x0500, 0x1ed9, 0x0fff },
- { 0x0500, 0x1edb, 0x0fff },
- { 0x8900, 0x1ede, 0x2001 },
- { 0x0500, 0x1edd, 0x0fff },
- { 0x0500, 0x1edf, 0x0fff },
- { 0x8900, 0x1ee4, 0x3001 },
- { 0x8900, 0x1ee2, 0x2001 },
- { 0x0500, 0x1ee1, 0x0fff },
- { 0x0500, 0x1ee3, 0x0fff },
- { 0x8900, 0x1ee6, 0x2001 },
- { 0x0500, 0x1ee5, 0x0fff },
- { 0x0500, 0x1ee7, 0x0fff },
- { 0x8900, 0x1f0e, 0x6ff8 },
- { 0x8900, 0x1ef8, 0x5001 },
- { 0x8900, 0x1ef0, 0x4001 },
- { 0x8900, 0x1eec, 0x3001 },
- { 0x8900, 0x1eea, 0x2001 },
- { 0x0500, 0x1ee9, 0x0fff },
- { 0x0500, 0x1eeb, 0x0fff },
- { 0x8900, 0x1eee, 0x2001 },
- { 0x0500, 0x1eed, 0x0fff },
- { 0x0500, 0x1eef, 0x0fff },
- { 0x8900, 0x1ef4, 0x3001 },
- { 0x8900, 0x1ef2, 0x2001 },
- { 0x0500, 0x1ef1, 0x0fff },
- { 0x0500, 0x1ef3, 0x0fff },
- { 0x8900, 0x1ef6, 0x2001 },
- { 0x0500, 0x1ef5, 0x0fff },
- { 0x0500, 0x1ef7, 0x0fff },
- { 0x8500, 0x1f06, 0x4008 },
- { 0x8500, 0x1f02, 0x3008 },
- { 0x8500, 0x1f00, 0x2008 },
- { 0x0500, 0x1ef9, 0x0fff },
- { 0x0500, 0x1f01, 0x0008 },
- { 0x8500, 0x1f04, 0x2008 },
- { 0x0500, 0x1f03, 0x0008 },
- { 0x0500, 0x1f05, 0x0008 },
- { 0x8900, 0x1f0a, 0x3ff8 },
- { 0x8900, 0x1f08, 0x2ff8 },
- { 0x0500, 0x1f07, 0x0008 },
- { 0x0900, 0x1f09, 0x0ff8 },
- { 0x8900, 0x1f0c, 0x2ff8 },
- { 0x0900, 0x1f0b, 0x0ff8 },
- { 0x0900, 0x1f0d, 0x0ff8 },
- { 0x8500, 0x1f22, 0x5008 },
- { 0x8900, 0x1f18, 0x4ff8 },
- { 0x8500, 0x1f12, 0x3008 },
- { 0x8500, 0x1f10, 0x2008 },
- { 0x0900, 0x1f0f, 0x0ff8 },
- { 0x0500, 0x1f11, 0x0008 },
- { 0x8500, 0x1f14, 0x2008 },
- { 0x0500, 0x1f13, 0x0008 },
- { 0x0500, 0x1f15, 0x0008 },
- { 0x8900, 0x1f1c, 0x3ff8 },
- { 0x8900, 0x1f1a, 0x2ff8 },
- { 0x0900, 0x1f19, 0x0ff8 },
- { 0x0900, 0x1f1b, 0x0ff8 },
- { 0x8500, 0x1f20, 0x2008 },
- { 0x0900, 0x1f1d, 0x0ff8 },
- { 0x0500, 0x1f21, 0x0008 },
- { 0x8900, 0x1f2a, 0x4ff8 },
- { 0x8500, 0x1f26, 0x3008 },
- { 0x8500, 0x1f24, 0x2008 },
- { 0x0500, 0x1f23, 0x0008 },
- { 0x0500, 0x1f25, 0x0008 },
- { 0x8900, 0x1f28, 0x2ff8 },
- { 0x0500, 0x1f27, 0x0008 },
- { 0x0900, 0x1f29, 0x0ff8 },
- { 0x8900, 0x1f2e, 0x3ff8 },
- { 0x8900, 0x1f2c, 0x2ff8 },
- { 0x0900, 0x1f2b, 0x0ff8 },
- { 0x0900, 0x1f2d, 0x0ff8 },
- { 0x8500, 0x1f30, 0x2008 },
- { 0x0900, 0x1f2f, 0x0ff8 },
- { 0x0500, 0x1f31, 0x0008 },
- { 0x9800, 0x1fbd, 0x8000 },
- { 0x8500, 0x1f7a, 0x7070 },
- { 0x8500, 0x1f56, 0x6000 },
- { 0x8500, 0x1f42, 0x5008 },
- { 0x8900, 0x1f3a, 0x4ff8 },
- { 0x8500, 0x1f36, 0x3008 },
- { 0x8500, 0x1f34, 0x2008 },
- { 0x0500, 0x1f33, 0x0008 },
- { 0x0500, 0x1f35, 0x0008 },
- { 0x8900, 0x1f38, 0x2ff8 },
- { 0x0500, 0x1f37, 0x0008 },
- { 0x0900, 0x1f39, 0x0ff8 },
- { 0x8900, 0x1f3e, 0x3ff8 },
- { 0x8900, 0x1f3c, 0x2ff8 },
- { 0x0900, 0x1f3b, 0x0ff8 },
- { 0x0900, 0x1f3d, 0x0ff8 },
- { 0x8500, 0x1f40, 0x2008 },
- { 0x0900, 0x1f3f, 0x0ff8 },
- { 0x0500, 0x1f41, 0x0008 },
- { 0x8900, 0x1f4c, 0x4ff8 },
- { 0x8900, 0x1f48, 0x3ff8 },
- { 0x8500, 0x1f44, 0x2008 },
- { 0x0500, 0x1f43, 0x0008 },
- { 0x0500, 0x1f45, 0x0008 },
- { 0x8900, 0x1f4a, 0x2ff8 },
- { 0x0900, 0x1f49, 0x0ff8 },
- { 0x0900, 0x1f4b, 0x0ff8 },
- { 0x8500, 0x1f52, 0x3000 },
- { 0x8500, 0x1f50, 0x2000 },
- { 0x0900, 0x1f4d, 0x0ff8 },
- { 0x0500, 0x1f51, 0x0008 },
- { 0x8500, 0x1f54, 0x2000 },
- { 0x0500, 0x1f53, 0x0008 },
- { 0x0500, 0x1f55, 0x0008 },
- { 0x8900, 0x1f6a, 0x5ff8 },
- { 0x8500, 0x1f62, 0x4008 },
- { 0x8900, 0x1f5d, 0x3ff8 },
- { 0x8900, 0x1f59, 0x2ff8 },
- { 0x0500, 0x1f57, 0x0008 },
- { 0x0900, 0x1f5b, 0x0ff8 },
- { 0x8500, 0x1f60, 0x2008 },
- { 0x0900, 0x1f5f, 0x0ff8 },
- { 0x0500, 0x1f61, 0x0008 },
- { 0x8500, 0x1f66, 0x3008 },
- { 0x8500, 0x1f64, 0x2008 },
- { 0x0500, 0x1f63, 0x0008 },
- { 0x0500, 0x1f65, 0x0008 },
- { 0x8900, 0x1f68, 0x2ff8 },
- { 0x0500, 0x1f67, 0x0008 },
- { 0x0900, 0x1f69, 0x0ff8 },
- { 0x8500, 0x1f72, 0x4056 },
- { 0x8900, 0x1f6e, 0x3ff8 },
- { 0x8900, 0x1f6c, 0x2ff8 },
- { 0x0900, 0x1f6b, 0x0ff8 },
- { 0x0900, 0x1f6d, 0x0ff8 },
- { 0x8500, 0x1f70, 0x204a },
- { 0x0900, 0x1f6f, 0x0ff8 },
- { 0x0500, 0x1f71, 0x004a },
- { 0x8500, 0x1f76, 0x3064 },
- { 0x8500, 0x1f74, 0x2056 },
- { 0x0500, 0x1f73, 0x0056 },
- { 0x0500, 0x1f75, 0x0056 },
- { 0x8500, 0x1f78, 0x2080 },
- { 0x0500, 0x1f77, 0x0064 },
- { 0x0500, 0x1f79, 0x0080 },
- { 0x8800, 0x1f9c, 0x6000 },
- { 0x8800, 0x1f8c, 0x5000 },
- { 0x8500, 0x1f84, 0x4008 },
- { 0x8500, 0x1f80, 0x3008 },
- { 0x8500, 0x1f7c, 0x207e },
- { 0x0500, 0x1f7b, 0x0070 },
- { 0x0500, 0x1f7d, 0x007e },
- { 0x8500, 0x1f82, 0x2008 },
- { 0x0500, 0x1f81, 0x0008 },
- { 0x0500, 0x1f83, 0x0008 },
- { 0x8800, 0x1f88, 0x3000 },
- { 0x8500, 0x1f86, 0x2008 },
- { 0x0500, 0x1f85, 0x0008 },
- { 0x0500, 0x1f87, 0x0008 },
- { 0x8800, 0x1f8a, 0x2000 },
- { 0x0800, 0x1f89, 0x0000 },
- { 0x0800, 0x1f8b, 0x0000 },
- { 0x8500, 0x1f94, 0x4008 },
- { 0x8500, 0x1f90, 0x3008 },
- { 0x8800, 0x1f8e, 0x2000 },
- { 0x0800, 0x1f8d, 0x0000 },
- { 0x0800, 0x1f8f, 0x0000 },
- { 0x8500, 0x1f92, 0x2008 },
- { 0x0500, 0x1f91, 0x0008 },
- { 0x0500, 0x1f93, 0x0008 },
- { 0x8800, 0x1f98, 0x3000 },
- { 0x8500, 0x1f96, 0x2008 },
- { 0x0500, 0x1f95, 0x0008 },
- { 0x0500, 0x1f97, 0x0008 },
- { 0x8800, 0x1f9a, 0x2000 },
- { 0x0800, 0x1f99, 0x0000 },
- { 0x0800, 0x1f9b, 0x0000 },
- { 0x8800, 0x1fac, 0x5000 },
- { 0x8500, 0x1fa4, 0x4008 },
- { 0x8500, 0x1fa0, 0x3008 },
- { 0x8800, 0x1f9e, 0x2000 },
- { 0x0800, 0x1f9d, 0x0000 },
- { 0x0800, 0x1f9f, 0x0000 },
- { 0x8500, 0x1fa2, 0x2008 },
- { 0x0500, 0x1fa1, 0x0008 },
- { 0x0500, 0x1fa3, 0x0008 },
- { 0x8800, 0x1fa8, 0x3000 },
- { 0x8500, 0x1fa6, 0x2008 },
- { 0x0500, 0x1fa5, 0x0008 },
- { 0x0500, 0x1fa7, 0x0008 },
- { 0x8800, 0x1faa, 0x2000 },
- { 0x0800, 0x1fa9, 0x0000 },
- { 0x0800, 0x1fab, 0x0000 },
- { 0x8500, 0x1fb4, 0x4000 },
- { 0x8500, 0x1fb0, 0x3008 },
- { 0x8800, 0x1fae, 0x2000 },
- { 0x0800, 0x1fad, 0x0000 },
- { 0x0800, 0x1faf, 0x0000 },
- { 0x8500, 0x1fb2, 0x2000 },
- { 0x0500, 0x1fb1, 0x0008 },
- { 0x0500, 0x1fb3, 0x0009 },
- { 0x8900, 0x1fb9, 0x3ff8 },
- { 0x8500, 0x1fb7, 0x2000 },
- { 0x0500, 0x1fb6, 0x0000 },
- { 0x0900, 0x1fb8, 0x0ff8 },
- { 0x8900, 0x1fbb, 0x2fb6 },
- { 0x0900, 0x1fba, 0x0fb6 },
- { 0x0800, 0x1fbc, 0x0000 },
- { 0x9d00, 0x2005, 0x7000 },
- { 0x8500, 0x1fe1, 0x6008 },
- { 0x9800, 0x1fce, 0x5000 },
- { 0x8500, 0x1fc6, 0x4000 },
- { 0x9800, 0x1fc1, 0x3000 },
- { 0x9800, 0x1fbf, 0x2000 },
- { 0x0500, 0x1fbe, 0x0000 },
- { 0x1800, 0x1fc0, 0x0000 },
- { 0x8500, 0x1fc3, 0x2009 },
- { 0x0500, 0x1fc2, 0x0000 },
- { 0x0500, 0x1fc4, 0x0000 },
- { 0x8900, 0x1fca, 0x3faa },
- { 0x8900, 0x1fc8, 0x2faa },
- { 0x0500, 0x1fc7, 0x0000 },
- { 0x0900, 0x1fc9, 0x0faa },
- { 0x8800, 0x1fcc, 0x2000 },
- { 0x0900, 0x1fcb, 0x0faa },
- { 0x1800, 0x1fcd, 0x0000 },
- { 0x8900, 0x1fd8, 0x4ff8 },
- { 0x8500, 0x1fd2, 0x3000 },
- { 0x8500, 0x1fd0, 0x2008 },
- { 0x1800, 0x1fcf, 0x0000 },
- { 0x0500, 0x1fd1, 0x0008 },
- { 0x8500, 0x1fd6, 0x2000 },
- { 0x0500, 0x1fd3, 0x0000 },
- { 0x0500, 0x1fd7, 0x0000 },
- { 0x9800, 0x1fdd, 0x3000 },
- { 0x8900, 0x1fda, 0x2f9c },
- { 0x0900, 0x1fd9, 0x0ff8 },
- { 0x0900, 0x1fdb, 0x0f9c },
- { 0x9800, 0x1fdf, 0x2000 },
- { 0x1800, 0x1fde, 0x0000 },
- { 0x0500, 0x1fe0, 0x0008 },
- { 0x8500, 0x1ff3, 0x5009 },
- { 0x8900, 0x1fe9, 0x4ff8 },
- { 0x8500, 0x1fe5, 0x3007 },
- { 0x8500, 0x1fe3, 0x2000 },
- { 0x0500, 0x1fe2, 0x0000 },
- { 0x0500, 0x1fe4, 0x0000 },
- { 0x8500, 0x1fe7, 0x2000 },
- { 0x0500, 0x1fe6, 0x0000 },
- { 0x0900, 0x1fe8, 0x0ff8 },
- { 0x9800, 0x1fed, 0x3000 },
- { 0x8900, 0x1feb, 0x2f90 },
- { 0x0900, 0x1fea, 0x0f90 },
- { 0x0900, 0x1fec, 0x0ff9 },
- { 0x9800, 0x1fef, 0x2000 },
- { 0x1800, 0x1fee, 0x0000 },
- { 0x0500, 0x1ff2, 0x0000 },
- { 0x8800, 0x1ffc, 0x4000 },
- { 0x8900, 0x1ff8, 0x3f80 },
- { 0x8500, 0x1ff6, 0x2000 },
- { 0x0500, 0x1ff4, 0x0000 },
- { 0x0500, 0x1ff7, 0x0000 },
- { 0x8900, 0x1ffa, 0x2f82 },
- { 0x0900, 0x1ff9, 0x0f80 },
- { 0x0900, 0x1ffb, 0x0f82 },
- { 0x9d00, 0x2001, 0x3000 },
- { 0x9800, 0x1ffe, 0x2000 },
- { 0x1800, 0x1ffd, 0x0000 },
- { 0x1d00, 0x2000, 0x0000 },
- { 0x9d00, 0x2003, 0x2000 },
- { 0x1d00, 0x2002, 0x0000 },
- { 0x1d00, 0x2004, 0x0000 },
- { 0x9500, 0x2025, 0x6000 },
- { 0x9100, 0x2015, 0x5000 },
- { 0x8100, 0x200d, 0x4000 },
- { 0x9d00, 0x2009, 0x3000 },
- { 0x9d00, 0x2007, 0x2000 },
- { 0x1d00, 0x2006, 0x0000 },
- { 0x1d00, 0x2008, 0x0000 },
- { 0x9d00, 0x200b, 0x2000 },
- { 0x1d00, 0x200a, 0x0000 },
- { 0x0100, 0x200c, 0x0000 },
- { 0x9100, 0x2011, 0x3000 },
- { 0x8100, 0x200f, 0x2000 },
- { 0x0100, 0x200e, 0x0000 },
- { 0x1100, 0x2010, 0x0000 },
- { 0x9100, 0x2013, 0x2000 },
- { 0x1100, 0x2012, 0x0000 },
- { 0x1100, 0x2014, 0x0000 },
- { 0x9300, 0x201d, 0x4000 },
- { 0x9300, 0x2019, 0x3000 },
- { 0x9500, 0x2017, 0x2000 },
- { 0x1500, 0x2016, 0x0000 },
- { 0x1400, 0x2018, 0x0000 },
- { 0x9400, 0x201b, 0x2000 },
- { 0x1600, 0x201a, 0x0000 },
- { 0x1400, 0x201c, 0x0000 },
- { 0x9500, 0x2021, 0x3000 },
- { 0x9400, 0x201f, 0x2000 },
- { 0x1600, 0x201e, 0x0000 },
- { 0x1500, 0x2020, 0x0000 },
- { 0x9500, 0x2023, 0x2000 },
- { 0x1500, 0x2022, 0x0000 },
- { 0x1500, 0x2024, 0x0000 },
- { 0x9500, 0x2035, 0x5000 },
- { 0x8100, 0x202d, 0x4000 },
- { 0x9c00, 0x2029, 0x3000 },
- { 0x9500, 0x2027, 0x2000 },
- { 0x1500, 0x2026, 0x0000 },
- { 0x1b00, 0x2028, 0x0000 },
- { 0x8100, 0x202b, 0x2000 },
- { 0x0100, 0x202a, 0x0000 },
- { 0x0100, 0x202c, 0x0000 },
- { 0x9500, 0x2031, 0x3000 },
- { 0x9d00, 0x202f, 0x2000 },
- { 0x0100, 0x202e, 0x0000 },
- { 0x1500, 0x2030, 0x0000 },
- { 0x9500, 0x2033, 0x2000 },
- { 0x1500, 0x2032, 0x0000 },
- { 0x1500, 0x2034, 0x0000 },
- { 0x9500, 0x203d, 0x4000 },
- { 0x9400, 0x2039, 0x3000 },
- { 0x9500, 0x2037, 0x2000 },
- { 0x1500, 0x2036, 0x0000 },
- { 0x1500, 0x2038, 0x0000 },
- { 0x9500, 0x203b, 0x2000 },
- { 0x1300, 0x203a, 0x0000 },
- { 0x1500, 0x203c, 0x0000 },
- { 0x9500, 0x2041, 0x3000 },
- { 0x9000, 0x203f, 0x2000 },
- { 0x1500, 0x203e, 0x0000 },
- { 0x1000, 0x2040, 0x0000 },
- { 0x9500, 0x2043, 0x2000 },
- { 0x1500, 0x2042, 0x0000 },
- { 0x1900, 0x2044, 0x0000 },
- { 0x9900, 0x21ae, 0x9000 },
- { 0x8900, 0x211a, 0x8000 },
- { 0x9700, 0x20a7, 0x7000 },
- { 0x8f00, 0x2076, 0x6000 },
- { 0x9500, 0x2057, 0x5000 },
- { 0x9500, 0x204d, 0x4000 },
- { 0x9500, 0x2049, 0x3000 },
- { 0x9500, 0x2047, 0x2000 },
- { 0x1200, 0x2046, 0x0000 },
- { 0x1500, 0x2048, 0x0000 },
- { 0x9500, 0x204b, 0x2000 },
- { 0x1500, 0x204a, 0x0000 },
- { 0x1500, 0x204c, 0x0000 },
- { 0x9500, 0x2051, 0x3000 },
- { 0x9500, 0x204f, 0x2000 },
- { 0x1500, 0x204e, 0x0000 },
- { 0x1500, 0x2050, 0x0000 },
- { 0x9500, 0x2053, 0x2000 },
- { 0x1900, 0x2052, 0x0000 },
- { 0x1000, 0x2054, 0x0000 },
- { 0x8100, 0x206c, 0x4000 },
- { 0x8100, 0x2062, 0x3000 },
- { 0x8100, 0x2060, 0x2000 },
- { 0x1d00, 0x205f, 0x0000 },
- { 0x0100, 0x2061, 0x0000 },
- { 0x8100, 0x206a, 0x2000 },
- { 0x0100, 0x2063, 0x0000 },
- { 0x0100, 0x206b, 0x0000 },
- { 0x8f00, 0x2070, 0x3000 },
- { 0x8100, 0x206e, 0x2000 },
- { 0x0100, 0x206d, 0x0000 },
- { 0x0100, 0x206f, 0x0000 },
- { 0x8f00, 0x2074, 0x2000 },
- { 0x0500, 0x2071, 0x0000 },
- { 0x0f00, 0x2075, 0x0000 },
- { 0x8f00, 0x2086, 0x5000 },
- { 0x9200, 0x207e, 0x4000 },
- { 0x9900, 0x207a, 0x3000 },
- { 0x8f00, 0x2078, 0x2000 },
- { 0x0f00, 0x2077, 0x0000 },
- { 0x0f00, 0x2079, 0x0000 },
- { 0x9900, 0x207c, 0x2000 },
- { 0x1900, 0x207b, 0x0000 },
- { 0x1600, 0x207d, 0x0000 },
- { 0x8f00, 0x2082, 0x3000 },
- { 0x8f00, 0x2080, 0x2000 },
- { 0x0500, 0x207f, 0x0000 },
- { 0x0f00, 0x2081, 0x0000 },
- { 0x8f00, 0x2084, 0x2000 },
- { 0x0f00, 0x2083, 0x0000 },
- { 0x0f00, 0x2085, 0x0000 },
- { 0x9200, 0x208e, 0x4000 },
- { 0x9900, 0x208a, 0x3000 },
- { 0x8f00, 0x2088, 0x2000 },
- { 0x0f00, 0x2087, 0x0000 },
- { 0x0f00, 0x2089, 0x0000 },
- { 0x9900, 0x208c, 0x2000 },
- { 0x1900, 0x208b, 0x0000 },
- { 0x1600, 0x208d, 0x0000 },
- { 0x9700, 0x20a3, 0x3000 },
- { 0x9700, 0x20a1, 0x2000 },
- { 0x1700, 0x20a0, 0x0000 },
- { 0x1700, 0x20a2, 0x0000 },
- { 0x9700, 0x20a5, 0x2000 },
- { 0x1700, 0x20a4, 0x0000 },
- { 0x1700, 0x20a6, 0x0000 },
- { 0x8c00, 0x20e5, 0x6000 },
- { 0x8c00, 0x20d5, 0x5000 },
- { 0x9700, 0x20af, 0x4000 },
- { 0x9700, 0x20ab, 0x3000 },
- { 0x9700, 0x20a9, 0x2000 },
- { 0x1700, 0x20a8, 0x0000 },
- { 0x1700, 0x20aa, 0x0000 },
- { 0x9700, 0x20ad, 0x2000 },
- { 0x1700, 0x20ac, 0x0000 },
- { 0x1700, 0x20ae, 0x0000 },
- { 0x8c00, 0x20d1, 0x3000 },
- { 0x9700, 0x20b1, 0x2000 },
- { 0x1700, 0x20b0, 0x0000 },
- { 0x0c00, 0x20d0, 0x0000 },
- { 0x8c00, 0x20d3, 0x2000 },
- { 0x0c00, 0x20d2, 0x0000 },
- { 0x0c00, 0x20d4, 0x0000 },
- { 0x8b00, 0x20dd, 0x4000 },
- { 0x8c00, 0x20d9, 0x3000 },
- { 0x8c00, 0x20d7, 0x2000 },
- { 0x0c00, 0x20d6, 0x0000 },
- { 0x0c00, 0x20d8, 0x0000 },
- { 0x8c00, 0x20db, 0x2000 },
- { 0x0c00, 0x20da, 0x0000 },
- { 0x0c00, 0x20dc, 0x0000 },
- { 0x8c00, 0x20e1, 0x3000 },
- { 0x8b00, 0x20df, 0x2000 },
- { 0x0b00, 0x20de, 0x0000 },
- { 0x0b00, 0x20e0, 0x0000 },
- { 0x8b00, 0x20e3, 0x2000 },
- { 0x0b00, 0x20e2, 0x0000 },
- { 0x0b00, 0x20e4, 0x0000 },
- { 0x8500, 0x210a, 0x5000 },
- { 0x8900, 0x2102, 0x4000 },
- { 0x8c00, 0x20e9, 0x3000 },
- { 0x8c00, 0x20e7, 0x2000 },
- { 0x0c00, 0x20e6, 0x0000 },
- { 0x0c00, 0x20e8, 0x0000 },
- { 0x9a00, 0x2100, 0x2000 },
- { 0x0c00, 0x20ea, 0x0000 },
- { 0x1a00, 0x2101, 0x0000 },
- { 0x9a00, 0x2106, 0x3000 },
- { 0x9a00, 0x2104, 0x2000 },
- { 0x1a00, 0x2103, 0x0000 },
- { 0x1a00, 0x2105, 0x0000 },
- { 0x9a00, 0x2108, 0x2000 },
- { 0x0900, 0x2107, 0x0000 },
- { 0x1a00, 0x2109, 0x0000 },
- { 0x8900, 0x2112, 0x4000 },
- { 0x8500, 0x210e, 0x3000 },
- { 0x8900, 0x210c, 0x2000 },
- { 0x0900, 0x210b, 0x0000 },
- { 0x0900, 0x210d, 0x0000 },
- { 0x8900, 0x2110, 0x2000 },
- { 0x0500, 0x210f, 0x0000 },
- { 0x0900, 0x2111, 0x0000 },
- { 0x9a00, 0x2116, 0x3000 },
- { 0x9a00, 0x2114, 0x2000 },
- { 0x0500, 0x2113, 0x0000 },
- { 0x0900, 0x2115, 0x0000 },
- { 0x9a00, 0x2118, 0x2000 },
- { 0x1a00, 0x2117, 0x0000 },
- { 0x0900, 0x2119, 0x0000 },
- { 0x8e00, 0x2162, 0x7000 },
- { 0x9a00, 0x213a, 0x6000 },
- { 0x8900, 0x212a, 0x5000 },
- { 0x9a00, 0x2122, 0x4000 },
- { 0x9a00, 0x211e, 0x3000 },
- { 0x8900, 0x211c, 0x2000 },
- { 0x0900, 0x211b, 0x0000 },
- { 0x0900, 0x211d, 0x0000 },
- { 0x9a00, 0x2120, 0x2000 },
- { 0x1a00, 0x211f, 0x0000 },
- { 0x1a00, 0x2121, 0x0000 },
- { 0x8900, 0x2126, 0x3000 },
- { 0x8900, 0x2124, 0x2000 },
- { 0x1a00, 0x2123, 0x0000 },
- { 0x1a00, 0x2125, 0x0000 },
- { 0x8900, 0x2128, 0x2000 },
- { 0x1a00, 0x2127, 0x0000 },
- { 0x1a00, 0x2129, 0x0000 },
- { 0x9a00, 0x2132, 0x4000 },
- { 0x9a00, 0x212e, 0x3000 },
- { 0x8900, 0x212c, 0x2000 },
- { 0x0900, 0x212b, 0x0000 },
- { 0x0900, 0x212d, 0x0000 },
- { 0x8900, 0x2130, 0x2000 },
- { 0x0500, 0x212f, 0x0000 },
- { 0x0900, 0x2131, 0x0000 },
- { 0x8700, 0x2136, 0x3000 },
- { 0x8500, 0x2134, 0x2000 },
- { 0x0900, 0x2133, 0x0000 },
- { 0x0700, 0x2135, 0x0000 },
- { 0x8700, 0x2138, 0x2000 },
- { 0x0700, 0x2137, 0x0000 },
- { 0x0500, 0x2139, 0x0000 },
- { 0x9900, 0x214b, 0x5000 },
- { 0x9900, 0x2143, 0x4000 },
- { 0x8900, 0x213f, 0x3000 },
- { 0x8500, 0x213d, 0x2000 },
- { 0x1a00, 0x213b, 0x0000 },
- { 0x0900, 0x213e, 0x0000 },
- { 0x9900, 0x2141, 0x2000 },
- { 0x1900, 0x2140, 0x0000 },
- { 0x1900, 0x2142, 0x0000 },
- { 0x8500, 0x2147, 0x3000 },
- { 0x8900, 0x2145, 0x2000 },
- { 0x1900, 0x2144, 0x0000 },
- { 0x0500, 0x2146, 0x0000 },
- { 0x8500, 0x2149, 0x2000 },
- { 0x0500, 0x2148, 0x0000 },
- { 0x1a00, 0x214a, 0x0000 },
- { 0x8f00, 0x215a, 0x4000 },
- { 0x8f00, 0x2156, 0x3000 },
- { 0x8f00, 0x2154, 0x2000 },
- { 0x0f00, 0x2153, 0x0000 },
- { 0x0f00, 0x2155, 0x0000 },
- { 0x8f00, 0x2158, 0x2000 },
- { 0x0f00, 0x2157, 0x0000 },
- { 0x0f00, 0x2159, 0x0000 },
- { 0x8f00, 0x215e, 0x3000 },
- { 0x8f00, 0x215c, 0x2000 },
- { 0x0f00, 0x215b, 0x0000 },
- { 0x0f00, 0x215d, 0x0000 },
- { 0x8e00, 0x2160, 0x2000 },
- { 0x0f00, 0x215f, 0x0000 },
- { 0x0e00, 0x2161, 0x0000 },
- { 0x8e00, 0x2182, 0x6000 },
- { 0x8e00, 0x2172, 0x5000 },
- { 0x8e00, 0x216a, 0x4000 },
- { 0x8e00, 0x2166, 0x3000 },
- { 0x8e00, 0x2164, 0x2000 },
- { 0x0e00, 0x2163, 0x0000 },
- { 0x0e00, 0x2165, 0x0000 },
- { 0x8e00, 0x2168, 0x2000 },
- { 0x0e00, 0x2167, 0x0000 },
- { 0x0e00, 0x2169, 0x0000 },
- { 0x8e00, 0x216e, 0x3000 },
- { 0x8e00, 0x216c, 0x2000 },
- { 0x0e00, 0x216b, 0x0000 },
- { 0x0e00, 0x216d, 0x0000 },
- { 0x8e00, 0x2170, 0x2000 },
- { 0x0e00, 0x216f, 0x0000 },
- { 0x0e00, 0x2171, 0x0000 },
- { 0x8e00, 0x217a, 0x4000 },
- { 0x8e00, 0x2176, 0x3000 },
- { 0x8e00, 0x2174, 0x2000 },
- { 0x0e00, 0x2173, 0x0000 },
- { 0x0e00, 0x2175, 0x0000 },
- { 0x8e00, 0x2178, 0x2000 },
- { 0x0e00, 0x2177, 0x0000 },
- { 0x0e00, 0x2179, 0x0000 },
- { 0x8e00, 0x217e, 0x3000 },
- { 0x8e00, 0x217c, 0x2000 },
- { 0x0e00, 0x217b, 0x0000 },
- { 0x0e00, 0x217d, 0x0000 },
- { 0x8e00, 0x2180, 0x2000 },
- { 0x0e00, 0x217f, 0x0000 },
- { 0x0e00, 0x2181, 0x0000 },
- { 0x9a00, 0x219e, 0x5000 },
- { 0x9a00, 0x2196, 0x4000 },
- { 0x9900, 0x2192, 0x3000 },
- { 0x9900, 0x2190, 0x2000 },
- { 0x0e00, 0x2183, 0x0000 },
- { 0x1900, 0x2191, 0x0000 },
- { 0x9900, 0x2194, 0x2000 },
- { 0x1900, 0x2193, 0x0000 },
- { 0x1a00, 0x2195, 0x0000 },
- { 0x9900, 0x219a, 0x3000 },
- { 0x9a00, 0x2198, 0x2000 },
- { 0x1a00, 0x2197, 0x0000 },
- { 0x1a00, 0x2199, 0x0000 },
- { 0x9a00, 0x219c, 0x2000 },
- { 0x1900, 0x219b, 0x0000 },
- { 0x1a00, 0x219d, 0x0000 },
- { 0x9900, 0x21a6, 0x4000 },
- { 0x9a00, 0x21a2, 0x3000 },
- { 0x9900, 0x21a0, 0x2000 },
- { 0x1a00, 0x219f, 0x0000 },
- { 0x1a00, 0x21a1, 0x0000 },
- { 0x9a00, 0x21a4, 0x2000 },
- { 0x1900, 0x21a3, 0x0000 },
- { 0x1a00, 0x21a5, 0x0000 },
- { 0x9a00, 0x21aa, 0x3000 },
- { 0x9a00, 0x21a8, 0x2000 },
- { 0x1a00, 0x21a7, 0x0000 },
- { 0x1a00, 0x21a9, 0x0000 },
- { 0x9a00, 0x21ac, 0x2000 },
- { 0x1a00, 0x21ab, 0x0000 },
- { 0x1a00, 0x21ad, 0x0000 },
- { 0x9900, 0x222e, 0x8000 },
- { 0x9a00, 0x21ee, 0x7000 },
- { 0x9900, 0x21ce, 0x6000 },
- { 0x9a00, 0x21be, 0x5000 },
- { 0x9a00, 0x21b6, 0x4000 },
- { 0x9a00, 0x21b2, 0x3000 },
- { 0x9a00, 0x21b0, 0x2000 },
- { 0x1a00, 0x21af, 0x0000 },
- { 0x1a00, 0x21b1, 0x0000 },
- { 0x9a00, 0x21b4, 0x2000 },
- { 0x1a00, 0x21b3, 0x0000 },
- { 0x1a00, 0x21b5, 0x0000 },
- { 0x9a00, 0x21ba, 0x3000 },
- { 0x9a00, 0x21b8, 0x2000 },
- { 0x1a00, 0x21b7, 0x0000 },
- { 0x1a00, 0x21b9, 0x0000 },
- { 0x9a00, 0x21bc, 0x2000 },
- { 0x1a00, 0x21bb, 0x0000 },
- { 0x1a00, 0x21bd, 0x0000 },
- { 0x9a00, 0x21c6, 0x4000 },
- { 0x9a00, 0x21c2, 0x3000 },
- { 0x9a00, 0x21c0, 0x2000 },
- { 0x1a00, 0x21bf, 0x0000 },
- { 0x1a00, 0x21c1, 0x0000 },
- { 0x9a00, 0x21c4, 0x2000 },
- { 0x1a00, 0x21c3, 0x0000 },
- { 0x1a00, 0x21c5, 0x0000 },
- { 0x9a00, 0x21ca, 0x3000 },
- { 0x9a00, 0x21c8, 0x2000 },
- { 0x1a00, 0x21c7, 0x0000 },
- { 0x1a00, 0x21c9, 0x0000 },
- { 0x9a00, 0x21cc, 0x2000 },
- { 0x1a00, 0x21cb, 0x0000 },
- { 0x1a00, 0x21cd, 0x0000 },
- { 0x9a00, 0x21de, 0x5000 },
- { 0x9a00, 0x21d6, 0x4000 },
- { 0x9900, 0x21d2, 0x3000 },
- { 0x9a00, 0x21d0, 0x2000 },
- { 0x1900, 0x21cf, 0x0000 },
- { 0x1a00, 0x21d1, 0x0000 },
- { 0x9900, 0x21d4, 0x2000 },
- { 0x1a00, 0x21d3, 0x0000 },
- { 0x1a00, 0x21d5, 0x0000 },
- { 0x9a00, 0x21da, 0x3000 },
- { 0x9a00, 0x21d8, 0x2000 },
- { 0x1a00, 0x21d7, 0x0000 },
- { 0x1a00, 0x21d9, 0x0000 },
- { 0x9a00, 0x21dc, 0x2000 },
- { 0x1a00, 0x21db, 0x0000 },
- { 0x1a00, 0x21dd, 0x0000 },
- { 0x9a00, 0x21e6, 0x4000 },
- { 0x9a00, 0x21e2, 0x3000 },
- { 0x9a00, 0x21e0, 0x2000 },
- { 0x1a00, 0x21df, 0x0000 },
- { 0x1a00, 0x21e1, 0x0000 },
- { 0x9a00, 0x21e4, 0x2000 },
- { 0x1a00, 0x21e3, 0x0000 },
- { 0x1a00, 0x21e5, 0x0000 },
- { 0x9a00, 0x21ea, 0x3000 },
- { 0x9a00, 0x21e8, 0x2000 },
- { 0x1a00, 0x21e7, 0x0000 },
- { 0x1a00, 0x21e9, 0x0000 },
- { 0x9a00, 0x21ec, 0x2000 },
- { 0x1a00, 0x21eb, 0x0000 },
- { 0x1a00, 0x21ed, 0x0000 },
- { 0x9900, 0x220e, 0x6000 },
- { 0x9900, 0x21fe, 0x5000 },
- { 0x9900, 0x21f6, 0x4000 },
- { 0x9a00, 0x21f2, 0x3000 },
- { 0x9a00, 0x21f0, 0x2000 },
- { 0x1a00, 0x21ef, 0x0000 },
- { 0x1a00, 0x21f1, 0x0000 },
- { 0x9900, 0x21f4, 0x2000 },
- { 0x1a00, 0x21f3, 0x0000 },
- { 0x1900, 0x21f5, 0x0000 },
- { 0x9900, 0x21fa, 0x3000 },
- { 0x9900, 0x21f8, 0x2000 },
- { 0x1900, 0x21f7, 0x0000 },
- { 0x1900, 0x21f9, 0x0000 },
- { 0x9900, 0x21fc, 0x2000 },
- { 0x1900, 0x21fb, 0x0000 },
- { 0x1900, 0x21fd, 0x0000 },
- { 0x9900, 0x2206, 0x4000 },
- { 0x9900, 0x2202, 0x3000 },
- { 0x9900, 0x2200, 0x2000 },
- { 0x1900, 0x21ff, 0x0000 },
- { 0x1900, 0x2201, 0x0000 },
- { 0x9900, 0x2204, 0x2000 },
- { 0x1900, 0x2203, 0x0000 },
- { 0x1900, 0x2205, 0x0000 },
- { 0x9900, 0x220a, 0x3000 },
- { 0x9900, 0x2208, 0x2000 },
- { 0x1900, 0x2207, 0x0000 },
- { 0x1900, 0x2209, 0x0000 },
- { 0x9900, 0x220c, 0x2000 },
- { 0x1900, 0x220b, 0x0000 },
- { 0x1900, 0x220d, 0x0000 },
- { 0x9900, 0x221e, 0x5000 },
- { 0x9900, 0x2216, 0x4000 },
- { 0x9900, 0x2212, 0x3000 },
- { 0x9900, 0x2210, 0x2000 },
- { 0x1900, 0x220f, 0x0000 },
- { 0x1900, 0x2211, 0x0000 },
- { 0x9900, 0x2214, 0x2000 },
- { 0x1900, 0x2213, 0x0000 },
- { 0x1900, 0x2215, 0x0000 },
- { 0x9900, 0x221a, 0x3000 },
- { 0x9900, 0x2218, 0x2000 },
- { 0x1900, 0x2217, 0x0000 },
- { 0x1900, 0x2219, 0x0000 },
- { 0x9900, 0x221c, 0x2000 },
- { 0x1900, 0x221b, 0x0000 },
- { 0x1900, 0x221d, 0x0000 },
- { 0x9900, 0x2226, 0x4000 },
- { 0x9900, 0x2222, 0x3000 },
- { 0x9900, 0x2220, 0x2000 },
- { 0x1900, 0x221f, 0x0000 },
- { 0x1900, 0x2221, 0x0000 },
- { 0x9900, 0x2224, 0x2000 },
- { 0x1900, 0x2223, 0x0000 },
- { 0x1900, 0x2225, 0x0000 },
- { 0x9900, 0x222a, 0x3000 },
- { 0x9900, 0x2228, 0x2000 },
- { 0x1900, 0x2227, 0x0000 },
- { 0x1900, 0x2229, 0x0000 },
- { 0x9900, 0x222c, 0x2000 },
- { 0x1900, 0x222b, 0x0000 },
- { 0x1900, 0x222d, 0x0000 },
- { 0x9900, 0x226e, 0x7000 },
- { 0x9900, 0x224e, 0x6000 },
- { 0x9900, 0x223e, 0x5000 },
- { 0x9900, 0x2236, 0x4000 },
- { 0x9900, 0x2232, 0x3000 },
- { 0x9900, 0x2230, 0x2000 },
- { 0x1900, 0x222f, 0x0000 },
- { 0x1900, 0x2231, 0x0000 },
- { 0x9900, 0x2234, 0x2000 },
- { 0x1900, 0x2233, 0x0000 },
- { 0x1900, 0x2235, 0x0000 },
- { 0x9900, 0x223a, 0x3000 },
- { 0x9900, 0x2238, 0x2000 },
- { 0x1900, 0x2237, 0x0000 },
- { 0x1900, 0x2239, 0x0000 },
- { 0x9900, 0x223c, 0x2000 },
- { 0x1900, 0x223b, 0x0000 },
- { 0x1900, 0x223d, 0x0000 },
- { 0x9900, 0x2246, 0x4000 },
- { 0x9900, 0x2242, 0x3000 },
- { 0x9900, 0x2240, 0x2000 },
- { 0x1900, 0x223f, 0x0000 },
- { 0x1900, 0x2241, 0x0000 },
- { 0x9900, 0x2244, 0x2000 },
- { 0x1900, 0x2243, 0x0000 },
- { 0x1900, 0x2245, 0x0000 },
- { 0x9900, 0x224a, 0x3000 },
- { 0x9900, 0x2248, 0x2000 },
- { 0x1900, 0x2247, 0x0000 },
- { 0x1900, 0x2249, 0x0000 },
- { 0x9900, 0x224c, 0x2000 },
- { 0x1900, 0x224b, 0x0000 },
- { 0x1900, 0x224d, 0x0000 },
- { 0x9900, 0x225e, 0x5000 },
- { 0x9900, 0x2256, 0x4000 },
- { 0x9900, 0x2252, 0x3000 },
- { 0x9900, 0x2250, 0x2000 },
- { 0x1900, 0x224f, 0x0000 },
- { 0x1900, 0x2251, 0x0000 },
- { 0x9900, 0x2254, 0x2000 },
- { 0x1900, 0x2253, 0x0000 },
- { 0x1900, 0x2255, 0x0000 },
- { 0x9900, 0x225a, 0x3000 },
- { 0x9900, 0x2258, 0x2000 },
- { 0x1900, 0x2257, 0x0000 },
- { 0x1900, 0x2259, 0x0000 },
- { 0x9900, 0x225c, 0x2000 },
- { 0x1900, 0x225b, 0x0000 },
- { 0x1900, 0x225d, 0x0000 },
- { 0x9900, 0x2266, 0x4000 },
- { 0x9900, 0x2262, 0x3000 },
- { 0x9900, 0x2260, 0x2000 },
- { 0x1900, 0x225f, 0x0000 },
- { 0x1900, 0x2261, 0x0000 },
- { 0x9900, 0x2264, 0x2000 },
- { 0x1900, 0x2263, 0x0000 },
- { 0x1900, 0x2265, 0x0000 },
- { 0x9900, 0x226a, 0x3000 },
- { 0x9900, 0x2268, 0x2000 },
- { 0x1900, 0x2267, 0x0000 },
- { 0x1900, 0x2269, 0x0000 },
- { 0x9900, 0x226c, 0x2000 },
- { 0x1900, 0x226b, 0x0000 },
- { 0x1900, 0x226d, 0x0000 },
- { 0x9900, 0x228e, 0x6000 },
- { 0x9900, 0x227e, 0x5000 },
- { 0x9900, 0x2276, 0x4000 },
- { 0x9900, 0x2272, 0x3000 },
- { 0x9900, 0x2270, 0x2000 },
- { 0x1900, 0x226f, 0x0000 },
- { 0x1900, 0x2271, 0x0000 },
- { 0x9900, 0x2274, 0x2000 },
- { 0x1900, 0x2273, 0x0000 },
- { 0x1900, 0x2275, 0x0000 },
- { 0x9900, 0x227a, 0x3000 },
- { 0x9900, 0x2278, 0x2000 },
- { 0x1900, 0x2277, 0x0000 },
- { 0x1900, 0x2279, 0x0000 },
- { 0x9900, 0x227c, 0x2000 },
- { 0x1900, 0x227b, 0x0000 },
- { 0x1900, 0x227d, 0x0000 },
- { 0x9900, 0x2286, 0x4000 },
- { 0x9900, 0x2282, 0x3000 },
- { 0x9900, 0x2280, 0x2000 },
- { 0x1900, 0x227f, 0x0000 },
- { 0x1900, 0x2281, 0x0000 },
- { 0x9900, 0x2284, 0x2000 },
- { 0x1900, 0x2283, 0x0000 },
- { 0x1900, 0x2285, 0x0000 },
- { 0x9900, 0x228a, 0x3000 },
- { 0x9900, 0x2288, 0x2000 },
- { 0x1900, 0x2287, 0x0000 },
- { 0x1900, 0x2289, 0x0000 },
- { 0x9900, 0x228c, 0x2000 },
- { 0x1900, 0x228b, 0x0000 },
- { 0x1900, 0x228d, 0x0000 },
- { 0x9900, 0x229e, 0x5000 },
- { 0x9900, 0x2296, 0x4000 },
- { 0x9900, 0x2292, 0x3000 },
- { 0x9900, 0x2290, 0x2000 },
- { 0x1900, 0x228f, 0x0000 },
- { 0x1900, 0x2291, 0x0000 },
- { 0x9900, 0x2294, 0x2000 },
- { 0x1900, 0x2293, 0x0000 },
- { 0x1900, 0x2295, 0x0000 },
- { 0x9900, 0x229a, 0x3000 },
- { 0x9900, 0x2298, 0x2000 },
- { 0x1900, 0x2297, 0x0000 },
- { 0x1900, 0x2299, 0x0000 },
- { 0x9900, 0x229c, 0x2000 },
- { 0x1900, 0x229b, 0x0000 },
- { 0x1900, 0x229d, 0x0000 },
- { 0x9900, 0x22a6, 0x4000 },
- { 0x9900, 0x22a2, 0x3000 },
- { 0x9900, 0x22a0, 0x2000 },
- { 0x1900, 0x229f, 0x0000 },
- { 0x1900, 0x22a1, 0x0000 },
- { 0x9900, 0x22a4, 0x2000 },
- { 0x1900, 0x22a3, 0x0000 },
- { 0x1900, 0x22a5, 0x0000 },
- { 0x9900, 0x22aa, 0x3000 },
- { 0x9900, 0x22a8, 0x2000 },
- { 0x1900, 0x22a7, 0x0000 },
- { 0x1900, 0x22a9, 0x0000 },
- { 0x9900, 0x22ac, 0x2000 },
- { 0x1900, 0x22ab, 0x0000 },
- { 0x1900, 0x22ad, 0x0000 },
- { 0x8f00, 0x2787, 0xb000 },
- { 0x9a00, 0x250b, 0xa000 },
- { 0x9900, 0x23ae, 0x9000 },
- { 0x9a00, 0x232e, 0x8000 },
- { 0x9900, 0x22ee, 0x7000 },
- { 0x9900, 0x22ce, 0x6000 },
- { 0x9900, 0x22be, 0x5000 },
- { 0x9900, 0x22b6, 0x4000 },
- { 0x9900, 0x22b2, 0x3000 },
- { 0x9900, 0x22b0, 0x2000 },
- { 0x1900, 0x22af, 0x0000 },
- { 0x1900, 0x22b1, 0x0000 },
- { 0x9900, 0x22b4, 0x2000 },
- { 0x1900, 0x22b3, 0x0000 },
- { 0x1900, 0x22b5, 0x0000 },
- { 0x9900, 0x22ba, 0x3000 },
- { 0x9900, 0x22b8, 0x2000 },
- { 0x1900, 0x22b7, 0x0000 },
- { 0x1900, 0x22b9, 0x0000 },
- { 0x9900, 0x22bc, 0x2000 },
- { 0x1900, 0x22bb, 0x0000 },
- { 0x1900, 0x22bd, 0x0000 },
- { 0x9900, 0x22c6, 0x4000 },
- { 0x9900, 0x22c2, 0x3000 },
- { 0x9900, 0x22c0, 0x2000 },
- { 0x1900, 0x22bf, 0x0000 },
- { 0x1900, 0x22c1, 0x0000 },
- { 0x9900, 0x22c4, 0x2000 },
- { 0x1900, 0x22c3, 0x0000 },
- { 0x1900, 0x22c5, 0x0000 },
- { 0x9900, 0x22ca, 0x3000 },
- { 0x9900, 0x22c8, 0x2000 },
- { 0x1900, 0x22c7, 0x0000 },
- { 0x1900, 0x22c9, 0x0000 },
- { 0x9900, 0x22cc, 0x2000 },
- { 0x1900, 0x22cb, 0x0000 },
- { 0x1900, 0x22cd, 0x0000 },
- { 0x9900, 0x22de, 0x5000 },
- { 0x9900, 0x22d6, 0x4000 },
- { 0x9900, 0x22d2, 0x3000 },
- { 0x9900, 0x22d0, 0x2000 },
- { 0x1900, 0x22cf, 0x0000 },
- { 0x1900, 0x22d1, 0x0000 },
- { 0x9900, 0x22d4, 0x2000 },
- { 0x1900, 0x22d3, 0x0000 },
- { 0x1900, 0x22d5, 0x0000 },
- { 0x9900, 0x22da, 0x3000 },
- { 0x9900, 0x22d8, 0x2000 },
- { 0x1900, 0x22d7, 0x0000 },
- { 0x1900, 0x22d9, 0x0000 },
- { 0x9900, 0x22dc, 0x2000 },
- { 0x1900, 0x22db, 0x0000 },
- { 0x1900, 0x22dd, 0x0000 },
- { 0x9900, 0x22e6, 0x4000 },
- { 0x9900, 0x22e2, 0x3000 },
- { 0x9900, 0x22e0, 0x2000 },
- { 0x1900, 0x22df, 0x0000 },
- { 0x1900, 0x22e1, 0x0000 },
- { 0x9900, 0x22e4, 0x2000 },
- { 0x1900, 0x22e3, 0x0000 },
- { 0x1900, 0x22e5, 0x0000 },
- { 0x9900, 0x22ea, 0x3000 },
- { 0x9900, 0x22e8, 0x2000 },
- { 0x1900, 0x22e7, 0x0000 },
- { 0x1900, 0x22e9, 0x0000 },
- { 0x9900, 0x22ec, 0x2000 },
- { 0x1900, 0x22eb, 0x0000 },
- { 0x1900, 0x22ed, 0x0000 },
- { 0x9a00, 0x230e, 0x6000 },
- { 0x9900, 0x22fe, 0x5000 },
- { 0x9900, 0x22f6, 0x4000 },
- { 0x9900, 0x22f2, 0x3000 },
- { 0x9900, 0x22f0, 0x2000 },
- { 0x1900, 0x22ef, 0x0000 },
- { 0x1900, 0x22f1, 0x0000 },
- { 0x9900, 0x22f4, 0x2000 },
- { 0x1900, 0x22f3, 0x0000 },
- { 0x1900, 0x22f5, 0x0000 },
- { 0x9900, 0x22fa, 0x3000 },
- { 0x9900, 0x22f8, 0x2000 },
- { 0x1900, 0x22f7, 0x0000 },
- { 0x1900, 0x22f9, 0x0000 },
- { 0x9900, 0x22fc, 0x2000 },
- { 0x1900, 0x22fb, 0x0000 },
- { 0x1900, 0x22fd, 0x0000 },
- { 0x9a00, 0x2306, 0x4000 },
- { 0x9a00, 0x2302, 0x3000 },
- { 0x9a00, 0x2300, 0x2000 },
- { 0x1900, 0x22ff, 0x0000 },
- { 0x1a00, 0x2301, 0x0000 },
- { 0x9a00, 0x2304, 0x2000 },
- { 0x1a00, 0x2303, 0x0000 },
- { 0x1a00, 0x2305, 0x0000 },
- { 0x9900, 0x230a, 0x3000 },
- { 0x9900, 0x2308, 0x2000 },
- { 0x1a00, 0x2307, 0x0000 },
- { 0x1900, 0x2309, 0x0000 },
- { 0x9a00, 0x230c, 0x2000 },
- { 0x1900, 0x230b, 0x0000 },
- { 0x1a00, 0x230d, 0x0000 },
- { 0x9a00, 0x231e, 0x5000 },
- { 0x9a00, 0x2316, 0x4000 },
- { 0x9a00, 0x2312, 0x3000 },
- { 0x9a00, 0x2310, 0x2000 },
- { 0x1a00, 0x230f, 0x0000 },
- { 0x1a00, 0x2311, 0x0000 },
- { 0x9a00, 0x2314, 0x2000 },
- { 0x1a00, 0x2313, 0x0000 },
- { 0x1a00, 0x2315, 0x0000 },
- { 0x9a00, 0x231a, 0x3000 },
- { 0x9a00, 0x2318, 0x2000 },
- { 0x1a00, 0x2317, 0x0000 },
- { 0x1a00, 0x2319, 0x0000 },
- { 0x9a00, 0x231c, 0x2000 },
- { 0x1a00, 0x231b, 0x0000 },
- { 0x1a00, 0x231d, 0x0000 },
- { 0x9a00, 0x2326, 0x4000 },
- { 0x9a00, 0x2322, 0x3000 },
- { 0x9900, 0x2320, 0x2000 },
- { 0x1a00, 0x231f, 0x0000 },
- { 0x1900, 0x2321, 0x0000 },
- { 0x9a00, 0x2324, 0x2000 },
- { 0x1a00, 0x2323, 0x0000 },
- { 0x1a00, 0x2325, 0x0000 },
- { 0x9200, 0x232a, 0x3000 },
- { 0x9a00, 0x2328, 0x2000 },
- { 0x1a00, 0x2327, 0x0000 },
- { 0x1600, 0x2329, 0x0000 },
- { 0x9a00, 0x232c, 0x2000 },
- { 0x1a00, 0x232b, 0x0000 },
- { 0x1a00, 0x232d, 0x0000 },
- { 0x9a00, 0x236e, 0x7000 },
- { 0x9a00, 0x234e, 0x6000 },
- { 0x9a00, 0x233e, 0x5000 },
- { 0x9a00, 0x2336, 0x4000 },
- { 0x9a00, 0x2332, 0x3000 },
- { 0x9a00, 0x2330, 0x2000 },
- { 0x1a00, 0x232f, 0x0000 },
- { 0x1a00, 0x2331, 0x0000 },
- { 0x9a00, 0x2334, 0x2000 },
- { 0x1a00, 0x2333, 0x0000 },
- { 0x1a00, 0x2335, 0x0000 },
- { 0x9a00, 0x233a, 0x3000 },
- { 0x9a00, 0x2338, 0x2000 },
- { 0x1a00, 0x2337, 0x0000 },
- { 0x1a00, 0x2339, 0x0000 },
- { 0x9a00, 0x233c, 0x2000 },
- { 0x1a00, 0x233b, 0x0000 },
- { 0x1a00, 0x233d, 0x0000 },
- { 0x9a00, 0x2346, 0x4000 },
- { 0x9a00, 0x2342, 0x3000 },
- { 0x9a00, 0x2340, 0x2000 },
- { 0x1a00, 0x233f, 0x0000 },
- { 0x1a00, 0x2341, 0x0000 },
- { 0x9a00, 0x2344, 0x2000 },
- { 0x1a00, 0x2343, 0x0000 },
- { 0x1a00, 0x2345, 0x0000 },
- { 0x9a00, 0x234a, 0x3000 },
- { 0x9a00, 0x2348, 0x2000 },
- { 0x1a00, 0x2347, 0x0000 },
- { 0x1a00, 0x2349, 0x0000 },
- { 0x9a00, 0x234c, 0x2000 },
- { 0x1a00, 0x234b, 0x0000 },
- { 0x1a00, 0x234d, 0x0000 },
- { 0x9a00, 0x235e, 0x5000 },
- { 0x9a00, 0x2356, 0x4000 },
- { 0x9a00, 0x2352, 0x3000 },
- { 0x9a00, 0x2350, 0x2000 },
- { 0x1a00, 0x234f, 0x0000 },
- { 0x1a00, 0x2351, 0x0000 },
- { 0x9a00, 0x2354, 0x2000 },
- { 0x1a00, 0x2353, 0x0000 },
- { 0x1a00, 0x2355, 0x0000 },
- { 0x9a00, 0x235a, 0x3000 },
- { 0x9a00, 0x2358, 0x2000 },
- { 0x1a00, 0x2357, 0x0000 },
- { 0x1a00, 0x2359, 0x0000 },
- { 0x9a00, 0x235c, 0x2000 },
- { 0x1a00, 0x235b, 0x0000 },
- { 0x1a00, 0x235d, 0x0000 },
- { 0x9a00, 0x2366, 0x4000 },
- { 0x9a00, 0x2362, 0x3000 },
- { 0x9a00, 0x2360, 0x2000 },
- { 0x1a00, 0x235f, 0x0000 },
- { 0x1a00, 0x2361, 0x0000 },
- { 0x9a00, 0x2364, 0x2000 },
- { 0x1a00, 0x2363, 0x0000 },
- { 0x1a00, 0x2365, 0x0000 },
- { 0x9a00, 0x236a, 0x3000 },
- { 0x9a00, 0x2368, 0x2000 },
- { 0x1a00, 0x2367, 0x0000 },
- { 0x1a00, 0x2369, 0x0000 },
- { 0x9a00, 0x236c, 0x2000 },
- { 0x1a00, 0x236b, 0x0000 },
- { 0x1a00, 0x236d, 0x0000 },
- { 0x9a00, 0x238e, 0x6000 },
- { 0x9a00, 0x237e, 0x5000 },
- { 0x9a00, 0x2376, 0x4000 },
- { 0x9a00, 0x2372, 0x3000 },
- { 0x9a00, 0x2370, 0x2000 },
- { 0x1a00, 0x236f, 0x0000 },
- { 0x1a00, 0x2371, 0x0000 },
- { 0x9a00, 0x2374, 0x2000 },
- { 0x1a00, 0x2373, 0x0000 },
- { 0x1a00, 0x2375, 0x0000 },
- { 0x9a00, 0x237a, 0x3000 },
- { 0x9a00, 0x2378, 0x2000 },
- { 0x1a00, 0x2377, 0x0000 },
- { 0x1a00, 0x2379, 0x0000 },
- { 0x9900, 0x237c, 0x2000 },
- { 0x1a00, 0x237b, 0x0000 },
- { 0x1a00, 0x237d, 0x0000 },
- { 0x9a00, 0x2386, 0x4000 },
- { 0x9a00, 0x2382, 0x3000 },
- { 0x9a00, 0x2380, 0x2000 },
- { 0x1a00, 0x237f, 0x0000 },
- { 0x1a00, 0x2381, 0x0000 },
- { 0x9a00, 0x2384, 0x2000 },
- { 0x1a00, 0x2383, 0x0000 },
- { 0x1a00, 0x2385, 0x0000 },
- { 0x9a00, 0x238a, 0x3000 },
- { 0x9a00, 0x2388, 0x2000 },
- { 0x1a00, 0x2387, 0x0000 },
- { 0x1a00, 0x2389, 0x0000 },
- { 0x9a00, 0x238c, 0x2000 },
- { 0x1a00, 0x238b, 0x0000 },
- { 0x1a00, 0x238d, 0x0000 },
- { 0x9900, 0x239e, 0x5000 },
- { 0x9a00, 0x2396, 0x4000 },
- { 0x9a00, 0x2392, 0x3000 },
- { 0x9a00, 0x2390, 0x2000 },
- { 0x1a00, 0x238f, 0x0000 },
- { 0x1a00, 0x2391, 0x0000 },
- { 0x9a00, 0x2394, 0x2000 },
- { 0x1a00, 0x2393, 0x0000 },
- { 0x1a00, 0x2395, 0x0000 },
- { 0x9a00, 0x239a, 0x3000 },
- { 0x9a00, 0x2398, 0x2000 },
- { 0x1a00, 0x2397, 0x0000 },
- { 0x1a00, 0x2399, 0x0000 },
- { 0x9900, 0x239c, 0x2000 },
- { 0x1900, 0x239b, 0x0000 },
- { 0x1900, 0x239d, 0x0000 },
- { 0x9900, 0x23a6, 0x4000 },
- { 0x9900, 0x23a2, 0x3000 },
- { 0x9900, 0x23a0, 0x2000 },
- { 0x1900, 0x239f, 0x0000 },
- { 0x1900, 0x23a1, 0x0000 },
- { 0x9900, 0x23a4, 0x2000 },
- { 0x1900, 0x23a3, 0x0000 },
- { 0x1900, 0x23a5, 0x0000 },
- { 0x9900, 0x23aa, 0x3000 },
- { 0x9900, 0x23a8, 0x2000 },
- { 0x1900, 0x23a7, 0x0000 },
- { 0x1900, 0x23a9, 0x0000 },
- { 0x9900, 0x23ac, 0x2000 },
- { 0x1900, 0x23ab, 0x0000 },
- { 0x1900, 0x23ad, 0x0000 },
- { 0x8f00, 0x248b, 0x8000 },
- { 0x9a00, 0x241d, 0x7000 },
- { 0x9a00, 0x23ce, 0x6000 },
- { 0x9a00, 0x23be, 0x5000 },
- { 0x9500, 0x23b6, 0x4000 },
- { 0x9900, 0x23b2, 0x3000 },
- { 0x9900, 0x23b0, 0x2000 },
- { 0x1900, 0x23af, 0x0000 },
- { 0x1900, 0x23b1, 0x0000 },
- { 0x9600, 0x23b4, 0x2000 },
- { 0x1900, 0x23b3, 0x0000 },
- { 0x1200, 0x23b5, 0x0000 },
- { 0x9a00, 0x23ba, 0x3000 },
- { 0x9a00, 0x23b8, 0x2000 },
- { 0x1a00, 0x23b7, 0x0000 },
- { 0x1a00, 0x23b9, 0x0000 },
- { 0x9a00, 0x23bc, 0x2000 },
- { 0x1a00, 0x23bb, 0x0000 },
- { 0x1a00, 0x23bd, 0x0000 },
- { 0x9a00, 0x23c6, 0x4000 },
- { 0x9a00, 0x23c2, 0x3000 },
- { 0x9a00, 0x23c0, 0x2000 },
- { 0x1a00, 0x23bf, 0x0000 },
- { 0x1a00, 0x23c1, 0x0000 },
- { 0x9a00, 0x23c4, 0x2000 },
- { 0x1a00, 0x23c3, 0x0000 },
- { 0x1a00, 0x23c5, 0x0000 },
- { 0x9a00, 0x23ca, 0x3000 },
- { 0x9a00, 0x23c8, 0x2000 },
- { 0x1a00, 0x23c7, 0x0000 },
- { 0x1a00, 0x23c9, 0x0000 },
- { 0x9a00, 0x23cc, 0x2000 },
- { 0x1a00, 0x23cb, 0x0000 },
- { 0x1a00, 0x23cd, 0x0000 },
- { 0x9a00, 0x240d, 0x5000 },
- { 0x9a00, 0x2405, 0x4000 },
- { 0x9a00, 0x2401, 0x3000 },
- { 0x9a00, 0x23d0, 0x2000 },
- { 0x1a00, 0x23cf, 0x0000 },
- { 0x1a00, 0x2400, 0x0000 },
- { 0x9a00, 0x2403, 0x2000 },
- { 0x1a00, 0x2402, 0x0000 },
- { 0x1a00, 0x2404, 0x0000 },
- { 0x9a00, 0x2409, 0x3000 },
- { 0x9a00, 0x2407, 0x2000 },
- { 0x1a00, 0x2406, 0x0000 },
- { 0x1a00, 0x2408, 0x0000 },
- { 0x9a00, 0x240b, 0x2000 },
- { 0x1a00, 0x240a, 0x0000 },
- { 0x1a00, 0x240c, 0x0000 },
- { 0x9a00, 0x2415, 0x4000 },
- { 0x9a00, 0x2411, 0x3000 },
- { 0x9a00, 0x240f, 0x2000 },
- { 0x1a00, 0x240e, 0x0000 },
- { 0x1a00, 0x2410, 0x0000 },
- { 0x9a00, 0x2413, 0x2000 },
- { 0x1a00, 0x2412, 0x0000 },
- { 0x1a00, 0x2414, 0x0000 },
- { 0x9a00, 0x2419, 0x3000 },
- { 0x9a00, 0x2417, 0x2000 },
- { 0x1a00, 0x2416, 0x0000 },
- { 0x1a00, 0x2418, 0x0000 },
- { 0x9a00, 0x241b, 0x2000 },
- { 0x1a00, 0x241a, 0x0000 },
- { 0x1a00, 0x241c, 0x0000 },
- { 0x8f00, 0x246b, 0x6000 },
- { 0x9a00, 0x2446, 0x5000 },
- { 0x9a00, 0x2425, 0x4000 },
- { 0x9a00, 0x2421, 0x3000 },
- { 0x9a00, 0x241f, 0x2000 },
- { 0x1a00, 0x241e, 0x0000 },
- { 0x1a00, 0x2420, 0x0000 },
- { 0x9a00, 0x2423, 0x2000 },
- { 0x1a00, 0x2422, 0x0000 },
- { 0x1a00, 0x2424, 0x0000 },
- { 0x9a00, 0x2442, 0x3000 },
- { 0x9a00, 0x2440, 0x2000 },
- { 0x1a00, 0x2426, 0x0000 },
- { 0x1a00, 0x2441, 0x0000 },
- { 0x9a00, 0x2444, 0x2000 },
- { 0x1a00, 0x2443, 0x0000 },
- { 0x1a00, 0x2445, 0x0000 },
- { 0x8f00, 0x2463, 0x4000 },
- { 0x9a00, 0x244a, 0x3000 },
- { 0x9a00, 0x2448, 0x2000 },
- { 0x1a00, 0x2447, 0x0000 },
- { 0x1a00, 0x2449, 0x0000 },
- { 0x8f00, 0x2461, 0x2000 },
- { 0x0f00, 0x2460, 0x0000 },
- { 0x0f00, 0x2462, 0x0000 },
- { 0x8f00, 0x2467, 0x3000 },
- { 0x8f00, 0x2465, 0x2000 },
- { 0x0f00, 0x2464, 0x0000 },
- { 0x0f00, 0x2466, 0x0000 },
- { 0x8f00, 0x2469, 0x2000 },
- { 0x0f00, 0x2468, 0x0000 },
- { 0x0f00, 0x246a, 0x0000 },
- { 0x8f00, 0x247b, 0x5000 },
- { 0x8f00, 0x2473, 0x4000 },
- { 0x8f00, 0x246f, 0x3000 },
- { 0x8f00, 0x246d, 0x2000 },
- { 0x0f00, 0x246c, 0x0000 },
- { 0x0f00, 0x246e, 0x0000 },
- { 0x8f00, 0x2471, 0x2000 },
- { 0x0f00, 0x2470, 0x0000 },
- { 0x0f00, 0x2472, 0x0000 },
- { 0x8f00, 0x2477, 0x3000 },
- { 0x8f00, 0x2475, 0x2000 },
- { 0x0f00, 0x2474, 0x0000 },
- { 0x0f00, 0x2476, 0x0000 },
- { 0x8f00, 0x2479, 0x2000 },
- { 0x0f00, 0x2478, 0x0000 },
- { 0x0f00, 0x247a, 0x0000 },
- { 0x8f00, 0x2483, 0x4000 },
- { 0x8f00, 0x247f, 0x3000 },
- { 0x8f00, 0x247d, 0x2000 },
- { 0x0f00, 0x247c, 0x0000 },
- { 0x0f00, 0x247e, 0x0000 },
- { 0x8f00, 0x2481, 0x2000 },
- { 0x0f00, 0x2480, 0x0000 },
- { 0x0f00, 0x2482, 0x0000 },
- { 0x8f00, 0x2487, 0x3000 },
- { 0x8f00, 0x2485, 0x2000 },
- { 0x0f00, 0x2484, 0x0000 },
- { 0x0f00, 0x2486, 0x0000 },
- { 0x8f00, 0x2489, 0x2000 },
- { 0x0f00, 0x2488, 0x0000 },
- { 0x0f00, 0x248a, 0x0000 },
- { 0x9a00, 0x24cb, 0x7000 },
- { 0x9a00, 0x24ab, 0x6000 },
- { 0x8f00, 0x249b, 0x5000 },
- { 0x8f00, 0x2493, 0x4000 },
- { 0x8f00, 0x248f, 0x3000 },
- { 0x8f00, 0x248d, 0x2000 },
- { 0x0f00, 0x248c, 0x0000 },
- { 0x0f00, 0x248e, 0x0000 },
- { 0x8f00, 0x2491, 0x2000 },
- { 0x0f00, 0x2490, 0x0000 },
- { 0x0f00, 0x2492, 0x0000 },
- { 0x8f00, 0x2497, 0x3000 },
- { 0x8f00, 0x2495, 0x2000 },
- { 0x0f00, 0x2494, 0x0000 },
- { 0x0f00, 0x2496, 0x0000 },
- { 0x8f00, 0x2499, 0x2000 },
- { 0x0f00, 0x2498, 0x0000 },
- { 0x0f00, 0x249a, 0x0000 },
- { 0x9a00, 0x24a3, 0x4000 },
- { 0x9a00, 0x249f, 0x3000 },
- { 0x9a00, 0x249d, 0x2000 },
- { 0x1a00, 0x249c, 0x0000 },
- { 0x1a00, 0x249e, 0x0000 },
- { 0x9a00, 0x24a1, 0x2000 },
- { 0x1a00, 0x24a0, 0x0000 },
- { 0x1a00, 0x24a2, 0x0000 },
- { 0x9a00, 0x24a7, 0x3000 },
- { 0x9a00, 0x24a5, 0x2000 },
- { 0x1a00, 0x24a4, 0x0000 },
- { 0x1a00, 0x24a6, 0x0000 },
- { 0x9a00, 0x24a9, 0x2000 },
- { 0x1a00, 0x24a8, 0x0000 },
- { 0x1a00, 0x24aa, 0x0000 },
- { 0x9a00, 0x24bb, 0x5000 },
- { 0x9a00, 0x24b3, 0x4000 },
- { 0x9a00, 0x24af, 0x3000 },
- { 0x9a00, 0x24ad, 0x2000 },
- { 0x1a00, 0x24ac, 0x0000 },
- { 0x1a00, 0x24ae, 0x0000 },
- { 0x9a00, 0x24b1, 0x2000 },
- { 0x1a00, 0x24b0, 0x0000 },
- { 0x1a00, 0x24b2, 0x0000 },
- { 0x9a00, 0x24b7, 0x3000 },
- { 0x9a00, 0x24b5, 0x2000 },
- { 0x1a00, 0x24b4, 0x0000 },
- { 0x1a00, 0x24b6, 0x0000 },
- { 0x9a00, 0x24b9, 0x2000 },
- { 0x1a00, 0x24b8, 0x0000 },
- { 0x1a00, 0x24ba, 0x0000 },
- { 0x9a00, 0x24c3, 0x4000 },
- { 0x9a00, 0x24bf, 0x3000 },
- { 0x9a00, 0x24bd, 0x2000 },
- { 0x1a00, 0x24bc, 0x0000 },
- { 0x1a00, 0x24be, 0x0000 },
- { 0x9a00, 0x24c1, 0x2000 },
- { 0x1a00, 0x24c0, 0x0000 },
- { 0x1a00, 0x24c2, 0x0000 },
- { 0x9a00, 0x24c7, 0x3000 },
- { 0x9a00, 0x24c5, 0x2000 },
- { 0x1a00, 0x24c4, 0x0000 },
- { 0x1a00, 0x24c6, 0x0000 },
- { 0x9a00, 0x24c9, 0x2000 },
- { 0x1a00, 0x24c8, 0x0000 },
- { 0x1a00, 0x24ca, 0x0000 },
- { 0x8f00, 0x24eb, 0x6000 },
- { 0x9a00, 0x24db, 0x5000 },
- { 0x9a00, 0x24d3, 0x4000 },
- { 0x9a00, 0x24cf, 0x3000 },
- { 0x9a00, 0x24cd, 0x2000 },
- { 0x1a00, 0x24cc, 0x0000 },
- { 0x1a00, 0x24ce, 0x0000 },
- { 0x9a00, 0x24d1, 0x2000 },
- { 0x1a00, 0x24d0, 0x0000 },
- { 0x1a00, 0x24d2, 0x0000 },
- { 0x9a00, 0x24d7, 0x3000 },
- { 0x9a00, 0x24d5, 0x2000 },
- { 0x1a00, 0x24d4, 0x0000 },
- { 0x1a00, 0x24d6, 0x0000 },
- { 0x9a00, 0x24d9, 0x2000 },
- { 0x1a00, 0x24d8, 0x0000 },
- { 0x1a00, 0x24da, 0x0000 },
- { 0x9a00, 0x24e3, 0x4000 },
- { 0x9a00, 0x24df, 0x3000 },
- { 0x9a00, 0x24dd, 0x2000 },
- { 0x1a00, 0x24dc, 0x0000 },
- { 0x1a00, 0x24de, 0x0000 },
- { 0x9a00, 0x24e1, 0x2000 },
- { 0x1a00, 0x24e0, 0x0000 },
- { 0x1a00, 0x24e2, 0x0000 },
- { 0x9a00, 0x24e7, 0x3000 },
- { 0x9a00, 0x24e5, 0x2000 },
- { 0x1a00, 0x24e4, 0x0000 },
- { 0x1a00, 0x24e6, 0x0000 },
- { 0x9a00, 0x24e9, 0x2000 },
- { 0x1a00, 0x24e8, 0x0000 },
- { 0x0f00, 0x24ea, 0x0000 },
- { 0x8f00, 0x24fb, 0x5000 },
- { 0x8f00, 0x24f3, 0x4000 },
- { 0x8f00, 0x24ef, 0x3000 },
- { 0x8f00, 0x24ed, 0x2000 },
- { 0x0f00, 0x24ec, 0x0000 },
- { 0x0f00, 0x24ee, 0x0000 },
- { 0x8f00, 0x24f1, 0x2000 },
- { 0x0f00, 0x24f0, 0x0000 },
- { 0x0f00, 0x24f2, 0x0000 },
- { 0x8f00, 0x24f7, 0x3000 },
- { 0x8f00, 0x24f5, 0x2000 },
- { 0x0f00, 0x24f4, 0x0000 },
- { 0x0f00, 0x24f6, 0x0000 },
- { 0x8f00, 0x24f9, 0x2000 },
- { 0x0f00, 0x24f8, 0x0000 },
- { 0x0f00, 0x24fa, 0x0000 },
- { 0x9a00, 0x2503, 0x4000 },
- { 0x8f00, 0x24ff, 0x3000 },
- { 0x8f00, 0x24fd, 0x2000 },
- { 0x0f00, 0x24fc, 0x0000 },
- { 0x0f00, 0x24fe, 0x0000 },
- { 0x9a00, 0x2501, 0x2000 },
- { 0x1a00, 0x2500, 0x0000 },
- { 0x1a00, 0x2502, 0x0000 },
- { 0x9a00, 0x2507, 0x3000 },
- { 0x9a00, 0x2505, 0x2000 },
- { 0x1a00, 0x2504, 0x0000 },
- { 0x1a00, 0x2506, 0x0000 },
- { 0x9a00, 0x2509, 0x2000 },
- { 0x1a00, 0x2508, 0x0000 },
- { 0x1a00, 0x250a, 0x0000 },
- { 0x9a00, 0x260b, 0x9000 },
- { 0x9a00, 0x258b, 0x8000 },
- { 0x9a00, 0x254b, 0x7000 },
- { 0x9a00, 0x252b, 0x6000 },
- { 0x9a00, 0x251b, 0x5000 },
- { 0x9a00, 0x2513, 0x4000 },
- { 0x9a00, 0x250f, 0x3000 },
- { 0x9a00, 0x250d, 0x2000 },
- { 0x1a00, 0x250c, 0x0000 },
- { 0x1a00, 0x250e, 0x0000 },
- { 0x9a00, 0x2511, 0x2000 },
- { 0x1a00, 0x2510, 0x0000 },
- { 0x1a00, 0x2512, 0x0000 },
- { 0x9a00, 0x2517, 0x3000 },
- { 0x9a00, 0x2515, 0x2000 },
- { 0x1a00, 0x2514, 0x0000 },
- { 0x1a00, 0x2516, 0x0000 },
- { 0x9a00, 0x2519, 0x2000 },
- { 0x1a00, 0x2518, 0x0000 },
- { 0x1a00, 0x251a, 0x0000 },
- { 0x9a00, 0x2523, 0x4000 },
- { 0x9a00, 0x251f, 0x3000 },
- { 0x9a00, 0x251d, 0x2000 },
- { 0x1a00, 0x251c, 0x0000 },
- { 0x1a00, 0x251e, 0x0000 },
- { 0x9a00, 0x2521, 0x2000 },
- { 0x1a00, 0x2520, 0x0000 },
- { 0x1a00, 0x2522, 0x0000 },
- { 0x9a00, 0x2527, 0x3000 },
- { 0x9a00, 0x2525, 0x2000 },
- { 0x1a00, 0x2524, 0x0000 },
- { 0x1a00, 0x2526, 0x0000 },
- { 0x9a00, 0x2529, 0x2000 },
- { 0x1a00, 0x2528, 0x0000 },
- { 0x1a00, 0x252a, 0x0000 },
- { 0x9a00, 0x253b, 0x5000 },
- { 0x9a00, 0x2533, 0x4000 },
- { 0x9a00, 0x252f, 0x3000 },
- { 0x9a00, 0x252d, 0x2000 },
- { 0x1a00, 0x252c, 0x0000 },
- { 0x1a00, 0x252e, 0x0000 },
- { 0x9a00, 0x2531, 0x2000 },
- { 0x1a00, 0x2530, 0x0000 },
- { 0x1a00, 0x2532, 0x0000 },
- { 0x9a00, 0x2537, 0x3000 },
- { 0x9a00, 0x2535, 0x2000 },
- { 0x1a00, 0x2534, 0x0000 },
- { 0x1a00, 0x2536, 0x0000 },
- { 0x9a00, 0x2539, 0x2000 },
- { 0x1a00, 0x2538, 0x0000 },
- { 0x1a00, 0x253a, 0x0000 },
- { 0x9a00, 0x2543, 0x4000 },
- { 0x9a00, 0x253f, 0x3000 },
- { 0x9a00, 0x253d, 0x2000 },
- { 0x1a00, 0x253c, 0x0000 },
- { 0x1a00, 0x253e, 0x0000 },
- { 0x9a00, 0x2541, 0x2000 },
- { 0x1a00, 0x2540, 0x0000 },
- { 0x1a00, 0x2542, 0x0000 },
- { 0x9a00, 0x2547, 0x3000 },
- { 0x9a00, 0x2545, 0x2000 },
- { 0x1a00, 0x2544, 0x0000 },
- { 0x1a00, 0x2546, 0x0000 },
- { 0x9a00, 0x2549, 0x2000 },
- { 0x1a00, 0x2548, 0x0000 },
- { 0x1a00, 0x254a, 0x0000 },
- { 0x9a00, 0x256b, 0x6000 },
- { 0x9a00, 0x255b, 0x5000 },
- { 0x9a00, 0x2553, 0x4000 },
- { 0x9a00, 0x254f, 0x3000 },
- { 0x9a00, 0x254d, 0x2000 },
- { 0x1a00, 0x254c, 0x0000 },
- { 0x1a00, 0x254e, 0x0000 },
- { 0x9a00, 0x2551, 0x2000 },
- { 0x1a00, 0x2550, 0x0000 },
- { 0x1a00, 0x2552, 0x0000 },
- { 0x9a00, 0x2557, 0x3000 },
- { 0x9a00, 0x2555, 0x2000 },
- { 0x1a00, 0x2554, 0x0000 },
- { 0x1a00, 0x2556, 0x0000 },
- { 0x9a00, 0x2559, 0x2000 },
- { 0x1a00, 0x2558, 0x0000 },
- { 0x1a00, 0x255a, 0x0000 },
- { 0x9a00, 0x2563, 0x4000 },
- { 0x9a00, 0x255f, 0x3000 },
- { 0x9a00, 0x255d, 0x2000 },
- { 0x1a00, 0x255c, 0x0000 },
- { 0x1a00, 0x255e, 0x0000 },
- { 0x9a00, 0x2561, 0x2000 },
- { 0x1a00, 0x2560, 0x0000 },
- { 0x1a00, 0x2562, 0x0000 },
- { 0x9a00, 0x2567, 0x3000 },
- { 0x9a00, 0x2565, 0x2000 },
- { 0x1a00, 0x2564, 0x0000 },
- { 0x1a00, 0x2566, 0x0000 },
- { 0x9a00, 0x2569, 0x2000 },
- { 0x1a00, 0x2568, 0x0000 },
- { 0x1a00, 0x256a, 0x0000 },
- { 0x9a00, 0x257b, 0x5000 },
- { 0x9a00, 0x2573, 0x4000 },
- { 0x9a00, 0x256f, 0x3000 },
- { 0x9a00, 0x256d, 0x2000 },
- { 0x1a00, 0x256c, 0x0000 },
- { 0x1a00, 0x256e, 0x0000 },
- { 0x9a00, 0x2571, 0x2000 },
- { 0x1a00, 0x2570, 0x0000 },
- { 0x1a00, 0x2572, 0x0000 },
- { 0x9a00, 0x2577, 0x3000 },
- { 0x9a00, 0x2575, 0x2000 },
- { 0x1a00, 0x2574, 0x0000 },
- { 0x1a00, 0x2576, 0x0000 },
- { 0x9a00, 0x2579, 0x2000 },
- { 0x1a00, 0x2578, 0x0000 },
- { 0x1a00, 0x257a, 0x0000 },
- { 0x9a00, 0x2583, 0x4000 },
- { 0x9a00, 0x257f, 0x3000 },
- { 0x9a00, 0x257d, 0x2000 },
- { 0x1a00, 0x257c, 0x0000 },
- { 0x1a00, 0x257e, 0x0000 },
- { 0x9a00, 0x2581, 0x2000 },
- { 0x1a00, 0x2580, 0x0000 },
- { 0x1a00, 0x2582, 0x0000 },
- { 0x9a00, 0x2587, 0x3000 },
- { 0x9a00, 0x2585, 0x2000 },
- { 0x1a00, 0x2584, 0x0000 },
- { 0x1a00, 0x2586, 0x0000 },
- { 0x9a00, 0x2589, 0x2000 },
- { 0x1a00, 0x2588, 0x0000 },
- { 0x1a00, 0x258a, 0x0000 },
- { 0x9a00, 0x25cb, 0x7000 },
- { 0x9a00, 0x25ab, 0x6000 },
- { 0x9a00, 0x259b, 0x5000 },
- { 0x9a00, 0x2593, 0x4000 },
- { 0x9a00, 0x258f, 0x3000 },
- { 0x9a00, 0x258d, 0x2000 },
- { 0x1a00, 0x258c, 0x0000 },
- { 0x1a00, 0x258e, 0x0000 },
- { 0x9a00, 0x2591, 0x2000 },
- { 0x1a00, 0x2590, 0x0000 },
- { 0x1a00, 0x2592, 0x0000 },
- { 0x9a00, 0x2597, 0x3000 },
- { 0x9a00, 0x2595, 0x2000 },
- { 0x1a00, 0x2594, 0x0000 },
- { 0x1a00, 0x2596, 0x0000 },
- { 0x9a00, 0x2599, 0x2000 },
- { 0x1a00, 0x2598, 0x0000 },
- { 0x1a00, 0x259a, 0x0000 },
- { 0x9a00, 0x25a3, 0x4000 },
- { 0x9a00, 0x259f, 0x3000 },
- { 0x9a00, 0x259d, 0x2000 },
- { 0x1a00, 0x259c, 0x0000 },
- { 0x1a00, 0x259e, 0x0000 },
- { 0x9a00, 0x25a1, 0x2000 },
- { 0x1a00, 0x25a0, 0x0000 },
- { 0x1a00, 0x25a2, 0x0000 },
- { 0x9a00, 0x25a7, 0x3000 },
- { 0x9a00, 0x25a5, 0x2000 },
- { 0x1a00, 0x25a4, 0x0000 },
- { 0x1a00, 0x25a6, 0x0000 },
- { 0x9a00, 0x25a9, 0x2000 },
- { 0x1a00, 0x25a8, 0x0000 },
- { 0x1a00, 0x25aa, 0x0000 },
- { 0x9a00, 0x25bb, 0x5000 },
- { 0x9a00, 0x25b3, 0x4000 },
- { 0x9a00, 0x25af, 0x3000 },
- { 0x9a00, 0x25ad, 0x2000 },
- { 0x1a00, 0x25ac, 0x0000 },
- { 0x1a00, 0x25ae, 0x0000 },
- { 0x9a00, 0x25b1, 0x2000 },
- { 0x1a00, 0x25b0, 0x0000 },
- { 0x1a00, 0x25b2, 0x0000 },
- { 0x9900, 0x25b7, 0x3000 },
- { 0x9a00, 0x25b5, 0x2000 },
- { 0x1a00, 0x25b4, 0x0000 },
- { 0x1a00, 0x25b6, 0x0000 },
- { 0x9a00, 0x25b9, 0x2000 },
- { 0x1a00, 0x25b8, 0x0000 },
- { 0x1a00, 0x25ba, 0x0000 },
- { 0x9a00, 0x25c3, 0x4000 },
- { 0x9a00, 0x25bf, 0x3000 },
- { 0x9a00, 0x25bd, 0x2000 },
- { 0x1a00, 0x25bc, 0x0000 },
- { 0x1a00, 0x25be, 0x0000 },
- { 0x9900, 0x25c1, 0x2000 },
- { 0x1a00, 0x25c0, 0x0000 },
- { 0x1a00, 0x25c2, 0x0000 },
- { 0x9a00, 0x25c7, 0x3000 },
- { 0x9a00, 0x25c5, 0x2000 },
- { 0x1a00, 0x25c4, 0x0000 },
- { 0x1a00, 0x25c6, 0x0000 },
- { 0x9a00, 0x25c9, 0x2000 },
- { 0x1a00, 0x25c8, 0x0000 },
- { 0x1a00, 0x25ca, 0x0000 },
- { 0x9a00, 0x25eb, 0x6000 },
- { 0x9a00, 0x25db, 0x5000 },
- { 0x9a00, 0x25d3, 0x4000 },
- { 0x9a00, 0x25cf, 0x3000 },
- { 0x9a00, 0x25cd, 0x2000 },
- { 0x1a00, 0x25cc, 0x0000 },
- { 0x1a00, 0x25ce, 0x0000 },
- { 0x9a00, 0x25d1, 0x2000 },
- { 0x1a00, 0x25d0, 0x0000 },
- { 0x1a00, 0x25d2, 0x0000 },
- { 0x9a00, 0x25d7, 0x3000 },
- { 0x9a00, 0x25d5, 0x2000 },
- { 0x1a00, 0x25d4, 0x0000 },
- { 0x1a00, 0x25d6, 0x0000 },
- { 0x9a00, 0x25d9, 0x2000 },
- { 0x1a00, 0x25d8, 0x0000 },
- { 0x1a00, 0x25da, 0x0000 },
- { 0x9a00, 0x25e3, 0x4000 },
- { 0x9a00, 0x25df, 0x3000 },
- { 0x9a00, 0x25dd, 0x2000 },
- { 0x1a00, 0x25dc, 0x0000 },
- { 0x1a00, 0x25de, 0x0000 },
- { 0x9a00, 0x25e1, 0x2000 },
- { 0x1a00, 0x25e0, 0x0000 },
- { 0x1a00, 0x25e2, 0x0000 },
- { 0x9a00, 0x25e7, 0x3000 },
- { 0x9a00, 0x25e5, 0x2000 },
- { 0x1a00, 0x25e4, 0x0000 },
- { 0x1a00, 0x25e6, 0x0000 },
- { 0x9a00, 0x25e9, 0x2000 },
- { 0x1a00, 0x25e8, 0x0000 },
- { 0x1a00, 0x25ea, 0x0000 },
- { 0x9900, 0x25fb, 0x5000 },
- { 0x9a00, 0x25f3, 0x4000 },
- { 0x9a00, 0x25ef, 0x3000 },
- { 0x9a00, 0x25ed, 0x2000 },
- { 0x1a00, 0x25ec, 0x0000 },
- { 0x1a00, 0x25ee, 0x0000 },
- { 0x9a00, 0x25f1, 0x2000 },
- { 0x1a00, 0x25f0, 0x0000 },
- { 0x1a00, 0x25f2, 0x0000 },
- { 0x9a00, 0x25f7, 0x3000 },
- { 0x9a00, 0x25f5, 0x2000 },
- { 0x1a00, 0x25f4, 0x0000 },
- { 0x1a00, 0x25f6, 0x0000 },
- { 0x9900, 0x25f9, 0x2000 },
- { 0x1900, 0x25f8, 0x0000 },
- { 0x1900, 0x25fa, 0x0000 },
- { 0x9a00, 0x2603, 0x4000 },
- { 0x9900, 0x25ff, 0x3000 },
- { 0x9900, 0x25fd, 0x2000 },
- { 0x1900, 0x25fc, 0x0000 },
- { 0x1900, 0x25fe, 0x0000 },
- { 0x9a00, 0x2601, 0x2000 },
- { 0x1a00, 0x2600, 0x0000 },
- { 0x1a00, 0x2602, 0x0000 },
- { 0x9a00, 0x2607, 0x3000 },
- { 0x9a00, 0x2605, 0x2000 },
- { 0x1a00, 0x2604, 0x0000 },
- { 0x1a00, 0x2606, 0x0000 },
- { 0x9a00, 0x2609, 0x2000 },
- { 0x1a00, 0x2608, 0x0000 },
- { 0x1a00, 0x260a, 0x0000 },
- { 0x9a00, 0x268e, 0x8000 },
- { 0x9a00, 0x264c, 0x7000 },
- { 0x9a00, 0x262c, 0x6000 },
- { 0x9a00, 0x261c, 0x5000 },
- { 0x9a00, 0x2613, 0x4000 },
- { 0x9a00, 0x260f, 0x3000 },
- { 0x9a00, 0x260d, 0x2000 },
- { 0x1a00, 0x260c, 0x0000 },
- { 0x1a00, 0x260e, 0x0000 },
- { 0x9a00, 0x2611, 0x2000 },
- { 0x1a00, 0x2610, 0x0000 },
- { 0x1a00, 0x2612, 0x0000 },
- { 0x9a00, 0x2617, 0x3000 },
- { 0x9a00, 0x2615, 0x2000 },
- { 0x1a00, 0x2614, 0x0000 },
- { 0x1a00, 0x2616, 0x0000 },
- { 0x9a00, 0x261a, 0x2000 },
- { 0x1a00, 0x2619, 0x0000 },
- { 0x1a00, 0x261b, 0x0000 },
- { 0x9a00, 0x2624, 0x4000 },
- { 0x9a00, 0x2620, 0x3000 },
- { 0x9a00, 0x261e, 0x2000 },
- { 0x1a00, 0x261d, 0x0000 },
- { 0x1a00, 0x261f, 0x0000 },
- { 0x9a00, 0x2622, 0x2000 },
- { 0x1a00, 0x2621, 0x0000 },
- { 0x1a00, 0x2623, 0x0000 },
- { 0x9a00, 0x2628, 0x3000 },
- { 0x9a00, 0x2626, 0x2000 },
- { 0x1a00, 0x2625, 0x0000 },
- { 0x1a00, 0x2627, 0x0000 },
- { 0x9a00, 0x262a, 0x2000 },
- { 0x1a00, 0x2629, 0x0000 },
- { 0x1a00, 0x262b, 0x0000 },
- { 0x9a00, 0x263c, 0x5000 },
- { 0x9a00, 0x2634, 0x4000 },
- { 0x9a00, 0x2630, 0x3000 },
- { 0x9a00, 0x262e, 0x2000 },
- { 0x1a00, 0x262d, 0x0000 },
- { 0x1a00, 0x262f, 0x0000 },
- { 0x9a00, 0x2632, 0x2000 },
- { 0x1a00, 0x2631, 0x0000 },
- { 0x1a00, 0x2633, 0x0000 },
- { 0x9a00, 0x2638, 0x3000 },
- { 0x9a00, 0x2636, 0x2000 },
- { 0x1a00, 0x2635, 0x0000 },
- { 0x1a00, 0x2637, 0x0000 },
- { 0x9a00, 0x263a, 0x2000 },
- { 0x1a00, 0x2639, 0x0000 },
- { 0x1a00, 0x263b, 0x0000 },
- { 0x9a00, 0x2644, 0x4000 },
- { 0x9a00, 0x2640, 0x3000 },
- { 0x9a00, 0x263e, 0x2000 },
- { 0x1a00, 0x263d, 0x0000 },
- { 0x1a00, 0x263f, 0x0000 },
- { 0x9a00, 0x2642, 0x2000 },
- { 0x1a00, 0x2641, 0x0000 },
- { 0x1a00, 0x2643, 0x0000 },
- { 0x9a00, 0x2648, 0x3000 },
- { 0x9a00, 0x2646, 0x2000 },
- { 0x1a00, 0x2645, 0x0000 },
- { 0x1a00, 0x2647, 0x0000 },
- { 0x9a00, 0x264a, 0x2000 },
- { 0x1a00, 0x2649, 0x0000 },
- { 0x1a00, 0x264b, 0x0000 },
- { 0x9a00, 0x266c, 0x6000 },
- { 0x9a00, 0x265c, 0x5000 },
- { 0x9a00, 0x2654, 0x4000 },
- { 0x9a00, 0x2650, 0x3000 },
- { 0x9a00, 0x264e, 0x2000 },
- { 0x1a00, 0x264d, 0x0000 },
- { 0x1a00, 0x264f, 0x0000 },
- { 0x9a00, 0x2652, 0x2000 },
- { 0x1a00, 0x2651, 0x0000 },
- { 0x1a00, 0x2653, 0x0000 },
- { 0x9a00, 0x2658, 0x3000 },
- { 0x9a00, 0x2656, 0x2000 },
- { 0x1a00, 0x2655, 0x0000 },
- { 0x1a00, 0x2657, 0x0000 },
- { 0x9a00, 0x265a, 0x2000 },
- { 0x1a00, 0x2659, 0x0000 },
- { 0x1a00, 0x265b, 0x0000 },
- { 0x9a00, 0x2664, 0x4000 },
- { 0x9a00, 0x2660, 0x3000 },
- { 0x9a00, 0x265e, 0x2000 },
- { 0x1a00, 0x265d, 0x0000 },
- { 0x1a00, 0x265f, 0x0000 },
- { 0x9a00, 0x2662, 0x2000 },
- { 0x1a00, 0x2661, 0x0000 },
- { 0x1a00, 0x2663, 0x0000 },
- { 0x9a00, 0x2668, 0x3000 },
- { 0x9a00, 0x2666, 0x2000 },
- { 0x1a00, 0x2665, 0x0000 },
- { 0x1a00, 0x2667, 0x0000 },
- { 0x9a00, 0x266a, 0x2000 },
- { 0x1a00, 0x2669, 0x0000 },
- { 0x1a00, 0x266b, 0x0000 },
- { 0x9a00, 0x267c, 0x5000 },
- { 0x9a00, 0x2674, 0x4000 },
- { 0x9a00, 0x2670, 0x3000 },
- { 0x9a00, 0x266e, 0x2000 },
- { 0x1a00, 0x266d, 0x0000 },
- { 0x1900, 0x266f, 0x0000 },
- { 0x9a00, 0x2672, 0x2000 },
- { 0x1a00, 0x2671, 0x0000 },
- { 0x1a00, 0x2673, 0x0000 },
- { 0x9a00, 0x2678, 0x3000 },
- { 0x9a00, 0x2676, 0x2000 },
- { 0x1a00, 0x2675, 0x0000 },
- { 0x1a00, 0x2677, 0x0000 },
- { 0x9a00, 0x267a, 0x2000 },
- { 0x1a00, 0x2679, 0x0000 },
- { 0x1a00, 0x267b, 0x0000 },
- { 0x9a00, 0x2686, 0x4000 },
- { 0x9a00, 0x2682, 0x3000 },
- { 0x9a00, 0x2680, 0x2000 },
- { 0x1a00, 0x267d, 0x0000 },
- { 0x1a00, 0x2681, 0x0000 },
- { 0x9a00, 0x2684, 0x2000 },
- { 0x1a00, 0x2683, 0x0000 },
- { 0x1a00, 0x2685, 0x0000 },
- { 0x9a00, 0x268a, 0x3000 },
- { 0x9a00, 0x2688, 0x2000 },
- { 0x1a00, 0x2687, 0x0000 },
- { 0x1a00, 0x2689, 0x0000 },
- { 0x9a00, 0x268c, 0x2000 },
- { 0x1a00, 0x268b, 0x0000 },
- { 0x1a00, 0x268d, 0x0000 },
- { 0x9a00, 0x273f, 0x7000 },
- { 0x9a00, 0x271e, 0x6000 },
- { 0x9a00, 0x270e, 0x5000 },
- { 0x9a00, 0x2703, 0x4000 },
- { 0x9a00, 0x26a0, 0x3000 },
- { 0x9a00, 0x2690, 0x2000 },
- { 0x1a00, 0x268f, 0x0000 },
- { 0x1a00, 0x2691, 0x0000 },
- { 0x9a00, 0x2701, 0x2000 },
- { 0x1a00, 0x26a1, 0x0000 },
- { 0x1a00, 0x2702, 0x0000 },
- { 0x9a00, 0x2708, 0x3000 },
- { 0x9a00, 0x2706, 0x2000 },
- { 0x1a00, 0x2704, 0x0000 },
- { 0x1a00, 0x2707, 0x0000 },
- { 0x9a00, 0x270c, 0x2000 },
- { 0x1a00, 0x2709, 0x0000 },
- { 0x1a00, 0x270d, 0x0000 },
- { 0x9a00, 0x2716, 0x4000 },
- { 0x9a00, 0x2712, 0x3000 },
- { 0x9a00, 0x2710, 0x2000 },
- { 0x1a00, 0x270f, 0x0000 },
- { 0x1a00, 0x2711, 0x0000 },
- { 0x9a00, 0x2714, 0x2000 },
- { 0x1a00, 0x2713, 0x0000 },
- { 0x1a00, 0x2715, 0x0000 },
- { 0x9a00, 0x271a, 0x3000 },
- { 0x9a00, 0x2718, 0x2000 },
- { 0x1a00, 0x2717, 0x0000 },
- { 0x1a00, 0x2719, 0x0000 },
- { 0x9a00, 0x271c, 0x2000 },
- { 0x1a00, 0x271b, 0x0000 },
- { 0x1a00, 0x271d, 0x0000 },
- { 0x9a00, 0x272f, 0x5000 },
- { 0x9a00, 0x2726, 0x4000 },
- { 0x9a00, 0x2722, 0x3000 },
- { 0x9a00, 0x2720, 0x2000 },
- { 0x1a00, 0x271f, 0x0000 },
- { 0x1a00, 0x2721, 0x0000 },
- { 0x9a00, 0x2724, 0x2000 },
- { 0x1a00, 0x2723, 0x0000 },
- { 0x1a00, 0x2725, 0x0000 },
- { 0x9a00, 0x272b, 0x3000 },
- { 0x9a00, 0x2729, 0x2000 },
- { 0x1a00, 0x2727, 0x0000 },
- { 0x1a00, 0x272a, 0x0000 },
- { 0x9a00, 0x272d, 0x2000 },
- { 0x1a00, 0x272c, 0x0000 },
- { 0x1a00, 0x272e, 0x0000 },
- { 0x9a00, 0x2737, 0x4000 },
- { 0x9a00, 0x2733, 0x3000 },
- { 0x9a00, 0x2731, 0x2000 },
- { 0x1a00, 0x2730, 0x0000 },
- { 0x1a00, 0x2732, 0x0000 },
- { 0x9a00, 0x2735, 0x2000 },
- { 0x1a00, 0x2734, 0x0000 },
- { 0x1a00, 0x2736, 0x0000 },
- { 0x9a00, 0x273b, 0x3000 },
- { 0x9a00, 0x2739, 0x2000 },
- { 0x1a00, 0x2738, 0x0000 },
- { 0x1a00, 0x273a, 0x0000 },
- { 0x9a00, 0x273d, 0x2000 },
- { 0x1a00, 0x273c, 0x0000 },
- { 0x1a00, 0x273e, 0x0000 },
- { 0x9a00, 0x2767, 0x6000 },
- { 0x9a00, 0x2751, 0x5000 },
- { 0x9a00, 0x2747, 0x4000 },
- { 0x9a00, 0x2743, 0x3000 },
- { 0x9a00, 0x2741, 0x2000 },
- { 0x1a00, 0x2740, 0x0000 },
- { 0x1a00, 0x2742, 0x0000 },
- { 0x9a00, 0x2745, 0x2000 },
- { 0x1a00, 0x2744, 0x0000 },
- { 0x1a00, 0x2746, 0x0000 },
- { 0x9a00, 0x274b, 0x3000 },
- { 0x9a00, 0x2749, 0x2000 },
- { 0x1a00, 0x2748, 0x0000 },
- { 0x1a00, 0x274a, 0x0000 },
- { 0x9a00, 0x274f, 0x2000 },
- { 0x1a00, 0x274d, 0x0000 },
- { 0x1a00, 0x2750, 0x0000 },
- { 0x9a00, 0x275d, 0x4000 },
- { 0x9a00, 0x2759, 0x3000 },
- { 0x9a00, 0x2756, 0x2000 },
- { 0x1a00, 0x2752, 0x0000 },
- { 0x1a00, 0x2758, 0x0000 },
- { 0x9a00, 0x275b, 0x2000 },
- { 0x1a00, 0x275a, 0x0000 },
- { 0x1a00, 0x275c, 0x0000 },
- { 0x9a00, 0x2763, 0x3000 },
- { 0x9a00, 0x2761, 0x2000 },
- { 0x1a00, 0x275e, 0x0000 },
- { 0x1a00, 0x2762, 0x0000 },
- { 0x9a00, 0x2765, 0x2000 },
- { 0x1a00, 0x2764, 0x0000 },
- { 0x1a00, 0x2766, 0x0000 },
- { 0x8f00, 0x2777, 0x5000 },
- { 0x9200, 0x276f, 0x4000 },
- { 0x9200, 0x276b, 0x3000 },
- { 0x9200, 0x2769, 0x2000 },
- { 0x1600, 0x2768, 0x0000 },
- { 0x1600, 0x276a, 0x0000 },
- { 0x9200, 0x276d, 0x2000 },
- { 0x1600, 0x276c, 0x0000 },
- { 0x1600, 0x276e, 0x0000 },
- { 0x9200, 0x2773, 0x3000 },
- { 0x9200, 0x2771, 0x2000 },
- { 0x1600, 0x2770, 0x0000 },
- { 0x1600, 0x2772, 0x0000 },
- { 0x9200, 0x2775, 0x2000 },
- { 0x1600, 0x2774, 0x0000 },
- { 0x0f00, 0x2776, 0x0000 },
- { 0x8f00, 0x277f, 0x4000 },
- { 0x8f00, 0x277b, 0x3000 },
- { 0x8f00, 0x2779, 0x2000 },
- { 0x0f00, 0x2778, 0x0000 },
- { 0x0f00, 0x277a, 0x0000 },
- { 0x8f00, 0x277d, 0x2000 },
- { 0x0f00, 0x277c, 0x0000 },
- { 0x0f00, 0x277e, 0x0000 },
- { 0x8f00, 0x2783, 0x3000 },
- { 0x8f00, 0x2781, 0x2000 },
- { 0x0f00, 0x2780, 0x0000 },
- { 0x0f00, 0x2782, 0x0000 },
- { 0x8f00, 0x2785, 0x2000 },
- { 0x0f00, 0x2784, 0x0000 },
- { 0x0f00, 0x2786, 0x0000 },
- { 0x9900, 0x29a0, 0xa000 },
- { 0x9a00, 0x28a0, 0x9000 },
- { 0x9a00, 0x2820, 0x8000 },
- { 0x9900, 0x27dc, 0x7000 },
- { 0x9a00, 0x27aa, 0x6000 },
- { 0x9a00, 0x279a, 0x5000 },
- { 0x8f00, 0x278f, 0x4000 },
- { 0x8f00, 0x278b, 0x3000 },
- { 0x8f00, 0x2789, 0x2000 },
- { 0x0f00, 0x2788, 0x0000 },
- { 0x0f00, 0x278a, 0x0000 },
- { 0x8f00, 0x278d, 0x2000 },
- { 0x0f00, 0x278c, 0x0000 },
- { 0x0f00, 0x278e, 0x0000 },
- { 0x8f00, 0x2793, 0x3000 },
- { 0x8f00, 0x2791, 0x2000 },
- { 0x0f00, 0x2790, 0x0000 },
- { 0x0f00, 0x2792, 0x0000 },
- { 0x9a00, 0x2798, 0x2000 },
- { 0x1a00, 0x2794, 0x0000 },
- { 0x1a00, 0x2799, 0x0000 },
- { 0x9a00, 0x27a2, 0x4000 },
- { 0x9a00, 0x279e, 0x3000 },
- { 0x9a00, 0x279c, 0x2000 },
- { 0x1a00, 0x279b, 0x0000 },
- { 0x1a00, 0x279d, 0x0000 },
- { 0x9a00, 0x27a0, 0x2000 },
- { 0x1a00, 0x279f, 0x0000 },
- { 0x1a00, 0x27a1, 0x0000 },
- { 0x9a00, 0x27a6, 0x3000 },
- { 0x9a00, 0x27a4, 0x2000 },
- { 0x1a00, 0x27a3, 0x0000 },
- { 0x1a00, 0x27a5, 0x0000 },
- { 0x9a00, 0x27a8, 0x2000 },
- { 0x1a00, 0x27a7, 0x0000 },
- { 0x1a00, 0x27a9, 0x0000 },
- { 0x9a00, 0x27bb, 0x5000 },
- { 0x9a00, 0x27b3, 0x4000 },
- { 0x9a00, 0x27ae, 0x3000 },
- { 0x9a00, 0x27ac, 0x2000 },
- { 0x1a00, 0x27ab, 0x0000 },
- { 0x1a00, 0x27ad, 0x0000 },
- { 0x9a00, 0x27b1, 0x2000 },
- { 0x1a00, 0x27af, 0x0000 },
- { 0x1a00, 0x27b2, 0x0000 },
- { 0x9a00, 0x27b7, 0x3000 },
- { 0x9a00, 0x27b5, 0x2000 },
- { 0x1a00, 0x27b4, 0x0000 },
- { 0x1a00, 0x27b6, 0x0000 },
- { 0x9a00, 0x27b9, 0x2000 },
- { 0x1a00, 0x27b8, 0x0000 },
- { 0x1a00, 0x27ba, 0x0000 },
- { 0x9900, 0x27d4, 0x4000 },
- { 0x9900, 0x27d0, 0x3000 },
- { 0x9a00, 0x27bd, 0x2000 },
- { 0x1a00, 0x27bc, 0x0000 },
- { 0x1a00, 0x27be, 0x0000 },
- { 0x9900, 0x27d2, 0x2000 },
- { 0x1900, 0x27d1, 0x0000 },
- { 0x1900, 0x27d3, 0x0000 },
- { 0x9900, 0x27d8, 0x3000 },
- { 0x9900, 0x27d6, 0x2000 },
- { 0x1900, 0x27d5, 0x0000 },
- { 0x1900, 0x27d7, 0x0000 },
- { 0x9900, 0x27da, 0x2000 },
- { 0x1900, 0x27d9, 0x0000 },
- { 0x1900, 0x27db, 0x0000 },
- { 0x9a00, 0x2800, 0x6000 },
- { 0x9900, 0x27f0, 0x5000 },
- { 0x9900, 0x27e4, 0x4000 },
- { 0x9900, 0x27e0, 0x3000 },
- { 0x9900, 0x27de, 0x2000 },
- { 0x1900, 0x27dd, 0x0000 },
- { 0x1900, 0x27df, 0x0000 },
- { 0x9900, 0x27e2, 0x2000 },
- { 0x1900, 0x27e1, 0x0000 },
- { 0x1900, 0x27e3, 0x0000 },
- { 0x9600, 0x27e8, 0x3000 },
- { 0x9600, 0x27e6, 0x2000 },
- { 0x1900, 0x27e5, 0x0000 },
- { 0x1200, 0x27e7, 0x0000 },
- { 0x9600, 0x27ea, 0x2000 },
- { 0x1200, 0x27e9, 0x0000 },
- { 0x1200, 0x27eb, 0x0000 },
- { 0x9900, 0x27f8, 0x4000 },
- { 0x9900, 0x27f4, 0x3000 },
- { 0x9900, 0x27f2, 0x2000 },
- { 0x1900, 0x27f1, 0x0000 },
- { 0x1900, 0x27f3, 0x0000 },
- { 0x9900, 0x27f6, 0x2000 },
- { 0x1900, 0x27f5, 0x0000 },
- { 0x1900, 0x27f7, 0x0000 },
- { 0x9900, 0x27fc, 0x3000 },
- { 0x9900, 0x27fa, 0x2000 },
- { 0x1900, 0x27f9, 0x0000 },
- { 0x1900, 0x27fb, 0x0000 },
- { 0x9900, 0x27fe, 0x2000 },
- { 0x1900, 0x27fd, 0x0000 },
- { 0x1900, 0x27ff, 0x0000 },
- { 0x9a00, 0x2810, 0x5000 },
- { 0x9a00, 0x2808, 0x4000 },
- { 0x9a00, 0x2804, 0x3000 },
- { 0x9a00, 0x2802, 0x2000 },
- { 0x1a00, 0x2801, 0x0000 },
- { 0x1a00, 0x2803, 0x0000 },
- { 0x9a00, 0x2806, 0x2000 },
- { 0x1a00, 0x2805, 0x0000 },
- { 0x1a00, 0x2807, 0x0000 },
- { 0x9a00, 0x280c, 0x3000 },
- { 0x9a00, 0x280a, 0x2000 },
- { 0x1a00, 0x2809, 0x0000 },
- { 0x1a00, 0x280b, 0x0000 },
- { 0x9a00, 0x280e, 0x2000 },
- { 0x1a00, 0x280d, 0x0000 },
- { 0x1a00, 0x280f, 0x0000 },
- { 0x9a00, 0x2818, 0x4000 },
- { 0x9a00, 0x2814, 0x3000 },
- { 0x9a00, 0x2812, 0x2000 },
- { 0x1a00, 0x2811, 0x0000 },
- { 0x1a00, 0x2813, 0x0000 },
- { 0x9a00, 0x2816, 0x2000 },
- { 0x1a00, 0x2815, 0x0000 },
- { 0x1a00, 0x2817, 0x0000 },
- { 0x9a00, 0x281c, 0x3000 },
- { 0x9a00, 0x281a, 0x2000 },
- { 0x1a00, 0x2819, 0x0000 },
- { 0x1a00, 0x281b, 0x0000 },
- { 0x9a00, 0x281e, 0x2000 },
- { 0x1a00, 0x281d, 0x0000 },
- { 0x1a00, 0x281f, 0x0000 },
- { 0x9a00, 0x2860, 0x7000 },
- { 0x9a00, 0x2840, 0x6000 },
- { 0x9a00, 0x2830, 0x5000 },
- { 0x9a00, 0x2828, 0x4000 },
- { 0x9a00, 0x2824, 0x3000 },
- { 0x9a00, 0x2822, 0x2000 },
- { 0x1a00, 0x2821, 0x0000 },
- { 0x1a00, 0x2823, 0x0000 },
- { 0x9a00, 0x2826, 0x2000 },
- { 0x1a00, 0x2825, 0x0000 },
- { 0x1a00, 0x2827, 0x0000 },
- { 0x9a00, 0x282c, 0x3000 },
- { 0x9a00, 0x282a, 0x2000 },
- { 0x1a00, 0x2829, 0x0000 },
- { 0x1a00, 0x282b, 0x0000 },
- { 0x9a00, 0x282e, 0x2000 },
- { 0x1a00, 0x282d, 0x0000 },
- { 0x1a00, 0x282f, 0x0000 },
- { 0x9a00, 0x2838, 0x4000 },
- { 0x9a00, 0x2834, 0x3000 },
- { 0x9a00, 0x2832, 0x2000 },
- { 0x1a00, 0x2831, 0x0000 },
- { 0x1a00, 0x2833, 0x0000 },
- { 0x9a00, 0x2836, 0x2000 },
- { 0x1a00, 0x2835, 0x0000 },
- { 0x1a00, 0x2837, 0x0000 },
- { 0x9a00, 0x283c, 0x3000 },
- { 0x9a00, 0x283a, 0x2000 },
- { 0x1a00, 0x2839, 0x0000 },
- { 0x1a00, 0x283b, 0x0000 },
- { 0x9a00, 0x283e, 0x2000 },
- { 0x1a00, 0x283d, 0x0000 },
- { 0x1a00, 0x283f, 0x0000 },
- { 0x9a00, 0x2850, 0x5000 },
- { 0x9a00, 0x2848, 0x4000 },
- { 0x9a00, 0x2844, 0x3000 },
- { 0x9a00, 0x2842, 0x2000 },
- { 0x1a00, 0x2841, 0x0000 },
- { 0x1a00, 0x2843, 0x0000 },
- { 0x9a00, 0x2846, 0x2000 },
- { 0x1a00, 0x2845, 0x0000 },
- { 0x1a00, 0x2847, 0x0000 },
- { 0x9a00, 0x284c, 0x3000 },
- { 0x9a00, 0x284a, 0x2000 },
- { 0x1a00, 0x2849, 0x0000 },
- { 0x1a00, 0x284b, 0x0000 },
- { 0x9a00, 0x284e, 0x2000 },
- { 0x1a00, 0x284d, 0x0000 },
- { 0x1a00, 0x284f, 0x0000 },
- { 0x9a00, 0x2858, 0x4000 },
- { 0x9a00, 0x2854, 0x3000 },
- { 0x9a00, 0x2852, 0x2000 },
- { 0x1a00, 0x2851, 0x0000 },
- { 0x1a00, 0x2853, 0x0000 },
- { 0x9a00, 0x2856, 0x2000 },
- { 0x1a00, 0x2855, 0x0000 },
- { 0x1a00, 0x2857, 0x0000 },
- { 0x9a00, 0x285c, 0x3000 },
- { 0x9a00, 0x285a, 0x2000 },
- { 0x1a00, 0x2859, 0x0000 },
- { 0x1a00, 0x285b, 0x0000 },
- { 0x9a00, 0x285e, 0x2000 },
- { 0x1a00, 0x285d, 0x0000 },
- { 0x1a00, 0x285f, 0x0000 },
- { 0x9a00, 0x2880, 0x6000 },
- { 0x9a00, 0x2870, 0x5000 },
- { 0x9a00, 0x2868, 0x4000 },
- { 0x9a00, 0x2864, 0x3000 },
- { 0x9a00, 0x2862, 0x2000 },
- { 0x1a00, 0x2861, 0x0000 },
- { 0x1a00, 0x2863, 0x0000 },
- { 0x9a00, 0x2866, 0x2000 },
- { 0x1a00, 0x2865, 0x0000 },
- { 0x1a00, 0x2867, 0x0000 },
- { 0x9a00, 0x286c, 0x3000 },
- { 0x9a00, 0x286a, 0x2000 },
- { 0x1a00, 0x2869, 0x0000 },
- { 0x1a00, 0x286b, 0x0000 },
- { 0x9a00, 0x286e, 0x2000 },
- { 0x1a00, 0x286d, 0x0000 },
- { 0x1a00, 0x286f, 0x0000 },
- { 0x9a00, 0x2878, 0x4000 },
- { 0x9a00, 0x2874, 0x3000 },
- { 0x9a00, 0x2872, 0x2000 },
- { 0x1a00, 0x2871, 0x0000 },
- { 0x1a00, 0x2873, 0x0000 },
- { 0x9a00, 0x2876, 0x2000 },
- { 0x1a00, 0x2875, 0x0000 },
- { 0x1a00, 0x2877, 0x0000 },
- { 0x9a00, 0x287c, 0x3000 },
- { 0x9a00, 0x287a, 0x2000 },
- { 0x1a00, 0x2879, 0x0000 },
- { 0x1a00, 0x287b, 0x0000 },
- { 0x9a00, 0x287e, 0x2000 },
- { 0x1a00, 0x287d, 0x0000 },
- { 0x1a00, 0x287f, 0x0000 },
- { 0x9a00, 0x2890, 0x5000 },
- { 0x9a00, 0x2888, 0x4000 },
- { 0x9a00, 0x2884, 0x3000 },
- { 0x9a00, 0x2882, 0x2000 },
- { 0x1a00, 0x2881, 0x0000 },
- { 0x1a00, 0x2883, 0x0000 },
- { 0x9a00, 0x2886, 0x2000 },
- { 0x1a00, 0x2885, 0x0000 },
- { 0x1a00, 0x2887, 0x0000 },
- { 0x9a00, 0x288c, 0x3000 },
- { 0x9a00, 0x288a, 0x2000 },
- { 0x1a00, 0x2889, 0x0000 },
- { 0x1a00, 0x288b, 0x0000 },
- { 0x9a00, 0x288e, 0x2000 },
- { 0x1a00, 0x288d, 0x0000 },
- { 0x1a00, 0x288f, 0x0000 },
- { 0x9a00, 0x2898, 0x4000 },
- { 0x9a00, 0x2894, 0x3000 },
- { 0x9a00, 0x2892, 0x2000 },
- { 0x1a00, 0x2891, 0x0000 },
- { 0x1a00, 0x2893, 0x0000 },
- { 0x9a00, 0x2896, 0x2000 },
- { 0x1a00, 0x2895, 0x0000 },
- { 0x1a00, 0x2897, 0x0000 },
- { 0x9a00, 0x289c, 0x3000 },
- { 0x9a00, 0x289a, 0x2000 },
- { 0x1a00, 0x2899, 0x0000 },
- { 0x1a00, 0x289b, 0x0000 },
- { 0x9a00, 0x289e, 0x2000 },
- { 0x1a00, 0x289d, 0x0000 },
- { 0x1a00, 0x289f, 0x0000 },
- { 0x9900, 0x2920, 0x8000 },
- { 0x9a00, 0x28e0, 0x7000 },
- { 0x9a00, 0x28c0, 0x6000 },
- { 0x9a00, 0x28b0, 0x5000 },
- { 0x9a00, 0x28a8, 0x4000 },
- { 0x9a00, 0x28a4, 0x3000 },
- { 0x9a00, 0x28a2, 0x2000 },
- { 0x1a00, 0x28a1, 0x0000 },
- { 0x1a00, 0x28a3, 0x0000 },
- { 0x9a00, 0x28a6, 0x2000 },
- { 0x1a00, 0x28a5, 0x0000 },
- { 0x1a00, 0x28a7, 0x0000 },
- { 0x9a00, 0x28ac, 0x3000 },
- { 0x9a00, 0x28aa, 0x2000 },
- { 0x1a00, 0x28a9, 0x0000 },
- { 0x1a00, 0x28ab, 0x0000 },
- { 0x9a00, 0x28ae, 0x2000 },
- { 0x1a00, 0x28ad, 0x0000 },
- { 0x1a00, 0x28af, 0x0000 },
- { 0x9a00, 0x28b8, 0x4000 },
- { 0x9a00, 0x28b4, 0x3000 },
- { 0x9a00, 0x28b2, 0x2000 },
- { 0x1a00, 0x28b1, 0x0000 },
- { 0x1a00, 0x28b3, 0x0000 },
- { 0x9a00, 0x28b6, 0x2000 },
- { 0x1a00, 0x28b5, 0x0000 },
- { 0x1a00, 0x28b7, 0x0000 },
- { 0x9a00, 0x28bc, 0x3000 },
- { 0x9a00, 0x28ba, 0x2000 },
- { 0x1a00, 0x28b9, 0x0000 },
- { 0x1a00, 0x28bb, 0x0000 },
- { 0x9a00, 0x28be, 0x2000 },
- { 0x1a00, 0x28bd, 0x0000 },
- { 0x1a00, 0x28bf, 0x0000 },
- { 0x9a00, 0x28d0, 0x5000 },
- { 0x9a00, 0x28c8, 0x4000 },
- { 0x9a00, 0x28c4, 0x3000 },
- { 0x9a00, 0x28c2, 0x2000 },
- { 0x1a00, 0x28c1, 0x0000 },
- { 0x1a00, 0x28c3, 0x0000 },
- { 0x9a00, 0x28c6, 0x2000 },
- { 0x1a00, 0x28c5, 0x0000 },
- { 0x1a00, 0x28c7, 0x0000 },
- { 0x9a00, 0x28cc, 0x3000 },
- { 0x9a00, 0x28ca, 0x2000 },
- { 0x1a00, 0x28c9, 0x0000 },
- { 0x1a00, 0x28cb, 0x0000 },
- { 0x9a00, 0x28ce, 0x2000 },
- { 0x1a00, 0x28cd, 0x0000 },
- { 0x1a00, 0x28cf, 0x0000 },
- { 0x9a00, 0x28d8, 0x4000 },
- { 0x9a00, 0x28d4, 0x3000 },
- { 0x9a00, 0x28d2, 0x2000 },
- { 0x1a00, 0x28d1, 0x0000 },
- { 0x1a00, 0x28d3, 0x0000 },
- { 0x9a00, 0x28d6, 0x2000 },
- { 0x1a00, 0x28d5, 0x0000 },
- { 0x1a00, 0x28d7, 0x0000 },
- { 0x9a00, 0x28dc, 0x3000 },
- { 0x9a00, 0x28da, 0x2000 },
- { 0x1a00, 0x28d9, 0x0000 },
- { 0x1a00, 0x28db, 0x0000 },
- { 0x9a00, 0x28de, 0x2000 },
- { 0x1a00, 0x28dd, 0x0000 },
- { 0x1a00, 0x28df, 0x0000 },
- { 0x9900, 0x2900, 0x6000 },
- { 0x9a00, 0x28f0, 0x5000 },
- { 0x9a00, 0x28e8, 0x4000 },
- { 0x9a00, 0x28e4, 0x3000 },
- { 0x9a00, 0x28e2, 0x2000 },
- { 0x1a00, 0x28e1, 0x0000 },
- { 0x1a00, 0x28e3, 0x0000 },
- { 0x9a00, 0x28e6, 0x2000 },
- { 0x1a00, 0x28e5, 0x0000 },
- { 0x1a00, 0x28e7, 0x0000 },
- { 0x9a00, 0x28ec, 0x3000 },
- { 0x9a00, 0x28ea, 0x2000 },
- { 0x1a00, 0x28e9, 0x0000 },
- { 0x1a00, 0x28eb, 0x0000 },
- { 0x9a00, 0x28ee, 0x2000 },
- { 0x1a00, 0x28ed, 0x0000 },
- { 0x1a00, 0x28ef, 0x0000 },
- { 0x9a00, 0x28f8, 0x4000 },
- { 0x9a00, 0x28f4, 0x3000 },
- { 0x9a00, 0x28f2, 0x2000 },
- { 0x1a00, 0x28f1, 0x0000 },
- { 0x1a00, 0x28f3, 0x0000 },
- { 0x9a00, 0x28f6, 0x2000 },
- { 0x1a00, 0x28f5, 0x0000 },
- { 0x1a00, 0x28f7, 0x0000 },
- { 0x9a00, 0x28fc, 0x3000 },
- { 0x9a00, 0x28fa, 0x2000 },
- { 0x1a00, 0x28f9, 0x0000 },
- { 0x1a00, 0x28fb, 0x0000 },
- { 0x9a00, 0x28fe, 0x2000 },
- { 0x1a00, 0x28fd, 0x0000 },
- { 0x1a00, 0x28ff, 0x0000 },
- { 0x9900, 0x2910, 0x5000 },
- { 0x9900, 0x2908, 0x4000 },
- { 0x9900, 0x2904, 0x3000 },
- { 0x9900, 0x2902, 0x2000 },
- { 0x1900, 0x2901, 0x0000 },
- { 0x1900, 0x2903, 0x0000 },
- { 0x9900, 0x2906, 0x2000 },
- { 0x1900, 0x2905, 0x0000 },
- { 0x1900, 0x2907, 0x0000 },
- { 0x9900, 0x290c, 0x3000 },
- { 0x9900, 0x290a, 0x2000 },
- { 0x1900, 0x2909, 0x0000 },
- { 0x1900, 0x290b, 0x0000 },
- { 0x9900, 0x290e, 0x2000 },
- { 0x1900, 0x290d, 0x0000 },
- { 0x1900, 0x290f, 0x0000 },
- { 0x9900, 0x2918, 0x4000 },
- { 0x9900, 0x2914, 0x3000 },
- { 0x9900, 0x2912, 0x2000 },
- { 0x1900, 0x2911, 0x0000 },
- { 0x1900, 0x2913, 0x0000 },
- { 0x9900, 0x2916, 0x2000 },
- { 0x1900, 0x2915, 0x0000 },
- { 0x1900, 0x2917, 0x0000 },
- { 0x9900, 0x291c, 0x3000 },
- { 0x9900, 0x291a, 0x2000 },
- { 0x1900, 0x2919, 0x0000 },
- { 0x1900, 0x291b, 0x0000 },
- { 0x9900, 0x291e, 0x2000 },
- { 0x1900, 0x291d, 0x0000 },
- { 0x1900, 0x291f, 0x0000 },
- { 0x9900, 0x2960, 0x7000 },
- { 0x9900, 0x2940, 0x6000 },
- { 0x9900, 0x2930, 0x5000 },
- { 0x9900, 0x2928, 0x4000 },
- { 0x9900, 0x2924, 0x3000 },
- { 0x9900, 0x2922, 0x2000 },
- { 0x1900, 0x2921, 0x0000 },
- { 0x1900, 0x2923, 0x0000 },
- { 0x9900, 0x2926, 0x2000 },
- { 0x1900, 0x2925, 0x0000 },
- { 0x1900, 0x2927, 0x0000 },
- { 0x9900, 0x292c, 0x3000 },
- { 0x9900, 0x292a, 0x2000 },
- { 0x1900, 0x2929, 0x0000 },
- { 0x1900, 0x292b, 0x0000 },
- { 0x9900, 0x292e, 0x2000 },
- { 0x1900, 0x292d, 0x0000 },
- { 0x1900, 0x292f, 0x0000 },
- { 0x9900, 0x2938, 0x4000 },
- { 0x9900, 0x2934, 0x3000 },
- { 0x9900, 0x2932, 0x2000 },
- { 0x1900, 0x2931, 0x0000 },
- { 0x1900, 0x2933, 0x0000 },
- { 0x9900, 0x2936, 0x2000 },
- { 0x1900, 0x2935, 0x0000 },
- { 0x1900, 0x2937, 0x0000 },
- { 0x9900, 0x293c, 0x3000 },
- { 0x9900, 0x293a, 0x2000 },
- { 0x1900, 0x2939, 0x0000 },
- { 0x1900, 0x293b, 0x0000 },
- { 0x9900, 0x293e, 0x2000 },
- { 0x1900, 0x293d, 0x0000 },
- { 0x1900, 0x293f, 0x0000 },
- { 0x9900, 0x2950, 0x5000 },
- { 0x9900, 0x2948, 0x4000 },
- { 0x9900, 0x2944, 0x3000 },
- { 0x9900, 0x2942, 0x2000 },
- { 0x1900, 0x2941, 0x0000 },
- { 0x1900, 0x2943, 0x0000 },
- { 0x9900, 0x2946, 0x2000 },
- { 0x1900, 0x2945, 0x0000 },
- { 0x1900, 0x2947, 0x0000 },
- { 0x9900, 0x294c, 0x3000 },
- { 0x9900, 0x294a, 0x2000 },
- { 0x1900, 0x2949, 0x0000 },
- { 0x1900, 0x294b, 0x0000 },
- { 0x9900, 0x294e, 0x2000 },
- { 0x1900, 0x294d, 0x0000 },
- { 0x1900, 0x294f, 0x0000 },
- { 0x9900, 0x2958, 0x4000 },
- { 0x9900, 0x2954, 0x3000 },
- { 0x9900, 0x2952, 0x2000 },
- { 0x1900, 0x2951, 0x0000 },
- { 0x1900, 0x2953, 0x0000 },
- { 0x9900, 0x2956, 0x2000 },
- { 0x1900, 0x2955, 0x0000 },
- { 0x1900, 0x2957, 0x0000 },
- { 0x9900, 0x295c, 0x3000 },
- { 0x9900, 0x295a, 0x2000 },
- { 0x1900, 0x2959, 0x0000 },
- { 0x1900, 0x295b, 0x0000 },
- { 0x9900, 0x295e, 0x2000 },
- { 0x1900, 0x295d, 0x0000 },
- { 0x1900, 0x295f, 0x0000 },
- { 0x9900, 0x2980, 0x6000 },
- { 0x9900, 0x2970, 0x5000 },
- { 0x9900, 0x2968, 0x4000 },
- { 0x9900, 0x2964, 0x3000 },
- { 0x9900, 0x2962, 0x2000 },
- { 0x1900, 0x2961, 0x0000 },
- { 0x1900, 0x2963, 0x0000 },
- { 0x9900, 0x2966, 0x2000 },
- { 0x1900, 0x2965, 0x0000 },
- { 0x1900, 0x2967, 0x0000 },
- { 0x9900, 0x296c, 0x3000 },
- { 0x9900, 0x296a, 0x2000 },
- { 0x1900, 0x2969, 0x0000 },
- { 0x1900, 0x296b, 0x0000 },
- { 0x9900, 0x296e, 0x2000 },
- { 0x1900, 0x296d, 0x0000 },
- { 0x1900, 0x296f, 0x0000 },
- { 0x9900, 0x2978, 0x4000 },
- { 0x9900, 0x2974, 0x3000 },
- { 0x9900, 0x2972, 0x2000 },
- { 0x1900, 0x2971, 0x0000 },
- { 0x1900, 0x2973, 0x0000 },
- { 0x9900, 0x2976, 0x2000 },
- { 0x1900, 0x2975, 0x0000 },
- { 0x1900, 0x2977, 0x0000 },
- { 0x9900, 0x297c, 0x3000 },
- { 0x9900, 0x297a, 0x2000 },
- { 0x1900, 0x2979, 0x0000 },
- { 0x1900, 0x297b, 0x0000 },
- { 0x9900, 0x297e, 0x2000 },
- { 0x1900, 0x297d, 0x0000 },
- { 0x1900, 0x297f, 0x0000 },
- { 0x9200, 0x2990, 0x5000 },
- { 0x9200, 0x2988, 0x4000 },
- { 0x9200, 0x2984, 0x3000 },
- { 0x9900, 0x2982, 0x2000 },
- { 0x1900, 0x2981, 0x0000 },
- { 0x1600, 0x2983, 0x0000 },
- { 0x9200, 0x2986, 0x2000 },
- { 0x1600, 0x2985, 0x0000 },
- { 0x1600, 0x2987, 0x0000 },
- { 0x9200, 0x298c, 0x3000 },
- { 0x9200, 0x298a, 0x2000 },
- { 0x1600, 0x2989, 0x0000 },
- { 0x1600, 0x298b, 0x0000 },
- { 0x9200, 0x298e, 0x2000 },
- { 0x1600, 0x298d, 0x0000 },
- { 0x1600, 0x298f, 0x0000 },
- { 0x9200, 0x2998, 0x4000 },
- { 0x9200, 0x2994, 0x3000 },
- { 0x9200, 0x2992, 0x2000 },
- { 0x1600, 0x2991, 0x0000 },
- { 0x1600, 0x2993, 0x0000 },
- { 0x9200, 0x2996, 0x2000 },
- { 0x1600, 0x2995, 0x0000 },
- { 0x1600, 0x2997, 0x0000 },
- { 0x9900, 0x299c, 0x3000 },
- { 0x9900, 0x299a, 0x2000 },
- { 0x1900, 0x2999, 0x0000 },
- { 0x1900, 0x299b, 0x0000 },
- { 0x9900, 0x299e, 0x2000 },
- { 0x1900, 0x299d, 0x0000 },
- { 0x1900, 0x299f, 0x0000 },
- { 0x9900, 0x2aa0, 0x9000 },
- { 0x9900, 0x2a20, 0x8000 },
- { 0x9900, 0x29e0, 0x7000 },
- { 0x9900, 0x29c0, 0x6000 },
- { 0x9900, 0x29b0, 0x5000 },
- { 0x9900, 0x29a8, 0x4000 },
- { 0x9900, 0x29a4, 0x3000 },
- { 0x9900, 0x29a2, 0x2000 },
- { 0x1900, 0x29a1, 0x0000 },
- { 0x1900, 0x29a3, 0x0000 },
- { 0x9900, 0x29a6, 0x2000 },
- { 0x1900, 0x29a5, 0x0000 },
- { 0x1900, 0x29a7, 0x0000 },
- { 0x9900, 0x29ac, 0x3000 },
- { 0x9900, 0x29aa, 0x2000 },
- { 0x1900, 0x29a9, 0x0000 },
- { 0x1900, 0x29ab, 0x0000 },
- { 0x9900, 0x29ae, 0x2000 },
- { 0x1900, 0x29ad, 0x0000 },
- { 0x1900, 0x29af, 0x0000 },
- { 0x9900, 0x29b8, 0x4000 },
- { 0x9900, 0x29b4, 0x3000 },
- { 0x9900, 0x29b2, 0x2000 },
- { 0x1900, 0x29b1, 0x0000 },
- { 0x1900, 0x29b3, 0x0000 },
- { 0x9900, 0x29b6, 0x2000 },
- { 0x1900, 0x29b5, 0x0000 },
- { 0x1900, 0x29b7, 0x0000 },
- { 0x9900, 0x29bc, 0x3000 },
- { 0x9900, 0x29ba, 0x2000 },
- { 0x1900, 0x29b9, 0x0000 },
- { 0x1900, 0x29bb, 0x0000 },
- { 0x9900, 0x29be, 0x2000 },
- { 0x1900, 0x29bd, 0x0000 },
- { 0x1900, 0x29bf, 0x0000 },
- { 0x9900, 0x29d0, 0x5000 },
- { 0x9900, 0x29c8, 0x4000 },
- { 0x9900, 0x29c4, 0x3000 },
- { 0x9900, 0x29c2, 0x2000 },
- { 0x1900, 0x29c1, 0x0000 },
- { 0x1900, 0x29c3, 0x0000 },
- { 0x9900, 0x29c6, 0x2000 },
- { 0x1900, 0x29c5, 0x0000 },
- { 0x1900, 0x29c7, 0x0000 },
- { 0x9900, 0x29cc, 0x3000 },
- { 0x9900, 0x29ca, 0x2000 },
- { 0x1900, 0x29c9, 0x0000 },
- { 0x1900, 0x29cb, 0x0000 },
- { 0x9900, 0x29ce, 0x2000 },
- { 0x1900, 0x29cd, 0x0000 },
- { 0x1900, 0x29cf, 0x0000 },
- { 0x9600, 0x29d8, 0x4000 },
- { 0x9900, 0x29d4, 0x3000 },
- { 0x9900, 0x29d2, 0x2000 },
- { 0x1900, 0x29d1, 0x0000 },
- { 0x1900, 0x29d3, 0x0000 },
- { 0x9900, 0x29d6, 0x2000 },
- { 0x1900, 0x29d5, 0x0000 },
- { 0x1900, 0x29d7, 0x0000 },
- { 0x9900, 0x29dc, 0x3000 },
- { 0x9600, 0x29da, 0x2000 },
- { 0x1200, 0x29d9, 0x0000 },
- { 0x1200, 0x29db, 0x0000 },
- { 0x9900, 0x29de, 0x2000 },
- { 0x1900, 0x29dd, 0x0000 },
- { 0x1900, 0x29df, 0x0000 },
- { 0x9900, 0x2a00, 0x6000 },
- { 0x9900, 0x29f0, 0x5000 },
- { 0x9900, 0x29e8, 0x4000 },
- { 0x9900, 0x29e4, 0x3000 },
- { 0x9900, 0x29e2, 0x2000 },
- { 0x1900, 0x29e1, 0x0000 },
- { 0x1900, 0x29e3, 0x0000 },
- { 0x9900, 0x29e6, 0x2000 },
- { 0x1900, 0x29e5, 0x0000 },
- { 0x1900, 0x29e7, 0x0000 },
- { 0x9900, 0x29ec, 0x3000 },
- { 0x9900, 0x29ea, 0x2000 },
- { 0x1900, 0x29e9, 0x0000 },
- { 0x1900, 0x29eb, 0x0000 },
- { 0x9900, 0x29ee, 0x2000 },
- { 0x1900, 0x29ed, 0x0000 },
- { 0x1900, 0x29ef, 0x0000 },
- { 0x9900, 0x29f8, 0x4000 },
- { 0x9900, 0x29f4, 0x3000 },
- { 0x9900, 0x29f2, 0x2000 },
- { 0x1900, 0x29f1, 0x0000 },
- { 0x1900, 0x29f3, 0x0000 },
- { 0x9900, 0x29f6, 0x2000 },
- { 0x1900, 0x29f5, 0x0000 },
- { 0x1900, 0x29f7, 0x0000 },
- { 0x9600, 0x29fc, 0x3000 },
- { 0x9900, 0x29fa, 0x2000 },
- { 0x1900, 0x29f9, 0x0000 },
- { 0x1900, 0x29fb, 0x0000 },
- { 0x9900, 0x29fe, 0x2000 },
- { 0x1200, 0x29fd, 0x0000 },
- { 0x1900, 0x29ff, 0x0000 },
- { 0x9900, 0x2a10, 0x5000 },
- { 0x9900, 0x2a08, 0x4000 },
- { 0x9900, 0x2a04, 0x3000 },
- { 0x9900, 0x2a02, 0x2000 },
- { 0x1900, 0x2a01, 0x0000 },
- { 0x1900, 0x2a03, 0x0000 },
- { 0x9900, 0x2a06, 0x2000 },
- { 0x1900, 0x2a05, 0x0000 },
- { 0x1900, 0x2a07, 0x0000 },
- { 0x9900, 0x2a0c, 0x3000 },
- { 0x9900, 0x2a0a, 0x2000 },
- { 0x1900, 0x2a09, 0x0000 },
- { 0x1900, 0x2a0b, 0x0000 },
- { 0x9900, 0x2a0e, 0x2000 },
- { 0x1900, 0x2a0d, 0x0000 },
- { 0x1900, 0x2a0f, 0x0000 },
- { 0x9900, 0x2a18, 0x4000 },
- { 0x9900, 0x2a14, 0x3000 },
- { 0x9900, 0x2a12, 0x2000 },
- { 0x1900, 0x2a11, 0x0000 },
- { 0x1900, 0x2a13, 0x0000 },
- { 0x9900, 0x2a16, 0x2000 },
- { 0x1900, 0x2a15, 0x0000 },
- { 0x1900, 0x2a17, 0x0000 },
- { 0x9900, 0x2a1c, 0x3000 },
- { 0x9900, 0x2a1a, 0x2000 },
- { 0x1900, 0x2a19, 0x0000 },
- { 0x1900, 0x2a1b, 0x0000 },
- { 0x9900, 0x2a1e, 0x2000 },
- { 0x1900, 0x2a1d, 0x0000 },
- { 0x1900, 0x2a1f, 0x0000 },
- { 0x9900, 0x2a60, 0x7000 },
- { 0x9900, 0x2a40, 0x6000 },
- { 0x9900, 0x2a30, 0x5000 },
- { 0x9900, 0x2a28, 0x4000 },
- { 0x9900, 0x2a24, 0x3000 },
- { 0x9900, 0x2a22, 0x2000 },
- { 0x1900, 0x2a21, 0x0000 },
- { 0x1900, 0x2a23, 0x0000 },
- { 0x9900, 0x2a26, 0x2000 },
- { 0x1900, 0x2a25, 0x0000 },
- { 0x1900, 0x2a27, 0x0000 },
- { 0x9900, 0x2a2c, 0x3000 },
- { 0x9900, 0x2a2a, 0x2000 },
- { 0x1900, 0x2a29, 0x0000 },
- { 0x1900, 0x2a2b, 0x0000 },
- { 0x9900, 0x2a2e, 0x2000 },
- { 0x1900, 0x2a2d, 0x0000 },
- { 0x1900, 0x2a2f, 0x0000 },
- { 0x9900, 0x2a38, 0x4000 },
- { 0x9900, 0x2a34, 0x3000 },
- { 0x9900, 0x2a32, 0x2000 },
- { 0x1900, 0x2a31, 0x0000 },
- { 0x1900, 0x2a33, 0x0000 },
- { 0x9900, 0x2a36, 0x2000 },
- { 0x1900, 0x2a35, 0x0000 },
- { 0x1900, 0x2a37, 0x0000 },
- { 0x9900, 0x2a3c, 0x3000 },
- { 0x9900, 0x2a3a, 0x2000 },
- { 0x1900, 0x2a39, 0x0000 },
- { 0x1900, 0x2a3b, 0x0000 },
- { 0x9900, 0x2a3e, 0x2000 },
- { 0x1900, 0x2a3d, 0x0000 },
- { 0x1900, 0x2a3f, 0x0000 },
- { 0x9900, 0x2a50, 0x5000 },
- { 0x9900, 0x2a48, 0x4000 },
- { 0x9900, 0x2a44, 0x3000 },
- { 0x9900, 0x2a42, 0x2000 },
- { 0x1900, 0x2a41, 0x0000 },
- { 0x1900, 0x2a43, 0x0000 },
- { 0x9900, 0x2a46, 0x2000 },
- { 0x1900, 0x2a45, 0x0000 },
- { 0x1900, 0x2a47, 0x0000 },
- { 0x9900, 0x2a4c, 0x3000 },
- { 0x9900, 0x2a4a, 0x2000 },
- { 0x1900, 0x2a49, 0x0000 },
- { 0x1900, 0x2a4b, 0x0000 },
- { 0x9900, 0x2a4e, 0x2000 },
- { 0x1900, 0x2a4d, 0x0000 },
- { 0x1900, 0x2a4f, 0x0000 },
- { 0x9900, 0x2a58, 0x4000 },
- { 0x9900, 0x2a54, 0x3000 },
- { 0x9900, 0x2a52, 0x2000 },
- { 0x1900, 0x2a51, 0x0000 },
- { 0x1900, 0x2a53, 0x0000 },
- { 0x9900, 0x2a56, 0x2000 },
- { 0x1900, 0x2a55, 0x0000 },
- { 0x1900, 0x2a57, 0x0000 },
- { 0x9900, 0x2a5c, 0x3000 },
- { 0x9900, 0x2a5a, 0x2000 },
- { 0x1900, 0x2a59, 0x0000 },
- { 0x1900, 0x2a5b, 0x0000 },
- { 0x9900, 0x2a5e, 0x2000 },
- { 0x1900, 0x2a5d, 0x0000 },
- { 0x1900, 0x2a5f, 0x0000 },
- { 0x9900, 0x2a80, 0x6000 },
- { 0x9900, 0x2a70, 0x5000 },
- { 0x9900, 0x2a68, 0x4000 },
- { 0x9900, 0x2a64, 0x3000 },
- { 0x9900, 0x2a62, 0x2000 },
- { 0x1900, 0x2a61, 0x0000 },
- { 0x1900, 0x2a63, 0x0000 },
- { 0x9900, 0x2a66, 0x2000 },
- { 0x1900, 0x2a65, 0x0000 },
- { 0x1900, 0x2a67, 0x0000 },
- { 0x9900, 0x2a6c, 0x3000 },
- { 0x9900, 0x2a6a, 0x2000 },
- { 0x1900, 0x2a69, 0x0000 },
- { 0x1900, 0x2a6b, 0x0000 },
- { 0x9900, 0x2a6e, 0x2000 },
- { 0x1900, 0x2a6d, 0x0000 },
- { 0x1900, 0x2a6f, 0x0000 },
- { 0x9900, 0x2a78, 0x4000 },
- { 0x9900, 0x2a74, 0x3000 },
- { 0x9900, 0x2a72, 0x2000 },
- { 0x1900, 0x2a71, 0x0000 },
- { 0x1900, 0x2a73, 0x0000 },
- { 0x9900, 0x2a76, 0x2000 },
- { 0x1900, 0x2a75, 0x0000 },
- { 0x1900, 0x2a77, 0x0000 },
- { 0x9900, 0x2a7c, 0x3000 },
- { 0x9900, 0x2a7a, 0x2000 },
- { 0x1900, 0x2a79, 0x0000 },
- { 0x1900, 0x2a7b, 0x0000 },
- { 0x9900, 0x2a7e, 0x2000 },
- { 0x1900, 0x2a7d, 0x0000 },
- { 0x1900, 0x2a7f, 0x0000 },
- { 0x9900, 0x2a90, 0x5000 },
- { 0x9900, 0x2a88, 0x4000 },
- { 0x9900, 0x2a84, 0x3000 },
- { 0x9900, 0x2a82, 0x2000 },
- { 0x1900, 0x2a81, 0x0000 },
- { 0x1900, 0x2a83, 0x0000 },
- { 0x9900, 0x2a86, 0x2000 },
- { 0x1900, 0x2a85, 0x0000 },
- { 0x1900, 0x2a87, 0x0000 },
- { 0x9900, 0x2a8c, 0x3000 },
- { 0x9900, 0x2a8a, 0x2000 },
- { 0x1900, 0x2a89, 0x0000 },
- { 0x1900, 0x2a8b, 0x0000 },
- { 0x9900, 0x2a8e, 0x2000 },
- { 0x1900, 0x2a8d, 0x0000 },
- { 0x1900, 0x2a8f, 0x0000 },
- { 0x9900, 0x2a98, 0x4000 },
- { 0x9900, 0x2a94, 0x3000 },
- { 0x9900, 0x2a92, 0x2000 },
- { 0x1900, 0x2a91, 0x0000 },
- { 0x1900, 0x2a93, 0x0000 },
- { 0x9900, 0x2a96, 0x2000 },
- { 0x1900, 0x2a95, 0x0000 },
- { 0x1900, 0x2a97, 0x0000 },
- { 0x9900, 0x2a9c, 0x3000 },
- { 0x9900, 0x2a9a, 0x2000 },
- { 0x1900, 0x2a99, 0x0000 },
- { 0x1900, 0x2a9b, 0x0000 },
- { 0x9900, 0x2a9e, 0x2000 },
- { 0x1900, 0x2a9d, 0x0000 },
- { 0x1900, 0x2a9f, 0x0000 },
- { 0x9a00, 0x2e92, 0x8000 },
- { 0x9900, 0x2ae0, 0x7000 },
- { 0x9900, 0x2ac0, 0x6000 },
- { 0x9900, 0x2ab0, 0x5000 },
- { 0x9900, 0x2aa8, 0x4000 },
- { 0x9900, 0x2aa4, 0x3000 },
- { 0x9900, 0x2aa2, 0x2000 },
- { 0x1900, 0x2aa1, 0x0000 },
- { 0x1900, 0x2aa3, 0x0000 },
- { 0x9900, 0x2aa6, 0x2000 },
- { 0x1900, 0x2aa5, 0x0000 },
- { 0x1900, 0x2aa7, 0x0000 },
- { 0x9900, 0x2aac, 0x3000 },
- { 0x9900, 0x2aaa, 0x2000 },
- { 0x1900, 0x2aa9, 0x0000 },
- { 0x1900, 0x2aab, 0x0000 },
- { 0x9900, 0x2aae, 0x2000 },
- { 0x1900, 0x2aad, 0x0000 },
- { 0x1900, 0x2aaf, 0x0000 },
- { 0x9900, 0x2ab8, 0x4000 },
- { 0x9900, 0x2ab4, 0x3000 },
- { 0x9900, 0x2ab2, 0x2000 },
- { 0x1900, 0x2ab1, 0x0000 },
- { 0x1900, 0x2ab3, 0x0000 },
- { 0x9900, 0x2ab6, 0x2000 },
- { 0x1900, 0x2ab5, 0x0000 },
- { 0x1900, 0x2ab7, 0x0000 },
- { 0x9900, 0x2abc, 0x3000 },
- { 0x9900, 0x2aba, 0x2000 },
- { 0x1900, 0x2ab9, 0x0000 },
- { 0x1900, 0x2abb, 0x0000 },
- { 0x9900, 0x2abe, 0x2000 },
- { 0x1900, 0x2abd, 0x0000 },
- { 0x1900, 0x2abf, 0x0000 },
- { 0x9900, 0x2ad0, 0x5000 },
- { 0x9900, 0x2ac8, 0x4000 },
- { 0x9900, 0x2ac4, 0x3000 },
- { 0x9900, 0x2ac2, 0x2000 },
- { 0x1900, 0x2ac1, 0x0000 },
- { 0x1900, 0x2ac3, 0x0000 },
- { 0x9900, 0x2ac6, 0x2000 },
- { 0x1900, 0x2ac5, 0x0000 },
- { 0x1900, 0x2ac7, 0x0000 },
- { 0x9900, 0x2acc, 0x3000 },
- { 0x9900, 0x2aca, 0x2000 },
- { 0x1900, 0x2ac9, 0x0000 },
- { 0x1900, 0x2acb, 0x0000 },
- { 0x9900, 0x2ace, 0x2000 },
- { 0x1900, 0x2acd, 0x0000 },
- { 0x1900, 0x2acf, 0x0000 },
- { 0x9900, 0x2ad8, 0x4000 },
- { 0x9900, 0x2ad4, 0x3000 },
- { 0x9900, 0x2ad2, 0x2000 },
- { 0x1900, 0x2ad1, 0x0000 },
- { 0x1900, 0x2ad3, 0x0000 },
- { 0x9900, 0x2ad6, 0x2000 },
- { 0x1900, 0x2ad5, 0x0000 },
- { 0x1900, 0x2ad7, 0x0000 },
- { 0x9900, 0x2adc, 0x3000 },
- { 0x9900, 0x2ada, 0x2000 },
- { 0x1900, 0x2ad9, 0x0000 },
- { 0x1900, 0x2adb, 0x0000 },
- { 0x9900, 0x2ade, 0x2000 },
- { 0x1900, 0x2add, 0x0000 },
- { 0x1900, 0x2adf, 0x0000 },
- { 0x9a00, 0x2b00, 0x6000 },
- { 0x9900, 0x2af0, 0x5000 },
- { 0x9900, 0x2ae8, 0x4000 },
- { 0x9900, 0x2ae4, 0x3000 },
- { 0x9900, 0x2ae2, 0x2000 },
- { 0x1900, 0x2ae1, 0x0000 },
- { 0x1900, 0x2ae3, 0x0000 },
- { 0x9900, 0x2ae6, 0x2000 },
- { 0x1900, 0x2ae5, 0x0000 },
- { 0x1900, 0x2ae7, 0x0000 },
- { 0x9900, 0x2aec, 0x3000 },
- { 0x9900, 0x2aea, 0x2000 },
- { 0x1900, 0x2ae9, 0x0000 },
- { 0x1900, 0x2aeb, 0x0000 },
- { 0x9900, 0x2aee, 0x2000 },
- { 0x1900, 0x2aed, 0x0000 },
- { 0x1900, 0x2aef, 0x0000 },
- { 0x9900, 0x2af8, 0x4000 },
- { 0x9900, 0x2af4, 0x3000 },
- { 0x9900, 0x2af2, 0x2000 },
- { 0x1900, 0x2af1, 0x0000 },
- { 0x1900, 0x2af3, 0x0000 },
- { 0x9900, 0x2af6, 0x2000 },
- { 0x1900, 0x2af5, 0x0000 },
- { 0x1900, 0x2af7, 0x0000 },
- { 0x9900, 0x2afc, 0x3000 },
- { 0x9900, 0x2afa, 0x2000 },
- { 0x1900, 0x2af9, 0x0000 },
- { 0x1900, 0x2afb, 0x0000 },
- { 0x9900, 0x2afe, 0x2000 },
- { 0x1900, 0x2afd, 0x0000 },
- { 0x1900, 0x2aff, 0x0000 },
- { 0x9a00, 0x2e82, 0x5000 },
- { 0x9a00, 0x2b08, 0x4000 },
- { 0x9a00, 0x2b04, 0x3000 },
- { 0x9a00, 0x2b02, 0x2000 },
- { 0x1a00, 0x2b01, 0x0000 },
- { 0x1a00, 0x2b03, 0x0000 },
- { 0x9a00, 0x2b06, 0x2000 },
- { 0x1a00, 0x2b05, 0x0000 },
- { 0x1a00, 0x2b07, 0x0000 },
- { 0x9a00, 0x2b0c, 0x3000 },
- { 0x9a00, 0x2b0a, 0x2000 },
- { 0x1a00, 0x2b09, 0x0000 },
- { 0x1a00, 0x2b0b, 0x0000 },
- { 0x9a00, 0x2e80, 0x2000 },
- { 0x1a00, 0x2b0d, 0x0000 },
- { 0x1a00, 0x2e81, 0x0000 },
- { 0x9a00, 0x2e8a, 0x4000 },
- { 0x9a00, 0x2e86, 0x3000 },
- { 0x9a00, 0x2e84, 0x2000 },
- { 0x1a00, 0x2e83, 0x0000 },
- { 0x1a00, 0x2e85, 0x0000 },
- { 0x9a00, 0x2e88, 0x2000 },
- { 0x1a00, 0x2e87, 0x0000 },
- { 0x1a00, 0x2e89, 0x0000 },
- { 0x9a00, 0x2e8e, 0x3000 },
- { 0x9a00, 0x2e8c, 0x2000 },
- { 0x1a00, 0x2e8b, 0x0000 },
- { 0x1a00, 0x2e8d, 0x0000 },
- { 0x9a00, 0x2e90, 0x2000 },
- { 0x1a00, 0x2e8f, 0x0000 },
- { 0x1a00, 0x2e91, 0x0000 },
- { 0x9a00, 0x2ed3, 0x7000 },
- { 0x9a00, 0x2eb3, 0x6000 },
- { 0x9a00, 0x2ea3, 0x5000 },
- { 0x9a00, 0x2e9b, 0x4000 },
- { 0x9a00, 0x2e96, 0x3000 },
- { 0x9a00, 0x2e94, 0x2000 },
- { 0x1a00, 0x2e93, 0x0000 },
- { 0x1a00, 0x2e95, 0x0000 },
- { 0x9a00, 0x2e98, 0x2000 },
- { 0x1a00, 0x2e97, 0x0000 },
- { 0x1a00, 0x2e99, 0x0000 },
- { 0x9a00, 0x2e9f, 0x3000 },
- { 0x9a00, 0x2e9d, 0x2000 },
- { 0x1a00, 0x2e9c, 0x0000 },
- { 0x1a00, 0x2e9e, 0x0000 },
- { 0x9a00, 0x2ea1, 0x2000 },
- { 0x1a00, 0x2ea0, 0x0000 },
- { 0x1a00, 0x2ea2, 0x0000 },
- { 0x9a00, 0x2eab, 0x4000 },
- { 0x9a00, 0x2ea7, 0x3000 },
- { 0x9a00, 0x2ea5, 0x2000 },
- { 0x1a00, 0x2ea4, 0x0000 },
- { 0x1a00, 0x2ea6, 0x0000 },
- { 0x9a00, 0x2ea9, 0x2000 },
- { 0x1a00, 0x2ea8, 0x0000 },
- { 0x1a00, 0x2eaa, 0x0000 },
- { 0x9a00, 0x2eaf, 0x3000 },
- { 0x9a00, 0x2ead, 0x2000 },
- { 0x1a00, 0x2eac, 0x0000 },
- { 0x1a00, 0x2eae, 0x0000 },
- { 0x9a00, 0x2eb1, 0x2000 },
- { 0x1a00, 0x2eb0, 0x0000 },
- { 0x1a00, 0x2eb2, 0x0000 },
- { 0x9a00, 0x2ec3, 0x5000 },
- { 0x9a00, 0x2ebb, 0x4000 },
- { 0x9a00, 0x2eb7, 0x3000 },
- { 0x9a00, 0x2eb5, 0x2000 },
- { 0x1a00, 0x2eb4, 0x0000 },
- { 0x1a00, 0x2eb6, 0x0000 },
- { 0x9a00, 0x2eb9, 0x2000 },
- { 0x1a00, 0x2eb8, 0x0000 },
- { 0x1a00, 0x2eba, 0x0000 },
- { 0x9a00, 0x2ebf, 0x3000 },
- { 0x9a00, 0x2ebd, 0x2000 },
- { 0x1a00, 0x2ebc, 0x0000 },
- { 0x1a00, 0x2ebe, 0x0000 },
- { 0x9a00, 0x2ec1, 0x2000 },
- { 0x1a00, 0x2ec0, 0x0000 },
- { 0x1a00, 0x2ec2, 0x0000 },
- { 0x9a00, 0x2ecb, 0x4000 },
- { 0x9a00, 0x2ec7, 0x3000 },
- { 0x9a00, 0x2ec5, 0x2000 },
- { 0x1a00, 0x2ec4, 0x0000 },
- { 0x1a00, 0x2ec6, 0x0000 },
- { 0x9a00, 0x2ec9, 0x2000 },
- { 0x1a00, 0x2ec8, 0x0000 },
- { 0x1a00, 0x2eca, 0x0000 },
- { 0x9a00, 0x2ecf, 0x3000 },
- { 0x9a00, 0x2ecd, 0x2000 },
- { 0x1a00, 0x2ecc, 0x0000 },
- { 0x1a00, 0x2ece, 0x0000 },
- { 0x9a00, 0x2ed1, 0x2000 },
- { 0x1a00, 0x2ed0, 0x0000 },
- { 0x1a00, 0x2ed2, 0x0000 },
- { 0x9a00, 0x2ef3, 0x6000 },
- { 0x9a00, 0x2ee3, 0x5000 },
- { 0x9a00, 0x2edb, 0x4000 },
- { 0x9a00, 0x2ed7, 0x3000 },
- { 0x9a00, 0x2ed5, 0x2000 },
- { 0x1a00, 0x2ed4, 0x0000 },
- { 0x1a00, 0x2ed6, 0x0000 },
- { 0x9a00, 0x2ed9, 0x2000 },
- { 0x1a00, 0x2ed8, 0x0000 },
- { 0x1a00, 0x2eda, 0x0000 },
- { 0x9a00, 0x2edf, 0x3000 },
- { 0x9a00, 0x2edd, 0x2000 },
- { 0x1a00, 0x2edc, 0x0000 },
- { 0x1a00, 0x2ede, 0x0000 },
- { 0x9a00, 0x2ee1, 0x2000 },
- { 0x1a00, 0x2ee0, 0x0000 },
- { 0x1a00, 0x2ee2, 0x0000 },
- { 0x9a00, 0x2eeb, 0x4000 },
- { 0x9a00, 0x2ee7, 0x3000 },
- { 0x9a00, 0x2ee5, 0x2000 },
- { 0x1a00, 0x2ee4, 0x0000 },
- { 0x1a00, 0x2ee6, 0x0000 },
- { 0x9a00, 0x2ee9, 0x2000 },
- { 0x1a00, 0x2ee8, 0x0000 },
- { 0x1a00, 0x2eea, 0x0000 },
- { 0x9a00, 0x2eef, 0x3000 },
- { 0x9a00, 0x2eed, 0x2000 },
- { 0x1a00, 0x2eec, 0x0000 },
- { 0x1a00, 0x2eee, 0x0000 },
- { 0x9a00, 0x2ef1, 0x2000 },
- { 0x1a00, 0x2ef0, 0x0000 },
- { 0x1a00, 0x2ef2, 0x0000 },
- { 0x9a00, 0x2f0f, 0x5000 },
- { 0x9a00, 0x2f07, 0x4000 },
- { 0x9a00, 0x2f03, 0x3000 },
- { 0x9a00, 0x2f01, 0x2000 },
- { 0x1a00, 0x2f00, 0x0000 },
- { 0x1a00, 0x2f02, 0x0000 },
- { 0x9a00, 0x2f05, 0x2000 },
- { 0x1a00, 0x2f04, 0x0000 },
- { 0x1a00, 0x2f06, 0x0000 },
- { 0x9a00, 0x2f0b, 0x3000 },
- { 0x9a00, 0x2f09, 0x2000 },
- { 0x1a00, 0x2f08, 0x0000 },
- { 0x1a00, 0x2f0a, 0x0000 },
- { 0x9a00, 0x2f0d, 0x2000 },
- { 0x1a00, 0x2f0c, 0x0000 },
- { 0x1a00, 0x2f0e, 0x0000 },
- { 0x9a00, 0x2f17, 0x4000 },
- { 0x9a00, 0x2f13, 0x3000 },
- { 0x9a00, 0x2f11, 0x2000 },
- { 0x1a00, 0x2f10, 0x0000 },
- { 0x1a00, 0x2f12, 0x0000 },
- { 0x9a00, 0x2f15, 0x2000 },
- { 0x1a00, 0x2f14, 0x0000 },
- { 0x1a00, 0x2f16, 0x0000 },
- { 0x9a00, 0x2f1b, 0x3000 },
- { 0x9a00, 0x2f19, 0x2000 },
- { 0x1a00, 0x2f18, 0x0000 },
- { 0x1a00, 0x2f1a, 0x0000 },
- { 0x9a00, 0x2f1d, 0x2000 },
- { 0x1a00, 0x2f1c, 0x0000 },
- { 0x1a00, 0x2f1e, 0x0000 },
- { 0x8701, 0x00f0, 0xd000 },
- { 0x8700, 0xa34d, 0xc000 },
- { 0x9a00, 0x3391, 0xb000 },
- { 0x8700, 0x3149, 0xa000 },
- { 0x9500, 0x303d, 0x9000 },
- { 0x9a00, 0x2f9f, 0x8000 },
- { 0x9a00, 0x2f5f, 0x7000 },
- { 0x9a00, 0x2f3f, 0x6000 },
- { 0x9a00, 0x2f2f, 0x5000 },
- { 0x9a00, 0x2f27, 0x4000 },
- { 0x9a00, 0x2f23, 0x3000 },
- { 0x9a00, 0x2f21, 0x2000 },
- { 0x1a00, 0x2f20, 0x0000 },
- { 0x1a00, 0x2f22, 0x0000 },
- { 0x9a00, 0x2f25, 0x2000 },
- { 0x1a00, 0x2f24, 0x0000 },
- { 0x1a00, 0x2f26, 0x0000 },
- { 0x9a00, 0x2f2b, 0x3000 },
- { 0x9a00, 0x2f29, 0x2000 },
- { 0x1a00, 0x2f28, 0x0000 },
- { 0x1a00, 0x2f2a, 0x0000 },
- { 0x9a00, 0x2f2d, 0x2000 },
- { 0x1a00, 0x2f2c, 0x0000 },
- { 0x1a00, 0x2f2e, 0x0000 },
- { 0x9a00, 0x2f37, 0x4000 },
- { 0x9a00, 0x2f33, 0x3000 },
- { 0x9a00, 0x2f31, 0x2000 },
- { 0x1a00, 0x2f30, 0x0000 },
- { 0x1a00, 0x2f32, 0x0000 },
- { 0x9a00, 0x2f35, 0x2000 },
- { 0x1a00, 0x2f34, 0x0000 },
- { 0x1a00, 0x2f36, 0x0000 },
- { 0x9a00, 0x2f3b, 0x3000 },
- { 0x9a00, 0x2f39, 0x2000 },
- { 0x1a00, 0x2f38, 0x0000 },
- { 0x1a00, 0x2f3a, 0x0000 },
- { 0x9a00, 0x2f3d, 0x2000 },
- { 0x1a00, 0x2f3c, 0x0000 },
- { 0x1a00, 0x2f3e, 0x0000 },
- { 0x9a00, 0x2f4f, 0x5000 },
- { 0x9a00, 0x2f47, 0x4000 },
- { 0x9a00, 0x2f43, 0x3000 },
- { 0x9a00, 0x2f41, 0x2000 },
- { 0x1a00, 0x2f40, 0x0000 },
- { 0x1a00, 0x2f42, 0x0000 },
- { 0x9a00, 0x2f45, 0x2000 },
- { 0x1a00, 0x2f44, 0x0000 },
- { 0x1a00, 0x2f46, 0x0000 },
- { 0x9a00, 0x2f4b, 0x3000 },
- { 0x9a00, 0x2f49, 0x2000 },
- { 0x1a00, 0x2f48, 0x0000 },
- { 0x1a00, 0x2f4a, 0x0000 },
- { 0x9a00, 0x2f4d, 0x2000 },
- { 0x1a00, 0x2f4c, 0x0000 },
- { 0x1a00, 0x2f4e, 0x0000 },
- { 0x9a00, 0x2f57, 0x4000 },
- { 0x9a00, 0x2f53, 0x3000 },
- { 0x9a00, 0x2f51, 0x2000 },
- { 0x1a00, 0x2f50, 0x0000 },
- { 0x1a00, 0x2f52, 0x0000 },
- { 0x9a00, 0x2f55, 0x2000 },
- { 0x1a00, 0x2f54, 0x0000 },
- { 0x1a00, 0x2f56, 0x0000 },
- { 0x9a00, 0x2f5b, 0x3000 },
- { 0x9a00, 0x2f59, 0x2000 },
- { 0x1a00, 0x2f58, 0x0000 },
- { 0x1a00, 0x2f5a, 0x0000 },
- { 0x9a00, 0x2f5d, 0x2000 },
- { 0x1a00, 0x2f5c, 0x0000 },
- { 0x1a00, 0x2f5e, 0x0000 },
- { 0x9a00, 0x2f7f, 0x6000 },
- { 0x9a00, 0x2f6f, 0x5000 },
- { 0x9a00, 0x2f67, 0x4000 },
- { 0x9a00, 0x2f63, 0x3000 },
- { 0x9a00, 0x2f61, 0x2000 },
- { 0x1a00, 0x2f60, 0x0000 },
- { 0x1a00, 0x2f62, 0x0000 },
- { 0x9a00, 0x2f65, 0x2000 },
- { 0x1a00, 0x2f64, 0x0000 },
- { 0x1a00, 0x2f66, 0x0000 },
- { 0x9a00, 0x2f6b, 0x3000 },
- { 0x9a00, 0x2f69, 0x2000 },
- { 0x1a00, 0x2f68, 0x0000 },
- { 0x1a00, 0x2f6a, 0x0000 },
- { 0x9a00, 0x2f6d, 0x2000 },
- { 0x1a00, 0x2f6c, 0x0000 },
- { 0x1a00, 0x2f6e, 0x0000 },
- { 0x9a00, 0x2f77, 0x4000 },
- { 0x9a00, 0x2f73, 0x3000 },
- { 0x9a00, 0x2f71, 0x2000 },
- { 0x1a00, 0x2f70, 0x0000 },
- { 0x1a00, 0x2f72, 0x0000 },
- { 0x9a00, 0x2f75, 0x2000 },
- { 0x1a00, 0x2f74, 0x0000 },
- { 0x1a00, 0x2f76, 0x0000 },
- { 0x9a00, 0x2f7b, 0x3000 },
- { 0x9a00, 0x2f79, 0x2000 },
- { 0x1a00, 0x2f78, 0x0000 },
- { 0x1a00, 0x2f7a, 0x0000 },
- { 0x9a00, 0x2f7d, 0x2000 },
- { 0x1a00, 0x2f7c, 0x0000 },
- { 0x1a00, 0x2f7e, 0x0000 },
- { 0x9a00, 0x2f8f, 0x5000 },
- { 0x9a00, 0x2f87, 0x4000 },
- { 0x9a00, 0x2f83, 0x3000 },
- { 0x9a00, 0x2f81, 0x2000 },
- { 0x1a00, 0x2f80, 0x0000 },
- { 0x1a00, 0x2f82, 0x0000 },
- { 0x9a00, 0x2f85, 0x2000 },
- { 0x1a00, 0x2f84, 0x0000 },
- { 0x1a00, 0x2f86, 0x0000 },
- { 0x9a00, 0x2f8b, 0x3000 },
- { 0x9a00, 0x2f89, 0x2000 },
- { 0x1a00, 0x2f88, 0x0000 },
- { 0x1a00, 0x2f8a, 0x0000 },
- { 0x9a00, 0x2f8d, 0x2000 },
- { 0x1a00, 0x2f8c, 0x0000 },
- { 0x1a00, 0x2f8e, 0x0000 },
- { 0x9a00, 0x2f97, 0x4000 },
- { 0x9a00, 0x2f93, 0x3000 },
- { 0x9a00, 0x2f91, 0x2000 },
- { 0x1a00, 0x2f90, 0x0000 },
- { 0x1a00, 0x2f92, 0x0000 },
- { 0x9a00, 0x2f95, 0x2000 },
- { 0x1a00, 0x2f94, 0x0000 },
- { 0x1a00, 0x2f96, 0x0000 },
- { 0x9a00, 0x2f9b, 0x3000 },
- { 0x9a00, 0x2f99, 0x2000 },
- { 0x1a00, 0x2f98, 0x0000 },
- { 0x1a00, 0x2f9a, 0x0000 },
- { 0x9a00, 0x2f9d, 0x2000 },
- { 0x1a00, 0x2f9c, 0x0000 },
- { 0x1a00, 0x2f9e, 0x0000 },
- { 0x9a00, 0x2ff9, 0x7000 },
- { 0x9a00, 0x2fbf, 0x6000 },
- { 0x9a00, 0x2faf, 0x5000 },
- { 0x9a00, 0x2fa7, 0x4000 },
- { 0x9a00, 0x2fa3, 0x3000 },
- { 0x9a00, 0x2fa1, 0x2000 },
- { 0x1a00, 0x2fa0, 0x0000 },
- { 0x1a00, 0x2fa2, 0x0000 },
- { 0x9a00, 0x2fa5, 0x2000 },
- { 0x1a00, 0x2fa4, 0x0000 },
- { 0x1a00, 0x2fa6, 0x0000 },
- { 0x9a00, 0x2fab, 0x3000 },
- { 0x9a00, 0x2fa9, 0x2000 },
- { 0x1a00, 0x2fa8, 0x0000 },
- { 0x1a00, 0x2faa, 0x0000 },
- { 0x9a00, 0x2fad, 0x2000 },
- { 0x1a00, 0x2fac, 0x0000 },
- { 0x1a00, 0x2fae, 0x0000 },
- { 0x9a00, 0x2fb7, 0x4000 },
- { 0x9a00, 0x2fb3, 0x3000 },
- { 0x9a00, 0x2fb1, 0x2000 },
- { 0x1a00, 0x2fb0, 0x0000 },
- { 0x1a00, 0x2fb2, 0x0000 },
- { 0x9a00, 0x2fb5, 0x2000 },
- { 0x1a00, 0x2fb4, 0x0000 },
- { 0x1a00, 0x2fb6, 0x0000 },
- { 0x9a00, 0x2fbb, 0x3000 },
- { 0x9a00, 0x2fb9, 0x2000 },
- { 0x1a00, 0x2fb8, 0x0000 },
- { 0x1a00, 0x2fba, 0x0000 },
- { 0x9a00, 0x2fbd, 0x2000 },
- { 0x1a00, 0x2fbc, 0x0000 },
- { 0x1a00, 0x2fbe, 0x0000 },
- { 0x9a00, 0x2fcf, 0x5000 },
- { 0x9a00, 0x2fc7, 0x4000 },
- { 0x9a00, 0x2fc3, 0x3000 },
- { 0x9a00, 0x2fc1, 0x2000 },
- { 0x1a00, 0x2fc0, 0x0000 },
- { 0x1a00, 0x2fc2, 0x0000 },
- { 0x9a00, 0x2fc5, 0x2000 },
- { 0x1a00, 0x2fc4, 0x0000 },
- { 0x1a00, 0x2fc6, 0x0000 },
- { 0x9a00, 0x2fcb, 0x3000 },
- { 0x9a00, 0x2fc9, 0x2000 },
- { 0x1a00, 0x2fc8, 0x0000 },
- { 0x1a00, 0x2fca, 0x0000 },
- { 0x9a00, 0x2fcd, 0x2000 },
- { 0x1a00, 0x2fcc, 0x0000 },
- { 0x1a00, 0x2fce, 0x0000 },
- { 0x9a00, 0x2ff1, 0x4000 },
- { 0x9a00, 0x2fd3, 0x3000 },
- { 0x9a00, 0x2fd1, 0x2000 },
- { 0x1a00, 0x2fd0, 0x0000 },
- { 0x1a00, 0x2fd2, 0x0000 },
- { 0x9a00, 0x2fd5, 0x2000 },
- { 0x1a00, 0x2fd4, 0x0000 },
- { 0x1a00, 0x2ff0, 0x0000 },
- { 0x9a00, 0x2ff5, 0x3000 },
- { 0x9a00, 0x2ff3, 0x2000 },
- { 0x1a00, 0x2ff2, 0x0000 },
- { 0x1a00, 0x2ff4, 0x0000 },
- { 0x9a00, 0x2ff7, 0x2000 },
- { 0x1a00, 0x2ff6, 0x0000 },
- { 0x1a00, 0x2ff8, 0x0000 },
- { 0x9600, 0x301d, 0x6000 },
- { 0x9200, 0x300d, 0x5000 },
- { 0x8600, 0x3005, 0x4000 },
- { 0x9500, 0x3001, 0x3000 },
- { 0x9a00, 0x2ffb, 0x2000 },
- { 0x1a00, 0x2ffa, 0x0000 },
- { 0x1d00, 0x3000, 0x0000 },
- { 0x9500, 0x3003, 0x2000 },
- { 0x1500, 0x3002, 0x0000 },
- { 0x1a00, 0x3004, 0x0000 },
- { 0x9200, 0x3009, 0x3000 },
- { 0x8e00, 0x3007, 0x2000 },
- { 0x0700, 0x3006, 0x0000 },
- { 0x1600, 0x3008, 0x0000 },
- { 0x9200, 0x300b, 0x2000 },
- { 0x1600, 0x300a, 0x0000 },
- { 0x1600, 0x300c, 0x0000 },
- { 0x9200, 0x3015, 0x4000 },
- { 0x9200, 0x3011, 0x3000 },
- { 0x9200, 0x300f, 0x2000 },
- { 0x1600, 0x300e, 0x0000 },
- { 0x1600, 0x3010, 0x0000 },
- { 0x9a00, 0x3013, 0x2000 },
- { 0x1a00, 0x3012, 0x0000 },
- { 0x1600, 0x3014, 0x0000 },
- { 0x9200, 0x3019, 0x3000 },
- { 0x9200, 0x3017, 0x2000 },
- { 0x1600, 0x3016, 0x0000 },
- { 0x1600, 0x3018, 0x0000 },
- { 0x9200, 0x301b, 0x2000 },
- { 0x1600, 0x301a, 0x0000 },
- { 0x1100, 0x301c, 0x0000 },
- { 0x8c00, 0x302d, 0x5000 },
- { 0x8e00, 0x3025, 0x4000 },
- { 0x8e00, 0x3021, 0x3000 },
- { 0x9200, 0x301f, 0x2000 },
- { 0x1200, 0x301e, 0x0000 },
- { 0x1a00, 0x3020, 0x0000 },
- { 0x8e00, 0x3023, 0x2000 },
- { 0x0e00, 0x3022, 0x0000 },
- { 0x0e00, 0x3024, 0x0000 },
- { 0x8e00, 0x3029, 0x3000 },
- { 0x8e00, 0x3027, 0x2000 },
- { 0x0e00, 0x3026, 0x0000 },
- { 0x0e00, 0x3028, 0x0000 },
- { 0x8c00, 0x302b, 0x2000 },
- { 0x0c00, 0x302a, 0x0000 },
- { 0x0c00, 0x302c, 0x0000 },
- { 0x8600, 0x3035, 0x4000 },
- { 0x8600, 0x3031, 0x3000 },
- { 0x8c00, 0x302f, 0x2000 },
- { 0x0c00, 0x302e, 0x0000 },
- { 0x1100, 0x3030, 0x0000 },
- { 0x8600, 0x3033, 0x2000 },
- { 0x0600, 0x3032, 0x0000 },
- { 0x0600, 0x3034, 0x0000 },
- { 0x8e00, 0x3039, 0x3000 },
- { 0x9a00, 0x3037, 0x2000 },
- { 0x1a00, 0x3036, 0x0000 },
- { 0x0e00, 0x3038, 0x0000 },
- { 0x8600, 0x303b, 0x2000 },
- { 0x0e00, 0x303a, 0x0000 },
- { 0x0700, 0x303c, 0x0000 },
- { 0x8700, 0x30c0, 0x8000 },
- { 0x8700, 0x307e, 0x7000 },
- { 0x8700, 0x305e, 0x6000 },
- { 0x8700, 0x304e, 0x5000 },
- { 0x8700, 0x3046, 0x4000 },
- { 0x8700, 0x3042, 0x3000 },
- { 0x9a00, 0x303f, 0x2000 },
- { 0x1a00, 0x303e, 0x0000 },
- { 0x0700, 0x3041, 0x0000 },
- { 0x8700, 0x3044, 0x2000 },
- { 0x0700, 0x3043, 0x0000 },
- { 0x0700, 0x3045, 0x0000 },
- { 0x8700, 0x304a, 0x3000 },
- { 0x8700, 0x3048, 0x2000 },
- { 0x0700, 0x3047, 0x0000 },
- { 0x0700, 0x3049, 0x0000 },
- { 0x8700, 0x304c, 0x2000 },
- { 0x0700, 0x304b, 0x0000 },
- { 0x0700, 0x304d, 0x0000 },
- { 0x8700, 0x3056, 0x4000 },
- { 0x8700, 0x3052, 0x3000 },
- { 0x8700, 0x3050, 0x2000 },
- { 0x0700, 0x304f, 0x0000 },
- { 0x0700, 0x3051, 0x0000 },
- { 0x8700, 0x3054, 0x2000 },
- { 0x0700, 0x3053, 0x0000 },
- { 0x0700, 0x3055, 0x0000 },
- { 0x8700, 0x305a, 0x3000 },
- { 0x8700, 0x3058, 0x2000 },
- { 0x0700, 0x3057, 0x0000 },
- { 0x0700, 0x3059, 0x0000 },
- { 0x8700, 0x305c, 0x2000 },
- { 0x0700, 0x305b, 0x0000 },
- { 0x0700, 0x305d, 0x0000 },
- { 0x8700, 0x306e, 0x5000 },
- { 0x8700, 0x3066, 0x4000 },
- { 0x8700, 0x3062, 0x3000 },
- { 0x8700, 0x3060, 0x2000 },
- { 0x0700, 0x305f, 0x0000 },
- { 0x0700, 0x3061, 0x0000 },
- { 0x8700, 0x3064, 0x2000 },
- { 0x0700, 0x3063, 0x0000 },
- { 0x0700, 0x3065, 0x0000 },
- { 0x8700, 0x306a, 0x3000 },
- { 0x8700, 0x3068, 0x2000 },
- { 0x0700, 0x3067, 0x0000 },
- { 0x0700, 0x3069, 0x0000 },
- { 0x8700, 0x306c, 0x2000 },
- { 0x0700, 0x306b, 0x0000 },
- { 0x0700, 0x306d, 0x0000 },
- { 0x8700, 0x3076, 0x4000 },
- { 0x8700, 0x3072, 0x3000 },
- { 0x8700, 0x3070, 0x2000 },
- { 0x0700, 0x306f, 0x0000 },
- { 0x0700, 0x3071, 0x0000 },
- { 0x8700, 0x3074, 0x2000 },
- { 0x0700, 0x3073, 0x0000 },
- { 0x0700, 0x3075, 0x0000 },
- { 0x8700, 0x307a, 0x3000 },
- { 0x8700, 0x3078, 0x2000 },
- { 0x0700, 0x3077, 0x0000 },
- { 0x0700, 0x3079, 0x0000 },
- { 0x8700, 0x307c, 0x2000 },
- { 0x0700, 0x307b, 0x0000 },
- { 0x0700, 0x307d, 0x0000 },
- { 0x9100, 0x30a0, 0x6000 },
- { 0x8700, 0x308e, 0x5000 },
- { 0x8700, 0x3086, 0x4000 },
- { 0x8700, 0x3082, 0x3000 },
- { 0x8700, 0x3080, 0x2000 },
- { 0x0700, 0x307f, 0x0000 },
- { 0x0700, 0x3081, 0x0000 },
- { 0x8700, 0x3084, 0x2000 },
- { 0x0700, 0x3083, 0x0000 },
- { 0x0700, 0x3085, 0x0000 },
- { 0x8700, 0x308a, 0x3000 },
- { 0x8700, 0x3088, 0x2000 },
- { 0x0700, 0x3087, 0x0000 },
- { 0x0700, 0x3089, 0x0000 },
- { 0x8700, 0x308c, 0x2000 },
- { 0x0700, 0x308b, 0x0000 },
- { 0x0700, 0x308d, 0x0000 },
- { 0x8700, 0x3096, 0x4000 },
- { 0x8700, 0x3092, 0x3000 },
- { 0x8700, 0x3090, 0x2000 },
- { 0x0700, 0x308f, 0x0000 },
- { 0x0700, 0x3091, 0x0000 },
- { 0x8700, 0x3094, 0x2000 },
- { 0x0700, 0x3093, 0x0000 },
- { 0x0700, 0x3095, 0x0000 },
- { 0x9800, 0x309c, 0x3000 },
- { 0x8c00, 0x309a, 0x2000 },
- { 0x0c00, 0x3099, 0x0000 },
- { 0x1800, 0x309b, 0x0000 },
- { 0x8600, 0x309e, 0x2000 },
- { 0x0600, 0x309d, 0x0000 },
- { 0x0700, 0x309f, 0x0000 },
- { 0x8700, 0x30b0, 0x5000 },
- { 0x8700, 0x30a8, 0x4000 },
- { 0x8700, 0x30a4, 0x3000 },
- { 0x8700, 0x30a2, 0x2000 },
- { 0x0700, 0x30a1, 0x0000 },
- { 0x0700, 0x30a3, 0x0000 },
- { 0x8700, 0x30a6, 0x2000 },
- { 0x0700, 0x30a5, 0x0000 },
- { 0x0700, 0x30a7, 0x0000 },
- { 0x8700, 0x30ac, 0x3000 },
- { 0x8700, 0x30aa, 0x2000 },
- { 0x0700, 0x30a9, 0x0000 },
- { 0x0700, 0x30ab, 0x0000 },
- { 0x8700, 0x30ae, 0x2000 },
- { 0x0700, 0x30ad, 0x0000 },
- { 0x0700, 0x30af, 0x0000 },
- { 0x8700, 0x30b8, 0x4000 },
- { 0x8700, 0x30b4, 0x3000 },
- { 0x8700, 0x30b2, 0x2000 },
- { 0x0700, 0x30b1, 0x0000 },
- { 0x0700, 0x30b3, 0x0000 },
- { 0x8700, 0x30b6, 0x2000 },
- { 0x0700, 0x30b5, 0x0000 },
- { 0x0700, 0x30b7, 0x0000 },
- { 0x8700, 0x30bc, 0x3000 },
- { 0x8700, 0x30ba, 0x2000 },
- { 0x0700, 0x30b9, 0x0000 },
- { 0x0700, 0x30bb, 0x0000 },
- { 0x8700, 0x30be, 0x2000 },
- { 0x0700, 0x30bd, 0x0000 },
- { 0x0700, 0x30bf, 0x0000 },
- { 0x8700, 0x3105, 0x7000 },
- { 0x8700, 0x30e0, 0x6000 },
- { 0x8700, 0x30d0, 0x5000 },
- { 0x8700, 0x30c8, 0x4000 },
- { 0x8700, 0x30c4, 0x3000 },
- { 0x8700, 0x30c2, 0x2000 },
- { 0x0700, 0x30c1, 0x0000 },
- { 0x0700, 0x30c3, 0x0000 },
- { 0x8700, 0x30c6, 0x2000 },
- { 0x0700, 0x30c5, 0x0000 },
- { 0x0700, 0x30c7, 0x0000 },
- { 0x8700, 0x30cc, 0x3000 },
- { 0x8700, 0x30ca, 0x2000 },
- { 0x0700, 0x30c9, 0x0000 },
- { 0x0700, 0x30cb, 0x0000 },
- { 0x8700, 0x30ce, 0x2000 },
- { 0x0700, 0x30cd, 0x0000 },
- { 0x0700, 0x30cf, 0x0000 },
- { 0x8700, 0x30d8, 0x4000 },
- { 0x8700, 0x30d4, 0x3000 },
- { 0x8700, 0x30d2, 0x2000 },
- { 0x0700, 0x30d1, 0x0000 },
- { 0x0700, 0x30d3, 0x0000 },
- { 0x8700, 0x30d6, 0x2000 },
- { 0x0700, 0x30d5, 0x0000 },
- { 0x0700, 0x30d7, 0x0000 },
- { 0x8700, 0x30dc, 0x3000 },
- { 0x8700, 0x30da, 0x2000 },
- { 0x0700, 0x30d9, 0x0000 },
- { 0x0700, 0x30db, 0x0000 },
- { 0x8700, 0x30de, 0x2000 },
- { 0x0700, 0x30dd, 0x0000 },
- { 0x0700, 0x30df, 0x0000 },
- { 0x8700, 0x30f0, 0x5000 },
- { 0x8700, 0x30e8, 0x4000 },
- { 0x8700, 0x30e4, 0x3000 },
- { 0x8700, 0x30e2, 0x2000 },
- { 0x0700, 0x30e1, 0x0000 },
- { 0x0700, 0x30e3, 0x0000 },
- { 0x8700, 0x30e6, 0x2000 },
- { 0x0700, 0x30e5, 0x0000 },
- { 0x0700, 0x30e7, 0x0000 },
- { 0x8700, 0x30ec, 0x3000 },
- { 0x8700, 0x30ea, 0x2000 },
- { 0x0700, 0x30e9, 0x0000 },
- { 0x0700, 0x30eb, 0x0000 },
- { 0x8700, 0x30ee, 0x2000 },
- { 0x0700, 0x30ed, 0x0000 },
- { 0x0700, 0x30ef, 0x0000 },
- { 0x8700, 0x30f8, 0x4000 },
- { 0x8700, 0x30f4, 0x3000 },
- { 0x8700, 0x30f2, 0x2000 },
- { 0x0700, 0x30f1, 0x0000 },
- { 0x0700, 0x30f3, 0x0000 },
- { 0x8700, 0x30f6, 0x2000 },
- { 0x0700, 0x30f5, 0x0000 },
- { 0x0700, 0x30f7, 0x0000 },
- { 0x8600, 0x30fc, 0x3000 },
- { 0x8700, 0x30fa, 0x2000 },
- { 0x0700, 0x30f9, 0x0000 },
- { 0x1000, 0x30fb, 0x0000 },
- { 0x8600, 0x30fe, 0x2000 },
- { 0x0600, 0x30fd, 0x0000 },
- { 0x0700, 0x30ff, 0x0000 },
- { 0x8700, 0x3125, 0x6000 },
- { 0x8700, 0x3115, 0x5000 },
- { 0x8700, 0x310d, 0x4000 },
- { 0x8700, 0x3109, 0x3000 },
- { 0x8700, 0x3107, 0x2000 },
- { 0x0700, 0x3106, 0x0000 },
- { 0x0700, 0x3108, 0x0000 },
- { 0x8700, 0x310b, 0x2000 },
- { 0x0700, 0x310a, 0x0000 },
- { 0x0700, 0x310c, 0x0000 },
- { 0x8700, 0x3111, 0x3000 },
- { 0x8700, 0x310f, 0x2000 },
- { 0x0700, 0x310e, 0x0000 },
- { 0x0700, 0x3110, 0x0000 },
- { 0x8700, 0x3113, 0x2000 },
- { 0x0700, 0x3112, 0x0000 },
- { 0x0700, 0x3114, 0x0000 },
- { 0x8700, 0x311d, 0x4000 },
- { 0x8700, 0x3119, 0x3000 },
- { 0x8700, 0x3117, 0x2000 },
- { 0x0700, 0x3116, 0x0000 },
- { 0x0700, 0x3118, 0x0000 },
- { 0x8700, 0x311b, 0x2000 },
- { 0x0700, 0x311a, 0x0000 },
- { 0x0700, 0x311c, 0x0000 },
- { 0x8700, 0x3121, 0x3000 },
- { 0x8700, 0x311f, 0x2000 },
- { 0x0700, 0x311e, 0x0000 },
- { 0x0700, 0x3120, 0x0000 },
- { 0x8700, 0x3123, 0x2000 },
- { 0x0700, 0x3122, 0x0000 },
- { 0x0700, 0x3124, 0x0000 },
- { 0x8700, 0x3139, 0x5000 },
- { 0x8700, 0x3131, 0x4000 },
- { 0x8700, 0x3129, 0x3000 },
- { 0x8700, 0x3127, 0x2000 },
- { 0x0700, 0x3126, 0x0000 },
- { 0x0700, 0x3128, 0x0000 },
- { 0x8700, 0x312b, 0x2000 },
- { 0x0700, 0x312a, 0x0000 },
- { 0x0700, 0x312c, 0x0000 },
- { 0x8700, 0x3135, 0x3000 },
- { 0x8700, 0x3133, 0x2000 },
- { 0x0700, 0x3132, 0x0000 },
- { 0x0700, 0x3134, 0x0000 },
- { 0x8700, 0x3137, 0x2000 },
- { 0x0700, 0x3136, 0x0000 },
- { 0x0700, 0x3138, 0x0000 },
- { 0x8700, 0x3141, 0x4000 },
- { 0x8700, 0x313d, 0x3000 },
- { 0x8700, 0x313b, 0x2000 },
- { 0x0700, 0x313a, 0x0000 },
- { 0x0700, 0x313c, 0x0000 },
- { 0x8700, 0x313f, 0x2000 },
- { 0x0700, 0x313e, 0x0000 },
- { 0x0700, 0x3140, 0x0000 },
- { 0x8700, 0x3145, 0x3000 },
- { 0x8700, 0x3143, 0x2000 },
- { 0x0700, 0x3142, 0x0000 },
- { 0x0700, 0x3144, 0x0000 },
- { 0x8700, 0x3147, 0x2000 },
- { 0x0700, 0x3146, 0x0000 },
- { 0x0700, 0x3148, 0x0000 },
- { 0x9a00, 0x3290, 0x9000 },
- { 0x9a00, 0x3202, 0x8000 },
- { 0x8700, 0x3189, 0x7000 },
- { 0x8700, 0x3169, 0x6000 },
- { 0x8700, 0x3159, 0x5000 },
- { 0x8700, 0x3151, 0x4000 },
- { 0x8700, 0x314d, 0x3000 },
- { 0x8700, 0x314b, 0x2000 },
- { 0x0700, 0x314a, 0x0000 },
- { 0x0700, 0x314c, 0x0000 },
- { 0x8700, 0x314f, 0x2000 },
- { 0x0700, 0x314e, 0x0000 },
- { 0x0700, 0x3150, 0x0000 },
- { 0x8700, 0x3155, 0x3000 },
- { 0x8700, 0x3153, 0x2000 },
- { 0x0700, 0x3152, 0x0000 },
- { 0x0700, 0x3154, 0x0000 },
- { 0x8700, 0x3157, 0x2000 },
- { 0x0700, 0x3156, 0x0000 },
- { 0x0700, 0x3158, 0x0000 },
- { 0x8700, 0x3161, 0x4000 },
- { 0x8700, 0x315d, 0x3000 },
- { 0x8700, 0x315b, 0x2000 },
- { 0x0700, 0x315a, 0x0000 },
- { 0x0700, 0x315c, 0x0000 },
- { 0x8700, 0x315f, 0x2000 },
- { 0x0700, 0x315e, 0x0000 },
- { 0x0700, 0x3160, 0x0000 },
- { 0x8700, 0x3165, 0x3000 },
- { 0x8700, 0x3163, 0x2000 },
- { 0x0700, 0x3162, 0x0000 },
- { 0x0700, 0x3164, 0x0000 },
- { 0x8700, 0x3167, 0x2000 },
- { 0x0700, 0x3166, 0x0000 },
- { 0x0700, 0x3168, 0x0000 },
- { 0x8700, 0x3179, 0x5000 },
- { 0x8700, 0x3171, 0x4000 },
- { 0x8700, 0x316d, 0x3000 },
- { 0x8700, 0x316b, 0x2000 },
- { 0x0700, 0x316a, 0x0000 },
- { 0x0700, 0x316c, 0x0000 },
- { 0x8700, 0x316f, 0x2000 },
- { 0x0700, 0x316e, 0x0000 },
- { 0x0700, 0x3170, 0x0000 },
- { 0x8700, 0x3175, 0x3000 },
- { 0x8700, 0x3173, 0x2000 },
- { 0x0700, 0x3172, 0x0000 },
- { 0x0700, 0x3174, 0x0000 },
- { 0x8700, 0x3177, 0x2000 },
- { 0x0700, 0x3176, 0x0000 },
- { 0x0700, 0x3178, 0x0000 },
- { 0x8700, 0x3181, 0x4000 },
- { 0x8700, 0x317d, 0x3000 },
- { 0x8700, 0x317b, 0x2000 },
- { 0x0700, 0x317a, 0x0000 },
- { 0x0700, 0x317c, 0x0000 },
- { 0x8700, 0x317f, 0x2000 },
- { 0x0700, 0x317e, 0x0000 },
- { 0x0700, 0x3180, 0x0000 },
- { 0x8700, 0x3185, 0x3000 },
- { 0x8700, 0x3183, 0x2000 },
- { 0x0700, 0x3182, 0x0000 },
- { 0x0700, 0x3184, 0x0000 },
- { 0x8700, 0x3187, 0x2000 },
- { 0x0700, 0x3186, 0x0000 },
- { 0x0700, 0x3188, 0x0000 },
- { 0x8700, 0x31aa, 0x6000 },
- { 0x9a00, 0x319a, 0x5000 },
- { 0x8f00, 0x3192, 0x4000 },
- { 0x8700, 0x318d, 0x3000 },
- { 0x8700, 0x318b, 0x2000 },
- { 0x0700, 0x318a, 0x0000 },
- { 0x0700, 0x318c, 0x0000 },
- { 0x9a00, 0x3190, 0x2000 },
- { 0x0700, 0x318e, 0x0000 },
- { 0x1a00, 0x3191, 0x0000 },
- { 0x9a00, 0x3196, 0x3000 },
- { 0x8f00, 0x3194, 0x2000 },
- { 0x0f00, 0x3193, 0x0000 },
- { 0x0f00, 0x3195, 0x0000 },
- { 0x9a00, 0x3198, 0x2000 },
- { 0x1a00, 0x3197, 0x0000 },
- { 0x1a00, 0x3199, 0x0000 },
- { 0x8700, 0x31a2, 0x4000 },
- { 0x9a00, 0x319e, 0x3000 },
- { 0x9a00, 0x319c, 0x2000 },
- { 0x1a00, 0x319b, 0x0000 },
- { 0x1a00, 0x319d, 0x0000 },
- { 0x8700, 0x31a0, 0x2000 },
- { 0x1a00, 0x319f, 0x0000 },
- { 0x0700, 0x31a1, 0x0000 },
- { 0x8700, 0x31a6, 0x3000 },
- { 0x8700, 0x31a4, 0x2000 },
- { 0x0700, 0x31a3, 0x0000 },
- { 0x0700, 0x31a5, 0x0000 },
- { 0x8700, 0x31a8, 0x2000 },
- { 0x0700, 0x31a7, 0x0000 },
- { 0x0700, 0x31a9, 0x0000 },
- { 0x8700, 0x31f2, 0x5000 },
- { 0x8700, 0x31b2, 0x4000 },
- { 0x8700, 0x31ae, 0x3000 },
- { 0x8700, 0x31ac, 0x2000 },
- { 0x0700, 0x31ab, 0x0000 },
- { 0x0700, 0x31ad, 0x0000 },
- { 0x8700, 0x31b0, 0x2000 },
- { 0x0700, 0x31af, 0x0000 },
- { 0x0700, 0x31b1, 0x0000 },
- { 0x8700, 0x31b6, 0x3000 },
- { 0x8700, 0x31b4, 0x2000 },
- { 0x0700, 0x31b3, 0x0000 },
- { 0x0700, 0x31b5, 0x0000 },
- { 0x8700, 0x31f0, 0x2000 },
- { 0x0700, 0x31b7, 0x0000 },
- { 0x0700, 0x31f1, 0x0000 },
- { 0x8700, 0x31fa, 0x4000 },
- { 0x8700, 0x31f6, 0x3000 },
- { 0x8700, 0x31f4, 0x2000 },
- { 0x0700, 0x31f3, 0x0000 },
- { 0x0700, 0x31f5, 0x0000 },
- { 0x8700, 0x31f8, 0x2000 },
- { 0x0700, 0x31f7, 0x0000 },
- { 0x0700, 0x31f9, 0x0000 },
- { 0x8700, 0x31fe, 0x3000 },
- { 0x8700, 0x31fc, 0x2000 },
- { 0x0700, 0x31fb, 0x0000 },
- { 0x0700, 0x31fd, 0x0000 },
- { 0x9a00, 0x3200, 0x2000 },
- { 0x0700, 0x31ff, 0x0000 },
- { 0x1a00, 0x3201, 0x0000 },
- { 0x9a00, 0x3243, 0x7000 },
- { 0x8f00, 0x3223, 0x6000 },
- { 0x9a00, 0x3212, 0x5000 },
- { 0x9a00, 0x320a, 0x4000 },
- { 0x9a00, 0x3206, 0x3000 },
- { 0x9a00, 0x3204, 0x2000 },
- { 0x1a00, 0x3203, 0x0000 },
- { 0x1a00, 0x3205, 0x0000 },
- { 0x9a00, 0x3208, 0x2000 },
- { 0x1a00, 0x3207, 0x0000 },
- { 0x1a00, 0x3209, 0x0000 },
- { 0x9a00, 0x320e, 0x3000 },
- { 0x9a00, 0x320c, 0x2000 },
- { 0x1a00, 0x320b, 0x0000 },
- { 0x1a00, 0x320d, 0x0000 },
- { 0x9a00, 0x3210, 0x2000 },
- { 0x1a00, 0x320f, 0x0000 },
- { 0x1a00, 0x3211, 0x0000 },
- { 0x9a00, 0x321a, 0x4000 },
- { 0x9a00, 0x3216, 0x3000 },
- { 0x9a00, 0x3214, 0x2000 },
- { 0x1a00, 0x3213, 0x0000 },
- { 0x1a00, 0x3215, 0x0000 },
- { 0x9a00, 0x3218, 0x2000 },
- { 0x1a00, 0x3217, 0x0000 },
- { 0x1a00, 0x3219, 0x0000 },
- { 0x9a00, 0x321e, 0x3000 },
- { 0x9a00, 0x321c, 0x2000 },
- { 0x1a00, 0x321b, 0x0000 },
- { 0x1a00, 0x321d, 0x0000 },
- { 0x8f00, 0x3221, 0x2000 },
- { 0x0f00, 0x3220, 0x0000 },
- { 0x0f00, 0x3222, 0x0000 },
- { 0x9a00, 0x3233, 0x5000 },
- { 0x9a00, 0x322b, 0x4000 },
- { 0x8f00, 0x3227, 0x3000 },
- { 0x8f00, 0x3225, 0x2000 },
- { 0x0f00, 0x3224, 0x0000 },
- { 0x0f00, 0x3226, 0x0000 },
- { 0x8f00, 0x3229, 0x2000 },
- { 0x0f00, 0x3228, 0x0000 },
- { 0x1a00, 0x322a, 0x0000 },
- { 0x9a00, 0x322f, 0x3000 },
- { 0x9a00, 0x322d, 0x2000 },
- { 0x1a00, 0x322c, 0x0000 },
- { 0x1a00, 0x322e, 0x0000 },
- { 0x9a00, 0x3231, 0x2000 },
- { 0x1a00, 0x3230, 0x0000 },
- { 0x1a00, 0x3232, 0x0000 },
- { 0x9a00, 0x323b, 0x4000 },
- { 0x9a00, 0x3237, 0x3000 },
- { 0x9a00, 0x3235, 0x2000 },
- { 0x1a00, 0x3234, 0x0000 },
- { 0x1a00, 0x3236, 0x0000 },
- { 0x9a00, 0x3239, 0x2000 },
- { 0x1a00, 0x3238, 0x0000 },
- { 0x1a00, 0x323a, 0x0000 },
- { 0x9a00, 0x323f, 0x3000 },
- { 0x9a00, 0x323d, 0x2000 },
- { 0x1a00, 0x323c, 0x0000 },
- { 0x1a00, 0x323e, 0x0000 },
- { 0x9a00, 0x3241, 0x2000 },
- { 0x1a00, 0x3240, 0x0000 },
- { 0x1a00, 0x3242, 0x0000 },
- { 0x9a00, 0x326f, 0x6000 },
- { 0x8f00, 0x325f, 0x5000 },
- { 0x8f00, 0x3257, 0x4000 },
- { 0x8f00, 0x3253, 0x3000 },
- { 0x8f00, 0x3251, 0x2000 },
- { 0x1a00, 0x3250, 0x0000 },
- { 0x0f00, 0x3252, 0x0000 },
- { 0x8f00, 0x3255, 0x2000 },
- { 0x0f00, 0x3254, 0x0000 },
- { 0x0f00, 0x3256, 0x0000 },
- { 0x8f00, 0x325b, 0x3000 },
- { 0x8f00, 0x3259, 0x2000 },
- { 0x0f00, 0x3258, 0x0000 },
- { 0x0f00, 0x325a, 0x0000 },
- { 0x8f00, 0x325d, 0x2000 },
- { 0x0f00, 0x325c, 0x0000 },
- { 0x0f00, 0x325e, 0x0000 },
- { 0x9a00, 0x3267, 0x4000 },
- { 0x9a00, 0x3263, 0x3000 },
- { 0x9a00, 0x3261, 0x2000 },
- { 0x1a00, 0x3260, 0x0000 },
- { 0x1a00, 0x3262, 0x0000 },
- { 0x9a00, 0x3265, 0x2000 },
- { 0x1a00, 0x3264, 0x0000 },
- { 0x1a00, 0x3266, 0x0000 },
- { 0x9a00, 0x326b, 0x3000 },
- { 0x9a00, 0x3269, 0x2000 },
- { 0x1a00, 0x3268, 0x0000 },
- { 0x1a00, 0x326a, 0x0000 },
- { 0x9a00, 0x326d, 0x2000 },
- { 0x1a00, 0x326c, 0x0000 },
- { 0x1a00, 0x326e, 0x0000 },
- { 0x8f00, 0x3280, 0x5000 },
- { 0x9a00, 0x3277, 0x4000 },
- { 0x9a00, 0x3273, 0x3000 },
- { 0x9a00, 0x3271, 0x2000 },
- { 0x1a00, 0x3270, 0x0000 },
- { 0x1a00, 0x3272, 0x0000 },
- { 0x9a00, 0x3275, 0x2000 },
- { 0x1a00, 0x3274, 0x0000 },
- { 0x1a00, 0x3276, 0x0000 },
- { 0x9a00, 0x327b, 0x3000 },
- { 0x9a00, 0x3279, 0x2000 },
- { 0x1a00, 0x3278, 0x0000 },
- { 0x1a00, 0x327a, 0x0000 },
- { 0x9a00, 0x327d, 0x2000 },
- { 0x1a00, 0x327c, 0x0000 },
- { 0x1a00, 0x327f, 0x0000 },
- { 0x8f00, 0x3288, 0x4000 },
- { 0x8f00, 0x3284, 0x3000 },
- { 0x8f00, 0x3282, 0x2000 },
- { 0x0f00, 0x3281, 0x0000 },
- { 0x0f00, 0x3283, 0x0000 },
- { 0x8f00, 0x3286, 0x2000 },
- { 0x0f00, 0x3285, 0x0000 },
- { 0x0f00, 0x3287, 0x0000 },
- { 0x9a00, 0x328c, 0x3000 },
- { 0x9a00, 0x328a, 0x2000 },
- { 0x0f00, 0x3289, 0x0000 },
- { 0x1a00, 0x328b, 0x0000 },
- { 0x9a00, 0x328e, 0x2000 },
- { 0x1a00, 0x328d, 0x0000 },
- { 0x1a00, 0x328f, 0x0000 },
- { 0x9a00, 0x3311, 0x8000 },
- { 0x9a00, 0x32d0, 0x7000 },
- { 0x9a00, 0x32b0, 0x6000 },
- { 0x9a00, 0x32a0, 0x5000 },
- { 0x9a00, 0x3298, 0x4000 },
- { 0x9a00, 0x3294, 0x3000 },
- { 0x9a00, 0x3292, 0x2000 },
- { 0x1a00, 0x3291, 0x0000 },
- { 0x1a00, 0x3293, 0x0000 },
- { 0x9a00, 0x3296, 0x2000 },
- { 0x1a00, 0x3295, 0x0000 },
- { 0x1a00, 0x3297, 0x0000 },
- { 0x9a00, 0x329c, 0x3000 },
- { 0x9a00, 0x329a, 0x2000 },
- { 0x1a00, 0x3299, 0x0000 },
- { 0x1a00, 0x329b, 0x0000 },
- { 0x9a00, 0x329e, 0x2000 },
- { 0x1a00, 0x329d, 0x0000 },
- { 0x1a00, 0x329f, 0x0000 },
- { 0x9a00, 0x32a8, 0x4000 },
- { 0x9a00, 0x32a4, 0x3000 },
- { 0x9a00, 0x32a2, 0x2000 },
- { 0x1a00, 0x32a1, 0x0000 },
- { 0x1a00, 0x32a3, 0x0000 },
- { 0x9a00, 0x32a6, 0x2000 },
- { 0x1a00, 0x32a5, 0x0000 },
- { 0x1a00, 0x32a7, 0x0000 },
- { 0x9a00, 0x32ac, 0x3000 },
- { 0x9a00, 0x32aa, 0x2000 },
- { 0x1a00, 0x32a9, 0x0000 },
- { 0x1a00, 0x32ab, 0x0000 },
- { 0x9a00, 0x32ae, 0x2000 },
- { 0x1a00, 0x32ad, 0x0000 },
- { 0x1a00, 0x32af, 0x0000 },
- { 0x9a00, 0x32c0, 0x5000 },
- { 0x8f00, 0x32b8, 0x4000 },
- { 0x8f00, 0x32b4, 0x3000 },
- { 0x8f00, 0x32b2, 0x2000 },
- { 0x0f00, 0x32b1, 0x0000 },
- { 0x0f00, 0x32b3, 0x0000 },
- { 0x8f00, 0x32b6, 0x2000 },
- { 0x0f00, 0x32b5, 0x0000 },
- { 0x0f00, 0x32b7, 0x0000 },
- { 0x8f00, 0x32bc, 0x3000 },
- { 0x8f00, 0x32ba, 0x2000 },
- { 0x0f00, 0x32b9, 0x0000 },
- { 0x0f00, 0x32bb, 0x0000 },
- { 0x8f00, 0x32be, 0x2000 },
- { 0x0f00, 0x32bd, 0x0000 },
- { 0x0f00, 0x32bf, 0x0000 },
- { 0x9a00, 0x32c8, 0x4000 },
- { 0x9a00, 0x32c4, 0x3000 },
- { 0x9a00, 0x32c2, 0x2000 },
- { 0x1a00, 0x32c1, 0x0000 },
- { 0x1a00, 0x32c3, 0x0000 },
- { 0x9a00, 0x32c6, 0x2000 },
- { 0x1a00, 0x32c5, 0x0000 },
- { 0x1a00, 0x32c7, 0x0000 },
- { 0x9a00, 0x32cc, 0x3000 },
- { 0x9a00, 0x32ca, 0x2000 },
- { 0x1a00, 0x32c9, 0x0000 },
- { 0x1a00, 0x32cb, 0x0000 },
- { 0x9a00, 0x32ce, 0x2000 },
- { 0x1a00, 0x32cd, 0x0000 },
- { 0x1a00, 0x32cf, 0x0000 },
- { 0x9a00, 0x32f0, 0x6000 },
- { 0x9a00, 0x32e0, 0x5000 },
- { 0x9a00, 0x32d8, 0x4000 },
- { 0x9a00, 0x32d4, 0x3000 },
- { 0x9a00, 0x32d2, 0x2000 },
- { 0x1a00, 0x32d1, 0x0000 },
- { 0x1a00, 0x32d3, 0x0000 },
- { 0x9a00, 0x32d6, 0x2000 },
- { 0x1a00, 0x32d5, 0x0000 },
- { 0x1a00, 0x32d7, 0x0000 },
- { 0x9a00, 0x32dc, 0x3000 },
- { 0x9a00, 0x32da, 0x2000 },
- { 0x1a00, 0x32d9, 0x0000 },
- { 0x1a00, 0x32db, 0x0000 },
- { 0x9a00, 0x32de, 0x2000 },
- { 0x1a00, 0x32dd, 0x0000 },
- { 0x1a00, 0x32df, 0x0000 },
- { 0x9a00, 0x32e8, 0x4000 },
- { 0x9a00, 0x32e4, 0x3000 },
- { 0x9a00, 0x32e2, 0x2000 },
- { 0x1a00, 0x32e1, 0x0000 },
- { 0x1a00, 0x32e3, 0x0000 },
- { 0x9a00, 0x32e6, 0x2000 },
- { 0x1a00, 0x32e5, 0x0000 },
- { 0x1a00, 0x32e7, 0x0000 },
- { 0x9a00, 0x32ec, 0x3000 },
- { 0x9a00, 0x32ea, 0x2000 },
- { 0x1a00, 0x32e9, 0x0000 },
- { 0x1a00, 0x32eb, 0x0000 },
- { 0x9a00, 0x32ee, 0x2000 },
- { 0x1a00, 0x32ed, 0x0000 },
- { 0x1a00, 0x32ef, 0x0000 },
- { 0x9a00, 0x3301, 0x5000 },
- { 0x9a00, 0x32f8, 0x4000 },
- { 0x9a00, 0x32f4, 0x3000 },
- { 0x9a00, 0x32f2, 0x2000 },
- { 0x1a00, 0x32f1, 0x0000 },
- { 0x1a00, 0x32f3, 0x0000 },
- { 0x9a00, 0x32f6, 0x2000 },
- { 0x1a00, 0x32f5, 0x0000 },
- { 0x1a00, 0x32f7, 0x0000 },
- { 0x9a00, 0x32fc, 0x3000 },
- { 0x9a00, 0x32fa, 0x2000 },
- { 0x1a00, 0x32f9, 0x0000 },
- { 0x1a00, 0x32fb, 0x0000 },
- { 0x9a00, 0x32fe, 0x2000 },
- { 0x1a00, 0x32fd, 0x0000 },
- { 0x1a00, 0x3300, 0x0000 },
- { 0x9a00, 0x3309, 0x4000 },
- { 0x9a00, 0x3305, 0x3000 },
- { 0x9a00, 0x3303, 0x2000 },
- { 0x1a00, 0x3302, 0x0000 },
- { 0x1a00, 0x3304, 0x0000 },
- { 0x9a00, 0x3307, 0x2000 },
- { 0x1a00, 0x3306, 0x0000 },
- { 0x1a00, 0x3308, 0x0000 },
- { 0x9a00, 0x330d, 0x3000 },
- { 0x9a00, 0x330b, 0x2000 },
- { 0x1a00, 0x330a, 0x0000 },
- { 0x1a00, 0x330c, 0x0000 },
- { 0x9a00, 0x330f, 0x2000 },
- { 0x1a00, 0x330e, 0x0000 },
- { 0x1a00, 0x3310, 0x0000 },
- { 0x9a00, 0x3351, 0x7000 },
- { 0x9a00, 0x3331, 0x6000 },
- { 0x9a00, 0x3321, 0x5000 },
- { 0x9a00, 0x3319, 0x4000 },
- { 0x9a00, 0x3315, 0x3000 },
- { 0x9a00, 0x3313, 0x2000 },
- { 0x1a00, 0x3312, 0x0000 },
- { 0x1a00, 0x3314, 0x0000 },
- { 0x9a00, 0x3317, 0x2000 },
- { 0x1a00, 0x3316, 0x0000 },
- { 0x1a00, 0x3318, 0x0000 },
- { 0x9a00, 0x331d, 0x3000 },
- { 0x9a00, 0x331b, 0x2000 },
- { 0x1a00, 0x331a, 0x0000 },
- { 0x1a00, 0x331c, 0x0000 },
- { 0x9a00, 0x331f, 0x2000 },
- { 0x1a00, 0x331e, 0x0000 },
- { 0x1a00, 0x3320, 0x0000 },
- { 0x9a00, 0x3329, 0x4000 },
- { 0x9a00, 0x3325, 0x3000 },
- { 0x9a00, 0x3323, 0x2000 },
- { 0x1a00, 0x3322, 0x0000 },
- { 0x1a00, 0x3324, 0x0000 },
- { 0x9a00, 0x3327, 0x2000 },
- { 0x1a00, 0x3326, 0x0000 },
- { 0x1a00, 0x3328, 0x0000 },
- { 0x9a00, 0x332d, 0x3000 },
- { 0x9a00, 0x332b, 0x2000 },
- { 0x1a00, 0x332a, 0x0000 },
- { 0x1a00, 0x332c, 0x0000 },
- { 0x9a00, 0x332f, 0x2000 },
- { 0x1a00, 0x332e, 0x0000 },
- { 0x1a00, 0x3330, 0x0000 },
- { 0x9a00, 0x3341, 0x5000 },
- { 0x9a00, 0x3339, 0x4000 },
- { 0x9a00, 0x3335, 0x3000 },
- { 0x9a00, 0x3333, 0x2000 },
- { 0x1a00, 0x3332, 0x0000 },
- { 0x1a00, 0x3334, 0x0000 },
- { 0x9a00, 0x3337, 0x2000 },
- { 0x1a00, 0x3336, 0x0000 },
- { 0x1a00, 0x3338, 0x0000 },
- { 0x9a00, 0x333d, 0x3000 },
- { 0x9a00, 0x333b, 0x2000 },
- { 0x1a00, 0x333a, 0x0000 },
- { 0x1a00, 0x333c, 0x0000 },
- { 0x9a00, 0x333f, 0x2000 },
- { 0x1a00, 0x333e, 0x0000 },
- { 0x1a00, 0x3340, 0x0000 },
- { 0x9a00, 0x3349, 0x4000 },
- { 0x9a00, 0x3345, 0x3000 },
- { 0x9a00, 0x3343, 0x2000 },
- { 0x1a00, 0x3342, 0x0000 },
- { 0x1a00, 0x3344, 0x0000 },
- { 0x9a00, 0x3347, 0x2000 },
- { 0x1a00, 0x3346, 0x0000 },
- { 0x1a00, 0x3348, 0x0000 },
- { 0x9a00, 0x334d, 0x3000 },
- { 0x9a00, 0x334b, 0x2000 },
- { 0x1a00, 0x334a, 0x0000 },
- { 0x1a00, 0x334c, 0x0000 },
- { 0x9a00, 0x334f, 0x2000 },
- { 0x1a00, 0x334e, 0x0000 },
- { 0x1a00, 0x3350, 0x0000 },
- { 0x9a00, 0x3371, 0x6000 },
- { 0x9a00, 0x3361, 0x5000 },
- { 0x9a00, 0x3359, 0x4000 },
- { 0x9a00, 0x3355, 0x3000 },
- { 0x9a00, 0x3353, 0x2000 },
- { 0x1a00, 0x3352, 0x0000 },
- { 0x1a00, 0x3354, 0x0000 },
- { 0x9a00, 0x3357, 0x2000 },
- { 0x1a00, 0x3356, 0x0000 },
- { 0x1a00, 0x3358, 0x0000 },
- { 0x9a00, 0x335d, 0x3000 },
- { 0x9a00, 0x335b, 0x2000 },
- { 0x1a00, 0x335a, 0x0000 },
- { 0x1a00, 0x335c, 0x0000 },
- { 0x9a00, 0x335f, 0x2000 },
- { 0x1a00, 0x335e, 0x0000 },
- { 0x1a00, 0x3360, 0x0000 },
- { 0x9a00, 0x3369, 0x4000 },
- { 0x9a00, 0x3365, 0x3000 },
- { 0x9a00, 0x3363, 0x2000 },
- { 0x1a00, 0x3362, 0x0000 },
- { 0x1a00, 0x3364, 0x0000 },
- { 0x9a00, 0x3367, 0x2000 },
- { 0x1a00, 0x3366, 0x0000 },
- { 0x1a00, 0x3368, 0x0000 },
- { 0x9a00, 0x336d, 0x3000 },
- { 0x9a00, 0x336b, 0x2000 },
- { 0x1a00, 0x336a, 0x0000 },
- { 0x1a00, 0x336c, 0x0000 },
- { 0x9a00, 0x336f, 0x2000 },
- { 0x1a00, 0x336e, 0x0000 },
- { 0x1a00, 0x3370, 0x0000 },
- { 0x9a00, 0x3381, 0x5000 },
- { 0x9a00, 0x3379, 0x4000 },
- { 0x9a00, 0x3375, 0x3000 },
- { 0x9a00, 0x3373, 0x2000 },
- { 0x1a00, 0x3372, 0x0000 },
- { 0x1a00, 0x3374, 0x0000 },
- { 0x9a00, 0x3377, 0x2000 },
- { 0x1a00, 0x3376, 0x0000 },
- { 0x1a00, 0x3378, 0x0000 },
- { 0x9a00, 0x337d, 0x3000 },
- { 0x9a00, 0x337b, 0x2000 },
- { 0x1a00, 0x337a, 0x0000 },
- { 0x1a00, 0x337c, 0x0000 },
- { 0x9a00, 0x337f, 0x2000 },
- { 0x1a00, 0x337e, 0x0000 },
- { 0x1a00, 0x3380, 0x0000 },
- { 0x9a00, 0x3389, 0x4000 },
- { 0x9a00, 0x3385, 0x3000 },
- { 0x9a00, 0x3383, 0x2000 },
- { 0x1a00, 0x3382, 0x0000 },
- { 0x1a00, 0x3384, 0x0000 },
- { 0x9a00, 0x3387, 0x2000 },
- { 0x1a00, 0x3386, 0x0000 },
- { 0x1a00, 0x3388, 0x0000 },
- { 0x9a00, 0x338d, 0x3000 },
- { 0x9a00, 0x338b, 0x2000 },
- { 0x1a00, 0x338a, 0x0000 },
- { 0x1a00, 0x338c, 0x0000 },
- { 0x9a00, 0x338f, 0x2000 },
- { 0x1a00, 0x338e, 0x0000 },
- { 0x1a00, 0x3390, 0x0000 },
- { 0x8700, 0xa14d, 0xa000 },
- { 0x8700, 0xa04d, 0x9000 },
- { 0x9a00, 0x4dcf, 0x8000 },
- { 0x9a00, 0x33d1, 0x7000 },
- { 0x9a00, 0x33b1, 0x6000 },
- { 0x9a00, 0x33a1, 0x5000 },
- { 0x9a00, 0x3399, 0x4000 },
- { 0x9a00, 0x3395, 0x3000 },
- { 0x9a00, 0x3393, 0x2000 },
- { 0x1a00, 0x3392, 0x0000 },
- { 0x1a00, 0x3394, 0x0000 },
- { 0x9a00, 0x3397, 0x2000 },
- { 0x1a00, 0x3396, 0x0000 },
- { 0x1a00, 0x3398, 0x0000 },
- { 0x9a00, 0x339d, 0x3000 },
- { 0x9a00, 0x339b, 0x2000 },
- { 0x1a00, 0x339a, 0x0000 },
- { 0x1a00, 0x339c, 0x0000 },
- { 0x9a00, 0x339f, 0x2000 },
- { 0x1a00, 0x339e, 0x0000 },
- { 0x1a00, 0x33a0, 0x0000 },
- { 0x9a00, 0x33a9, 0x4000 },
- { 0x9a00, 0x33a5, 0x3000 },
- { 0x9a00, 0x33a3, 0x2000 },
- { 0x1a00, 0x33a2, 0x0000 },
- { 0x1a00, 0x33a4, 0x0000 },
- { 0x9a00, 0x33a7, 0x2000 },
- { 0x1a00, 0x33a6, 0x0000 },
- { 0x1a00, 0x33a8, 0x0000 },
- { 0x9a00, 0x33ad, 0x3000 },
- { 0x9a00, 0x33ab, 0x2000 },
- { 0x1a00, 0x33aa, 0x0000 },
- { 0x1a00, 0x33ac, 0x0000 },
- { 0x9a00, 0x33af, 0x2000 },
- { 0x1a00, 0x33ae, 0x0000 },
- { 0x1a00, 0x33b0, 0x0000 },
- { 0x9a00, 0x33c1, 0x5000 },
- { 0x9a00, 0x33b9, 0x4000 },
- { 0x9a00, 0x33b5, 0x3000 },
- { 0x9a00, 0x33b3, 0x2000 },
- { 0x1a00, 0x33b2, 0x0000 },
- { 0x1a00, 0x33b4, 0x0000 },
- { 0x9a00, 0x33b7, 0x2000 },
- { 0x1a00, 0x33b6, 0x0000 },
- { 0x1a00, 0x33b8, 0x0000 },
- { 0x9a00, 0x33bd, 0x3000 },
- { 0x9a00, 0x33bb, 0x2000 },
- { 0x1a00, 0x33ba, 0x0000 },
- { 0x1a00, 0x33bc, 0x0000 },
- { 0x9a00, 0x33bf, 0x2000 },
- { 0x1a00, 0x33be, 0x0000 },
- { 0x1a00, 0x33c0, 0x0000 },
- { 0x9a00, 0x33c9, 0x4000 },
- { 0x9a00, 0x33c5, 0x3000 },
- { 0x9a00, 0x33c3, 0x2000 },
- { 0x1a00, 0x33c2, 0x0000 },
- { 0x1a00, 0x33c4, 0x0000 },
- { 0x9a00, 0x33c7, 0x2000 },
- { 0x1a00, 0x33c6, 0x0000 },
- { 0x1a00, 0x33c8, 0x0000 },
- { 0x9a00, 0x33cd, 0x3000 },
- { 0x9a00, 0x33cb, 0x2000 },
- { 0x1a00, 0x33ca, 0x0000 },
- { 0x1a00, 0x33cc, 0x0000 },
- { 0x9a00, 0x33cf, 0x2000 },
- { 0x1a00, 0x33ce, 0x0000 },
- { 0x1a00, 0x33d0, 0x0000 },
- { 0x9a00, 0x33f1, 0x6000 },
- { 0x9a00, 0x33e1, 0x5000 },
- { 0x9a00, 0x33d9, 0x4000 },
- { 0x9a00, 0x33d5, 0x3000 },
- { 0x9a00, 0x33d3, 0x2000 },
- { 0x1a00, 0x33d2, 0x0000 },
- { 0x1a00, 0x33d4, 0x0000 },
- { 0x9a00, 0x33d7, 0x2000 },
- { 0x1a00, 0x33d6, 0x0000 },
- { 0x1a00, 0x33d8, 0x0000 },
- { 0x9a00, 0x33dd, 0x3000 },
- { 0x9a00, 0x33db, 0x2000 },
- { 0x1a00, 0x33da, 0x0000 },
- { 0x1a00, 0x33dc, 0x0000 },
- { 0x9a00, 0x33df, 0x2000 },
- { 0x1a00, 0x33de, 0x0000 },
- { 0x1a00, 0x33e0, 0x0000 },
- { 0x9a00, 0x33e9, 0x4000 },
- { 0x9a00, 0x33e5, 0x3000 },
- { 0x9a00, 0x33e3, 0x2000 },
- { 0x1a00, 0x33e2, 0x0000 },
- { 0x1a00, 0x33e4, 0x0000 },
- { 0x9a00, 0x33e7, 0x2000 },
- { 0x1a00, 0x33e6, 0x0000 },
- { 0x1a00, 0x33e8, 0x0000 },
- { 0x9a00, 0x33ed, 0x3000 },
- { 0x9a00, 0x33eb, 0x2000 },
- { 0x1a00, 0x33ea, 0x0000 },
- { 0x1a00, 0x33ec, 0x0000 },
- { 0x9a00, 0x33ef, 0x2000 },
- { 0x1a00, 0x33ee, 0x0000 },
- { 0x1a00, 0x33f0, 0x0000 },
- { 0x8700, 0x4db5, 0x5000 },
- { 0x9a00, 0x33f9, 0x4000 },
- { 0x9a00, 0x33f5, 0x3000 },
- { 0x9a00, 0x33f3, 0x2000 },
- { 0x1a00, 0x33f2, 0x0000 },
- { 0x1a00, 0x33f4, 0x0000 },
- { 0x9a00, 0x33f7, 0x2000 },
- { 0x1a00, 0x33f6, 0x0000 },
- { 0x1a00, 0x33f8, 0x0000 },
- { 0x9a00, 0x33fd, 0x3000 },
- { 0x9a00, 0x33fb, 0x2000 },
- { 0x1a00, 0x33fa, 0x0000 },
- { 0x1a00, 0x33fc, 0x0000 },
- { 0x9a00, 0x33ff, 0x2000 },
- { 0x1a00, 0x33fe, 0x0000 },
- { 0x0700, 0x3400, 0x0000 },
- { 0x9a00, 0x4dc7, 0x4000 },
- { 0x9a00, 0x4dc3, 0x3000 },
- { 0x9a00, 0x4dc1, 0x2000 },
- { 0x1a00, 0x4dc0, 0x0000 },
- { 0x1a00, 0x4dc2, 0x0000 },
- { 0x9a00, 0x4dc5, 0x2000 },
- { 0x1a00, 0x4dc4, 0x0000 },
- { 0x1a00, 0x4dc6, 0x0000 },
- { 0x9a00, 0x4dcb, 0x3000 },
- { 0x9a00, 0x4dc9, 0x2000 },
- { 0x1a00, 0x4dc8, 0x0000 },
- { 0x1a00, 0x4dca, 0x0000 },
- { 0x9a00, 0x4dcd, 0x2000 },
- { 0x1a00, 0x4dcc, 0x0000 },
- { 0x1a00, 0x4dce, 0x0000 },
- { 0x8700, 0xa00d, 0x7000 },
- { 0x9a00, 0x4def, 0x6000 },
- { 0x9a00, 0x4ddf, 0x5000 },
- { 0x9a00, 0x4dd7, 0x4000 },
- { 0x9a00, 0x4dd3, 0x3000 },
- { 0x9a00, 0x4dd1, 0x2000 },
- { 0x1a00, 0x4dd0, 0x0000 },
- { 0x1a00, 0x4dd2, 0x0000 },
- { 0x9a00, 0x4dd5, 0x2000 },
- { 0x1a00, 0x4dd4, 0x0000 },
- { 0x1a00, 0x4dd6, 0x0000 },
- { 0x9a00, 0x4ddb, 0x3000 },
- { 0x9a00, 0x4dd9, 0x2000 },
- { 0x1a00, 0x4dd8, 0x0000 },
- { 0x1a00, 0x4dda, 0x0000 },
- { 0x9a00, 0x4ddd, 0x2000 },
- { 0x1a00, 0x4ddc, 0x0000 },
- { 0x1a00, 0x4dde, 0x0000 },
- { 0x9a00, 0x4de7, 0x4000 },
- { 0x9a00, 0x4de3, 0x3000 },
- { 0x9a00, 0x4de1, 0x2000 },
- { 0x1a00, 0x4de0, 0x0000 },
- { 0x1a00, 0x4de2, 0x0000 },
- { 0x9a00, 0x4de5, 0x2000 },
- { 0x1a00, 0x4de4, 0x0000 },
- { 0x1a00, 0x4de6, 0x0000 },
- { 0x9a00, 0x4deb, 0x3000 },
- { 0x9a00, 0x4de9, 0x2000 },
- { 0x1a00, 0x4de8, 0x0000 },
- { 0x1a00, 0x4dea, 0x0000 },
- { 0x9a00, 0x4ded, 0x2000 },
- { 0x1a00, 0x4dec, 0x0000 },
- { 0x1a00, 0x4dee, 0x0000 },
- { 0x9a00, 0x4dff, 0x5000 },
- { 0x9a00, 0x4df7, 0x4000 },
- { 0x9a00, 0x4df3, 0x3000 },
- { 0x9a00, 0x4df1, 0x2000 },
- { 0x1a00, 0x4df0, 0x0000 },
- { 0x1a00, 0x4df2, 0x0000 },
- { 0x9a00, 0x4df5, 0x2000 },
- { 0x1a00, 0x4df4, 0x0000 },
- { 0x1a00, 0x4df6, 0x0000 },
- { 0x9a00, 0x4dfb, 0x3000 },
- { 0x9a00, 0x4df9, 0x2000 },
- { 0x1a00, 0x4df8, 0x0000 },
- { 0x1a00, 0x4dfa, 0x0000 },
- { 0x9a00, 0x4dfd, 0x2000 },
- { 0x1a00, 0x4dfc, 0x0000 },
- { 0x1a00, 0x4dfe, 0x0000 },
- { 0x8700, 0xa005, 0x4000 },
- { 0x8700, 0xa001, 0x3000 },
- { 0x8700, 0x9fa5, 0x2000 },
- { 0x0700, 0x4e00, 0x0000 },
- { 0x0700, 0xa000, 0x0000 },
- { 0x8700, 0xa003, 0x2000 },
- { 0x0700, 0xa002, 0x0000 },
- { 0x0700, 0xa004, 0x0000 },
- { 0x8700, 0xa009, 0x3000 },
- { 0x8700, 0xa007, 0x2000 },
- { 0x0700, 0xa006, 0x0000 },
- { 0x0700, 0xa008, 0x0000 },
- { 0x8700, 0xa00b, 0x2000 },
- { 0x0700, 0xa00a, 0x0000 },
- { 0x0700, 0xa00c, 0x0000 },
- { 0x8700, 0xa02d, 0x6000 },
- { 0x8700, 0xa01d, 0x5000 },
- { 0x8700, 0xa015, 0x4000 },
- { 0x8700, 0xa011, 0x3000 },
- { 0x8700, 0xa00f, 0x2000 },
- { 0x0700, 0xa00e, 0x0000 },
- { 0x0700, 0xa010, 0x0000 },
- { 0x8700, 0xa013, 0x2000 },
- { 0x0700, 0xa012, 0x0000 },
- { 0x0700, 0xa014, 0x0000 },
- { 0x8700, 0xa019, 0x3000 },
- { 0x8700, 0xa017, 0x2000 },
- { 0x0700, 0xa016, 0x0000 },
- { 0x0700, 0xa018, 0x0000 },
- { 0x8700, 0xa01b, 0x2000 },
- { 0x0700, 0xa01a, 0x0000 },
- { 0x0700, 0xa01c, 0x0000 },
- { 0x8700, 0xa025, 0x4000 },
- { 0x8700, 0xa021, 0x3000 },
- { 0x8700, 0xa01f, 0x2000 },
- { 0x0700, 0xa01e, 0x0000 },
- { 0x0700, 0xa020, 0x0000 },
- { 0x8700, 0xa023, 0x2000 },
- { 0x0700, 0xa022, 0x0000 },
- { 0x0700, 0xa024, 0x0000 },
- { 0x8700, 0xa029, 0x3000 },
- { 0x8700, 0xa027, 0x2000 },
- { 0x0700, 0xa026, 0x0000 },
- { 0x0700, 0xa028, 0x0000 },
- { 0x8700, 0xa02b, 0x2000 },
- { 0x0700, 0xa02a, 0x0000 },
- { 0x0700, 0xa02c, 0x0000 },
- { 0x8700, 0xa03d, 0x5000 },
- { 0x8700, 0xa035, 0x4000 },
- { 0x8700, 0xa031, 0x3000 },
- { 0x8700, 0xa02f, 0x2000 },
- { 0x0700, 0xa02e, 0x0000 },
- { 0x0700, 0xa030, 0x0000 },
- { 0x8700, 0xa033, 0x2000 },
- { 0x0700, 0xa032, 0x0000 },
- { 0x0700, 0xa034, 0x0000 },
- { 0x8700, 0xa039, 0x3000 },
- { 0x8700, 0xa037, 0x2000 },
- { 0x0700, 0xa036, 0x0000 },
- { 0x0700, 0xa038, 0x0000 },
- { 0x8700, 0xa03b, 0x2000 },
- { 0x0700, 0xa03a, 0x0000 },
- { 0x0700, 0xa03c, 0x0000 },
- { 0x8700, 0xa045, 0x4000 },
- { 0x8700, 0xa041, 0x3000 },
- { 0x8700, 0xa03f, 0x2000 },
- { 0x0700, 0xa03e, 0x0000 },
- { 0x0700, 0xa040, 0x0000 },
- { 0x8700, 0xa043, 0x2000 },
- { 0x0700, 0xa042, 0x0000 },
- { 0x0700, 0xa044, 0x0000 },
- { 0x8700, 0xa049, 0x3000 },
- { 0x8700, 0xa047, 0x2000 },
- { 0x0700, 0xa046, 0x0000 },
- { 0x0700, 0xa048, 0x0000 },
- { 0x8700, 0xa04b, 0x2000 },
- { 0x0700, 0xa04a, 0x0000 },
- { 0x0700, 0xa04c, 0x0000 },
- { 0x8700, 0xa0cd, 0x8000 },
- { 0x8700, 0xa08d, 0x7000 },
- { 0x8700, 0xa06d, 0x6000 },
- { 0x8700, 0xa05d, 0x5000 },
- { 0x8700, 0xa055, 0x4000 },
- { 0x8700, 0xa051, 0x3000 },
- { 0x8700, 0xa04f, 0x2000 },
- { 0x0700, 0xa04e, 0x0000 },
- { 0x0700, 0xa050, 0x0000 },
- { 0x8700, 0xa053, 0x2000 },
- { 0x0700, 0xa052, 0x0000 },
- { 0x0700, 0xa054, 0x0000 },
- { 0x8700, 0xa059, 0x3000 },
- { 0x8700, 0xa057, 0x2000 },
- { 0x0700, 0xa056, 0x0000 },
- { 0x0700, 0xa058, 0x0000 },
- { 0x8700, 0xa05b, 0x2000 },
- { 0x0700, 0xa05a, 0x0000 },
- { 0x0700, 0xa05c, 0x0000 },
- { 0x8700, 0xa065, 0x4000 },
- { 0x8700, 0xa061, 0x3000 },
- { 0x8700, 0xa05f, 0x2000 },
- { 0x0700, 0xa05e, 0x0000 },
- { 0x0700, 0xa060, 0x0000 },
- { 0x8700, 0xa063, 0x2000 },
- { 0x0700, 0xa062, 0x0000 },
- { 0x0700, 0xa064, 0x0000 },
- { 0x8700, 0xa069, 0x3000 },
- { 0x8700, 0xa067, 0x2000 },
- { 0x0700, 0xa066, 0x0000 },
- { 0x0700, 0xa068, 0x0000 },
- { 0x8700, 0xa06b, 0x2000 },
- { 0x0700, 0xa06a, 0x0000 },
- { 0x0700, 0xa06c, 0x0000 },
- { 0x8700, 0xa07d, 0x5000 },
- { 0x8700, 0xa075, 0x4000 },
- { 0x8700, 0xa071, 0x3000 },
- { 0x8700, 0xa06f, 0x2000 },
- { 0x0700, 0xa06e, 0x0000 },
- { 0x0700, 0xa070, 0x0000 },
- { 0x8700, 0xa073, 0x2000 },
- { 0x0700, 0xa072, 0x0000 },
- { 0x0700, 0xa074, 0x0000 },
- { 0x8700, 0xa079, 0x3000 },
- { 0x8700, 0xa077, 0x2000 },
- { 0x0700, 0xa076, 0x0000 },
- { 0x0700, 0xa078, 0x0000 },
- { 0x8700, 0xa07b, 0x2000 },
- { 0x0700, 0xa07a, 0x0000 },
- { 0x0700, 0xa07c, 0x0000 },
- { 0x8700, 0xa085, 0x4000 },
- { 0x8700, 0xa081, 0x3000 },
- { 0x8700, 0xa07f, 0x2000 },
- { 0x0700, 0xa07e, 0x0000 },
- { 0x0700, 0xa080, 0x0000 },
- { 0x8700, 0xa083, 0x2000 },
- { 0x0700, 0xa082, 0x0000 },
- { 0x0700, 0xa084, 0x0000 },
- { 0x8700, 0xa089, 0x3000 },
- { 0x8700, 0xa087, 0x2000 },
- { 0x0700, 0xa086, 0x0000 },
- { 0x0700, 0xa088, 0x0000 },
- { 0x8700, 0xa08b, 0x2000 },
- { 0x0700, 0xa08a, 0x0000 },
- { 0x0700, 0xa08c, 0x0000 },
- { 0x8700, 0xa0ad, 0x6000 },
- { 0x8700, 0xa09d, 0x5000 },
- { 0x8700, 0xa095, 0x4000 },
- { 0x8700, 0xa091, 0x3000 },
- { 0x8700, 0xa08f, 0x2000 },
- { 0x0700, 0xa08e, 0x0000 },
- { 0x0700, 0xa090, 0x0000 },
- { 0x8700, 0xa093, 0x2000 },
- { 0x0700, 0xa092, 0x0000 },
- { 0x0700, 0xa094, 0x0000 },
- { 0x8700, 0xa099, 0x3000 },
- { 0x8700, 0xa097, 0x2000 },
- { 0x0700, 0xa096, 0x0000 },
- { 0x0700, 0xa098, 0x0000 },
- { 0x8700, 0xa09b, 0x2000 },
- { 0x0700, 0xa09a, 0x0000 },
- { 0x0700, 0xa09c, 0x0000 },
- { 0x8700, 0xa0a5, 0x4000 },
- { 0x8700, 0xa0a1, 0x3000 },
- { 0x8700, 0xa09f, 0x2000 },
- { 0x0700, 0xa09e, 0x0000 },
- { 0x0700, 0xa0a0, 0x0000 },
- { 0x8700, 0xa0a3, 0x2000 },
- { 0x0700, 0xa0a2, 0x0000 },
- { 0x0700, 0xa0a4, 0x0000 },
- { 0x8700, 0xa0a9, 0x3000 },
- { 0x8700, 0xa0a7, 0x2000 },
- { 0x0700, 0xa0a6, 0x0000 },
- { 0x0700, 0xa0a8, 0x0000 },
- { 0x8700, 0xa0ab, 0x2000 },
- { 0x0700, 0xa0aa, 0x0000 },
- { 0x0700, 0xa0ac, 0x0000 },
- { 0x8700, 0xa0bd, 0x5000 },
- { 0x8700, 0xa0b5, 0x4000 },
- { 0x8700, 0xa0b1, 0x3000 },
- { 0x8700, 0xa0af, 0x2000 },
- { 0x0700, 0xa0ae, 0x0000 },
- { 0x0700, 0xa0b0, 0x0000 },
- { 0x8700, 0xa0b3, 0x2000 },
- { 0x0700, 0xa0b2, 0x0000 },
- { 0x0700, 0xa0b4, 0x0000 },
- { 0x8700, 0xa0b9, 0x3000 },
- { 0x8700, 0xa0b7, 0x2000 },
- { 0x0700, 0xa0b6, 0x0000 },
- { 0x0700, 0xa0b8, 0x0000 },
- { 0x8700, 0xa0bb, 0x2000 },
- { 0x0700, 0xa0ba, 0x0000 },
- { 0x0700, 0xa0bc, 0x0000 },
- { 0x8700, 0xa0c5, 0x4000 },
- { 0x8700, 0xa0c1, 0x3000 },
- { 0x8700, 0xa0bf, 0x2000 },
- { 0x0700, 0xa0be, 0x0000 },
- { 0x0700, 0xa0c0, 0x0000 },
- { 0x8700, 0xa0c3, 0x2000 },
- { 0x0700, 0xa0c2, 0x0000 },
- { 0x0700, 0xa0c4, 0x0000 },
- { 0x8700, 0xa0c9, 0x3000 },
- { 0x8700, 0xa0c7, 0x2000 },
- { 0x0700, 0xa0c6, 0x0000 },
- { 0x0700, 0xa0c8, 0x0000 },
- { 0x8700, 0xa0cb, 0x2000 },
- { 0x0700, 0xa0ca, 0x0000 },
- { 0x0700, 0xa0cc, 0x0000 },
- { 0x8700, 0xa10d, 0x7000 },
- { 0x8700, 0xa0ed, 0x6000 },
- { 0x8700, 0xa0dd, 0x5000 },
- { 0x8700, 0xa0d5, 0x4000 },
- { 0x8700, 0xa0d1, 0x3000 },
- { 0x8700, 0xa0cf, 0x2000 },
- { 0x0700, 0xa0ce, 0x0000 },
- { 0x0700, 0xa0d0, 0x0000 },
- { 0x8700, 0xa0d3, 0x2000 },
- { 0x0700, 0xa0d2, 0x0000 },
- { 0x0700, 0xa0d4, 0x0000 },
- { 0x8700, 0xa0d9, 0x3000 },
- { 0x8700, 0xa0d7, 0x2000 },
- { 0x0700, 0xa0d6, 0x0000 },
- { 0x0700, 0xa0d8, 0x0000 },
- { 0x8700, 0xa0db, 0x2000 },
- { 0x0700, 0xa0da, 0x0000 },
- { 0x0700, 0xa0dc, 0x0000 },
- { 0x8700, 0xa0e5, 0x4000 },
- { 0x8700, 0xa0e1, 0x3000 },
- { 0x8700, 0xa0df, 0x2000 },
- { 0x0700, 0xa0de, 0x0000 },
- { 0x0700, 0xa0e0, 0x0000 },
- { 0x8700, 0xa0e3, 0x2000 },
- { 0x0700, 0xa0e2, 0x0000 },
- { 0x0700, 0xa0e4, 0x0000 },
- { 0x8700, 0xa0e9, 0x3000 },
- { 0x8700, 0xa0e7, 0x2000 },
- { 0x0700, 0xa0e6, 0x0000 },
- { 0x0700, 0xa0e8, 0x0000 },
- { 0x8700, 0xa0eb, 0x2000 },
- { 0x0700, 0xa0ea, 0x0000 },
- { 0x0700, 0xa0ec, 0x0000 },
- { 0x8700, 0xa0fd, 0x5000 },
- { 0x8700, 0xa0f5, 0x4000 },
- { 0x8700, 0xa0f1, 0x3000 },
- { 0x8700, 0xa0ef, 0x2000 },
- { 0x0700, 0xa0ee, 0x0000 },
- { 0x0700, 0xa0f0, 0x0000 },
- { 0x8700, 0xa0f3, 0x2000 },
- { 0x0700, 0xa0f2, 0x0000 },
- { 0x0700, 0xa0f4, 0x0000 },
- { 0x8700, 0xa0f9, 0x3000 },
- { 0x8700, 0xa0f7, 0x2000 },
- { 0x0700, 0xa0f6, 0x0000 },
- { 0x0700, 0xa0f8, 0x0000 },
- { 0x8700, 0xa0fb, 0x2000 },
- { 0x0700, 0xa0fa, 0x0000 },
- { 0x0700, 0xa0fc, 0x0000 },
- { 0x8700, 0xa105, 0x4000 },
- { 0x8700, 0xa101, 0x3000 },
- { 0x8700, 0xa0ff, 0x2000 },
- { 0x0700, 0xa0fe, 0x0000 },
- { 0x0700, 0xa100, 0x0000 },
- { 0x8700, 0xa103, 0x2000 },
- { 0x0700, 0xa102, 0x0000 },
- { 0x0700, 0xa104, 0x0000 },
- { 0x8700, 0xa109, 0x3000 },
- { 0x8700, 0xa107, 0x2000 },
- { 0x0700, 0xa106, 0x0000 },
- { 0x0700, 0xa108, 0x0000 },
- { 0x8700, 0xa10b, 0x2000 },
- { 0x0700, 0xa10a, 0x0000 },
- { 0x0700, 0xa10c, 0x0000 },
- { 0x8700, 0xa12d, 0x6000 },
- { 0x8700, 0xa11d, 0x5000 },
- { 0x8700, 0xa115, 0x4000 },
- { 0x8700, 0xa111, 0x3000 },
- { 0x8700, 0xa10f, 0x2000 },
- { 0x0700, 0xa10e, 0x0000 },
- { 0x0700, 0xa110, 0x0000 },
- { 0x8700, 0xa113, 0x2000 },
- { 0x0700, 0xa112, 0x0000 },
- { 0x0700, 0xa114, 0x0000 },
- { 0x8700, 0xa119, 0x3000 },
- { 0x8700, 0xa117, 0x2000 },
- { 0x0700, 0xa116, 0x0000 },
- { 0x0700, 0xa118, 0x0000 },
- { 0x8700, 0xa11b, 0x2000 },
- { 0x0700, 0xa11a, 0x0000 },
- { 0x0700, 0xa11c, 0x0000 },
- { 0x8700, 0xa125, 0x4000 },
- { 0x8700, 0xa121, 0x3000 },
- { 0x8700, 0xa11f, 0x2000 },
- { 0x0700, 0xa11e, 0x0000 },
- { 0x0700, 0xa120, 0x0000 },
- { 0x8700, 0xa123, 0x2000 },
- { 0x0700, 0xa122, 0x0000 },
- { 0x0700, 0xa124, 0x0000 },
- { 0x8700, 0xa129, 0x3000 },
- { 0x8700, 0xa127, 0x2000 },
- { 0x0700, 0xa126, 0x0000 },
- { 0x0700, 0xa128, 0x0000 },
- { 0x8700, 0xa12b, 0x2000 },
- { 0x0700, 0xa12a, 0x0000 },
- { 0x0700, 0xa12c, 0x0000 },
- { 0x8700, 0xa13d, 0x5000 },
- { 0x8700, 0xa135, 0x4000 },
- { 0x8700, 0xa131, 0x3000 },
- { 0x8700, 0xa12f, 0x2000 },
- { 0x0700, 0xa12e, 0x0000 },
- { 0x0700, 0xa130, 0x0000 },
- { 0x8700, 0xa133, 0x2000 },
- { 0x0700, 0xa132, 0x0000 },
- { 0x0700, 0xa134, 0x0000 },
- { 0x8700, 0xa139, 0x3000 },
- { 0x8700, 0xa137, 0x2000 },
- { 0x0700, 0xa136, 0x0000 },
- { 0x0700, 0xa138, 0x0000 },
- { 0x8700, 0xa13b, 0x2000 },
- { 0x0700, 0xa13a, 0x0000 },
- { 0x0700, 0xa13c, 0x0000 },
- { 0x8700, 0xa145, 0x4000 },
- { 0x8700, 0xa141, 0x3000 },
- { 0x8700, 0xa13f, 0x2000 },
- { 0x0700, 0xa13e, 0x0000 },
- { 0x0700, 0xa140, 0x0000 },
- { 0x8700, 0xa143, 0x2000 },
- { 0x0700, 0xa142, 0x0000 },
- { 0x0700, 0xa144, 0x0000 },
- { 0x8700, 0xa149, 0x3000 },
- { 0x8700, 0xa147, 0x2000 },
- { 0x0700, 0xa146, 0x0000 },
- { 0x0700, 0xa148, 0x0000 },
- { 0x8700, 0xa14b, 0x2000 },
- { 0x0700, 0xa14a, 0x0000 },
- { 0x0700, 0xa14c, 0x0000 },
- { 0x8700, 0xa24d, 0x9000 },
- { 0x8700, 0xa1cd, 0x8000 },
- { 0x8700, 0xa18d, 0x7000 },
- { 0x8700, 0xa16d, 0x6000 },
- { 0x8700, 0xa15d, 0x5000 },
- { 0x8700, 0xa155, 0x4000 },
- { 0x8700, 0xa151, 0x3000 },
- { 0x8700, 0xa14f, 0x2000 },
- { 0x0700, 0xa14e, 0x0000 },
- { 0x0700, 0xa150, 0x0000 },
- { 0x8700, 0xa153, 0x2000 },
- { 0x0700, 0xa152, 0x0000 },
- { 0x0700, 0xa154, 0x0000 },
- { 0x8700, 0xa159, 0x3000 },
- { 0x8700, 0xa157, 0x2000 },
- { 0x0700, 0xa156, 0x0000 },
- { 0x0700, 0xa158, 0x0000 },
- { 0x8700, 0xa15b, 0x2000 },
- { 0x0700, 0xa15a, 0x0000 },
- { 0x0700, 0xa15c, 0x0000 },
- { 0x8700, 0xa165, 0x4000 },
- { 0x8700, 0xa161, 0x3000 },
- { 0x8700, 0xa15f, 0x2000 },
- { 0x0700, 0xa15e, 0x0000 },
- { 0x0700, 0xa160, 0x0000 },
- { 0x8700, 0xa163, 0x2000 },
- { 0x0700, 0xa162, 0x0000 },
- { 0x0700, 0xa164, 0x0000 },
- { 0x8700, 0xa169, 0x3000 },
- { 0x8700, 0xa167, 0x2000 },
- { 0x0700, 0xa166, 0x0000 },
- { 0x0700, 0xa168, 0x0000 },
- { 0x8700, 0xa16b, 0x2000 },
- { 0x0700, 0xa16a, 0x0000 },
- { 0x0700, 0xa16c, 0x0000 },
- { 0x8700, 0xa17d, 0x5000 },
- { 0x8700, 0xa175, 0x4000 },
- { 0x8700, 0xa171, 0x3000 },
- { 0x8700, 0xa16f, 0x2000 },
- { 0x0700, 0xa16e, 0x0000 },
- { 0x0700, 0xa170, 0x0000 },
- { 0x8700, 0xa173, 0x2000 },
- { 0x0700, 0xa172, 0x0000 },
- { 0x0700, 0xa174, 0x0000 },
- { 0x8700, 0xa179, 0x3000 },
- { 0x8700, 0xa177, 0x2000 },
- { 0x0700, 0xa176, 0x0000 },
- { 0x0700, 0xa178, 0x0000 },
- { 0x8700, 0xa17b, 0x2000 },
- { 0x0700, 0xa17a, 0x0000 },
- { 0x0700, 0xa17c, 0x0000 },
- { 0x8700, 0xa185, 0x4000 },
- { 0x8700, 0xa181, 0x3000 },
- { 0x8700, 0xa17f, 0x2000 },
- { 0x0700, 0xa17e, 0x0000 },
- { 0x0700, 0xa180, 0x0000 },
- { 0x8700, 0xa183, 0x2000 },
- { 0x0700, 0xa182, 0x0000 },
- { 0x0700, 0xa184, 0x0000 },
- { 0x8700, 0xa189, 0x3000 },
- { 0x8700, 0xa187, 0x2000 },
- { 0x0700, 0xa186, 0x0000 },
- { 0x0700, 0xa188, 0x0000 },
- { 0x8700, 0xa18b, 0x2000 },
- { 0x0700, 0xa18a, 0x0000 },
- { 0x0700, 0xa18c, 0x0000 },
- { 0x8700, 0xa1ad, 0x6000 },
- { 0x8700, 0xa19d, 0x5000 },
- { 0x8700, 0xa195, 0x4000 },
- { 0x8700, 0xa191, 0x3000 },
- { 0x8700, 0xa18f, 0x2000 },
- { 0x0700, 0xa18e, 0x0000 },
- { 0x0700, 0xa190, 0x0000 },
- { 0x8700, 0xa193, 0x2000 },
- { 0x0700, 0xa192, 0x0000 },
- { 0x0700, 0xa194, 0x0000 },
- { 0x8700, 0xa199, 0x3000 },
- { 0x8700, 0xa197, 0x2000 },
- { 0x0700, 0xa196, 0x0000 },
- { 0x0700, 0xa198, 0x0000 },
- { 0x8700, 0xa19b, 0x2000 },
- { 0x0700, 0xa19a, 0x0000 },
- { 0x0700, 0xa19c, 0x0000 },
- { 0x8700, 0xa1a5, 0x4000 },
- { 0x8700, 0xa1a1, 0x3000 },
- { 0x8700, 0xa19f, 0x2000 },
- { 0x0700, 0xa19e, 0x0000 },
- { 0x0700, 0xa1a0, 0x0000 },
- { 0x8700, 0xa1a3, 0x2000 },
- { 0x0700, 0xa1a2, 0x0000 },
- { 0x0700, 0xa1a4, 0x0000 },
- { 0x8700, 0xa1a9, 0x3000 },
- { 0x8700, 0xa1a7, 0x2000 },
- { 0x0700, 0xa1a6, 0x0000 },
- { 0x0700, 0xa1a8, 0x0000 },
- { 0x8700, 0xa1ab, 0x2000 },
- { 0x0700, 0xa1aa, 0x0000 },
- { 0x0700, 0xa1ac, 0x0000 },
- { 0x8700, 0xa1bd, 0x5000 },
- { 0x8700, 0xa1b5, 0x4000 },
- { 0x8700, 0xa1b1, 0x3000 },
- { 0x8700, 0xa1af, 0x2000 },
- { 0x0700, 0xa1ae, 0x0000 },
- { 0x0700, 0xa1b0, 0x0000 },
- { 0x8700, 0xa1b3, 0x2000 },
- { 0x0700, 0xa1b2, 0x0000 },
- { 0x0700, 0xa1b4, 0x0000 },
- { 0x8700, 0xa1b9, 0x3000 },
- { 0x8700, 0xa1b7, 0x2000 },
- { 0x0700, 0xa1b6, 0x0000 },
- { 0x0700, 0xa1b8, 0x0000 },
- { 0x8700, 0xa1bb, 0x2000 },
- { 0x0700, 0xa1ba, 0x0000 },
- { 0x0700, 0xa1bc, 0x0000 },
- { 0x8700, 0xa1c5, 0x4000 },
- { 0x8700, 0xa1c1, 0x3000 },
- { 0x8700, 0xa1bf, 0x2000 },
- { 0x0700, 0xa1be, 0x0000 },
- { 0x0700, 0xa1c0, 0x0000 },
- { 0x8700, 0xa1c3, 0x2000 },
- { 0x0700, 0xa1c2, 0x0000 },
- { 0x0700, 0xa1c4, 0x0000 },
- { 0x8700, 0xa1c9, 0x3000 },
- { 0x8700, 0xa1c7, 0x2000 },
- { 0x0700, 0xa1c6, 0x0000 },
- { 0x0700, 0xa1c8, 0x0000 },
- { 0x8700, 0xa1cb, 0x2000 },
- { 0x0700, 0xa1ca, 0x0000 },
- { 0x0700, 0xa1cc, 0x0000 },
- { 0x8700, 0xa20d, 0x7000 },
- { 0x8700, 0xa1ed, 0x6000 },
- { 0x8700, 0xa1dd, 0x5000 },
- { 0x8700, 0xa1d5, 0x4000 },
- { 0x8700, 0xa1d1, 0x3000 },
- { 0x8700, 0xa1cf, 0x2000 },
- { 0x0700, 0xa1ce, 0x0000 },
- { 0x0700, 0xa1d0, 0x0000 },
- { 0x8700, 0xa1d3, 0x2000 },
- { 0x0700, 0xa1d2, 0x0000 },
- { 0x0700, 0xa1d4, 0x0000 },
- { 0x8700, 0xa1d9, 0x3000 },
- { 0x8700, 0xa1d7, 0x2000 },
- { 0x0700, 0xa1d6, 0x0000 },
- { 0x0700, 0xa1d8, 0x0000 },
- { 0x8700, 0xa1db, 0x2000 },
- { 0x0700, 0xa1da, 0x0000 },
- { 0x0700, 0xa1dc, 0x0000 },
- { 0x8700, 0xa1e5, 0x4000 },
- { 0x8700, 0xa1e1, 0x3000 },
- { 0x8700, 0xa1df, 0x2000 },
- { 0x0700, 0xa1de, 0x0000 },
- { 0x0700, 0xa1e0, 0x0000 },
- { 0x8700, 0xa1e3, 0x2000 },
- { 0x0700, 0xa1e2, 0x0000 },
- { 0x0700, 0xa1e4, 0x0000 },
- { 0x8700, 0xa1e9, 0x3000 },
- { 0x8700, 0xa1e7, 0x2000 },
- { 0x0700, 0xa1e6, 0x0000 },
- { 0x0700, 0xa1e8, 0x0000 },
- { 0x8700, 0xa1eb, 0x2000 },
- { 0x0700, 0xa1ea, 0x0000 },
- { 0x0700, 0xa1ec, 0x0000 },
- { 0x8700, 0xa1fd, 0x5000 },
- { 0x8700, 0xa1f5, 0x4000 },
- { 0x8700, 0xa1f1, 0x3000 },
- { 0x8700, 0xa1ef, 0x2000 },
- { 0x0700, 0xa1ee, 0x0000 },
- { 0x0700, 0xa1f0, 0x0000 },
- { 0x8700, 0xa1f3, 0x2000 },
- { 0x0700, 0xa1f2, 0x0000 },
- { 0x0700, 0xa1f4, 0x0000 },
- { 0x8700, 0xa1f9, 0x3000 },
- { 0x8700, 0xa1f7, 0x2000 },
- { 0x0700, 0xa1f6, 0x0000 },
- { 0x0700, 0xa1f8, 0x0000 },
- { 0x8700, 0xa1fb, 0x2000 },
- { 0x0700, 0xa1fa, 0x0000 },
- { 0x0700, 0xa1fc, 0x0000 },
- { 0x8700, 0xa205, 0x4000 },
- { 0x8700, 0xa201, 0x3000 },
- { 0x8700, 0xa1ff, 0x2000 },
- { 0x0700, 0xa1fe, 0x0000 },
- { 0x0700, 0xa200, 0x0000 },
- { 0x8700, 0xa203, 0x2000 },
- { 0x0700, 0xa202, 0x0000 },
- { 0x0700, 0xa204, 0x0000 },
- { 0x8700, 0xa209, 0x3000 },
- { 0x8700, 0xa207, 0x2000 },
- { 0x0700, 0xa206, 0x0000 },
- { 0x0700, 0xa208, 0x0000 },
- { 0x8700, 0xa20b, 0x2000 },
- { 0x0700, 0xa20a, 0x0000 },
- { 0x0700, 0xa20c, 0x0000 },
- { 0x8700, 0xa22d, 0x6000 },
- { 0x8700, 0xa21d, 0x5000 },
- { 0x8700, 0xa215, 0x4000 },
- { 0x8700, 0xa211, 0x3000 },
- { 0x8700, 0xa20f, 0x2000 },
- { 0x0700, 0xa20e, 0x0000 },
- { 0x0700, 0xa210, 0x0000 },
- { 0x8700, 0xa213, 0x2000 },
- { 0x0700, 0xa212, 0x0000 },
- { 0x0700, 0xa214, 0x0000 },
- { 0x8700, 0xa219, 0x3000 },
- { 0x8700, 0xa217, 0x2000 },
- { 0x0700, 0xa216, 0x0000 },
- { 0x0700, 0xa218, 0x0000 },
- { 0x8700, 0xa21b, 0x2000 },
- { 0x0700, 0xa21a, 0x0000 },
- { 0x0700, 0xa21c, 0x0000 },
- { 0x8700, 0xa225, 0x4000 },
- { 0x8700, 0xa221, 0x3000 },
- { 0x8700, 0xa21f, 0x2000 },
- { 0x0700, 0xa21e, 0x0000 },
- { 0x0700, 0xa220, 0x0000 },
- { 0x8700, 0xa223, 0x2000 },
- { 0x0700, 0xa222, 0x0000 },
- { 0x0700, 0xa224, 0x0000 },
- { 0x8700, 0xa229, 0x3000 },
- { 0x8700, 0xa227, 0x2000 },
- { 0x0700, 0xa226, 0x0000 },
- { 0x0700, 0xa228, 0x0000 },
- { 0x8700, 0xa22b, 0x2000 },
- { 0x0700, 0xa22a, 0x0000 },
- { 0x0700, 0xa22c, 0x0000 },
- { 0x8700, 0xa23d, 0x5000 },
- { 0x8700, 0xa235, 0x4000 },
- { 0x8700, 0xa231, 0x3000 },
- { 0x8700, 0xa22f, 0x2000 },
- { 0x0700, 0xa22e, 0x0000 },
- { 0x0700, 0xa230, 0x0000 },
- { 0x8700, 0xa233, 0x2000 },
- { 0x0700, 0xa232, 0x0000 },
- { 0x0700, 0xa234, 0x0000 },
- { 0x8700, 0xa239, 0x3000 },
- { 0x8700, 0xa237, 0x2000 },
- { 0x0700, 0xa236, 0x0000 },
- { 0x0700, 0xa238, 0x0000 },
- { 0x8700, 0xa23b, 0x2000 },
- { 0x0700, 0xa23a, 0x0000 },
- { 0x0700, 0xa23c, 0x0000 },
- { 0x8700, 0xa245, 0x4000 },
- { 0x8700, 0xa241, 0x3000 },
- { 0x8700, 0xa23f, 0x2000 },
- { 0x0700, 0xa23e, 0x0000 },
- { 0x0700, 0xa240, 0x0000 },
- { 0x8700, 0xa243, 0x2000 },
- { 0x0700, 0xa242, 0x0000 },
- { 0x0700, 0xa244, 0x0000 },
- { 0x8700, 0xa249, 0x3000 },
- { 0x8700, 0xa247, 0x2000 },
- { 0x0700, 0xa246, 0x0000 },
- { 0x0700, 0xa248, 0x0000 },
- { 0x8700, 0xa24b, 0x2000 },
- { 0x0700, 0xa24a, 0x0000 },
- { 0x0700, 0xa24c, 0x0000 },
- { 0x8700, 0xa2cd, 0x8000 },
- { 0x8700, 0xa28d, 0x7000 },
- { 0x8700, 0xa26d, 0x6000 },
- { 0x8700, 0xa25d, 0x5000 },
- { 0x8700, 0xa255, 0x4000 },
- { 0x8700, 0xa251, 0x3000 },
- { 0x8700, 0xa24f, 0x2000 },
- { 0x0700, 0xa24e, 0x0000 },
- { 0x0700, 0xa250, 0x0000 },
- { 0x8700, 0xa253, 0x2000 },
- { 0x0700, 0xa252, 0x0000 },
- { 0x0700, 0xa254, 0x0000 },
- { 0x8700, 0xa259, 0x3000 },
- { 0x8700, 0xa257, 0x2000 },
- { 0x0700, 0xa256, 0x0000 },
- { 0x0700, 0xa258, 0x0000 },
- { 0x8700, 0xa25b, 0x2000 },
- { 0x0700, 0xa25a, 0x0000 },
- { 0x0700, 0xa25c, 0x0000 },
- { 0x8700, 0xa265, 0x4000 },
- { 0x8700, 0xa261, 0x3000 },
- { 0x8700, 0xa25f, 0x2000 },
- { 0x0700, 0xa25e, 0x0000 },
- { 0x0700, 0xa260, 0x0000 },
- { 0x8700, 0xa263, 0x2000 },
- { 0x0700, 0xa262, 0x0000 },
- { 0x0700, 0xa264, 0x0000 },
- { 0x8700, 0xa269, 0x3000 },
- { 0x8700, 0xa267, 0x2000 },
- { 0x0700, 0xa266, 0x0000 },
- { 0x0700, 0xa268, 0x0000 },
- { 0x8700, 0xa26b, 0x2000 },
- { 0x0700, 0xa26a, 0x0000 },
- { 0x0700, 0xa26c, 0x0000 },
- { 0x8700, 0xa27d, 0x5000 },
- { 0x8700, 0xa275, 0x4000 },
- { 0x8700, 0xa271, 0x3000 },
- { 0x8700, 0xa26f, 0x2000 },
- { 0x0700, 0xa26e, 0x0000 },
- { 0x0700, 0xa270, 0x0000 },
- { 0x8700, 0xa273, 0x2000 },
- { 0x0700, 0xa272, 0x0000 },
- { 0x0700, 0xa274, 0x0000 },
- { 0x8700, 0xa279, 0x3000 },
- { 0x8700, 0xa277, 0x2000 },
- { 0x0700, 0xa276, 0x0000 },
- { 0x0700, 0xa278, 0x0000 },
- { 0x8700, 0xa27b, 0x2000 },
- { 0x0700, 0xa27a, 0x0000 },
- { 0x0700, 0xa27c, 0x0000 },
- { 0x8700, 0xa285, 0x4000 },
- { 0x8700, 0xa281, 0x3000 },
- { 0x8700, 0xa27f, 0x2000 },
- { 0x0700, 0xa27e, 0x0000 },
- { 0x0700, 0xa280, 0x0000 },
- { 0x8700, 0xa283, 0x2000 },
- { 0x0700, 0xa282, 0x0000 },
- { 0x0700, 0xa284, 0x0000 },
- { 0x8700, 0xa289, 0x3000 },
- { 0x8700, 0xa287, 0x2000 },
- { 0x0700, 0xa286, 0x0000 },
- { 0x0700, 0xa288, 0x0000 },
- { 0x8700, 0xa28b, 0x2000 },
- { 0x0700, 0xa28a, 0x0000 },
- { 0x0700, 0xa28c, 0x0000 },
- { 0x8700, 0xa2ad, 0x6000 },
- { 0x8700, 0xa29d, 0x5000 },
- { 0x8700, 0xa295, 0x4000 },
- { 0x8700, 0xa291, 0x3000 },
- { 0x8700, 0xa28f, 0x2000 },
- { 0x0700, 0xa28e, 0x0000 },
- { 0x0700, 0xa290, 0x0000 },
- { 0x8700, 0xa293, 0x2000 },
- { 0x0700, 0xa292, 0x0000 },
- { 0x0700, 0xa294, 0x0000 },
- { 0x8700, 0xa299, 0x3000 },
- { 0x8700, 0xa297, 0x2000 },
- { 0x0700, 0xa296, 0x0000 },
- { 0x0700, 0xa298, 0x0000 },
- { 0x8700, 0xa29b, 0x2000 },
- { 0x0700, 0xa29a, 0x0000 },
- { 0x0700, 0xa29c, 0x0000 },
- { 0x8700, 0xa2a5, 0x4000 },
- { 0x8700, 0xa2a1, 0x3000 },
- { 0x8700, 0xa29f, 0x2000 },
- { 0x0700, 0xa29e, 0x0000 },
- { 0x0700, 0xa2a0, 0x0000 },
- { 0x8700, 0xa2a3, 0x2000 },
- { 0x0700, 0xa2a2, 0x0000 },
- { 0x0700, 0xa2a4, 0x0000 },
- { 0x8700, 0xa2a9, 0x3000 },
- { 0x8700, 0xa2a7, 0x2000 },
- { 0x0700, 0xa2a6, 0x0000 },
- { 0x0700, 0xa2a8, 0x0000 },
- { 0x8700, 0xa2ab, 0x2000 },
- { 0x0700, 0xa2aa, 0x0000 },
- { 0x0700, 0xa2ac, 0x0000 },
- { 0x8700, 0xa2bd, 0x5000 },
- { 0x8700, 0xa2b5, 0x4000 },
- { 0x8700, 0xa2b1, 0x3000 },
- { 0x8700, 0xa2af, 0x2000 },
- { 0x0700, 0xa2ae, 0x0000 },
- { 0x0700, 0xa2b0, 0x0000 },
- { 0x8700, 0xa2b3, 0x2000 },
- { 0x0700, 0xa2b2, 0x0000 },
- { 0x0700, 0xa2b4, 0x0000 },
- { 0x8700, 0xa2b9, 0x3000 },
- { 0x8700, 0xa2b7, 0x2000 },
- { 0x0700, 0xa2b6, 0x0000 },
- { 0x0700, 0xa2b8, 0x0000 },
- { 0x8700, 0xa2bb, 0x2000 },
- { 0x0700, 0xa2ba, 0x0000 },
- { 0x0700, 0xa2bc, 0x0000 },
- { 0x8700, 0xa2c5, 0x4000 },
- { 0x8700, 0xa2c1, 0x3000 },
- { 0x8700, 0xa2bf, 0x2000 },
- { 0x0700, 0xa2be, 0x0000 },
- { 0x0700, 0xa2c0, 0x0000 },
- { 0x8700, 0xa2c3, 0x2000 },
- { 0x0700, 0xa2c2, 0x0000 },
- { 0x0700, 0xa2c4, 0x0000 },
- { 0x8700, 0xa2c9, 0x3000 },
- { 0x8700, 0xa2c7, 0x2000 },
- { 0x0700, 0xa2c6, 0x0000 },
- { 0x0700, 0xa2c8, 0x0000 },
- { 0x8700, 0xa2cb, 0x2000 },
- { 0x0700, 0xa2ca, 0x0000 },
- { 0x0700, 0xa2cc, 0x0000 },
- { 0x8700, 0xa30d, 0x7000 },
- { 0x8700, 0xa2ed, 0x6000 },
- { 0x8700, 0xa2dd, 0x5000 },
- { 0x8700, 0xa2d5, 0x4000 },
- { 0x8700, 0xa2d1, 0x3000 },
- { 0x8700, 0xa2cf, 0x2000 },
- { 0x0700, 0xa2ce, 0x0000 },
- { 0x0700, 0xa2d0, 0x0000 },
- { 0x8700, 0xa2d3, 0x2000 },
- { 0x0700, 0xa2d2, 0x0000 },
- { 0x0700, 0xa2d4, 0x0000 },
- { 0x8700, 0xa2d9, 0x3000 },
- { 0x8700, 0xa2d7, 0x2000 },
- { 0x0700, 0xa2d6, 0x0000 },
- { 0x0700, 0xa2d8, 0x0000 },
- { 0x8700, 0xa2db, 0x2000 },
- { 0x0700, 0xa2da, 0x0000 },
- { 0x0700, 0xa2dc, 0x0000 },
- { 0x8700, 0xa2e5, 0x4000 },
- { 0x8700, 0xa2e1, 0x3000 },
- { 0x8700, 0xa2df, 0x2000 },
- { 0x0700, 0xa2de, 0x0000 },
- { 0x0700, 0xa2e0, 0x0000 },
- { 0x8700, 0xa2e3, 0x2000 },
- { 0x0700, 0xa2e2, 0x0000 },
- { 0x0700, 0xa2e4, 0x0000 },
- { 0x8700, 0xa2e9, 0x3000 },
- { 0x8700, 0xa2e7, 0x2000 },
- { 0x0700, 0xa2e6, 0x0000 },
- { 0x0700, 0xa2e8, 0x0000 },
- { 0x8700, 0xa2eb, 0x2000 },
- { 0x0700, 0xa2ea, 0x0000 },
- { 0x0700, 0xa2ec, 0x0000 },
- { 0x8700, 0xa2fd, 0x5000 },
- { 0x8700, 0xa2f5, 0x4000 },
- { 0x8700, 0xa2f1, 0x3000 },
- { 0x8700, 0xa2ef, 0x2000 },
- { 0x0700, 0xa2ee, 0x0000 },
- { 0x0700, 0xa2f0, 0x0000 },
- { 0x8700, 0xa2f3, 0x2000 },
- { 0x0700, 0xa2f2, 0x0000 },
- { 0x0700, 0xa2f4, 0x0000 },
- { 0x8700, 0xa2f9, 0x3000 },
- { 0x8700, 0xa2f7, 0x2000 },
- { 0x0700, 0xa2f6, 0x0000 },
- { 0x0700, 0xa2f8, 0x0000 },
- { 0x8700, 0xa2fb, 0x2000 },
- { 0x0700, 0xa2fa, 0x0000 },
- { 0x0700, 0xa2fc, 0x0000 },
- { 0x8700, 0xa305, 0x4000 },
- { 0x8700, 0xa301, 0x3000 },
- { 0x8700, 0xa2ff, 0x2000 },
- { 0x0700, 0xa2fe, 0x0000 },
- { 0x0700, 0xa300, 0x0000 },
- { 0x8700, 0xa303, 0x2000 },
- { 0x0700, 0xa302, 0x0000 },
- { 0x0700, 0xa304, 0x0000 },
- { 0x8700, 0xa309, 0x3000 },
- { 0x8700, 0xa307, 0x2000 },
- { 0x0700, 0xa306, 0x0000 },
- { 0x0700, 0xa308, 0x0000 },
- { 0x8700, 0xa30b, 0x2000 },
- { 0x0700, 0xa30a, 0x0000 },
- { 0x0700, 0xa30c, 0x0000 },
- { 0x8700, 0xa32d, 0x6000 },
- { 0x8700, 0xa31d, 0x5000 },
- { 0x8700, 0xa315, 0x4000 },
- { 0x8700, 0xa311, 0x3000 },
- { 0x8700, 0xa30f, 0x2000 },
- { 0x0700, 0xa30e, 0x0000 },
- { 0x0700, 0xa310, 0x0000 },
- { 0x8700, 0xa313, 0x2000 },
- { 0x0700, 0xa312, 0x0000 },
- { 0x0700, 0xa314, 0x0000 },
- { 0x8700, 0xa319, 0x3000 },
- { 0x8700, 0xa317, 0x2000 },
- { 0x0700, 0xa316, 0x0000 },
- { 0x0700, 0xa318, 0x0000 },
- { 0x8700, 0xa31b, 0x2000 },
- { 0x0700, 0xa31a, 0x0000 },
- { 0x0700, 0xa31c, 0x0000 },
- { 0x8700, 0xa325, 0x4000 },
- { 0x8700, 0xa321, 0x3000 },
- { 0x8700, 0xa31f, 0x2000 },
- { 0x0700, 0xa31e, 0x0000 },
- { 0x0700, 0xa320, 0x0000 },
- { 0x8700, 0xa323, 0x2000 },
- { 0x0700, 0xa322, 0x0000 },
- { 0x0700, 0xa324, 0x0000 },
- { 0x8700, 0xa329, 0x3000 },
- { 0x8700, 0xa327, 0x2000 },
- { 0x0700, 0xa326, 0x0000 },
- { 0x0700, 0xa328, 0x0000 },
- { 0x8700, 0xa32b, 0x2000 },
- { 0x0700, 0xa32a, 0x0000 },
- { 0x0700, 0xa32c, 0x0000 },
- { 0x8700, 0xa33d, 0x5000 },
- { 0x8700, 0xa335, 0x4000 },
- { 0x8700, 0xa331, 0x3000 },
- { 0x8700, 0xa32f, 0x2000 },
- { 0x0700, 0xa32e, 0x0000 },
- { 0x0700, 0xa330, 0x0000 },
- { 0x8700, 0xa333, 0x2000 },
- { 0x0700, 0xa332, 0x0000 },
- { 0x0700, 0xa334, 0x0000 },
- { 0x8700, 0xa339, 0x3000 },
- { 0x8700, 0xa337, 0x2000 },
- { 0x0700, 0xa336, 0x0000 },
- { 0x0700, 0xa338, 0x0000 },
- { 0x8700, 0xa33b, 0x2000 },
- { 0x0700, 0xa33a, 0x0000 },
- { 0x0700, 0xa33c, 0x0000 },
- { 0x8700, 0xa345, 0x4000 },
- { 0x8700, 0xa341, 0x3000 },
- { 0x8700, 0xa33f, 0x2000 },
- { 0x0700, 0xa33e, 0x0000 },
- { 0x0700, 0xa340, 0x0000 },
- { 0x8700, 0xa343, 0x2000 },
- { 0x0700, 0xa342, 0x0000 },
- { 0x0700, 0xa344, 0x0000 },
- { 0x8700, 0xa349, 0x3000 },
- { 0x8700, 0xa347, 0x2000 },
- { 0x0700, 0xa346, 0x0000 },
- { 0x0700, 0xa348, 0x0000 },
- { 0x8700, 0xa34b, 0x2000 },
- { 0x0700, 0xa34a, 0x0000 },
- { 0x0700, 0xa34c, 0x0000 },
- { 0x8700, 0xfc4d, 0xb000 },
- { 0x8700, 0xf97f, 0xa000 },
- { 0x8700, 0xa44d, 0x9000 },
- { 0x8700, 0xa3cd, 0x8000 },
- { 0x8700, 0xa38d, 0x7000 },
- { 0x8700, 0xa36d, 0x6000 },
- { 0x8700, 0xa35d, 0x5000 },
- { 0x8700, 0xa355, 0x4000 },
- { 0x8700, 0xa351, 0x3000 },
- { 0x8700, 0xa34f, 0x2000 },
- { 0x0700, 0xa34e, 0x0000 },
- { 0x0700, 0xa350, 0x0000 },
- { 0x8700, 0xa353, 0x2000 },
- { 0x0700, 0xa352, 0x0000 },
- { 0x0700, 0xa354, 0x0000 },
- { 0x8700, 0xa359, 0x3000 },
- { 0x8700, 0xa357, 0x2000 },
- { 0x0700, 0xa356, 0x0000 },
- { 0x0700, 0xa358, 0x0000 },
- { 0x8700, 0xa35b, 0x2000 },
- { 0x0700, 0xa35a, 0x0000 },
- { 0x0700, 0xa35c, 0x0000 },
- { 0x8700, 0xa365, 0x4000 },
- { 0x8700, 0xa361, 0x3000 },
- { 0x8700, 0xa35f, 0x2000 },
- { 0x0700, 0xa35e, 0x0000 },
- { 0x0700, 0xa360, 0x0000 },
- { 0x8700, 0xa363, 0x2000 },
- { 0x0700, 0xa362, 0x0000 },
- { 0x0700, 0xa364, 0x0000 },
- { 0x8700, 0xa369, 0x3000 },
- { 0x8700, 0xa367, 0x2000 },
- { 0x0700, 0xa366, 0x0000 },
- { 0x0700, 0xa368, 0x0000 },
- { 0x8700, 0xa36b, 0x2000 },
- { 0x0700, 0xa36a, 0x0000 },
- { 0x0700, 0xa36c, 0x0000 },
- { 0x8700, 0xa37d, 0x5000 },
- { 0x8700, 0xa375, 0x4000 },
- { 0x8700, 0xa371, 0x3000 },
- { 0x8700, 0xa36f, 0x2000 },
- { 0x0700, 0xa36e, 0x0000 },
- { 0x0700, 0xa370, 0x0000 },
- { 0x8700, 0xa373, 0x2000 },
- { 0x0700, 0xa372, 0x0000 },
- { 0x0700, 0xa374, 0x0000 },
- { 0x8700, 0xa379, 0x3000 },
- { 0x8700, 0xa377, 0x2000 },
- { 0x0700, 0xa376, 0x0000 },
- { 0x0700, 0xa378, 0x0000 },
- { 0x8700, 0xa37b, 0x2000 },
- { 0x0700, 0xa37a, 0x0000 },
- { 0x0700, 0xa37c, 0x0000 },
- { 0x8700, 0xa385, 0x4000 },
- { 0x8700, 0xa381, 0x3000 },
- { 0x8700, 0xa37f, 0x2000 },
- { 0x0700, 0xa37e, 0x0000 },
- { 0x0700, 0xa380, 0x0000 },
- { 0x8700, 0xa383, 0x2000 },
- { 0x0700, 0xa382, 0x0000 },
- { 0x0700, 0xa384, 0x0000 },
- { 0x8700, 0xa389, 0x3000 },
- { 0x8700, 0xa387, 0x2000 },
- { 0x0700, 0xa386, 0x0000 },
- { 0x0700, 0xa388, 0x0000 },
- { 0x8700, 0xa38b, 0x2000 },
- { 0x0700, 0xa38a, 0x0000 },
- { 0x0700, 0xa38c, 0x0000 },
- { 0x8700, 0xa3ad, 0x6000 },
- { 0x8700, 0xa39d, 0x5000 },
- { 0x8700, 0xa395, 0x4000 },
- { 0x8700, 0xa391, 0x3000 },
- { 0x8700, 0xa38f, 0x2000 },
- { 0x0700, 0xa38e, 0x0000 },
- { 0x0700, 0xa390, 0x0000 },
- { 0x8700, 0xa393, 0x2000 },
- { 0x0700, 0xa392, 0x0000 },
- { 0x0700, 0xa394, 0x0000 },
- { 0x8700, 0xa399, 0x3000 },
- { 0x8700, 0xa397, 0x2000 },
- { 0x0700, 0xa396, 0x0000 },
- { 0x0700, 0xa398, 0x0000 },
- { 0x8700, 0xa39b, 0x2000 },
- { 0x0700, 0xa39a, 0x0000 },
- { 0x0700, 0xa39c, 0x0000 },
- { 0x8700, 0xa3a5, 0x4000 },
- { 0x8700, 0xa3a1, 0x3000 },
- { 0x8700, 0xa39f, 0x2000 },
- { 0x0700, 0xa39e, 0x0000 },
- { 0x0700, 0xa3a0, 0x0000 },
- { 0x8700, 0xa3a3, 0x2000 },
- { 0x0700, 0xa3a2, 0x0000 },
- { 0x0700, 0xa3a4, 0x0000 },
- { 0x8700, 0xa3a9, 0x3000 },
- { 0x8700, 0xa3a7, 0x2000 },
- { 0x0700, 0xa3a6, 0x0000 },
- { 0x0700, 0xa3a8, 0x0000 },
- { 0x8700, 0xa3ab, 0x2000 },
- { 0x0700, 0xa3aa, 0x0000 },
- { 0x0700, 0xa3ac, 0x0000 },
- { 0x8700, 0xa3bd, 0x5000 },
- { 0x8700, 0xa3b5, 0x4000 },
- { 0x8700, 0xa3b1, 0x3000 },
- { 0x8700, 0xa3af, 0x2000 },
- { 0x0700, 0xa3ae, 0x0000 },
- { 0x0700, 0xa3b0, 0x0000 },
- { 0x8700, 0xa3b3, 0x2000 },
- { 0x0700, 0xa3b2, 0x0000 },
- { 0x0700, 0xa3b4, 0x0000 },
- { 0x8700, 0xa3b9, 0x3000 },
- { 0x8700, 0xa3b7, 0x2000 },
- { 0x0700, 0xa3b6, 0x0000 },
- { 0x0700, 0xa3b8, 0x0000 },
- { 0x8700, 0xa3bb, 0x2000 },
- { 0x0700, 0xa3ba, 0x0000 },
- { 0x0700, 0xa3bc, 0x0000 },
- { 0x8700, 0xa3c5, 0x4000 },
- { 0x8700, 0xa3c1, 0x3000 },
- { 0x8700, 0xa3bf, 0x2000 },
- { 0x0700, 0xa3be, 0x0000 },
- { 0x0700, 0xa3c0, 0x0000 },
- { 0x8700, 0xa3c3, 0x2000 },
- { 0x0700, 0xa3c2, 0x0000 },
- { 0x0700, 0xa3c4, 0x0000 },
- { 0x8700, 0xa3c9, 0x3000 },
- { 0x8700, 0xa3c7, 0x2000 },
- { 0x0700, 0xa3c6, 0x0000 },
- { 0x0700, 0xa3c8, 0x0000 },
- { 0x8700, 0xa3cb, 0x2000 },
- { 0x0700, 0xa3ca, 0x0000 },
- { 0x0700, 0xa3cc, 0x0000 },
- { 0x8700, 0xa40d, 0x7000 },
- { 0x8700, 0xa3ed, 0x6000 },
- { 0x8700, 0xa3dd, 0x5000 },
- { 0x8700, 0xa3d5, 0x4000 },
- { 0x8700, 0xa3d1, 0x3000 },
- { 0x8700, 0xa3cf, 0x2000 },
- { 0x0700, 0xa3ce, 0x0000 },
- { 0x0700, 0xa3d0, 0x0000 },
- { 0x8700, 0xa3d3, 0x2000 },
- { 0x0700, 0xa3d2, 0x0000 },
- { 0x0700, 0xa3d4, 0x0000 },
- { 0x8700, 0xa3d9, 0x3000 },
- { 0x8700, 0xa3d7, 0x2000 },
- { 0x0700, 0xa3d6, 0x0000 },
- { 0x0700, 0xa3d8, 0x0000 },
- { 0x8700, 0xa3db, 0x2000 },
- { 0x0700, 0xa3da, 0x0000 },
- { 0x0700, 0xa3dc, 0x0000 },
- { 0x8700, 0xa3e5, 0x4000 },
- { 0x8700, 0xa3e1, 0x3000 },
- { 0x8700, 0xa3df, 0x2000 },
- { 0x0700, 0xa3de, 0x0000 },
- { 0x0700, 0xa3e0, 0x0000 },
- { 0x8700, 0xa3e3, 0x2000 },
- { 0x0700, 0xa3e2, 0x0000 },
- { 0x0700, 0xa3e4, 0x0000 },
- { 0x8700, 0xa3e9, 0x3000 },
- { 0x8700, 0xa3e7, 0x2000 },
- { 0x0700, 0xa3e6, 0x0000 },
- { 0x0700, 0xa3e8, 0x0000 },
- { 0x8700, 0xa3eb, 0x2000 },
- { 0x0700, 0xa3ea, 0x0000 },
- { 0x0700, 0xa3ec, 0x0000 },
- { 0x8700, 0xa3fd, 0x5000 },
- { 0x8700, 0xa3f5, 0x4000 },
- { 0x8700, 0xa3f1, 0x3000 },
- { 0x8700, 0xa3ef, 0x2000 },
- { 0x0700, 0xa3ee, 0x0000 },
- { 0x0700, 0xa3f0, 0x0000 },
- { 0x8700, 0xa3f3, 0x2000 },
- { 0x0700, 0xa3f2, 0x0000 },
- { 0x0700, 0xa3f4, 0x0000 },
- { 0x8700, 0xa3f9, 0x3000 },
- { 0x8700, 0xa3f7, 0x2000 },
- { 0x0700, 0xa3f6, 0x0000 },
- { 0x0700, 0xa3f8, 0x0000 },
- { 0x8700, 0xa3fb, 0x2000 },
- { 0x0700, 0xa3fa, 0x0000 },
- { 0x0700, 0xa3fc, 0x0000 },
- { 0x8700, 0xa405, 0x4000 },
- { 0x8700, 0xa401, 0x3000 },
- { 0x8700, 0xa3ff, 0x2000 },
- { 0x0700, 0xa3fe, 0x0000 },
- { 0x0700, 0xa400, 0x0000 },
- { 0x8700, 0xa403, 0x2000 },
- { 0x0700, 0xa402, 0x0000 },
- { 0x0700, 0xa404, 0x0000 },
- { 0x8700, 0xa409, 0x3000 },
- { 0x8700, 0xa407, 0x2000 },
- { 0x0700, 0xa406, 0x0000 },
- { 0x0700, 0xa408, 0x0000 },
- { 0x8700, 0xa40b, 0x2000 },
- { 0x0700, 0xa40a, 0x0000 },
- { 0x0700, 0xa40c, 0x0000 },
- { 0x8700, 0xa42d, 0x6000 },
- { 0x8700, 0xa41d, 0x5000 },
- { 0x8700, 0xa415, 0x4000 },
- { 0x8700, 0xa411, 0x3000 },
- { 0x8700, 0xa40f, 0x2000 },
- { 0x0700, 0xa40e, 0x0000 },
- { 0x0700, 0xa410, 0x0000 },
- { 0x8700, 0xa413, 0x2000 },
- { 0x0700, 0xa412, 0x0000 },
- { 0x0700, 0xa414, 0x0000 },
- { 0x8700, 0xa419, 0x3000 },
- { 0x8700, 0xa417, 0x2000 },
- { 0x0700, 0xa416, 0x0000 },
- { 0x0700, 0xa418, 0x0000 },
- { 0x8700, 0xa41b, 0x2000 },
- { 0x0700, 0xa41a, 0x0000 },
- { 0x0700, 0xa41c, 0x0000 },
- { 0x8700, 0xa425, 0x4000 },
- { 0x8700, 0xa421, 0x3000 },
- { 0x8700, 0xa41f, 0x2000 },
- { 0x0700, 0xa41e, 0x0000 },
- { 0x0700, 0xa420, 0x0000 },
- { 0x8700, 0xa423, 0x2000 },
- { 0x0700, 0xa422, 0x0000 },
- { 0x0700, 0xa424, 0x0000 },
- { 0x8700, 0xa429, 0x3000 },
- { 0x8700, 0xa427, 0x2000 },
- { 0x0700, 0xa426, 0x0000 },
- { 0x0700, 0xa428, 0x0000 },
- { 0x8700, 0xa42b, 0x2000 },
- { 0x0700, 0xa42a, 0x0000 },
- { 0x0700, 0xa42c, 0x0000 },
- { 0x8700, 0xa43d, 0x5000 },
- { 0x8700, 0xa435, 0x4000 },
- { 0x8700, 0xa431, 0x3000 },
- { 0x8700, 0xa42f, 0x2000 },
- { 0x0700, 0xa42e, 0x0000 },
- { 0x0700, 0xa430, 0x0000 },
- { 0x8700, 0xa433, 0x2000 },
- { 0x0700, 0xa432, 0x0000 },
- { 0x0700, 0xa434, 0x0000 },
- { 0x8700, 0xa439, 0x3000 },
- { 0x8700, 0xa437, 0x2000 },
- { 0x0700, 0xa436, 0x0000 },
- { 0x0700, 0xa438, 0x0000 },
- { 0x8700, 0xa43b, 0x2000 },
- { 0x0700, 0xa43a, 0x0000 },
- { 0x0700, 0xa43c, 0x0000 },
- { 0x8700, 0xa445, 0x4000 },
- { 0x8700, 0xa441, 0x3000 },
- { 0x8700, 0xa43f, 0x2000 },
- { 0x0700, 0xa43e, 0x0000 },
- { 0x0700, 0xa440, 0x0000 },
- { 0x8700, 0xa443, 0x2000 },
- { 0x0700, 0xa442, 0x0000 },
- { 0x0700, 0xa444, 0x0000 },
- { 0x8700, 0xa449, 0x3000 },
- { 0x8700, 0xa447, 0x2000 },
- { 0x0700, 0xa446, 0x0000 },
- { 0x0700, 0xa448, 0x0000 },
- { 0x8700, 0xa44b, 0x2000 },
- { 0x0700, 0xa44a, 0x0000 },
- { 0x0700, 0xa44c, 0x0000 },
- { 0x8300, 0xf8ff, 0x8000 },
- { 0x9a00, 0xa490, 0x7000 },
- { 0x8700, 0xa46d, 0x6000 },
- { 0x8700, 0xa45d, 0x5000 },
- { 0x8700, 0xa455, 0x4000 },
- { 0x8700, 0xa451, 0x3000 },
- { 0x8700, 0xa44f, 0x2000 },
- { 0x0700, 0xa44e, 0x0000 },
- { 0x0700, 0xa450, 0x0000 },
- { 0x8700, 0xa453, 0x2000 },
- { 0x0700, 0xa452, 0x0000 },
- { 0x0700, 0xa454, 0x0000 },
- { 0x8700, 0xa459, 0x3000 },
- { 0x8700, 0xa457, 0x2000 },
- { 0x0700, 0xa456, 0x0000 },
- { 0x0700, 0xa458, 0x0000 },
- { 0x8700, 0xa45b, 0x2000 },
- { 0x0700, 0xa45a, 0x0000 },
- { 0x0700, 0xa45c, 0x0000 },
- { 0x8700, 0xa465, 0x4000 },
- { 0x8700, 0xa461, 0x3000 },
- { 0x8700, 0xa45f, 0x2000 },
- { 0x0700, 0xa45e, 0x0000 },
- { 0x0700, 0xa460, 0x0000 },
- { 0x8700, 0xa463, 0x2000 },
- { 0x0700, 0xa462, 0x0000 },
- { 0x0700, 0xa464, 0x0000 },
- { 0x8700, 0xa469, 0x3000 },
- { 0x8700, 0xa467, 0x2000 },
- { 0x0700, 0xa466, 0x0000 },
- { 0x0700, 0xa468, 0x0000 },
- { 0x8700, 0xa46b, 0x2000 },
- { 0x0700, 0xa46a, 0x0000 },
- { 0x0700, 0xa46c, 0x0000 },
- { 0x8700, 0xa47d, 0x5000 },
- { 0x8700, 0xa475, 0x4000 },
- { 0x8700, 0xa471, 0x3000 },
- { 0x8700, 0xa46f, 0x2000 },
- { 0x0700, 0xa46e, 0x0000 },
- { 0x0700, 0xa470, 0x0000 },
- { 0x8700, 0xa473, 0x2000 },
- { 0x0700, 0xa472, 0x0000 },
- { 0x0700, 0xa474, 0x0000 },
- { 0x8700, 0xa479, 0x3000 },
- { 0x8700, 0xa477, 0x2000 },
- { 0x0700, 0xa476, 0x0000 },
- { 0x0700, 0xa478, 0x0000 },
- { 0x8700, 0xa47b, 0x2000 },
- { 0x0700, 0xa47a, 0x0000 },
- { 0x0700, 0xa47c, 0x0000 },
- { 0x8700, 0xa485, 0x4000 },
- { 0x8700, 0xa481, 0x3000 },
- { 0x8700, 0xa47f, 0x2000 },
- { 0x0700, 0xa47e, 0x0000 },
- { 0x0700, 0xa480, 0x0000 },
- { 0x8700, 0xa483, 0x2000 },
- { 0x0700, 0xa482, 0x0000 },
- { 0x0700, 0xa484, 0x0000 },
- { 0x8700, 0xa489, 0x3000 },
- { 0x8700, 0xa487, 0x2000 },
- { 0x0700, 0xa486, 0x0000 },
- { 0x0700, 0xa488, 0x0000 },
- { 0x8700, 0xa48b, 0x2000 },
- { 0x0700, 0xa48a, 0x0000 },
- { 0x0700, 0xa48c, 0x0000 },
- { 0x9a00, 0xa4b0, 0x6000 },
- { 0x9a00, 0xa4a0, 0x5000 },
- { 0x9a00, 0xa498, 0x4000 },
- { 0x9a00, 0xa494, 0x3000 },
- { 0x9a00, 0xa492, 0x2000 },
- { 0x1a00, 0xa491, 0x0000 },
- { 0x1a00, 0xa493, 0x0000 },
- { 0x9a00, 0xa496, 0x2000 },
- { 0x1a00, 0xa495, 0x0000 },
- { 0x1a00, 0xa497, 0x0000 },
- { 0x9a00, 0xa49c, 0x3000 },
- { 0x9a00, 0xa49a, 0x2000 },
- { 0x1a00, 0xa499, 0x0000 },
- { 0x1a00, 0xa49b, 0x0000 },
- { 0x9a00, 0xa49e, 0x2000 },
- { 0x1a00, 0xa49d, 0x0000 },
- { 0x1a00, 0xa49f, 0x0000 },
- { 0x9a00, 0xa4a8, 0x4000 },
- { 0x9a00, 0xa4a4, 0x3000 },
- { 0x9a00, 0xa4a2, 0x2000 },
- { 0x1a00, 0xa4a1, 0x0000 },
- { 0x1a00, 0xa4a3, 0x0000 },
- { 0x9a00, 0xa4a6, 0x2000 },
- { 0x1a00, 0xa4a5, 0x0000 },
- { 0x1a00, 0xa4a7, 0x0000 },
- { 0x9a00, 0xa4ac, 0x3000 },
- { 0x9a00, 0xa4aa, 0x2000 },
- { 0x1a00, 0xa4a9, 0x0000 },
- { 0x1a00, 0xa4ab, 0x0000 },
- { 0x9a00, 0xa4ae, 0x2000 },
- { 0x1a00, 0xa4ad, 0x0000 },
- { 0x1a00, 0xa4af, 0x0000 },
- { 0x9a00, 0xa4c0, 0x5000 },
- { 0x9a00, 0xa4b8, 0x4000 },
- { 0x9a00, 0xa4b4, 0x3000 },
- { 0x9a00, 0xa4b2, 0x2000 },
- { 0x1a00, 0xa4b1, 0x0000 },
- { 0x1a00, 0xa4b3, 0x0000 },
- { 0x9a00, 0xa4b6, 0x2000 },
- { 0x1a00, 0xa4b5, 0x0000 },
- { 0x1a00, 0xa4b7, 0x0000 },
- { 0x9a00, 0xa4bc, 0x3000 },
- { 0x9a00, 0xa4ba, 0x2000 },
- { 0x1a00, 0xa4b9, 0x0000 },
- { 0x1a00, 0xa4bb, 0x0000 },
- { 0x9a00, 0xa4be, 0x2000 },
- { 0x1a00, 0xa4bd, 0x0000 },
- { 0x1a00, 0xa4bf, 0x0000 },
- { 0x8700, 0xd7a3, 0x4000 },
- { 0x9a00, 0xa4c4, 0x3000 },
- { 0x9a00, 0xa4c2, 0x2000 },
- { 0x1a00, 0xa4c1, 0x0000 },
- { 0x1a00, 0xa4c3, 0x0000 },
- { 0x9a00, 0xa4c6, 0x2000 },
- { 0x1a00, 0xa4c5, 0x0000 },
- { 0x0700, 0xac00, 0x0000 },
- { 0x8400, 0xdbff, 0x3000 },
- { 0x8400, 0xdb7f, 0x2000 },
- { 0x0400, 0xd800, 0x0000 },
- { 0x0400, 0xdb80, 0x0000 },
- { 0x8400, 0xdfff, 0x2000 },
- { 0x0400, 0xdc00, 0x0000 },
- { 0x0300, 0xe000, 0x0000 },
- { 0x8700, 0xf93f, 0x7000 },
- { 0x8700, 0xf91f, 0x6000 },
- { 0x8700, 0xf90f, 0x5000 },
- { 0x8700, 0xf907, 0x4000 },
- { 0x8700, 0xf903, 0x3000 },
- { 0x8700, 0xf901, 0x2000 },
- { 0x0700, 0xf900, 0x0000 },
- { 0x0700, 0xf902, 0x0000 },
- { 0x8700, 0xf905, 0x2000 },
- { 0x0700, 0xf904, 0x0000 },
- { 0x0700, 0xf906, 0x0000 },
- { 0x8700, 0xf90b, 0x3000 },
- { 0x8700, 0xf909, 0x2000 },
- { 0x0700, 0xf908, 0x0000 },
- { 0x0700, 0xf90a, 0x0000 },
- { 0x8700, 0xf90d, 0x2000 },
- { 0x0700, 0xf90c, 0x0000 },
- { 0x0700, 0xf90e, 0x0000 },
- { 0x8700, 0xf917, 0x4000 },
- { 0x8700, 0xf913, 0x3000 },
- { 0x8700, 0xf911, 0x2000 },
- { 0x0700, 0xf910, 0x0000 },
- { 0x0700, 0xf912, 0x0000 },
- { 0x8700, 0xf915, 0x2000 },
- { 0x0700, 0xf914, 0x0000 },
- { 0x0700, 0xf916, 0x0000 },
- { 0x8700, 0xf91b, 0x3000 },
- { 0x8700, 0xf919, 0x2000 },
- { 0x0700, 0xf918, 0x0000 },
- { 0x0700, 0xf91a, 0x0000 },
- { 0x8700, 0xf91d, 0x2000 },
- { 0x0700, 0xf91c, 0x0000 },
- { 0x0700, 0xf91e, 0x0000 },
- { 0x8700, 0xf92f, 0x5000 },
- { 0x8700, 0xf927, 0x4000 },
- { 0x8700, 0xf923, 0x3000 },
- { 0x8700, 0xf921, 0x2000 },
- { 0x0700, 0xf920, 0x0000 },
- { 0x0700, 0xf922, 0x0000 },
- { 0x8700, 0xf925, 0x2000 },
- { 0x0700, 0xf924, 0x0000 },
- { 0x0700, 0xf926, 0x0000 },
- { 0x8700, 0xf92b, 0x3000 },
- { 0x8700, 0xf929, 0x2000 },
- { 0x0700, 0xf928, 0x0000 },
- { 0x0700, 0xf92a, 0x0000 },
- { 0x8700, 0xf92d, 0x2000 },
- { 0x0700, 0xf92c, 0x0000 },
- { 0x0700, 0xf92e, 0x0000 },
- { 0x8700, 0xf937, 0x4000 },
- { 0x8700, 0xf933, 0x3000 },
- { 0x8700, 0xf931, 0x2000 },
- { 0x0700, 0xf930, 0x0000 },
- { 0x0700, 0xf932, 0x0000 },
- { 0x8700, 0xf935, 0x2000 },
- { 0x0700, 0xf934, 0x0000 },
- { 0x0700, 0xf936, 0x0000 },
- { 0x8700, 0xf93b, 0x3000 },
- { 0x8700, 0xf939, 0x2000 },
- { 0x0700, 0xf938, 0x0000 },
- { 0x0700, 0xf93a, 0x0000 },
- { 0x8700, 0xf93d, 0x2000 },
- { 0x0700, 0xf93c, 0x0000 },
- { 0x0700, 0xf93e, 0x0000 },
- { 0x8700, 0xf95f, 0x6000 },
- { 0x8700, 0xf94f, 0x5000 },
- { 0x8700, 0xf947, 0x4000 },
- { 0x8700, 0xf943, 0x3000 },
- { 0x8700, 0xf941, 0x2000 },
- { 0x0700, 0xf940, 0x0000 },
- { 0x0700, 0xf942, 0x0000 },
- { 0x8700, 0xf945, 0x2000 },
- { 0x0700, 0xf944, 0x0000 },
- { 0x0700, 0xf946, 0x0000 },
- { 0x8700, 0xf94b, 0x3000 },
- { 0x8700, 0xf949, 0x2000 },
- { 0x0700, 0xf948, 0x0000 },
- { 0x0700, 0xf94a, 0x0000 },
- { 0x8700, 0xf94d, 0x2000 },
- { 0x0700, 0xf94c, 0x0000 },
- { 0x0700, 0xf94e, 0x0000 },
- { 0x8700, 0xf957, 0x4000 },
- { 0x8700, 0xf953, 0x3000 },
- { 0x8700, 0xf951, 0x2000 },
- { 0x0700, 0xf950, 0x0000 },
- { 0x0700, 0xf952, 0x0000 },
- { 0x8700, 0xf955, 0x2000 },
- { 0x0700, 0xf954, 0x0000 },
- { 0x0700, 0xf956, 0x0000 },
- { 0x8700, 0xf95b, 0x3000 },
- { 0x8700, 0xf959, 0x2000 },
- { 0x0700, 0xf958, 0x0000 },
- { 0x0700, 0xf95a, 0x0000 },
- { 0x8700, 0xf95d, 0x2000 },
- { 0x0700, 0xf95c, 0x0000 },
- { 0x0700, 0xf95e, 0x0000 },
- { 0x8700, 0xf96f, 0x5000 },
- { 0x8700, 0xf967, 0x4000 },
- { 0x8700, 0xf963, 0x3000 },
- { 0x8700, 0xf961, 0x2000 },
- { 0x0700, 0xf960, 0x0000 },
- { 0x0700, 0xf962, 0x0000 },
- { 0x8700, 0xf965, 0x2000 },
- { 0x0700, 0xf964, 0x0000 },
- { 0x0700, 0xf966, 0x0000 },
- { 0x8700, 0xf96b, 0x3000 },
- { 0x8700, 0xf969, 0x2000 },
- { 0x0700, 0xf968, 0x0000 },
- { 0x0700, 0xf96a, 0x0000 },
- { 0x8700, 0xf96d, 0x2000 },
- { 0x0700, 0xf96c, 0x0000 },
- { 0x0700, 0xf96e, 0x0000 },
- { 0x8700, 0xf977, 0x4000 },
- { 0x8700, 0xf973, 0x3000 },
- { 0x8700, 0xf971, 0x2000 },
- { 0x0700, 0xf970, 0x0000 },
- { 0x0700, 0xf972, 0x0000 },
- { 0x8700, 0xf975, 0x2000 },
- { 0x0700, 0xf974, 0x0000 },
- { 0x0700, 0xf976, 0x0000 },
- { 0x8700, 0xf97b, 0x3000 },
- { 0x8700, 0xf979, 0x2000 },
- { 0x0700, 0xf978, 0x0000 },
- { 0x0700, 0xf97a, 0x0000 },
- { 0x8700, 0xf97d, 0x2000 },
- { 0x0700, 0xf97c, 0x0000 },
- { 0x0700, 0xf97e, 0x0000 },
- { 0x8700, 0xfb27, 0x9000 },
- { 0x8700, 0xf9ff, 0x8000 },
- { 0x8700, 0xf9bf, 0x7000 },
- { 0x8700, 0xf99f, 0x6000 },
- { 0x8700, 0xf98f, 0x5000 },
- { 0x8700, 0xf987, 0x4000 },
- { 0x8700, 0xf983, 0x3000 },
- { 0x8700, 0xf981, 0x2000 },
- { 0x0700, 0xf980, 0x0000 },
- { 0x0700, 0xf982, 0x0000 },
- { 0x8700, 0xf985, 0x2000 },
- { 0x0700, 0xf984, 0x0000 },
- { 0x0700, 0xf986, 0x0000 },
- { 0x8700, 0xf98b, 0x3000 },
- { 0x8700, 0xf989, 0x2000 },
- { 0x0700, 0xf988, 0x0000 },
- { 0x0700, 0xf98a, 0x0000 },
- { 0x8700, 0xf98d, 0x2000 },
- { 0x0700, 0xf98c, 0x0000 },
- { 0x0700, 0xf98e, 0x0000 },
- { 0x8700, 0xf997, 0x4000 },
- { 0x8700, 0xf993, 0x3000 },
- { 0x8700, 0xf991, 0x2000 },
- { 0x0700, 0xf990, 0x0000 },
- { 0x0700, 0xf992, 0x0000 },
- { 0x8700, 0xf995, 0x2000 },
- { 0x0700, 0xf994, 0x0000 },
- { 0x0700, 0xf996, 0x0000 },
- { 0x8700, 0xf99b, 0x3000 },
- { 0x8700, 0xf999, 0x2000 },
- { 0x0700, 0xf998, 0x0000 },
- { 0x0700, 0xf99a, 0x0000 },
- { 0x8700, 0xf99d, 0x2000 },
- { 0x0700, 0xf99c, 0x0000 },
- { 0x0700, 0xf99e, 0x0000 },
- { 0x8700, 0xf9af, 0x5000 },
- { 0x8700, 0xf9a7, 0x4000 },
- { 0x8700, 0xf9a3, 0x3000 },
- { 0x8700, 0xf9a1, 0x2000 },
- { 0x0700, 0xf9a0, 0x0000 },
- { 0x0700, 0xf9a2, 0x0000 },
- { 0x8700, 0xf9a5, 0x2000 },
- { 0x0700, 0xf9a4, 0x0000 },
- { 0x0700, 0xf9a6, 0x0000 },
- { 0x8700, 0xf9ab, 0x3000 },
- { 0x8700, 0xf9a9, 0x2000 },
- { 0x0700, 0xf9a8, 0x0000 },
- { 0x0700, 0xf9aa, 0x0000 },
- { 0x8700, 0xf9ad, 0x2000 },
- { 0x0700, 0xf9ac, 0x0000 },
- { 0x0700, 0xf9ae, 0x0000 },
- { 0x8700, 0xf9b7, 0x4000 },
- { 0x8700, 0xf9b3, 0x3000 },
- { 0x8700, 0xf9b1, 0x2000 },
- { 0x0700, 0xf9b0, 0x0000 },
- { 0x0700, 0xf9b2, 0x0000 },
- { 0x8700, 0xf9b5, 0x2000 },
- { 0x0700, 0xf9b4, 0x0000 },
- { 0x0700, 0xf9b6, 0x0000 },
- { 0x8700, 0xf9bb, 0x3000 },
- { 0x8700, 0xf9b9, 0x2000 },
- { 0x0700, 0xf9b8, 0x0000 },
- { 0x0700, 0xf9ba, 0x0000 },
- { 0x8700, 0xf9bd, 0x2000 },
- { 0x0700, 0xf9bc, 0x0000 },
- { 0x0700, 0xf9be, 0x0000 },
- { 0x8700, 0xf9df, 0x6000 },
- { 0x8700, 0xf9cf, 0x5000 },
- { 0x8700, 0xf9c7, 0x4000 },
- { 0x8700, 0xf9c3, 0x3000 },
- { 0x8700, 0xf9c1, 0x2000 },
- { 0x0700, 0xf9c0, 0x0000 },
- { 0x0700, 0xf9c2, 0x0000 },
- { 0x8700, 0xf9c5, 0x2000 },
- { 0x0700, 0xf9c4, 0x0000 },
- { 0x0700, 0xf9c6, 0x0000 },
- { 0x8700, 0xf9cb, 0x3000 },
- { 0x8700, 0xf9c9, 0x2000 },
- { 0x0700, 0xf9c8, 0x0000 },
- { 0x0700, 0xf9ca, 0x0000 },
- { 0x8700, 0xf9cd, 0x2000 },
- { 0x0700, 0xf9cc, 0x0000 },
- { 0x0700, 0xf9ce, 0x0000 },
- { 0x8700, 0xf9d7, 0x4000 },
- { 0x8700, 0xf9d3, 0x3000 },
- { 0x8700, 0xf9d1, 0x2000 },
- { 0x0700, 0xf9d0, 0x0000 },
- { 0x0700, 0xf9d2, 0x0000 },
- { 0x8700, 0xf9d5, 0x2000 },
- { 0x0700, 0xf9d4, 0x0000 },
- { 0x0700, 0xf9d6, 0x0000 },
- { 0x8700, 0xf9db, 0x3000 },
- { 0x8700, 0xf9d9, 0x2000 },
- { 0x0700, 0xf9d8, 0x0000 },
- { 0x0700, 0xf9da, 0x0000 },
- { 0x8700, 0xf9dd, 0x2000 },
- { 0x0700, 0xf9dc, 0x0000 },
- { 0x0700, 0xf9de, 0x0000 },
- { 0x8700, 0xf9ef, 0x5000 },
- { 0x8700, 0xf9e7, 0x4000 },
- { 0x8700, 0xf9e3, 0x3000 },
- { 0x8700, 0xf9e1, 0x2000 },
- { 0x0700, 0xf9e0, 0x0000 },
- { 0x0700, 0xf9e2, 0x0000 },
- { 0x8700, 0xf9e5, 0x2000 },
- { 0x0700, 0xf9e4, 0x0000 },
- { 0x0700, 0xf9e6, 0x0000 },
- { 0x8700, 0xf9eb, 0x3000 },
- { 0x8700, 0xf9e9, 0x2000 },
- { 0x0700, 0xf9e8, 0x0000 },
- { 0x0700, 0xf9ea, 0x0000 },
- { 0x8700, 0xf9ed, 0x2000 },
- { 0x0700, 0xf9ec, 0x0000 },
- { 0x0700, 0xf9ee, 0x0000 },
- { 0x8700, 0xf9f7, 0x4000 },
- { 0x8700, 0xf9f3, 0x3000 },
- { 0x8700, 0xf9f1, 0x2000 },
- { 0x0700, 0xf9f0, 0x0000 },
- { 0x0700, 0xf9f2, 0x0000 },
- { 0x8700, 0xf9f5, 0x2000 },
- { 0x0700, 0xf9f4, 0x0000 },
- { 0x0700, 0xf9f6, 0x0000 },
- { 0x8700, 0xf9fb, 0x3000 },
- { 0x8700, 0xf9f9, 0x2000 },
- { 0x0700, 0xf9f8, 0x0000 },
- { 0x0700, 0xf9fa, 0x0000 },
- { 0x8700, 0xf9fd, 0x2000 },
- { 0x0700, 0xf9fc, 0x0000 },
- { 0x0700, 0xf9fe, 0x0000 },
- { 0x8700, 0xfa41, 0x7000 },
- { 0x8700, 0xfa1f, 0x6000 },
- { 0x8700, 0xfa0f, 0x5000 },
- { 0x8700, 0xfa07, 0x4000 },
- { 0x8700, 0xfa03, 0x3000 },
- { 0x8700, 0xfa01, 0x2000 },
- { 0x0700, 0xfa00, 0x0000 },
- { 0x0700, 0xfa02, 0x0000 },
- { 0x8700, 0xfa05, 0x2000 },
- { 0x0700, 0xfa04, 0x0000 },
- { 0x0700, 0xfa06, 0x0000 },
- { 0x8700, 0xfa0b, 0x3000 },
- { 0x8700, 0xfa09, 0x2000 },
- { 0x0700, 0xfa08, 0x0000 },
- { 0x0700, 0xfa0a, 0x0000 },
- { 0x8700, 0xfa0d, 0x2000 },
- { 0x0700, 0xfa0c, 0x0000 },
- { 0x0700, 0xfa0e, 0x0000 },
- { 0x8700, 0xfa17, 0x4000 },
- { 0x8700, 0xfa13, 0x3000 },
- { 0x8700, 0xfa11, 0x2000 },
- { 0x0700, 0xfa10, 0x0000 },
- { 0x0700, 0xfa12, 0x0000 },
- { 0x8700, 0xfa15, 0x2000 },
- { 0x0700, 0xfa14, 0x0000 },
- { 0x0700, 0xfa16, 0x0000 },
- { 0x8700, 0xfa1b, 0x3000 },
- { 0x8700, 0xfa19, 0x2000 },
- { 0x0700, 0xfa18, 0x0000 },
- { 0x0700, 0xfa1a, 0x0000 },
- { 0x8700, 0xfa1d, 0x2000 },
- { 0x0700, 0xfa1c, 0x0000 },
- { 0x0700, 0xfa1e, 0x0000 },
- { 0x8700, 0xfa31, 0x5000 },
- { 0x8700, 0xfa27, 0x4000 },
- { 0x8700, 0xfa23, 0x3000 },
- { 0x8700, 0xfa21, 0x2000 },
- { 0x0700, 0xfa20, 0x0000 },
- { 0x0700, 0xfa22, 0x0000 },
- { 0x8700, 0xfa25, 0x2000 },
- { 0x0700, 0xfa24, 0x0000 },
- { 0x0700, 0xfa26, 0x0000 },
- { 0x8700, 0xfa2b, 0x3000 },
- { 0x8700, 0xfa29, 0x2000 },
- { 0x0700, 0xfa28, 0x0000 },
- { 0x0700, 0xfa2a, 0x0000 },
- { 0x8700, 0xfa2d, 0x2000 },
- { 0x0700, 0xfa2c, 0x0000 },
- { 0x0700, 0xfa30, 0x0000 },
- { 0x8700, 0xfa39, 0x4000 },
- { 0x8700, 0xfa35, 0x3000 },
- { 0x8700, 0xfa33, 0x2000 },
- { 0x0700, 0xfa32, 0x0000 },
- { 0x0700, 0xfa34, 0x0000 },
- { 0x8700, 0xfa37, 0x2000 },
- { 0x0700, 0xfa36, 0x0000 },
- { 0x0700, 0xfa38, 0x0000 },
- { 0x8700, 0xfa3d, 0x3000 },
- { 0x8700, 0xfa3b, 0x2000 },
- { 0x0700, 0xfa3a, 0x0000 },
- { 0x0700, 0xfa3c, 0x0000 },
- { 0x8700, 0xfa3f, 0x2000 },
- { 0x0700, 0xfa3e, 0x0000 },
- { 0x0700, 0xfa40, 0x0000 },
- { 0x8700, 0xfa61, 0x6000 },
- { 0x8700, 0xfa51, 0x5000 },
- { 0x8700, 0xfa49, 0x4000 },
- { 0x8700, 0xfa45, 0x3000 },
- { 0x8700, 0xfa43, 0x2000 },
- { 0x0700, 0xfa42, 0x0000 },
- { 0x0700, 0xfa44, 0x0000 },
- { 0x8700, 0xfa47, 0x2000 },
- { 0x0700, 0xfa46, 0x0000 },
- { 0x0700, 0xfa48, 0x0000 },
- { 0x8700, 0xfa4d, 0x3000 },
- { 0x8700, 0xfa4b, 0x2000 },
- { 0x0700, 0xfa4a, 0x0000 },
- { 0x0700, 0xfa4c, 0x0000 },
- { 0x8700, 0xfa4f, 0x2000 },
- { 0x0700, 0xfa4e, 0x0000 },
- { 0x0700, 0xfa50, 0x0000 },
- { 0x8700, 0xfa59, 0x4000 },
- { 0x8700, 0xfa55, 0x3000 },
- { 0x8700, 0xfa53, 0x2000 },
- { 0x0700, 0xfa52, 0x0000 },
- { 0x0700, 0xfa54, 0x0000 },
- { 0x8700, 0xfa57, 0x2000 },
- { 0x0700, 0xfa56, 0x0000 },
- { 0x0700, 0xfa58, 0x0000 },
- { 0x8700, 0xfa5d, 0x3000 },
- { 0x8700, 0xfa5b, 0x2000 },
- { 0x0700, 0xfa5a, 0x0000 },
- { 0x0700, 0xfa5c, 0x0000 },
- { 0x8700, 0xfa5f, 0x2000 },
- { 0x0700, 0xfa5e, 0x0000 },
- { 0x0700, 0xfa60, 0x0000 },
- { 0x8500, 0xfb06, 0x5000 },
- { 0x8700, 0xfa69, 0x4000 },
- { 0x8700, 0xfa65, 0x3000 },
- { 0x8700, 0xfa63, 0x2000 },
- { 0x0700, 0xfa62, 0x0000 },
- { 0x0700, 0xfa64, 0x0000 },
- { 0x8700, 0xfa67, 0x2000 },
- { 0x0700, 0xfa66, 0x0000 },
- { 0x0700, 0xfa68, 0x0000 },
- { 0x8500, 0xfb02, 0x3000 },
- { 0x8500, 0xfb00, 0x2000 },
- { 0x0700, 0xfa6a, 0x0000 },
- { 0x0500, 0xfb01, 0x0000 },
- { 0x8500, 0xfb04, 0x2000 },
- { 0x0500, 0xfb03, 0x0000 },
- { 0x0500, 0xfb05, 0x0000 },
- { 0x8700, 0xfb1f, 0x4000 },
- { 0x8500, 0xfb16, 0x3000 },
- { 0x8500, 0xfb14, 0x2000 },
- { 0x0500, 0xfb13, 0x0000 },
- { 0x0500, 0xfb15, 0x0000 },
- { 0x8700, 0xfb1d, 0x2000 },
- { 0x0500, 0xfb17, 0x0000 },
- { 0x0c00, 0xfb1e, 0x0000 },
- { 0x8700, 0xfb23, 0x3000 },
- { 0x8700, 0xfb21, 0x2000 },
- { 0x0700, 0xfb20, 0x0000 },
- { 0x0700, 0xfb22, 0x0000 },
- { 0x8700, 0xfb25, 0x2000 },
- { 0x0700, 0xfb24, 0x0000 },
- { 0x0700, 0xfb26, 0x0000 },
- { 0x8700, 0xfbac, 0x8000 },
- { 0x8700, 0xfb6c, 0x7000 },
- { 0x8700, 0xfb4c, 0x6000 },
- { 0x8700, 0xfb38, 0x5000 },
- { 0x8700, 0xfb2f, 0x4000 },
- { 0x8700, 0xfb2b, 0x3000 },
- { 0x9900, 0xfb29, 0x2000 },
- { 0x0700, 0xfb28, 0x0000 },
- { 0x0700, 0xfb2a, 0x0000 },
- { 0x8700, 0xfb2d, 0x2000 },
- { 0x0700, 0xfb2c, 0x0000 },
- { 0x0700, 0xfb2e, 0x0000 },
- { 0x8700, 0xfb33, 0x3000 },
- { 0x8700, 0xfb31, 0x2000 },
- { 0x0700, 0xfb30, 0x0000 },
- { 0x0700, 0xfb32, 0x0000 },
- { 0x8700, 0xfb35, 0x2000 },
- { 0x0700, 0xfb34, 0x0000 },
- { 0x0700, 0xfb36, 0x0000 },
- { 0x8700, 0xfb43, 0x4000 },
- { 0x8700, 0xfb3c, 0x3000 },
- { 0x8700, 0xfb3a, 0x2000 },
- { 0x0700, 0xfb39, 0x0000 },
- { 0x0700, 0xfb3b, 0x0000 },
- { 0x8700, 0xfb40, 0x2000 },
- { 0x0700, 0xfb3e, 0x0000 },
- { 0x0700, 0xfb41, 0x0000 },
- { 0x8700, 0xfb48, 0x3000 },
- { 0x8700, 0xfb46, 0x2000 },
- { 0x0700, 0xfb44, 0x0000 },
- { 0x0700, 0xfb47, 0x0000 },
- { 0x8700, 0xfb4a, 0x2000 },
- { 0x0700, 0xfb49, 0x0000 },
- { 0x0700, 0xfb4b, 0x0000 },
- { 0x8700, 0xfb5c, 0x5000 },
- { 0x8700, 0xfb54, 0x4000 },
- { 0x8700, 0xfb50, 0x3000 },
- { 0x8700, 0xfb4e, 0x2000 },
- { 0x0700, 0xfb4d, 0x0000 },
- { 0x0700, 0xfb4f, 0x0000 },
- { 0x8700, 0xfb52, 0x2000 },
- { 0x0700, 0xfb51, 0x0000 },
- { 0x0700, 0xfb53, 0x0000 },
- { 0x8700, 0xfb58, 0x3000 },
- { 0x8700, 0xfb56, 0x2000 },
- { 0x0700, 0xfb55, 0x0000 },
- { 0x0700, 0xfb57, 0x0000 },
- { 0x8700, 0xfb5a, 0x2000 },
- { 0x0700, 0xfb59, 0x0000 },
- { 0x0700, 0xfb5b, 0x0000 },
- { 0x8700, 0xfb64, 0x4000 },
- { 0x8700, 0xfb60, 0x3000 },
- { 0x8700, 0xfb5e, 0x2000 },
- { 0x0700, 0xfb5d, 0x0000 },
- { 0x0700, 0xfb5f, 0x0000 },
- { 0x8700, 0xfb62, 0x2000 },
- { 0x0700, 0xfb61, 0x0000 },
- { 0x0700, 0xfb63, 0x0000 },
- { 0x8700, 0xfb68, 0x3000 },
- { 0x8700, 0xfb66, 0x2000 },
- { 0x0700, 0xfb65, 0x0000 },
- { 0x0700, 0xfb67, 0x0000 },
- { 0x8700, 0xfb6a, 0x2000 },
- { 0x0700, 0xfb69, 0x0000 },
- { 0x0700, 0xfb6b, 0x0000 },
- { 0x8700, 0xfb8c, 0x6000 },
- { 0x8700, 0xfb7c, 0x5000 },
- { 0x8700, 0xfb74, 0x4000 },
- { 0x8700, 0xfb70, 0x3000 },
- { 0x8700, 0xfb6e, 0x2000 },
- { 0x0700, 0xfb6d, 0x0000 },
- { 0x0700, 0xfb6f, 0x0000 },
- { 0x8700, 0xfb72, 0x2000 },
- { 0x0700, 0xfb71, 0x0000 },
- { 0x0700, 0xfb73, 0x0000 },
- { 0x8700, 0xfb78, 0x3000 },
- { 0x8700, 0xfb76, 0x2000 },
- { 0x0700, 0xfb75, 0x0000 },
- { 0x0700, 0xfb77, 0x0000 },
- { 0x8700, 0xfb7a, 0x2000 },
- { 0x0700, 0xfb79, 0x0000 },
- { 0x0700, 0xfb7b, 0x0000 },
- { 0x8700, 0xfb84, 0x4000 },
- { 0x8700, 0xfb80, 0x3000 },
- { 0x8700, 0xfb7e, 0x2000 },
- { 0x0700, 0xfb7d, 0x0000 },
- { 0x0700, 0xfb7f, 0x0000 },
- { 0x8700, 0xfb82, 0x2000 },
- { 0x0700, 0xfb81, 0x0000 },
- { 0x0700, 0xfb83, 0x0000 },
- { 0x8700, 0xfb88, 0x3000 },
- { 0x8700, 0xfb86, 0x2000 },
- { 0x0700, 0xfb85, 0x0000 },
- { 0x0700, 0xfb87, 0x0000 },
- { 0x8700, 0xfb8a, 0x2000 },
- { 0x0700, 0xfb89, 0x0000 },
- { 0x0700, 0xfb8b, 0x0000 },
- { 0x8700, 0xfb9c, 0x5000 },
- { 0x8700, 0xfb94, 0x4000 },
- { 0x8700, 0xfb90, 0x3000 },
- { 0x8700, 0xfb8e, 0x2000 },
- { 0x0700, 0xfb8d, 0x0000 },
- { 0x0700, 0xfb8f, 0x0000 },
- { 0x8700, 0xfb92, 0x2000 },
- { 0x0700, 0xfb91, 0x0000 },
- { 0x0700, 0xfb93, 0x0000 },
- { 0x8700, 0xfb98, 0x3000 },
- { 0x8700, 0xfb96, 0x2000 },
- { 0x0700, 0xfb95, 0x0000 },
- { 0x0700, 0xfb97, 0x0000 },
- { 0x8700, 0xfb9a, 0x2000 },
- { 0x0700, 0xfb99, 0x0000 },
- { 0x0700, 0xfb9b, 0x0000 },
- { 0x8700, 0xfba4, 0x4000 },
- { 0x8700, 0xfba0, 0x3000 },
- { 0x8700, 0xfb9e, 0x2000 },
- { 0x0700, 0xfb9d, 0x0000 },
- { 0x0700, 0xfb9f, 0x0000 },
- { 0x8700, 0xfba2, 0x2000 },
- { 0x0700, 0xfba1, 0x0000 },
- { 0x0700, 0xfba3, 0x0000 },
- { 0x8700, 0xfba8, 0x3000 },
- { 0x8700, 0xfba6, 0x2000 },
- { 0x0700, 0xfba5, 0x0000 },
- { 0x0700, 0xfba7, 0x0000 },
- { 0x8700, 0xfbaa, 0x2000 },
- { 0x0700, 0xfba9, 0x0000 },
- { 0x0700, 0xfbab, 0x0000 },
- { 0x8700, 0xfc0d, 0x7000 },
- { 0x8700, 0xfbed, 0x6000 },
- { 0x8700, 0xfbdd, 0x5000 },
- { 0x8700, 0xfbd5, 0x4000 },
- { 0x8700, 0xfbb0, 0x3000 },
- { 0x8700, 0xfbae, 0x2000 },
- { 0x0700, 0xfbad, 0x0000 },
- { 0x0700, 0xfbaf, 0x0000 },
- { 0x8700, 0xfbd3, 0x2000 },
- { 0x0700, 0xfbb1, 0x0000 },
- { 0x0700, 0xfbd4, 0x0000 },
- { 0x8700, 0xfbd9, 0x3000 },
- { 0x8700, 0xfbd7, 0x2000 },
- { 0x0700, 0xfbd6, 0x0000 },
- { 0x0700, 0xfbd8, 0x0000 },
- { 0x8700, 0xfbdb, 0x2000 },
- { 0x0700, 0xfbda, 0x0000 },
- { 0x0700, 0xfbdc, 0x0000 },
- { 0x8700, 0xfbe5, 0x4000 },
- { 0x8700, 0xfbe1, 0x3000 },
- { 0x8700, 0xfbdf, 0x2000 },
- { 0x0700, 0xfbde, 0x0000 },
- { 0x0700, 0xfbe0, 0x0000 },
- { 0x8700, 0xfbe3, 0x2000 },
- { 0x0700, 0xfbe2, 0x0000 },
- { 0x0700, 0xfbe4, 0x0000 },
- { 0x8700, 0xfbe9, 0x3000 },
- { 0x8700, 0xfbe7, 0x2000 },
- { 0x0700, 0xfbe6, 0x0000 },
- { 0x0700, 0xfbe8, 0x0000 },
- { 0x8700, 0xfbeb, 0x2000 },
- { 0x0700, 0xfbea, 0x0000 },
- { 0x0700, 0xfbec, 0x0000 },
- { 0x8700, 0xfbfd, 0x5000 },
- { 0x8700, 0xfbf5, 0x4000 },
- { 0x8700, 0xfbf1, 0x3000 },
- { 0x8700, 0xfbef, 0x2000 },
- { 0x0700, 0xfbee, 0x0000 },
- { 0x0700, 0xfbf0, 0x0000 },
- { 0x8700, 0xfbf3, 0x2000 },
- { 0x0700, 0xfbf2, 0x0000 },
- { 0x0700, 0xfbf4, 0x0000 },
- { 0x8700, 0xfbf9, 0x3000 },
- { 0x8700, 0xfbf7, 0x2000 },
- { 0x0700, 0xfbf6, 0x0000 },
- { 0x0700, 0xfbf8, 0x0000 },
- { 0x8700, 0xfbfb, 0x2000 },
- { 0x0700, 0xfbfa, 0x0000 },
- { 0x0700, 0xfbfc, 0x0000 },
- { 0x8700, 0xfc05, 0x4000 },
- { 0x8700, 0xfc01, 0x3000 },
- { 0x8700, 0xfbff, 0x2000 },
- { 0x0700, 0xfbfe, 0x0000 },
- { 0x0700, 0xfc00, 0x0000 },
- { 0x8700, 0xfc03, 0x2000 },
- { 0x0700, 0xfc02, 0x0000 },
- { 0x0700, 0xfc04, 0x0000 },
- { 0x8700, 0xfc09, 0x3000 },
- { 0x8700, 0xfc07, 0x2000 },
- { 0x0700, 0xfc06, 0x0000 },
- { 0x0700, 0xfc08, 0x0000 },
- { 0x8700, 0xfc0b, 0x2000 },
- { 0x0700, 0xfc0a, 0x0000 },
- { 0x0700, 0xfc0c, 0x0000 },
- { 0x8700, 0xfc2d, 0x6000 },
- { 0x8700, 0xfc1d, 0x5000 },
- { 0x8700, 0xfc15, 0x4000 },
- { 0x8700, 0xfc11, 0x3000 },
- { 0x8700, 0xfc0f, 0x2000 },
- { 0x0700, 0xfc0e, 0x0000 },
- { 0x0700, 0xfc10, 0x0000 },
- { 0x8700, 0xfc13, 0x2000 },
- { 0x0700, 0xfc12, 0x0000 },
- { 0x0700, 0xfc14, 0x0000 },
- { 0x8700, 0xfc19, 0x3000 },
- { 0x8700, 0xfc17, 0x2000 },
- { 0x0700, 0xfc16, 0x0000 },
- { 0x0700, 0xfc18, 0x0000 },
- { 0x8700, 0xfc1b, 0x2000 },
- { 0x0700, 0xfc1a, 0x0000 },
- { 0x0700, 0xfc1c, 0x0000 },
- { 0x8700, 0xfc25, 0x4000 },
- { 0x8700, 0xfc21, 0x3000 },
- { 0x8700, 0xfc1f, 0x2000 },
- { 0x0700, 0xfc1e, 0x0000 },
- { 0x0700, 0xfc20, 0x0000 },
- { 0x8700, 0xfc23, 0x2000 },
- { 0x0700, 0xfc22, 0x0000 },
- { 0x0700, 0xfc24, 0x0000 },
- { 0x8700, 0xfc29, 0x3000 },
- { 0x8700, 0xfc27, 0x2000 },
- { 0x0700, 0xfc26, 0x0000 },
- { 0x0700, 0xfc28, 0x0000 },
- { 0x8700, 0xfc2b, 0x2000 },
- { 0x0700, 0xfc2a, 0x0000 },
- { 0x0700, 0xfc2c, 0x0000 },
- { 0x8700, 0xfc3d, 0x5000 },
- { 0x8700, 0xfc35, 0x4000 },
- { 0x8700, 0xfc31, 0x3000 },
- { 0x8700, 0xfc2f, 0x2000 },
- { 0x0700, 0xfc2e, 0x0000 },
- { 0x0700, 0xfc30, 0x0000 },
- { 0x8700, 0xfc33, 0x2000 },
- { 0x0700, 0xfc32, 0x0000 },
- { 0x0700, 0xfc34, 0x0000 },
- { 0x8700, 0xfc39, 0x3000 },
- { 0x8700, 0xfc37, 0x2000 },
- { 0x0700, 0xfc36, 0x0000 },
- { 0x0700, 0xfc38, 0x0000 },
- { 0x8700, 0xfc3b, 0x2000 },
- { 0x0700, 0xfc3a, 0x0000 },
- { 0x0700, 0xfc3c, 0x0000 },
- { 0x8700, 0xfc45, 0x4000 },
- { 0x8700, 0xfc41, 0x3000 },
- { 0x8700, 0xfc3f, 0x2000 },
- { 0x0700, 0xfc3e, 0x0000 },
- { 0x0700, 0xfc40, 0x0000 },
- { 0x8700, 0xfc43, 0x2000 },
- { 0x0700, 0xfc42, 0x0000 },
- { 0x0700, 0xfc44, 0x0000 },
- { 0x8700, 0xfc49, 0x3000 },
- { 0x8700, 0xfc47, 0x2000 },
- { 0x0700, 0xfc46, 0x0000 },
- { 0x0700, 0xfc48, 0x0000 },
- { 0x8700, 0xfc4b, 0x2000 },
- { 0x0700, 0xfc4a, 0x0000 },
- { 0x0700, 0xfc4c, 0x0000 },
- { 0x8700, 0xfeac, 0xa000 },
- { 0x8700, 0xfd5d, 0x9000 },
- { 0x8700, 0xfccd, 0x8000 },
- { 0x8700, 0xfc8d, 0x7000 },
- { 0x8700, 0xfc6d, 0x6000 },
- { 0x8700, 0xfc5d, 0x5000 },
- { 0x8700, 0xfc55, 0x4000 },
- { 0x8700, 0xfc51, 0x3000 },
- { 0x8700, 0xfc4f, 0x2000 },
- { 0x0700, 0xfc4e, 0x0000 },
- { 0x0700, 0xfc50, 0x0000 },
- { 0x8700, 0xfc53, 0x2000 },
- { 0x0700, 0xfc52, 0x0000 },
- { 0x0700, 0xfc54, 0x0000 },
- { 0x8700, 0xfc59, 0x3000 },
- { 0x8700, 0xfc57, 0x2000 },
- { 0x0700, 0xfc56, 0x0000 },
- { 0x0700, 0xfc58, 0x0000 },
- { 0x8700, 0xfc5b, 0x2000 },
- { 0x0700, 0xfc5a, 0x0000 },
- { 0x0700, 0xfc5c, 0x0000 },
- { 0x8700, 0xfc65, 0x4000 },
- { 0x8700, 0xfc61, 0x3000 },
- { 0x8700, 0xfc5f, 0x2000 },
- { 0x0700, 0xfc5e, 0x0000 },
- { 0x0700, 0xfc60, 0x0000 },
- { 0x8700, 0xfc63, 0x2000 },
- { 0x0700, 0xfc62, 0x0000 },
- { 0x0700, 0xfc64, 0x0000 },
- { 0x8700, 0xfc69, 0x3000 },
- { 0x8700, 0xfc67, 0x2000 },
- { 0x0700, 0xfc66, 0x0000 },
- { 0x0700, 0xfc68, 0x0000 },
- { 0x8700, 0xfc6b, 0x2000 },
- { 0x0700, 0xfc6a, 0x0000 },
- { 0x0700, 0xfc6c, 0x0000 },
- { 0x8700, 0xfc7d, 0x5000 },
- { 0x8700, 0xfc75, 0x4000 },
- { 0x8700, 0xfc71, 0x3000 },
- { 0x8700, 0xfc6f, 0x2000 },
- { 0x0700, 0xfc6e, 0x0000 },
- { 0x0700, 0xfc70, 0x0000 },
- { 0x8700, 0xfc73, 0x2000 },
- { 0x0700, 0xfc72, 0x0000 },
- { 0x0700, 0xfc74, 0x0000 },
- { 0x8700, 0xfc79, 0x3000 },
- { 0x8700, 0xfc77, 0x2000 },
- { 0x0700, 0xfc76, 0x0000 },
- { 0x0700, 0xfc78, 0x0000 },
- { 0x8700, 0xfc7b, 0x2000 },
- { 0x0700, 0xfc7a, 0x0000 },
- { 0x0700, 0xfc7c, 0x0000 },
- { 0x8700, 0xfc85, 0x4000 },
- { 0x8700, 0xfc81, 0x3000 },
- { 0x8700, 0xfc7f, 0x2000 },
- { 0x0700, 0xfc7e, 0x0000 },
- { 0x0700, 0xfc80, 0x0000 },
- { 0x8700, 0xfc83, 0x2000 },
- { 0x0700, 0xfc82, 0x0000 },
- { 0x0700, 0xfc84, 0x0000 },
- { 0x8700, 0xfc89, 0x3000 },
- { 0x8700, 0xfc87, 0x2000 },
- { 0x0700, 0xfc86, 0x0000 },
- { 0x0700, 0xfc88, 0x0000 },
- { 0x8700, 0xfc8b, 0x2000 },
- { 0x0700, 0xfc8a, 0x0000 },
- { 0x0700, 0xfc8c, 0x0000 },
- { 0x8700, 0xfcad, 0x6000 },
- { 0x8700, 0xfc9d, 0x5000 },
- { 0x8700, 0xfc95, 0x4000 },
- { 0x8700, 0xfc91, 0x3000 },
- { 0x8700, 0xfc8f, 0x2000 },
- { 0x0700, 0xfc8e, 0x0000 },
- { 0x0700, 0xfc90, 0x0000 },
- { 0x8700, 0xfc93, 0x2000 },
- { 0x0700, 0xfc92, 0x0000 },
- { 0x0700, 0xfc94, 0x0000 },
- { 0x8700, 0xfc99, 0x3000 },
- { 0x8700, 0xfc97, 0x2000 },
- { 0x0700, 0xfc96, 0x0000 },
- { 0x0700, 0xfc98, 0x0000 },
- { 0x8700, 0xfc9b, 0x2000 },
- { 0x0700, 0xfc9a, 0x0000 },
- { 0x0700, 0xfc9c, 0x0000 },
- { 0x8700, 0xfca5, 0x4000 },
- { 0x8700, 0xfca1, 0x3000 },
- { 0x8700, 0xfc9f, 0x2000 },
- { 0x0700, 0xfc9e, 0x0000 },
- { 0x0700, 0xfca0, 0x0000 },
- { 0x8700, 0xfca3, 0x2000 },
- { 0x0700, 0xfca2, 0x0000 },
- { 0x0700, 0xfca4, 0x0000 },
- { 0x8700, 0xfca9, 0x3000 },
- { 0x8700, 0xfca7, 0x2000 },
- { 0x0700, 0xfca6, 0x0000 },
- { 0x0700, 0xfca8, 0x0000 },
- { 0x8700, 0xfcab, 0x2000 },
- { 0x0700, 0xfcaa, 0x0000 },
- { 0x0700, 0xfcac, 0x0000 },
- { 0x8700, 0xfcbd, 0x5000 },
- { 0x8700, 0xfcb5, 0x4000 },
- { 0x8700, 0xfcb1, 0x3000 },
- { 0x8700, 0xfcaf, 0x2000 },
- { 0x0700, 0xfcae, 0x0000 },
- { 0x0700, 0xfcb0, 0x0000 },
- { 0x8700, 0xfcb3, 0x2000 },
- { 0x0700, 0xfcb2, 0x0000 },
- { 0x0700, 0xfcb4, 0x0000 },
- { 0x8700, 0xfcb9, 0x3000 },
- { 0x8700, 0xfcb7, 0x2000 },
- { 0x0700, 0xfcb6, 0x0000 },
- { 0x0700, 0xfcb8, 0x0000 },
- { 0x8700, 0xfcbb, 0x2000 },
- { 0x0700, 0xfcba, 0x0000 },
- { 0x0700, 0xfcbc, 0x0000 },
- { 0x8700, 0xfcc5, 0x4000 },
- { 0x8700, 0xfcc1, 0x3000 },
- { 0x8700, 0xfcbf, 0x2000 },
- { 0x0700, 0xfcbe, 0x0000 },
- { 0x0700, 0xfcc0, 0x0000 },
- { 0x8700, 0xfcc3, 0x2000 },
- { 0x0700, 0xfcc2, 0x0000 },
- { 0x0700, 0xfcc4, 0x0000 },
- { 0x8700, 0xfcc9, 0x3000 },
- { 0x8700, 0xfcc7, 0x2000 },
- { 0x0700, 0xfcc6, 0x0000 },
- { 0x0700, 0xfcc8, 0x0000 },
- { 0x8700, 0xfccb, 0x2000 },
- { 0x0700, 0xfcca, 0x0000 },
- { 0x0700, 0xfccc, 0x0000 },
- { 0x8700, 0xfd0d, 0x7000 },
- { 0x8700, 0xfced, 0x6000 },
- { 0x8700, 0xfcdd, 0x5000 },
- { 0x8700, 0xfcd5, 0x4000 },
- { 0x8700, 0xfcd1, 0x3000 },
- { 0x8700, 0xfccf, 0x2000 },
- { 0x0700, 0xfcce, 0x0000 },
- { 0x0700, 0xfcd0, 0x0000 },
- { 0x8700, 0xfcd3, 0x2000 },
- { 0x0700, 0xfcd2, 0x0000 },
- { 0x0700, 0xfcd4, 0x0000 },
- { 0x8700, 0xfcd9, 0x3000 },
- { 0x8700, 0xfcd7, 0x2000 },
- { 0x0700, 0xfcd6, 0x0000 },
- { 0x0700, 0xfcd8, 0x0000 },
- { 0x8700, 0xfcdb, 0x2000 },
- { 0x0700, 0xfcda, 0x0000 },
- { 0x0700, 0xfcdc, 0x0000 },
- { 0x8700, 0xfce5, 0x4000 },
- { 0x8700, 0xfce1, 0x3000 },
- { 0x8700, 0xfcdf, 0x2000 },
- { 0x0700, 0xfcde, 0x0000 },
- { 0x0700, 0xfce0, 0x0000 },
- { 0x8700, 0xfce3, 0x2000 },
- { 0x0700, 0xfce2, 0x0000 },
- { 0x0700, 0xfce4, 0x0000 },
- { 0x8700, 0xfce9, 0x3000 },
- { 0x8700, 0xfce7, 0x2000 },
- { 0x0700, 0xfce6, 0x0000 },
- { 0x0700, 0xfce8, 0x0000 },
- { 0x8700, 0xfceb, 0x2000 },
- { 0x0700, 0xfcea, 0x0000 },
- { 0x0700, 0xfcec, 0x0000 },
- { 0x8700, 0xfcfd, 0x5000 },
- { 0x8700, 0xfcf5, 0x4000 },
- { 0x8700, 0xfcf1, 0x3000 },
- { 0x8700, 0xfcef, 0x2000 },
- { 0x0700, 0xfcee, 0x0000 },
- { 0x0700, 0xfcf0, 0x0000 },
- { 0x8700, 0xfcf3, 0x2000 },
- { 0x0700, 0xfcf2, 0x0000 },
- { 0x0700, 0xfcf4, 0x0000 },
- { 0x8700, 0xfcf9, 0x3000 },
- { 0x8700, 0xfcf7, 0x2000 },
- { 0x0700, 0xfcf6, 0x0000 },
- { 0x0700, 0xfcf8, 0x0000 },
- { 0x8700, 0xfcfb, 0x2000 },
- { 0x0700, 0xfcfa, 0x0000 },
- { 0x0700, 0xfcfc, 0x0000 },
- { 0x8700, 0xfd05, 0x4000 },
- { 0x8700, 0xfd01, 0x3000 },
- { 0x8700, 0xfcff, 0x2000 },
- { 0x0700, 0xfcfe, 0x0000 },
- { 0x0700, 0xfd00, 0x0000 },
- { 0x8700, 0xfd03, 0x2000 },
- { 0x0700, 0xfd02, 0x0000 },
- { 0x0700, 0xfd04, 0x0000 },
- { 0x8700, 0xfd09, 0x3000 },
- { 0x8700, 0xfd07, 0x2000 },
- { 0x0700, 0xfd06, 0x0000 },
- { 0x0700, 0xfd08, 0x0000 },
- { 0x8700, 0xfd0b, 0x2000 },
- { 0x0700, 0xfd0a, 0x0000 },
- { 0x0700, 0xfd0c, 0x0000 },
- { 0x8700, 0xfd2d, 0x6000 },
- { 0x8700, 0xfd1d, 0x5000 },
- { 0x8700, 0xfd15, 0x4000 },
- { 0x8700, 0xfd11, 0x3000 },
- { 0x8700, 0xfd0f, 0x2000 },
- { 0x0700, 0xfd0e, 0x0000 },
- { 0x0700, 0xfd10, 0x0000 },
- { 0x8700, 0xfd13, 0x2000 },
- { 0x0700, 0xfd12, 0x0000 },
- { 0x0700, 0xfd14, 0x0000 },
- { 0x8700, 0xfd19, 0x3000 },
- { 0x8700, 0xfd17, 0x2000 },
- { 0x0700, 0xfd16, 0x0000 },
- { 0x0700, 0xfd18, 0x0000 },
- { 0x8700, 0xfd1b, 0x2000 },
- { 0x0700, 0xfd1a, 0x0000 },
- { 0x0700, 0xfd1c, 0x0000 },
- { 0x8700, 0xfd25, 0x4000 },
- { 0x8700, 0xfd21, 0x3000 },
- { 0x8700, 0xfd1f, 0x2000 },
- { 0x0700, 0xfd1e, 0x0000 },
- { 0x0700, 0xfd20, 0x0000 },
- { 0x8700, 0xfd23, 0x2000 },
- { 0x0700, 0xfd22, 0x0000 },
- { 0x0700, 0xfd24, 0x0000 },
- { 0x8700, 0xfd29, 0x3000 },
- { 0x8700, 0xfd27, 0x2000 },
- { 0x0700, 0xfd26, 0x0000 },
- { 0x0700, 0xfd28, 0x0000 },
- { 0x8700, 0xfd2b, 0x2000 },
- { 0x0700, 0xfd2a, 0x0000 },
- { 0x0700, 0xfd2c, 0x0000 },
- { 0x8700, 0xfd3d, 0x5000 },
- { 0x8700, 0xfd35, 0x4000 },
- { 0x8700, 0xfd31, 0x3000 },
- { 0x8700, 0xfd2f, 0x2000 },
- { 0x0700, 0xfd2e, 0x0000 },
- { 0x0700, 0xfd30, 0x0000 },
- { 0x8700, 0xfd33, 0x2000 },
- { 0x0700, 0xfd32, 0x0000 },
- { 0x0700, 0xfd34, 0x0000 },
- { 0x8700, 0xfd39, 0x3000 },
- { 0x8700, 0xfd37, 0x2000 },
- { 0x0700, 0xfd36, 0x0000 },
- { 0x0700, 0xfd38, 0x0000 },
- { 0x8700, 0xfd3b, 0x2000 },
- { 0x0700, 0xfd3a, 0x0000 },
- { 0x0700, 0xfd3c, 0x0000 },
- { 0x8700, 0xfd55, 0x4000 },
- { 0x8700, 0xfd51, 0x3000 },
- { 0x9200, 0xfd3f, 0x2000 },
- { 0x1600, 0xfd3e, 0x0000 },
- { 0x0700, 0xfd50, 0x0000 },
- { 0x8700, 0xfd53, 0x2000 },
- { 0x0700, 0xfd52, 0x0000 },
- { 0x0700, 0xfd54, 0x0000 },
- { 0x8700, 0xfd59, 0x3000 },
- { 0x8700, 0xfd57, 0x2000 },
- { 0x0700, 0xfd56, 0x0000 },
- { 0x0700, 0xfd58, 0x0000 },
- { 0x8700, 0xfd5b, 0x2000 },
- { 0x0700, 0xfd5a, 0x0000 },
- { 0x0700, 0xfd5c, 0x0000 },
- { 0x8c00, 0xfe09, 0x8000 },
- { 0x8700, 0xfd9f, 0x7000 },
- { 0x8700, 0xfd7d, 0x6000 },
- { 0x8700, 0xfd6d, 0x5000 },
- { 0x8700, 0xfd65, 0x4000 },
- { 0x8700, 0xfd61, 0x3000 },
- { 0x8700, 0xfd5f, 0x2000 },
- { 0x0700, 0xfd5e, 0x0000 },
- { 0x0700, 0xfd60, 0x0000 },
- { 0x8700, 0xfd63, 0x2000 },
- { 0x0700, 0xfd62, 0x0000 },
- { 0x0700, 0xfd64, 0x0000 },
- { 0x8700, 0xfd69, 0x3000 },
- { 0x8700, 0xfd67, 0x2000 },
- { 0x0700, 0xfd66, 0x0000 },
- { 0x0700, 0xfd68, 0x0000 },
- { 0x8700, 0xfd6b, 0x2000 },
- { 0x0700, 0xfd6a, 0x0000 },
- { 0x0700, 0xfd6c, 0x0000 },
- { 0x8700, 0xfd75, 0x4000 },
- { 0x8700, 0xfd71, 0x3000 },
- { 0x8700, 0xfd6f, 0x2000 },
- { 0x0700, 0xfd6e, 0x0000 },
- { 0x0700, 0xfd70, 0x0000 },
- { 0x8700, 0xfd73, 0x2000 },
- { 0x0700, 0xfd72, 0x0000 },
- { 0x0700, 0xfd74, 0x0000 },
- { 0x8700, 0xfd79, 0x3000 },
- { 0x8700, 0xfd77, 0x2000 },
- { 0x0700, 0xfd76, 0x0000 },
- { 0x0700, 0xfd78, 0x0000 },
- { 0x8700, 0xfd7b, 0x2000 },
- { 0x0700, 0xfd7a, 0x0000 },
- { 0x0700, 0xfd7c, 0x0000 },
- { 0x8700, 0xfd8d, 0x5000 },
- { 0x8700, 0xfd85, 0x4000 },
- { 0x8700, 0xfd81, 0x3000 },
- { 0x8700, 0xfd7f, 0x2000 },
- { 0x0700, 0xfd7e, 0x0000 },
- { 0x0700, 0xfd80, 0x0000 },
- { 0x8700, 0xfd83, 0x2000 },
- { 0x0700, 0xfd82, 0x0000 },
- { 0x0700, 0xfd84, 0x0000 },
- { 0x8700, 0xfd89, 0x3000 },
- { 0x8700, 0xfd87, 0x2000 },
- { 0x0700, 0xfd86, 0x0000 },
- { 0x0700, 0xfd88, 0x0000 },
- { 0x8700, 0xfd8b, 0x2000 },
- { 0x0700, 0xfd8a, 0x0000 },
- { 0x0700, 0xfd8c, 0x0000 },
- { 0x8700, 0xfd97, 0x4000 },
- { 0x8700, 0xfd93, 0x3000 },
- { 0x8700, 0xfd8f, 0x2000 },
- { 0x0700, 0xfd8e, 0x0000 },
- { 0x0700, 0xfd92, 0x0000 },
- { 0x8700, 0xfd95, 0x2000 },
- { 0x0700, 0xfd94, 0x0000 },
- { 0x0700, 0xfd96, 0x0000 },
- { 0x8700, 0xfd9b, 0x3000 },
- { 0x8700, 0xfd99, 0x2000 },
- { 0x0700, 0xfd98, 0x0000 },
- { 0x0700, 0xfd9a, 0x0000 },
- { 0x8700, 0xfd9d, 0x2000 },
- { 0x0700, 0xfd9c, 0x0000 },
- { 0x0700, 0xfd9e, 0x0000 },
- { 0x8700, 0xfdbf, 0x6000 },
- { 0x8700, 0xfdaf, 0x5000 },
- { 0x8700, 0xfda7, 0x4000 },
- { 0x8700, 0xfda3, 0x3000 },
- { 0x8700, 0xfda1, 0x2000 },
- { 0x0700, 0xfda0, 0x0000 },
- { 0x0700, 0xfda2, 0x0000 },
- { 0x8700, 0xfda5, 0x2000 },
- { 0x0700, 0xfda4, 0x0000 },
- { 0x0700, 0xfda6, 0x0000 },
- { 0x8700, 0xfdab, 0x3000 },
- { 0x8700, 0xfda9, 0x2000 },
- { 0x0700, 0xfda8, 0x0000 },
- { 0x0700, 0xfdaa, 0x0000 },
- { 0x8700, 0xfdad, 0x2000 },
- { 0x0700, 0xfdac, 0x0000 },
- { 0x0700, 0xfdae, 0x0000 },
- { 0x8700, 0xfdb7, 0x4000 },
- { 0x8700, 0xfdb3, 0x3000 },
- { 0x8700, 0xfdb1, 0x2000 },
- { 0x0700, 0xfdb0, 0x0000 },
- { 0x0700, 0xfdb2, 0x0000 },
- { 0x8700, 0xfdb5, 0x2000 },
- { 0x0700, 0xfdb4, 0x0000 },
- { 0x0700, 0xfdb6, 0x0000 },
- { 0x8700, 0xfdbb, 0x3000 },
- { 0x8700, 0xfdb9, 0x2000 },
- { 0x0700, 0xfdb8, 0x0000 },
- { 0x0700, 0xfdba, 0x0000 },
- { 0x8700, 0xfdbd, 0x2000 },
- { 0x0700, 0xfdbc, 0x0000 },
- { 0x0700, 0xfdbe, 0x0000 },
- { 0x8700, 0xfdf7, 0x5000 },
- { 0x8700, 0xfdc7, 0x4000 },
- { 0x8700, 0xfdc3, 0x3000 },
- { 0x8700, 0xfdc1, 0x2000 },
- { 0x0700, 0xfdc0, 0x0000 },
- { 0x0700, 0xfdc2, 0x0000 },
- { 0x8700, 0xfdc5, 0x2000 },
- { 0x0700, 0xfdc4, 0x0000 },
- { 0x0700, 0xfdc6, 0x0000 },
- { 0x8700, 0xfdf3, 0x3000 },
- { 0x8700, 0xfdf1, 0x2000 },
- { 0x0700, 0xfdf0, 0x0000 },
- { 0x0700, 0xfdf2, 0x0000 },
- { 0x8700, 0xfdf5, 0x2000 },
- { 0x0700, 0xfdf4, 0x0000 },
- { 0x0700, 0xfdf6, 0x0000 },
- { 0x8c00, 0xfe01, 0x4000 },
- { 0x8700, 0xfdfb, 0x3000 },
- { 0x8700, 0xfdf9, 0x2000 },
- { 0x0700, 0xfdf8, 0x0000 },
- { 0x0700, 0xfdfa, 0x0000 },
- { 0x9a00, 0xfdfd, 0x2000 },
- { 0x1700, 0xfdfc, 0x0000 },
- { 0x0c00, 0xfe00, 0x0000 },
- { 0x8c00, 0xfe05, 0x3000 },
- { 0x8c00, 0xfe03, 0x2000 },
- { 0x0c00, 0xfe02, 0x0000 },
- { 0x0c00, 0xfe04, 0x0000 },
- { 0x8c00, 0xfe07, 0x2000 },
- { 0x0c00, 0xfe06, 0x0000 },
- { 0x0c00, 0xfe08, 0x0000 },
- { 0x9900, 0xfe66, 0x7000 },
- { 0x9500, 0xfe45, 0x6000 },
- { 0x9600, 0xfe35, 0x5000 },
- { 0x8c00, 0xfe21, 0x4000 },
- { 0x8c00, 0xfe0d, 0x3000 },
- { 0x8c00, 0xfe0b, 0x2000 },
- { 0x0c00, 0xfe0a, 0x0000 },
- { 0x0c00, 0xfe0c, 0x0000 },
- { 0x8c00, 0xfe0f, 0x2000 },
- { 0x0c00, 0xfe0e, 0x0000 },
- { 0x0c00, 0xfe20, 0x0000 },
- { 0x9100, 0xfe31, 0x3000 },
- { 0x8c00, 0xfe23, 0x2000 },
- { 0x0c00, 0xfe22, 0x0000 },
- { 0x1500, 0xfe30, 0x0000 },
- { 0x9000, 0xfe33, 0x2000 },
- { 0x1100, 0xfe32, 0x0000 },
- { 0x1000, 0xfe34, 0x0000 },
- { 0x9600, 0xfe3d, 0x4000 },
- { 0x9600, 0xfe39, 0x3000 },
- { 0x9600, 0xfe37, 0x2000 },
- { 0x1200, 0xfe36, 0x0000 },
- { 0x1200, 0xfe38, 0x0000 },
- { 0x9600, 0xfe3b, 0x2000 },
- { 0x1200, 0xfe3a, 0x0000 },
- { 0x1200, 0xfe3c, 0x0000 },
- { 0x9600, 0xfe41, 0x3000 },
- { 0x9600, 0xfe3f, 0x2000 },
- { 0x1200, 0xfe3e, 0x0000 },
- { 0x1200, 0xfe40, 0x0000 },
- { 0x9600, 0xfe43, 0x2000 },
- { 0x1200, 0xfe42, 0x0000 },
- { 0x1200, 0xfe44, 0x0000 },
- { 0x9500, 0xfe56, 0x5000 },
- { 0x9000, 0xfe4d, 0x4000 },
- { 0x9500, 0xfe49, 0x3000 },
- { 0x9600, 0xfe47, 0x2000 },
- { 0x1500, 0xfe46, 0x0000 },
- { 0x1200, 0xfe48, 0x0000 },
- { 0x9500, 0xfe4b, 0x2000 },
- { 0x1500, 0xfe4a, 0x0000 },
- { 0x1500, 0xfe4c, 0x0000 },
- { 0x9500, 0xfe51, 0x3000 },
- { 0x9000, 0xfe4f, 0x2000 },
- { 0x1000, 0xfe4e, 0x0000 },
- { 0x1500, 0xfe50, 0x0000 },
- { 0x9500, 0xfe54, 0x2000 },
- { 0x1500, 0xfe52, 0x0000 },
- { 0x1500, 0xfe55, 0x0000 },
- { 0x9200, 0xfe5e, 0x4000 },
- { 0x9200, 0xfe5a, 0x3000 },
- { 0x9100, 0xfe58, 0x2000 },
- { 0x1500, 0xfe57, 0x0000 },
- { 0x1600, 0xfe59, 0x0000 },
- { 0x9200, 0xfe5c, 0x2000 },
- { 0x1600, 0xfe5b, 0x0000 },
- { 0x1600, 0xfe5d, 0x0000 },
- { 0x9900, 0xfe62, 0x3000 },
- { 0x9500, 0xfe60, 0x2000 },
- { 0x1500, 0xfe5f, 0x0000 },
- { 0x1500, 0xfe61, 0x0000 },
- { 0x9900, 0xfe64, 0x2000 },
- { 0x1100, 0xfe63, 0x0000 },
- { 0x1900, 0xfe65, 0x0000 },
- { 0x8700, 0xfe8c, 0x6000 },
- { 0x8700, 0xfe7c, 0x5000 },
- { 0x8700, 0xfe73, 0x4000 },
- { 0x9500, 0xfe6b, 0x3000 },
- { 0x9700, 0xfe69, 0x2000 },
- { 0x1500, 0xfe68, 0x0000 },
- { 0x1500, 0xfe6a, 0x0000 },
- { 0x8700, 0xfe71, 0x2000 },
- { 0x0700, 0xfe70, 0x0000 },
- { 0x0700, 0xfe72, 0x0000 },
- { 0x8700, 0xfe78, 0x3000 },
- { 0x8700, 0xfe76, 0x2000 },
- { 0x0700, 0xfe74, 0x0000 },
- { 0x0700, 0xfe77, 0x0000 },
- { 0x8700, 0xfe7a, 0x2000 },
- { 0x0700, 0xfe79, 0x0000 },
- { 0x0700, 0xfe7b, 0x0000 },
- { 0x8700, 0xfe84, 0x4000 },
- { 0x8700, 0xfe80, 0x3000 },
- { 0x8700, 0xfe7e, 0x2000 },
- { 0x0700, 0xfe7d, 0x0000 },
- { 0x0700, 0xfe7f, 0x0000 },
- { 0x8700, 0xfe82, 0x2000 },
- { 0x0700, 0xfe81, 0x0000 },
- { 0x0700, 0xfe83, 0x0000 },
- { 0x8700, 0xfe88, 0x3000 },
- { 0x8700, 0xfe86, 0x2000 },
- { 0x0700, 0xfe85, 0x0000 },
- { 0x0700, 0xfe87, 0x0000 },
- { 0x8700, 0xfe8a, 0x2000 },
- { 0x0700, 0xfe89, 0x0000 },
- { 0x0700, 0xfe8b, 0x0000 },
- { 0x8700, 0xfe9c, 0x5000 },
- { 0x8700, 0xfe94, 0x4000 },
- { 0x8700, 0xfe90, 0x3000 },
- { 0x8700, 0xfe8e, 0x2000 },
- { 0x0700, 0xfe8d, 0x0000 },
- { 0x0700, 0xfe8f, 0x0000 },
- { 0x8700, 0xfe92, 0x2000 },
- { 0x0700, 0xfe91, 0x0000 },
- { 0x0700, 0xfe93, 0x0000 },
- { 0x8700, 0xfe98, 0x3000 },
- { 0x8700, 0xfe96, 0x2000 },
- { 0x0700, 0xfe95, 0x0000 },
- { 0x0700, 0xfe97, 0x0000 },
- { 0x8700, 0xfe9a, 0x2000 },
- { 0x0700, 0xfe99, 0x0000 },
- { 0x0700, 0xfe9b, 0x0000 },
- { 0x8700, 0xfea4, 0x4000 },
- { 0x8700, 0xfea0, 0x3000 },
- { 0x8700, 0xfe9e, 0x2000 },
- { 0x0700, 0xfe9d, 0x0000 },
- { 0x0700, 0xfe9f, 0x0000 },
- { 0x8700, 0xfea2, 0x2000 },
- { 0x0700, 0xfea1, 0x0000 },
- { 0x0700, 0xfea3, 0x0000 },
- { 0x8700, 0xfea8, 0x3000 },
- { 0x8700, 0xfea6, 0x2000 },
- { 0x0700, 0xfea5, 0x0000 },
- { 0x0700, 0xfea7, 0x0000 },
- { 0x8700, 0xfeaa, 0x2000 },
- { 0x0700, 0xfea9, 0x0000 },
- { 0x0700, 0xfeab, 0x0000 },
- { 0x8700, 0xffaf, 0x9000 },
- { 0x8900, 0xff2f, 0x8020 },
- { 0x8700, 0xfeec, 0x7000 },
- { 0x8700, 0xfecc, 0x6000 },
- { 0x8700, 0xfebc, 0x5000 },
- { 0x8700, 0xfeb4, 0x4000 },
- { 0x8700, 0xfeb0, 0x3000 },
- { 0x8700, 0xfeae, 0x2000 },
- { 0x0700, 0xfead, 0x0000 },
- { 0x0700, 0xfeaf, 0x0000 },
- { 0x8700, 0xfeb2, 0x2000 },
- { 0x0700, 0xfeb1, 0x0000 },
- { 0x0700, 0xfeb3, 0x0000 },
- { 0x8700, 0xfeb8, 0x3000 },
- { 0x8700, 0xfeb6, 0x2000 },
- { 0x0700, 0xfeb5, 0x0000 },
- { 0x0700, 0xfeb7, 0x0000 },
- { 0x8700, 0xfeba, 0x2000 },
- { 0x0700, 0xfeb9, 0x0000 },
- { 0x0700, 0xfebb, 0x0000 },
- { 0x8700, 0xfec4, 0x4000 },
- { 0x8700, 0xfec0, 0x3000 },
- { 0x8700, 0xfebe, 0x2000 },
- { 0x0700, 0xfebd, 0x0000 },
- { 0x0700, 0xfebf, 0x0000 },
- { 0x8700, 0xfec2, 0x2000 },
- { 0x0700, 0xfec1, 0x0000 },
- { 0x0700, 0xfec3, 0x0000 },
- { 0x8700, 0xfec8, 0x3000 },
- { 0x8700, 0xfec6, 0x2000 },
- { 0x0700, 0xfec5, 0x0000 },
- { 0x0700, 0xfec7, 0x0000 },
- { 0x8700, 0xfeca, 0x2000 },
- { 0x0700, 0xfec9, 0x0000 },
- { 0x0700, 0xfecb, 0x0000 },
- { 0x8700, 0xfedc, 0x5000 },
- { 0x8700, 0xfed4, 0x4000 },
- { 0x8700, 0xfed0, 0x3000 },
- { 0x8700, 0xfece, 0x2000 },
- { 0x0700, 0xfecd, 0x0000 },
- { 0x0700, 0xfecf, 0x0000 },
- { 0x8700, 0xfed2, 0x2000 },
- { 0x0700, 0xfed1, 0x0000 },
- { 0x0700, 0xfed3, 0x0000 },
- { 0x8700, 0xfed8, 0x3000 },
- { 0x8700, 0xfed6, 0x2000 },
- { 0x0700, 0xfed5, 0x0000 },
- { 0x0700, 0xfed7, 0x0000 },
- { 0x8700, 0xfeda, 0x2000 },
- { 0x0700, 0xfed9, 0x0000 },
- { 0x0700, 0xfedb, 0x0000 },
- { 0x8700, 0xfee4, 0x4000 },
- { 0x8700, 0xfee0, 0x3000 },
- { 0x8700, 0xfede, 0x2000 },
- { 0x0700, 0xfedd, 0x0000 },
- { 0x0700, 0xfedf, 0x0000 },
- { 0x8700, 0xfee2, 0x2000 },
- { 0x0700, 0xfee1, 0x0000 },
- { 0x0700, 0xfee3, 0x0000 },
- { 0x8700, 0xfee8, 0x3000 },
- { 0x8700, 0xfee6, 0x2000 },
- { 0x0700, 0xfee5, 0x0000 },
- { 0x0700, 0xfee7, 0x0000 },
- { 0x8700, 0xfeea, 0x2000 },
- { 0x0700, 0xfee9, 0x0000 },
- { 0x0700, 0xfeeb, 0x0000 },
- { 0x9500, 0xff0f, 0x6000 },
- { 0x8700, 0xfefc, 0x5000 },
- { 0x8700, 0xfef4, 0x4000 },
- { 0x8700, 0xfef0, 0x3000 },
- { 0x8700, 0xfeee, 0x2000 },
- { 0x0700, 0xfeed, 0x0000 },
- { 0x0700, 0xfeef, 0x0000 },
- { 0x8700, 0xfef2, 0x2000 },
- { 0x0700, 0xfef1, 0x0000 },
- { 0x0700, 0xfef3, 0x0000 },
- { 0x8700, 0xfef8, 0x3000 },
- { 0x8700, 0xfef6, 0x2000 },
- { 0x0700, 0xfef5, 0x0000 },
- { 0x0700, 0xfef7, 0x0000 },
- { 0x8700, 0xfefa, 0x2000 },
- { 0x0700, 0xfef9, 0x0000 },
- { 0x0700, 0xfefb, 0x0000 },
- { 0x9500, 0xff07, 0x4000 },
- { 0x9500, 0xff03, 0x3000 },
- { 0x9500, 0xff01, 0x2000 },
- { 0x0100, 0xfeff, 0x0000 },
- { 0x1500, 0xff02, 0x0000 },
- { 0x9500, 0xff05, 0x2000 },
- { 0x1700, 0xff04, 0x0000 },
- { 0x1500, 0xff06, 0x0000 },
- { 0x9900, 0xff0b, 0x3000 },
- { 0x9200, 0xff09, 0x2000 },
- { 0x1600, 0xff08, 0x0000 },
- { 0x1500, 0xff0a, 0x0000 },
- { 0x9100, 0xff0d, 0x2000 },
- { 0x1500, 0xff0c, 0x0000 },
- { 0x1500, 0xff0e, 0x0000 },
- { 0x9500, 0xff1f, 0x5000 },
- { 0x8d00, 0xff17, 0x4000 },
- { 0x8d00, 0xff13, 0x3000 },
- { 0x8d00, 0xff11, 0x2000 },
- { 0x0d00, 0xff10, 0x0000 },
- { 0x0d00, 0xff12, 0x0000 },
- { 0x8d00, 0xff15, 0x2000 },
- { 0x0d00, 0xff14, 0x0000 },
- { 0x0d00, 0xff16, 0x0000 },
- { 0x9500, 0xff1b, 0x3000 },
- { 0x8d00, 0xff19, 0x2000 },
- { 0x0d00, 0xff18, 0x0000 },
- { 0x1500, 0xff1a, 0x0000 },
- { 0x9900, 0xff1d, 0x2000 },
- { 0x1900, 0xff1c, 0x0000 },
- { 0x1900, 0xff1e, 0x0000 },
- { 0x8900, 0xff27, 0x4020 },
- { 0x8900, 0xff23, 0x3020 },
- { 0x8900, 0xff21, 0x2020 },
- { 0x1500, 0xff20, 0x0000 },
- { 0x0900, 0xff22, 0x0020 },
- { 0x8900, 0xff25, 0x2020 },
- { 0x0900, 0xff24, 0x0020 },
- { 0x0900, 0xff26, 0x0020 },
- { 0x8900, 0xff2b, 0x3020 },
- { 0x8900, 0xff29, 0x2020 },
- { 0x0900, 0xff28, 0x0020 },
- { 0x0900, 0xff2a, 0x0020 },
- { 0x8900, 0xff2d, 0x2020 },
- { 0x0900, 0xff2c, 0x0020 },
- { 0x0900, 0xff2e, 0x0020 },
- { 0x8700, 0xff6f, 0x7000 },
- { 0x8500, 0xff4f, 0x6fe0 },
- { 0x9000, 0xff3f, 0x5000 },
- { 0x8900, 0xff37, 0x4020 },
- { 0x8900, 0xff33, 0x3020 },
- { 0x8900, 0xff31, 0x2020 },
- { 0x0900, 0xff30, 0x0020 },
- { 0x0900, 0xff32, 0x0020 },
- { 0x8900, 0xff35, 0x2020 },
- { 0x0900, 0xff34, 0x0020 },
- { 0x0900, 0xff36, 0x0020 },
- { 0x9600, 0xff3b, 0x3000 },
- { 0x8900, 0xff39, 0x2020 },
- { 0x0900, 0xff38, 0x0020 },
- { 0x0900, 0xff3a, 0x0020 },
- { 0x9200, 0xff3d, 0x2000 },
- { 0x1500, 0xff3c, 0x0000 },
- { 0x1800, 0xff3e, 0x0000 },
- { 0x8500, 0xff47, 0x4fe0 },
- { 0x8500, 0xff43, 0x3fe0 },
- { 0x8500, 0xff41, 0x2fe0 },
- { 0x1800, 0xff40, 0x0000 },
- { 0x0500, 0xff42, 0x0fe0 },
- { 0x8500, 0xff45, 0x2fe0 },
- { 0x0500, 0xff44, 0x0fe0 },
- { 0x0500, 0xff46, 0x0fe0 },
- { 0x8500, 0xff4b, 0x3fe0 },
- { 0x8500, 0xff49, 0x2fe0 },
- { 0x0500, 0xff48, 0x0fe0 },
- { 0x0500, 0xff4a, 0x0fe0 },
- { 0x8500, 0xff4d, 0x2fe0 },
- { 0x0500, 0xff4c, 0x0fe0 },
- { 0x0500, 0xff4e, 0x0fe0 },
- { 0x9600, 0xff5f, 0x5000 },
- { 0x8500, 0xff57, 0x4fe0 },
- { 0x8500, 0xff53, 0x3fe0 },
- { 0x8500, 0xff51, 0x2fe0 },
- { 0x0500, 0xff50, 0x0fe0 },
- { 0x0500, 0xff52, 0x0fe0 },
- { 0x8500, 0xff55, 0x2fe0 },
- { 0x0500, 0xff54, 0x0fe0 },
- { 0x0500, 0xff56, 0x0fe0 },
- { 0x9600, 0xff5b, 0x3000 },
- { 0x8500, 0xff59, 0x2fe0 },
- { 0x0500, 0xff58, 0x0fe0 },
- { 0x0500, 0xff5a, 0x0fe0 },
- { 0x9200, 0xff5d, 0x2000 },
- { 0x1900, 0xff5c, 0x0000 },
- { 0x1900, 0xff5e, 0x0000 },
- { 0x8700, 0xff67, 0x4000 },
- { 0x9200, 0xff63, 0x3000 },
- { 0x9500, 0xff61, 0x2000 },
- { 0x1200, 0xff60, 0x0000 },
- { 0x1600, 0xff62, 0x0000 },
- { 0x9000, 0xff65, 0x2000 },
- { 0x1500, 0xff64, 0x0000 },
- { 0x0700, 0xff66, 0x0000 },
- { 0x8700, 0xff6b, 0x3000 },
- { 0x8700, 0xff69, 0x2000 },
- { 0x0700, 0xff68, 0x0000 },
- { 0x0700, 0xff6a, 0x0000 },
- { 0x8700, 0xff6d, 0x2000 },
- { 0x0700, 0xff6c, 0x0000 },
- { 0x0700, 0xff6e, 0x0000 },
- { 0x8700, 0xff8f, 0x6000 },
- { 0x8700, 0xff7f, 0x5000 },
- { 0x8700, 0xff77, 0x4000 },
- { 0x8700, 0xff73, 0x3000 },
- { 0x8700, 0xff71, 0x2000 },
- { 0x0600, 0xff70, 0x0000 },
- { 0x0700, 0xff72, 0x0000 },
- { 0x8700, 0xff75, 0x2000 },
- { 0x0700, 0xff74, 0x0000 },
- { 0x0700, 0xff76, 0x0000 },
- { 0x8700, 0xff7b, 0x3000 },
- { 0x8700, 0xff79, 0x2000 },
- { 0x0700, 0xff78, 0x0000 },
- { 0x0700, 0xff7a, 0x0000 },
- { 0x8700, 0xff7d, 0x2000 },
- { 0x0700, 0xff7c, 0x0000 },
- { 0x0700, 0xff7e, 0x0000 },
- { 0x8700, 0xff87, 0x4000 },
- { 0x8700, 0xff83, 0x3000 },
- { 0x8700, 0xff81, 0x2000 },
- { 0x0700, 0xff80, 0x0000 },
- { 0x0700, 0xff82, 0x0000 },
- { 0x8700, 0xff85, 0x2000 },
- { 0x0700, 0xff84, 0x0000 },
- { 0x0700, 0xff86, 0x0000 },
- { 0x8700, 0xff8b, 0x3000 },
- { 0x8700, 0xff89, 0x2000 },
- { 0x0700, 0xff88, 0x0000 },
- { 0x0700, 0xff8a, 0x0000 },
- { 0x8700, 0xff8d, 0x2000 },
- { 0x0700, 0xff8c, 0x0000 },
- { 0x0700, 0xff8e, 0x0000 },
- { 0x8600, 0xff9f, 0x5000 },
- { 0x8700, 0xff97, 0x4000 },
- { 0x8700, 0xff93, 0x3000 },
- { 0x8700, 0xff91, 0x2000 },
- { 0x0700, 0xff90, 0x0000 },
- { 0x0700, 0xff92, 0x0000 },
- { 0x8700, 0xff95, 0x2000 },
- { 0x0700, 0xff94, 0x0000 },
- { 0x0700, 0xff96, 0x0000 },
- { 0x8700, 0xff9b, 0x3000 },
- { 0x8700, 0xff99, 0x2000 },
- { 0x0700, 0xff98, 0x0000 },
- { 0x0700, 0xff9a, 0x0000 },
- { 0x8700, 0xff9d, 0x2000 },
- { 0x0700, 0xff9c, 0x0000 },
- { 0x0600, 0xff9e, 0x0000 },
- { 0x8700, 0xffa7, 0x4000 },
- { 0x8700, 0xffa3, 0x3000 },
- { 0x8700, 0xffa1, 0x2000 },
- { 0x0700, 0xffa0, 0x0000 },
- { 0x0700, 0xffa2, 0x0000 },
- { 0x8700, 0xffa5, 0x2000 },
- { 0x0700, 0xffa4, 0x0000 },
- { 0x0700, 0xffa6, 0x0000 },
- { 0x8700, 0xffab, 0x3000 },
- { 0x8700, 0xffa9, 0x2000 },
- { 0x0700, 0xffa8, 0x0000 },
- { 0x0700, 0xffaa, 0x0000 },
- { 0x8700, 0xffad, 0x2000 },
- { 0x0700, 0xffac, 0x0000 },
- { 0x0700, 0xffae, 0x0000 },
- { 0x8701, 0x004c, 0x8000 },
- { 0x8701, 0x0008, 0x7000 },
- { 0x8700, 0xffd6, 0x6000 },
- { 0x8700, 0xffc2, 0x5000 },
- { 0x8700, 0xffb7, 0x4000 },
- { 0x8700, 0xffb3, 0x3000 },
- { 0x8700, 0xffb1, 0x2000 },
- { 0x0700, 0xffb0, 0x0000 },
- { 0x0700, 0xffb2, 0x0000 },
- { 0x8700, 0xffb5, 0x2000 },
- { 0x0700, 0xffb4, 0x0000 },
- { 0x0700, 0xffb6, 0x0000 },
- { 0x8700, 0xffbb, 0x3000 },
- { 0x8700, 0xffb9, 0x2000 },
- { 0x0700, 0xffb8, 0x0000 },
- { 0x0700, 0xffba, 0x0000 },
- { 0x8700, 0xffbd, 0x2000 },
- { 0x0700, 0xffbc, 0x0000 },
- { 0x0700, 0xffbe, 0x0000 },
- { 0x8700, 0xffcc, 0x4000 },
- { 0x8700, 0xffc6, 0x3000 },
- { 0x8700, 0xffc4, 0x2000 },
- { 0x0700, 0xffc3, 0x0000 },
- { 0x0700, 0xffc5, 0x0000 },
- { 0x8700, 0xffca, 0x2000 },
- { 0x0700, 0xffc7, 0x0000 },
- { 0x0700, 0xffcb, 0x0000 },
- { 0x8700, 0xffd2, 0x3000 },
- { 0x8700, 0xffce, 0x2000 },
- { 0x0700, 0xffcd, 0x0000 },
- { 0x0700, 0xffcf, 0x0000 },
- { 0x8700, 0xffd4, 0x2000 },
- { 0x0700, 0xffd3, 0x0000 },
- { 0x0700, 0xffd5, 0x0000 },
- { 0x9900, 0xffec, 0x5000 },
- { 0x9800, 0xffe3, 0x4000 },
- { 0x8700, 0xffdc, 0x3000 },
- { 0x8700, 0xffda, 0x2000 },
- { 0x0700, 0xffd7, 0x0000 },
- { 0x0700, 0xffdb, 0x0000 },
- { 0x9700, 0xffe1, 0x2000 },
- { 0x1700, 0xffe0, 0x0000 },
- { 0x1900, 0xffe2, 0x0000 },
- { 0x9a00, 0xffe8, 0x3000 },
- { 0x9700, 0xffe5, 0x2000 },
- { 0x1a00, 0xffe4, 0x0000 },
- { 0x1700, 0xffe6, 0x0000 },
- { 0x9900, 0xffea, 0x2000 },
- { 0x1900, 0xffe9, 0x0000 },
- { 0x1900, 0xffeb, 0x0000 },
- { 0x8701, 0x0000, 0x4000 },
- { 0x8100, 0xfffa, 0x3000 },
- { 0x9a00, 0xffee, 0x2000 },
- { 0x1a00, 0xffed, 0x0000 },
- { 0x0100, 0xfff9, 0x0000 },
- { 0x9a00, 0xfffc, 0x2000 },
- { 0x0100, 0xfffb, 0x0000 },
- { 0x1a00, 0xfffd, 0x0000 },
- { 0x8701, 0x0004, 0x3000 },
- { 0x8701, 0x0002, 0x2000 },
- { 0x0701, 0x0001, 0x0000 },
- { 0x0701, 0x0003, 0x0000 },
- { 0x8701, 0x0006, 0x2000 },
- { 0x0701, 0x0005, 0x0000 },
- { 0x0701, 0x0007, 0x0000 },
- { 0x8701, 0x002a, 0x6000 },
- { 0x8701, 0x0019, 0x5000 },
- { 0x8701, 0x0011, 0x4000 },
- { 0x8701, 0x000d, 0x3000 },
- { 0x8701, 0x000a, 0x2000 },
- { 0x0701, 0x0009, 0x0000 },
- { 0x0701, 0x000b, 0x0000 },
- { 0x8701, 0x000f, 0x2000 },
- { 0x0701, 0x000e, 0x0000 },
- { 0x0701, 0x0010, 0x0000 },
- { 0x8701, 0x0015, 0x3000 },
- { 0x8701, 0x0013, 0x2000 },
- { 0x0701, 0x0012, 0x0000 },
- { 0x0701, 0x0014, 0x0000 },
- { 0x8701, 0x0017, 0x2000 },
- { 0x0701, 0x0016, 0x0000 },
- { 0x0701, 0x0018, 0x0000 },
- { 0x8701, 0x0021, 0x4000 },
- { 0x8701, 0x001d, 0x3000 },
- { 0x8701, 0x001b, 0x2000 },
- { 0x0701, 0x001a, 0x0000 },
- { 0x0701, 0x001c, 0x0000 },
- { 0x8701, 0x001f, 0x2000 },
- { 0x0701, 0x001e, 0x0000 },
- { 0x0701, 0x0020, 0x0000 },
- { 0x8701, 0x0025, 0x3000 },
- { 0x8701, 0x0023, 0x2000 },
- { 0x0701, 0x0022, 0x0000 },
- { 0x0701, 0x0024, 0x0000 },
- { 0x8701, 0x0028, 0x2000 },
- { 0x0701, 0x0026, 0x0000 },
- { 0x0701, 0x0029, 0x0000 },
- { 0x8701, 0x003a, 0x5000 },
- { 0x8701, 0x0032, 0x4000 },
- { 0x8701, 0x002e, 0x3000 },
- { 0x8701, 0x002c, 0x2000 },
- { 0x0701, 0x002b, 0x0000 },
- { 0x0701, 0x002d, 0x0000 },
- { 0x8701, 0x0030, 0x2000 },
- { 0x0701, 0x002f, 0x0000 },
- { 0x0701, 0x0031, 0x0000 },
- { 0x8701, 0x0036, 0x3000 },
- { 0x8701, 0x0034, 0x2000 },
- { 0x0701, 0x0033, 0x0000 },
- { 0x0701, 0x0035, 0x0000 },
- { 0x8701, 0x0038, 0x2000 },
- { 0x0701, 0x0037, 0x0000 },
- { 0x0701, 0x0039, 0x0000 },
- { 0x8701, 0x0044, 0x4000 },
- { 0x8701, 0x0040, 0x3000 },
- { 0x8701, 0x003d, 0x2000 },
- { 0x0701, 0x003c, 0x0000 },
- { 0x0701, 0x003f, 0x0000 },
- { 0x8701, 0x0042, 0x2000 },
- { 0x0701, 0x0041, 0x0000 },
- { 0x0701, 0x0043, 0x0000 },
- { 0x8701, 0x0048, 0x3000 },
- { 0x8701, 0x0046, 0x2000 },
- { 0x0701, 0x0045, 0x0000 },
- { 0x0701, 0x0047, 0x0000 },
- { 0x8701, 0x004a, 0x2000 },
- { 0x0701, 0x0049, 0x0000 },
- { 0x0701, 0x004b, 0x0000 },
- { 0x8701, 0x00b0, 0x7000 },
- { 0x8701, 0x0090, 0x6000 },
- { 0x8701, 0x0080, 0x5000 },
- { 0x8701, 0x0056, 0x4000 },
- { 0x8701, 0x0052, 0x3000 },
- { 0x8701, 0x0050, 0x2000 },
- { 0x0701, 0x004d, 0x0000 },
- { 0x0701, 0x0051, 0x0000 },
- { 0x8701, 0x0054, 0x2000 },
- { 0x0701, 0x0053, 0x0000 },
- { 0x0701, 0x0055, 0x0000 },
- { 0x8701, 0x005a, 0x3000 },
- { 0x8701, 0x0058, 0x2000 },
- { 0x0701, 0x0057, 0x0000 },
- { 0x0701, 0x0059, 0x0000 },
- { 0x8701, 0x005c, 0x2000 },
- { 0x0701, 0x005b, 0x0000 },
- { 0x0701, 0x005d, 0x0000 },
- { 0x8701, 0x0088, 0x4000 },
- { 0x8701, 0x0084, 0x3000 },
- { 0x8701, 0x0082, 0x2000 },
- { 0x0701, 0x0081, 0x0000 },
- { 0x0701, 0x0083, 0x0000 },
- { 0x8701, 0x0086, 0x2000 },
- { 0x0701, 0x0085, 0x0000 },
- { 0x0701, 0x0087, 0x0000 },
- { 0x8701, 0x008c, 0x3000 },
- { 0x8701, 0x008a, 0x2000 },
- { 0x0701, 0x0089, 0x0000 },
- { 0x0701, 0x008b, 0x0000 },
- { 0x8701, 0x008e, 0x2000 },
- { 0x0701, 0x008d, 0x0000 },
- { 0x0701, 0x008f, 0x0000 },
- { 0x8701, 0x00a0, 0x5000 },
- { 0x8701, 0x0098, 0x4000 },
- { 0x8701, 0x0094, 0x3000 },
- { 0x8701, 0x0092, 0x2000 },
- { 0x0701, 0x0091, 0x0000 },
- { 0x0701, 0x0093, 0x0000 },
- { 0x8701, 0x0096, 0x2000 },
- { 0x0701, 0x0095, 0x0000 },
- { 0x0701, 0x0097, 0x0000 },
- { 0x8701, 0x009c, 0x3000 },
- { 0x8701, 0x009a, 0x2000 },
- { 0x0701, 0x0099, 0x0000 },
- { 0x0701, 0x009b, 0x0000 },
- { 0x8701, 0x009e, 0x2000 },
- { 0x0701, 0x009d, 0x0000 },
- { 0x0701, 0x009f, 0x0000 },
- { 0x8701, 0x00a8, 0x4000 },
- { 0x8701, 0x00a4, 0x3000 },
- { 0x8701, 0x00a2, 0x2000 },
- { 0x0701, 0x00a1, 0x0000 },
- { 0x0701, 0x00a3, 0x0000 },
- { 0x8701, 0x00a6, 0x2000 },
- { 0x0701, 0x00a5, 0x0000 },
- { 0x0701, 0x00a7, 0x0000 },
- { 0x8701, 0x00ac, 0x3000 },
- { 0x8701, 0x00aa, 0x2000 },
- { 0x0701, 0x00a9, 0x0000 },
- { 0x0701, 0x00ab, 0x0000 },
- { 0x8701, 0x00ae, 0x2000 },
- { 0x0701, 0x00ad, 0x0000 },
- { 0x0701, 0x00af, 0x0000 },
- { 0x8701, 0x00d0, 0x6000 },
- { 0x8701, 0x00c0, 0x5000 },
- { 0x8701, 0x00b8, 0x4000 },
- { 0x8701, 0x00b4, 0x3000 },
- { 0x8701, 0x00b2, 0x2000 },
- { 0x0701, 0x00b1, 0x0000 },
- { 0x0701, 0x00b3, 0x0000 },
- { 0x8701, 0x00b6, 0x2000 },
- { 0x0701, 0x00b5, 0x0000 },
- { 0x0701, 0x00b7, 0x0000 },
- { 0x8701, 0x00bc, 0x3000 },
- { 0x8701, 0x00ba, 0x2000 },
- { 0x0701, 0x00b9, 0x0000 },
- { 0x0701, 0x00bb, 0x0000 },
- { 0x8701, 0x00be, 0x2000 },
- { 0x0701, 0x00bd, 0x0000 },
- { 0x0701, 0x00bf, 0x0000 },
- { 0x8701, 0x00c8, 0x4000 },
- { 0x8701, 0x00c4, 0x3000 },
- { 0x8701, 0x00c2, 0x2000 },
- { 0x0701, 0x00c1, 0x0000 },
- { 0x0701, 0x00c3, 0x0000 },
- { 0x8701, 0x00c6, 0x2000 },
- { 0x0701, 0x00c5, 0x0000 },
- { 0x0701, 0x00c7, 0x0000 },
- { 0x8701, 0x00cc, 0x3000 },
- { 0x8701, 0x00ca, 0x2000 },
- { 0x0701, 0x00c9, 0x0000 },
- { 0x0701, 0x00cb, 0x0000 },
- { 0x8701, 0x00ce, 0x2000 },
- { 0x0701, 0x00cd, 0x0000 },
- { 0x0701, 0x00cf, 0x0000 },
- { 0x8701, 0x00e0, 0x5000 },
- { 0x8701, 0x00d8, 0x4000 },
- { 0x8701, 0x00d4, 0x3000 },
- { 0x8701, 0x00d2, 0x2000 },
- { 0x0701, 0x00d1, 0x0000 },
- { 0x0701, 0x00d3, 0x0000 },
- { 0x8701, 0x00d6, 0x2000 },
- { 0x0701, 0x00d5, 0x0000 },
- { 0x0701, 0x00d7, 0x0000 },
- { 0x8701, 0x00dc, 0x3000 },
- { 0x8701, 0x00da, 0x2000 },
- { 0x0701, 0x00d9, 0x0000 },
- { 0x0701, 0x00db, 0x0000 },
- { 0x8701, 0x00de, 0x2000 },
- { 0x0701, 0x00dd, 0x0000 },
- { 0x0701, 0x00df, 0x0000 },
- { 0x8701, 0x00e8, 0x4000 },
- { 0x8701, 0x00e4, 0x3000 },
- { 0x8701, 0x00e2, 0x2000 },
- { 0x0701, 0x00e1, 0x0000 },
- { 0x0701, 0x00e3, 0x0000 },
- { 0x8701, 0x00e6, 0x2000 },
- { 0x0701, 0x00e5, 0x0000 },
- { 0x0701, 0x00e7, 0x0000 },
- { 0x8701, 0x00ec, 0x3000 },
- { 0x8701, 0x00ea, 0x2000 },
- { 0x0701, 0x00e9, 0x0000 },
- { 0x0701, 0x00eb, 0x0000 },
- { 0x8701, 0x00ee, 0x2000 },
- { 0x0701, 0x00ed, 0x0000 },
- { 0x0701, 0x00ef, 0x0000 },
- { 0x8501, 0xd459, 0xb000 },
- { 0x9a01, 0xd080, 0xa000 },
- { 0x8701, 0x045f, 0x9000 },
- { 0x8701, 0x0349, 0x8000 },
- { 0x9a01, 0x013c, 0x7000 },
- { 0x8f01, 0x0119, 0x6000 },
- { 0x8f01, 0x0109, 0x5000 },
- { 0x8701, 0x00f8, 0x4000 },
- { 0x8701, 0x00f4, 0x3000 },
- { 0x8701, 0x00f2, 0x2000 },
- { 0x0701, 0x00f1, 0x0000 },
- { 0x0701, 0x00f3, 0x0000 },
- { 0x8701, 0x00f6, 0x2000 },
- { 0x0701, 0x00f5, 0x0000 },
- { 0x0701, 0x00f7, 0x0000 },
- { 0x9501, 0x0101, 0x3000 },
- { 0x8701, 0x00fa, 0x2000 },
- { 0x0701, 0x00f9, 0x0000 },
- { 0x1501, 0x0100, 0x0000 },
- { 0x8f01, 0x0107, 0x2000 },
- { 0x1a01, 0x0102, 0x0000 },
- { 0x0f01, 0x0108, 0x0000 },
- { 0x8f01, 0x0111, 0x4000 },
- { 0x8f01, 0x010d, 0x3000 },
- { 0x8f01, 0x010b, 0x2000 },
- { 0x0f01, 0x010a, 0x0000 },
- { 0x0f01, 0x010c, 0x0000 },
- { 0x8f01, 0x010f, 0x2000 },
- { 0x0f01, 0x010e, 0x0000 },
- { 0x0f01, 0x0110, 0x0000 },
- { 0x8f01, 0x0115, 0x3000 },
- { 0x8f01, 0x0113, 0x2000 },
- { 0x0f01, 0x0112, 0x0000 },
- { 0x0f01, 0x0114, 0x0000 },
- { 0x8f01, 0x0117, 0x2000 },
- { 0x0f01, 0x0116, 0x0000 },
- { 0x0f01, 0x0118, 0x0000 },
- { 0x8f01, 0x0129, 0x5000 },
- { 0x8f01, 0x0121, 0x4000 },
- { 0x8f01, 0x011d, 0x3000 },
- { 0x8f01, 0x011b, 0x2000 },
- { 0x0f01, 0x011a, 0x0000 },
- { 0x0f01, 0x011c, 0x0000 },
- { 0x8f01, 0x011f, 0x2000 },
- { 0x0f01, 0x011e, 0x0000 },
- { 0x0f01, 0x0120, 0x0000 },
- { 0x8f01, 0x0125, 0x3000 },
- { 0x8f01, 0x0123, 0x2000 },
- { 0x0f01, 0x0122, 0x0000 },
- { 0x0f01, 0x0124, 0x0000 },
- { 0x8f01, 0x0127, 0x2000 },
- { 0x0f01, 0x0126, 0x0000 },
- { 0x0f01, 0x0128, 0x0000 },
- { 0x8f01, 0x0131, 0x4000 },
- { 0x8f01, 0x012d, 0x3000 },
- { 0x8f01, 0x012b, 0x2000 },
- { 0x0f01, 0x012a, 0x0000 },
- { 0x0f01, 0x012c, 0x0000 },
- { 0x8f01, 0x012f, 0x2000 },
- { 0x0f01, 0x012e, 0x0000 },
- { 0x0f01, 0x0130, 0x0000 },
- { 0x9a01, 0x0138, 0x3000 },
- { 0x8f01, 0x0133, 0x2000 },
- { 0x0f01, 0x0132, 0x0000 },
- { 0x1a01, 0x0137, 0x0000 },
- { 0x9a01, 0x013a, 0x2000 },
- { 0x1a01, 0x0139, 0x0000 },
- { 0x1a01, 0x013b, 0x0000 },
- { 0x8701, 0x031c, 0x6000 },
- { 0x8701, 0x030c, 0x5000 },
- { 0x8701, 0x0304, 0x4000 },
- { 0x8701, 0x0300, 0x3000 },
- { 0x9a01, 0x013e, 0x2000 },
- { 0x1a01, 0x013d, 0x0000 },
- { 0x1a01, 0x013f, 0x0000 },
- { 0x8701, 0x0302, 0x2000 },
- { 0x0701, 0x0301, 0x0000 },
- { 0x0701, 0x0303, 0x0000 },
- { 0x8701, 0x0308, 0x3000 },
- { 0x8701, 0x0306, 0x2000 },
- { 0x0701, 0x0305, 0x0000 },
- { 0x0701, 0x0307, 0x0000 },
- { 0x8701, 0x030a, 0x2000 },
- { 0x0701, 0x0309, 0x0000 },
- { 0x0701, 0x030b, 0x0000 },
- { 0x8701, 0x0314, 0x4000 },
- { 0x8701, 0x0310, 0x3000 },
- { 0x8701, 0x030e, 0x2000 },
- { 0x0701, 0x030d, 0x0000 },
- { 0x0701, 0x030f, 0x0000 },
- { 0x8701, 0x0312, 0x2000 },
- { 0x0701, 0x0311, 0x0000 },
- { 0x0701, 0x0313, 0x0000 },
- { 0x8701, 0x0318, 0x3000 },
- { 0x8701, 0x0316, 0x2000 },
- { 0x0701, 0x0315, 0x0000 },
- { 0x0701, 0x0317, 0x0000 },
- { 0x8701, 0x031a, 0x2000 },
- { 0x0701, 0x0319, 0x0000 },
- { 0x0701, 0x031b, 0x0000 },
- { 0x8701, 0x0339, 0x5000 },
- { 0x8701, 0x0331, 0x4000 },
- { 0x8f01, 0x0321, 0x3000 },
- { 0x8701, 0x031e, 0x2000 },
- { 0x0701, 0x031d, 0x0000 },
- { 0x0f01, 0x0320, 0x0000 },
- { 0x8f01, 0x0323, 0x2000 },
- { 0x0f01, 0x0322, 0x0000 },
- { 0x0701, 0x0330, 0x0000 },
- { 0x8701, 0x0335, 0x3000 },
- { 0x8701, 0x0333, 0x2000 },
- { 0x0701, 0x0332, 0x0000 },
- { 0x0701, 0x0334, 0x0000 },
- { 0x8701, 0x0337, 0x2000 },
- { 0x0701, 0x0336, 0x0000 },
- { 0x0701, 0x0338, 0x0000 },
- { 0x8701, 0x0341, 0x4000 },
- { 0x8701, 0x033d, 0x3000 },
- { 0x8701, 0x033b, 0x2000 },
- { 0x0701, 0x033a, 0x0000 },
- { 0x0701, 0x033c, 0x0000 },
- { 0x8701, 0x033f, 0x2000 },
- { 0x0701, 0x033e, 0x0000 },
- { 0x0701, 0x0340, 0x0000 },
- { 0x8701, 0x0345, 0x3000 },
- { 0x8701, 0x0343, 0x2000 },
- { 0x0701, 0x0342, 0x0000 },
- { 0x0701, 0x0344, 0x0000 },
- { 0x8701, 0x0347, 0x2000 },
- { 0x0701, 0x0346, 0x0000 },
- { 0x0701, 0x0348, 0x0000 },
- { 0x8901, 0x041f, 0x7028 },
- { 0x9501, 0x039f, 0x6000 },
- { 0x8701, 0x038e, 0x5000 },
- { 0x8701, 0x0386, 0x4000 },
- { 0x8701, 0x0382, 0x3000 },
- { 0x8701, 0x0380, 0x2000 },
- { 0x0e01, 0x034a, 0x0000 },
- { 0x0701, 0x0381, 0x0000 },
- { 0x8701, 0x0384, 0x2000 },
- { 0x0701, 0x0383, 0x0000 },
- { 0x0701, 0x0385, 0x0000 },
- { 0x8701, 0x038a, 0x3000 },
- { 0x8701, 0x0388, 0x2000 },
- { 0x0701, 0x0387, 0x0000 },
- { 0x0701, 0x0389, 0x0000 },
- { 0x8701, 0x038c, 0x2000 },
- { 0x0701, 0x038b, 0x0000 },
- { 0x0701, 0x038d, 0x0000 },
- { 0x8701, 0x0396, 0x4000 },
- { 0x8701, 0x0392, 0x3000 },
- { 0x8701, 0x0390, 0x2000 },
- { 0x0701, 0x038f, 0x0000 },
- { 0x0701, 0x0391, 0x0000 },
- { 0x8701, 0x0394, 0x2000 },
- { 0x0701, 0x0393, 0x0000 },
- { 0x0701, 0x0395, 0x0000 },
- { 0x8701, 0x039a, 0x3000 },
- { 0x8701, 0x0398, 0x2000 },
- { 0x0701, 0x0397, 0x0000 },
- { 0x0701, 0x0399, 0x0000 },
- { 0x8701, 0x039c, 0x2000 },
- { 0x0701, 0x039b, 0x0000 },
- { 0x0701, 0x039d, 0x0000 },
- { 0x8901, 0x040f, 0x5028 },
- { 0x8901, 0x0407, 0x4028 },
- { 0x8901, 0x0403, 0x3028 },
- { 0x8901, 0x0401, 0x2028 },
- { 0x0901, 0x0400, 0x0028 },
- { 0x0901, 0x0402, 0x0028 },
- { 0x8901, 0x0405, 0x2028 },
- { 0x0901, 0x0404, 0x0028 },
- { 0x0901, 0x0406, 0x0028 },
- { 0x8901, 0x040b, 0x3028 },
- { 0x8901, 0x0409, 0x2028 },
- { 0x0901, 0x0408, 0x0028 },
- { 0x0901, 0x040a, 0x0028 },
- { 0x8901, 0x040d, 0x2028 },
- { 0x0901, 0x040c, 0x0028 },
- { 0x0901, 0x040e, 0x0028 },
- { 0x8901, 0x0417, 0x4028 },
- { 0x8901, 0x0413, 0x3028 },
- { 0x8901, 0x0411, 0x2028 },
- { 0x0901, 0x0410, 0x0028 },
- { 0x0901, 0x0412, 0x0028 },
- { 0x8901, 0x0415, 0x2028 },
- { 0x0901, 0x0414, 0x0028 },
- { 0x0901, 0x0416, 0x0028 },
- { 0x8901, 0x041b, 0x3028 },
- { 0x8901, 0x0419, 0x2028 },
- { 0x0901, 0x0418, 0x0028 },
- { 0x0901, 0x041a, 0x0028 },
- { 0x8901, 0x041d, 0x2028 },
- { 0x0901, 0x041c, 0x0028 },
- { 0x0901, 0x041e, 0x0028 },
- { 0x8501, 0x043f, 0x6fd8 },
- { 0x8501, 0x042f, 0x5fd8 },
- { 0x8901, 0x0427, 0x4028 },
- { 0x8901, 0x0423, 0x3028 },
- { 0x8901, 0x0421, 0x2028 },
- { 0x0901, 0x0420, 0x0028 },
- { 0x0901, 0x0422, 0x0028 },
- { 0x8901, 0x0425, 0x2028 },
- { 0x0901, 0x0424, 0x0028 },
- { 0x0901, 0x0426, 0x0028 },
- { 0x8501, 0x042b, 0x3fd8 },
- { 0x8501, 0x0429, 0x2fd8 },
- { 0x0501, 0x0428, 0x0fd8 },
- { 0x0501, 0x042a, 0x0fd8 },
- { 0x8501, 0x042d, 0x2fd8 },
- { 0x0501, 0x042c, 0x0fd8 },
- { 0x0501, 0x042e, 0x0fd8 },
- { 0x8501, 0x0437, 0x4fd8 },
- { 0x8501, 0x0433, 0x3fd8 },
- { 0x8501, 0x0431, 0x2fd8 },
- { 0x0501, 0x0430, 0x0fd8 },
- { 0x0501, 0x0432, 0x0fd8 },
- { 0x8501, 0x0435, 0x2fd8 },
- { 0x0501, 0x0434, 0x0fd8 },
- { 0x0501, 0x0436, 0x0fd8 },
- { 0x8501, 0x043b, 0x3fd8 },
- { 0x8501, 0x0439, 0x2fd8 },
- { 0x0501, 0x0438, 0x0fd8 },
- { 0x0501, 0x043a, 0x0fd8 },
- { 0x8501, 0x043d, 0x2fd8 },
- { 0x0501, 0x043c, 0x0fd8 },
- { 0x0501, 0x043e, 0x0fd8 },
- { 0x8501, 0x044f, 0x5fd8 },
- { 0x8501, 0x0447, 0x4fd8 },
- { 0x8501, 0x0443, 0x3fd8 },
- { 0x8501, 0x0441, 0x2fd8 },
- { 0x0501, 0x0440, 0x0fd8 },
- { 0x0501, 0x0442, 0x0fd8 },
- { 0x8501, 0x0445, 0x2fd8 },
- { 0x0501, 0x0444, 0x0fd8 },
- { 0x0501, 0x0446, 0x0fd8 },
- { 0x8501, 0x044b, 0x3fd8 },
- { 0x8501, 0x0449, 0x2fd8 },
- { 0x0501, 0x0448, 0x0fd8 },
- { 0x0501, 0x044a, 0x0fd8 },
- { 0x8501, 0x044d, 0x2fd8 },
- { 0x0501, 0x044c, 0x0fd8 },
- { 0x0501, 0x044e, 0x0fd8 },
- { 0x8701, 0x0457, 0x4000 },
- { 0x8701, 0x0453, 0x3000 },
- { 0x8701, 0x0451, 0x2000 },
- { 0x0701, 0x0450, 0x0000 },
- { 0x0701, 0x0452, 0x0000 },
- { 0x8701, 0x0455, 0x2000 },
- { 0x0701, 0x0454, 0x0000 },
- { 0x0701, 0x0456, 0x0000 },
- { 0x8701, 0x045b, 0x3000 },
- { 0x8701, 0x0459, 0x2000 },
- { 0x0701, 0x0458, 0x0000 },
- { 0x0701, 0x045a, 0x0000 },
- { 0x8701, 0x045d, 0x2000 },
- { 0x0701, 0x045c, 0x0000 },
- { 0x0701, 0x045e, 0x0000 },
- { 0x9a01, 0xd000, 0x8000 },
- { 0x8d01, 0x04a1, 0x7000 },
- { 0x8701, 0x047f, 0x6000 },
- { 0x8701, 0x046f, 0x5000 },
- { 0x8701, 0x0467, 0x4000 },
- { 0x8701, 0x0463, 0x3000 },
- { 0x8701, 0x0461, 0x2000 },
- { 0x0701, 0x0460, 0x0000 },
- { 0x0701, 0x0462, 0x0000 },
- { 0x8701, 0x0465, 0x2000 },
- { 0x0701, 0x0464, 0x0000 },
- { 0x0701, 0x0466, 0x0000 },
- { 0x8701, 0x046b, 0x3000 },
- { 0x8701, 0x0469, 0x2000 },
- { 0x0701, 0x0468, 0x0000 },
- { 0x0701, 0x046a, 0x0000 },
- { 0x8701, 0x046d, 0x2000 },
- { 0x0701, 0x046c, 0x0000 },
- { 0x0701, 0x046e, 0x0000 },
- { 0x8701, 0x0477, 0x4000 },
- { 0x8701, 0x0473, 0x3000 },
- { 0x8701, 0x0471, 0x2000 },
- { 0x0701, 0x0470, 0x0000 },
- { 0x0701, 0x0472, 0x0000 },
- { 0x8701, 0x0475, 0x2000 },
- { 0x0701, 0x0474, 0x0000 },
- { 0x0701, 0x0476, 0x0000 },
- { 0x8701, 0x047b, 0x3000 },
- { 0x8701, 0x0479, 0x2000 },
- { 0x0701, 0x0478, 0x0000 },
- { 0x0701, 0x047a, 0x0000 },
- { 0x8701, 0x047d, 0x2000 },
- { 0x0701, 0x047c, 0x0000 },
- { 0x0701, 0x047e, 0x0000 },
- { 0x8701, 0x048f, 0x5000 },
- { 0x8701, 0x0487, 0x4000 },
- { 0x8701, 0x0483, 0x3000 },
- { 0x8701, 0x0481, 0x2000 },
- { 0x0701, 0x0480, 0x0000 },
- { 0x0701, 0x0482, 0x0000 },
- { 0x8701, 0x0485, 0x2000 },
- { 0x0701, 0x0484, 0x0000 },
- { 0x0701, 0x0486, 0x0000 },
- { 0x8701, 0x048b, 0x3000 },
- { 0x8701, 0x0489, 0x2000 },
- { 0x0701, 0x0488, 0x0000 },
- { 0x0701, 0x048a, 0x0000 },
- { 0x8701, 0x048d, 0x2000 },
- { 0x0701, 0x048c, 0x0000 },
- { 0x0701, 0x048e, 0x0000 },
- { 0x8701, 0x0497, 0x4000 },
- { 0x8701, 0x0493, 0x3000 },
- { 0x8701, 0x0491, 0x2000 },
- { 0x0701, 0x0490, 0x0000 },
- { 0x0701, 0x0492, 0x0000 },
- { 0x8701, 0x0495, 0x2000 },
- { 0x0701, 0x0494, 0x0000 },
- { 0x0701, 0x0496, 0x0000 },
- { 0x8701, 0x049b, 0x3000 },
- { 0x8701, 0x0499, 0x2000 },
- { 0x0701, 0x0498, 0x0000 },
- { 0x0701, 0x049a, 0x0000 },
- { 0x8701, 0x049d, 0x2000 },
- { 0x0701, 0x049c, 0x0000 },
- { 0x0d01, 0x04a0, 0x0000 },
- { 0x8701, 0x081a, 0x6000 },
- { 0x8701, 0x080a, 0x5000 },
- { 0x8d01, 0x04a9, 0x4000 },
- { 0x8d01, 0x04a5, 0x3000 },
- { 0x8d01, 0x04a3, 0x2000 },
- { 0x0d01, 0x04a2, 0x0000 },
- { 0x0d01, 0x04a4, 0x0000 },
- { 0x8d01, 0x04a7, 0x2000 },
- { 0x0d01, 0x04a6, 0x0000 },
- { 0x0d01, 0x04a8, 0x0000 },
- { 0x8701, 0x0803, 0x3000 },
- { 0x8701, 0x0801, 0x2000 },
- { 0x0701, 0x0800, 0x0000 },
- { 0x0701, 0x0802, 0x0000 },
- { 0x8701, 0x0805, 0x2000 },
- { 0x0701, 0x0804, 0x0000 },
- { 0x0701, 0x0808, 0x0000 },
- { 0x8701, 0x0812, 0x4000 },
- { 0x8701, 0x080e, 0x3000 },
- { 0x8701, 0x080c, 0x2000 },
- { 0x0701, 0x080b, 0x0000 },
- { 0x0701, 0x080d, 0x0000 },
- { 0x8701, 0x0810, 0x2000 },
- { 0x0701, 0x080f, 0x0000 },
- { 0x0701, 0x0811, 0x0000 },
- { 0x8701, 0x0816, 0x3000 },
- { 0x8701, 0x0814, 0x2000 },
- { 0x0701, 0x0813, 0x0000 },
- { 0x0701, 0x0815, 0x0000 },
- { 0x8701, 0x0818, 0x2000 },
- { 0x0701, 0x0817, 0x0000 },
- { 0x0701, 0x0819, 0x0000 },
- { 0x8701, 0x082a, 0x5000 },
- { 0x8701, 0x0822, 0x4000 },
- { 0x8701, 0x081e, 0x3000 },
- { 0x8701, 0x081c, 0x2000 },
- { 0x0701, 0x081b, 0x0000 },
- { 0x0701, 0x081d, 0x0000 },
- { 0x8701, 0x0820, 0x2000 },
- { 0x0701, 0x081f, 0x0000 },
- { 0x0701, 0x0821, 0x0000 },
- { 0x8701, 0x0826, 0x3000 },
- { 0x8701, 0x0824, 0x2000 },
- { 0x0701, 0x0823, 0x0000 },
- { 0x0701, 0x0825, 0x0000 },
- { 0x8701, 0x0828, 0x2000 },
- { 0x0701, 0x0827, 0x0000 },
- { 0x0701, 0x0829, 0x0000 },
- { 0x8701, 0x0832, 0x4000 },
- { 0x8701, 0x082e, 0x3000 },
- { 0x8701, 0x082c, 0x2000 },
- { 0x0701, 0x082b, 0x0000 },
- { 0x0701, 0x082d, 0x0000 },
- { 0x8701, 0x0830, 0x2000 },
- { 0x0701, 0x082f, 0x0000 },
- { 0x0701, 0x0831, 0x0000 },
- { 0x8701, 0x0837, 0x3000 },
- { 0x8701, 0x0834, 0x2000 },
- { 0x0701, 0x0833, 0x0000 },
- { 0x0701, 0x0835, 0x0000 },
- { 0x8701, 0x083c, 0x2000 },
- { 0x0701, 0x0838, 0x0000 },
- { 0x0701, 0x083f, 0x0000 },
- { 0x9a01, 0xd040, 0x7000 },
- { 0x9a01, 0xd020, 0x6000 },
- { 0x9a01, 0xd010, 0x5000 },
- { 0x9a01, 0xd008, 0x4000 },
- { 0x9a01, 0xd004, 0x3000 },
- { 0x9a01, 0xd002, 0x2000 },
- { 0x1a01, 0xd001, 0x0000 },
- { 0x1a01, 0xd003, 0x0000 },
- { 0x9a01, 0xd006, 0x2000 },
- { 0x1a01, 0xd005, 0x0000 },
- { 0x1a01, 0xd007, 0x0000 },
- { 0x9a01, 0xd00c, 0x3000 },
- { 0x9a01, 0xd00a, 0x2000 },
- { 0x1a01, 0xd009, 0x0000 },
- { 0x1a01, 0xd00b, 0x0000 },
- { 0x9a01, 0xd00e, 0x2000 },
- { 0x1a01, 0xd00d, 0x0000 },
- { 0x1a01, 0xd00f, 0x0000 },
- { 0x9a01, 0xd018, 0x4000 },
- { 0x9a01, 0xd014, 0x3000 },
- { 0x9a01, 0xd012, 0x2000 },
- { 0x1a01, 0xd011, 0x0000 },
- { 0x1a01, 0xd013, 0x0000 },
- { 0x9a01, 0xd016, 0x2000 },
- { 0x1a01, 0xd015, 0x0000 },
- { 0x1a01, 0xd017, 0x0000 },
- { 0x9a01, 0xd01c, 0x3000 },
- { 0x9a01, 0xd01a, 0x2000 },
- { 0x1a01, 0xd019, 0x0000 },
- { 0x1a01, 0xd01b, 0x0000 },
- { 0x9a01, 0xd01e, 0x2000 },
- { 0x1a01, 0xd01d, 0x0000 },
- { 0x1a01, 0xd01f, 0x0000 },
- { 0x9a01, 0xd030, 0x5000 },
- { 0x9a01, 0xd028, 0x4000 },
- { 0x9a01, 0xd024, 0x3000 },
- { 0x9a01, 0xd022, 0x2000 },
- { 0x1a01, 0xd021, 0x0000 },
- { 0x1a01, 0xd023, 0x0000 },
- { 0x9a01, 0xd026, 0x2000 },
- { 0x1a01, 0xd025, 0x0000 },
- { 0x1a01, 0xd027, 0x0000 },
- { 0x9a01, 0xd02c, 0x3000 },
- { 0x9a01, 0xd02a, 0x2000 },
- { 0x1a01, 0xd029, 0x0000 },
- { 0x1a01, 0xd02b, 0x0000 },
- { 0x9a01, 0xd02e, 0x2000 },
- { 0x1a01, 0xd02d, 0x0000 },
- { 0x1a01, 0xd02f, 0x0000 },
- { 0x9a01, 0xd038, 0x4000 },
- { 0x9a01, 0xd034, 0x3000 },
- { 0x9a01, 0xd032, 0x2000 },
- { 0x1a01, 0xd031, 0x0000 },
- { 0x1a01, 0xd033, 0x0000 },
- { 0x9a01, 0xd036, 0x2000 },
- { 0x1a01, 0xd035, 0x0000 },
- { 0x1a01, 0xd037, 0x0000 },
- { 0x9a01, 0xd03c, 0x3000 },
- { 0x9a01, 0xd03a, 0x2000 },
- { 0x1a01, 0xd039, 0x0000 },
- { 0x1a01, 0xd03b, 0x0000 },
- { 0x9a01, 0xd03e, 0x2000 },
- { 0x1a01, 0xd03d, 0x0000 },
- { 0x1a01, 0xd03f, 0x0000 },
- { 0x9a01, 0xd060, 0x6000 },
- { 0x9a01, 0xd050, 0x5000 },
- { 0x9a01, 0xd048, 0x4000 },
- { 0x9a01, 0xd044, 0x3000 },
- { 0x9a01, 0xd042, 0x2000 },
- { 0x1a01, 0xd041, 0x0000 },
- { 0x1a01, 0xd043, 0x0000 },
- { 0x9a01, 0xd046, 0x2000 },
- { 0x1a01, 0xd045, 0x0000 },
- { 0x1a01, 0xd047, 0x0000 },
- { 0x9a01, 0xd04c, 0x3000 },
- { 0x9a01, 0xd04a, 0x2000 },
- { 0x1a01, 0xd049, 0x0000 },
- { 0x1a01, 0xd04b, 0x0000 },
- { 0x9a01, 0xd04e, 0x2000 },
- { 0x1a01, 0xd04d, 0x0000 },
- { 0x1a01, 0xd04f, 0x0000 },
- { 0x9a01, 0xd058, 0x4000 },
- { 0x9a01, 0xd054, 0x3000 },
- { 0x9a01, 0xd052, 0x2000 },
- { 0x1a01, 0xd051, 0x0000 },
- { 0x1a01, 0xd053, 0x0000 },
- { 0x9a01, 0xd056, 0x2000 },
- { 0x1a01, 0xd055, 0x0000 },
- { 0x1a01, 0xd057, 0x0000 },
- { 0x9a01, 0xd05c, 0x3000 },
- { 0x9a01, 0xd05a, 0x2000 },
- { 0x1a01, 0xd059, 0x0000 },
- { 0x1a01, 0xd05b, 0x0000 },
- { 0x9a01, 0xd05e, 0x2000 },
- { 0x1a01, 0xd05d, 0x0000 },
- { 0x1a01, 0xd05f, 0x0000 },
- { 0x9a01, 0xd070, 0x5000 },
- { 0x9a01, 0xd068, 0x4000 },
- { 0x9a01, 0xd064, 0x3000 },
- { 0x9a01, 0xd062, 0x2000 },
- { 0x1a01, 0xd061, 0x0000 },
- { 0x1a01, 0xd063, 0x0000 },
- { 0x9a01, 0xd066, 0x2000 },
- { 0x1a01, 0xd065, 0x0000 },
- { 0x1a01, 0xd067, 0x0000 },
- { 0x9a01, 0xd06c, 0x3000 },
- { 0x9a01, 0xd06a, 0x2000 },
- { 0x1a01, 0xd069, 0x0000 },
- { 0x1a01, 0xd06b, 0x0000 },
- { 0x9a01, 0xd06e, 0x2000 },
- { 0x1a01, 0xd06d, 0x0000 },
- { 0x1a01, 0xd06f, 0x0000 },
- { 0x9a01, 0xd078, 0x4000 },
- { 0x9a01, 0xd074, 0x3000 },
- { 0x9a01, 0xd072, 0x2000 },
- { 0x1a01, 0xd071, 0x0000 },
- { 0x1a01, 0xd073, 0x0000 },
- { 0x9a01, 0xd076, 0x2000 },
- { 0x1a01, 0xd075, 0x0000 },
- { 0x1a01, 0xd077, 0x0000 },
- { 0x9a01, 0xd07c, 0x3000 },
- { 0x9a01, 0xd07a, 0x2000 },
- { 0x1a01, 0xd079, 0x0000 },
- { 0x1a01, 0xd07b, 0x0000 },
- { 0x9a01, 0xd07e, 0x2000 },
- { 0x1a01, 0xd07d, 0x0000 },
- { 0x1a01, 0xd07f, 0x0000 },
- { 0x9a01, 0xd18d, 0x9000 },
- { 0x9a01, 0xd10a, 0x8000 },
- { 0x9a01, 0xd0c0, 0x7000 },
- { 0x9a01, 0xd0a0, 0x6000 },
- { 0x9a01, 0xd090, 0x5000 },
- { 0x9a01, 0xd088, 0x4000 },
- { 0x9a01, 0xd084, 0x3000 },
- { 0x9a01, 0xd082, 0x2000 },
- { 0x1a01, 0xd081, 0x0000 },
- { 0x1a01, 0xd083, 0x0000 },
- { 0x9a01, 0xd086, 0x2000 },
- { 0x1a01, 0xd085, 0x0000 },
- { 0x1a01, 0xd087, 0x0000 },
- { 0x9a01, 0xd08c, 0x3000 },
- { 0x9a01, 0xd08a, 0x2000 },
- { 0x1a01, 0xd089, 0x0000 },
- { 0x1a01, 0xd08b, 0x0000 },
- { 0x9a01, 0xd08e, 0x2000 },
- { 0x1a01, 0xd08d, 0x0000 },
- { 0x1a01, 0xd08f, 0x0000 },
- { 0x9a01, 0xd098, 0x4000 },
- { 0x9a01, 0xd094, 0x3000 },
- { 0x9a01, 0xd092, 0x2000 },
- { 0x1a01, 0xd091, 0x0000 },
- { 0x1a01, 0xd093, 0x0000 },
- { 0x9a01, 0xd096, 0x2000 },
- { 0x1a01, 0xd095, 0x0000 },
- { 0x1a01, 0xd097, 0x0000 },
- { 0x9a01, 0xd09c, 0x3000 },
- { 0x9a01, 0xd09a, 0x2000 },
- { 0x1a01, 0xd099, 0x0000 },
- { 0x1a01, 0xd09b, 0x0000 },
- { 0x9a01, 0xd09e, 0x2000 },
- { 0x1a01, 0xd09d, 0x0000 },
- { 0x1a01, 0xd09f, 0x0000 },
- { 0x9a01, 0xd0b0, 0x5000 },
- { 0x9a01, 0xd0a8, 0x4000 },
- { 0x9a01, 0xd0a4, 0x3000 },
- { 0x9a01, 0xd0a2, 0x2000 },
- { 0x1a01, 0xd0a1, 0x0000 },
- { 0x1a01, 0xd0a3, 0x0000 },
- { 0x9a01, 0xd0a6, 0x2000 },
- { 0x1a01, 0xd0a5, 0x0000 },
- { 0x1a01, 0xd0a7, 0x0000 },
- { 0x9a01, 0xd0ac, 0x3000 },
- { 0x9a01, 0xd0aa, 0x2000 },
- { 0x1a01, 0xd0a9, 0x0000 },
- { 0x1a01, 0xd0ab, 0x0000 },
- { 0x9a01, 0xd0ae, 0x2000 },
- { 0x1a01, 0xd0ad, 0x0000 },
- { 0x1a01, 0xd0af, 0x0000 },
- { 0x9a01, 0xd0b8, 0x4000 },
- { 0x9a01, 0xd0b4, 0x3000 },
- { 0x9a01, 0xd0b2, 0x2000 },
- { 0x1a01, 0xd0b1, 0x0000 },
- { 0x1a01, 0xd0b3, 0x0000 },
- { 0x9a01, 0xd0b6, 0x2000 },
- { 0x1a01, 0xd0b5, 0x0000 },
- { 0x1a01, 0xd0b7, 0x0000 },
- { 0x9a01, 0xd0bc, 0x3000 },
- { 0x9a01, 0xd0ba, 0x2000 },
- { 0x1a01, 0xd0b9, 0x0000 },
- { 0x1a01, 0xd0bb, 0x0000 },
- { 0x9a01, 0xd0be, 0x2000 },
- { 0x1a01, 0xd0bd, 0x0000 },
- { 0x1a01, 0xd0bf, 0x0000 },
- { 0x9a01, 0xd0e0, 0x6000 },
- { 0x9a01, 0xd0d0, 0x5000 },
- { 0x9a01, 0xd0c8, 0x4000 },
- { 0x9a01, 0xd0c4, 0x3000 },
- { 0x9a01, 0xd0c2, 0x2000 },
- { 0x1a01, 0xd0c1, 0x0000 },
- { 0x1a01, 0xd0c3, 0x0000 },
- { 0x9a01, 0xd0c6, 0x2000 },
- { 0x1a01, 0xd0c5, 0x0000 },
- { 0x1a01, 0xd0c7, 0x0000 },
- { 0x9a01, 0xd0cc, 0x3000 },
- { 0x9a01, 0xd0ca, 0x2000 },
- { 0x1a01, 0xd0c9, 0x0000 },
- { 0x1a01, 0xd0cb, 0x0000 },
- { 0x9a01, 0xd0ce, 0x2000 },
- { 0x1a01, 0xd0cd, 0x0000 },
- { 0x1a01, 0xd0cf, 0x0000 },
- { 0x9a01, 0xd0d8, 0x4000 },
- { 0x9a01, 0xd0d4, 0x3000 },
- { 0x9a01, 0xd0d2, 0x2000 },
- { 0x1a01, 0xd0d1, 0x0000 },
- { 0x1a01, 0xd0d3, 0x0000 },
- { 0x9a01, 0xd0d6, 0x2000 },
- { 0x1a01, 0xd0d5, 0x0000 },
- { 0x1a01, 0xd0d7, 0x0000 },
- { 0x9a01, 0xd0dc, 0x3000 },
- { 0x9a01, 0xd0da, 0x2000 },
- { 0x1a01, 0xd0d9, 0x0000 },
- { 0x1a01, 0xd0db, 0x0000 },
- { 0x9a01, 0xd0de, 0x2000 },
- { 0x1a01, 0xd0dd, 0x0000 },
- { 0x1a01, 0xd0df, 0x0000 },
- { 0x9a01, 0xd0f0, 0x5000 },
- { 0x9a01, 0xd0e8, 0x4000 },
- { 0x9a01, 0xd0e4, 0x3000 },
- { 0x9a01, 0xd0e2, 0x2000 },
- { 0x1a01, 0xd0e1, 0x0000 },
- { 0x1a01, 0xd0e3, 0x0000 },
- { 0x9a01, 0xd0e6, 0x2000 },
- { 0x1a01, 0xd0e5, 0x0000 },
- { 0x1a01, 0xd0e7, 0x0000 },
- { 0x9a01, 0xd0ec, 0x3000 },
- { 0x9a01, 0xd0ea, 0x2000 },
- { 0x1a01, 0xd0e9, 0x0000 },
- { 0x1a01, 0xd0eb, 0x0000 },
- { 0x9a01, 0xd0ee, 0x2000 },
- { 0x1a01, 0xd0ed, 0x0000 },
- { 0x1a01, 0xd0ef, 0x0000 },
- { 0x9a01, 0xd102, 0x4000 },
- { 0x9a01, 0xd0f4, 0x3000 },
- { 0x9a01, 0xd0f2, 0x2000 },
- { 0x1a01, 0xd0f1, 0x0000 },
- { 0x1a01, 0xd0f3, 0x0000 },
- { 0x9a01, 0xd100, 0x2000 },
- { 0x1a01, 0xd0f5, 0x0000 },
- { 0x1a01, 0xd101, 0x0000 },
- { 0x9a01, 0xd106, 0x3000 },
- { 0x9a01, 0xd104, 0x2000 },
- { 0x1a01, 0xd103, 0x0000 },
- { 0x1a01, 0xd105, 0x0000 },
- { 0x9a01, 0xd108, 0x2000 },
- { 0x1a01, 0xd107, 0x0000 },
- { 0x1a01, 0xd109, 0x0000 },
- { 0x9a01, 0xd14d, 0x7000 },
- { 0x9a01, 0xd12d, 0x6000 },
- { 0x9a01, 0xd11a, 0x5000 },
- { 0x9a01, 0xd112, 0x4000 },
- { 0x9a01, 0xd10e, 0x3000 },
- { 0x9a01, 0xd10c, 0x2000 },
- { 0x1a01, 0xd10b, 0x0000 },
- { 0x1a01, 0xd10d, 0x0000 },
- { 0x9a01, 0xd110, 0x2000 },
- { 0x1a01, 0xd10f, 0x0000 },
- { 0x1a01, 0xd111, 0x0000 },
- { 0x9a01, 0xd116, 0x3000 },
- { 0x9a01, 0xd114, 0x2000 },
- { 0x1a01, 0xd113, 0x0000 },
- { 0x1a01, 0xd115, 0x0000 },
- { 0x9a01, 0xd118, 0x2000 },
- { 0x1a01, 0xd117, 0x0000 },
- { 0x1a01, 0xd119, 0x0000 },
- { 0x9a01, 0xd122, 0x4000 },
- { 0x9a01, 0xd11e, 0x3000 },
- { 0x9a01, 0xd11c, 0x2000 },
- { 0x1a01, 0xd11b, 0x0000 },
- { 0x1a01, 0xd11d, 0x0000 },
- { 0x9a01, 0xd120, 0x2000 },
- { 0x1a01, 0xd11f, 0x0000 },
- { 0x1a01, 0xd121, 0x0000 },
- { 0x9a01, 0xd126, 0x3000 },
- { 0x9a01, 0xd124, 0x2000 },
- { 0x1a01, 0xd123, 0x0000 },
- { 0x1a01, 0xd125, 0x0000 },
- { 0x9a01, 0xd12b, 0x2000 },
- { 0x1a01, 0xd12a, 0x0000 },
- { 0x1a01, 0xd12c, 0x0000 },
- { 0x9a01, 0xd13d, 0x5000 },
- { 0x9a01, 0xd135, 0x4000 },
- { 0x9a01, 0xd131, 0x3000 },
- { 0x9a01, 0xd12f, 0x2000 },
- { 0x1a01, 0xd12e, 0x0000 },
- { 0x1a01, 0xd130, 0x0000 },
- { 0x9a01, 0xd133, 0x2000 },
- { 0x1a01, 0xd132, 0x0000 },
- { 0x1a01, 0xd134, 0x0000 },
- { 0x9a01, 0xd139, 0x3000 },
- { 0x9a01, 0xd137, 0x2000 },
- { 0x1a01, 0xd136, 0x0000 },
- { 0x1a01, 0xd138, 0x0000 },
- { 0x9a01, 0xd13b, 0x2000 },
- { 0x1a01, 0xd13a, 0x0000 },
- { 0x1a01, 0xd13c, 0x0000 },
- { 0x9a01, 0xd145, 0x4000 },
- { 0x9a01, 0xd141, 0x3000 },
- { 0x9a01, 0xd13f, 0x2000 },
- { 0x1a01, 0xd13e, 0x0000 },
- { 0x1a01, 0xd140, 0x0000 },
- { 0x9a01, 0xd143, 0x2000 },
- { 0x1a01, 0xd142, 0x0000 },
- { 0x1a01, 0xd144, 0x0000 },
- { 0x9a01, 0xd149, 0x3000 },
- { 0x9a01, 0xd147, 0x2000 },
- { 0x1a01, 0xd146, 0x0000 },
- { 0x1a01, 0xd148, 0x0000 },
- { 0x9a01, 0xd14b, 0x2000 },
- { 0x1a01, 0xd14a, 0x0000 },
- { 0x1a01, 0xd14c, 0x0000 },
- { 0x8a01, 0xd16d, 0x6000 },
- { 0x9a01, 0xd15d, 0x5000 },
- { 0x9a01, 0xd155, 0x4000 },
- { 0x9a01, 0xd151, 0x3000 },
- { 0x9a01, 0xd14f, 0x2000 },
- { 0x1a01, 0xd14e, 0x0000 },
- { 0x1a01, 0xd150, 0x0000 },
- { 0x9a01, 0xd153, 0x2000 },
- { 0x1a01, 0xd152, 0x0000 },
- { 0x1a01, 0xd154, 0x0000 },
- { 0x9a01, 0xd159, 0x3000 },
- { 0x9a01, 0xd157, 0x2000 },
- { 0x1a01, 0xd156, 0x0000 },
- { 0x1a01, 0xd158, 0x0000 },
- { 0x9a01, 0xd15b, 0x2000 },
- { 0x1a01, 0xd15a, 0x0000 },
- { 0x1a01, 0xd15c, 0x0000 },
- { 0x8a01, 0xd165, 0x4000 },
- { 0x9a01, 0xd161, 0x3000 },
- { 0x9a01, 0xd15f, 0x2000 },
- { 0x1a01, 0xd15e, 0x0000 },
- { 0x1a01, 0xd160, 0x0000 },
- { 0x9a01, 0xd163, 0x2000 },
- { 0x1a01, 0xd162, 0x0000 },
- { 0x1a01, 0xd164, 0x0000 },
- { 0x8c01, 0xd169, 0x3000 },
- { 0x8c01, 0xd167, 0x2000 },
- { 0x0a01, 0xd166, 0x0000 },
- { 0x0c01, 0xd168, 0x0000 },
- { 0x9a01, 0xd16b, 0x2000 },
- { 0x1a01, 0xd16a, 0x0000 },
- { 0x1a01, 0xd16c, 0x0000 },
- { 0x8c01, 0xd17d, 0x5000 },
- { 0x8101, 0xd175, 0x4000 },
- { 0x8a01, 0xd171, 0x3000 },
- { 0x8a01, 0xd16f, 0x2000 },
- { 0x0a01, 0xd16e, 0x0000 },
- { 0x0a01, 0xd170, 0x0000 },
- { 0x8101, 0xd173, 0x2000 },
- { 0x0a01, 0xd172, 0x0000 },
- { 0x0101, 0xd174, 0x0000 },
- { 0x8101, 0xd179, 0x3000 },
- { 0x8101, 0xd177, 0x2000 },
- { 0x0101, 0xd176, 0x0000 },
- { 0x0101, 0xd178, 0x0000 },
- { 0x8c01, 0xd17b, 0x2000 },
- { 0x0101, 0xd17a, 0x0000 },
- { 0x0c01, 0xd17c, 0x0000 },
- { 0x8c01, 0xd185, 0x4000 },
- { 0x8c01, 0xd181, 0x3000 },
- { 0x8c01, 0xd17f, 0x2000 },
- { 0x0c01, 0xd17e, 0x0000 },
- { 0x0c01, 0xd180, 0x0000 },
- { 0x9a01, 0xd183, 0x2000 },
- { 0x0c01, 0xd182, 0x0000 },
- { 0x1a01, 0xd184, 0x0000 },
- { 0x8c01, 0xd189, 0x3000 },
- { 0x8c01, 0xd187, 0x2000 },
- { 0x0c01, 0xd186, 0x0000 },
- { 0x0c01, 0xd188, 0x0000 },
- { 0x8c01, 0xd18b, 0x2000 },
- { 0x0c01, 0xd18a, 0x0000 },
- { 0x1a01, 0xd18c, 0x0000 },
- { 0x9a01, 0xd32f, 0x8000 },
- { 0x9a01, 0xd1cd, 0x7000 },
- { 0x8c01, 0xd1ad, 0x6000 },
- { 0x9a01, 0xd19d, 0x5000 },
- { 0x9a01, 0xd195, 0x4000 },
- { 0x9a01, 0xd191, 0x3000 },
- { 0x9a01, 0xd18f, 0x2000 },
- { 0x1a01, 0xd18e, 0x0000 },
- { 0x1a01, 0xd190, 0x0000 },
- { 0x9a01, 0xd193, 0x2000 },
- { 0x1a01, 0xd192, 0x0000 },
- { 0x1a01, 0xd194, 0x0000 },
- { 0x9a01, 0xd199, 0x3000 },
- { 0x9a01, 0xd197, 0x2000 },
- { 0x1a01, 0xd196, 0x0000 },
- { 0x1a01, 0xd198, 0x0000 },
- { 0x9a01, 0xd19b, 0x2000 },
- { 0x1a01, 0xd19a, 0x0000 },
- { 0x1a01, 0xd19c, 0x0000 },
- { 0x9a01, 0xd1a5, 0x4000 },
- { 0x9a01, 0xd1a1, 0x3000 },
- { 0x9a01, 0xd19f, 0x2000 },
- { 0x1a01, 0xd19e, 0x0000 },
- { 0x1a01, 0xd1a0, 0x0000 },
- { 0x9a01, 0xd1a3, 0x2000 },
- { 0x1a01, 0xd1a2, 0x0000 },
- { 0x1a01, 0xd1a4, 0x0000 },
- { 0x9a01, 0xd1a9, 0x3000 },
- { 0x9a01, 0xd1a7, 0x2000 },
- { 0x1a01, 0xd1a6, 0x0000 },
- { 0x1a01, 0xd1a8, 0x0000 },
- { 0x8c01, 0xd1ab, 0x2000 },
- { 0x0c01, 0xd1aa, 0x0000 },
- { 0x0c01, 0xd1ac, 0x0000 },
- { 0x9a01, 0xd1bd, 0x5000 },
- { 0x9a01, 0xd1b5, 0x4000 },
- { 0x9a01, 0xd1b1, 0x3000 },
- { 0x9a01, 0xd1af, 0x2000 },
- { 0x1a01, 0xd1ae, 0x0000 },
- { 0x1a01, 0xd1b0, 0x0000 },
- { 0x9a01, 0xd1b3, 0x2000 },
- { 0x1a01, 0xd1b2, 0x0000 },
- { 0x1a01, 0xd1b4, 0x0000 },
- { 0x9a01, 0xd1b9, 0x3000 },
- { 0x9a01, 0xd1b7, 0x2000 },
- { 0x1a01, 0xd1b6, 0x0000 },
- { 0x1a01, 0xd1b8, 0x0000 },
- { 0x9a01, 0xd1bb, 0x2000 },
- { 0x1a01, 0xd1ba, 0x0000 },
- { 0x1a01, 0xd1bc, 0x0000 },
- { 0x9a01, 0xd1c5, 0x4000 },
- { 0x9a01, 0xd1c1, 0x3000 },
- { 0x9a01, 0xd1bf, 0x2000 },
- { 0x1a01, 0xd1be, 0x0000 },
- { 0x1a01, 0xd1c0, 0x0000 },
- { 0x9a01, 0xd1c3, 0x2000 },
- { 0x1a01, 0xd1c2, 0x0000 },
- { 0x1a01, 0xd1c4, 0x0000 },
- { 0x9a01, 0xd1c9, 0x3000 },
- { 0x9a01, 0xd1c7, 0x2000 },
- { 0x1a01, 0xd1c6, 0x0000 },
- { 0x1a01, 0xd1c8, 0x0000 },
- { 0x9a01, 0xd1cb, 0x2000 },
- { 0x1a01, 0xd1ca, 0x0000 },
- { 0x1a01, 0xd1cc, 0x0000 },
- { 0x9a01, 0xd30f, 0x6000 },
- { 0x9a01, 0xd1dd, 0x5000 },
- { 0x9a01, 0xd1d5, 0x4000 },
- { 0x9a01, 0xd1d1, 0x3000 },
- { 0x9a01, 0xd1cf, 0x2000 },
- { 0x1a01, 0xd1ce, 0x0000 },
- { 0x1a01, 0xd1d0, 0x0000 },
- { 0x9a01, 0xd1d3, 0x2000 },
- { 0x1a01, 0xd1d2, 0x0000 },
- { 0x1a01, 0xd1d4, 0x0000 },
- { 0x9a01, 0xd1d9, 0x3000 },
- { 0x9a01, 0xd1d7, 0x2000 },
- { 0x1a01, 0xd1d6, 0x0000 },
- { 0x1a01, 0xd1d8, 0x0000 },
- { 0x9a01, 0xd1db, 0x2000 },
- { 0x1a01, 0xd1da, 0x0000 },
- { 0x1a01, 0xd1dc, 0x0000 },
- { 0x9a01, 0xd307, 0x4000 },
- { 0x9a01, 0xd303, 0x3000 },
- { 0x9a01, 0xd301, 0x2000 },
- { 0x1a01, 0xd300, 0x0000 },
- { 0x1a01, 0xd302, 0x0000 },
- { 0x9a01, 0xd305, 0x2000 },
- { 0x1a01, 0xd304, 0x0000 },
- { 0x1a01, 0xd306, 0x0000 },
- { 0x9a01, 0xd30b, 0x3000 },
- { 0x9a01, 0xd309, 0x2000 },
- { 0x1a01, 0xd308, 0x0000 },
- { 0x1a01, 0xd30a, 0x0000 },
- { 0x9a01, 0xd30d, 0x2000 },
- { 0x1a01, 0xd30c, 0x0000 },
- { 0x1a01, 0xd30e, 0x0000 },
- { 0x9a01, 0xd31f, 0x5000 },
- { 0x9a01, 0xd317, 0x4000 },
- { 0x9a01, 0xd313, 0x3000 },
- { 0x9a01, 0xd311, 0x2000 },
- { 0x1a01, 0xd310, 0x0000 },
- { 0x1a01, 0xd312, 0x0000 },
- { 0x9a01, 0xd315, 0x2000 },
- { 0x1a01, 0xd314, 0x0000 },
- { 0x1a01, 0xd316, 0x0000 },
- { 0x9a01, 0xd31b, 0x3000 },
- { 0x9a01, 0xd319, 0x2000 },
- { 0x1a01, 0xd318, 0x0000 },
- { 0x1a01, 0xd31a, 0x0000 },
- { 0x9a01, 0xd31d, 0x2000 },
- { 0x1a01, 0xd31c, 0x0000 },
- { 0x1a01, 0xd31e, 0x0000 },
- { 0x9a01, 0xd327, 0x4000 },
- { 0x9a01, 0xd323, 0x3000 },
- { 0x9a01, 0xd321, 0x2000 },
- { 0x1a01, 0xd320, 0x0000 },
- { 0x1a01, 0xd322, 0x0000 },
- { 0x9a01, 0xd325, 0x2000 },
- { 0x1a01, 0xd324, 0x0000 },
- { 0x1a01, 0xd326, 0x0000 },
- { 0x9a01, 0xd32b, 0x3000 },
- { 0x9a01, 0xd329, 0x2000 },
- { 0x1a01, 0xd328, 0x0000 },
- { 0x1a01, 0xd32a, 0x0000 },
- { 0x9a01, 0xd32d, 0x2000 },
- { 0x1a01, 0xd32c, 0x0000 },
- { 0x1a01, 0xd32e, 0x0000 },
- { 0x8901, 0xd418, 0x7000 },
- { 0x9a01, 0xd34f, 0x6000 },
- { 0x9a01, 0xd33f, 0x5000 },
- { 0x9a01, 0xd337, 0x4000 },
- { 0x9a01, 0xd333, 0x3000 },
- { 0x9a01, 0xd331, 0x2000 },
- { 0x1a01, 0xd330, 0x0000 },
- { 0x1a01, 0xd332, 0x0000 },
- { 0x9a01, 0xd335, 0x2000 },
- { 0x1a01, 0xd334, 0x0000 },
- { 0x1a01, 0xd336, 0x0000 },
- { 0x9a01, 0xd33b, 0x3000 },
- { 0x9a01, 0xd339, 0x2000 },
- { 0x1a01, 0xd338, 0x0000 },
- { 0x1a01, 0xd33a, 0x0000 },
- { 0x9a01, 0xd33d, 0x2000 },
- { 0x1a01, 0xd33c, 0x0000 },
- { 0x1a01, 0xd33e, 0x0000 },
- { 0x9a01, 0xd347, 0x4000 },
- { 0x9a01, 0xd343, 0x3000 },
- { 0x9a01, 0xd341, 0x2000 },
- { 0x1a01, 0xd340, 0x0000 },
- { 0x1a01, 0xd342, 0x0000 },
- { 0x9a01, 0xd345, 0x2000 },
- { 0x1a01, 0xd344, 0x0000 },
- { 0x1a01, 0xd346, 0x0000 },
- { 0x9a01, 0xd34b, 0x3000 },
- { 0x9a01, 0xd349, 0x2000 },
- { 0x1a01, 0xd348, 0x0000 },
- { 0x1a01, 0xd34a, 0x0000 },
- { 0x9a01, 0xd34d, 0x2000 },
- { 0x1a01, 0xd34c, 0x0000 },
- { 0x1a01, 0xd34e, 0x0000 },
- { 0x8901, 0xd408, 0x5000 },
- { 0x8901, 0xd400, 0x4000 },
- { 0x9a01, 0xd353, 0x3000 },
- { 0x9a01, 0xd351, 0x2000 },
- { 0x1a01, 0xd350, 0x0000 },
- { 0x1a01, 0xd352, 0x0000 },
- { 0x9a01, 0xd355, 0x2000 },
- { 0x1a01, 0xd354, 0x0000 },
- { 0x1a01, 0xd356, 0x0000 },
- { 0x8901, 0xd404, 0x3000 },
- { 0x8901, 0xd402, 0x2000 },
- { 0x0901, 0xd401, 0x0000 },
- { 0x0901, 0xd403, 0x0000 },
- { 0x8901, 0xd406, 0x2000 },
- { 0x0901, 0xd405, 0x0000 },
- { 0x0901, 0xd407, 0x0000 },
- { 0x8901, 0xd410, 0x4000 },
- { 0x8901, 0xd40c, 0x3000 },
- { 0x8901, 0xd40a, 0x2000 },
- { 0x0901, 0xd409, 0x0000 },
- { 0x0901, 0xd40b, 0x0000 },
- { 0x8901, 0xd40e, 0x2000 },
- { 0x0901, 0xd40d, 0x0000 },
- { 0x0901, 0xd40f, 0x0000 },
- { 0x8901, 0xd414, 0x3000 },
- { 0x8901, 0xd412, 0x2000 },
- { 0x0901, 0xd411, 0x0000 },
- { 0x0901, 0xd413, 0x0000 },
- { 0x8901, 0xd416, 0x2000 },
- { 0x0901, 0xd415, 0x0000 },
- { 0x0901, 0xd417, 0x0000 },
- { 0x8901, 0xd438, 0x6000 },
- { 0x8501, 0xd428, 0x5000 },
- { 0x8501, 0xd420, 0x4000 },
- { 0x8501, 0xd41c, 0x3000 },
- { 0x8501, 0xd41a, 0x2000 },
- { 0x0901, 0xd419, 0x0000 },
- { 0x0501, 0xd41b, 0x0000 },
- { 0x8501, 0xd41e, 0x2000 },
- { 0x0501, 0xd41d, 0x0000 },
- { 0x0501, 0xd41f, 0x0000 },
- { 0x8501, 0xd424, 0x3000 },
- { 0x8501, 0xd422, 0x2000 },
- { 0x0501, 0xd421, 0x0000 },
- { 0x0501, 0xd423, 0x0000 },
- { 0x8501, 0xd426, 0x2000 },
- { 0x0501, 0xd425, 0x0000 },
- { 0x0501, 0xd427, 0x0000 },
- { 0x8501, 0xd430, 0x4000 },
- { 0x8501, 0xd42c, 0x3000 },
- { 0x8501, 0xd42a, 0x2000 },
- { 0x0501, 0xd429, 0x0000 },
- { 0x0501, 0xd42b, 0x0000 },
- { 0x8501, 0xd42e, 0x2000 },
- { 0x0501, 0xd42d, 0x0000 },
- { 0x0501, 0xd42f, 0x0000 },
- { 0x8901, 0xd434, 0x3000 },
- { 0x8501, 0xd432, 0x2000 },
- { 0x0501, 0xd431, 0x0000 },
- { 0x0501, 0xd433, 0x0000 },
- { 0x8901, 0xd436, 0x2000 },
- { 0x0901, 0xd435, 0x0000 },
- { 0x0901, 0xd437, 0x0000 },
- { 0x8901, 0xd448, 0x5000 },
- { 0x8901, 0xd440, 0x4000 },
- { 0x8901, 0xd43c, 0x3000 },
- { 0x8901, 0xd43a, 0x2000 },
- { 0x0901, 0xd439, 0x0000 },
- { 0x0901, 0xd43b, 0x0000 },
- { 0x8901, 0xd43e, 0x2000 },
- { 0x0901, 0xd43d, 0x0000 },
- { 0x0901, 0xd43f, 0x0000 },
- { 0x8901, 0xd444, 0x3000 },
- { 0x8901, 0xd442, 0x2000 },
- { 0x0901, 0xd441, 0x0000 },
- { 0x0901, 0xd443, 0x0000 },
- { 0x8901, 0xd446, 0x2000 },
- { 0x0901, 0xd445, 0x0000 },
- { 0x0901, 0xd447, 0x0000 },
- { 0x8501, 0xd450, 0x4000 },
- { 0x8901, 0xd44c, 0x3000 },
- { 0x8901, 0xd44a, 0x2000 },
- { 0x0901, 0xd449, 0x0000 },
- { 0x0901, 0xd44b, 0x0000 },
- { 0x8501, 0xd44e, 0x2000 },
- { 0x0901, 0xd44d, 0x0000 },
- { 0x0501, 0xd44f, 0x0000 },
- { 0x8501, 0xd454, 0x3000 },
- { 0x8501, 0xd452, 0x2000 },
- { 0x0501, 0xd451, 0x0000 },
- { 0x0501, 0xd453, 0x0000 },
- { 0x8501, 0xd457, 0x2000 },
- { 0x0501, 0xd456, 0x0000 },
- { 0x0501, 0xd458, 0x0000 },
- { 0x8702, 0xf876, 0xb000 },
- { 0x8901, 0xd670, 0xa000 },
- { 0x8901, 0xd570, 0x9000 },
- { 0x8901, 0xd4e4, 0x8000 },
- { 0x8501, 0xd499, 0x7000 },
- { 0x8901, 0xd479, 0x6000 },
- { 0x8901, 0xd469, 0x5000 },
- { 0x8501, 0xd461, 0x4000 },
- { 0x8501, 0xd45d, 0x3000 },
- { 0x8501, 0xd45b, 0x2000 },
- { 0x0501, 0xd45a, 0x0000 },
- { 0x0501, 0xd45c, 0x0000 },
- { 0x8501, 0xd45f, 0x2000 },
- { 0x0501, 0xd45e, 0x0000 },
- { 0x0501, 0xd460, 0x0000 },
- { 0x8501, 0xd465, 0x3000 },
- { 0x8501, 0xd463, 0x2000 },
- { 0x0501, 0xd462, 0x0000 },
- { 0x0501, 0xd464, 0x0000 },
- { 0x8501, 0xd467, 0x2000 },
- { 0x0501, 0xd466, 0x0000 },
- { 0x0901, 0xd468, 0x0000 },
- { 0x8901, 0xd471, 0x4000 },
- { 0x8901, 0xd46d, 0x3000 },
- { 0x8901, 0xd46b, 0x2000 },
- { 0x0901, 0xd46a, 0x0000 },
- { 0x0901, 0xd46c, 0x0000 },
- { 0x8901, 0xd46f, 0x2000 },
- { 0x0901, 0xd46e, 0x0000 },
- { 0x0901, 0xd470, 0x0000 },
- { 0x8901, 0xd475, 0x3000 },
- { 0x8901, 0xd473, 0x2000 },
- { 0x0901, 0xd472, 0x0000 },
- { 0x0901, 0xd474, 0x0000 },
- { 0x8901, 0xd477, 0x2000 },
- { 0x0901, 0xd476, 0x0000 },
- { 0x0901, 0xd478, 0x0000 },
- { 0x8501, 0xd489, 0x5000 },
- { 0x8901, 0xd481, 0x4000 },
- { 0x8901, 0xd47d, 0x3000 },
- { 0x8901, 0xd47b, 0x2000 },
- { 0x0901, 0xd47a, 0x0000 },
- { 0x0901, 0xd47c, 0x0000 },
- { 0x8901, 0xd47f, 0x2000 },
- { 0x0901, 0xd47e, 0x0000 },
- { 0x0901, 0xd480, 0x0000 },
- { 0x8501, 0xd485, 0x3000 },
- { 0x8501, 0xd483, 0x2000 },
- { 0x0501, 0xd482, 0x0000 },
- { 0x0501, 0xd484, 0x0000 },
- { 0x8501, 0xd487, 0x2000 },
- { 0x0501, 0xd486, 0x0000 },
- { 0x0501, 0xd488, 0x0000 },
- { 0x8501, 0xd491, 0x4000 },
- { 0x8501, 0xd48d, 0x3000 },
- { 0x8501, 0xd48b, 0x2000 },
- { 0x0501, 0xd48a, 0x0000 },
- { 0x0501, 0xd48c, 0x0000 },
- { 0x8501, 0xd48f, 0x2000 },
- { 0x0501, 0xd48e, 0x0000 },
- { 0x0501, 0xd490, 0x0000 },
- { 0x8501, 0xd495, 0x3000 },
- { 0x8501, 0xd493, 0x2000 },
- { 0x0501, 0xd492, 0x0000 },
- { 0x0501, 0xd494, 0x0000 },
- { 0x8501, 0xd497, 0x2000 },
- { 0x0501, 0xd496, 0x0000 },
- { 0x0501, 0xd498, 0x0000 },
- { 0x8501, 0xd4c3, 0x6000 },
- { 0x8901, 0xd4b1, 0x5000 },
- { 0x8901, 0xd4a6, 0x4000 },
- { 0x8901, 0xd49e, 0x3000 },
- { 0x8501, 0xd49b, 0x2000 },
- { 0x0501, 0xd49a, 0x0000 },
- { 0x0901, 0xd49c, 0x0000 },
- { 0x8901, 0xd4a2, 0x2000 },
- { 0x0901, 0xd49f, 0x0000 },
- { 0x0901, 0xd4a5, 0x0000 },
- { 0x8901, 0xd4ac, 0x3000 },
- { 0x8901, 0xd4aa, 0x2000 },
- { 0x0901, 0xd4a9, 0x0000 },
- { 0x0901, 0xd4ab, 0x0000 },
- { 0x8901, 0xd4af, 0x2000 },
- { 0x0901, 0xd4ae, 0x0000 },
- { 0x0901, 0xd4b0, 0x0000 },
- { 0x8501, 0xd4b9, 0x4000 },
- { 0x8901, 0xd4b5, 0x3000 },
- { 0x8901, 0xd4b3, 0x2000 },
- { 0x0901, 0xd4b2, 0x0000 },
- { 0x0901, 0xd4b4, 0x0000 },
- { 0x8501, 0xd4b7, 0x2000 },
- { 0x0501, 0xd4b6, 0x0000 },
- { 0x0501, 0xd4b8, 0x0000 },
- { 0x8501, 0xd4bf, 0x3000 },
- { 0x8501, 0xd4bd, 0x2000 },
- { 0x0501, 0xd4bb, 0x0000 },
- { 0x0501, 0xd4be, 0x0000 },
- { 0x8501, 0xd4c1, 0x2000 },
- { 0x0501, 0xd4c0, 0x0000 },
- { 0x0501, 0xd4c2, 0x0000 },
- { 0x8901, 0xd4d4, 0x5000 },
- { 0x8501, 0xd4cc, 0x4000 },
- { 0x8501, 0xd4c8, 0x3000 },
- { 0x8501, 0xd4c6, 0x2000 },
- { 0x0501, 0xd4c5, 0x0000 },
- { 0x0501, 0xd4c7, 0x0000 },
- { 0x8501, 0xd4ca, 0x2000 },
- { 0x0501, 0xd4c9, 0x0000 },
- { 0x0501, 0xd4cb, 0x0000 },
- { 0x8901, 0xd4d0, 0x3000 },
- { 0x8501, 0xd4ce, 0x2000 },
- { 0x0501, 0xd4cd, 0x0000 },
- { 0x0501, 0xd4cf, 0x0000 },
- { 0x8901, 0xd4d2, 0x2000 },
- { 0x0901, 0xd4d1, 0x0000 },
- { 0x0901, 0xd4d3, 0x0000 },
- { 0x8901, 0xd4dc, 0x4000 },
- { 0x8901, 0xd4d8, 0x3000 },
- { 0x8901, 0xd4d6, 0x2000 },
- { 0x0901, 0xd4d5, 0x0000 },
- { 0x0901, 0xd4d7, 0x0000 },
- { 0x8901, 0xd4da, 0x2000 },
- { 0x0901, 0xd4d9, 0x0000 },
- { 0x0901, 0xd4db, 0x0000 },
- { 0x8901, 0xd4e0, 0x3000 },
- { 0x8901, 0xd4de, 0x2000 },
- { 0x0901, 0xd4dd, 0x0000 },
- { 0x0901, 0xd4df, 0x0000 },
- { 0x8901, 0xd4e2, 0x2000 },
- { 0x0901, 0xd4e1, 0x0000 },
- { 0x0901, 0xd4e3, 0x0000 },
- { 0x8501, 0xd529, 0x7000 },
- { 0x8901, 0xd504, 0x6000 },
- { 0x8501, 0xd4f4, 0x5000 },
- { 0x8501, 0xd4ec, 0x4000 },
- { 0x8901, 0xd4e8, 0x3000 },
- { 0x8901, 0xd4e6, 0x2000 },
- { 0x0901, 0xd4e5, 0x0000 },
- { 0x0901, 0xd4e7, 0x0000 },
- { 0x8501, 0xd4ea, 0x2000 },
- { 0x0901, 0xd4e9, 0x0000 },
- { 0x0501, 0xd4eb, 0x0000 },
- { 0x8501, 0xd4f0, 0x3000 },
- { 0x8501, 0xd4ee, 0x2000 },
- { 0x0501, 0xd4ed, 0x0000 },
- { 0x0501, 0xd4ef, 0x0000 },
- { 0x8501, 0xd4f2, 0x2000 },
- { 0x0501, 0xd4f1, 0x0000 },
- { 0x0501, 0xd4f3, 0x0000 },
- { 0x8501, 0xd4fc, 0x4000 },
- { 0x8501, 0xd4f8, 0x3000 },
- { 0x8501, 0xd4f6, 0x2000 },
- { 0x0501, 0xd4f5, 0x0000 },
- { 0x0501, 0xd4f7, 0x0000 },
- { 0x8501, 0xd4fa, 0x2000 },
- { 0x0501, 0xd4f9, 0x0000 },
- { 0x0501, 0xd4fb, 0x0000 },
- { 0x8501, 0xd500, 0x3000 },
- { 0x8501, 0xd4fe, 0x2000 },
- { 0x0501, 0xd4fd, 0x0000 },
- { 0x0501, 0xd4ff, 0x0000 },
- { 0x8501, 0xd502, 0x2000 },
- { 0x0501, 0xd501, 0x0000 },
- { 0x0501, 0xd503, 0x0000 },
- { 0x8901, 0xd518, 0x5000 },
- { 0x8901, 0xd50f, 0x4000 },
- { 0x8901, 0xd509, 0x3000 },
- { 0x8901, 0xd507, 0x2000 },
- { 0x0901, 0xd505, 0x0000 },
- { 0x0901, 0xd508, 0x0000 },
- { 0x8901, 0xd50d, 0x2000 },
- { 0x0901, 0xd50a, 0x0000 },
- { 0x0901, 0xd50e, 0x0000 },
- { 0x8901, 0xd513, 0x3000 },
- { 0x8901, 0xd511, 0x2000 },
- { 0x0901, 0xd510, 0x0000 },
- { 0x0901, 0xd512, 0x0000 },
- { 0x8901, 0xd516, 0x2000 },
- { 0x0901, 0xd514, 0x0000 },
- { 0x0901, 0xd517, 0x0000 },
- { 0x8501, 0xd521, 0x4000 },
- { 0x8901, 0xd51c, 0x3000 },
- { 0x8901, 0xd51a, 0x2000 },
- { 0x0901, 0xd519, 0x0000 },
- { 0x0901, 0xd51b, 0x0000 },
- { 0x8501, 0xd51f, 0x2000 },
- { 0x0501, 0xd51e, 0x0000 },
- { 0x0501, 0xd520, 0x0000 },
- { 0x8501, 0xd525, 0x3000 },
- { 0x8501, 0xd523, 0x2000 },
- { 0x0501, 0xd522, 0x0000 },
- { 0x0501, 0xd524, 0x0000 },
- { 0x8501, 0xd527, 0x2000 },
- { 0x0501, 0xd526, 0x0000 },
- { 0x0501, 0xd528, 0x0000 },
- { 0x8901, 0xd54f, 0x6000 },
- { 0x8901, 0xd539, 0x5000 },
- { 0x8501, 0xd531, 0x4000 },
- { 0x8501, 0xd52d, 0x3000 },
- { 0x8501, 0xd52b, 0x2000 },
- { 0x0501, 0xd52a, 0x0000 },
- { 0x0501, 0xd52c, 0x0000 },
- { 0x8501, 0xd52f, 0x2000 },
- { 0x0501, 0xd52e, 0x0000 },
- { 0x0501, 0xd530, 0x0000 },
- { 0x8501, 0xd535, 0x3000 },
- { 0x8501, 0xd533, 0x2000 },
- { 0x0501, 0xd532, 0x0000 },
- { 0x0501, 0xd534, 0x0000 },
- { 0x8501, 0xd537, 0x2000 },
- { 0x0501, 0xd536, 0x0000 },
- { 0x0901, 0xd538, 0x0000 },
- { 0x8901, 0xd543, 0x4000 },
- { 0x8901, 0xd53e, 0x3000 },
- { 0x8901, 0xd53c, 0x2000 },
- { 0x0901, 0xd53b, 0x0000 },
- { 0x0901, 0xd53d, 0x0000 },
- { 0x8901, 0xd541, 0x2000 },
- { 0x0901, 0xd540, 0x0000 },
- { 0x0901, 0xd542, 0x0000 },
- { 0x8901, 0xd54b, 0x3000 },
- { 0x8901, 0xd546, 0x2000 },
- { 0x0901, 0xd544, 0x0000 },
- { 0x0901, 0xd54a, 0x0000 },
- { 0x8901, 0xd54d, 0x2000 },
- { 0x0901, 0xd54c, 0x0000 },
- { 0x0901, 0xd54e, 0x0000 },
- { 0x8501, 0xd560, 0x5000 },
- { 0x8501, 0xd558, 0x4000 },
- { 0x8501, 0xd554, 0x3000 },
- { 0x8501, 0xd552, 0x2000 },
- { 0x0901, 0xd550, 0x0000 },
- { 0x0501, 0xd553, 0x0000 },
- { 0x8501, 0xd556, 0x2000 },
- { 0x0501, 0xd555, 0x0000 },
- { 0x0501, 0xd557, 0x0000 },
- { 0x8501, 0xd55c, 0x3000 },
- { 0x8501, 0xd55a, 0x2000 },
- { 0x0501, 0xd559, 0x0000 },
- { 0x0501, 0xd55b, 0x0000 },
- { 0x8501, 0xd55e, 0x2000 },
- { 0x0501, 0xd55d, 0x0000 },
- { 0x0501, 0xd55f, 0x0000 },
- { 0x8501, 0xd568, 0x4000 },
- { 0x8501, 0xd564, 0x3000 },
- { 0x8501, 0xd562, 0x2000 },
- { 0x0501, 0xd561, 0x0000 },
- { 0x0501, 0xd563, 0x0000 },
- { 0x8501, 0xd566, 0x2000 },
- { 0x0501, 0xd565, 0x0000 },
- { 0x0501, 0xd567, 0x0000 },
- { 0x8901, 0xd56c, 0x3000 },
- { 0x8501, 0xd56a, 0x2000 },
- { 0x0501, 0xd569, 0x0000 },
- { 0x0501, 0xd56b, 0x0000 },
- { 0x8901, 0xd56e, 0x2000 },
- { 0x0901, 0xd56d, 0x0000 },
- { 0x0901, 0xd56f, 0x0000 },
- { 0x8501, 0xd5f0, 0x8000 },
- { 0x8901, 0xd5b0, 0x7000 },
- { 0x8501, 0xd590, 0x6000 },
- { 0x8901, 0xd580, 0x5000 },
- { 0x8901, 0xd578, 0x4000 },
- { 0x8901, 0xd574, 0x3000 },
- { 0x8901, 0xd572, 0x2000 },
- { 0x0901, 0xd571, 0x0000 },
- { 0x0901, 0xd573, 0x0000 },
- { 0x8901, 0xd576, 0x2000 },
- { 0x0901, 0xd575, 0x0000 },
- { 0x0901, 0xd577, 0x0000 },
- { 0x8901, 0xd57c, 0x3000 },
- { 0x8901, 0xd57a, 0x2000 },
- { 0x0901, 0xd579, 0x0000 },
- { 0x0901, 0xd57b, 0x0000 },
- { 0x8901, 0xd57e, 0x2000 },
- { 0x0901, 0xd57d, 0x0000 },
- { 0x0901, 0xd57f, 0x0000 },
- { 0x8501, 0xd588, 0x4000 },
- { 0x8901, 0xd584, 0x3000 },
- { 0x8901, 0xd582, 0x2000 },
- { 0x0901, 0xd581, 0x0000 },
- { 0x0901, 0xd583, 0x0000 },
- { 0x8501, 0xd586, 0x2000 },
- { 0x0901, 0xd585, 0x0000 },
- { 0x0501, 0xd587, 0x0000 },
- { 0x8501, 0xd58c, 0x3000 },
- { 0x8501, 0xd58a, 0x2000 },
- { 0x0501, 0xd589, 0x0000 },
- { 0x0501, 0xd58b, 0x0000 },
- { 0x8501, 0xd58e, 0x2000 },
- { 0x0501, 0xd58d, 0x0000 },
- { 0x0501, 0xd58f, 0x0000 },
- { 0x8901, 0xd5a0, 0x5000 },
- { 0x8501, 0xd598, 0x4000 },
- { 0x8501, 0xd594, 0x3000 },
- { 0x8501, 0xd592, 0x2000 },
- { 0x0501, 0xd591, 0x0000 },
- { 0x0501, 0xd593, 0x0000 },
- { 0x8501, 0xd596, 0x2000 },
- { 0x0501, 0xd595, 0x0000 },
- { 0x0501, 0xd597, 0x0000 },
- { 0x8501, 0xd59c, 0x3000 },
- { 0x8501, 0xd59a, 0x2000 },
- { 0x0501, 0xd599, 0x0000 },
- { 0x0501, 0xd59b, 0x0000 },
- { 0x8501, 0xd59e, 0x2000 },
- { 0x0501, 0xd59d, 0x0000 },
- { 0x0501, 0xd59f, 0x0000 },
- { 0x8901, 0xd5a8, 0x4000 },
- { 0x8901, 0xd5a4, 0x3000 },
- { 0x8901, 0xd5a2, 0x2000 },
- { 0x0901, 0xd5a1, 0x0000 },
- { 0x0901, 0xd5a3, 0x0000 },
- { 0x8901, 0xd5a6, 0x2000 },
- { 0x0901, 0xd5a5, 0x0000 },
- { 0x0901, 0xd5a7, 0x0000 },
- { 0x8901, 0xd5ac, 0x3000 },
- { 0x8901, 0xd5aa, 0x2000 },
- { 0x0901, 0xd5a9, 0x0000 },
- { 0x0901, 0xd5ab, 0x0000 },
- { 0x8901, 0xd5ae, 0x2000 },
- { 0x0901, 0xd5ad, 0x0000 },
- { 0x0901, 0xd5af, 0x0000 },
- { 0x8501, 0xd5d0, 0x6000 },
- { 0x8501, 0xd5c0, 0x5000 },
- { 0x8901, 0xd5b8, 0x4000 },
- { 0x8901, 0xd5b4, 0x3000 },
- { 0x8901, 0xd5b2, 0x2000 },
- { 0x0901, 0xd5b1, 0x0000 },
- { 0x0901, 0xd5b3, 0x0000 },
- { 0x8901, 0xd5b6, 0x2000 },
- { 0x0901, 0xd5b5, 0x0000 },
- { 0x0901, 0xd5b7, 0x0000 },
- { 0x8501, 0xd5bc, 0x3000 },
- { 0x8501, 0xd5ba, 0x2000 },
- { 0x0901, 0xd5b9, 0x0000 },
- { 0x0501, 0xd5bb, 0x0000 },
- { 0x8501, 0xd5be, 0x2000 },
- { 0x0501, 0xd5bd, 0x0000 },
- { 0x0501, 0xd5bf, 0x0000 },
- { 0x8501, 0xd5c8, 0x4000 },
- { 0x8501, 0xd5c4, 0x3000 },
- { 0x8501, 0xd5c2, 0x2000 },
- { 0x0501, 0xd5c1, 0x0000 },
- { 0x0501, 0xd5c3, 0x0000 },
- { 0x8501, 0xd5c6, 0x2000 },
- { 0x0501, 0xd5c5, 0x0000 },
- { 0x0501, 0xd5c7, 0x0000 },
- { 0x8501, 0xd5cc, 0x3000 },
- { 0x8501, 0xd5ca, 0x2000 },
- { 0x0501, 0xd5c9, 0x0000 },
- { 0x0501, 0xd5cb, 0x0000 },
- { 0x8501, 0xd5ce, 0x2000 },
- { 0x0501, 0xd5cd, 0x0000 },
- { 0x0501, 0xd5cf, 0x0000 },
- { 0x8901, 0xd5e0, 0x5000 },
- { 0x8901, 0xd5d8, 0x4000 },
- { 0x8901, 0xd5d4, 0x3000 },
- { 0x8501, 0xd5d2, 0x2000 },
- { 0x0501, 0xd5d1, 0x0000 },
- { 0x0501, 0xd5d3, 0x0000 },
- { 0x8901, 0xd5d6, 0x2000 },
- { 0x0901, 0xd5d5, 0x0000 },
- { 0x0901, 0xd5d7, 0x0000 },
- { 0x8901, 0xd5dc, 0x3000 },
- { 0x8901, 0xd5da, 0x2000 },
- { 0x0901, 0xd5d9, 0x0000 },
- { 0x0901, 0xd5db, 0x0000 },
- { 0x8901, 0xd5de, 0x2000 },
- { 0x0901, 0xd5dd, 0x0000 },
- { 0x0901, 0xd5df, 0x0000 },
- { 0x8901, 0xd5e8, 0x4000 },
- { 0x8901, 0xd5e4, 0x3000 },
- { 0x8901, 0xd5e2, 0x2000 },
- { 0x0901, 0xd5e1, 0x0000 },
- { 0x0901, 0xd5e3, 0x0000 },
- { 0x8901, 0xd5e6, 0x2000 },
- { 0x0901, 0xd5e5, 0x0000 },
- { 0x0901, 0xd5e7, 0x0000 },
- { 0x8901, 0xd5ec, 0x3000 },
- { 0x8901, 0xd5ea, 0x2000 },
- { 0x0901, 0xd5e9, 0x0000 },
- { 0x0901, 0xd5eb, 0x0000 },
- { 0x8501, 0xd5ee, 0x2000 },
- { 0x0901, 0xd5ed, 0x0000 },
- { 0x0501, 0xd5ef, 0x0000 },
- { 0x8501, 0xd630, 0x7000 },
- { 0x8901, 0xd610, 0x6000 },
- { 0x8501, 0xd600, 0x5000 },
- { 0x8501, 0xd5f8, 0x4000 },
- { 0x8501, 0xd5f4, 0x3000 },
- { 0x8501, 0xd5f2, 0x2000 },
- { 0x0501, 0xd5f1, 0x0000 },
- { 0x0501, 0xd5f3, 0x0000 },
- { 0x8501, 0xd5f6, 0x2000 },
- { 0x0501, 0xd5f5, 0x0000 },
- { 0x0501, 0xd5f7, 0x0000 },
- { 0x8501, 0xd5fc, 0x3000 },
- { 0x8501, 0xd5fa, 0x2000 },
- { 0x0501, 0xd5f9, 0x0000 },
- { 0x0501, 0xd5fb, 0x0000 },
- { 0x8501, 0xd5fe, 0x2000 },
- { 0x0501, 0xd5fd, 0x0000 },
- { 0x0501, 0xd5ff, 0x0000 },
- { 0x8901, 0xd608, 0x4000 },
- { 0x8501, 0xd604, 0x3000 },
- { 0x8501, 0xd602, 0x2000 },
- { 0x0501, 0xd601, 0x0000 },
- { 0x0501, 0xd603, 0x0000 },
- { 0x8501, 0xd606, 0x2000 },
- { 0x0501, 0xd605, 0x0000 },
- { 0x0501, 0xd607, 0x0000 },
- { 0x8901, 0xd60c, 0x3000 },
- { 0x8901, 0xd60a, 0x2000 },
- { 0x0901, 0xd609, 0x0000 },
- { 0x0901, 0xd60b, 0x0000 },
- { 0x8901, 0xd60e, 0x2000 },
- { 0x0901, 0xd60d, 0x0000 },
- { 0x0901, 0xd60f, 0x0000 },
- { 0x8901, 0xd620, 0x5000 },
- { 0x8901, 0xd618, 0x4000 },
- { 0x8901, 0xd614, 0x3000 },
- { 0x8901, 0xd612, 0x2000 },
- { 0x0901, 0xd611, 0x0000 },
- { 0x0901, 0xd613, 0x0000 },
- { 0x8901, 0xd616, 0x2000 },
- { 0x0901, 0xd615, 0x0000 },
- { 0x0901, 0xd617, 0x0000 },
- { 0x8901, 0xd61c, 0x3000 },
- { 0x8901, 0xd61a, 0x2000 },
- { 0x0901, 0xd619, 0x0000 },
- { 0x0901, 0xd61b, 0x0000 },
- { 0x8901, 0xd61e, 0x2000 },
- { 0x0901, 0xd61d, 0x0000 },
- { 0x0901, 0xd61f, 0x0000 },
- { 0x8501, 0xd628, 0x4000 },
- { 0x8501, 0xd624, 0x3000 },
- { 0x8501, 0xd622, 0x2000 },
- { 0x0901, 0xd621, 0x0000 },
- { 0x0501, 0xd623, 0x0000 },
- { 0x8501, 0xd626, 0x2000 },
- { 0x0501, 0xd625, 0x0000 },
- { 0x0501, 0xd627, 0x0000 },
- { 0x8501, 0xd62c, 0x3000 },
- { 0x8501, 0xd62a, 0x2000 },
- { 0x0501, 0xd629, 0x0000 },
- { 0x0501, 0xd62b, 0x0000 },
- { 0x8501, 0xd62e, 0x2000 },
- { 0x0501, 0xd62d, 0x0000 },
- { 0x0501, 0xd62f, 0x0000 },
- { 0x8901, 0xd650, 0x6000 },
- { 0x8901, 0xd640, 0x5000 },
- { 0x8501, 0xd638, 0x4000 },
- { 0x8501, 0xd634, 0x3000 },
- { 0x8501, 0xd632, 0x2000 },
- { 0x0501, 0xd631, 0x0000 },
- { 0x0501, 0xd633, 0x0000 },
- { 0x8501, 0xd636, 0x2000 },
- { 0x0501, 0xd635, 0x0000 },
- { 0x0501, 0xd637, 0x0000 },
- { 0x8901, 0xd63c, 0x3000 },
- { 0x8501, 0xd63a, 0x2000 },
- { 0x0501, 0xd639, 0x0000 },
- { 0x0501, 0xd63b, 0x0000 },
- { 0x8901, 0xd63e, 0x2000 },
- { 0x0901, 0xd63d, 0x0000 },
- { 0x0901, 0xd63f, 0x0000 },
- { 0x8901, 0xd648, 0x4000 },
- { 0x8901, 0xd644, 0x3000 },
- { 0x8901, 0xd642, 0x2000 },
- { 0x0901, 0xd641, 0x0000 },
- { 0x0901, 0xd643, 0x0000 },
- { 0x8901, 0xd646, 0x2000 },
- { 0x0901, 0xd645, 0x0000 },
- { 0x0901, 0xd647, 0x0000 },
- { 0x8901, 0xd64c, 0x3000 },
- { 0x8901, 0xd64a, 0x2000 },
- { 0x0901, 0xd649, 0x0000 },
- { 0x0901, 0xd64b, 0x0000 },
- { 0x8901, 0xd64e, 0x2000 },
- { 0x0901, 0xd64d, 0x0000 },
- { 0x0901, 0xd64f, 0x0000 },
- { 0x8501, 0xd660, 0x5000 },
- { 0x8501, 0xd658, 0x4000 },
- { 0x8901, 0xd654, 0x3000 },
- { 0x8901, 0xd652, 0x2000 },
- { 0x0901, 0xd651, 0x0000 },
- { 0x0901, 0xd653, 0x0000 },
- { 0x8501, 0xd656, 0x2000 },
- { 0x0901, 0xd655, 0x0000 },
- { 0x0501, 0xd657, 0x0000 },
- { 0x8501, 0xd65c, 0x3000 },
- { 0x8501, 0xd65a, 0x2000 },
- { 0x0501, 0xd659, 0x0000 },
- { 0x0501, 0xd65b, 0x0000 },
- { 0x8501, 0xd65e, 0x2000 },
- { 0x0501, 0xd65d, 0x0000 },
- { 0x0501, 0xd65f, 0x0000 },
- { 0x8501, 0xd668, 0x4000 },
- { 0x8501, 0xd664, 0x3000 },
- { 0x8501, 0xd662, 0x2000 },
- { 0x0501, 0xd661, 0x0000 },
- { 0x0501, 0xd663, 0x0000 },
- { 0x8501, 0xd666, 0x2000 },
- { 0x0501, 0xd665, 0x0000 },
- { 0x0501, 0xd667, 0x0000 },
- { 0x8501, 0xd66c, 0x3000 },
- { 0x8501, 0xd66a, 0x2000 },
- { 0x0501, 0xd669, 0x0000 },
- { 0x0501, 0xd66b, 0x0000 },
- { 0x8501, 0xd66e, 0x2000 },
- { 0x0501, 0xd66d, 0x0000 },
- { 0x0501, 0xd66f, 0x0000 },
- { 0x8501, 0xd774, 0x9000 },
- { 0x8901, 0xd6f4, 0x8000 },
- { 0x8901, 0xd6b4, 0x7000 },
- { 0x8501, 0xd690, 0x6000 },
- { 0x8901, 0xd680, 0x5000 },
- { 0x8901, 0xd678, 0x4000 },
- { 0x8901, 0xd674, 0x3000 },
- { 0x8901, 0xd672, 0x2000 },
- { 0x0901, 0xd671, 0x0000 },
- { 0x0901, 0xd673, 0x0000 },
- { 0x8901, 0xd676, 0x2000 },
- { 0x0901, 0xd675, 0x0000 },
- { 0x0901, 0xd677, 0x0000 },
- { 0x8901, 0xd67c, 0x3000 },
- { 0x8901, 0xd67a, 0x2000 },
- { 0x0901, 0xd679, 0x0000 },
- { 0x0901, 0xd67b, 0x0000 },
- { 0x8901, 0xd67e, 0x2000 },
- { 0x0901, 0xd67d, 0x0000 },
- { 0x0901, 0xd67f, 0x0000 },
- { 0x8901, 0xd688, 0x4000 },
- { 0x8901, 0xd684, 0x3000 },
- { 0x8901, 0xd682, 0x2000 },
- { 0x0901, 0xd681, 0x0000 },
- { 0x0901, 0xd683, 0x0000 },
- { 0x8901, 0xd686, 0x2000 },
- { 0x0901, 0xd685, 0x0000 },
- { 0x0901, 0xd687, 0x0000 },
- { 0x8501, 0xd68c, 0x3000 },
- { 0x8501, 0xd68a, 0x2000 },
- { 0x0901, 0xd689, 0x0000 },
- { 0x0501, 0xd68b, 0x0000 },
- { 0x8501, 0xd68e, 0x2000 },
- { 0x0501, 0xd68d, 0x0000 },
- { 0x0501, 0xd68f, 0x0000 },
- { 0x8501, 0xd6a0, 0x5000 },
- { 0x8501, 0xd698, 0x4000 },
- { 0x8501, 0xd694, 0x3000 },
- { 0x8501, 0xd692, 0x2000 },
- { 0x0501, 0xd691, 0x0000 },
- { 0x0501, 0xd693, 0x0000 },
- { 0x8501, 0xd696, 0x2000 },
- { 0x0501, 0xd695, 0x0000 },
- { 0x0501, 0xd697, 0x0000 },
- { 0x8501, 0xd69c, 0x3000 },
- { 0x8501, 0xd69a, 0x2000 },
- { 0x0501, 0xd699, 0x0000 },
- { 0x0501, 0xd69b, 0x0000 },
- { 0x8501, 0xd69e, 0x2000 },
- { 0x0501, 0xd69d, 0x0000 },
- { 0x0501, 0xd69f, 0x0000 },
- { 0x8901, 0xd6ac, 0x4000 },
- { 0x8901, 0xd6a8, 0x3000 },
- { 0x8501, 0xd6a2, 0x2000 },
- { 0x0501, 0xd6a1, 0x0000 },
- { 0x0501, 0xd6a3, 0x0000 },
- { 0x8901, 0xd6aa, 0x2000 },
- { 0x0901, 0xd6a9, 0x0000 },
- { 0x0901, 0xd6ab, 0x0000 },
- { 0x8901, 0xd6b0, 0x3000 },
- { 0x8901, 0xd6ae, 0x2000 },
- { 0x0901, 0xd6ad, 0x0000 },
- { 0x0901, 0xd6af, 0x0000 },
- { 0x8901, 0xd6b2, 0x2000 },
- { 0x0901, 0xd6b1, 0x0000 },
- { 0x0901, 0xd6b3, 0x0000 },
- { 0x8501, 0xd6d4, 0x6000 },
- { 0x8501, 0xd6c4, 0x5000 },
- { 0x8901, 0xd6bc, 0x4000 },
- { 0x8901, 0xd6b8, 0x3000 },
- { 0x8901, 0xd6b6, 0x2000 },
- { 0x0901, 0xd6b5, 0x0000 },
- { 0x0901, 0xd6b7, 0x0000 },
- { 0x8901, 0xd6ba, 0x2000 },
- { 0x0901, 0xd6b9, 0x0000 },
- { 0x0901, 0xd6bb, 0x0000 },
- { 0x8901, 0xd6c0, 0x3000 },
- { 0x8901, 0xd6be, 0x2000 },
- { 0x0901, 0xd6bd, 0x0000 },
- { 0x0901, 0xd6bf, 0x0000 },
- { 0x8501, 0xd6c2, 0x2000 },
- { 0x1901, 0xd6c1, 0x0000 },
- { 0x0501, 0xd6c3, 0x0000 },
- { 0x8501, 0xd6cc, 0x4000 },
- { 0x8501, 0xd6c8, 0x3000 },
- { 0x8501, 0xd6c6, 0x2000 },
- { 0x0501, 0xd6c5, 0x0000 },
- { 0x0501, 0xd6c7, 0x0000 },
- { 0x8501, 0xd6ca, 0x2000 },
- { 0x0501, 0xd6c9, 0x0000 },
- { 0x0501, 0xd6cb, 0x0000 },
- { 0x8501, 0xd6d0, 0x3000 },
- { 0x8501, 0xd6ce, 0x2000 },
- { 0x0501, 0xd6cd, 0x0000 },
- { 0x0501, 0xd6cf, 0x0000 },
- { 0x8501, 0xd6d2, 0x2000 },
- { 0x0501, 0xd6d1, 0x0000 },
- { 0x0501, 0xd6d3, 0x0000 },
- { 0x8901, 0xd6e4, 0x5000 },
- { 0x8501, 0xd6dc, 0x4000 },
- { 0x8501, 0xd6d8, 0x3000 },
- { 0x8501, 0xd6d6, 0x2000 },
- { 0x0501, 0xd6d5, 0x0000 },
- { 0x0501, 0xd6d7, 0x0000 },
- { 0x8501, 0xd6da, 0x2000 },
- { 0x0501, 0xd6d9, 0x0000 },
- { 0x1901, 0xd6db, 0x0000 },
- { 0x8501, 0xd6e0, 0x3000 },
- { 0x8501, 0xd6de, 0x2000 },
- { 0x0501, 0xd6dd, 0x0000 },
- { 0x0501, 0xd6df, 0x0000 },
- { 0x8901, 0xd6e2, 0x2000 },
- { 0x0501, 0xd6e1, 0x0000 },
- { 0x0901, 0xd6e3, 0x0000 },
- { 0x8901, 0xd6ec, 0x4000 },
- { 0x8901, 0xd6e8, 0x3000 },
- { 0x8901, 0xd6e6, 0x2000 },
- { 0x0901, 0xd6e5, 0x0000 },
- { 0x0901, 0xd6e7, 0x0000 },
- { 0x8901, 0xd6ea, 0x2000 },
- { 0x0901, 0xd6e9, 0x0000 },
- { 0x0901, 0xd6eb, 0x0000 },
- { 0x8901, 0xd6f0, 0x3000 },
- { 0x8901, 0xd6ee, 0x2000 },
- { 0x0901, 0xd6ed, 0x0000 },
- { 0x0901, 0xd6ef, 0x0000 },
- { 0x8901, 0xd6f2, 0x2000 },
- { 0x0901, 0xd6f1, 0x0000 },
- { 0x0901, 0xd6f3, 0x0000 },
- { 0x8901, 0xd734, 0x7000 },
- { 0x8501, 0xd714, 0x6000 },
- { 0x8501, 0xd704, 0x5000 },
- { 0x8501, 0xd6fc, 0x4000 },
- { 0x8901, 0xd6f8, 0x3000 },
- { 0x8901, 0xd6f6, 0x2000 },
- { 0x0901, 0xd6f5, 0x0000 },
- { 0x0901, 0xd6f7, 0x0000 },
- { 0x8901, 0xd6fa, 0x2000 },
- { 0x0901, 0xd6f9, 0x0000 },
- { 0x1901, 0xd6fb, 0x0000 },
- { 0x8501, 0xd700, 0x3000 },
- { 0x8501, 0xd6fe, 0x2000 },
- { 0x0501, 0xd6fd, 0x0000 },
- { 0x0501, 0xd6ff, 0x0000 },
- { 0x8501, 0xd702, 0x2000 },
- { 0x0501, 0xd701, 0x0000 },
- { 0x0501, 0xd703, 0x0000 },
- { 0x8501, 0xd70c, 0x4000 },
- { 0x8501, 0xd708, 0x3000 },
- { 0x8501, 0xd706, 0x2000 },
- { 0x0501, 0xd705, 0x0000 },
- { 0x0501, 0xd707, 0x0000 },
- { 0x8501, 0xd70a, 0x2000 },
- { 0x0501, 0xd709, 0x0000 },
- { 0x0501, 0xd70b, 0x0000 },
- { 0x8501, 0xd710, 0x3000 },
- { 0x8501, 0xd70e, 0x2000 },
- { 0x0501, 0xd70d, 0x0000 },
- { 0x0501, 0xd70f, 0x0000 },
- { 0x8501, 0xd712, 0x2000 },
- { 0x0501, 0xd711, 0x0000 },
- { 0x0501, 0xd713, 0x0000 },
- { 0x8901, 0xd724, 0x5000 },
- { 0x8901, 0xd71c, 0x4000 },
- { 0x8501, 0xd718, 0x3000 },
- { 0x8501, 0xd716, 0x2000 },
- { 0x1901, 0xd715, 0x0000 },
- { 0x0501, 0xd717, 0x0000 },
- { 0x8501, 0xd71a, 0x2000 },
- { 0x0501, 0xd719, 0x0000 },
- { 0x0501, 0xd71b, 0x0000 },
- { 0x8901, 0xd720, 0x3000 },
- { 0x8901, 0xd71e, 0x2000 },
- { 0x0901, 0xd71d, 0x0000 },
- { 0x0901, 0xd71f, 0x0000 },
- { 0x8901, 0xd722, 0x2000 },
- { 0x0901, 0xd721, 0x0000 },
- { 0x0901, 0xd723, 0x0000 },
- { 0x8901, 0xd72c, 0x4000 },
- { 0x8901, 0xd728, 0x3000 },
- { 0x8901, 0xd726, 0x2000 },
- { 0x0901, 0xd725, 0x0000 },
- { 0x0901, 0xd727, 0x0000 },
- { 0x8901, 0xd72a, 0x2000 },
- { 0x0901, 0xd729, 0x0000 },
- { 0x0901, 0xd72b, 0x0000 },
- { 0x8901, 0xd730, 0x3000 },
- { 0x8901, 0xd72e, 0x2000 },
- { 0x0901, 0xd72d, 0x0000 },
- { 0x0901, 0xd72f, 0x0000 },
- { 0x8901, 0xd732, 0x2000 },
- { 0x0901, 0xd731, 0x0000 },
- { 0x0901, 0xd733, 0x0000 },
- { 0x8501, 0xd754, 0x6000 },
- { 0x8501, 0xd744, 0x5000 },
- { 0x8501, 0xd73c, 0x4000 },
- { 0x8501, 0xd738, 0x3000 },
- { 0x8501, 0xd736, 0x2000 },
- { 0x1901, 0xd735, 0x0000 },
- { 0x0501, 0xd737, 0x0000 },
- { 0x8501, 0xd73a, 0x2000 },
- { 0x0501, 0xd739, 0x0000 },
- { 0x0501, 0xd73b, 0x0000 },
- { 0x8501, 0xd740, 0x3000 },
- { 0x8501, 0xd73e, 0x2000 },
- { 0x0501, 0xd73d, 0x0000 },
- { 0x0501, 0xd73f, 0x0000 },
- { 0x8501, 0xd742, 0x2000 },
- { 0x0501, 0xd741, 0x0000 },
- { 0x0501, 0xd743, 0x0000 },
- { 0x8501, 0xd74c, 0x4000 },
- { 0x8501, 0xd748, 0x3000 },
- { 0x8501, 0xd746, 0x2000 },
- { 0x0501, 0xd745, 0x0000 },
- { 0x0501, 0xd747, 0x0000 },
- { 0x8501, 0xd74a, 0x2000 },
- { 0x0501, 0xd749, 0x0000 },
- { 0x0501, 0xd74b, 0x0000 },
- { 0x8501, 0xd750, 0x3000 },
- { 0x8501, 0xd74e, 0x2000 },
- { 0x0501, 0xd74d, 0x0000 },
- { 0x1901, 0xd74f, 0x0000 },
- { 0x8501, 0xd752, 0x2000 },
- { 0x0501, 0xd751, 0x0000 },
- { 0x0501, 0xd753, 0x0000 },
- { 0x8901, 0xd764, 0x5000 },
- { 0x8901, 0xd75c, 0x4000 },
- { 0x8901, 0xd758, 0x3000 },
- { 0x8901, 0xd756, 0x2000 },
- { 0x0501, 0xd755, 0x0000 },
- { 0x0901, 0xd757, 0x0000 },
- { 0x8901, 0xd75a, 0x2000 },
- { 0x0901, 0xd759, 0x0000 },
- { 0x0901, 0xd75b, 0x0000 },
- { 0x8901, 0xd760, 0x3000 },
- { 0x8901, 0xd75e, 0x2000 },
- { 0x0901, 0xd75d, 0x0000 },
- { 0x0901, 0xd75f, 0x0000 },
- { 0x8901, 0xd762, 0x2000 },
- { 0x0901, 0xd761, 0x0000 },
- { 0x0901, 0xd763, 0x0000 },
- { 0x8901, 0xd76c, 0x4000 },
- { 0x8901, 0xd768, 0x3000 },
- { 0x8901, 0xd766, 0x2000 },
- { 0x0901, 0xd765, 0x0000 },
- { 0x0901, 0xd767, 0x0000 },
- { 0x8901, 0xd76a, 0x2000 },
- { 0x0901, 0xd769, 0x0000 },
- { 0x0901, 0xd76b, 0x0000 },
- { 0x8501, 0xd770, 0x3000 },
- { 0x8901, 0xd76e, 0x2000 },
- { 0x0901, 0xd76d, 0x0000 },
- { 0x1901, 0xd76f, 0x0000 },
- { 0x8501, 0xd772, 0x2000 },
- { 0x0501, 0xd771, 0x0000 },
- { 0x0501, 0xd773, 0x0000 },
- { 0x8d01, 0xd7f8, 0x8000 },
- { 0x8501, 0xd7b4, 0x7000 },
- { 0x8901, 0xd794, 0x6000 },
- { 0x8501, 0xd784, 0x5000 },
- { 0x8501, 0xd77c, 0x4000 },
- { 0x8501, 0xd778, 0x3000 },
- { 0x8501, 0xd776, 0x2000 },
- { 0x0501, 0xd775, 0x0000 },
- { 0x0501, 0xd777, 0x0000 },
- { 0x8501, 0xd77a, 0x2000 },
- { 0x0501, 0xd779, 0x0000 },
- { 0x0501, 0xd77b, 0x0000 },
- { 0x8501, 0xd780, 0x3000 },
- { 0x8501, 0xd77e, 0x2000 },
- { 0x0501, 0xd77d, 0x0000 },
- { 0x0501, 0xd77f, 0x0000 },
- { 0x8501, 0xd782, 0x2000 },
- { 0x0501, 0xd781, 0x0000 },
- { 0x0501, 0xd783, 0x0000 },
- { 0x8501, 0xd78c, 0x4000 },
- { 0x8501, 0xd788, 0x3000 },
- { 0x8501, 0xd786, 0x2000 },
- { 0x0501, 0xd785, 0x0000 },
- { 0x0501, 0xd787, 0x0000 },
- { 0x8501, 0xd78a, 0x2000 },
- { 0x1901, 0xd789, 0x0000 },
- { 0x0501, 0xd78b, 0x0000 },
- { 0x8901, 0xd790, 0x3000 },
- { 0x8501, 0xd78e, 0x2000 },
- { 0x0501, 0xd78d, 0x0000 },
- { 0x0501, 0xd78f, 0x0000 },
- { 0x8901, 0xd792, 0x2000 },
- { 0x0901, 0xd791, 0x0000 },
- { 0x0901, 0xd793, 0x0000 },
- { 0x8901, 0xd7a4, 0x5000 },
- { 0x8901, 0xd79c, 0x4000 },
- { 0x8901, 0xd798, 0x3000 },
- { 0x8901, 0xd796, 0x2000 },
- { 0x0901, 0xd795, 0x0000 },
- { 0x0901, 0xd797, 0x0000 },
- { 0x8901, 0xd79a, 0x2000 },
- { 0x0901, 0xd799, 0x0000 },
- { 0x0901, 0xd79b, 0x0000 },
- { 0x8901, 0xd7a0, 0x3000 },
- { 0x8901, 0xd79e, 0x2000 },
- { 0x0901, 0xd79d, 0x0000 },
- { 0x0901, 0xd79f, 0x0000 },
- { 0x8901, 0xd7a2, 0x2000 },
- { 0x0901, 0xd7a1, 0x0000 },
- { 0x0901, 0xd7a3, 0x0000 },
- { 0x8501, 0xd7ac, 0x4000 },
- { 0x8901, 0xd7a8, 0x3000 },
- { 0x8901, 0xd7a6, 0x2000 },
- { 0x0901, 0xd7a5, 0x0000 },
- { 0x0901, 0xd7a7, 0x0000 },
- { 0x8501, 0xd7aa, 0x2000 },
- { 0x1901, 0xd7a9, 0x0000 },
- { 0x0501, 0xd7ab, 0x0000 },
- { 0x8501, 0xd7b0, 0x3000 },
- { 0x8501, 0xd7ae, 0x2000 },
- { 0x0501, 0xd7ad, 0x0000 },
- { 0x0501, 0xd7af, 0x0000 },
- { 0x8501, 0xd7b2, 0x2000 },
- { 0x0501, 0xd7b1, 0x0000 },
- { 0x0501, 0xd7b3, 0x0000 },
- { 0x8d01, 0xd7d8, 0x6000 },
- { 0x8501, 0xd7c4, 0x5000 },
- { 0x8501, 0xd7bc, 0x4000 },
- { 0x8501, 0xd7b8, 0x3000 },
- { 0x8501, 0xd7b6, 0x2000 },
- { 0x0501, 0xd7b5, 0x0000 },
- { 0x0501, 0xd7b7, 0x0000 },
- { 0x8501, 0xd7ba, 0x2000 },
- { 0x0501, 0xd7b9, 0x0000 },
- { 0x0501, 0xd7bb, 0x0000 },
- { 0x8501, 0xd7c0, 0x3000 },
- { 0x8501, 0xd7be, 0x2000 },
- { 0x0501, 0xd7bd, 0x0000 },
- { 0x0501, 0xd7bf, 0x0000 },
- { 0x8501, 0xd7c2, 0x2000 },
- { 0x0501, 0xd7c1, 0x0000 },
- { 0x1901, 0xd7c3, 0x0000 },
- { 0x8d01, 0xd7d0, 0x4000 },
- { 0x8501, 0xd7c8, 0x3000 },
- { 0x8501, 0xd7c6, 0x2000 },
- { 0x0501, 0xd7c5, 0x0000 },
- { 0x0501, 0xd7c7, 0x0000 },
- { 0x8d01, 0xd7ce, 0x2000 },
- { 0x0501, 0xd7c9, 0x0000 },
- { 0x0d01, 0xd7cf, 0x0000 },
- { 0x8d01, 0xd7d4, 0x3000 },
- { 0x8d01, 0xd7d2, 0x2000 },
- { 0x0d01, 0xd7d1, 0x0000 },
- { 0x0d01, 0xd7d3, 0x0000 },
- { 0x8d01, 0xd7d6, 0x2000 },
- { 0x0d01, 0xd7d5, 0x0000 },
- { 0x0d01, 0xd7d7, 0x0000 },
- { 0x8d01, 0xd7e8, 0x5000 },
- { 0x8d01, 0xd7e0, 0x4000 },
- { 0x8d01, 0xd7dc, 0x3000 },
- { 0x8d01, 0xd7da, 0x2000 },
- { 0x0d01, 0xd7d9, 0x0000 },
- { 0x0d01, 0xd7db, 0x0000 },
- { 0x8d01, 0xd7de, 0x2000 },
- { 0x0d01, 0xd7dd, 0x0000 },
- { 0x0d01, 0xd7df, 0x0000 },
- { 0x8d01, 0xd7e4, 0x3000 },
- { 0x8d01, 0xd7e2, 0x2000 },
- { 0x0d01, 0xd7e1, 0x0000 },
- { 0x0d01, 0xd7e3, 0x0000 },
- { 0x8d01, 0xd7e6, 0x2000 },
- { 0x0d01, 0xd7e5, 0x0000 },
- { 0x0d01, 0xd7e7, 0x0000 },
- { 0x8d01, 0xd7f0, 0x4000 },
- { 0x8d01, 0xd7ec, 0x3000 },
- { 0x8d01, 0xd7ea, 0x2000 },
- { 0x0d01, 0xd7e9, 0x0000 },
- { 0x0d01, 0xd7eb, 0x0000 },
- { 0x8d01, 0xd7ee, 0x2000 },
- { 0x0d01, 0xd7ed, 0x0000 },
- { 0x0d01, 0xd7ef, 0x0000 },
- { 0x8d01, 0xd7f4, 0x3000 },
- { 0x8d01, 0xd7f2, 0x2000 },
- { 0x0d01, 0xd7f1, 0x0000 },
- { 0x0d01, 0xd7f3, 0x0000 },
- { 0x8d01, 0xd7f6, 0x2000 },
- { 0x0d01, 0xd7f5, 0x0000 },
- { 0x0d01, 0xd7f7, 0x0000 },
- { 0x8702, 0xf836, 0x7000 },
- { 0x8702, 0xf816, 0x6000 },
- { 0x8702, 0xf806, 0x5000 },
- { 0x8702, 0x0000, 0x4000 },
- { 0x8d01, 0xd7fc, 0x3000 },
- { 0x8d01, 0xd7fa, 0x2000 },
- { 0x0d01, 0xd7f9, 0x0000 },
- { 0x0d01, 0xd7fb, 0x0000 },
- { 0x8d01, 0xd7fe, 0x2000 },
- { 0x0d01, 0xd7fd, 0x0000 },
- { 0x0d01, 0xd7ff, 0x0000 },
- { 0x8702, 0xf802, 0x3000 },
- { 0x8702, 0xf800, 0x2000 },
- { 0x0702, 0xa6d6, 0x0000 },
- { 0x0702, 0xf801, 0x0000 },
- { 0x8702, 0xf804, 0x2000 },
- { 0x0702, 0xf803, 0x0000 },
- { 0x0702, 0xf805, 0x0000 },
- { 0x8702, 0xf80e, 0x4000 },
- { 0x8702, 0xf80a, 0x3000 },
- { 0x8702, 0xf808, 0x2000 },
- { 0x0702, 0xf807, 0x0000 },
- { 0x0702, 0xf809, 0x0000 },
- { 0x8702, 0xf80c, 0x2000 },
- { 0x0702, 0xf80b, 0x0000 },
- { 0x0702, 0xf80d, 0x0000 },
- { 0x8702, 0xf812, 0x3000 },
- { 0x8702, 0xf810, 0x2000 },
- { 0x0702, 0xf80f, 0x0000 },
- { 0x0702, 0xf811, 0x0000 },
- { 0x8702, 0xf814, 0x2000 },
- { 0x0702, 0xf813, 0x0000 },
- { 0x0702, 0xf815, 0x0000 },
- { 0x8702, 0xf826, 0x5000 },
- { 0x8702, 0xf81e, 0x4000 },
- { 0x8702, 0xf81a, 0x3000 },
- { 0x8702, 0xf818, 0x2000 },
- { 0x0702, 0xf817, 0x0000 },
- { 0x0702, 0xf819, 0x0000 },
- { 0x8702, 0xf81c, 0x2000 },
- { 0x0702, 0xf81b, 0x0000 },
- { 0x0702, 0xf81d, 0x0000 },
- { 0x8702, 0xf822, 0x3000 },
- { 0x8702, 0xf820, 0x2000 },
- { 0x0702, 0xf81f, 0x0000 },
- { 0x0702, 0xf821, 0x0000 },
- { 0x8702, 0xf824, 0x2000 },
- { 0x0702, 0xf823, 0x0000 },
- { 0x0702, 0xf825, 0x0000 },
- { 0x8702, 0xf82e, 0x4000 },
- { 0x8702, 0xf82a, 0x3000 },
- { 0x8702, 0xf828, 0x2000 },
- { 0x0702, 0xf827, 0x0000 },
- { 0x0702, 0xf829, 0x0000 },
- { 0x8702, 0xf82c, 0x2000 },
- { 0x0702, 0xf82b, 0x0000 },
- { 0x0702, 0xf82d, 0x0000 },
- { 0x8702, 0xf832, 0x3000 },
- { 0x8702, 0xf830, 0x2000 },
- { 0x0702, 0xf82f, 0x0000 },
- { 0x0702, 0xf831, 0x0000 },
- { 0x8702, 0xf834, 0x2000 },
- { 0x0702, 0xf833, 0x0000 },
- { 0x0702, 0xf835, 0x0000 },
- { 0x8702, 0xf856, 0x6000 },
- { 0x8702, 0xf846, 0x5000 },
- { 0x8702, 0xf83e, 0x4000 },
- { 0x8702, 0xf83a, 0x3000 },
- { 0x8702, 0xf838, 0x2000 },
- { 0x0702, 0xf837, 0x0000 },
- { 0x0702, 0xf839, 0x0000 },
- { 0x8702, 0xf83c, 0x2000 },
- { 0x0702, 0xf83b, 0x0000 },
- { 0x0702, 0xf83d, 0x0000 },
- { 0x8702, 0xf842, 0x3000 },
- { 0x8702, 0xf840, 0x2000 },
- { 0x0702, 0xf83f, 0x0000 },
- { 0x0702, 0xf841, 0x0000 },
- { 0x8702, 0xf844, 0x2000 },
- { 0x0702, 0xf843, 0x0000 },
- { 0x0702, 0xf845, 0x0000 },
- { 0x8702, 0xf84e, 0x4000 },
- { 0x8702, 0xf84a, 0x3000 },
- { 0x8702, 0xf848, 0x2000 },
- { 0x0702, 0xf847, 0x0000 },
- { 0x0702, 0xf849, 0x0000 },
- { 0x8702, 0xf84c, 0x2000 },
- { 0x0702, 0xf84b, 0x0000 },
- { 0x0702, 0xf84d, 0x0000 },
- { 0x8702, 0xf852, 0x3000 },
- { 0x8702, 0xf850, 0x2000 },
- { 0x0702, 0xf84f, 0x0000 },
- { 0x0702, 0xf851, 0x0000 },
- { 0x8702, 0xf854, 0x2000 },
- { 0x0702, 0xf853, 0x0000 },
- { 0x0702, 0xf855, 0x0000 },
- { 0x8702, 0xf866, 0x5000 },
- { 0x8702, 0xf85e, 0x4000 },
- { 0x8702, 0xf85a, 0x3000 },
- { 0x8702, 0xf858, 0x2000 },
- { 0x0702, 0xf857, 0x0000 },
- { 0x0702, 0xf859, 0x0000 },
- { 0x8702, 0xf85c, 0x2000 },
- { 0x0702, 0xf85b, 0x0000 },
- { 0x0702, 0xf85d, 0x0000 },
- { 0x8702, 0xf862, 0x3000 },
- { 0x8702, 0xf860, 0x2000 },
- { 0x0702, 0xf85f, 0x0000 },
- { 0x0702, 0xf861, 0x0000 },
- { 0x8702, 0xf864, 0x2000 },
- { 0x0702, 0xf863, 0x0000 },
- { 0x0702, 0xf865, 0x0000 },
- { 0x8702, 0xf86e, 0x4000 },
- { 0x8702, 0xf86a, 0x3000 },
- { 0x8702, 0xf868, 0x2000 },
- { 0x0702, 0xf867, 0x0000 },
- { 0x0702, 0xf869, 0x0000 },
- { 0x8702, 0xf86c, 0x2000 },
- { 0x0702, 0xf86b, 0x0000 },
- { 0x0702, 0xf86d, 0x0000 },
- { 0x8702, 0xf872, 0x3000 },
- { 0x8702, 0xf870, 0x2000 },
- { 0x0702, 0xf86f, 0x0000 },
- { 0x0702, 0xf871, 0x0000 },
- { 0x8702, 0xf874, 0x2000 },
- { 0x0702, 0xf873, 0x0000 },
- { 0x0702, 0xf875, 0x0000 },
- { 0x8702, 0xf976, 0x9000 },
- { 0x8702, 0xf8f6, 0x8000 },
- { 0x8702, 0xf8b6, 0x7000 },
- { 0x8702, 0xf896, 0x6000 },
- { 0x8702, 0xf886, 0x5000 },
- { 0x8702, 0xf87e, 0x4000 },
- { 0x8702, 0xf87a, 0x3000 },
- { 0x8702, 0xf878, 0x2000 },
- { 0x0702, 0xf877, 0x0000 },
- { 0x0702, 0xf879, 0x0000 },
- { 0x8702, 0xf87c, 0x2000 },
- { 0x0702, 0xf87b, 0x0000 },
- { 0x0702, 0xf87d, 0x0000 },
- { 0x8702, 0xf882, 0x3000 },
- { 0x8702, 0xf880, 0x2000 },
- { 0x0702, 0xf87f, 0x0000 },
- { 0x0702, 0xf881, 0x0000 },
- { 0x8702, 0xf884, 0x2000 },
- { 0x0702, 0xf883, 0x0000 },
- { 0x0702, 0xf885, 0x0000 },
- { 0x8702, 0xf88e, 0x4000 },
- { 0x8702, 0xf88a, 0x3000 },
- { 0x8702, 0xf888, 0x2000 },
- { 0x0702, 0xf887, 0x0000 },
- { 0x0702, 0xf889, 0x0000 },
- { 0x8702, 0xf88c, 0x2000 },
- { 0x0702, 0xf88b, 0x0000 },
- { 0x0702, 0xf88d, 0x0000 },
- { 0x8702, 0xf892, 0x3000 },
- { 0x8702, 0xf890, 0x2000 },
- { 0x0702, 0xf88f, 0x0000 },
- { 0x0702, 0xf891, 0x0000 },
- { 0x8702, 0xf894, 0x2000 },
- { 0x0702, 0xf893, 0x0000 },
- { 0x0702, 0xf895, 0x0000 },
- { 0x8702, 0xf8a6, 0x5000 },
- { 0x8702, 0xf89e, 0x4000 },
- { 0x8702, 0xf89a, 0x3000 },
- { 0x8702, 0xf898, 0x2000 },
- { 0x0702, 0xf897, 0x0000 },
- { 0x0702, 0xf899, 0x0000 },
- { 0x8702, 0xf89c, 0x2000 },
- { 0x0702, 0xf89b, 0x0000 },
- { 0x0702, 0xf89d, 0x0000 },
- { 0x8702, 0xf8a2, 0x3000 },
- { 0x8702, 0xf8a0, 0x2000 },
- { 0x0702, 0xf89f, 0x0000 },
- { 0x0702, 0xf8a1, 0x0000 },
- { 0x8702, 0xf8a4, 0x2000 },
- { 0x0702, 0xf8a3, 0x0000 },
- { 0x0702, 0xf8a5, 0x0000 },
- { 0x8702, 0xf8ae, 0x4000 },
- { 0x8702, 0xf8aa, 0x3000 },
- { 0x8702, 0xf8a8, 0x2000 },
- { 0x0702, 0xf8a7, 0x0000 },
- { 0x0702, 0xf8a9, 0x0000 },
- { 0x8702, 0xf8ac, 0x2000 },
- { 0x0702, 0xf8ab, 0x0000 },
- { 0x0702, 0xf8ad, 0x0000 },
- { 0x8702, 0xf8b2, 0x3000 },
- { 0x8702, 0xf8b0, 0x2000 },
- { 0x0702, 0xf8af, 0x0000 },
- { 0x0702, 0xf8b1, 0x0000 },
- { 0x8702, 0xf8b4, 0x2000 },
- { 0x0702, 0xf8b3, 0x0000 },
- { 0x0702, 0xf8b5, 0x0000 },
- { 0x8702, 0xf8d6, 0x6000 },
- { 0x8702, 0xf8c6, 0x5000 },
- { 0x8702, 0xf8be, 0x4000 },
- { 0x8702, 0xf8ba, 0x3000 },
- { 0x8702, 0xf8b8, 0x2000 },
- { 0x0702, 0xf8b7, 0x0000 },
- { 0x0702, 0xf8b9, 0x0000 },
- { 0x8702, 0xf8bc, 0x2000 },
- { 0x0702, 0xf8bb, 0x0000 },
- { 0x0702, 0xf8bd, 0x0000 },
- { 0x8702, 0xf8c2, 0x3000 },
- { 0x8702, 0xf8c0, 0x2000 },
- { 0x0702, 0xf8bf, 0x0000 },
- { 0x0702, 0xf8c1, 0x0000 },
- { 0x8702, 0xf8c4, 0x2000 },
- { 0x0702, 0xf8c3, 0x0000 },
- { 0x0702, 0xf8c5, 0x0000 },
- { 0x8702, 0xf8ce, 0x4000 },
- { 0x8702, 0xf8ca, 0x3000 },
- { 0x8702, 0xf8c8, 0x2000 },
- { 0x0702, 0xf8c7, 0x0000 },
- { 0x0702, 0xf8c9, 0x0000 },
- { 0x8702, 0xf8cc, 0x2000 },
- { 0x0702, 0xf8cb, 0x0000 },
- { 0x0702, 0xf8cd, 0x0000 },
- { 0x8702, 0xf8d2, 0x3000 },
- { 0x8702, 0xf8d0, 0x2000 },
- { 0x0702, 0xf8cf, 0x0000 },
- { 0x0702, 0xf8d1, 0x0000 },
- { 0x8702, 0xf8d4, 0x2000 },
- { 0x0702, 0xf8d3, 0x0000 },
- { 0x0702, 0xf8d5, 0x0000 },
- { 0x8702, 0xf8e6, 0x5000 },
- { 0x8702, 0xf8de, 0x4000 },
- { 0x8702, 0xf8da, 0x3000 },
- { 0x8702, 0xf8d8, 0x2000 },
- { 0x0702, 0xf8d7, 0x0000 },
- { 0x0702, 0xf8d9, 0x0000 },
- { 0x8702, 0xf8dc, 0x2000 },
- { 0x0702, 0xf8db, 0x0000 },
- { 0x0702, 0xf8dd, 0x0000 },
- { 0x8702, 0xf8e2, 0x3000 },
- { 0x8702, 0xf8e0, 0x2000 },
- { 0x0702, 0xf8df, 0x0000 },
- { 0x0702, 0xf8e1, 0x0000 },
- { 0x8702, 0xf8e4, 0x2000 },
- { 0x0702, 0xf8e3, 0x0000 },
- { 0x0702, 0xf8e5, 0x0000 },
- { 0x8702, 0xf8ee, 0x4000 },
- { 0x8702, 0xf8ea, 0x3000 },
- { 0x8702, 0xf8e8, 0x2000 },
- { 0x0702, 0xf8e7, 0x0000 },
- { 0x0702, 0xf8e9, 0x0000 },
- { 0x8702, 0xf8ec, 0x2000 },
- { 0x0702, 0xf8eb, 0x0000 },
- { 0x0702, 0xf8ed, 0x0000 },
- { 0x8702, 0xf8f2, 0x3000 },
- { 0x8702, 0xf8f0, 0x2000 },
- { 0x0702, 0xf8ef, 0x0000 },
- { 0x0702, 0xf8f1, 0x0000 },
- { 0x8702, 0xf8f4, 0x2000 },
- { 0x0702, 0xf8f3, 0x0000 },
- { 0x0702, 0xf8f5, 0x0000 },
- { 0x8702, 0xf936, 0x7000 },
- { 0x8702, 0xf916, 0x6000 },
- { 0x8702, 0xf906, 0x5000 },
- { 0x8702, 0xf8fe, 0x4000 },
- { 0x8702, 0xf8fa, 0x3000 },
- { 0x8702, 0xf8f8, 0x2000 },
- { 0x0702, 0xf8f7, 0x0000 },
- { 0x0702, 0xf8f9, 0x0000 },
- { 0x8702, 0xf8fc, 0x2000 },
- { 0x0702, 0xf8fb, 0x0000 },
- { 0x0702, 0xf8fd, 0x0000 },
- { 0x8702, 0xf902, 0x3000 },
- { 0x8702, 0xf900, 0x2000 },
- { 0x0702, 0xf8ff, 0x0000 },
- { 0x0702, 0xf901, 0x0000 },
- { 0x8702, 0xf904, 0x2000 },
- { 0x0702, 0xf903, 0x0000 },
- { 0x0702, 0xf905, 0x0000 },
- { 0x8702, 0xf90e, 0x4000 },
- { 0x8702, 0xf90a, 0x3000 },
- { 0x8702, 0xf908, 0x2000 },
- { 0x0702, 0xf907, 0x0000 },
- { 0x0702, 0xf909, 0x0000 },
- { 0x8702, 0xf90c, 0x2000 },
- { 0x0702, 0xf90b, 0x0000 },
- { 0x0702, 0xf90d, 0x0000 },
- { 0x8702, 0xf912, 0x3000 },
- { 0x8702, 0xf910, 0x2000 },
- { 0x0702, 0xf90f, 0x0000 },
- { 0x0702, 0xf911, 0x0000 },
- { 0x8702, 0xf914, 0x2000 },
- { 0x0702, 0xf913, 0x0000 },
- { 0x0702, 0xf915, 0x0000 },
- { 0x8702, 0xf926, 0x5000 },
- { 0x8702, 0xf91e, 0x4000 },
- { 0x8702, 0xf91a, 0x3000 },
- { 0x8702, 0xf918, 0x2000 },
- { 0x0702, 0xf917, 0x0000 },
- { 0x0702, 0xf919, 0x0000 },
- { 0x8702, 0xf91c, 0x2000 },
- { 0x0702, 0xf91b, 0x0000 },
- { 0x0702, 0xf91d, 0x0000 },
- { 0x8702, 0xf922, 0x3000 },
- { 0x8702, 0xf920, 0x2000 },
- { 0x0702, 0xf91f, 0x0000 },
- { 0x0702, 0xf921, 0x0000 },
- { 0x8702, 0xf924, 0x2000 },
- { 0x0702, 0xf923, 0x0000 },
- { 0x0702, 0xf925, 0x0000 },
- { 0x8702, 0xf92e, 0x4000 },
- { 0x8702, 0xf92a, 0x3000 },
- { 0x8702, 0xf928, 0x2000 },
- { 0x0702, 0xf927, 0x0000 },
- { 0x0702, 0xf929, 0x0000 },
- { 0x8702, 0xf92c, 0x2000 },
- { 0x0702, 0xf92b, 0x0000 },
- { 0x0702, 0xf92d, 0x0000 },
- { 0x8702, 0xf932, 0x3000 },
- { 0x8702, 0xf930, 0x2000 },
- { 0x0702, 0xf92f, 0x0000 },
- { 0x0702, 0xf931, 0x0000 },
- { 0x8702, 0xf934, 0x2000 },
- { 0x0702, 0xf933, 0x0000 },
- { 0x0702, 0xf935, 0x0000 },
- { 0x8702, 0xf956, 0x6000 },
- { 0x8702, 0xf946, 0x5000 },
- { 0x8702, 0xf93e, 0x4000 },
- { 0x8702, 0xf93a, 0x3000 },
- { 0x8702, 0xf938, 0x2000 },
- { 0x0702, 0xf937, 0x0000 },
- { 0x0702, 0xf939, 0x0000 },
- { 0x8702, 0xf93c, 0x2000 },
- { 0x0702, 0xf93b, 0x0000 },
- { 0x0702, 0xf93d, 0x0000 },
- { 0x8702, 0xf942, 0x3000 },
- { 0x8702, 0xf940, 0x2000 },
- { 0x0702, 0xf93f, 0x0000 },
- { 0x0702, 0xf941, 0x0000 },
- { 0x8702, 0xf944, 0x2000 },
- { 0x0702, 0xf943, 0x0000 },
- { 0x0702, 0xf945, 0x0000 },
- { 0x8702, 0xf94e, 0x4000 },
- { 0x8702, 0xf94a, 0x3000 },
- { 0x8702, 0xf948, 0x2000 },
- { 0x0702, 0xf947, 0x0000 },
- { 0x0702, 0xf949, 0x0000 },
- { 0x8702, 0xf94c, 0x2000 },
- { 0x0702, 0xf94b, 0x0000 },
- { 0x0702, 0xf94d, 0x0000 },
- { 0x8702, 0xf952, 0x3000 },
- { 0x8702, 0xf950, 0x2000 },
- { 0x0702, 0xf94f, 0x0000 },
- { 0x0702, 0xf951, 0x0000 },
- { 0x8702, 0xf954, 0x2000 },
- { 0x0702, 0xf953, 0x0000 },
- { 0x0702, 0xf955, 0x0000 },
- { 0x8702, 0xf966, 0x5000 },
- { 0x8702, 0xf95e, 0x4000 },
- { 0x8702, 0xf95a, 0x3000 },
- { 0x8702, 0xf958, 0x2000 },
- { 0x0702, 0xf957, 0x0000 },
- { 0x0702, 0xf959, 0x0000 },
- { 0x8702, 0xf95c, 0x2000 },
- { 0x0702, 0xf95b, 0x0000 },
- { 0x0702, 0xf95d, 0x0000 },
- { 0x8702, 0xf962, 0x3000 },
- { 0x8702, 0xf960, 0x2000 },
- { 0x0702, 0xf95f, 0x0000 },
- { 0x0702, 0xf961, 0x0000 },
- { 0x8702, 0xf964, 0x2000 },
- { 0x0702, 0xf963, 0x0000 },
- { 0x0702, 0xf965, 0x0000 },
- { 0x8702, 0xf96e, 0x4000 },
- { 0x8702, 0xf96a, 0x3000 },
- { 0x8702, 0xf968, 0x2000 },
- { 0x0702, 0xf967, 0x0000 },
- { 0x0702, 0xf969, 0x0000 },
- { 0x8702, 0xf96c, 0x2000 },
- { 0x0702, 0xf96b, 0x0000 },
- { 0x0702, 0xf96d, 0x0000 },
- { 0x8702, 0xf972, 0x3000 },
- { 0x8702, 0xf970, 0x2000 },
- { 0x0702, 0xf96f, 0x0000 },
- { 0x0702, 0xf971, 0x0000 },
- { 0x8702, 0xf974, 0x2000 },
- { 0x0702, 0xf973, 0x0000 },
- { 0x0702, 0xf975, 0x0000 },
- { 0x810e, 0x0077, 0x9000 },
- { 0x8702, 0xf9f6, 0x8000 },
- { 0x8702, 0xf9b6, 0x7000 },
- { 0x8702, 0xf996, 0x6000 },
- { 0x8702, 0xf986, 0x5000 },
- { 0x8702, 0xf97e, 0x4000 },
- { 0x8702, 0xf97a, 0x3000 },
- { 0x8702, 0xf978, 0x2000 },
- { 0x0702, 0xf977, 0x0000 },
- { 0x0702, 0xf979, 0x0000 },
- { 0x8702, 0xf97c, 0x2000 },
- { 0x0702, 0xf97b, 0x0000 },
- { 0x0702, 0xf97d, 0x0000 },
- { 0x8702, 0xf982, 0x3000 },
- { 0x8702, 0xf980, 0x2000 },
- { 0x0702, 0xf97f, 0x0000 },
- { 0x0702, 0xf981, 0x0000 },
- { 0x8702, 0xf984, 0x2000 },
- { 0x0702, 0xf983, 0x0000 },
- { 0x0702, 0xf985, 0x0000 },
- { 0x8702, 0xf98e, 0x4000 },
- { 0x8702, 0xf98a, 0x3000 },
- { 0x8702, 0xf988, 0x2000 },
- { 0x0702, 0xf987, 0x0000 },
- { 0x0702, 0xf989, 0x0000 },
- { 0x8702, 0xf98c, 0x2000 },
- { 0x0702, 0xf98b, 0x0000 },
- { 0x0702, 0xf98d, 0x0000 },
- { 0x8702, 0xf992, 0x3000 },
- { 0x8702, 0xf990, 0x2000 },
- { 0x0702, 0xf98f, 0x0000 },
- { 0x0702, 0xf991, 0x0000 },
- { 0x8702, 0xf994, 0x2000 },
- { 0x0702, 0xf993, 0x0000 },
- { 0x0702, 0xf995, 0x0000 },
- { 0x8702, 0xf9a6, 0x5000 },
- { 0x8702, 0xf99e, 0x4000 },
- { 0x8702, 0xf99a, 0x3000 },
- { 0x8702, 0xf998, 0x2000 },
- { 0x0702, 0xf997, 0x0000 },
- { 0x0702, 0xf999, 0x0000 },
- { 0x8702, 0xf99c, 0x2000 },
- { 0x0702, 0xf99b, 0x0000 },
- { 0x0702, 0xf99d, 0x0000 },
- { 0x8702, 0xf9a2, 0x3000 },
- { 0x8702, 0xf9a0, 0x2000 },
- { 0x0702, 0xf99f, 0x0000 },
- { 0x0702, 0xf9a1, 0x0000 },
- { 0x8702, 0xf9a4, 0x2000 },
- { 0x0702, 0xf9a3, 0x0000 },
- { 0x0702, 0xf9a5, 0x0000 },
- { 0x8702, 0xf9ae, 0x4000 },
- { 0x8702, 0xf9aa, 0x3000 },
- { 0x8702, 0xf9a8, 0x2000 },
- { 0x0702, 0xf9a7, 0x0000 },
- { 0x0702, 0xf9a9, 0x0000 },
- { 0x8702, 0xf9ac, 0x2000 },
- { 0x0702, 0xf9ab, 0x0000 },
- { 0x0702, 0xf9ad, 0x0000 },
- { 0x8702, 0xf9b2, 0x3000 },
- { 0x8702, 0xf9b0, 0x2000 },
- { 0x0702, 0xf9af, 0x0000 },
- { 0x0702, 0xf9b1, 0x0000 },
- { 0x8702, 0xf9b4, 0x2000 },
- { 0x0702, 0xf9b3, 0x0000 },
- { 0x0702, 0xf9b5, 0x0000 },
- { 0x8702, 0xf9d6, 0x6000 },
- { 0x8702, 0xf9c6, 0x5000 },
- { 0x8702, 0xf9be, 0x4000 },
- { 0x8702, 0xf9ba, 0x3000 },
- { 0x8702, 0xf9b8, 0x2000 },
- { 0x0702, 0xf9b7, 0x0000 },
- { 0x0702, 0xf9b9, 0x0000 },
- { 0x8702, 0xf9bc, 0x2000 },
- { 0x0702, 0xf9bb, 0x0000 },
- { 0x0702, 0xf9bd, 0x0000 },
- { 0x8702, 0xf9c2, 0x3000 },
- { 0x8702, 0xf9c0, 0x2000 },
- { 0x0702, 0xf9bf, 0x0000 },
- { 0x0702, 0xf9c1, 0x0000 },
- { 0x8702, 0xf9c4, 0x2000 },
- { 0x0702, 0xf9c3, 0x0000 },
- { 0x0702, 0xf9c5, 0x0000 },
- { 0x8702, 0xf9ce, 0x4000 },
- { 0x8702, 0xf9ca, 0x3000 },
- { 0x8702, 0xf9c8, 0x2000 },
- { 0x0702, 0xf9c7, 0x0000 },
- { 0x0702, 0xf9c9, 0x0000 },
- { 0x8702, 0xf9cc, 0x2000 },
- { 0x0702, 0xf9cb, 0x0000 },
- { 0x0702, 0xf9cd, 0x0000 },
- { 0x8702, 0xf9d2, 0x3000 },
- { 0x8702, 0xf9d0, 0x2000 },
- { 0x0702, 0xf9cf, 0x0000 },
- { 0x0702, 0xf9d1, 0x0000 },
- { 0x8702, 0xf9d4, 0x2000 },
- { 0x0702, 0xf9d3, 0x0000 },
- { 0x0702, 0xf9d5, 0x0000 },
- { 0x8702, 0xf9e6, 0x5000 },
- { 0x8702, 0xf9de, 0x4000 },
- { 0x8702, 0xf9da, 0x3000 },
- { 0x8702, 0xf9d8, 0x2000 },
- { 0x0702, 0xf9d7, 0x0000 },
- { 0x0702, 0xf9d9, 0x0000 },
- { 0x8702, 0xf9dc, 0x2000 },
- { 0x0702, 0xf9db, 0x0000 },
- { 0x0702, 0xf9dd, 0x0000 },
- { 0x8702, 0xf9e2, 0x3000 },
- { 0x8702, 0xf9e0, 0x2000 },
- { 0x0702, 0xf9df, 0x0000 },
- { 0x0702, 0xf9e1, 0x0000 },
- { 0x8702, 0xf9e4, 0x2000 },
- { 0x0702, 0xf9e3, 0x0000 },
- { 0x0702, 0xf9e5, 0x0000 },
- { 0x8702, 0xf9ee, 0x4000 },
- { 0x8702, 0xf9ea, 0x3000 },
- { 0x8702, 0xf9e8, 0x2000 },
- { 0x0702, 0xf9e7, 0x0000 },
- { 0x0702, 0xf9e9, 0x0000 },
- { 0x8702, 0xf9ec, 0x2000 },
- { 0x0702, 0xf9eb, 0x0000 },
- { 0x0702, 0xf9ed, 0x0000 },
- { 0x8702, 0xf9f2, 0x3000 },
- { 0x8702, 0xf9f0, 0x2000 },
- { 0x0702, 0xf9ef, 0x0000 },
- { 0x0702, 0xf9f1, 0x0000 },
- { 0x8702, 0xf9f4, 0x2000 },
- { 0x0702, 0xf9f3, 0x0000 },
- { 0x0702, 0xf9f5, 0x0000 },
- { 0x810e, 0x0037, 0x7000 },
- { 0x8702, 0xfa16, 0x6000 },
- { 0x8702, 0xfa06, 0x5000 },
- { 0x8702, 0xf9fe, 0x4000 },
- { 0x8702, 0xf9fa, 0x3000 },
- { 0x8702, 0xf9f8, 0x2000 },
- { 0x0702, 0xf9f7, 0x0000 },
- { 0x0702, 0xf9f9, 0x0000 },
- { 0x8702, 0xf9fc, 0x2000 },
- { 0x0702, 0xf9fb, 0x0000 },
- { 0x0702, 0xf9fd, 0x0000 },
- { 0x8702, 0xfa02, 0x3000 },
- { 0x8702, 0xfa00, 0x2000 },
- { 0x0702, 0xf9ff, 0x0000 },
- { 0x0702, 0xfa01, 0x0000 },
- { 0x8702, 0xfa04, 0x2000 },
- { 0x0702, 0xfa03, 0x0000 },
- { 0x0702, 0xfa05, 0x0000 },
- { 0x8702, 0xfa0e, 0x4000 },
- { 0x8702, 0xfa0a, 0x3000 },
- { 0x8702, 0xfa08, 0x2000 },
- { 0x0702, 0xfa07, 0x0000 },
- { 0x0702, 0xfa09, 0x0000 },
- { 0x8702, 0xfa0c, 0x2000 },
- { 0x0702, 0xfa0b, 0x0000 },
- { 0x0702, 0xfa0d, 0x0000 },
- { 0x8702, 0xfa12, 0x3000 },
- { 0x8702, 0xfa10, 0x2000 },
- { 0x0702, 0xfa0f, 0x0000 },
- { 0x0702, 0xfa11, 0x0000 },
- { 0x8702, 0xfa14, 0x2000 },
- { 0x0702, 0xfa13, 0x0000 },
- { 0x0702, 0xfa15, 0x0000 },
- { 0x810e, 0x0027, 0x5000 },
- { 0x810e, 0x0001, 0x4000 },
- { 0x8702, 0xfa1a, 0x3000 },
- { 0x8702, 0xfa18, 0x2000 },
- { 0x0702, 0xfa17, 0x0000 },
- { 0x0702, 0xfa19, 0x0000 },
- { 0x8702, 0xfa1c, 0x2000 },
- { 0x0702, 0xfa1b, 0x0000 },
- { 0x0702, 0xfa1d, 0x0000 },
- { 0x810e, 0x0023, 0x3000 },
- { 0x810e, 0x0021, 0x2000 },
- { 0x010e, 0x0020, 0x0000 },
- { 0x010e, 0x0022, 0x0000 },
- { 0x810e, 0x0025, 0x2000 },
- { 0x010e, 0x0024, 0x0000 },
- { 0x010e, 0x0026, 0x0000 },
- { 0x810e, 0x002f, 0x4000 },
- { 0x810e, 0x002b, 0x3000 },
- { 0x810e, 0x0029, 0x2000 },
- { 0x010e, 0x0028, 0x0000 },
- { 0x010e, 0x002a, 0x0000 },
- { 0x810e, 0x002d, 0x2000 },
- { 0x010e, 0x002c, 0x0000 },
- { 0x010e, 0x002e, 0x0000 },
- { 0x810e, 0x0033, 0x3000 },
- { 0x810e, 0x0031, 0x2000 },
- { 0x010e, 0x0030, 0x0000 },
- { 0x010e, 0x0032, 0x0000 },
- { 0x810e, 0x0035, 0x2000 },
- { 0x010e, 0x0034, 0x0000 },
- { 0x010e, 0x0036, 0x0000 },
- { 0x810e, 0x0057, 0x6000 },
- { 0x810e, 0x0047, 0x5000 },
- { 0x810e, 0x003f, 0x4000 },
- { 0x810e, 0x003b, 0x3000 },
- { 0x810e, 0x0039, 0x2000 },
- { 0x010e, 0x0038, 0x0000 },
- { 0x010e, 0x003a, 0x0000 },
- { 0x810e, 0x003d, 0x2000 },
- { 0x010e, 0x003c, 0x0000 },
- { 0x010e, 0x003e, 0x0000 },
- { 0x810e, 0x0043, 0x3000 },
- { 0x810e, 0x0041, 0x2000 },
- { 0x010e, 0x0040, 0x0000 },
- { 0x010e, 0x0042, 0x0000 },
- { 0x810e, 0x0045, 0x2000 },
- { 0x010e, 0x0044, 0x0000 },
- { 0x010e, 0x0046, 0x0000 },
- { 0x810e, 0x004f, 0x4000 },
- { 0x810e, 0x004b, 0x3000 },
- { 0x810e, 0x0049, 0x2000 },
- { 0x010e, 0x0048, 0x0000 },
- { 0x010e, 0x004a, 0x0000 },
- { 0x810e, 0x004d, 0x2000 },
- { 0x010e, 0x004c, 0x0000 },
- { 0x010e, 0x004e, 0x0000 },
- { 0x810e, 0x0053, 0x3000 },
- { 0x810e, 0x0051, 0x2000 },
- { 0x010e, 0x0050, 0x0000 },
- { 0x010e, 0x0052, 0x0000 },
- { 0x810e, 0x0055, 0x2000 },
- { 0x010e, 0x0054, 0x0000 },
- { 0x010e, 0x0056, 0x0000 },
- { 0x810e, 0x0067, 0x5000 },
- { 0x810e, 0x005f, 0x4000 },
- { 0x810e, 0x005b, 0x3000 },
- { 0x810e, 0x0059, 0x2000 },
- { 0x010e, 0x0058, 0x0000 },
- { 0x010e, 0x005a, 0x0000 },
- { 0x810e, 0x005d, 0x2000 },
- { 0x010e, 0x005c, 0x0000 },
- { 0x010e, 0x005e, 0x0000 },
- { 0x810e, 0x0063, 0x3000 },
- { 0x810e, 0x0061, 0x2000 },
- { 0x010e, 0x0060, 0x0000 },
- { 0x010e, 0x0062, 0x0000 },
- { 0x810e, 0x0065, 0x2000 },
- { 0x010e, 0x0064, 0x0000 },
- { 0x010e, 0x0066, 0x0000 },
- { 0x810e, 0x006f, 0x4000 },
- { 0x810e, 0x006b, 0x3000 },
- { 0x810e, 0x0069, 0x2000 },
- { 0x010e, 0x0068, 0x0000 },
- { 0x010e, 0x006a, 0x0000 },
- { 0x810e, 0x006d, 0x2000 },
- { 0x010e, 0x006c, 0x0000 },
- { 0x010e, 0x006e, 0x0000 },
- { 0x810e, 0x0073, 0x3000 },
- { 0x810e, 0x0071, 0x2000 },
- { 0x010e, 0x0070, 0x0000 },
- { 0x010e, 0x0072, 0x0000 },
- { 0x810e, 0x0075, 0x2000 },
- { 0x010e, 0x0074, 0x0000 },
- { 0x010e, 0x0076, 0x0000 },
- { 0x8c0e, 0x0177, 0x8000 },
- { 0x8c0e, 0x0137, 0x7000 },
- { 0x8c0e, 0x0117, 0x6000 },
- { 0x8c0e, 0x0107, 0x5000 },
- { 0x810e, 0x007f, 0x4000 },
- { 0x810e, 0x007b, 0x3000 },
- { 0x810e, 0x0079, 0x2000 },
- { 0x010e, 0x0078, 0x0000 },
- { 0x010e, 0x007a, 0x0000 },
- { 0x810e, 0x007d, 0x2000 },
- { 0x010e, 0x007c, 0x0000 },
- { 0x010e, 0x007e, 0x0000 },
- { 0x8c0e, 0x0103, 0x3000 },
- { 0x8c0e, 0x0101, 0x2000 },
- { 0x0c0e, 0x0100, 0x0000 },
- { 0x0c0e, 0x0102, 0x0000 },
- { 0x8c0e, 0x0105, 0x2000 },
- { 0x0c0e, 0x0104, 0x0000 },
- { 0x0c0e, 0x0106, 0x0000 },
- { 0x8c0e, 0x010f, 0x4000 },
- { 0x8c0e, 0x010b, 0x3000 },
- { 0x8c0e, 0x0109, 0x2000 },
- { 0x0c0e, 0x0108, 0x0000 },
- { 0x0c0e, 0x010a, 0x0000 },
- { 0x8c0e, 0x010d, 0x2000 },
- { 0x0c0e, 0x010c, 0x0000 },
- { 0x0c0e, 0x010e, 0x0000 },
- { 0x8c0e, 0x0113, 0x3000 },
- { 0x8c0e, 0x0111, 0x2000 },
- { 0x0c0e, 0x0110, 0x0000 },
- { 0x0c0e, 0x0112, 0x0000 },
- { 0x8c0e, 0x0115, 0x2000 },
- { 0x0c0e, 0x0114, 0x0000 },
- { 0x0c0e, 0x0116, 0x0000 },
- { 0x8c0e, 0x0127, 0x5000 },
- { 0x8c0e, 0x011f, 0x4000 },
- { 0x8c0e, 0x011b, 0x3000 },
- { 0x8c0e, 0x0119, 0x2000 },
- { 0x0c0e, 0x0118, 0x0000 },
- { 0x0c0e, 0x011a, 0x0000 },
- { 0x8c0e, 0x011d, 0x2000 },
- { 0x0c0e, 0x011c, 0x0000 },
- { 0x0c0e, 0x011e, 0x0000 },
- { 0x8c0e, 0x0123, 0x3000 },
- { 0x8c0e, 0x0121, 0x2000 },
- { 0x0c0e, 0x0120, 0x0000 },
- { 0x0c0e, 0x0122, 0x0000 },
- { 0x8c0e, 0x0125, 0x2000 },
- { 0x0c0e, 0x0124, 0x0000 },
- { 0x0c0e, 0x0126, 0x0000 },
- { 0x8c0e, 0x012f, 0x4000 },
- { 0x8c0e, 0x012b, 0x3000 },
- { 0x8c0e, 0x0129, 0x2000 },
- { 0x0c0e, 0x0128, 0x0000 },
- { 0x0c0e, 0x012a, 0x0000 },
- { 0x8c0e, 0x012d, 0x2000 },
- { 0x0c0e, 0x012c, 0x0000 },
- { 0x0c0e, 0x012e, 0x0000 },
- { 0x8c0e, 0x0133, 0x3000 },
- { 0x8c0e, 0x0131, 0x2000 },
- { 0x0c0e, 0x0130, 0x0000 },
- { 0x0c0e, 0x0132, 0x0000 },
- { 0x8c0e, 0x0135, 0x2000 },
- { 0x0c0e, 0x0134, 0x0000 },
- { 0x0c0e, 0x0136, 0x0000 },
- { 0x8c0e, 0x0157, 0x6000 },
- { 0x8c0e, 0x0147, 0x5000 },
- { 0x8c0e, 0x013f, 0x4000 },
- { 0x8c0e, 0x013b, 0x3000 },
- { 0x8c0e, 0x0139, 0x2000 },
- { 0x0c0e, 0x0138, 0x0000 },
- { 0x0c0e, 0x013a, 0x0000 },
- { 0x8c0e, 0x013d, 0x2000 },
- { 0x0c0e, 0x013c, 0x0000 },
- { 0x0c0e, 0x013e, 0x0000 },
- { 0x8c0e, 0x0143, 0x3000 },
- { 0x8c0e, 0x0141, 0x2000 },
- { 0x0c0e, 0x0140, 0x0000 },
- { 0x0c0e, 0x0142, 0x0000 },
- { 0x8c0e, 0x0145, 0x2000 },
- { 0x0c0e, 0x0144, 0x0000 },
- { 0x0c0e, 0x0146, 0x0000 },
- { 0x8c0e, 0x014f, 0x4000 },
- { 0x8c0e, 0x014b, 0x3000 },
- { 0x8c0e, 0x0149, 0x2000 },
- { 0x0c0e, 0x0148, 0x0000 },
- { 0x0c0e, 0x014a, 0x0000 },
- { 0x8c0e, 0x014d, 0x2000 },
- { 0x0c0e, 0x014c, 0x0000 },
- { 0x0c0e, 0x014e, 0x0000 },
- { 0x8c0e, 0x0153, 0x3000 },
- { 0x8c0e, 0x0151, 0x2000 },
- { 0x0c0e, 0x0150, 0x0000 },
- { 0x0c0e, 0x0152, 0x0000 },
- { 0x8c0e, 0x0155, 0x2000 },
- { 0x0c0e, 0x0154, 0x0000 },
- { 0x0c0e, 0x0156, 0x0000 },
- { 0x8c0e, 0x0167, 0x5000 },
- { 0x8c0e, 0x015f, 0x4000 },
- { 0x8c0e, 0x015b, 0x3000 },
- { 0x8c0e, 0x0159, 0x2000 },
- { 0x0c0e, 0x0158, 0x0000 },
- { 0x0c0e, 0x015a, 0x0000 },
- { 0x8c0e, 0x015d, 0x2000 },
- { 0x0c0e, 0x015c, 0x0000 },
- { 0x0c0e, 0x015e, 0x0000 },
- { 0x8c0e, 0x0163, 0x3000 },
- { 0x8c0e, 0x0161, 0x2000 },
- { 0x0c0e, 0x0160, 0x0000 },
- { 0x0c0e, 0x0162, 0x0000 },
- { 0x8c0e, 0x0165, 0x2000 },
- { 0x0c0e, 0x0164, 0x0000 },
- { 0x0c0e, 0x0166, 0x0000 },
- { 0x8c0e, 0x016f, 0x4000 },
- { 0x8c0e, 0x016b, 0x3000 },
- { 0x8c0e, 0x0169, 0x2000 },
- { 0x0c0e, 0x0168, 0x0000 },
- { 0x0c0e, 0x016a, 0x0000 },
- { 0x8c0e, 0x016d, 0x2000 },
- { 0x0c0e, 0x016c, 0x0000 },
- { 0x0c0e, 0x016e, 0x0000 },
- { 0x8c0e, 0x0173, 0x3000 },
- { 0x8c0e, 0x0171, 0x2000 },
- { 0x0c0e, 0x0170, 0x0000 },
- { 0x0c0e, 0x0172, 0x0000 },
- { 0x8c0e, 0x0175, 0x2000 },
- { 0x0c0e, 0x0174, 0x0000 },
- { 0x0c0e, 0x0176, 0x0000 },
- { 0x8c0e, 0x01b7, 0x7000 },
- { 0x8c0e, 0x0197, 0x6000 },
- { 0x8c0e, 0x0187, 0x5000 },
- { 0x8c0e, 0x017f, 0x4000 },
- { 0x8c0e, 0x017b, 0x3000 },
- { 0x8c0e, 0x0179, 0x2000 },
- { 0x0c0e, 0x0178, 0x0000 },
- { 0x0c0e, 0x017a, 0x0000 },
- { 0x8c0e, 0x017d, 0x2000 },
- { 0x0c0e, 0x017c, 0x0000 },
- { 0x0c0e, 0x017e, 0x0000 },
- { 0x8c0e, 0x0183, 0x3000 },
- { 0x8c0e, 0x0181, 0x2000 },
- { 0x0c0e, 0x0180, 0x0000 },
- { 0x0c0e, 0x0182, 0x0000 },
- { 0x8c0e, 0x0185, 0x2000 },
- { 0x0c0e, 0x0184, 0x0000 },
- { 0x0c0e, 0x0186, 0x0000 },
- { 0x8c0e, 0x018f, 0x4000 },
- { 0x8c0e, 0x018b, 0x3000 },
- { 0x8c0e, 0x0189, 0x2000 },
- { 0x0c0e, 0x0188, 0x0000 },
- { 0x0c0e, 0x018a, 0x0000 },
- { 0x8c0e, 0x018d, 0x2000 },
- { 0x0c0e, 0x018c, 0x0000 },
- { 0x0c0e, 0x018e, 0x0000 },
- { 0x8c0e, 0x0193, 0x3000 },
- { 0x8c0e, 0x0191, 0x2000 },
- { 0x0c0e, 0x0190, 0x0000 },
- { 0x0c0e, 0x0192, 0x0000 },
- { 0x8c0e, 0x0195, 0x2000 },
- { 0x0c0e, 0x0194, 0x0000 },
- { 0x0c0e, 0x0196, 0x0000 },
- { 0x8c0e, 0x01a7, 0x5000 },
- { 0x8c0e, 0x019f, 0x4000 },
- { 0x8c0e, 0x019b, 0x3000 },
- { 0x8c0e, 0x0199, 0x2000 },
- { 0x0c0e, 0x0198, 0x0000 },
- { 0x0c0e, 0x019a, 0x0000 },
- { 0x8c0e, 0x019d, 0x2000 },
- { 0x0c0e, 0x019c, 0x0000 },
- { 0x0c0e, 0x019e, 0x0000 },
- { 0x8c0e, 0x01a3, 0x3000 },
- { 0x8c0e, 0x01a1, 0x2000 },
- { 0x0c0e, 0x01a0, 0x0000 },
- { 0x0c0e, 0x01a2, 0x0000 },
- { 0x8c0e, 0x01a5, 0x2000 },
- { 0x0c0e, 0x01a4, 0x0000 },
- { 0x0c0e, 0x01a6, 0x0000 },
- { 0x8c0e, 0x01af, 0x4000 },
- { 0x8c0e, 0x01ab, 0x3000 },
- { 0x8c0e, 0x01a9, 0x2000 },
- { 0x0c0e, 0x01a8, 0x0000 },
- { 0x0c0e, 0x01aa, 0x0000 },
- { 0x8c0e, 0x01ad, 0x2000 },
- { 0x0c0e, 0x01ac, 0x0000 },
- { 0x0c0e, 0x01ae, 0x0000 },
- { 0x8c0e, 0x01b3, 0x3000 },
- { 0x8c0e, 0x01b1, 0x2000 },
- { 0x0c0e, 0x01b0, 0x0000 },
- { 0x0c0e, 0x01b2, 0x0000 },
- { 0x8c0e, 0x01b5, 0x2000 },
- { 0x0c0e, 0x01b4, 0x0000 },
- { 0x0c0e, 0x01b6, 0x0000 },
- { 0x8c0e, 0x01d7, 0x6000 },
- { 0x8c0e, 0x01c7, 0x5000 },
- { 0x8c0e, 0x01bf, 0x4000 },
- { 0x8c0e, 0x01bb, 0x3000 },
- { 0x8c0e, 0x01b9, 0x2000 },
- { 0x0c0e, 0x01b8, 0x0000 },
- { 0x0c0e, 0x01ba, 0x0000 },
- { 0x8c0e, 0x01bd, 0x2000 },
- { 0x0c0e, 0x01bc, 0x0000 },
- { 0x0c0e, 0x01be, 0x0000 },
- { 0x8c0e, 0x01c3, 0x3000 },
- { 0x8c0e, 0x01c1, 0x2000 },
- { 0x0c0e, 0x01c0, 0x0000 },
- { 0x0c0e, 0x01c2, 0x0000 },
- { 0x8c0e, 0x01c5, 0x2000 },
- { 0x0c0e, 0x01c4, 0x0000 },
- { 0x0c0e, 0x01c6, 0x0000 },
- { 0x8c0e, 0x01cf, 0x4000 },
- { 0x8c0e, 0x01cb, 0x3000 },
- { 0x8c0e, 0x01c9, 0x2000 },
- { 0x0c0e, 0x01c8, 0x0000 },
- { 0x0c0e, 0x01ca, 0x0000 },
- { 0x8c0e, 0x01cd, 0x2000 },
- { 0x0c0e, 0x01cc, 0x0000 },
- { 0x0c0e, 0x01ce, 0x0000 },
- { 0x8c0e, 0x01d3, 0x3000 },
- { 0x8c0e, 0x01d1, 0x2000 },
- { 0x0c0e, 0x01d0, 0x0000 },
- { 0x0c0e, 0x01d2, 0x0000 },
- { 0x8c0e, 0x01d5, 0x2000 },
- { 0x0c0e, 0x01d4, 0x0000 },
- { 0x0c0e, 0x01d6, 0x0000 },
- { 0x8c0e, 0x01e7, 0x5000 },
- { 0x8c0e, 0x01df, 0x4000 },
- { 0x8c0e, 0x01db, 0x3000 },
- { 0x8c0e, 0x01d9, 0x2000 },
- { 0x0c0e, 0x01d8, 0x0000 },
- { 0x0c0e, 0x01da, 0x0000 },
- { 0x8c0e, 0x01dd, 0x2000 },
- { 0x0c0e, 0x01dc, 0x0000 },
- { 0x0c0e, 0x01de, 0x0000 },
- { 0x8c0e, 0x01e3, 0x3000 },
- { 0x8c0e, 0x01e1, 0x2000 },
- { 0x0c0e, 0x01e0, 0x0000 },
- { 0x0c0e, 0x01e2, 0x0000 },
- { 0x8c0e, 0x01e5, 0x2000 },
- { 0x0c0e, 0x01e4, 0x0000 },
- { 0x0c0e, 0x01e6, 0x0000 },
- { 0x8c0e, 0x01ef, 0x4000 },
- { 0x8c0e, 0x01eb, 0x3000 },
- { 0x8c0e, 0x01e9, 0x2000 },
- { 0x0c0e, 0x01e8, 0x0000 },
- { 0x0c0e, 0x01ea, 0x0000 },
- { 0x8c0e, 0x01ed, 0x2000 },
- { 0x0c0e, 0x01ec, 0x0000 },
- { 0x0c0e, 0x01ee, 0x0000 },
- { 0x830f, 0xfffd, 0x2000 },
- { 0x030f, 0x0000, 0x0000 },
- { 0x0310, 0x0000, 0x1000 },
- { 0x0310, 0xfffd, 0x0000 },
+ { 0x09800000, 0x0000001f },
+ { 0x09000020, 0x74000000 },
+ { 0x09800021, 0x54000002 },
+ { 0x09000024, 0x5c000000 },
+ { 0x09800025, 0x54000002 },
+ { 0x09000028, 0x58000000 },
+ { 0x09000029, 0x48000000 },
+ { 0x0900002a, 0x54000000 },
+ { 0x0900002b, 0x64000000 },
+ { 0x0900002c, 0x54000000 },
+ { 0x0900002d, 0x44000000 },
+ { 0x0980002e, 0x54000001 },
+ { 0x09800030, 0x34000009 },
+ { 0x0980003a, 0x54000001 },
+ { 0x0980003c, 0x64000002 },
+ { 0x0980003f, 0x54000001 },
+ { 0x21000041, 0x24000020 },
+ { 0x21000042, 0x24000020 },
+ { 0x21000043, 0x24000020 },
+ { 0x21000044, 0x24000020 },
+ { 0x21000045, 0x24000020 },
+ { 0x21000046, 0x24000020 },
+ { 0x21000047, 0x24000020 },
+ { 0x21000048, 0x24000020 },
+ { 0x21000049, 0x24000020 },
+ { 0x2100004a, 0x24000020 },
+ { 0x2100004b, 0x24000020 },
+ { 0x2100004c, 0x24000020 },
+ { 0x2100004d, 0x24000020 },
+ { 0x2100004e, 0x24000020 },
+ { 0x2100004f, 0x24000020 },
+ { 0x21000050, 0x24000020 },
+ { 0x21000051, 0x24000020 },
+ { 0x21000052, 0x24000020 },
+ { 0x21000053, 0x24000020 },
+ { 0x21000054, 0x24000020 },
+ { 0x21000055, 0x24000020 },
+ { 0x21000056, 0x24000020 },
+ { 0x21000057, 0x24000020 },
+ { 0x21000058, 0x24000020 },
+ { 0x21000059, 0x24000020 },
+ { 0x2100005a, 0x24000020 },
+ { 0x0900005b, 0x58000000 },
+ { 0x0900005c, 0x54000000 },
+ { 0x0900005d, 0x48000000 },
+ { 0x0900005e, 0x60000000 },
+ { 0x0900005f, 0x40000000 },
+ { 0x09000060, 0x60000000 },
+ { 0x21000061, 0x1400ffe0 },
+ { 0x21000062, 0x1400ffe0 },
+ { 0x21000063, 0x1400ffe0 },
+ { 0x21000064, 0x1400ffe0 },
+ { 0x21000065, 0x1400ffe0 },
+ { 0x21000066, 0x1400ffe0 },
+ { 0x21000067, 0x1400ffe0 },
+ { 0x21000068, 0x1400ffe0 },
+ { 0x21000069, 0x1400ffe0 },
+ { 0x2100006a, 0x1400ffe0 },
+ { 0x2100006b, 0x1400ffe0 },
+ { 0x2100006c, 0x1400ffe0 },
+ { 0x2100006d, 0x1400ffe0 },
+ { 0x2100006e, 0x1400ffe0 },
+ { 0x2100006f, 0x1400ffe0 },
+ { 0x21000070, 0x1400ffe0 },
+ { 0x21000071, 0x1400ffe0 },
+ { 0x21000072, 0x1400ffe0 },
+ { 0x21000073, 0x1400ffe0 },
+ { 0x21000074, 0x1400ffe0 },
+ { 0x21000075, 0x1400ffe0 },
+ { 0x21000076, 0x1400ffe0 },
+ { 0x21000077, 0x1400ffe0 },
+ { 0x21000078, 0x1400ffe0 },
+ { 0x21000079, 0x1400ffe0 },
+ { 0x2100007a, 0x1400ffe0 },
+ { 0x0900007b, 0x58000000 },
+ { 0x0900007c, 0x64000000 },
+ { 0x0900007d, 0x48000000 },
+ { 0x0900007e, 0x64000000 },
+ { 0x0980007f, 0x00000020 },
+ { 0x090000a0, 0x74000000 },
+ { 0x090000a1, 0x54000000 },
+ { 0x098000a2, 0x5c000003 },
+ { 0x098000a6, 0x68000001 },
+ { 0x090000a8, 0x60000000 },
+ { 0x090000a9, 0x68000000 },
+ { 0x210000aa, 0x14000000 },
+ { 0x090000ab, 0x50000000 },
+ { 0x090000ac, 0x64000000 },
+ { 0x090000ad, 0x04000000 },
+ { 0x090000ae, 0x68000000 },
+ { 0x090000af, 0x60000000 },
+ { 0x090000b0, 0x68000000 },
+ { 0x090000b1, 0x64000000 },
+ { 0x098000b2, 0x3c000001 },
+ { 0x090000b4, 0x60000000 },
+ { 0x090000b5, 0x140002e7 },
+ { 0x090000b6, 0x68000000 },
+ { 0x090000b7, 0x54000000 },
+ { 0x090000b8, 0x60000000 },
+ { 0x090000b9, 0x3c000000 },
+ { 0x210000ba, 0x14000000 },
+ { 0x090000bb, 0x4c000000 },
+ { 0x098000bc, 0x3c000002 },
+ { 0x090000bf, 0x54000000 },
+ { 0x210000c0, 0x24000020 },
+ { 0x210000c1, 0x24000020 },
+ { 0x210000c2, 0x24000020 },
+ { 0x210000c3, 0x24000020 },
+ { 0x210000c4, 0x24000020 },
+ { 0x210000c5, 0x24000020 },
+ { 0x210000c6, 0x24000020 },
+ { 0x210000c7, 0x24000020 },
+ { 0x210000c8, 0x24000020 },
+ { 0x210000c9, 0x24000020 },
+ { 0x210000ca, 0x24000020 },
+ { 0x210000cb, 0x24000020 },
+ { 0x210000cc, 0x24000020 },
+ { 0x210000cd, 0x24000020 },
+ { 0x210000ce, 0x24000020 },
+ { 0x210000cf, 0x24000020 },
+ { 0x210000d0, 0x24000020 },
+ { 0x210000d1, 0x24000020 },
+ { 0x210000d2, 0x24000020 },
+ { 0x210000d3, 0x24000020 },
+ { 0x210000d4, 0x24000020 },
+ { 0x210000d5, 0x24000020 },
+ { 0x210000d6, 0x24000020 },
+ { 0x090000d7, 0x64000000 },
+ { 0x210000d8, 0x24000020 },
+ { 0x210000d9, 0x24000020 },
+ { 0x210000da, 0x24000020 },
+ { 0x210000db, 0x24000020 },
+ { 0x210000dc, 0x24000020 },
+ { 0x210000dd, 0x24000020 },
+ { 0x210000de, 0x24000020 },
+ { 0x210000df, 0x14000000 },
+ { 0x210000e0, 0x1400ffe0 },
+ { 0x210000e1, 0x1400ffe0 },
+ { 0x210000e2, 0x1400ffe0 },
+ { 0x210000e3, 0x1400ffe0 },
+ { 0x210000e4, 0x1400ffe0 },
+ { 0x210000e5, 0x1400ffe0 },
+ { 0x210000e6, 0x1400ffe0 },
+ { 0x210000e7, 0x1400ffe0 },
+ { 0x210000e8, 0x1400ffe0 },
+ { 0x210000e9, 0x1400ffe0 },
+ { 0x210000ea, 0x1400ffe0 },
+ { 0x210000eb, 0x1400ffe0 },
+ { 0x210000ec, 0x1400ffe0 },
+ { 0x210000ed, 0x1400ffe0 },
+ { 0x210000ee, 0x1400ffe0 },
+ { 0x210000ef, 0x1400ffe0 },
+ { 0x210000f0, 0x1400ffe0 },
+ { 0x210000f1, 0x1400ffe0 },
+ { 0x210000f2, 0x1400ffe0 },
+ { 0x210000f3, 0x1400ffe0 },
+ { 0x210000f4, 0x1400ffe0 },
+ { 0x210000f5, 0x1400ffe0 },
+ { 0x210000f6, 0x1400ffe0 },
+ { 0x090000f7, 0x64000000 },
+ { 0x210000f8, 0x1400ffe0 },
+ { 0x210000f9, 0x1400ffe0 },
+ { 0x210000fa, 0x1400ffe0 },
+ { 0x210000fb, 0x1400ffe0 },
+ { 0x210000fc, 0x1400ffe0 },
+ { 0x210000fd, 0x1400ffe0 },
+ { 0x210000fe, 0x1400ffe0 },
+ { 0x210000ff, 0x14000079 },
+ { 0x21000100, 0x24000001 },
+ { 0x21000101, 0x1400ffff },
+ { 0x21000102, 0x24000001 },
+ { 0x21000103, 0x1400ffff },
+ { 0x21000104, 0x24000001 },
+ { 0x21000105, 0x1400ffff },
+ { 0x21000106, 0x24000001 },
+ { 0x21000107, 0x1400ffff },
+ { 0x21000108, 0x24000001 },
+ { 0x21000109, 0x1400ffff },
+ { 0x2100010a, 0x24000001 },
+ { 0x2100010b, 0x1400ffff },
+ { 0x2100010c, 0x24000001 },
+ { 0x2100010d, 0x1400ffff },
+ { 0x2100010e, 0x24000001 },
+ { 0x2100010f, 0x1400ffff },
+ { 0x21000110, 0x24000001 },
+ { 0x21000111, 0x1400ffff },
+ { 0x21000112, 0x24000001 },
+ { 0x21000113, 0x1400ffff },
+ { 0x21000114, 0x24000001 },
+ { 0x21000115, 0x1400ffff },
+ { 0x21000116, 0x24000001 },
+ { 0x21000117, 0x1400ffff },
+ { 0x21000118, 0x24000001 },
+ { 0x21000119, 0x1400ffff },
+ { 0x2100011a, 0x24000001 },
+ { 0x2100011b, 0x1400ffff },
+ { 0x2100011c, 0x24000001 },
+ { 0x2100011d, 0x1400ffff },
+ { 0x2100011e, 0x24000001 },
+ { 0x2100011f, 0x1400ffff },
+ { 0x21000120, 0x24000001 },
+ { 0x21000121, 0x1400ffff },
+ { 0x21000122, 0x24000001 },
+ { 0x21000123, 0x1400ffff },
+ { 0x21000124, 0x24000001 },
+ { 0x21000125, 0x1400ffff },
+ { 0x21000126, 0x24000001 },
+ { 0x21000127, 0x1400ffff },
+ { 0x21000128, 0x24000001 },
+ { 0x21000129, 0x1400ffff },
+ { 0x2100012a, 0x24000001 },
+ { 0x2100012b, 0x1400ffff },
+ { 0x2100012c, 0x24000001 },
+ { 0x2100012d, 0x1400ffff },
+ { 0x2100012e, 0x24000001 },
+ { 0x2100012f, 0x1400ffff },
+ { 0x21000130, 0x2400ff39 },
+ { 0x21000131, 0x1400ff18 },
+ { 0x21000132, 0x24000001 },
+ { 0x21000133, 0x1400ffff },
+ { 0x21000134, 0x24000001 },
+ { 0x21000135, 0x1400ffff },
+ { 0x21000136, 0x24000001 },
+ { 0x21000137, 0x1400ffff },
+ { 0x21000138, 0x14000000 },
+ { 0x21000139, 0x24000001 },
+ { 0x2100013a, 0x1400ffff },
+ { 0x2100013b, 0x24000001 },
+ { 0x2100013c, 0x1400ffff },
+ { 0x2100013d, 0x24000001 },
+ { 0x2100013e, 0x1400ffff },
+ { 0x2100013f, 0x24000001 },
+ { 0x21000140, 0x1400ffff },
+ { 0x21000141, 0x24000001 },
+ { 0x21000142, 0x1400ffff },
+ { 0x21000143, 0x24000001 },
+ { 0x21000144, 0x1400ffff },
+ { 0x21000145, 0x24000001 },
+ { 0x21000146, 0x1400ffff },
+ { 0x21000147, 0x24000001 },
+ { 0x21000148, 0x1400ffff },
+ { 0x21000149, 0x14000000 },
+ { 0x2100014a, 0x24000001 },
+ { 0x2100014b, 0x1400ffff },
+ { 0x2100014c, 0x24000001 },
+ { 0x2100014d, 0x1400ffff },
+ { 0x2100014e, 0x24000001 },
+ { 0x2100014f, 0x1400ffff },
+ { 0x21000150, 0x24000001 },
+ { 0x21000151, 0x1400ffff },
+ { 0x21000152, 0x24000001 },
+ { 0x21000153, 0x1400ffff },
+ { 0x21000154, 0x24000001 },
+ { 0x21000155, 0x1400ffff },
+ { 0x21000156, 0x24000001 },
+ { 0x21000157, 0x1400ffff },
+ { 0x21000158, 0x24000001 },
+ { 0x21000159, 0x1400ffff },
+ { 0x2100015a, 0x24000001 },
+ { 0x2100015b, 0x1400ffff },
+ { 0x2100015c, 0x24000001 },
+ { 0x2100015d, 0x1400ffff },
+ { 0x2100015e, 0x24000001 },
+ { 0x2100015f, 0x1400ffff },
+ { 0x21000160, 0x24000001 },
+ { 0x21000161, 0x1400ffff },
+ { 0x21000162, 0x24000001 },
+ { 0x21000163, 0x1400ffff },
+ { 0x21000164, 0x24000001 },
+ { 0x21000165, 0x1400ffff },
+ { 0x21000166, 0x24000001 },
+ { 0x21000167, 0x1400ffff },
+ { 0x21000168, 0x24000001 },
+ { 0x21000169, 0x1400ffff },
+ { 0x2100016a, 0x24000001 },
+ { 0x2100016b, 0x1400ffff },
+ { 0x2100016c, 0x24000001 },
+ { 0x2100016d, 0x1400ffff },
+ { 0x2100016e, 0x24000001 },
+ { 0x2100016f, 0x1400ffff },
+ { 0x21000170, 0x24000001 },
+ { 0x21000171, 0x1400ffff },
+ { 0x21000172, 0x24000001 },
+ { 0x21000173, 0x1400ffff },
+ { 0x21000174, 0x24000001 },
+ { 0x21000175, 0x1400ffff },
+ { 0x21000176, 0x24000001 },
+ { 0x21000177, 0x1400ffff },
+ { 0x21000178, 0x2400ff87 },
+ { 0x21000179, 0x24000001 },
+ { 0x2100017a, 0x1400ffff },
+ { 0x2100017b, 0x24000001 },
+ { 0x2100017c, 0x1400ffff },
+ { 0x2100017d, 0x24000001 },
+ { 0x2100017e, 0x1400ffff },
+ { 0x2100017f, 0x1400fed4 },
+ { 0x21000180, 0x14000000 },
+ { 0x21000181, 0x240000d2 },
+ { 0x21000182, 0x24000001 },
+ { 0x21000183, 0x1400ffff },
+ { 0x21000184, 0x24000001 },
+ { 0x21000185, 0x1400ffff },
+ { 0x21000186, 0x240000ce },
+ { 0x21000187, 0x24000001 },
+ { 0x21000188, 0x1400ffff },
+ { 0x21000189, 0x240000cd },
+ { 0x2100018a, 0x240000cd },
+ { 0x2100018b, 0x24000001 },
+ { 0x2100018c, 0x1400ffff },
+ { 0x2100018d, 0x14000000 },
+ { 0x2100018e, 0x2400004f },
+ { 0x2100018f, 0x240000ca },
+ { 0x21000190, 0x240000cb },
+ { 0x21000191, 0x24000001 },
+ { 0x21000192, 0x1400ffff },
+ { 0x21000193, 0x240000cd },
+ { 0x21000194, 0x240000cf },
+ { 0x21000195, 0x14000061 },
+ { 0x21000196, 0x240000d3 },
+ { 0x21000197, 0x240000d1 },
+ { 0x21000198, 0x24000001 },
+ { 0x21000199, 0x1400ffff },
+ { 0x2100019a, 0x140000a3 },
+ { 0x2100019b, 0x14000000 },
+ { 0x2100019c, 0x240000d3 },
+ { 0x2100019d, 0x240000d5 },
+ { 0x2100019e, 0x14000082 },
+ { 0x2100019f, 0x240000d6 },
+ { 0x210001a0, 0x24000001 },
+ { 0x210001a1, 0x1400ffff },
+ { 0x210001a2, 0x24000001 },
+ { 0x210001a3, 0x1400ffff },
+ { 0x210001a4, 0x24000001 },
+ { 0x210001a5, 0x1400ffff },
+ { 0x210001a6, 0x240000da },
+ { 0x210001a7, 0x24000001 },
+ { 0x210001a8, 0x1400ffff },
+ { 0x210001a9, 0x240000da },
+ { 0x218001aa, 0x14000001 },
+ { 0x210001ac, 0x24000001 },
+ { 0x210001ad, 0x1400ffff },
+ { 0x210001ae, 0x240000da },
+ { 0x210001af, 0x24000001 },
+ { 0x210001b0, 0x1400ffff },
+ { 0x210001b1, 0x240000d9 },
+ { 0x210001b2, 0x240000d9 },
+ { 0x210001b3, 0x24000001 },
+ { 0x210001b4, 0x1400ffff },
+ { 0x210001b5, 0x24000001 },
+ { 0x210001b6, 0x1400ffff },
+ { 0x210001b7, 0x240000db },
+ { 0x210001b8, 0x24000001 },
+ { 0x210001b9, 0x1400ffff },
+ { 0x210001ba, 0x14000000 },
+ { 0x210001bb, 0x1c000000 },
+ { 0x210001bc, 0x24000001 },
+ { 0x210001bd, 0x1400ffff },
+ { 0x210001be, 0x14000000 },
+ { 0x210001bf, 0x14000038 },
+ { 0x218001c0, 0x1c000003 },
+ { 0x210001c4, 0x24000002 },
+ { 0x210001c5, 0x2000ffff },
+ { 0x210001c6, 0x1400fffe },
+ { 0x210001c7, 0x24000002 },
+ { 0x210001c8, 0x2000ffff },
+ { 0x210001c9, 0x1400fffe },
+ { 0x210001ca, 0x24000002 },
+ { 0x210001cb, 0x2000ffff },
+ { 0x210001cc, 0x1400fffe },
+ { 0x210001cd, 0x24000001 },
+ { 0x210001ce, 0x1400ffff },
+ { 0x210001cf, 0x24000001 },
+ { 0x210001d0, 0x1400ffff },
+ { 0x210001d1, 0x24000001 },
+ { 0x210001d2, 0x1400ffff },
+ { 0x210001d3, 0x24000001 },
+ { 0x210001d4, 0x1400ffff },
+ { 0x210001d5, 0x24000001 },
+ { 0x210001d6, 0x1400ffff },
+ { 0x210001d7, 0x24000001 },
+ { 0x210001d8, 0x1400ffff },
+ { 0x210001d9, 0x24000001 },
+ { 0x210001da, 0x1400ffff },
+ { 0x210001db, 0x24000001 },
+ { 0x210001dc, 0x1400ffff },
+ { 0x210001dd, 0x1400ffb1 },
+ { 0x210001de, 0x24000001 },
+ { 0x210001df, 0x1400ffff },
+ { 0x210001e0, 0x24000001 },
+ { 0x210001e1, 0x1400ffff },
+ { 0x210001e2, 0x24000001 },
+ { 0x210001e3, 0x1400ffff },
+ { 0x210001e4, 0x24000001 },
+ { 0x210001e5, 0x1400ffff },
+ { 0x210001e6, 0x24000001 },
+ { 0x210001e7, 0x1400ffff },
+ { 0x210001e8, 0x24000001 },
+ { 0x210001e9, 0x1400ffff },
+ { 0x210001ea, 0x24000001 },
+ { 0x210001eb, 0x1400ffff },
+ { 0x210001ec, 0x24000001 },
+ { 0x210001ed, 0x1400ffff },
+ { 0x210001ee, 0x24000001 },
+ { 0x210001ef, 0x1400ffff },
+ { 0x210001f0, 0x14000000 },
+ { 0x210001f1, 0x24000002 },
+ { 0x210001f2, 0x2000ffff },
+ { 0x210001f3, 0x1400fffe },
+ { 0x210001f4, 0x24000001 },
+ { 0x210001f5, 0x1400ffff },
+ { 0x210001f6, 0x2400ff9f },
+ { 0x210001f7, 0x2400ffc8 },
+ { 0x210001f8, 0x24000001 },
+ { 0x210001f9, 0x1400ffff },
+ { 0x210001fa, 0x24000001 },
+ { 0x210001fb, 0x1400ffff },
+ { 0x210001fc, 0x24000001 },
+ { 0x210001fd, 0x1400ffff },
+ { 0x210001fe, 0x24000001 },
+ { 0x210001ff, 0x1400ffff },
+ { 0x21000200, 0x24000001 },
+ { 0x21000201, 0x1400ffff },
+ { 0x21000202, 0x24000001 },
+ { 0x21000203, 0x1400ffff },
+ { 0x21000204, 0x24000001 },
+ { 0x21000205, 0x1400ffff },
+ { 0x21000206, 0x24000001 },
+ { 0x21000207, 0x1400ffff },
+ { 0x21000208, 0x24000001 },
+ { 0x21000209, 0x1400ffff },
+ { 0x2100020a, 0x24000001 },
+ { 0x2100020b, 0x1400ffff },
+ { 0x2100020c, 0x24000001 },
+ { 0x2100020d, 0x1400ffff },
+ { 0x2100020e, 0x24000001 },
+ { 0x2100020f, 0x1400ffff },
+ { 0x21000210, 0x24000001 },
+ { 0x21000211, 0x1400ffff },
+ { 0x21000212, 0x24000001 },
+ { 0x21000213, 0x1400ffff },
+ { 0x21000214, 0x24000001 },
+ { 0x21000215, 0x1400ffff },
+ { 0x21000216, 0x24000001 },
+ { 0x21000217, 0x1400ffff },
+ { 0x21000218, 0x24000001 },
+ { 0x21000219, 0x1400ffff },
+ { 0x2100021a, 0x24000001 },
+ { 0x2100021b, 0x1400ffff },
+ { 0x2100021c, 0x24000001 },
+ { 0x2100021d, 0x1400ffff },
+ { 0x2100021e, 0x24000001 },
+ { 0x2100021f, 0x1400ffff },
+ { 0x21000220, 0x2400ff7e },
+ { 0x21000221, 0x14000000 },
+ { 0x21000222, 0x24000001 },
+ { 0x21000223, 0x1400ffff },
+ { 0x21000224, 0x24000001 },
+ { 0x21000225, 0x1400ffff },
+ { 0x21000226, 0x24000001 },
+ { 0x21000227, 0x1400ffff },
+ { 0x21000228, 0x24000001 },
+ { 0x21000229, 0x1400ffff },
+ { 0x2100022a, 0x24000001 },
+ { 0x2100022b, 0x1400ffff },
+ { 0x2100022c, 0x24000001 },
+ { 0x2100022d, 0x1400ffff },
+ { 0x2100022e, 0x24000001 },
+ { 0x2100022f, 0x1400ffff },
+ { 0x21000230, 0x24000001 },
+ { 0x21000231, 0x1400ffff },
+ { 0x21000232, 0x24000001 },
+ { 0x21000233, 0x1400ffff },
+ { 0x21800234, 0x14000005 },
+ { 0x2100023a, 0x24000000 },
+ { 0x2100023b, 0x24000001 },
+ { 0x2100023c, 0x1400ffff },
+ { 0x2100023d, 0x2400ff5d },
+ { 0x2100023e, 0x24000000 },
+ { 0x2180023f, 0x14000001 },
+ { 0x21000241, 0x24000053 },
+ { 0x21800250, 0x14000002 },
+ { 0x21000253, 0x1400ff2e },
+ { 0x21000254, 0x1400ff32 },
+ { 0x21000255, 0x14000000 },
+ { 0x21000256, 0x1400ff33 },
+ { 0x21000257, 0x1400ff33 },
+ { 0x21000258, 0x14000000 },
+ { 0x21000259, 0x1400ff36 },
+ { 0x2100025a, 0x14000000 },
+ { 0x2100025b, 0x1400ff35 },
+ { 0x2180025c, 0x14000003 },
+ { 0x21000260, 0x1400ff33 },
+ { 0x21800261, 0x14000001 },
+ { 0x21000263, 0x1400ff31 },
+ { 0x21800264, 0x14000003 },
+ { 0x21000268, 0x1400ff2f },
+ { 0x21000269, 0x1400ff2d },
+ { 0x2180026a, 0x14000004 },
+ { 0x2100026f, 0x1400ff2d },
+ { 0x21800270, 0x14000001 },
+ { 0x21000272, 0x1400ff2b },
+ { 0x21800273, 0x14000001 },
+ { 0x21000275, 0x1400ff2a },
+ { 0x21800276, 0x14000009 },
+ { 0x21000280, 0x1400ff26 },
+ { 0x21800281, 0x14000001 },
+ { 0x21000283, 0x1400ff26 },
+ { 0x21800284, 0x14000003 },
+ { 0x21000288, 0x1400ff26 },
+ { 0x21000289, 0x14000000 },
+ { 0x2100028a, 0x1400ff27 },
+ { 0x2100028b, 0x1400ff27 },
+ { 0x2180028c, 0x14000005 },
+ { 0x21000292, 0x1400ff25 },
+ { 0x21000293, 0x14000000 },
+ { 0x21000294, 0x1400ffad },
+ { 0x21800295, 0x1400001a },
+ { 0x218002b0, 0x18000011 },
+ { 0x098002c2, 0x60000003 },
+ { 0x098002c6, 0x1800000b },
+ { 0x098002d2, 0x6000000d },
+ { 0x218002e0, 0x18000004 },
+ { 0x098002e5, 0x60000008 },
+ { 0x090002ee, 0x18000000 },
+ { 0x098002ef, 0x60000010 },
+ { 0x1b800300, 0x30000044 },
+ { 0x1b000345, 0x30000054 },
+ { 0x1b800346, 0x30000029 },
+ { 0x13800374, 0x60000001 },
+ { 0x1300037a, 0x18000000 },
+ { 0x0900037e, 0x54000000 },
+ { 0x13800384, 0x60000001 },
+ { 0x13000386, 0x24000026 },
+ { 0x09000387, 0x54000000 },
+ { 0x13000388, 0x24000025 },
+ { 0x13000389, 0x24000025 },
+ { 0x1300038a, 0x24000025 },
+ { 0x1300038c, 0x24000040 },
+ { 0x1300038e, 0x2400003f },
+ { 0x1300038f, 0x2400003f },
+ { 0x13000390, 0x14000000 },
+ { 0x13000391, 0x24000020 },
+ { 0x13000392, 0x24000020 },
+ { 0x13000393, 0x24000020 },
+ { 0x13000394, 0x24000020 },
+ { 0x13000395, 0x24000020 },
+ { 0x13000396, 0x24000020 },
+ { 0x13000397, 0x24000020 },
+ { 0x13000398, 0x24000020 },
+ { 0x13000399, 0x24000020 },
+ { 0x1300039a, 0x24000020 },
+ { 0x1300039b, 0x24000020 },
+ { 0x1300039c, 0x24000020 },
+ { 0x1300039d, 0x24000020 },
+ { 0x1300039e, 0x24000020 },
+ { 0x1300039f, 0x24000020 },
+ { 0x130003a0, 0x24000020 },
+ { 0x130003a1, 0x24000020 },
+ { 0x130003a3, 0x24000020 },
+ { 0x130003a4, 0x24000020 },
+ { 0x130003a5, 0x24000020 },
+ { 0x130003a6, 0x24000020 },
+ { 0x130003a7, 0x24000020 },
+ { 0x130003a8, 0x24000020 },
+ { 0x130003a9, 0x24000020 },
+ { 0x130003aa, 0x24000020 },
+ { 0x130003ab, 0x24000020 },
+ { 0x130003ac, 0x1400ffda },
+ { 0x130003ad, 0x1400ffdb },
+ { 0x130003ae, 0x1400ffdb },
+ { 0x130003af, 0x1400ffdb },
+ { 0x130003b0, 0x14000000 },
+ { 0x130003b1, 0x1400ffe0 },
+ { 0x130003b2, 0x1400ffe0 },
+ { 0x130003b3, 0x1400ffe0 },
+ { 0x130003b4, 0x1400ffe0 },
+ { 0x130003b5, 0x1400ffe0 },
+ { 0x130003b6, 0x1400ffe0 },
+ { 0x130003b7, 0x1400ffe0 },
+ { 0x130003b8, 0x1400ffe0 },
+ { 0x130003b9, 0x1400ffe0 },
+ { 0x130003ba, 0x1400ffe0 },
+ { 0x130003bb, 0x1400ffe0 },
+ { 0x130003bc, 0x1400ffe0 },
+ { 0x130003bd, 0x1400ffe0 },
+ { 0x130003be, 0x1400ffe0 },
+ { 0x130003bf, 0x1400ffe0 },
+ { 0x130003c0, 0x1400ffe0 },
+ { 0x130003c1, 0x1400ffe0 },
+ { 0x130003c2, 0x1400ffe1 },
+ { 0x130003c3, 0x1400ffe0 },
+ { 0x130003c4, 0x1400ffe0 },
+ { 0x130003c5, 0x1400ffe0 },
+ { 0x130003c6, 0x1400ffe0 },
+ { 0x130003c7, 0x1400ffe0 },
+ { 0x130003c8, 0x1400ffe0 },
+ { 0x130003c9, 0x1400ffe0 },
+ { 0x130003ca, 0x1400ffe0 },
+ { 0x130003cb, 0x1400ffe0 },
+ { 0x130003cc, 0x1400ffc0 },
+ { 0x130003cd, 0x1400ffc1 },
+ { 0x130003ce, 0x1400ffc1 },
+ { 0x130003d0, 0x1400ffc2 },
+ { 0x130003d1, 0x1400ffc7 },
+ { 0x138003d2, 0x24000002 },
+ { 0x130003d5, 0x1400ffd1 },
+ { 0x130003d6, 0x1400ffca },
+ { 0x130003d7, 0x14000000 },
+ { 0x130003d8, 0x24000001 },
+ { 0x130003d9, 0x1400ffff },
+ { 0x130003da, 0x24000001 },
+ { 0x130003db, 0x1400ffff },
+ { 0x130003dc, 0x24000001 },
+ { 0x130003dd, 0x1400ffff },
+ { 0x130003de, 0x24000001 },
+ { 0x130003df, 0x1400ffff },
+ { 0x130003e0, 0x24000001 },
+ { 0x130003e1, 0x1400ffff },
+ { 0x0a0003e2, 0x24000001 },
+ { 0x0a0003e3, 0x1400ffff },
+ { 0x0a0003e4, 0x24000001 },
+ { 0x0a0003e5, 0x1400ffff },
+ { 0x0a0003e6, 0x24000001 },
+ { 0x0a0003e7, 0x1400ffff },
+ { 0x0a0003e8, 0x24000001 },
+ { 0x0a0003e9, 0x1400ffff },
+ { 0x0a0003ea, 0x24000001 },
+ { 0x0a0003eb, 0x1400ffff },
+ { 0x0a0003ec, 0x24000001 },
+ { 0x0a0003ed, 0x1400ffff },
+ { 0x0a0003ee, 0x24000001 },
+ { 0x0a0003ef, 0x1400ffff },
+ { 0x130003f0, 0x1400ffaa },
+ { 0x130003f1, 0x1400ffb0 },
+ { 0x130003f2, 0x14000007 },
+ { 0x130003f3, 0x14000000 },
+ { 0x130003f4, 0x2400ffc4 },
+ { 0x130003f5, 0x1400ffa0 },
+ { 0x130003f6, 0x64000000 },
+ { 0x130003f7, 0x24000001 },
+ { 0x130003f8, 0x1400ffff },
+ { 0x130003f9, 0x2400fff9 },
+ { 0x130003fa, 0x24000001 },
+ { 0x130003fb, 0x1400ffff },
+ { 0x130003fc, 0x14000000 },
+ { 0x138003fd, 0x24000002 },
+ { 0x0c000400, 0x24000050 },
+ { 0x0c000401, 0x24000050 },
+ { 0x0c000402, 0x24000050 },
+ { 0x0c000403, 0x24000050 },
+ { 0x0c000404, 0x24000050 },
+ { 0x0c000405, 0x24000050 },
+ { 0x0c000406, 0x24000050 },
+ { 0x0c000407, 0x24000050 },
+ { 0x0c000408, 0x24000050 },
+ { 0x0c000409, 0x24000050 },
+ { 0x0c00040a, 0x24000050 },
+ { 0x0c00040b, 0x24000050 },
+ { 0x0c00040c, 0x24000050 },
+ { 0x0c00040d, 0x24000050 },
+ { 0x0c00040e, 0x24000050 },
+ { 0x0c00040f, 0x24000050 },
+ { 0x0c000410, 0x24000020 },
+ { 0x0c000411, 0x24000020 },
+ { 0x0c000412, 0x24000020 },
+ { 0x0c000413, 0x24000020 },
+ { 0x0c000414, 0x24000020 },
+ { 0x0c000415, 0x24000020 },
+ { 0x0c000416, 0x24000020 },
+ { 0x0c000417, 0x24000020 },
+ { 0x0c000418, 0x24000020 },
+ { 0x0c000419, 0x24000020 },
+ { 0x0c00041a, 0x24000020 },
+ { 0x0c00041b, 0x24000020 },
+ { 0x0c00041c, 0x24000020 },
+ { 0x0c00041d, 0x24000020 },
+ { 0x0c00041e, 0x24000020 },
+ { 0x0c00041f, 0x24000020 },
+ { 0x0c000420, 0x24000020 },
+ { 0x0c000421, 0x24000020 },
+ { 0x0c000422, 0x24000020 },
+ { 0x0c000423, 0x24000020 },
+ { 0x0c000424, 0x24000020 },
+ { 0x0c000425, 0x24000020 },
+ { 0x0c000426, 0x24000020 },
+ { 0x0c000427, 0x24000020 },
+ { 0x0c000428, 0x24000020 },
+ { 0x0c000429, 0x24000020 },
+ { 0x0c00042a, 0x24000020 },
+ { 0x0c00042b, 0x24000020 },
+ { 0x0c00042c, 0x24000020 },
+ { 0x0c00042d, 0x24000020 },
+ { 0x0c00042e, 0x24000020 },
+ { 0x0c00042f, 0x24000020 },
+ { 0x0c000430, 0x1400ffe0 },
+ { 0x0c000431, 0x1400ffe0 },
+ { 0x0c000432, 0x1400ffe0 },
+ { 0x0c000433, 0x1400ffe0 },
+ { 0x0c000434, 0x1400ffe0 },
+ { 0x0c000435, 0x1400ffe0 },
+ { 0x0c000436, 0x1400ffe0 },
+ { 0x0c000437, 0x1400ffe0 },
+ { 0x0c000438, 0x1400ffe0 },
+ { 0x0c000439, 0x1400ffe0 },
+ { 0x0c00043a, 0x1400ffe0 },
+ { 0x0c00043b, 0x1400ffe0 },
+ { 0x0c00043c, 0x1400ffe0 },
+ { 0x0c00043d, 0x1400ffe0 },
+ { 0x0c00043e, 0x1400ffe0 },
+ { 0x0c00043f, 0x1400ffe0 },
+ { 0x0c000440, 0x1400ffe0 },
+ { 0x0c000441, 0x1400ffe0 },
+ { 0x0c000442, 0x1400ffe0 },
+ { 0x0c000443, 0x1400ffe0 },
+ { 0x0c000444, 0x1400ffe0 },
+ { 0x0c000445, 0x1400ffe0 },
+ { 0x0c000446, 0x1400ffe0 },
+ { 0x0c000447, 0x1400ffe0 },
+ { 0x0c000448, 0x1400ffe0 },
+ { 0x0c000449, 0x1400ffe0 },
+ { 0x0c00044a, 0x1400ffe0 },
+ { 0x0c00044b, 0x1400ffe0 },
+ { 0x0c00044c, 0x1400ffe0 },
+ { 0x0c00044d, 0x1400ffe0 },
+ { 0x0c00044e, 0x1400ffe0 },
+ { 0x0c00044f, 0x1400ffe0 },
+ { 0x0c000450, 0x1400ffb0 },
+ { 0x0c000451, 0x1400ffb0 },
+ { 0x0c000452, 0x1400ffb0 },
+ { 0x0c000453, 0x1400ffb0 },
+ { 0x0c000454, 0x1400ffb0 },
+ { 0x0c000455, 0x1400ffb0 },
+ { 0x0c000456, 0x1400ffb0 },
+ { 0x0c000457, 0x1400ffb0 },
+ { 0x0c000458, 0x1400ffb0 },
+ { 0x0c000459, 0x1400ffb0 },
+ { 0x0c00045a, 0x1400ffb0 },
+ { 0x0c00045b, 0x1400ffb0 },
+ { 0x0c00045c, 0x1400ffb0 },
+ { 0x0c00045d, 0x1400ffb0 },
+ { 0x0c00045e, 0x1400ffb0 },
+ { 0x0c00045f, 0x1400ffb0 },
+ { 0x0c000460, 0x24000001 },
+ { 0x0c000461, 0x1400ffff },
+ { 0x0c000462, 0x24000001 },
+ { 0x0c000463, 0x1400ffff },
+ { 0x0c000464, 0x24000001 },
+ { 0x0c000465, 0x1400ffff },
+ { 0x0c000466, 0x24000001 },
+ { 0x0c000467, 0x1400ffff },
+ { 0x0c000468, 0x24000001 },
+ { 0x0c000469, 0x1400ffff },
+ { 0x0c00046a, 0x24000001 },
+ { 0x0c00046b, 0x1400ffff },
+ { 0x0c00046c, 0x24000001 },
+ { 0x0c00046d, 0x1400ffff },
+ { 0x0c00046e, 0x24000001 },
+ { 0x0c00046f, 0x1400ffff },
+ { 0x0c000470, 0x24000001 },
+ { 0x0c000471, 0x1400ffff },
+ { 0x0c000472, 0x24000001 },
+ { 0x0c000473, 0x1400ffff },
+ { 0x0c000474, 0x24000001 },
+ { 0x0c000475, 0x1400ffff },
+ { 0x0c000476, 0x24000001 },
+ { 0x0c000477, 0x1400ffff },
+ { 0x0c000478, 0x24000001 },
+ { 0x0c000479, 0x1400ffff },
+ { 0x0c00047a, 0x24000001 },
+ { 0x0c00047b, 0x1400ffff },
+ { 0x0c00047c, 0x24000001 },
+ { 0x0c00047d, 0x1400ffff },
+ { 0x0c00047e, 0x24000001 },
+ { 0x0c00047f, 0x1400ffff },
+ { 0x0c000480, 0x24000001 },
+ { 0x0c000481, 0x1400ffff },
+ { 0x0c000482, 0x68000000 },
+ { 0x0c800483, 0x30000003 },
+ { 0x0c800488, 0x2c000001 },
+ { 0x0c00048a, 0x24000001 },
+ { 0x0c00048b, 0x1400ffff },
+ { 0x0c00048c, 0x24000001 },
+ { 0x0c00048d, 0x1400ffff },
+ { 0x0c00048e, 0x24000001 },
+ { 0x0c00048f, 0x1400ffff },
+ { 0x0c000490, 0x24000001 },
+ { 0x0c000491, 0x1400ffff },
+ { 0x0c000492, 0x24000001 },
+ { 0x0c000493, 0x1400ffff },
+ { 0x0c000494, 0x24000001 },
+ { 0x0c000495, 0x1400ffff },
+ { 0x0c000496, 0x24000001 },
+ { 0x0c000497, 0x1400ffff },
+ { 0x0c000498, 0x24000001 },
+ { 0x0c000499, 0x1400ffff },
+ { 0x0c00049a, 0x24000001 },
+ { 0x0c00049b, 0x1400ffff },
+ { 0x0c00049c, 0x24000001 },
+ { 0x0c00049d, 0x1400ffff },
+ { 0x0c00049e, 0x24000001 },
+ { 0x0c00049f, 0x1400ffff },
+ { 0x0c0004a0, 0x24000001 },
+ { 0x0c0004a1, 0x1400ffff },
+ { 0x0c0004a2, 0x24000001 },
+ { 0x0c0004a3, 0x1400ffff },
+ { 0x0c0004a4, 0x24000001 },
+ { 0x0c0004a5, 0x1400ffff },
+ { 0x0c0004a6, 0x24000001 },
+ { 0x0c0004a7, 0x1400ffff },
+ { 0x0c0004a8, 0x24000001 },
+ { 0x0c0004a9, 0x1400ffff },
+ { 0x0c0004aa, 0x24000001 },
+ { 0x0c0004ab, 0x1400ffff },
+ { 0x0c0004ac, 0x24000001 },
+ { 0x0c0004ad, 0x1400ffff },
+ { 0x0c0004ae, 0x24000001 },
+ { 0x0c0004af, 0x1400ffff },
+ { 0x0c0004b0, 0x24000001 },
+ { 0x0c0004b1, 0x1400ffff },
+ { 0x0c0004b2, 0x24000001 },
+ { 0x0c0004b3, 0x1400ffff },
+ { 0x0c0004b4, 0x24000001 },
+ { 0x0c0004b5, 0x1400ffff },
+ { 0x0c0004b6, 0x24000001 },
+ { 0x0c0004b7, 0x1400ffff },
+ { 0x0c0004b8, 0x24000001 },
+ { 0x0c0004b9, 0x1400ffff },
+ { 0x0c0004ba, 0x24000001 },
+ { 0x0c0004bb, 0x1400ffff },
+ { 0x0c0004bc, 0x24000001 },
+ { 0x0c0004bd, 0x1400ffff },
+ { 0x0c0004be, 0x24000001 },
+ { 0x0c0004bf, 0x1400ffff },
+ { 0x0c0004c0, 0x24000000 },
+ { 0x0c0004c1, 0x24000001 },
+ { 0x0c0004c2, 0x1400ffff },
+ { 0x0c0004c3, 0x24000001 },
+ { 0x0c0004c4, 0x1400ffff },
+ { 0x0c0004c5, 0x24000001 },
+ { 0x0c0004c6, 0x1400ffff },
+ { 0x0c0004c7, 0x24000001 },
+ { 0x0c0004c8, 0x1400ffff },
+ { 0x0c0004c9, 0x24000001 },
+ { 0x0c0004ca, 0x1400ffff },
+ { 0x0c0004cb, 0x24000001 },
+ { 0x0c0004cc, 0x1400ffff },
+ { 0x0c0004cd, 0x24000001 },
+ { 0x0c0004ce, 0x1400ffff },
+ { 0x0c0004d0, 0x24000001 },
+ { 0x0c0004d1, 0x1400ffff },
+ { 0x0c0004d2, 0x24000001 },
+ { 0x0c0004d3, 0x1400ffff },
+ { 0x0c0004d4, 0x24000001 },
+ { 0x0c0004d5, 0x1400ffff },
+ { 0x0c0004d6, 0x24000001 },
+ { 0x0c0004d7, 0x1400ffff },
+ { 0x0c0004d8, 0x24000001 },
+ { 0x0c0004d9, 0x1400ffff },
+ { 0x0c0004da, 0x24000001 },
+ { 0x0c0004db, 0x1400ffff },
+ { 0x0c0004dc, 0x24000001 },
+ { 0x0c0004dd, 0x1400ffff },
+ { 0x0c0004de, 0x24000001 },
+ { 0x0c0004df, 0x1400ffff },
+ { 0x0c0004e0, 0x24000001 },
+ { 0x0c0004e1, 0x1400ffff },
+ { 0x0c0004e2, 0x24000001 },
+ { 0x0c0004e3, 0x1400ffff },
+ { 0x0c0004e4, 0x24000001 },
+ { 0x0c0004e5, 0x1400ffff },
+ { 0x0c0004e6, 0x24000001 },
+ { 0x0c0004e7, 0x1400ffff },
+ { 0x0c0004e8, 0x24000001 },
+ { 0x0c0004e9, 0x1400ffff },
+ { 0x0c0004ea, 0x24000001 },
+ { 0x0c0004eb, 0x1400ffff },
+ { 0x0c0004ec, 0x24000001 },
+ { 0x0c0004ed, 0x1400ffff },
+ { 0x0c0004ee, 0x24000001 },
+ { 0x0c0004ef, 0x1400ffff },
+ { 0x0c0004f0, 0x24000001 },
+ { 0x0c0004f1, 0x1400ffff },
+ { 0x0c0004f2, 0x24000001 },
+ { 0x0c0004f3, 0x1400ffff },
+ { 0x0c0004f4, 0x24000001 },
+ { 0x0c0004f5, 0x1400ffff },
+ { 0x0c0004f6, 0x24000001 },
+ { 0x0c0004f7, 0x1400ffff },
+ { 0x0c0004f8, 0x24000001 },
+ { 0x0c0004f9, 0x1400ffff },
+ { 0x0c000500, 0x24000001 },
+ { 0x0c000501, 0x1400ffff },
+ { 0x0c000502, 0x24000001 },
+ { 0x0c000503, 0x1400ffff },
+ { 0x0c000504, 0x24000001 },
+ { 0x0c000505, 0x1400ffff },
+ { 0x0c000506, 0x24000001 },
+ { 0x0c000507, 0x1400ffff },
+ { 0x0c000508, 0x24000001 },
+ { 0x0c000509, 0x1400ffff },
+ { 0x0c00050a, 0x24000001 },
+ { 0x0c00050b, 0x1400ffff },
+ { 0x0c00050c, 0x24000001 },
+ { 0x0c00050d, 0x1400ffff },
+ { 0x0c00050e, 0x24000001 },
+ { 0x0c00050f, 0x1400ffff },
+ { 0x01000531, 0x24000030 },
+ { 0x01000532, 0x24000030 },
+ { 0x01000533, 0x24000030 },
+ { 0x01000534, 0x24000030 },
+ { 0x01000535, 0x24000030 },
+ { 0x01000536, 0x24000030 },
+ { 0x01000537, 0x24000030 },
+ { 0x01000538, 0x24000030 },
+ { 0x01000539, 0x24000030 },
+ { 0x0100053a, 0x24000030 },
+ { 0x0100053b, 0x24000030 },
+ { 0x0100053c, 0x24000030 },
+ { 0x0100053d, 0x24000030 },
+ { 0x0100053e, 0x24000030 },
+ { 0x0100053f, 0x24000030 },
+ { 0x01000540, 0x24000030 },
+ { 0x01000541, 0x24000030 },
+ { 0x01000542, 0x24000030 },
+ { 0x01000543, 0x24000030 },
+ { 0x01000544, 0x24000030 },
+ { 0x01000545, 0x24000030 },
+ { 0x01000546, 0x24000030 },
+ { 0x01000547, 0x24000030 },
+ { 0x01000548, 0x24000030 },
+ { 0x01000549, 0x24000030 },
+ { 0x0100054a, 0x24000030 },
+ { 0x0100054b, 0x24000030 },
+ { 0x0100054c, 0x24000030 },
+ { 0x0100054d, 0x24000030 },
+ { 0x0100054e, 0x24000030 },
+ { 0x0100054f, 0x24000030 },
+ { 0x01000550, 0x24000030 },
+ { 0x01000551, 0x24000030 },
+ { 0x01000552, 0x24000030 },
+ { 0x01000553, 0x24000030 },
+ { 0x01000554, 0x24000030 },
+ { 0x01000555, 0x24000030 },
+ { 0x01000556, 0x24000030 },
+ { 0x01000559, 0x18000000 },
+ { 0x0180055a, 0x54000005 },
+ { 0x01000561, 0x1400ffd0 },
+ { 0x01000562, 0x1400ffd0 },
+ { 0x01000563, 0x1400ffd0 },
+ { 0x01000564, 0x1400ffd0 },
+ { 0x01000565, 0x1400ffd0 },
+ { 0x01000566, 0x1400ffd0 },
+ { 0x01000567, 0x1400ffd0 },
+ { 0x01000568, 0x1400ffd0 },
+ { 0x01000569, 0x1400ffd0 },
+ { 0x0100056a, 0x1400ffd0 },
+ { 0x0100056b, 0x1400ffd0 },
+ { 0x0100056c, 0x1400ffd0 },
+ { 0x0100056d, 0x1400ffd0 },
+ { 0x0100056e, 0x1400ffd0 },
+ { 0x0100056f, 0x1400ffd0 },
+ { 0x01000570, 0x1400ffd0 },
+ { 0x01000571, 0x1400ffd0 },
+ { 0x01000572, 0x1400ffd0 },
+ { 0x01000573, 0x1400ffd0 },
+ { 0x01000574, 0x1400ffd0 },
+ { 0x01000575, 0x1400ffd0 },
+ { 0x01000576, 0x1400ffd0 },
+ { 0x01000577, 0x1400ffd0 },
+ { 0x01000578, 0x1400ffd0 },
+ { 0x01000579, 0x1400ffd0 },
+ { 0x0100057a, 0x1400ffd0 },
+ { 0x0100057b, 0x1400ffd0 },
+ { 0x0100057c, 0x1400ffd0 },
+ { 0x0100057d, 0x1400ffd0 },
+ { 0x0100057e, 0x1400ffd0 },
+ { 0x0100057f, 0x1400ffd0 },
+ { 0x01000580, 0x1400ffd0 },
+ { 0x01000581, 0x1400ffd0 },
+ { 0x01000582, 0x1400ffd0 },
+ { 0x01000583, 0x1400ffd0 },
+ { 0x01000584, 0x1400ffd0 },
+ { 0x01000585, 0x1400ffd0 },
+ { 0x01000586, 0x1400ffd0 },
+ { 0x01000587, 0x14000000 },
+ { 0x09000589, 0x54000000 },
+ { 0x0100058a, 0x44000000 },
+ { 0x19800591, 0x30000028 },
+ { 0x198005bb, 0x30000002 },
+ { 0x190005be, 0x54000000 },
+ { 0x190005bf, 0x30000000 },
+ { 0x190005c0, 0x54000000 },
+ { 0x198005c1, 0x30000001 },
+ { 0x190005c3, 0x54000000 },
+ { 0x198005c4, 0x30000001 },
+ { 0x190005c6, 0x54000000 },
+ { 0x190005c7, 0x30000000 },
+ { 0x198005d0, 0x1c00001a },
+ { 0x198005f0, 0x1c000002 },
+ { 0x198005f3, 0x54000001 },
+ { 0x09800600, 0x04000003 },
+ { 0x0000060b, 0x5c000000 },
+ { 0x0980060c, 0x54000001 },
+ { 0x0080060e, 0x68000001 },
+ { 0x00800610, 0x30000005 },
+ { 0x0900061b, 0x54000000 },
+ { 0x0080061e, 0x54000001 },
+ { 0x00800621, 0x1c000019 },
+ { 0x09000640, 0x18000000 },
+ { 0x00800641, 0x1c000009 },
+ { 0x1b80064b, 0x30000013 },
+ { 0x09800660, 0x34000009 },
+ { 0x0080066a, 0x54000003 },
+ { 0x0080066e, 0x1c000001 },
+ { 0x1b000670, 0x30000000 },
+ { 0x00800671, 0x1c000062 },
+ { 0x000006d4, 0x54000000 },
+ { 0x000006d5, 0x1c000000 },
+ { 0x008006d6, 0x30000006 },
+ { 0x090006dd, 0x04000000 },
+ { 0x000006de, 0x2c000000 },
+ { 0x008006df, 0x30000005 },
+ { 0x008006e5, 0x18000001 },
+ { 0x008006e7, 0x30000001 },
+ { 0x000006e9, 0x68000000 },
+ { 0x008006ea, 0x30000003 },
+ { 0x008006ee, 0x1c000001 },
+ { 0x008006f0, 0x34000009 },
+ { 0x008006fa, 0x1c000002 },
+ { 0x008006fd, 0x68000001 },
+ { 0x000006ff, 0x1c000000 },
+ { 0x31800700, 0x5400000d },
+ { 0x3100070f, 0x04000000 },
+ { 0x31000710, 0x1c000000 },
+ { 0x31000711, 0x30000000 },
+ { 0x31800712, 0x1c00001d },
+ { 0x31800730, 0x3000001a },
+ { 0x3180074d, 0x1c000020 },
+ { 0x37800780, 0x1c000025 },
+ { 0x378007a6, 0x3000000a },
+ { 0x370007b1, 0x1c000000 },
+ { 0x0e800901, 0x30000001 },
+ { 0x0e000903, 0x28000000 },
+ { 0x0e800904, 0x1c000035 },
+ { 0x0e00093c, 0x30000000 },
+ { 0x0e00093d, 0x1c000000 },
+ { 0x0e80093e, 0x28000002 },
+ { 0x0e800941, 0x30000007 },
+ { 0x0e800949, 0x28000003 },
+ { 0x0e00094d, 0x30000000 },
+ { 0x0e000950, 0x1c000000 },
+ { 0x0e800951, 0x30000003 },
+ { 0x0e800958, 0x1c000009 },
+ { 0x0e800962, 0x30000001 },
+ { 0x09800964, 0x54000001 },
+ { 0x0e800966, 0x34000009 },
+ { 0x09000970, 0x54000000 },
+ { 0x0e00097d, 0x1c000000 },
+ { 0x02000981, 0x30000000 },
+ { 0x02800982, 0x28000001 },
+ { 0x02800985, 0x1c000007 },
+ { 0x0280098f, 0x1c000001 },
+ { 0x02800993, 0x1c000015 },
+ { 0x028009aa, 0x1c000006 },
+ { 0x020009b2, 0x1c000000 },
+ { 0x028009b6, 0x1c000003 },
+ { 0x020009bc, 0x30000000 },
+ { 0x020009bd, 0x1c000000 },
+ { 0x028009be, 0x28000002 },
+ { 0x028009c1, 0x30000003 },
+ { 0x028009c7, 0x28000001 },
+ { 0x028009cb, 0x28000001 },
+ { 0x020009cd, 0x30000000 },
+ { 0x020009ce, 0x1c000000 },
+ { 0x020009d7, 0x28000000 },
+ { 0x028009dc, 0x1c000001 },
+ { 0x028009df, 0x1c000002 },
+ { 0x028009e2, 0x30000001 },
+ { 0x028009e6, 0x34000009 },
+ { 0x028009f0, 0x1c000001 },
+ { 0x028009f2, 0x5c000001 },
+ { 0x028009f4, 0x3c000005 },
+ { 0x020009fa, 0x68000000 },
+ { 0x15800a01, 0x30000001 },
+ { 0x15000a03, 0x28000000 },
+ { 0x15800a05, 0x1c000005 },
+ { 0x15800a0f, 0x1c000001 },
+ { 0x15800a13, 0x1c000015 },
+ { 0x15800a2a, 0x1c000006 },
+ { 0x15800a32, 0x1c000001 },
+ { 0x15800a35, 0x1c000001 },
+ { 0x15800a38, 0x1c000001 },
+ { 0x15000a3c, 0x30000000 },
+ { 0x15800a3e, 0x28000002 },
+ { 0x15800a41, 0x30000001 },
+ { 0x15800a47, 0x30000001 },
+ { 0x15800a4b, 0x30000002 },
+ { 0x15800a59, 0x1c000003 },
+ { 0x15000a5e, 0x1c000000 },
+ { 0x15800a66, 0x34000009 },
+ { 0x15800a70, 0x30000001 },
+ { 0x15800a72, 0x1c000002 },
+ { 0x14800a81, 0x30000001 },
+ { 0x14000a83, 0x28000000 },
+ { 0x14800a85, 0x1c000008 },
+ { 0x14800a8f, 0x1c000002 },
+ { 0x14800a93, 0x1c000015 },
+ { 0x14800aaa, 0x1c000006 },
+ { 0x14800ab2, 0x1c000001 },
+ { 0x14800ab5, 0x1c000004 },
+ { 0x14000abc, 0x30000000 },
+ { 0x14000abd, 0x1c000000 },
+ { 0x14800abe, 0x28000002 },
+ { 0x14800ac1, 0x30000004 },
+ { 0x14800ac7, 0x30000001 },
+ { 0x14000ac9, 0x28000000 },
+ { 0x14800acb, 0x28000001 },
+ { 0x14000acd, 0x30000000 },
+ { 0x14000ad0, 0x1c000000 },
+ { 0x14800ae0, 0x1c000001 },
+ { 0x14800ae2, 0x30000001 },
+ { 0x14800ae6, 0x34000009 },
+ { 0x14000af1, 0x5c000000 },
+ { 0x2b000b01, 0x30000000 },
+ { 0x2b800b02, 0x28000001 },
+ { 0x2b800b05, 0x1c000007 },
+ { 0x2b800b0f, 0x1c000001 },
+ { 0x2b800b13, 0x1c000015 },
+ { 0x2b800b2a, 0x1c000006 },
+ { 0x2b800b32, 0x1c000001 },
+ { 0x2b800b35, 0x1c000004 },
+ { 0x2b000b3c, 0x30000000 },
+ { 0x2b000b3d, 0x1c000000 },
+ { 0x2b000b3e, 0x28000000 },
+ { 0x2b000b3f, 0x30000000 },
+ { 0x2b000b40, 0x28000000 },
+ { 0x2b800b41, 0x30000002 },
+ { 0x2b800b47, 0x28000001 },
+ { 0x2b800b4b, 0x28000001 },
+ { 0x2b000b4d, 0x30000000 },
+ { 0x2b000b56, 0x30000000 },
+ { 0x2b000b57, 0x28000000 },
+ { 0x2b800b5c, 0x1c000001 },
+ { 0x2b800b5f, 0x1c000002 },
+ { 0x2b800b66, 0x34000009 },
+ { 0x2b000b70, 0x68000000 },
+ { 0x2b000b71, 0x1c000000 },
+ { 0x35000b82, 0x30000000 },
+ { 0x35000b83, 0x1c000000 },
+ { 0x35800b85, 0x1c000005 },
+ { 0x35800b8e, 0x1c000002 },
+ { 0x35800b92, 0x1c000003 },
+ { 0x35800b99, 0x1c000001 },
+ { 0x35000b9c, 0x1c000000 },
+ { 0x35800b9e, 0x1c000001 },
+ { 0x35800ba3, 0x1c000001 },
+ { 0x35800ba8, 0x1c000002 },
+ { 0x35800bae, 0x1c00000b },
+ { 0x35800bbe, 0x28000001 },
+ { 0x35000bc0, 0x30000000 },
+ { 0x35800bc1, 0x28000001 },
+ { 0x35800bc6, 0x28000002 },
+ { 0x35800bca, 0x28000002 },
+ { 0x35000bcd, 0x30000000 },
+ { 0x35000bd7, 0x28000000 },
+ { 0x35800be6, 0x34000009 },
+ { 0x35800bf0, 0x3c000002 },
+ { 0x35800bf3, 0x68000005 },
+ { 0x35000bf9, 0x5c000000 },
+ { 0x35000bfa, 0x68000000 },
+ { 0x36800c01, 0x28000002 },
+ { 0x36800c05, 0x1c000007 },
+ { 0x36800c0e, 0x1c000002 },
+ { 0x36800c12, 0x1c000016 },
+ { 0x36800c2a, 0x1c000009 },
+ { 0x36800c35, 0x1c000004 },
+ { 0x36800c3e, 0x30000002 },
+ { 0x36800c41, 0x28000003 },
+ { 0x36800c46, 0x30000002 },
+ { 0x36800c4a, 0x30000003 },
+ { 0x36800c55, 0x30000001 },
+ { 0x36800c60, 0x1c000001 },
+ { 0x36800c66, 0x34000009 },
+ { 0x1c800c82, 0x28000001 },
+ { 0x1c800c85, 0x1c000007 },
+ { 0x1c800c8e, 0x1c000002 },
+ { 0x1c800c92, 0x1c000016 },
+ { 0x1c800caa, 0x1c000009 },
+ { 0x1c800cb5, 0x1c000004 },
+ { 0x1c000cbc, 0x30000000 },
+ { 0x1c000cbd, 0x1c000000 },
+ { 0x1c000cbe, 0x28000000 },
+ { 0x1c000cbf, 0x30000000 },
+ { 0x1c800cc0, 0x28000004 },
+ { 0x1c000cc6, 0x30000000 },
+ { 0x1c800cc7, 0x28000001 },
+ { 0x1c800cca, 0x28000001 },
+ { 0x1c800ccc, 0x30000001 },
+ { 0x1c800cd5, 0x28000001 },
+ { 0x1c000cde, 0x1c000000 },
+ { 0x1c800ce0, 0x1c000001 },
+ { 0x1c800ce6, 0x34000009 },
+ { 0x24800d02, 0x28000001 },
+ { 0x24800d05, 0x1c000007 },
+ { 0x24800d0e, 0x1c000002 },
+ { 0x24800d12, 0x1c000016 },
+ { 0x24800d2a, 0x1c00000f },
+ { 0x24800d3e, 0x28000002 },
+ { 0x24800d41, 0x30000002 },
+ { 0x24800d46, 0x28000002 },
+ { 0x24800d4a, 0x28000002 },
+ { 0x24000d4d, 0x30000000 },
+ { 0x24000d57, 0x28000000 },
+ { 0x24800d60, 0x1c000001 },
+ { 0x24800d66, 0x34000009 },
+ { 0x2f800d82, 0x28000001 },
+ { 0x2f800d85, 0x1c000011 },
+ { 0x2f800d9a, 0x1c000017 },
+ { 0x2f800db3, 0x1c000008 },
+ { 0x2f000dbd, 0x1c000000 },
+ { 0x2f800dc0, 0x1c000006 },
+ { 0x2f000dca, 0x30000000 },
+ { 0x2f800dcf, 0x28000002 },
+ { 0x2f800dd2, 0x30000002 },
+ { 0x2f000dd6, 0x30000000 },
+ { 0x2f800dd8, 0x28000007 },
+ { 0x2f800df2, 0x28000001 },
+ { 0x2f000df4, 0x54000000 },
+ { 0x38800e01, 0x1c00002f },
+ { 0x38000e31, 0x30000000 },
+ { 0x38800e32, 0x1c000001 },
+ { 0x38800e34, 0x30000006 },
+ { 0x09000e3f, 0x5c000000 },
+ { 0x38800e40, 0x1c000005 },
+ { 0x38000e46, 0x18000000 },
+ { 0x38800e47, 0x30000007 },
+ { 0x38000e4f, 0x54000000 },
+ { 0x38800e50, 0x34000009 },
+ { 0x38800e5a, 0x54000001 },
+ { 0x20800e81, 0x1c000001 },
+ { 0x20000e84, 0x1c000000 },
+ { 0x20800e87, 0x1c000001 },
+ { 0x20000e8a, 0x1c000000 },
+ { 0x20000e8d, 0x1c000000 },
+ { 0x20800e94, 0x1c000003 },
+ { 0x20800e99, 0x1c000006 },
+ { 0x20800ea1, 0x1c000002 },
+ { 0x20000ea5, 0x1c000000 },
+ { 0x20000ea7, 0x1c000000 },
+ { 0x20800eaa, 0x1c000001 },
+ { 0x20800ead, 0x1c000003 },
+ { 0x20000eb1, 0x30000000 },
+ { 0x20800eb2, 0x1c000001 },
+ { 0x20800eb4, 0x30000005 },
+ { 0x20800ebb, 0x30000001 },
+ { 0x20000ebd, 0x1c000000 },
+ { 0x20800ec0, 0x1c000004 },
+ { 0x20000ec6, 0x18000000 },
+ { 0x20800ec8, 0x30000005 },
+ { 0x20800ed0, 0x34000009 },
+ { 0x20800edc, 0x1c000001 },
+ { 0x39000f00, 0x1c000000 },
+ { 0x39800f01, 0x68000002 },
+ { 0x39800f04, 0x5400000e },
+ { 0x39800f13, 0x68000004 },
+ { 0x39800f18, 0x30000001 },
+ { 0x39800f1a, 0x68000005 },
+ { 0x39800f20, 0x34000009 },
+ { 0x39800f2a, 0x3c000009 },
+ { 0x39000f34, 0x68000000 },
+ { 0x39000f35, 0x30000000 },
+ { 0x39000f36, 0x68000000 },
+ { 0x39000f37, 0x30000000 },
+ { 0x39000f38, 0x68000000 },
+ { 0x39000f39, 0x30000000 },
+ { 0x39000f3a, 0x58000000 },
+ { 0x39000f3b, 0x48000000 },
+ { 0x39000f3c, 0x58000000 },
+ { 0x39000f3d, 0x48000000 },
+ { 0x39800f3e, 0x28000001 },
+ { 0x39800f40, 0x1c000007 },
+ { 0x39800f49, 0x1c000021 },
+ { 0x39800f71, 0x3000000d },
+ { 0x39000f7f, 0x28000000 },
+ { 0x39800f80, 0x30000004 },
+ { 0x39000f85, 0x54000000 },
+ { 0x39800f86, 0x30000001 },
+ { 0x39800f88, 0x1c000003 },
+ { 0x39800f90, 0x30000007 },
+ { 0x39800f99, 0x30000023 },
+ { 0x39800fbe, 0x68000007 },
+ { 0x39000fc6, 0x30000000 },
+ { 0x39800fc7, 0x68000005 },
+ { 0x39000fcf, 0x68000000 },
+ { 0x39800fd0, 0x54000001 },
+ { 0x26801000, 0x1c000021 },
+ { 0x26801023, 0x1c000004 },
+ { 0x26801029, 0x1c000001 },
+ { 0x2600102c, 0x28000000 },
+ { 0x2680102d, 0x30000003 },
+ { 0x26001031, 0x28000000 },
+ { 0x26001032, 0x30000000 },
+ { 0x26801036, 0x30000001 },
+ { 0x26001038, 0x28000000 },
+ { 0x26001039, 0x30000000 },
+ { 0x26801040, 0x34000009 },
+ { 0x2680104a, 0x54000005 },
+ { 0x26801050, 0x1c000005 },
+ { 0x26801056, 0x28000001 },
+ { 0x26801058, 0x30000001 },
+ { 0x100010a0, 0x24001c60 },
+ { 0x100010a1, 0x24001c60 },
+ { 0x100010a2, 0x24001c60 },
+ { 0x100010a3, 0x24001c60 },
+ { 0x100010a4, 0x24001c60 },
+ { 0x100010a5, 0x24001c60 },
+ { 0x100010a6, 0x24001c60 },
+ { 0x100010a7, 0x24001c60 },
+ { 0x100010a8, 0x24001c60 },
+ { 0x100010a9, 0x24001c60 },
+ { 0x100010aa, 0x24001c60 },
+ { 0x100010ab, 0x24001c60 },
+ { 0x100010ac, 0x24001c60 },
+ { 0x100010ad, 0x24001c60 },
+ { 0x100010ae, 0x24001c60 },
+ { 0x100010af, 0x24001c60 },
+ { 0x100010b0, 0x24001c60 },
+ { 0x100010b1, 0x24001c60 },
+ { 0x100010b2, 0x24001c60 },
+ { 0x100010b3, 0x24001c60 },
+ { 0x100010b4, 0x24001c60 },
+ { 0x100010b5, 0x24001c60 },
+ { 0x100010b6, 0x24001c60 },
+ { 0x100010b7, 0x24001c60 },
+ { 0x100010b8, 0x24001c60 },
+ { 0x100010b9, 0x24001c60 },
+ { 0x100010ba, 0x24001c60 },
+ { 0x100010bb, 0x24001c60 },
+ { 0x100010bc, 0x24001c60 },
+ { 0x100010bd, 0x24001c60 },
+ { 0x100010be, 0x24001c60 },
+ { 0x100010bf, 0x24001c60 },
+ { 0x100010c0, 0x24001c60 },
+ { 0x100010c1, 0x24001c60 },
+ { 0x100010c2, 0x24001c60 },
+ { 0x100010c3, 0x24001c60 },
+ { 0x100010c4, 0x24001c60 },
+ { 0x100010c5, 0x24001c60 },
+ { 0x108010d0, 0x1c00002a },
+ { 0x090010fb, 0x54000000 },
+ { 0x100010fc, 0x18000000 },
+ { 0x17801100, 0x1c000059 },
+ { 0x1780115f, 0x1c000043 },
+ { 0x178011a8, 0x1c000051 },
+ { 0x0f801200, 0x1c000048 },
+ { 0x0f80124a, 0x1c000003 },
+ { 0x0f801250, 0x1c000006 },
+ { 0x0f001258, 0x1c000000 },
+ { 0x0f80125a, 0x1c000003 },
+ { 0x0f801260, 0x1c000028 },
+ { 0x0f80128a, 0x1c000003 },
+ { 0x0f801290, 0x1c000020 },
+ { 0x0f8012b2, 0x1c000003 },
+ { 0x0f8012b8, 0x1c000006 },
+ { 0x0f0012c0, 0x1c000000 },
+ { 0x0f8012c2, 0x1c000003 },
+ { 0x0f8012c8, 0x1c00000e },
+ { 0x0f8012d8, 0x1c000038 },
+ { 0x0f801312, 0x1c000003 },
+ { 0x0f801318, 0x1c000042 },
+ { 0x0f00135f, 0x30000000 },
+ { 0x0f001360, 0x68000000 },
+ { 0x0f801361, 0x54000007 },
+ { 0x0f801369, 0x3c000013 },
+ { 0x0f801380, 0x1c00000f },
+ { 0x0f801390, 0x68000009 },
+ { 0x088013a0, 0x1c000054 },
+ { 0x07801401, 0x1c00026b },
+ { 0x0780166d, 0x54000001 },
+ { 0x0780166f, 0x1c000007 },
+ { 0x28001680, 0x74000000 },
+ { 0x28801681, 0x1c000019 },
+ { 0x2800169b, 0x58000000 },
+ { 0x2800169c, 0x48000000 },
+ { 0x2d8016a0, 0x1c00004a },
+ { 0x098016eb, 0x54000002 },
+ { 0x2d8016ee, 0x38000002 },
+ { 0x32801700, 0x1c00000c },
+ { 0x3280170e, 0x1c000003 },
+ { 0x32801712, 0x30000002 },
+ { 0x18801720, 0x1c000011 },
+ { 0x18801732, 0x30000002 },
+ { 0x09801735, 0x54000001 },
+ { 0x06801740, 0x1c000011 },
+ { 0x06801752, 0x30000001 },
+ { 0x33801760, 0x1c00000c },
+ { 0x3380176e, 0x1c000002 },
+ { 0x33801772, 0x30000001 },
+ { 0x1f801780, 0x1c000033 },
+ { 0x1f8017b4, 0x04000001 },
+ { 0x1f0017b6, 0x28000000 },
+ { 0x1f8017b7, 0x30000006 },
+ { 0x1f8017be, 0x28000007 },
+ { 0x1f0017c6, 0x30000000 },
+ { 0x1f8017c7, 0x28000001 },
+ { 0x1f8017c9, 0x3000000a },
+ { 0x1f8017d4, 0x54000002 },
+ { 0x1f0017d7, 0x18000000 },
+ { 0x1f8017d8, 0x54000002 },
+ { 0x1f0017db, 0x5c000000 },
+ { 0x1f0017dc, 0x1c000000 },
+ { 0x1f0017dd, 0x30000000 },
+ { 0x1f8017e0, 0x34000009 },
+ { 0x1f8017f0, 0x3c000009 },
+ { 0x25801800, 0x54000005 },
+ { 0x25001806, 0x44000000 },
+ { 0x25801807, 0x54000003 },
+ { 0x2580180b, 0x30000002 },
+ { 0x2500180e, 0x74000000 },
+ { 0x25801810, 0x34000009 },
+ { 0x25801820, 0x1c000022 },
+ { 0x25001843, 0x18000000 },
+ { 0x25801844, 0x1c000033 },
+ { 0x25801880, 0x1c000028 },
+ { 0x250018a9, 0x30000000 },
+ { 0x22801900, 0x1c00001c },
+ { 0x22801920, 0x30000002 },
+ { 0x22801923, 0x28000003 },
+ { 0x22801927, 0x30000001 },
+ { 0x22801929, 0x28000002 },
+ { 0x22801930, 0x28000001 },
+ { 0x22001932, 0x30000000 },
+ { 0x22801933, 0x28000005 },
+ { 0x22801939, 0x30000002 },
+ { 0x22001940, 0x68000000 },
+ { 0x22801944, 0x54000001 },
+ { 0x22801946, 0x34000009 },
+ { 0x34801950, 0x1c00001d },
+ { 0x34801970, 0x1c000004 },
+ { 0x27801980, 0x1c000029 },
+ { 0x278019b0, 0x28000010 },
+ { 0x278019c1, 0x1c000006 },
+ { 0x278019c8, 0x28000001 },
+ { 0x278019d0, 0x34000009 },
+ { 0x278019de, 0x54000001 },
+ { 0x1f8019e0, 0x6800001f },
+ { 0x05801a00, 0x1c000016 },
+ { 0x05801a17, 0x30000001 },
+ { 0x05801a19, 0x28000002 },
+ { 0x05801a1e, 0x54000001 },
+ { 0x21801d00, 0x1400002b },
+ { 0x21801d2c, 0x18000035 },
+ { 0x21801d62, 0x14000015 },
+ { 0x0c001d78, 0x18000000 },
+ { 0x21801d79, 0x14000021 },
+ { 0x21801d9b, 0x18000024 },
+ { 0x1b801dc0, 0x30000003 },
+ { 0x21001e00, 0x24000001 },
+ { 0x21001e01, 0x1400ffff },
+ { 0x21001e02, 0x24000001 },
+ { 0x21001e03, 0x1400ffff },
+ { 0x21001e04, 0x24000001 },
+ { 0x21001e05, 0x1400ffff },
+ { 0x21001e06, 0x24000001 },
+ { 0x21001e07, 0x1400ffff },
+ { 0x21001e08, 0x24000001 },
+ { 0x21001e09, 0x1400ffff },
+ { 0x21001e0a, 0x24000001 },
+ { 0x21001e0b, 0x1400ffff },
+ { 0x21001e0c, 0x24000001 },
+ { 0x21001e0d, 0x1400ffff },
+ { 0x21001e0e, 0x24000001 },
+ { 0x21001e0f, 0x1400ffff },
+ { 0x21001e10, 0x24000001 },
+ { 0x21001e11, 0x1400ffff },
+ { 0x21001e12, 0x24000001 },
+ { 0x21001e13, 0x1400ffff },
+ { 0x21001e14, 0x24000001 },
+ { 0x21001e15, 0x1400ffff },
+ { 0x21001e16, 0x24000001 },
+ { 0x21001e17, 0x1400ffff },
+ { 0x21001e18, 0x24000001 },
+ { 0x21001e19, 0x1400ffff },
+ { 0x21001e1a, 0x24000001 },
+ { 0x21001e1b, 0x1400ffff },
+ { 0x21001e1c, 0x24000001 },
+ { 0x21001e1d, 0x1400ffff },
+ { 0x21001e1e, 0x24000001 },
+ { 0x21001e1f, 0x1400ffff },
+ { 0x21001e20, 0x24000001 },
+ { 0x21001e21, 0x1400ffff },
+ { 0x21001e22, 0x24000001 },
+ { 0x21001e23, 0x1400ffff },
+ { 0x21001e24, 0x24000001 },
+ { 0x21001e25, 0x1400ffff },
+ { 0x21001e26, 0x24000001 },
+ { 0x21001e27, 0x1400ffff },
+ { 0x21001e28, 0x24000001 },
+ { 0x21001e29, 0x1400ffff },
+ { 0x21001e2a, 0x24000001 },
+ { 0x21001e2b, 0x1400ffff },
+ { 0x21001e2c, 0x24000001 },
+ { 0x21001e2d, 0x1400ffff },
+ { 0x21001e2e, 0x24000001 },
+ { 0x21001e2f, 0x1400ffff },
+ { 0x21001e30, 0x24000001 },
+ { 0x21001e31, 0x1400ffff },
+ { 0x21001e32, 0x24000001 },
+ { 0x21001e33, 0x1400ffff },
+ { 0x21001e34, 0x24000001 },
+ { 0x21001e35, 0x1400ffff },
+ { 0x21001e36, 0x24000001 },
+ { 0x21001e37, 0x1400ffff },
+ { 0x21001e38, 0x24000001 },
+ { 0x21001e39, 0x1400ffff },
+ { 0x21001e3a, 0x24000001 },
+ { 0x21001e3b, 0x1400ffff },
+ { 0x21001e3c, 0x24000001 },
+ { 0x21001e3d, 0x1400ffff },
+ { 0x21001e3e, 0x24000001 },
+ { 0x21001e3f, 0x1400ffff },
+ { 0x21001e40, 0x24000001 },
+ { 0x21001e41, 0x1400ffff },
+ { 0x21001e42, 0x24000001 },
+ { 0x21001e43, 0x1400ffff },
+ { 0x21001e44, 0x24000001 },
+ { 0x21001e45, 0x1400ffff },
+ { 0x21001e46, 0x24000001 },
+ { 0x21001e47, 0x1400ffff },
+ { 0x21001e48, 0x24000001 },
+ { 0x21001e49, 0x1400ffff },
+ { 0x21001e4a, 0x24000001 },
+ { 0x21001e4b, 0x1400ffff },
+ { 0x21001e4c, 0x24000001 },
+ { 0x21001e4d, 0x1400ffff },
+ { 0x21001e4e, 0x24000001 },
+ { 0x21001e4f, 0x1400ffff },
+ { 0x21001e50, 0x24000001 },
+ { 0x21001e51, 0x1400ffff },
+ { 0x21001e52, 0x24000001 },
+ { 0x21001e53, 0x1400ffff },
+ { 0x21001e54, 0x24000001 },
+ { 0x21001e55, 0x1400ffff },
+ { 0x21001e56, 0x24000001 },
+ { 0x21001e57, 0x1400ffff },
+ { 0x21001e58, 0x24000001 },
+ { 0x21001e59, 0x1400ffff },
+ { 0x21001e5a, 0x24000001 },
+ { 0x21001e5b, 0x1400ffff },
+ { 0x21001e5c, 0x24000001 },
+ { 0x21001e5d, 0x1400ffff },
+ { 0x21001e5e, 0x24000001 },
+ { 0x21001e5f, 0x1400ffff },
+ { 0x21001e60, 0x24000001 },
+ { 0x21001e61, 0x1400ffff },
+ { 0x21001e62, 0x24000001 },
+ { 0x21001e63, 0x1400ffff },
+ { 0x21001e64, 0x24000001 },
+ { 0x21001e65, 0x1400ffff },
+ { 0x21001e66, 0x24000001 },
+ { 0x21001e67, 0x1400ffff },
+ { 0x21001e68, 0x24000001 },
+ { 0x21001e69, 0x1400ffff },
+ { 0x21001e6a, 0x24000001 },
+ { 0x21001e6b, 0x1400ffff },
+ { 0x21001e6c, 0x24000001 },
+ { 0x21001e6d, 0x1400ffff },
+ { 0x21001e6e, 0x24000001 },
+ { 0x21001e6f, 0x1400ffff },
+ { 0x21001e70, 0x24000001 },
+ { 0x21001e71, 0x1400ffff },
+ { 0x21001e72, 0x24000001 },
+ { 0x21001e73, 0x1400ffff },
+ { 0x21001e74, 0x24000001 },
+ { 0x21001e75, 0x1400ffff },
+ { 0x21001e76, 0x24000001 },
+ { 0x21001e77, 0x1400ffff },
+ { 0x21001e78, 0x24000001 },
+ { 0x21001e79, 0x1400ffff },
+ { 0x21001e7a, 0x24000001 },
+ { 0x21001e7b, 0x1400ffff },
+ { 0x21001e7c, 0x24000001 },
+ { 0x21001e7d, 0x1400ffff },
+ { 0x21001e7e, 0x24000001 },
+ { 0x21001e7f, 0x1400ffff },
+ { 0x21001e80, 0x24000001 },
+ { 0x21001e81, 0x1400ffff },
+ { 0x21001e82, 0x24000001 },
+ { 0x21001e83, 0x1400ffff },
+ { 0x21001e84, 0x24000001 },
+ { 0x21001e85, 0x1400ffff },
+ { 0x21001e86, 0x24000001 },
+ { 0x21001e87, 0x1400ffff },
+ { 0x21001e88, 0x24000001 },
+ { 0x21001e89, 0x1400ffff },
+ { 0x21001e8a, 0x24000001 },
+ { 0x21001e8b, 0x1400ffff },
+ { 0x21001e8c, 0x24000001 },
+ { 0x21001e8d, 0x1400ffff },
+ { 0x21001e8e, 0x24000001 },
+ { 0x21001e8f, 0x1400ffff },
+ { 0x21001e90, 0x24000001 },
+ { 0x21001e91, 0x1400ffff },
+ { 0x21001e92, 0x24000001 },
+ { 0x21001e93, 0x1400ffff },
+ { 0x21001e94, 0x24000001 },
+ { 0x21001e95, 0x1400ffff },
+ { 0x21801e96, 0x14000004 },
+ { 0x21001e9b, 0x1400ffc5 },
+ { 0x21001ea0, 0x24000001 },
+ { 0x21001ea1, 0x1400ffff },
+ { 0x21001ea2, 0x24000001 },
+ { 0x21001ea3, 0x1400ffff },
+ { 0x21001ea4, 0x24000001 },
+ { 0x21001ea5, 0x1400ffff },
+ { 0x21001ea6, 0x24000001 },
+ { 0x21001ea7, 0x1400ffff },
+ { 0x21001ea8, 0x24000001 },
+ { 0x21001ea9, 0x1400ffff },
+ { 0x21001eaa, 0x24000001 },
+ { 0x21001eab, 0x1400ffff },
+ { 0x21001eac, 0x24000001 },
+ { 0x21001ead, 0x1400ffff },
+ { 0x21001eae, 0x24000001 },
+ { 0x21001eaf, 0x1400ffff },
+ { 0x21001eb0, 0x24000001 },
+ { 0x21001eb1, 0x1400ffff },
+ { 0x21001eb2, 0x24000001 },
+ { 0x21001eb3, 0x1400ffff },
+ { 0x21001eb4, 0x24000001 },
+ { 0x21001eb5, 0x1400ffff },
+ { 0x21001eb6, 0x24000001 },
+ { 0x21001eb7, 0x1400ffff },
+ { 0x21001eb8, 0x24000001 },
+ { 0x21001eb9, 0x1400ffff },
+ { 0x21001eba, 0x24000001 },
+ { 0x21001ebb, 0x1400ffff },
+ { 0x21001ebc, 0x24000001 },
+ { 0x21001ebd, 0x1400ffff },
+ { 0x21001ebe, 0x24000001 },
+ { 0x21001ebf, 0x1400ffff },
+ { 0x21001ec0, 0x24000001 },
+ { 0x21001ec1, 0x1400ffff },
+ { 0x21001ec2, 0x24000001 },
+ { 0x21001ec3, 0x1400ffff },
+ { 0x21001ec4, 0x24000001 },
+ { 0x21001ec5, 0x1400ffff },
+ { 0x21001ec6, 0x24000001 },
+ { 0x21001ec7, 0x1400ffff },
+ { 0x21001ec8, 0x24000001 },
+ { 0x21001ec9, 0x1400ffff },
+ { 0x21001eca, 0x24000001 },
+ { 0x21001ecb, 0x1400ffff },
+ { 0x21001ecc, 0x24000001 },
+ { 0x21001ecd, 0x1400ffff },
+ { 0x21001ece, 0x24000001 },
+ { 0x21001ecf, 0x1400ffff },
+ { 0x21001ed0, 0x24000001 },
+ { 0x21001ed1, 0x1400ffff },
+ { 0x21001ed2, 0x24000001 },
+ { 0x21001ed3, 0x1400ffff },
+ { 0x21001ed4, 0x24000001 },
+ { 0x21001ed5, 0x1400ffff },
+ { 0x21001ed6, 0x24000001 },
+ { 0x21001ed7, 0x1400ffff },
+ { 0x21001ed8, 0x24000001 },
+ { 0x21001ed9, 0x1400ffff },
+ { 0x21001eda, 0x24000001 },
+ { 0x21001edb, 0x1400ffff },
+ { 0x21001edc, 0x24000001 },
+ { 0x21001edd, 0x1400ffff },
+ { 0x21001ede, 0x24000001 },
+ { 0x21001edf, 0x1400ffff },
+ { 0x21001ee0, 0x24000001 },
+ { 0x21001ee1, 0x1400ffff },
+ { 0x21001ee2, 0x24000001 },
+ { 0x21001ee3, 0x1400ffff },
+ { 0x21001ee4, 0x24000001 },
+ { 0x21001ee5, 0x1400ffff },
+ { 0x21001ee6, 0x24000001 },
+ { 0x21001ee7, 0x1400ffff },
+ { 0x21001ee8, 0x24000001 },
+ { 0x21001ee9, 0x1400ffff },
+ { 0x21001eea, 0x24000001 },
+ { 0x21001eeb, 0x1400ffff },
+ { 0x21001eec, 0x24000001 },
+ { 0x21001eed, 0x1400ffff },
+ { 0x21001eee, 0x24000001 },
+ { 0x21001eef, 0x1400ffff },
+ { 0x21001ef0, 0x24000001 },
+ { 0x21001ef1, 0x1400ffff },
+ { 0x21001ef2, 0x24000001 },
+ { 0x21001ef3, 0x1400ffff },
+ { 0x21001ef4, 0x24000001 },
+ { 0x21001ef5, 0x1400ffff },
+ { 0x21001ef6, 0x24000001 },
+ { 0x21001ef7, 0x1400ffff },
+ { 0x21001ef8, 0x24000001 },
+ { 0x21001ef9, 0x1400ffff },
+ { 0x13001f00, 0x14000008 },
+ { 0x13001f01, 0x14000008 },
+ { 0x13001f02, 0x14000008 },
+ { 0x13001f03, 0x14000008 },
+ { 0x13001f04, 0x14000008 },
+ { 0x13001f05, 0x14000008 },
+ { 0x13001f06, 0x14000008 },
+ { 0x13001f07, 0x14000008 },
+ { 0x13001f08, 0x2400fff8 },
+ { 0x13001f09, 0x2400fff8 },
+ { 0x13001f0a, 0x2400fff8 },
+ { 0x13001f0b, 0x2400fff8 },
+ { 0x13001f0c, 0x2400fff8 },
+ { 0x13001f0d, 0x2400fff8 },
+ { 0x13001f0e, 0x2400fff8 },
+ { 0x13001f0f, 0x2400fff8 },
+ { 0x13001f10, 0x14000008 },
+ { 0x13001f11, 0x14000008 },
+ { 0x13001f12, 0x14000008 },
+ { 0x13001f13, 0x14000008 },
+ { 0x13001f14, 0x14000008 },
+ { 0x13001f15, 0x14000008 },
+ { 0x13001f18, 0x2400fff8 },
+ { 0x13001f19, 0x2400fff8 },
+ { 0x13001f1a, 0x2400fff8 },
+ { 0x13001f1b, 0x2400fff8 },
+ { 0x13001f1c, 0x2400fff8 },
+ { 0x13001f1d, 0x2400fff8 },
+ { 0x13001f20, 0x14000008 },
+ { 0x13001f21, 0x14000008 },
+ { 0x13001f22, 0x14000008 },
+ { 0x13001f23, 0x14000008 },
+ { 0x13001f24, 0x14000008 },
+ { 0x13001f25, 0x14000008 },
+ { 0x13001f26, 0x14000008 },
+ { 0x13001f27, 0x14000008 },
+ { 0x13001f28, 0x2400fff8 },
+ { 0x13001f29, 0x2400fff8 },
+ { 0x13001f2a, 0x2400fff8 },
+ { 0x13001f2b, 0x2400fff8 },
+ { 0x13001f2c, 0x2400fff8 },
+ { 0x13001f2d, 0x2400fff8 },
+ { 0x13001f2e, 0x2400fff8 },
+ { 0x13001f2f, 0x2400fff8 },
+ { 0x13001f30, 0x14000008 },
+ { 0x13001f31, 0x14000008 },
+ { 0x13001f32, 0x14000008 },
+ { 0x13001f33, 0x14000008 },
+ { 0x13001f34, 0x14000008 },
+ { 0x13001f35, 0x14000008 },
+ { 0x13001f36, 0x14000008 },
+ { 0x13001f37, 0x14000008 },
+ { 0x13001f38, 0x2400fff8 },
+ { 0x13001f39, 0x2400fff8 },
+ { 0x13001f3a, 0x2400fff8 },
+ { 0x13001f3b, 0x2400fff8 },
+ { 0x13001f3c, 0x2400fff8 },
+ { 0x13001f3d, 0x2400fff8 },
+ { 0x13001f3e, 0x2400fff8 },
+ { 0x13001f3f, 0x2400fff8 },
+ { 0x13001f40, 0x14000008 },
+ { 0x13001f41, 0x14000008 },
+ { 0x13001f42, 0x14000008 },
+ { 0x13001f43, 0x14000008 },
+ { 0x13001f44, 0x14000008 },
+ { 0x13001f45, 0x14000008 },
+ { 0x13001f48, 0x2400fff8 },
+ { 0x13001f49, 0x2400fff8 },
+ { 0x13001f4a, 0x2400fff8 },
+ { 0x13001f4b, 0x2400fff8 },
+ { 0x13001f4c, 0x2400fff8 },
+ { 0x13001f4d, 0x2400fff8 },
+ { 0x13001f50, 0x14000000 },
+ { 0x13001f51, 0x14000008 },
+ { 0x13001f52, 0x14000000 },
+ { 0x13001f53, 0x14000008 },
+ { 0x13001f54, 0x14000000 },
+ { 0x13001f55, 0x14000008 },
+ { 0x13001f56, 0x14000000 },
+ { 0x13001f57, 0x14000008 },
+ { 0x13001f59, 0x2400fff8 },
+ { 0x13001f5b, 0x2400fff8 },
+ { 0x13001f5d, 0x2400fff8 },
+ { 0x13001f5f, 0x2400fff8 },
+ { 0x13001f60, 0x14000008 },
+ { 0x13001f61, 0x14000008 },
+ { 0x13001f62, 0x14000008 },
+ { 0x13001f63, 0x14000008 },
+ { 0x13001f64, 0x14000008 },
+ { 0x13001f65, 0x14000008 },
+ { 0x13001f66, 0x14000008 },
+ { 0x13001f67, 0x14000008 },
+ { 0x13001f68, 0x2400fff8 },
+ { 0x13001f69, 0x2400fff8 },
+ { 0x13001f6a, 0x2400fff8 },
+ { 0x13001f6b, 0x2400fff8 },
+ { 0x13001f6c, 0x2400fff8 },
+ { 0x13001f6d, 0x2400fff8 },
+ { 0x13001f6e, 0x2400fff8 },
+ { 0x13001f6f, 0x2400fff8 },
+ { 0x13001f70, 0x1400004a },
+ { 0x13001f71, 0x1400004a },
+ { 0x13001f72, 0x14000056 },
+ { 0x13001f73, 0x14000056 },
+ { 0x13001f74, 0x14000056 },
+ { 0x13001f75, 0x14000056 },
+ { 0x13001f76, 0x14000064 },
+ { 0x13001f77, 0x14000064 },
+ { 0x13001f78, 0x14000080 },
+ { 0x13001f79, 0x14000080 },
+ { 0x13001f7a, 0x14000070 },
+ { 0x13001f7b, 0x14000070 },
+ { 0x13001f7c, 0x1400007e },
+ { 0x13001f7d, 0x1400007e },
+ { 0x13001f80, 0x14000008 },
+ { 0x13001f81, 0x14000008 },
+ { 0x13001f82, 0x14000008 },
+ { 0x13001f83, 0x14000008 },
+ { 0x13001f84, 0x14000008 },
+ { 0x13001f85, 0x14000008 },
+ { 0x13001f86, 0x14000008 },
+ { 0x13001f87, 0x14000008 },
+ { 0x13001f88, 0x2000fff8 },
+ { 0x13001f89, 0x2000fff8 },
+ { 0x13001f8a, 0x2000fff8 },
+ { 0x13001f8b, 0x2000fff8 },
+ { 0x13001f8c, 0x2000fff8 },
+ { 0x13001f8d, 0x2000fff8 },
+ { 0x13001f8e, 0x2000fff8 },
+ { 0x13001f8f, 0x2000fff8 },
+ { 0x13001f90, 0x14000008 },
+ { 0x13001f91, 0x14000008 },
+ { 0x13001f92, 0x14000008 },
+ { 0x13001f93, 0x14000008 },
+ { 0x13001f94, 0x14000008 },
+ { 0x13001f95, 0x14000008 },
+ { 0x13001f96, 0x14000008 },
+ { 0x13001f97, 0x14000008 },
+ { 0x13001f98, 0x2000fff8 },
+ { 0x13001f99, 0x2000fff8 },
+ { 0x13001f9a, 0x2000fff8 },
+ { 0x13001f9b, 0x2000fff8 },
+ { 0x13001f9c, 0x2000fff8 },
+ { 0x13001f9d, 0x2000fff8 },
+ { 0x13001f9e, 0x2000fff8 },
+ { 0x13001f9f, 0x2000fff8 },
+ { 0x13001fa0, 0x14000008 },
+ { 0x13001fa1, 0x14000008 },
+ { 0x13001fa2, 0x14000008 },
+ { 0x13001fa3, 0x14000008 },
+ { 0x13001fa4, 0x14000008 },
+ { 0x13001fa5, 0x14000008 },
+ { 0x13001fa6, 0x14000008 },
+ { 0x13001fa7, 0x14000008 },
+ { 0x13001fa8, 0x2000fff8 },
+ { 0x13001fa9, 0x2000fff8 },
+ { 0x13001faa, 0x2000fff8 },
+ { 0x13001fab, 0x2000fff8 },
+ { 0x13001fac, 0x2000fff8 },
+ { 0x13001fad, 0x2000fff8 },
+ { 0x13001fae, 0x2000fff8 },
+ { 0x13001faf, 0x2000fff8 },
+ { 0x13001fb0, 0x14000008 },
+ { 0x13001fb1, 0x14000008 },
+ { 0x13001fb2, 0x14000000 },
+ { 0x13001fb3, 0x14000009 },
+ { 0x13001fb4, 0x14000000 },
+ { 0x13801fb6, 0x14000001 },
+ { 0x13001fb8, 0x2400fff8 },
+ { 0x13001fb9, 0x2400fff8 },
+ { 0x13001fba, 0x2400ffb6 },
+ { 0x13001fbb, 0x2400ffb6 },
+ { 0x13001fbc, 0x2000fff7 },
+ { 0x13001fbd, 0x60000000 },
+ { 0x13001fbe, 0x1400e3db },
+ { 0x13801fbf, 0x60000002 },
+ { 0x13001fc2, 0x14000000 },
+ { 0x13001fc3, 0x14000009 },
+ { 0x13001fc4, 0x14000000 },
+ { 0x13801fc6, 0x14000001 },
+ { 0x13001fc8, 0x2400ffaa },
+ { 0x13001fc9, 0x2400ffaa },
+ { 0x13001fca, 0x2400ffaa },
+ { 0x13001fcb, 0x2400ffaa },
+ { 0x13001fcc, 0x2000fff7 },
+ { 0x13801fcd, 0x60000002 },
+ { 0x13001fd0, 0x14000008 },
+ { 0x13001fd1, 0x14000008 },
+ { 0x13801fd2, 0x14000001 },
+ { 0x13801fd6, 0x14000001 },
+ { 0x13001fd8, 0x2400fff8 },
+ { 0x13001fd9, 0x2400fff8 },
+ { 0x13001fda, 0x2400ff9c },
+ { 0x13001fdb, 0x2400ff9c },
+ { 0x13801fdd, 0x60000002 },
+ { 0x13001fe0, 0x14000008 },
+ { 0x13001fe1, 0x14000008 },
+ { 0x13801fe2, 0x14000002 },
+ { 0x13001fe5, 0x14000007 },
+ { 0x13801fe6, 0x14000001 },
+ { 0x13001fe8, 0x2400fff8 },
+ { 0x13001fe9, 0x2400fff8 },
+ { 0x13001fea, 0x2400ff90 },
+ { 0x13001feb, 0x2400ff90 },
+ { 0x13001fec, 0x2400fff9 },
+ { 0x13801fed, 0x60000002 },
+ { 0x13001ff2, 0x14000000 },
+ { 0x13001ff3, 0x14000009 },
+ { 0x13001ff4, 0x14000000 },
+ { 0x13801ff6, 0x14000001 },
+ { 0x13001ff8, 0x2400ff80 },
+ { 0x13001ff9, 0x2400ff80 },
+ { 0x13001ffa, 0x2400ff82 },
+ { 0x13001ffb, 0x2400ff82 },
+ { 0x13001ffc, 0x2000fff7 },
+ { 0x13801ffd, 0x60000001 },
+ { 0x09802000, 0x7400000a },
+ { 0x0980200b, 0x04000004 },
+ { 0x09802010, 0x44000005 },
+ { 0x09802016, 0x54000001 },
+ { 0x09002018, 0x50000000 },
+ { 0x09002019, 0x4c000000 },
+ { 0x0900201a, 0x58000000 },
+ { 0x0980201b, 0x50000001 },
+ { 0x0900201d, 0x4c000000 },
+ { 0x0900201e, 0x58000000 },
+ { 0x0900201f, 0x50000000 },
+ { 0x09802020, 0x54000007 },
+ { 0x09002028, 0x6c000000 },
+ { 0x09002029, 0x70000000 },
+ { 0x0980202a, 0x04000004 },
+ { 0x0900202f, 0x74000000 },
+ { 0x09802030, 0x54000008 },
+ { 0x09002039, 0x50000000 },
+ { 0x0900203a, 0x4c000000 },
+ { 0x0980203b, 0x54000003 },
+ { 0x0980203f, 0x40000001 },
+ { 0x09802041, 0x54000002 },
+ { 0x09002044, 0x64000000 },
+ { 0x09002045, 0x58000000 },
+ { 0x09002046, 0x48000000 },
+ { 0x09802047, 0x5400000a },
+ { 0x09002052, 0x64000000 },
+ { 0x09002053, 0x54000000 },
+ { 0x09002054, 0x40000000 },
+ { 0x09802055, 0x54000009 },
+ { 0x0900205f, 0x74000000 },
+ { 0x09802060, 0x04000003 },
+ { 0x0980206a, 0x04000005 },
+ { 0x09002070, 0x3c000000 },
+ { 0x21002071, 0x14000000 },
+ { 0x09802074, 0x3c000005 },
+ { 0x0980207a, 0x64000002 },
+ { 0x0900207d, 0x58000000 },
+ { 0x0900207e, 0x48000000 },
+ { 0x2100207f, 0x14000000 },
+ { 0x09802080, 0x3c000009 },
+ { 0x0980208a, 0x64000002 },
+ { 0x0900208d, 0x58000000 },
+ { 0x0900208e, 0x48000000 },
+ { 0x21802090, 0x18000004 },
+ { 0x098020a0, 0x5c000015 },
+ { 0x1b8020d0, 0x3000000c },
+ { 0x1b8020dd, 0x2c000003 },
+ { 0x1b0020e1, 0x30000000 },
+ { 0x1b8020e2, 0x2c000002 },
+ { 0x1b8020e5, 0x30000006 },
+ { 0x09802100, 0x68000001 },
+ { 0x09002102, 0x24000000 },
+ { 0x09802103, 0x68000003 },
+ { 0x09002107, 0x24000000 },
+ { 0x09802108, 0x68000001 },
+ { 0x0900210a, 0x14000000 },
+ { 0x0980210b, 0x24000002 },
+ { 0x0980210e, 0x14000001 },
+ { 0x09802110, 0x24000002 },
+ { 0x09002113, 0x14000000 },
+ { 0x09002114, 0x68000000 },
+ { 0x09002115, 0x24000000 },
+ { 0x09802116, 0x68000002 },
+ { 0x09802119, 0x24000004 },
+ { 0x0980211e, 0x68000005 },
+ { 0x09002124, 0x24000000 },
+ { 0x09002125, 0x68000000 },
+ { 0x13002126, 0x2400e2a3 },
+ { 0x09002127, 0x68000000 },
+ { 0x09002128, 0x24000000 },
+ { 0x09002129, 0x68000000 },
+ { 0x2100212a, 0x2400df41 },
+ { 0x2100212b, 0x2400dfba },
+ { 0x0980212c, 0x24000001 },
+ { 0x0900212e, 0x68000000 },
+ { 0x0900212f, 0x14000000 },
+ { 0x09802130, 0x24000001 },
+ { 0x09002132, 0x68000000 },
+ { 0x09002133, 0x24000000 },
+ { 0x09002134, 0x14000000 },
+ { 0x09802135, 0x1c000003 },
+ { 0x09002139, 0x14000000 },
+ { 0x0980213a, 0x68000001 },
+ { 0x0980213c, 0x14000001 },
+ { 0x0980213e, 0x24000001 },
+ { 0x09802140, 0x64000004 },
+ { 0x09002145, 0x24000000 },
+ { 0x09802146, 0x14000003 },
+ { 0x0900214a, 0x68000000 },
+ { 0x0900214b, 0x64000000 },
+ { 0x0900214c, 0x68000000 },
+ { 0x09802153, 0x3c00000c },
+ { 0x09002160, 0x38000010 },
+ { 0x09002161, 0x38000010 },
+ { 0x09002162, 0x38000010 },
+ { 0x09002163, 0x38000010 },
+ { 0x09002164, 0x38000010 },
+ { 0x09002165, 0x38000010 },
+ { 0x09002166, 0x38000010 },
+ { 0x09002167, 0x38000010 },
+ { 0x09002168, 0x38000010 },
+ { 0x09002169, 0x38000010 },
+ { 0x0900216a, 0x38000010 },
+ { 0x0900216b, 0x38000010 },
+ { 0x0900216c, 0x38000010 },
+ { 0x0900216d, 0x38000010 },
+ { 0x0900216e, 0x38000010 },
+ { 0x0900216f, 0x38000010 },
+ { 0x09002170, 0x3800fff0 },
+ { 0x09002171, 0x3800fff0 },
+ { 0x09002172, 0x3800fff0 },
+ { 0x09002173, 0x3800fff0 },
+ { 0x09002174, 0x3800fff0 },
+ { 0x09002175, 0x3800fff0 },
+ { 0x09002176, 0x3800fff0 },
+ { 0x09002177, 0x3800fff0 },
+ { 0x09002178, 0x3800fff0 },
+ { 0x09002179, 0x3800fff0 },
+ { 0x0900217a, 0x3800fff0 },
+ { 0x0900217b, 0x3800fff0 },
+ { 0x0900217c, 0x3800fff0 },
+ { 0x0900217d, 0x3800fff0 },
+ { 0x0900217e, 0x3800fff0 },
+ { 0x0900217f, 0x3800fff0 },
+ { 0x09802180, 0x38000003 },
+ { 0x09802190, 0x64000004 },
+ { 0x09802195, 0x68000004 },
+ { 0x0980219a, 0x64000001 },
+ { 0x0980219c, 0x68000003 },
+ { 0x090021a0, 0x64000000 },
+ { 0x098021a1, 0x68000001 },
+ { 0x090021a3, 0x64000000 },
+ { 0x098021a4, 0x68000001 },
+ { 0x090021a6, 0x64000000 },
+ { 0x098021a7, 0x68000006 },
+ { 0x090021ae, 0x64000000 },
+ { 0x098021af, 0x6800001e },
+ { 0x098021ce, 0x64000001 },
+ { 0x098021d0, 0x68000001 },
+ { 0x090021d2, 0x64000000 },
+ { 0x090021d3, 0x68000000 },
+ { 0x090021d4, 0x64000000 },
+ { 0x098021d5, 0x6800001e },
+ { 0x098021f4, 0x6400010b },
+ { 0x09802300, 0x68000007 },
+ { 0x09802308, 0x64000003 },
+ { 0x0980230c, 0x68000013 },
+ { 0x09802320, 0x64000001 },
+ { 0x09802322, 0x68000006 },
+ { 0x09002329, 0x58000000 },
+ { 0x0900232a, 0x48000000 },
+ { 0x0980232b, 0x68000050 },
+ { 0x0900237c, 0x64000000 },
+ { 0x0980237d, 0x6800001d },
+ { 0x0980239b, 0x64000018 },
+ { 0x090023b4, 0x58000000 },
+ { 0x090023b5, 0x48000000 },
+ { 0x090023b6, 0x54000000 },
+ { 0x098023b7, 0x68000024 },
+ { 0x09802400, 0x68000026 },
+ { 0x09802440, 0x6800000a },
+ { 0x09802460, 0x3c00003b },
+ { 0x0980249c, 0x68000019 },
+ { 0x090024b6, 0x6800001a },
+ { 0x090024b7, 0x6800001a },
+ { 0x090024b8, 0x6800001a },
+ { 0x090024b9, 0x6800001a },
+ { 0x090024ba, 0x6800001a },
+ { 0x090024bb, 0x6800001a },
+ { 0x090024bc, 0x6800001a },
+ { 0x090024bd, 0x6800001a },
+ { 0x090024be, 0x6800001a },
+ { 0x090024bf, 0x6800001a },
+ { 0x090024c0, 0x6800001a },
+ { 0x090024c1, 0x6800001a },
+ { 0x090024c2, 0x6800001a },
+ { 0x090024c3, 0x6800001a },
+ { 0x090024c4, 0x6800001a },
+ { 0x090024c5, 0x6800001a },
+ { 0x090024c6, 0x6800001a },
+ { 0x090024c7, 0x6800001a },
+ { 0x090024c8, 0x6800001a },
+ { 0x090024c9, 0x6800001a },
+ { 0x090024ca, 0x6800001a },
+ { 0x090024cb, 0x6800001a },
+ { 0x090024cc, 0x6800001a },
+ { 0x090024cd, 0x6800001a },
+ { 0x090024ce, 0x6800001a },
+ { 0x090024cf, 0x6800001a },
+ { 0x090024d0, 0x6800ffe6 },
+ { 0x090024d1, 0x6800ffe6 },
+ { 0x090024d2, 0x6800ffe6 },
+ { 0x090024d3, 0x6800ffe6 },
+ { 0x090024d4, 0x6800ffe6 },
+ { 0x090024d5, 0x6800ffe6 },
+ { 0x090024d6, 0x6800ffe6 },
+ { 0x090024d7, 0x6800ffe6 },
+ { 0x090024d8, 0x6800ffe6 },
+ { 0x090024d9, 0x6800ffe6 },
+ { 0x090024da, 0x6800ffe6 },
+ { 0x090024db, 0x6800ffe6 },
+ { 0x090024dc, 0x6800ffe6 },
+ { 0x090024dd, 0x6800ffe6 },
+ { 0x090024de, 0x6800ffe6 },
+ { 0x090024df, 0x6800ffe6 },
+ { 0x090024e0, 0x6800ffe6 },
+ { 0x090024e1, 0x6800ffe6 },
+ { 0x090024e2, 0x6800ffe6 },
+ { 0x090024e3, 0x6800ffe6 },
+ { 0x090024e4, 0x6800ffe6 },
+ { 0x090024e5, 0x6800ffe6 },
+ { 0x090024e6, 0x6800ffe6 },
+ { 0x090024e7, 0x6800ffe6 },
+ { 0x090024e8, 0x6800ffe6 },
+ { 0x090024e9, 0x6800ffe6 },
+ { 0x098024ea, 0x3c000015 },
+ { 0x09802500, 0x680000b6 },
+ { 0x090025b7, 0x64000000 },
+ { 0x098025b8, 0x68000008 },
+ { 0x090025c1, 0x64000000 },
+ { 0x098025c2, 0x68000035 },
+ { 0x098025f8, 0x64000007 },
+ { 0x09802600, 0x6800006e },
+ { 0x0900266f, 0x64000000 },
+ { 0x09802670, 0x6800002c },
+ { 0x098026a0, 0x68000011 },
+ { 0x09802701, 0x68000003 },
+ { 0x09802706, 0x68000003 },
+ { 0x0980270c, 0x6800001b },
+ { 0x09802729, 0x68000022 },
+ { 0x0900274d, 0x68000000 },
+ { 0x0980274f, 0x68000003 },
+ { 0x09002756, 0x68000000 },
+ { 0x09802758, 0x68000006 },
+ { 0x09802761, 0x68000006 },
+ { 0x09002768, 0x58000000 },
+ { 0x09002769, 0x48000000 },
+ { 0x0900276a, 0x58000000 },
+ { 0x0900276b, 0x48000000 },
+ { 0x0900276c, 0x58000000 },
+ { 0x0900276d, 0x48000000 },
+ { 0x0900276e, 0x58000000 },
+ { 0x0900276f, 0x48000000 },
+ { 0x09002770, 0x58000000 },
+ { 0x09002771, 0x48000000 },
+ { 0x09002772, 0x58000000 },
+ { 0x09002773, 0x48000000 },
+ { 0x09002774, 0x58000000 },
+ { 0x09002775, 0x48000000 },
+ { 0x09802776, 0x3c00001d },
+ { 0x09002794, 0x68000000 },
+ { 0x09802798, 0x68000017 },
+ { 0x098027b1, 0x6800000d },
+ { 0x098027c0, 0x64000004 },
+ { 0x090027c5, 0x58000000 },
+ { 0x090027c6, 0x48000000 },
+ { 0x098027d0, 0x64000015 },
+ { 0x090027e6, 0x58000000 },
+ { 0x090027e7, 0x48000000 },
+ { 0x090027e8, 0x58000000 },
+ { 0x090027e9, 0x48000000 },
+ { 0x090027ea, 0x58000000 },
+ { 0x090027eb, 0x48000000 },
+ { 0x098027f0, 0x6400000f },
+ { 0x04802800, 0x680000ff },
+ { 0x09802900, 0x64000082 },
+ { 0x09002983, 0x58000000 },
+ { 0x09002984, 0x48000000 },
+ { 0x09002985, 0x58000000 },
+ { 0x09002986, 0x48000000 },
+ { 0x09002987, 0x58000000 },
+ { 0x09002988, 0x48000000 },
+ { 0x09002989, 0x58000000 },
+ { 0x0900298a, 0x48000000 },
+ { 0x0900298b, 0x58000000 },
+ { 0x0900298c, 0x48000000 },
+ { 0x0900298d, 0x58000000 },
+ { 0x0900298e, 0x48000000 },
+ { 0x0900298f, 0x58000000 },
+ { 0x09002990, 0x48000000 },
+ { 0x09002991, 0x58000000 },
+ { 0x09002992, 0x48000000 },
+ { 0x09002993, 0x58000000 },
+ { 0x09002994, 0x48000000 },
+ { 0x09002995, 0x58000000 },
+ { 0x09002996, 0x48000000 },
+ { 0x09002997, 0x58000000 },
+ { 0x09002998, 0x48000000 },
+ { 0x09802999, 0x6400003e },
+ { 0x090029d8, 0x58000000 },
+ { 0x090029d9, 0x48000000 },
+ { 0x090029da, 0x58000000 },
+ { 0x090029db, 0x48000000 },
+ { 0x098029dc, 0x6400001f },
+ { 0x090029fc, 0x58000000 },
+ { 0x090029fd, 0x48000000 },
+ { 0x098029fe, 0x64000101 },
+ { 0x09802b00, 0x68000013 },
+ { 0x11002c00, 0x24000030 },
+ { 0x11002c01, 0x24000030 },
+ { 0x11002c02, 0x24000030 },
+ { 0x11002c03, 0x24000030 },
+ { 0x11002c04, 0x24000030 },
+ { 0x11002c05, 0x24000030 },
+ { 0x11002c06, 0x24000030 },
+ { 0x11002c07, 0x24000030 },
+ { 0x11002c08, 0x24000030 },
+ { 0x11002c09, 0x24000030 },
+ { 0x11002c0a, 0x24000030 },
+ { 0x11002c0b, 0x24000030 },
+ { 0x11002c0c, 0x24000030 },
+ { 0x11002c0d, 0x24000030 },
+ { 0x11002c0e, 0x24000030 },
+ { 0x11002c0f, 0x24000030 },
+ { 0x11002c10, 0x24000030 },
+ { 0x11002c11, 0x24000030 },
+ { 0x11002c12, 0x24000030 },
+ { 0x11002c13, 0x24000030 },
+ { 0x11002c14, 0x24000030 },
+ { 0x11002c15, 0x24000030 },
+ { 0x11002c16, 0x24000030 },
+ { 0x11002c17, 0x24000030 },
+ { 0x11002c18, 0x24000030 },
+ { 0x11002c19, 0x24000030 },
+ { 0x11002c1a, 0x24000030 },
+ { 0x11002c1b, 0x24000030 },
+ { 0x11002c1c, 0x24000030 },
+ { 0x11002c1d, 0x24000030 },
+ { 0x11002c1e, 0x24000030 },
+ { 0x11002c1f, 0x24000030 },
+ { 0x11002c20, 0x24000030 },
+ { 0x11002c21, 0x24000030 },
+ { 0x11002c22, 0x24000030 },
+ { 0x11002c23, 0x24000030 },
+ { 0x11002c24, 0x24000030 },
+ { 0x11002c25, 0x24000030 },
+ { 0x11002c26, 0x24000030 },
+ { 0x11002c27, 0x24000030 },
+ { 0x11002c28, 0x24000030 },
+ { 0x11002c29, 0x24000030 },
+ { 0x11002c2a, 0x24000030 },
+ { 0x11002c2b, 0x24000030 },
+ { 0x11002c2c, 0x24000030 },
+ { 0x11002c2d, 0x24000030 },
+ { 0x11002c2e, 0x24000030 },
+ { 0x11002c30, 0x1400ffd0 },
+ { 0x11002c31, 0x1400ffd0 },
+ { 0x11002c32, 0x1400ffd0 },
+ { 0x11002c33, 0x1400ffd0 },
+ { 0x11002c34, 0x1400ffd0 },
+ { 0x11002c35, 0x1400ffd0 },
+ { 0x11002c36, 0x1400ffd0 },
+ { 0x11002c37, 0x1400ffd0 },
+ { 0x11002c38, 0x1400ffd0 },
+ { 0x11002c39, 0x1400ffd0 },
+ { 0x11002c3a, 0x1400ffd0 },
+ { 0x11002c3b, 0x1400ffd0 },
+ { 0x11002c3c, 0x1400ffd0 },
+ { 0x11002c3d, 0x1400ffd0 },
+ { 0x11002c3e, 0x1400ffd0 },
+ { 0x11002c3f, 0x1400ffd0 },
+ { 0x11002c40, 0x1400ffd0 },
+ { 0x11002c41, 0x1400ffd0 },
+ { 0x11002c42, 0x1400ffd0 },
+ { 0x11002c43, 0x1400ffd0 },
+ { 0x11002c44, 0x1400ffd0 },
+ { 0x11002c45, 0x1400ffd0 },
+ { 0x11002c46, 0x1400ffd0 },
+ { 0x11002c47, 0x1400ffd0 },
+ { 0x11002c48, 0x1400ffd0 },
+ { 0x11002c49, 0x1400ffd0 },
+ { 0x11002c4a, 0x1400ffd0 },
+ { 0x11002c4b, 0x1400ffd0 },
+ { 0x11002c4c, 0x1400ffd0 },
+ { 0x11002c4d, 0x1400ffd0 },
+ { 0x11002c4e, 0x1400ffd0 },
+ { 0x11002c4f, 0x1400ffd0 },
+ { 0x11002c50, 0x1400ffd0 },
+ { 0x11002c51, 0x1400ffd0 },
+ { 0x11002c52, 0x1400ffd0 },
+ { 0x11002c53, 0x1400ffd0 },
+ { 0x11002c54, 0x1400ffd0 },
+ { 0x11002c55, 0x1400ffd0 },
+ { 0x11002c56, 0x1400ffd0 },
+ { 0x11002c57, 0x1400ffd0 },
+ { 0x11002c58, 0x1400ffd0 },
+ { 0x11002c59, 0x1400ffd0 },
+ { 0x11002c5a, 0x1400ffd0 },
+ { 0x11002c5b, 0x1400ffd0 },
+ { 0x11002c5c, 0x1400ffd0 },
+ { 0x11002c5d, 0x1400ffd0 },
+ { 0x11002c5e, 0x1400ffd0 },
+ { 0x0a002c80, 0x24000001 },
+ { 0x0a002c81, 0x1400ffff },
+ { 0x0a002c82, 0x24000001 },
+ { 0x0a002c83, 0x1400ffff },
+ { 0x0a002c84, 0x24000001 },
+ { 0x0a002c85, 0x1400ffff },
+ { 0x0a002c86, 0x24000001 },
+ { 0x0a002c87, 0x1400ffff },
+ { 0x0a002c88, 0x24000001 },
+ { 0x0a002c89, 0x1400ffff },
+ { 0x0a002c8a, 0x24000001 },
+ { 0x0a002c8b, 0x1400ffff },
+ { 0x0a002c8c, 0x24000001 },
+ { 0x0a002c8d, 0x1400ffff },
+ { 0x0a002c8e, 0x24000001 },
+ { 0x0a002c8f, 0x1400ffff },
+ { 0x0a002c90, 0x24000001 },
+ { 0x0a002c91, 0x1400ffff },
+ { 0x0a002c92, 0x24000001 },
+ { 0x0a002c93, 0x1400ffff },
+ { 0x0a002c94, 0x24000001 },
+ { 0x0a002c95, 0x1400ffff },
+ { 0x0a002c96, 0x24000001 },
+ { 0x0a002c97, 0x1400ffff },
+ { 0x0a002c98, 0x24000001 },
+ { 0x0a002c99, 0x1400ffff },
+ { 0x0a002c9a, 0x24000001 },
+ { 0x0a002c9b, 0x1400ffff },
+ { 0x0a002c9c, 0x24000001 },
+ { 0x0a002c9d, 0x1400ffff },
+ { 0x0a002c9e, 0x24000001 },
+ { 0x0a002c9f, 0x1400ffff },
+ { 0x0a002ca0, 0x24000001 },
+ { 0x0a002ca1, 0x1400ffff },
+ { 0x0a002ca2, 0x24000001 },
+ { 0x0a002ca3, 0x1400ffff },
+ { 0x0a002ca4, 0x24000001 },
+ { 0x0a002ca5, 0x1400ffff },
+ { 0x0a002ca6, 0x24000001 },
+ { 0x0a002ca7, 0x1400ffff },
+ { 0x0a002ca8, 0x24000001 },
+ { 0x0a002ca9, 0x1400ffff },
+ { 0x0a002caa, 0x24000001 },
+ { 0x0a002cab, 0x1400ffff },
+ { 0x0a002cac, 0x24000001 },
+ { 0x0a002cad, 0x1400ffff },
+ { 0x0a002cae, 0x24000001 },
+ { 0x0a002caf, 0x1400ffff },
+ { 0x0a002cb0, 0x24000001 },
+ { 0x0a002cb1, 0x1400ffff },
+ { 0x0a002cb2, 0x24000001 },
+ { 0x0a002cb3, 0x1400ffff },
+ { 0x0a002cb4, 0x24000001 },
+ { 0x0a002cb5, 0x1400ffff },
+ { 0x0a002cb6, 0x24000001 },
+ { 0x0a002cb7, 0x1400ffff },
+ { 0x0a002cb8, 0x24000001 },
+ { 0x0a002cb9, 0x1400ffff },
+ { 0x0a002cba, 0x24000001 },
+ { 0x0a002cbb, 0x1400ffff },
+ { 0x0a002cbc, 0x24000001 },
+ { 0x0a002cbd, 0x1400ffff },
+ { 0x0a002cbe, 0x24000001 },
+ { 0x0a002cbf, 0x1400ffff },
+ { 0x0a002cc0, 0x24000001 },
+ { 0x0a002cc1, 0x1400ffff },
+ { 0x0a002cc2, 0x24000001 },
+ { 0x0a002cc3, 0x1400ffff },
+ { 0x0a002cc4, 0x24000001 },
+ { 0x0a002cc5, 0x1400ffff },
+ { 0x0a002cc6, 0x24000001 },
+ { 0x0a002cc7, 0x1400ffff },
+ { 0x0a002cc8, 0x24000001 },
+ { 0x0a002cc9, 0x1400ffff },
+ { 0x0a002cca, 0x24000001 },
+ { 0x0a002ccb, 0x1400ffff },
+ { 0x0a002ccc, 0x24000001 },
+ { 0x0a002ccd, 0x1400ffff },
+ { 0x0a002cce, 0x24000001 },
+ { 0x0a002ccf, 0x1400ffff },
+ { 0x0a002cd0, 0x24000001 },
+ { 0x0a002cd1, 0x1400ffff },
+ { 0x0a002cd2, 0x24000001 },
+ { 0x0a002cd3, 0x1400ffff },
+ { 0x0a002cd4, 0x24000001 },
+ { 0x0a002cd5, 0x1400ffff },
+ { 0x0a002cd6, 0x24000001 },
+ { 0x0a002cd7, 0x1400ffff },
+ { 0x0a002cd8, 0x24000001 },
+ { 0x0a002cd9, 0x1400ffff },
+ { 0x0a002cda, 0x24000001 },
+ { 0x0a002cdb, 0x1400ffff },
+ { 0x0a002cdc, 0x24000001 },
+ { 0x0a002cdd, 0x1400ffff },
+ { 0x0a002cde, 0x24000001 },
+ { 0x0a002cdf, 0x1400ffff },
+ { 0x0a002ce0, 0x24000001 },
+ { 0x0a002ce1, 0x1400ffff },
+ { 0x0a002ce2, 0x24000001 },
+ { 0x0a002ce3, 0x1400ffff },
+ { 0x0a002ce4, 0x14000000 },
+ { 0x0a802ce5, 0x68000005 },
+ { 0x0a802cf9, 0x54000003 },
+ { 0x0a002cfd, 0x3c000000 },
+ { 0x0a802cfe, 0x54000001 },
+ { 0x10002d00, 0x1400e3a0 },
+ { 0x10002d01, 0x1400e3a0 },
+ { 0x10002d02, 0x1400e3a0 },
+ { 0x10002d03, 0x1400e3a0 },
+ { 0x10002d04, 0x1400e3a0 },
+ { 0x10002d05, 0x1400e3a0 },
+ { 0x10002d06, 0x1400e3a0 },
+ { 0x10002d07, 0x1400e3a0 },
+ { 0x10002d08, 0x1400e3a0 },
+ { 0x10002d09, 0x1400e3a0 },
+ { 0x10002d0a, 0x1400e3a0 },
+ { 0x10002d0b, 0x1400e3a0 },
+ { 0x10002d0c, 0x1400e3a0 },
+ { 0x10002d0d, 0x1400e3a0 },
+ { 0x10002d0e, 0x1400e3a0 },
+ { 0x10002d0f, 0x1400e3a0 },
+ { 0x10002d10, 0x1400e3a0 },
+ { 0x10002d11, 0x1400e3a0 },
+ { 0x10002d12, 0x1400e3a0 },
+ { 0x10002d13, 0x1400e3a0 },
+ { 0x10002d14, 0x1400e3a0 },
+ { 0x10002d15, 0x1400e3a0 },
+ { 0x10002d16, 0x1400e3a0 },
+ { 0x10002d17, 0x1400e3a0 },
+ { 0x10002d18, 0x1400e3a0 },
+ { 0x10002d19, 0x1400e3a0 },
+ { 0x10002d1a, 0x1400e3a0 },
+ { 0x10002d1b, 0x1400e3a0 },
+ { 0x10002d1c, 0x1400e3a0 },
+ { 0x10002d1d, 0x1400e3a0 },
+ { 0x10002d1e, 0x1400e3a0 },
+ { 0x10002d1f, 0x1400e3a0 },
+ { 0x10002d20, 0x1400e3a0 },
+ { 0x10002d21, 0x1400e3a0 },
+ { 0x10002d22, 0x1400e3a0 },
+ { 0x10002d23, 0x1400e3a0 },
+ { 0x10002d24, 0x1400e3a0 },
+ { 0x10002d25, 0x1400e3a0 },
+ { 0x3a802d30, 0x1c000035 },
+ { 0x3a002d6f, 0x18000000 },
+ { 0x0f802d80, 0x1c000016 },
+ { 0x0f802da0, 0x1c000006 },
+ { 0x0f802da8, 0x1c000006 },
+ { 0x0f802db0, 0x1c000006 },
+ { 0x0f802db8, 0x1c000006 },
+ { 0x0f802dc0, 0x1c000006 },
+ { 0x0f802dc8, 0x1c000006 },
+ { 0x0f802dd0, 0x1c000006 },
+ { 0x0f802dd8, 0x1c000006 },
+ { 0x09802e00, 0x54000001 },
+ { 0x09002e02, 0x50000000 },
+ { 0x09002e03, 0x4c000000 },
+ { 0x09002e04, 0x50000000 },
+ { 0x09002e05, 0x4c000000 },
+ { 0x09802e06, 0x54000002 },
+ { 0x09002e09, 0x50000000 },
+ { 0x09002e0a, 0x4c000000 },
+ { 0x09002e0b, 0x54000000 },
+ { 0x09002e0c, 0x50000000 },
+ { 0x09002e0d, 0x4c000000 },
+ { 0x09802e0e, 0x54000008 },
+ { 0x09002e17, 0x44000000 },
+ { 0x09002e1c, 0x50000000 },
+ { 0x09002e1d, 0x4c000000 },
+ { 0x16802e80, 0x68000019 },
+ { 0x16802e9b, 0x68000058 },
+ { 0x16802f00, 0x680000d5 },
+ { 0x09802ff0, 0x6800000b },
+ { 0x09003000, 0x74000000 },
+ { 0x09803001, 0x54000002 },
+ { 0x09003004, 0x68000000 },
+ { 0x16003005, 0x18000000 },
+ { 0x09003006, 0x1c000000 },
+ { 0x16003007, 0x38000000 },
+ { 0x09003008, 0x58000000 },
+ { 0x09003009, 0x48000000 },
+ { 0x0900300a, 0x58000000 },
+ { 0x0900300b, 0x48000000 },
+ { 0x0900300c, 0x58000000 },
+ { 0x0900300d, 0x48000000 },
+ { 0x0900300e, 0x58000000 },
+ { 0x0900300f, 0x48000000 },
+ { 0x09003010, 0x58000000 },
+ { 0x09003011, 0x48000000 },
+ { 0x09803012, 0x68000001 },
+ { 0x09003014, 0x58000000 },
+ { 0x09003015, 0x48000000 },
+ { 0x09003016, 0x58000000 },
+ { 0x09003017, 0x48000000 },
+ { 0x09003018, 0x58000000 },
+ { 0x09003019, 0x48000000 },
+ { 0x0900301a, 0x58000000 },
+ { 0x0900301b, 0x48000000 },
+ { 0x0900301c, 0x44000000 },
+ { 0x0900301d, 0x58000000 },
+ { 0x0980301e, 0x48000001 },
+ { 0x09003020, 0x68000000 },
+ { 0x16803021, 0x38000008 },
+ { 0x1b80302a, 0x30000005 },
+ { 0x09003030, 0x44000000 },
+ { 0x09803031, 0x18000004 },
+ { 0x09803036, 0x68000001 },
+ { 0x16803038, 0x38000002 },
+ { 0x1600303b, 0x18000000 },
+ { 0x0900303c, 0x1c000000 },
+ { 0x0900303d, 0x54000000 },
+ { 0x0980303e, 0x68000001 },
+ { 0x1a803041, 0x1c000055 },
+ { 0x1b803099, 0x30000001 },
+ { 0x0980309b, 0x60000001 },
+ { 0x1a80309d, 0x18000001 },
+ { 0x1a00309f, 0x1c000000 },
+ { 0x090030a0, 0x44000000 },
+ { 0x1d8030a1, 0x1c000059 },
+ { 0x090030fb, 0x54000000 },
+ { 0x098030fc, 0x18000002 },
+ { 0x1d0030ff, 0x1c000000 },
+ { 0x03803105, 0x1c000027 },
+ { 0x17803131, 0x1c00005d },
+ { 0x09803190, 0x68000001 },
+ { 0x09803192, 0x3c000003 },
+ { 0x09803196, 0x68000009 },
+ { 0x038031a0, 0x1c000017 },
+ { 0x098031c0, 0x6800000f },
+ { 0x1d8031f0, 0x1c00000f },
+ { 0x17803200, 0x6800001e },
+ { 0x09803220, 0x3c000009 },
+ { 0x0980322a, 0x68000019 },
+ { 0x09003250, 0x68000000 },
+ { 0x09803251, 0x3c00000e },
+ { 0x17803260, 0x6800001f },
+ { 0x09803280, 0x3c000009 },
+ { 0x0980328a, 0x68000026 },
+ { 0x098032b1, 0x3c00000e },
+ { 0x098032c0, 0x6800003e },
+ { 0x09803300, 0x680000ff },
+ { 0x16803400, 0x1c0019b5 },
+ { 0x09804dc0, 0x6800003f },
+ { 0x16804e00, 0x1c0051bb },
+ { 0x3c80a000, 0x1c000014 },
+ { 0x3c00a015, 0x18000000 },
+ { 0x3c80a016, 0x1c000476 },
+ { 0x3c80a490, 0x68000036 },
+ { 0x0980a700, 0x60000016 },
+ { 0x3080a800, 0x1c000001 },
+ { 0x3000a802, 0x28000000 },
+ { 0x3080a803, 0x1c000002 },
+ { 0x3000a806, 0x30000000 },
+ { 0x3080a807, 0x1c000003 },
+ { 0x3000a80b, 0x30000000 },
+ { 0x3080a80c, 0x1c000016 },
+ { 0x3080a823, 0x28000001 },
+ { 0x3080a825, 0x30000001 },
+ { 0x3000a827, 0x28000000 },
+ { 0x3080a828, 0x68000003 },
+ { 0x1780ac00, 0x1c002ba3 },
+ { 0x0980d800, 0x1000037f },
+ { 0x0980db80, 0x1000007f },
+ { 0x0980dc00, 0x100003ff },
+ { 0x0980e000, 0x0c0018ff },
+ { 0x1680f900, 0x1c00012d },
+ { 0x1680fa30, 0x1c00003a },
+ { 0x1680fa70, 0x1c000069 },
+ { 0x2180fb00, 0x14000006 },
+ { 0x0180fb13, 0x14000004 },
+ { 0x1900fb1d, 0x1c000000 },
+ { 0x1900fb1e, 0x30000000 },
+ { 0x1980fb1f, 0x1c000009 },
+ { 0x1900fb29, 0x64000000 },
+ { 0x1980fb2a, 0x1c00000c },
+ { 0x1980fb38, 0x1c000004 },
+ { 0x1900fb3e, 0x1c000000 },
+ { 0x1980fb40, 0x1c000001 },
+ { 0x1980fb43, 0x1c000001 },
+ { 0x1980fb46, 0x1c00006b },
+ { 0x0080fbd3, 0x1c00016a },
+ { 0x0900fd3e, 0x58000000 },
+ { 0x0900fd3f, 0x48000000 },
+ { 0x0080fd50, 0x1c00003f },
+ { 0x0080fd92, 0x1c000035 },
+ { 0x0080fdf0, 0x1c00000b },
+ { 0x0000fdfc, 0x5c000000 },
+ { 0x0900fdfd, 0x68000000 },
+ { 0x1b80fe00, 0x3000000f },
+ { 0x0980fe10, 0x54000006 },
+ { 0x0900fe17, 0x58000000 },
+ { 0x0900fe18, 0x48000000 },
+ { 0x0900fe19, 0x54000000 },
+ { 0x1b80fe20, 0x30000003 },
+ { 0x0900fe30, 0x54000000 },
+ { 0x0980fe31, 0x44000001 },
+ { 0x0980fe33, 0x40000001 },
+ { 0x0900fe35, 0x58000000 },
+ { 0x0900fe36, 0x48000000 },
+ { 0x0900fe37, 0x58000000 },
+ { 0x0900fe38, 0x48000000 },
+ { 0x0900fe39, 0x58000000 },
+ { 0x0900fe3a, 0x48000000 },
+ { 0x0900fe3b, 0x58000000 },
+ { 0x0900fe3c, 0x48000000 },
+ { 0x0900fe3d, 0x58000000 },
+ { 0x0900fe3e, 0x48000000 },
+ { 0x0900fe3f, 0x58000000 },
+ { 0x0900fe40, 0x48000000 },
+ { 0x0900fe41, 0x58000000 },
+ { 0x0900fe42, 0x48000000 },
+ { 0x0900fe43, 0x58000000 },
+ { 0x0900fe44, 0x48000000 },
+ { 0x0980fe45, 0x54000001 },
+ { 0x0900fe47, 0x58000000 },
+ { 0x0900fe48, 0x48000000 },
+ { 0x0980fe49, 0x54000003 },
+ { 0x0980fe4d, 0x40000002 },
+ { 0x0980fe50, 0x54000002 },
+ { 0x0980fe54, 0x54000003 },
+ { 0x0900fe58, 0x44000000 },
+ { 0x0900fe59, 0x58000000 },
+ { 0x0900fe5a, 0x48000000 },
+ { 0x0900fe5b, 0x58000000 },
+ { 0x0900fe5c, 0x48000000 },
+ { 0x0900fe5d, 0x58000000 },
+ { 0x0900fe5e, 0x48000000 },
+ { 0x0980fe5f, 0x54000002 },
+ { 0x0900fe62, 0x64000000 },
+ { 0x0900fe63, 0x44000000 },
+ { 0x0980fe64, 0x64000002 },
+ { 0x0900fe68, 0x54000000 },
+ { 0x0900fe69, 0x5c000000 },
+ { 0x0980fe6a, 0x54000001 },
+ { 0x0080fe70, 0x1c000004 },
+ { 0x0080fe76, 0x1c000086 },
+ { 0x0900feff, 0x04000000 },
+ { 0x0980ff01, 0x54000002 },
+ { 0x0900ff04, 0x5c000000 },
+ { 0x0980ff05, 0x54000002 },
+ { 0x0900ff08, 0x58000000 },
+ { 0x0900ff09, 0x48000000 },
+ { 0x0900ff0a, 0x54000000 },
+ { 0x0900ff0b, 0x64000000 },
+ { 0x0900ff0c, 0x54000000 },
+ { 0x0900ff0d, 0x44000000 },
+ { 0x0980ff0e, 0x54000001 },
+ { 0x0980ff10, 0x34000009 },
+ { 0x0980ff1a, 0x54000001 },
+ { 0x0980ff1c, 0x64000002 },
+ { 0x0980ff1f, 0x54000001 },
+ { 0x2100ff21, 0x24000020 },
+ { 0x2100ff22, 0x24000020 },
+ { 0x2100ff23, 0x24000020 },
+ { 0x2100ff24, 0x24000020 },
+ { 0x2100ff25, 0x24000020 },
+ { 0x2100ff26, 0x24000020 },
+ { 0x2100ff27, 0x24000020 },
+ { 0x2100ff28, 0x24000020 },
+ { 0x2100ff29, 0x24000020 },
+ { 0x2100ff2a, 0x24000020 },
+ { 0x2100ff2b, 0x24000020 },
+ { 0x2100ff2c, 0x24000020 },
+ { 0x2100ff2d, 0x24000020 },
+ { 0x2100ff2e, 0x24000020 },
+ { 0x2100ff2f, 0x24000020 },
+ { 0x2100ff30, 0x24000020 },
+ { 0x2100ff31, 0x24000020 },
+ { 0x2100ff32, 0x24000020 },
+ { 0x2100ff33, 0x24000020 },
+ { 0x2100ff34, 0x24000020 },
+ { 0x2100ff35, 0x24000020 },
+ { 0x2100ff36, 0x24000020 },
+ { 0x2100ff37, 0x24000020 },
+ { 0x2100ff38, 0x24000020 },
+ { 0x2100ff39, 0x24000020 },
+ { 0x2100ff3a, 0x24000020 },
+ { 0x0900ff3b, 0x58000000 },
+ { 0x0900ff3c, 0x54000000 },
+ { 0x0900ff3d, 0x48000000 },
+ { 0x0900ff3e, 0x60000000 },
+ { 0x0900ff3f, 0x40000000 },
+ { 0x0900ff40, 0x60000000 },
+ { 0x2100ff41, 0x1400ffe0 },
+ { 0x2100ff42, 0x1400ffe0 },
+ { 0x2100ff43, 0x1400ffe0 },
+ { 0x2100ff44, 0x1400ffe0 },
+ { 0x2100ff45, 0x1400ffe0 },
+ { 0x2100ff46, 0x1400ffe0 },
+ { 0x2100ff47, 0x1400ffe0 },
+ { 0x2100ff48, 0x1400ffe0 },
+ { 0x2100ff49, 0x1400ffe0 },
+ { 0x2100ff4a, 0x1400ffe0 },
+ { 0x2100ff4b, 0x1400ffe0 },
+ { 0x2100ff4c, 0x1400ffe0 },
+ { 0x2100ff4d, 0x1400ffe0 },
+ { 0x2100ff4e, 0x1400ffe0 },
+ { 0x2100ff4f, 0x1400ffe0 },
+ { 0x2100ff50, 0x1400ffe0 },
+ { 0x2100ff51, 0x1400ffe0 },
+ { 0x2100ff52, 0x1400ffe0 },
+ { 0x2100ff53, 0x1400ffe0 },
+ { 0x2100ff54, 0x1400ffe0 },
+ { 0x2100ff55, 0x1400ffe0 },
+ { 0x2100ff56, 0x1400ffe0 },
+ { 0x2100ff57, 0x1400ffe0 },
+ { 0x2100ff58, 0x1400ffe0 },
+ { 0x2100ff59, 0x1400ffe0 },
+ { 0x2100ff5a, 0x1400ffe0 },
+ { 0x0900ff5b, 0x58000000 },
+ { 0x0900ff5c, 0x64000000 },
+ { 0x0900ff5d, 0x48000000 },
+ { 0x0900ff5e, 0x64000000 },
+ { 0x0900ff5f, 0x58000000 },
+ { 0x0900ff60, 0x48000000 },
+ { 0x0900ff61, 0x54000000 },
+ { 0x0900ff62, 0x58000000 },
+ { 0x0900ff63, 0x48000000 },
+ { 0x0980ff64, 0x54000001 },
+ { 0x1d80ff66, 0x1c000009 },
+ { 0x0900ff70, 0x18000000 },
+ { 0x1d80ff71, 0x1c00002c },
+ { 0x0980ff9e, 0x18000001 },
+ { 0x1780ffa0, 0x1c00001e },
+ { 0x1780ffc2, 0x1c000005 },
+ { 0x1780ffca, 0x1c000005 },
+ { 0x1780ffd2, 0x1c000005 },
+ { 0x1780ffda, 0x1c000002 },
+ { 0x0980ffe0, 0x5c000001 },
+ { 0x0900ffe2, 0x64000000 },
+ { 0x0900ffe3, 0x60000000 },
+ { 0x0900ffe4, 0x68000000 },
+ { 0x0980ffe5, 0x5c000001 },
+ { 0x0900ffe8, 0x68000000 },
+ { 0x0980ffe9, 0x64000003 },
+ { 0x0980ffed, 0x68000001 },
+ { 0x0980fff9, 0x04000002 },
+ { 0x0980fffc, 0x68000001 },
+ { 0x23810000, 0x1c00000b },
+ { 0x2381000d, 0x1c000019 },
+ { 0x23810028, 0x1c000012 },
+ { 0x2381003c, 0x1c000001 },
+ { 0x2381003f, 0x1c00000e },
+ { 0x23810050, 0x1c00000d },
+ { 0x23810080, 0x1c00007a },
+ { 0x09810100, 0x54000001 },
+ { 0x09010102, 0x68000000 },
+ { 0x09810107, 0x3c00002c },
+ { 0x09810137, 0x68000008 },
+ { 0x13810140, 0x38000034 },
+ { 0x13810175, 0x3c000003 },
+ { 0x13810179, 0x68000010 },
+ { 0x1301018a, 0x3c000000 },
+ { 0x29810300, 0x1c00001e },
+ { 0x29810320, 0x3c000003 },
+ { 0x12810330, 0x1c000019 },
+ { 0x1201034a, 0x38000000 },
+ { 0x3b810380, 0x1c00001d },
+ { 0x3b01039f, 0x54000000 },
+ { 0x2a8103a0, 0x1c000023 },
+ { 0x2a8103c8, 0x1c000007 },
+ { 0x2a0103d0, 0x68000000 },
+ { 0x2a8103d1, 0x38000004 },
+ { 0x0d010400, 0x24000028 },
+ { 0x0d010401, 0x24000028 },
+ { 0x0d010402, 0x24000028 },
+ { 0x0d010403, 0x24000028 },
+ { 0x0d010404, 0x24000028 },
+ { 0x0d010405, 0x24000028 },
+ { 0x0d010406, 0x24000028 },
+ { 0x0d010407, 0x24000028 },
+ { 0x0d010408, 0x24000028 },
+ { 0x0d010409, 0x24000028 },
+ { 0x0d01040a, 0x24000028 },
+ { 0x0d01040b, 0x24000028 },
+ { 0x0d01040c, 0x24000028 },
+ { 0x0d01040d, 0x24000028 },
+ { 0x0d01040e, 0x24000028 },
+ { 0x0d01040f, 0x24000028 },
+ { 0x0d010410, 0x24000028 },
+ { 0x0d010411, 0x24000028 },
+ { 0x0d010412, 0x24000028 },
+ { 0x0d010413, 0x24000028 },
+ { 0x0d010414, 0x24000028 },
+ { 0x0d010415, 0x24000028 },
+ { 0x0d010416, 0x24000028 },
+ { 0x0d010417, 0x24000028 },
+ { 0x0d010418, 0x24000028 },
+ { 0x0d010419, 0x24000028 },
+ { 0x0d01041a, 0x24000028 },
+ { 0x0d01041b, 0x24000028 },
+ { 0x0d01041c, 0x24000028 },
+ { 0x0d01041d, 0x24000028 },
+ { 0x0d01041e, 0x24000028 },
+ { 0x0d01041f, 0x24000028 },
+ { 0x0d010420, 0x24000028 },
+ { 0x0d010421, 0x24000028 },
+ { 0x0d010422, 0x24000028 },
+ { 0x0d010423, 0x24000028 },
+ { 0x0d010424, 0x24000028 },
+ { 0x0d010425, 0x24000028 },
+ { 0x0d010426, 0x24000028 },
+ { 0x0d010427, 0x24000028 },
+ { 0x0d010428, 0x1400ffd8 },
+ { 0x0d010429, 0x1400ffd8 },
+ { 0x0d01042a, 0x1400ffd8 },
+ { 0x0d01042b, 0x1400ffd8 },
+ { 0x0d01042c, 0x1400ffd8 },
+ { 0x0d01042d, 0x1400ffd8 },
+ { 0x0d01042e, 0x1400ffd8 },
+ { 0x0d01042f, 0x1400ffd8 },
+ { 0x0d010430, 0x1400ffd8 },
+ { 0x0d010431, 0x1400ffd8 },
+ { 0x0d010432, 0x1400ffd8 },
+ { 0x0d010433, 0x1400ffd8 },
+ { 0x0d010434, 0x1400ffd8 },
+ { 0x0d010435, 0x1400ffd8 },
+ { 0x0d010436, 0x1400ffd8 },
+ { 0x0d010437, 0x1400ffd8 },
+ { 0x0d010438, 0x1400ffd8 },
+ { 0x0d010439, 0x1400ffd8 },
+ { 0x0d01043a, 0x1400ffd8 },
+ { 0x0d01043b, 0x1400ffd8 },
+ { 0x0d01043c, 0x1400ffd8 },
+ { 0x0d01043d, 0x1400ffd8 },
+ { 0x0d01043e, 0x1400ffd8 },
+ { 0x0d01043f, 0x1400ffd8 },
+ { 0x0d010440, 0x1400ffd8 },
+ { 0x0d010441, 0x1400ffd8 },
+ { 0x0d010442, 0x1400ffd8 },
+ { 0x0d010443, 0x1400ffd8 },
+ { 0x0d010444, 0x1400ffd8 },
+ { 0x0d010445, 0x1400ffd8 },
+ { 0x0d010446, 0x1400ffd8 },
+ { 0x0d010447, 0x1400ffd8 },
+ { 0x0d010448, 0x1400ffd8 },
+ { 0x0d010449, 0x1400ffd8 },
+ { 0x0d01044a, 0x1400ffd8 },
+ { 0x0d01044b, 0x1400ffd8 },
+ { 0x0d01044c, 0x1400ffd8 },
+ { 0x0d01044d, 0x1400ffd8 },
+ { 0x0d01044e, 0x1400ffd8 },
+ { 0x0d01044f, 0x1400ffd8 },
+ { 0x2e810450, 0x1c00004d },
+ { 0x2c8104a0, 0x34000009 },
+ { 0x0b810800, 0x1c000005 },
+ { 0x0b010808, 0x1c000000 },
+ { 0x0b81080a, 0x1c00002b },
+ { 0x0b810837, 0x1c000001 },
+ { 0x0b01083c, 0x1c000000 },
+ { 0x0b01083f, 0x1c000000 },
+ { 0x1e010a00, 0x1c000000 },
+ { 0x1e810a01, 0x30000002 },
+ { 0x1e810a05, 0x30000001 },
+ { 0x1e810a0c, 0x30000003 },
+ { 0x1e810a10, 0x1c000003 },
+ { 0x1e810a15, 0x1c000002 },
+ { 0x1e810a19, 0x1c00001a },
+ { 0x1e810a38, 0x30000002 },
+ { 0x1e010a3f, 0x30000000 },
+ { 0x1e810a40, 0x3c000007 },
+ { 0x1e810a50, 0x54000008 },
+ { 0x0981d000, 0x680000f5 },
+ { 0x0981d100, 0x68000026 },
+ { 0x0981d12a, 0x6800003a },
+ { 0x0981d165, 0x28000001 },
+ { 0x1b81d167, 0x30000002 },
+ { 0x0981d16a, 0x68000002 },
+ { 0x0981d16d, 0x28000005 },
+ { 0x0981d173, 0x04000007 },
+ { 0x1b81d17b, 0x30000007 },
+ { 0x0981d183, 0x68000001 },
+ { 0x1b81d185, 0x30000006 },
+ { 0x0981d18c, 0x6800001d },
+ { 0x1b81d1aa, 0x30000003 },
+ { 0x0981d1ae, 0x6800002f },
+ { 0x1381d200, 0x68000041 },
+ { 0x1381d242, 0x30000002 },
+ { 0x1301d245, 0x68000000 },
+ { 0x0981d300, 0x68000056 },
+ { 0x0981d400, 0x24000019 },
+ { 0x0981d41a, 0x14000019 },
+ { 0x0981d434, 0x24000019 },
+ { 0x0981d44e, 0x14000006 },
+ { 0x0981d456, 0x14000011 },
+ { 0x0981d468, 0x24000019 },
+ { 0x0981d482, 0x14000019 },
+ { 0x0901d49c, 0x24000000 },
+ { 0x0981d49e, 0x24000001 },
+ { 0x0901d4a2, 0x24000000 },
+ { 0x0981d4a5, 0x24000001 },
+ { 0x0981d4a9, 0x24000003 },
+ { 0x0981d4ae, 0x24000007 },
+ { 0x0981d4b6, 0x14000003 },
+ { 0x0901d4bb, 0x14000000 },
+ { 0x0981d4bd, 0x14000006 },
+ { 0x0981d4c5, 0x1400000a },
+ { 0x0981d4d0, 0x24000019 },
+ { 0x0981d4ea, 0x14000019 },
+ { 0x0981d504, 0x24000001 },
+ { 0x0981d507, 0x24000003 },
+ { 0x0981d50d, 0x24000007 },
+ { 0x0981d516, 0x24000006 },
+ { 0x0981d51e, 0x14000019 },
+ { 0x0981d538, 0x24000001 },
+ { 0x0981d53b, 0x24000003 },
+ { 0x0981d540, 0x24000004 },
+ { 0x0901d546, 0x24000000 },
+ { 0x0981d54a, 0x24000006 },
+ { 0x0981d552, 0x14000019 },
+ { 0x0981d56c, 0x24000019 },
+ { 0x0981d586, 0x14000019 },
+ { 0x0981d5a0, 0x24000019 },
+ { 0x0981d5ba, 0x14000019 },
+ { 0x0981d5d4, 0x24000019 },
+ { 0x0981d5ee, 0x14000019 },
+ { 0x0981d608, 0x24000019 },
+ { 0x0981d622, 0x14000019 },
+ { 0x0981d63c, 0x24000019 },
+ { 0x0981d656, 0x14000019 },
+ { 0x0981d670, 0x24000019 },
+ { 0x0981d68a, 0x1400001b },
+ { 0x0981d6a8, 0x24000018 },
+ { 0x0901d6c1, 0x64000000 },
+ { 0x0981d6c2, 0x14000018 },
+ { 0x0901d6db, 0x64000000 },
+ { 0x0981d6dc, 0x14000005 },
+ { 0x0981d6e2, 0x24000018 },
+ { 0x0901d6fb, 0x64000000 },
+ { 0x0981d6fc, 0x14000018 },
+ { 0x0901d715, 0x64000000 },
+ { 0x0981d716, 0x14000005 },
+ { 0x0981d71c, 0x24000018 },
+ { 0x0901d735, 0x64000000 },
+ { 0x0981d736, 0x14000018 },
+ { 0x0901d74f, 0x64000000 },
+ { 0x0981d750, 0x14000005 },
+ { 0x0981d756, 0x24000018 },
+ { 0x0901d76f, 0x64000000 },
+ { 0x0981d770, 0x14000018 },
+ { 0x0901d789, 0x64000000 },
+ { 0x0981d78a, 0x14000005 },
+ { 0x0981d790, 0x24000018 },
+ { 0x0901d7a9, 0x64000000 },
+ { 0x0981d7aa, 0x14000018 },
+ { 0x0901d7c3, 0x64000000 },
+ { 0x0981d7c4, 0x14000005 },
+ { 0x0981d7ce, 0x34000031 },
+ { 0x16820000, 0x1c00a6d6 },
+ { 0x1682f800, 0x1c00021d },
+ { 0x090e0001, 0x04000000 },
+ { 0x098e0020, 0x0400005f },
+ { 0x1b8e0100, 0x300000ef },
+ { 0x098f0000, 0x0c00fffd },
+ { 0x09900000, 0x0c00fffd },
};